Files
minisrv/ServiceVault.md
zefie 5b6d06241a v0.9.4
- feature: add SSID whitelist/blacklist as well as IP based SSID auth
- Add user_config_README.md
- Update user_config.example.json
- Update README.md
- update: wtv-1800:/finish-prereg: send tellyscript on relogin if tellyscripts are enabled, and wtv-script-id == 0 (no tellyscript)
- Allow definition of custom ServiceVault paths
- feature: app.js: add `bind_ip` option to specify an IP to bind to, instead of `0.0.0.0`
- feature: custom service logos and better wtv-home:/splash
2022-11-29 07:43:52 -05:00

44 lines
2.6 KiB
Markdown

## Brief ServiceVault Explanation
In `user_config.json`, or `config.json`, under the `config` section:
```
"ServiceVaults": [
"UserServiceVault",
"ServiceVault"
],
```
The `ServiceVaults` entry is an array of Service Vaults to check, in order of priority (topmost = check first). If the path is not absolute, the the server will look in the current directory (of `app.js`). An absolute path can be specified in Linux (`/home/zefie/ServiceVault`) or Windows (`C:\\Users\\zefie\\ServiceVault` or `C:/Users/zefie/ServiceVault`) format.
The server will scan configured ServiceVaults in order of priority and look for files within them.
Within the Service Vaults, the server looks for a subdirectory named after the wtv-service URL requested.
The server will then look for files in sequential order when requesting a URL, stopping at the first match.
Let us use the URL `wtv-1800:/preregister` as an example. This is what the server would look for (in order):
- `./ServiceVault/wtv-1800/preregister` \[ [Example](zefie_wtvp_minisrv/ServiceVault/wtv-star/images/HackTVLogo.gif) \]
- Exact file name match (*Direct File Mode*)
- Server sends the raw file, with its content-type. No parsing is done on the file.
- You do not need to do anything special with this format.
- `./ServiceVault/wtv-1800/preregister.txt` \[ [Example](zefie_wtvp_minisrv/ServiceVault/wtv-home/splash.txt) \]
- TXT file match (*Raw TXT Mode*)
- Service parses and sends AS-IS.
- You are expected to define headers
- `./ServiceVault/wtv-1800/preregister.js` \[ [Example](zefie_wtvp_minisrv/ServiceVault/wtv-home/home.js) \]
- Synchronous JS match (*JS Interpreter mode*)
- Executes the JavaScript in synchronous mode.
- You are expected to define `headers` and `data` before the end of your script.
- Access Asynchronous mode by setting `request_is_async = true;`
- Client request headers are available as an Array in variable `request_headers`, query arguments are also an Array, in `request_headers.query`
- In Asynchronous mode, you are expected to call `sendToClient(socket,headers,data)` yourself, `socket` is already defined by the time your script runs, so you can just pass it through.
- `./ServiceVault/wtv-1800/preregister.html` \[ [Example](zefie_wtvp_minisrv/ServiceVault/wtv-music/demo/index.html) \]
- HTML match (*HTML mode*)
- Like Direct File Mode, but you don't need to append `.html`.
- You do not need to do anything special with this format.
The server will stop at the first result it finds using the order above.
So if you have `preregister.txt` and `preregister.js`, it will use `preregister.txt`, but not `preregister.js`.