updated the documentation for the config API

This commit is contained in:
tigerbot 2017-10-16 12:59:45 -06:00
parent e15d4f830e
commit 72520679d8
2 changed files with 108 additions and 6 deletions

112
API.md
View File

@ -2,13 +2,113 @@
The API system is intended for use with Desktop and Mobile clients. 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: It must be accessed using one of the following domains as the Host header:
``` * localhost.alpha.daplie.me
admin.invalid * localhost.admin.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. 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 ## Tunnel
### Check Status ### Check Status
@ -39,9 +139,9 @@ All requests require an OAuth3 token in the request headers.
### Start Proxy ### Start Proxy
* **URL** `/api/goldilocks@daplie.com/socks5` * **URL** `/api/goldilocks@daplie.com/socks5`
* **Method** `POST` * **Method** `POST`
* **Response**: Same response as for the `GET` resquest * **Response**: Same response as for the `GET` request
### Stop Proxy ### Stop Proxy
* **URL** `/api/goldilocks@daplie.com/socks5` * **URL** `/api/goldilocks@daplie.com/socks5`
* **Method** `DELETE` * **Method** `DELETE`
* **Response**: Same response as for the `GET` resquest * **Response**: Same response as for the `GET` request

View File

@ -281,6 +281,8 @@ class DomainList extends IdList {
http: new ModuleList() http: new ModuleList()
, tls: 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)) { if (dom.modules && Array.isArray(dom.modules.http)) {
dom.modules.http.forEach(modLists.http.add, modLists.http); dom.modules.http.forEach(modLists.http.add, modLists.http);
} }