Add ServerCommandsPanel to ServerStatusPage
This commit is contained in:
@@ -300,8 +300,8 @@ export interface ServerStatusResponse {
|
||||
}
|
||||
|
||||
export interface ServerProcessResponse {
|
||||
locked_at?: string;
|
||||
command?: string;
|
||||
locked_at: string;
|
||||
command: string;
|
||||
}
|
||||
|
||||
export interface ServerNotification {
|
||||
@@ -315,6 +315,18 @@ export interface ServerNotificationsResponse {
|
||||
notifications: ServerNotification[];
|
||||
}
|
||||
|
||||
export interface ServerCommand {
|
||||
icon: string;
|
||||
name: string;
|
||||
description: string;
|
||||
args: boolean;
|
||||
additionalArgs?: string;
|
||||
}
|
||||
|
||||
export interface ServerCommandsResponse {
|
||||
[command: string]: ServerCommand;
|
||||
}
|
||||
|
||||
export interface SynapseDataProvider extends DataProvider {
|
||||
deleteMedia: (params: DeleteMediaParams) => Promise<DeleteMediaResult>;
|
||||
purgeRemoteMedia: (params: DeleteMediaParams) => Promise<DeleteMediaResult>;
|
||||
@@ -329,6 +341,7 @@ export interface SynapseDataProvider extends DataProvider {
|
||||
getServerStatus: (etkeAdminUrl: string) => Promise<ServerStatusResponse>;
|
||||
getServerNotifications: (etkeAdminUrl: string) => Promise<ServerNotificationsResponse>;
|
||||
deleteServerNotifications: (etkeAdminUrl: string) => Promise<{ success: boolean }>;
|
||||
getServerCommands: (etkeAdminUrl: string) => Promise<ServerCommandsResponse>;
|
||||
}
|
||||
|
||||
const resourceMap = {
|
||||
@@ -994,12 +1007,17 @@ const baseDataProvider: SynapseDataProvider = {
|
||||
throw error;
|
||||
}
|
||||
},
|
||||
getServerRunningProcess: async (runningProcessUrl: string): Promise<ServerProcessResponse> => {
|
||||
getServerRunningProcess: async (etkeAdminUrl: string, burstCache: boolean = false): Promise<ServerProcessResponse> => {
|
||||
const locked_at = "";
|
||||
const command = "";
|
||||
|
||||
let serverURL = `${etkeAdminUrl}/lock`;
|
||||
if (burstCache) {
|
||||
serverURL += `?time=${new Date().getTime()}`;
|
||||
}
|
||||
|
||||
try {
|
||||
const response = await fetch(`${runningProcessUrl}/lock`, {
|
||||
const response = await fetch(serverURL, {
|
||||
headers: {
|
||||
"Authorization": `Bearer ${localStorage.getItem("access_token")}`
|
||||
}
|
||||
@@ -1024,9 +1042,9 @@ const baseDataProvider: SynapseDataProvider = {
|
||||
|
||||
return { locked_at, command };
|
||||
},
|
||||
getServerStatus: async (serverStatusUrl: string): Promise<ServerStatusResponse> => {
|
||||
getServerStatus: async (etkeAdminUrl: string): Promise<ServerStatusResponse> => {
|
||||
try {
|
||||
const response = await fetch(`${serverStatusUrl}/status`, {
|
||||
const response = await fetch(`${etkeAdminUrl}/status`, {
|
||||
headers: {
|
||||
"Authorization": `Bearer ${localStorage.getItem("access_token")}`
|
||||
}
|
||||
@@ -1101,6 +1119,66 @@ const baseDataProvider: SynapseDataProvider = {
|
||||
}
|
||||
|
||||
return { success: false };
|
||||
},
|
||||
getServerCommands: async (serverCommandsUrl: string) => {
|
||||
try {
|
||||
const response = await fetch(`${serverCommandsUrl}/commands`, {
|
||||
headers: {
|
||||
"Authorization": `Bearer ${localStorage.getItem("access_token")}`
|
||||
}
|
||||
});
|
||||
if (!response.ok) {
|
||||
console.error(`Error fetching server commands: ${response.status} ${response.statusText}`);
|
||||
return {};
|
||||
}
|
||||
|
||||
const status = response.status;
|
||||
|
||||
if (status === 200) {
|
||||
const json = await response.json();
|
||||
return json as ServerCommandsResponse;
|
||||
}
|
||||
|
||||
return {};
|
||||
} catch (error) {
|
||||
console.error("Error fetching server commands, error");
|
||||
}
|
||||
|
||||
return {};
|
||||
},
|
||||
runServerCommand: async (serverCommandsUrl: string, command: string, additionalArgs: Record<string, any> = {}) => {
|
||||
const endpoint_url = `${serverCommandsUrl}/commands`;
|
||||
const body = {
|
||||
command: command,
|
||||
...additionalArgs
|
||||
}
|
||||
const response = await fetch(endpoint_url, {
|
||||
method: "POST",
|
||||
body: JSON.stringify(body),
|
||||
headers: {
|
||||
"Content-Type": "application/json",
|
||||
"Authorization": `Bearer ${localStorage.getItem("access_token")}`
|
||||
}
|
||||
});
|
||||
|
||||
if (!response.ok) {
|
||||
console.error(`Error running server command: ${response.status} ${response.statusText}`);
|
||||
return {
|
||||
success: false,
|
||||
};
|
||||
}
|
||||
|
||||
const status = response.status;
|
||||
|
||||
if (status === 204) {
|
||||
return {
|
||||
success: true,
|
||||
}
|
||||
}
|
||||
|
||||
return {
|
||||
success: false,
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
|
||||
Reference in New Issue
Block a user