mirror of
https://github.com/EFForg/rayhunter.git
synced 2026-07-21 07:08:10 -07:00
Add button to set current time
When there is a significant difference between the user's browser's time and the system time, a button appears in the web UI to fix the system time. This time will then be used to correct both data inside of PCAPs and any metadata. We don't actually set the system time to this value. Instead, rayhunter adjusts any timestamps it handles by an offset. That offset defaults to zero, and the user adjusts it by hitting the button in the web UI. The main reason for this is device portability. I haven't investigated whether it would actually be easy to set the real system time. It's possible that it works the same way across all devices.
This commit is contained in:
committed by
Will Greenberg
parent
781d07230c
commit
bef6b51e28
@@ -26,15 +26,18 @@ export interface Config {
|
||||
analyzers: AnalyzerConfig;
|
||||
}
|
||||
|
||||
export async function req(method: string, url: string): Promise<string> {
|
||||
const response = await fetch(url, {
|
||||
method: method,
|
||||
});
|
||||
const body = await response.text();
|
||||
export async function req(method: string, url: string, json_body?: unknown): Promise<string> {
|
||||
const options: RequestInit = { method };
|
||||
if (json_body !== undefined) {
|
||||
options.body = JSON.stringify(json_body);
|
||||
options.headers = { 'Content-Type': 'application/json' };
|
||||
}
|
||||
const response = await fetch(url, options);
|
||||
const responseBody = await response.text();
|
||||
if (response.status >= 200 && response.status < 300) {
|
||||
return body;
|
||||
return responseBody;
|
||||
} else {
|
||||
throw new Error(body);
|
||||
throw new Error(responseBody);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -42,13 +45,13 @@ export async function req(method: string, url: string): Promise<string> {
|
||||
export async function user_action_req(
|
||||
method: string,
|
||||
url: string,
|
||||
error_msg: string
|
||||
error_msg: string,
|
||||
json_body?: unknown
|
||||
): Promise<string | undefined> {
|
||||
try {
|
||||
return await req(method, url);
|
||||
return await req(method, url, json_body);
|
||||
} catch (error) {
|
||||
if (error instanceof Error) {
|
||||
console.log('beeeo');
|
||||
add_error(error, error_msg);
|
||||
}
|
||||
return undefined;
|
||||
@@ -105,3 +108,13 @@ export interface RouteStatus {
|
||||
export async function get_route_status(): Promise<RouteStatus> {
|
||||
return JSON.parse(await req('GET', '/api/route-status'));
|
||||
}
|
||||
|
||||
export interface TimeResponse {
|
||||
system_time: string;
|
||||
adjusted_time: string;
|
||||
offset_seconds: number;
|
||||
}
|
||||
|
||||
export async function get_daemon_time(): Promise<TimeResponse> {
|
||||
return JSON.parse(await req('GET', '/api/time'));
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user