From 72520679d89fc01bf8c2bf4ff810a6d3f635383a Mon Sep 17 00:00:00 2001 From: tigerbot Date: Mon, 16 Oct 2017 12:59:45 -0600 Subject: [PATCH] updated the documentation for the config API --- API.md | 112 +++++++++++++++++++++++++++++++++++++++++--- lib/admin/config.js | 2 + 2 files changed, 108 insertions(+), 6 deletions(-) diff --git a/API.md b/API.md index bfb6c54..84da6fc 100644 --- a/API.md +++ b/API.md @@ -2,13 +2,113 @@ The API system is intended for use with Desktop and Mobile clients. It must be accessed using one of the following domains as the Host header: -``` -admin.invalid -localhost.admin.daplie.me -``` +* localhost.alpha.daplie.me +* localhost.admin.daplie.me +* alpha.localhost.daplie.me +* admin.localhost.daplie.me +* localhost.daplie.invalid All requests require an OAuth3 token in the request headers. +## Config + +### Get All Settings + * **URL** `/api/goldilocks@daplie.com/config` + * **Method** `GET` + * **Reponse**: The JSON representation of the current config. See the [README.md](/README.md) + for the structure of the config. + +### Get Group Setting + * **URL** `/api/goldilocks@daplie.com/config/:group` + * **Method** `GET` + * **Reponse**: The sub-object of the config relevant to the group specified in + the url (ie http, tls, tcp, etc.) + +### Get Group Module List + * **URL** `/api/goldilocks@daplie.com/config/:group/modules` + * **Method** `GET` + * **Reponse**: The list of modules relevant to the group specified in the url + (ie http, tls, tcp, etc.) + +### Get Specific Module + * **URL** `/api/goldilocks@daplie.com/config/:group/modules/:modId` + * **Method** `GET` + * **Reponse**: The module with the specified module ID. + +### Get Domain Group + * **URL** `/api/goldilocks@daplie.com/config/domains/:domId` + * **Method** `GET` + * **Reponse**: The domains specification with the specified domains ID. + +### Get Domain Group Modules + * **URL** `/api/goldilocks@daplie.com/config/domains/:domId/modules` + * **Method** `GET` + * **Reponse**: An object containing all of the relevant modules for the group + of domains. + +### Get Domain Group Module Category + * **URL** `/api/goldilocks@daplie.com/config/domains/:domId/modules/:group` + * **Method** `GET` + * **Reponse**: A list of the specific category of modules for the group of domains. + +### Get Specific Domain Group Module + * **URL** `/api/goldilocks@daplie.com/config/domains/:domId/modules/:group/:modId` + * **Method** `GET` + * **Reponse**: The module with the specified module ID. + + +### Change Settings + * **URL** `/api/goldilocks@daplie.com/config` + * **URL** `/api/goldilocks@daplie.com/config/:group` + * **Method** `POST` + * **Body**: The changes to be applied on top of the current config. See the + [README.md](/README.md) for the settings. If modules or domains are specified + they are added to the current list. + * **Reponse**: The current config. If the group is specified in the URL it will + only be the config relevant to that group. + +### Add Module + * **URL** `/api/goldilocks@daplie.com/config/:group/modules` + * **URL** `/api/goldilocks@daplie.com/config/domains/:domId/modules/:group` + * **Method** `POST` + * **Body**: The module to be added. Can also be provided an array of modules + to add multiple modules in the same request. + * **Reponse**: The current list of modules. + +### Add Domain Group + * **URL** `/api/goldilocks@daplie.com/config/domains` + * **Method** `POST` + * **Body**: The domains names and modules for the new domain group(s). + * **Reponse**: The current list of domain groups. + + +### Edit Module + * **URL** `/api/goldilocks@daplie.com/config/:group/modules/:modId` + * **URL** `/api/goldilocks@daplie.com/config/domains/:domId/modules/:group/:modId` + * **Method** `PUT` + * **Body**: The new parameters for the module. + * **Reponse**: The editted module. + +### Edit Domain Group + * **URL** `/api/goldilocks@daplie.com/config/domains/:domId` + * **Method** `PUT` + * **Body**: The new domains names for the domains group. The module list cannot + be editted through this route. + * **Reponse**: The editted domain group. + + +### Remove Module + * **URL** `/api/goldilocks@daplie.com/config/:group/modules/:modId` + * **URL** `/api/goldilocks@daplie.com/config/domains/:domId/modules/:group/:modId` + * **Method** `DELETE` + * **Reponse**: The list of modules. + +### Remove Domain Group + * **URL** `/api/goldilocks@daplie.com/config/domains/:domId` + * **Method** `DELETE` + * **Reponse**: The list of domain groups. + + ## Tunnel ### Check Status @@ -39,9 +139,9 @@ All requests require an OAuth3 token in the request headers. ### Start Proxy * **URL** `/api/goldilocks@daplie.com/socks5` * **Method** `POST` - * **Response**: Same response as for the `GET` resquest + * **Response**: Same response as for the `GET` request ### Stop Proxy * **URL** `/api/goldilocks@daplie.com/socks5` * **Method** `DELETE` - * **Response**: Same response as for the `GET` resquest + * **Response**: Same response as for the `GET` request diff --git a/lib/admin/config.js b/lib/admin/config.js index 1ac3dd1..682052c 100644 --- a/lib/admin/config.js +++ b/lib/admin/config.js @@ -281,6 +281,8 @@ class DomainList extends IdList { http: new ModuleList() , tls: new ModuleList() }; + // We add these after instead of in the constructor to run the validation and manipulation + // in the ModList add function since these are all new modules. if (dom.modules && Array.isArray(dom.modules.http)) { dom.modules.http.forEach(modLists.http.add, modLists.http); }