694 lines
17 KiB
TypeScript
694 lines
17 KiB
TypeScript
import { ActionInfo } from "./common"
|
|
|
|
export const Permission = {
|
|
Start: 1,
|
|
Stop: 1 << 1,
|
|
Browse: 1 << 2,
|
|
Create: 1 << 3,
|
|
Delete: 1 << 4,
|
|
RunCommand: 1 << 5,
|
|
Admin: 1 << 6,
|
|
Cloud: 1 << 7,
|
|
}
|
|
|
|
const definitions = {
|
|
ChangeUserRequest: {
|
|
properties: {
|
|
permissions: {
|
|
items: {
|
|
"$ref": "#/definitions/Permission"
|
|
},
|
|
type: "array",
|
|
title: "Permissions"
|
|
}
|
|
},
|
|
type: "object",
|
|
required: [
|
|
"permissions"
|
|
],
|
|
title: "ChangeUserRequest"
|
|
},
|
|
CreateUserRequest: {
|
|
properties: {
|
|
username: {
|
|
type: "string",
|
|
title: "Username"
|
|
},
|
|
password: {
|
|
type: "string",
|
|
title: "Password"
|
|
}
|
|
},
|
|
type: "object",
|
|
required: [
|
|
"username",
|
|
"password"
|
|
],
|
|
title: "CreateUserRequest"
|
|
},
|
|
FileBrowserInfo: {
|
|
properties: {
|
|
id_: {
|
|
type: "string",
|
|
title: "Id "
|
|
},
|
|
owner_id: {
|
|
type: "string",
|
|
title: "Owner Id"
|
|
},
|
|
domain: {
|
|
type: "string",
|
|
title: "Domain"
|
|
},
|
|
connected_to: {
|
|
"$ref": "#/definitions/ServerInfo"
|
|
},
|
|
url: {
|
|
type: "string",
|
|
title: "Url",
|
|
readOnly: true
|
|
}
|
|
},
|
|
type: "object",
|
|
required: [
|
|
"id_",
|
|
"owner_id",
|
|
"domain",
|
|
"connected_to",
|
|
"url"
|
|
],
|
|
title: "FileBrowserInfo"
|
|
},
|
|
HTTPValidationError: {
|
|
properties: {
|
|
detail: {
|
|
items: {
|
|
"$ref": "#/definitions/ValidationError"
|
|
},
|
|
type: "array",
|
|
title: "Detail"
|
|
}
|
|
},
|
|
type: "object",
|
|
title: "HTTPValidationError"
|
|
},
|
|
ImageInfo: {
|
|
properties: {
|
|
name: {
|
|
type: "string",
|
|
title: "Name"
|
|
},
|
|
version: {
|
|
type: "string",
|
|
title: "Version"
|
|
},
|
|
ports: {
|
|
items: {
|
|
"$ref": "#/definitions/Port-Output"
|
|
},
|
|
type: "array",
|
|
uniqueItems: true,
|
|
title: "Ports"
|
|
},
|
|
id_: {
|
|
type: "string",
|
|
title: "Id ",
|
|
readOnly: true
|
|
},
|
|
display_name: {
|
|
type: "string",
|
|
title: "Display Name",
|
|
readOnly: true
|
|
}
|
|
},
|
|
type: "object",
|
|
required: [
|
|
"name",
|
|
"version",
|
|
"id_",
|
|
"display_name"
|
|
],
|
|
title: "ImageInfo"
|
|
},
|
|
PasswordRequestForm: {
|
|
properties: {
|
|
username: {
|
|
type: "string",
|
|
title: "Username"
|
|
},
|
|
password: {
|
|
type: "string",
|
|
title: "Password"
|
|
},
|
|
remember: {
|
|
anyOf: [
|
|
{
|
|
type: "boolean"
|
|
},
|
|
{
|
|
type: "string"
|
|
}
|
|
],
|
|
title: "Remember",
|
|
default: false
|
|
}
|
|
},
|
|
type: "object",
|
|
required: [
|
|
"username",
|
|
"password"
|
|
],
|
|
title: "PasswordRequestForm"
|
|
},
|
|
Permission: {
|
|
type: "number",
|
|
enum: [
|
|
"create",
|
|
"start",
|
|
"browse",
|
|
"cloud",
|
|
"run-command",
|
|
"delete",
|
|
"stop",
|
|
"admin"
|
|
],
|
|
title: "Permission"
|
|
},
|
|
"Port-Input": {
|
|
properties: {
|
|
number: {
|
|
type: "integer",
|
|
exclusiveMaximum: 65535,
|
|
exclusiveMinimum: 1,
|
|
title: "Number"
|
|
},
|
|
protocol: {
|
|
"$ref": "#/definitions/PortProtocol"
|
|
}
|
|
},
|
|
type: "object",
|
|
required: [
|
|
"number",
|
|
"protocol"
|
|
],
|
|
title: "Port"
|
|
},
|
|
"Port-Output": {
|
|
properties: {
|
|
number: {
|
|
type: "integer",
|
|
exclusiveMaximum: 65535,
|
|
exclusiveMinimum: 1,
|
|
title: "Number"
|
|
},
|
|
protocol: {
|
|
"$ref": "#/definitions/PortProtocol"
|
|
},
|
|
id_: {
|
|
type: "string",
|
|
title: "Id ",
|
|
readOnly: true
|
|
}
|
|
},
|
|
type: "object",
|
|
required: [
|
|
"number",
|
|
"protocol",
|
|
"id_"
|
|
],
|
|
title: "Port"
|
|
},
|
|
PortMapping: {
|
|
properties: {
|
|
source_port: {
|
|
"$ref": "#/definitions/Port-Input"
|
|
},
|
|
destination_port: {
|
|
anyOf: [
|
|
{
|
|
"$ref": "#/definitions/Port-Input"
|
|
},
|
|
{
|
|
type: "null"
|
|
}
|
|
]
|
|
}
|
|
},
|
|
type: "object",
|
|
required: [
|
|
"source_port"
|
|
],
|
|
title: "PortMapping"
|
|
},
|
|
PortProtocol: {
|
|
type: "string",
|
|
enum: [
|
|
"tcp",
|
|
"udp"
|
|
],
|
|
title: "PortProtocol"
|
|
},
|
|
ServerInfo: {
|
|
properties: {
|
|
id_: {
|
|
type: "string",
|
|
title: "Id "
|
|
},
|
|
user_id: {
|
|
type: "string",
|
|
title: "User Id"
|
|
},
|
|
image: {
|
|
"$ref": "#/definitions/ImageInfo"
|
|
},
|
|
on: {
|
|
type: "boolean",
|
|
title: "On"
|
|
},
|
|
domain: {
|
|
anyOf: [
|
|
{
|
|
type: "string"
|
|
},
|
|
{
|
|
type: "null"
|
|
}
|
|
],
|
|
title: "Domain"
|
|
},
|
|
ports: {
|
|
anyOf: [
|
|
{
|
|
items: {
|
|
"$ref": "#/definitions/Port-Output"
|
|
},
|
|
type: "array",
|
|
uniqueItems: true
|
|
},
|
|
{
|
|
type: "null"
|
|
}
|
|
],
|
|
title: "Ports"
|
|
},
|
|
nickname: {
|
|
anyOf: [
|
|
{
|
|
type: "string"
|
|
},
|
|
{
|
|
type: "null"
|
|
}
|
|
],
|
|
title: "Nickname"
|
|
}
|
|
},
|
|
type: "object",
|
|
required: [
|
|
"id_",
|
|
"user_id",
|
|
"image",
|
|
"on"
|
|
],
|
|
title: "ServerInfo"
|
|
},
|
|
SetServerNicknameRequest: {
|
|
properties: {
|
|
nickname: {
|
|
type: "string",
|
|
title: "Nickname"
|
|
}
|
|
},
|
|
type: "object",
|
|
required: [
|
|
"nickname"
|
|
],
|
|
title: "SetServerNicknameRequest"
|
|
},
|
|
Token: {
|
|
properties: {
|
|
access_token: {
|
|
type: "string",
|
|
title: "Access Token"
|
|
},
|
|
token_type: {
|
|
type: "string",
|
|
title: "Token Type"
|
|
}
|
|
},
|
|
type: "object",
|
|
required: [
|
|
"access_token",
|
|
"token_type"
|
|
],
|
|
title: "Token"
|
|
},
|
|
UserView: {
|
|
properties: {
|
|
username: {
|
|
type: "string",
|
|
title: "Username"
|
|
},
|
|
email: {
|
|
type: "string",
|
|
title: "Email"
|
|
},
|
|
max_owned_servers: {
|
|
type: "integer",
|
|
title: "Max Owned Servers",
|
|
default: 5
|
|
},
|
|
permissions: {
|
|
items: {
|
|
"$ref": "#/definitions/Permission"
|
|
},
|
|
type: "array",
|
|
title: "Permissions"
|
|
}
|
|
},
|
|
type: "object",
|
|
required: [
|
|
"username",
|
|
"email"
|
|
],
|
|
title: "UserView"
|
|
},
|
|
ValidationError: {
|
|
properties: {
|
|
loc: {
|
|
items: {
|
|
anyOf: [
|
|
{
|
|
type: "string"
|
|
},
|
|
{
|
|
type: "integer"
|
|
}
|
|
]
|
|
},
|
|
type: "array",
|
|
title: "Location"
|
|
},
|
|
msg: {
|
|
type: "string",
|
|
title: "Message"
|
|
},
|
|
type: {
|
|
type: "string",
|
|
title: "Error Type"
|
|
}
|
|
},
|
|
type: "object",
|
|
required: [
|
|
"loc",
|
|
"msg",
|
|
"type"
|
|
],
|
|
title: "ValidationError"
|
|
}
|
|
}
|
|
|
|
|
|
|
|
export const SERVER_ACTIONS: ActionInfo[] = [
|
|
{
|
|
name: "Start",
|
|
args: {
|
|
properties: {
|
|
ports: {
|
|
items: {
|
|
"$ref": "#/definitions/PortMapping"
|
|
},
|
|
type: "array",
|
|
title: "Ports",
|
|
default: []
|
|
},
|
|
command: {
|
|
type: "string",
|
|
title: "Command"
|
|
}
|
|
},
|
|
type: "object",
|
|
title: "Start Server",
|
|
definitions: definitions,
|
|
},
|
|
requestType: "post",
|
|
endpoint: "/servers/{server_id}/start",
|
|
permissions: Permission.Start,
|
|
response_action: "Ignore",
|
|
ServerState: "off",
|
|
},
|
|
{
|
|
name: "Stop",
|
|
args: {
|
|
title: "Stop",
|
|
type: "object",
|
|
required: [],
|
|
properties: {},
|
|
default: {}
|
|
},
|
|
requestType: "post",
|
|
endpoint: "/servers/{server_id}/stop",
|
|
permissions: Permission.Stop,
|
|
response_action: "Ignore",
|
|
ServerState: "on",
|
|
},
|
|
{
|
|
name: "Terminal",
|
|
args: {
|
|
},
|
|
requestType: "post",
|
|
endpoint: "/servers/{server_id}/attach",
|
|
permissions: Permission.RunCommand,
|
|
response_action: "Terminal",
|
|
ServerState: "on",
|
|
},
|
|
{
|
|
name: "Delete Server",
|
|
args: {
|
|
title: "Delete Server",
|
|
type: "object",
|
|
required: [],
|
|
properties: {},
|
|
default: {}
|
|
},
|
|
requestType: "delete",
|
|
endpoint: "/servers/{server_id}",
|
|
permissions: Permission.Delete,
|
|
response_action: "Ignore"
|
|
},
|
|
{
|
|
name: "Run Command",
|
|
args: {
|
|
properties: {
|
|
command: {
|
|
type: "string",
|
|
title: "Command"
|
|
}
|
|
},
|
|
type: "object",
|
|
required: [
|
|
"command"
|
|
],
|
|
title: "Run Command",
|
|
definitions: definitions,
|
|
},
|
|
requestType: "post",
|
|
endpoint: "/servers/{server_id}/run_command",
|
|
permissions: Permission.RunCommand,
|
|
response_action: "Ignore",
|
|
ServerState: "on",
|
|
},
|
|
{
|
|
name: "Browse",
|
|
args: {
|
|
title: "Browse",
|
|
type: "object",
|
|
required: [],
|
|
properties: {},
|
|
default: {}
|
|
},
|
|
requestType: "post",
|
|
endpoint: "/servers/{server_id}/browse",
|
|
permissions: Permission.Browse,
|
|
response_action: "Browse"
|
|
},
|
|
{
|
|
name: "Update Server",
|
|
requestType: "patch",
|
|
endpoint: "/servers/{server_id}",
|
|
permissions: Permission.Admin,
|
|
response_action: "Ignore",
|
|
args: {
|
|
title: "Update Server",
|
|
type: "object",
|
|
required: [],
|
|
properties: {
|
|
DefaultPorts: {
|
|
type: "array",
|
|
title: "Default Ports",
|
|
items:
|
|
{
|
|
"$ref": "#/definitions/Port-Input"
|
|
}
|
|
|
|
},
|
|
DefaultCommand: {
|
|
type: "string",
|
|
title: "Default Command"
|
|
},
|
|
Nickname: {
|
|
type: "string",
|
|
title: "Nickname"
|
|
}
|
|
},
|
|
definitions: definitions,
|
|
|
|
},
|
|
},
|
|
{
|
|
name: "Add Permissions",
|
|
requestType: "post",
|
|
endpoint: "/servers/{server_id}/permissions",
|
|
permissions: Permission.Admin,
|
|
response_action: "Ignore",
|
|
args: {
|
|
properties: {
|
|
Username: {
|
|
type: "string",
|
|
title: "Username",
|
|
fetch_display_path: "Username",
|
|
fetch_key_path: "Username",
|
|
fetch_url: "/users"
|
|
},
|
|
Permissions: {
|
|
type: "number",
|
|
title: "Permissions",
|
|
permissions: true,
|
|
}
|
|
},
|
|
type: "object",
|
|
required: [
|
|
"Username"
|
|
],
|
|
default: {
|
|
Permissions: 0
|
|
},
|
|
title: "Set User Permissions",
|
|
definitions: definitions,
|
|
},
|
|
},
|
|
]
|
|
|
|
export const CREATE_SERVER_ACTION: ActionInfo = {
|
|
name: "Create Server",
|
|
args: {
|
|
properties: {
|
|
ImageId: {
|
|
type: "string",
|
|
title: "Image Id",
|
|
fetch_display_path: "DisplayName",
|
|
fetch_key_path: "Id",
|
|
fetch_url: "/images"
|
|
},
|
|
Nickname: {
|
|
type: "string",
|
|
title: "Server Nickname"
|
|
},
|
|
DefaultCommand: {
|
|
type: "string",
|
|
title: "Default Command"
|
|
},
|
|
DefaultPorts: {
|
|
items: {
|
|
"$ref": "#/definitions/Port-Input"
|
|
},
|
|
type: "array",
|
|
title: "Default Ports",
|
|
}
|
|
},
|
|
type: "object",
|
|
required: [
|
|
"ImageId"
|
|
],
|
|
title: "Create Server",
|
|
|
|
definitions: definitions,
|
|
},
|
|
requestType: "post",
|
|
endpoint: "/servers",
|
|
permissions: Permission.Create,
|
|
response_action: "Ignore"
|
|
}
|
|
|
|
export const INVITE_USER_ACTION: ActionInfo = {
|
|
name: "Invite User",
|
|
args: {
|
|
properties: {
|
|
email: {
|
|
type: "string",
|
|
title: "Email"
|
|
},
|
|
permissions: {
|
|
type: "number",
|
|
title: "Permissions",
|
|
permissions: true,
|
|
}
|
|
},
|
|
type: "object",
|
|
required: [
|
|
"email"
|
|
],
|
|
title: "Invite User",
|
|
definitions: definitions,
|
|
},
|
|
requestType: "post",
|
|
endpoint: "/users",
|
|
permissions: Permission.Admin,
|
|
response_action: "Ignore"
|
|
}
|
|
export const USERS_ACTIONS: ActionInfo[] = [
|
|
{
|
|
name: "Delete User",
|
|
args: {},
|
|
requestType: "delete",
|
|
endpoint: "/users/{username}",
|
|
permissions: Permission.Admin,
|
|
response_action: "Ignore"
|
|
},
|
|
{
|
|
name: "Change Permissions",
|
|
args: {
|
|
properties: {
|
|
Permissions: {
|
|
type: "number",
|
|
title: "Permissions",
|
|
permissions: true,
|
|
}
|
|
},
|
|
type: "object",
|
|
required: [],
|
|
default: {
|
|
Permissions: 0
|
|
},
|
|
title: "Set User Permissions",
|
|
definitions: definitions,
|
|
},
|
|
requestType: "patch",
|
|
endpoint: "/users/{username}/permissions",
|
|
permissions: Permission.Admin,
|
|
response_action: "Ignore"
|
|
},
|
|
]
|
|
|
|
|
|
export const BROWSER_ACTIONS: ActionInfo[] = [
|
|
{
|
|
name: "Stop Browser",
|
|
requestType: "post",
|
|
endpoint: "/browsers/{browser_id}/stop",
|
|
args: {},
|
|
permissions: Permission.Browse,
|
|
response_action: "Ignore"
|
|
}
|
|
] |