update config options naming, move scripts to own folder.

This commit is contained in:
Miroslav Šedivý 2025-04-05 16:53:37 +02:00
parent e3a1929f7f
commit 0e3bcedcd4
10 changed files with 96 additions and 52 deletions

View file

@ -177,11 +177,20 @@
"key": [
"capture",
"video",
"pipelines"
"pipeline"
],
"type": "string",
"defaultValue": "[]",
"description": "pipelines config in JSON used for video streaming"
"description": "shortcut for configuring only a single gstreamer pipeline, ignored if pipelines is set"
},
{
"key": [
"capture",
"video",
"pipelines"
],
"type": "object",
"defaultValue": {},
"description": "pipelines config used for video streaming"
},
{
"key": [
@ -295,7 +304,7 @@
],
"type": "boolean",
"defaultValue": "true",
"description": "member file provider: whether to hash passwords using sha256 (recommended)"
"description": "member file provider: whether the passwords are hashed using sha256 or not (recommended)"
},
{
"key": [
@ -304,7 +313,7 @@
"path"
],
"type": "string",
"description": "member file provider: storage path"
"description": "member file provider: path to the file containing the users and their passwords"
},
{
"key": [
@ -314,7 +323,7 @@
],
"type": "string",
"defaultValue": "admin",
"description": "member multiuser provider: admin password"
"description": "member multiuser provider: password for admin users"
},
{
"key": [
@ -322,9 +331,9 @@
"multiuser",
"admin_profile"
],
"type": "string",
"defaultValue": "{}",
"description": "member multiuser provider: admin profile in JSON format"
"type": "object",
"defaultValue": {},
"description": "member multiuser provider: profile template for admin users"
},
{
"key": [
@ -334,7 +343,7 @@
],
"type": "string",
"defaultValue": "neko",
"description": "member multiuser provider: user password"
"description": "member multiuser provider: password for regular users"
},
{
"key": [
@ -342,9 +351,9 @@
"multiuser",
"user_profile"
],
"type": "string",
"defaultValue": "{}",
"description": "member multiuser provider: user profile in JSON format"
"type": "object",
"defaultValue": {},
"description": "member multiuser provider: profile template for regular users"
},
{
"key": [
@ -352,9 +361,9 @@
"object",
"users"
],
"type": "string",
"defaultValue": "[]",
"description": "member object provider: users in JSON format"
"type": "array",
"defaultValue": [],
"description": "member object provider: list of users with their passwords and profiles"
},
{
"key": [
@ -363,7 +372,7 @@
],
"type": "string",
"defaultValue": "multiuser",
"description": "choose member provider"
"description": "selected member provider"
},
{
"key": [
@ -758,9 +767,9 @@
"iceservers",
"backend"
],
"type": "urls",
"defaultValue": "[]",
"description": "Backend only STUN and TURN servers in JSON format with urls, `username` and `credential` keys"
"type": "array",
"defaultValue": [],
"description": "STUN and TURN servers used by the backend"
},
{
"key": [
@ -768,9 +777,9 @@
"iceservers",
"frontend"
],
"type": "urls",
"defaultValue": "[]",
"description": "Frontend only STUN and TURN servers in JSON format with urls, `username` and `credential` keys"
"type": "array",
"defaultValue": [],
"description": "STUN and TURN servers used by the frontend"
},
{
"key": [

View file

@ -16,7 +16,8 @@
--capture.video.codec string video codec to be used (default "vp8")
--capture.video.display string X display to capture
--capture.video.ids strings ordered list of video ids
--capture.video.pipelines string pipelines config in JSON used for video streaming (default "[]")
--capture.video.pipeline string shortcut for configuring only a single gstreamer pipeline, ignored if pipelines is set
--capture.video.pipelines string pipelines config used for video streaming (default "{}")
--capture.webcam.device string v4l2sink device used for webcam (default "/dev/video0")
--capture.webcam.enabled enable webcam stream
--capture.webcam.height int webcam stream height (default 720)
@ -28,14 +29,14 @@
--desktop.screen string default screen size and framerate (default "1280x720@30")
--desktop.unminimize automatically unminimize window when it is minimized (default true)
--desktop.upload_drop whether drop upload is enabled (default true)
--member.file.hash member file provider: whether to hash passwords using sha256 (recommended) (default true)
--member.file.path string member file provider: storage path
--member.multiuser.admin_password string member multiuser provider: admin password (default "admin")
--member.multiuser.admin_profile string member multiuser provider: admin profile in JSON format (default "{}")
--member.multiuser.user_password string member multiuser provider: user password (default "neko")
--member.multiuser.user_profile string member multiuser provider: user profile in JSON format (default "{}")
--member.object.users string member object provider: users in JSON format (default "[]")
--member.provider string choose member provider (default "multiuser")
--member.file.hash member file provider: whether the passwords are hashed using sha256 or not (recommended) (default true)
--member.file.path string member file provider: path to the file containing the users and their passwords
--member.multiuser.admin_password string member multiuser provider: password for admin users (default "admin")
--member.multiuser.admin_profile string member multiuser provider: profile template for admin users (default "{}")
--member.multiuser.user_password string member multiuser provider: password for regular users (default "neko")
--member.multiuser.user_profile string member multiuser provider: profile template for regular users (default "{}")
--member.object.users string member object provider: list of users with their passwords and profiles (default "[]")
--member.provider string selected member provider (default "multiuser")
--plugins.dir string path to neko plugins to load (default "./bin/plugins")
--plugins.enabled load plugins in runtime
--plugins.required if true, neko will exit if there is an error when loading a plugin
@ -78,8 +79,8 @@
--webrtc.estimator.unstable_duration duration how long to wait for stalled connection (neutral trend with low bandwidth) before downgrading (default 6s)
--webrtc.estimator.upgrade_backoff duration how long to wait before upgrading again after previous upgrade (default 5s)
--webrtc.icelite configures whether or not the ICE agent should be a lite agent
--webrtc.iceservers.backend urls Backend only STUN and TURN servers in JSON format with urls, `username` and `credential` keys (default "[]")
--webrtc.iceservers.frontend urls Frontend only STUN and TURN servers in JSON format with urls, `username` and `credential` keys (default "[]")
--webrtc.iceservers.backend string STUN and TURN servers used by the backend (default "[]")
--webrtc.iceservers.frontend string STUN and TURN servers used by the frontend (default "[]")
--webrtc.icetrickle configures whether cadidates should be sent asynchronously using Trickle ICE (default true)
--webrtc.ip_retrieval_url string URL address used for retrieval of the external IP address (default "https://checkip.amazonaws.com")
--webrtc.nat1to1 strings sets a list of external IP addresses of 1:1 (D)NAT and a candidate type for which the external IP address is used

View file

@ -36,6 +36,7 @@ This project uses a monorepo structure with the following directories:
- `webpage/`: Webpage code for neko.m1k1o.net, written in [TypeScript](https://www.typescriptlang.org/) and [Docusaurus](https://docusaurus.io/), deployed on [GitHub Pages](https://pages.github.com/).
- `webpage/docs/`: Documentation for the neko project, including this README file.
- `webpage/scripts/`: Helper scripts for generating configuration and OpenAPI docs.
- `webpage/src/`: Source code, components, and styles for the webpage.
- `webpage/static/`: Static files for the webpage, such as images and icons.
- `webpage/versioned_*`: Versioned documentation files for the neko project, generated by [Docusaurus](https://docusaurus.io/).

View file

@ -10,8 +10,8 @@
"deploy": "docusaurus deploy",
"clear": "docusaurus clear",
"serve": "docusaurus serve",
"gen-help": "node ./src/components/Configuration/generate.js ./docs/configuration/help.txt ./docs/configuration/help.json",
"gen-help:v2": "node ./src/components/Configuration/generate.js ./docs/v2-migration/help.txt ./docs/v2-migration/help.json",
"gen-config": "node ./src/components/Configuration/generate.js ./docs/configuration/help.txt ./docs/configuration/help.json",
"gen-config:v2": "node ./src/components/Configuration/generate.js ./docs/v2-migration/help.txt ./docs/v2-migration/help.json",
"write-translations": "docusaurus write-translations",
"write-heading-ids": "docusaurus write-heading-ids",
"gen-api-docs": "./gen-api-docs.sh",

View file

@ -1,4 +1,5 @@
#!/bin/bash
cd "$(dirname "$0")/.."
# Clean the API docs
docusaurus clean-api-docs all

22
webpage/scripts/gen-config.sh Executable file
View file

@ -0,0 +1,22 @@
#!/bin/bash
cd "$(dirname "$0")/.."
HELP_FILE="$(realpath -m docs/configuration/help.txt)"
pushd ../server
go run cmd/neko/main.go serve --help > $HELP_FILE
popd
# remove all lines with " V2: "
sed -i '/ V2: /d' $HELP_FILE
# remove all lines with " V2 DEPRECATED: "
sed -i '/ V2 DEPRECATED: /d' $HELP_FILE
# remove --legacy
sed -i '/--legacy/d' $HELP_FILE
# remove evething until first "Flags:"
sed -i '1,/Flags:/d' $HELP_FILE
# remove --help
sed -i '/--help/d' $HELP_FILE
npm run gen-config

View file

@ -17,6 +17,16 @@ const parseConfigOptions = (text) => {
defaultValue = 'true';
}
}
// this is an opaque object
if (type === 'string' && defaultValue === '{}') {
type = 'object';
defaultValue = {};
}
// this is an opaque array
if (type === 'string' && defaultValue === '[]') {
type = 'array';
defaultValue = [];
}
return { key: key.split('.'), type, defaultValue: defaultValue || undefined, description };
}
return null;