From 08420f9db6a3e403107e5ed711db3cb183be39ad Mon Sep 17 00:00:00 2001 From: lejianwen <84855512@qq.com> Date: Tue, 4 Mar 2025 15:43:25 +0800 Subject: [PATCH] feat(config): add ws-host configuration (#156) --- README.md | 67 ++---------------------------------- README_EN.md | 65 ++-------------------------------- conf/config.yaml | 1 + config/rustdesk.go | 3 +- http/controller/web/index.go | 21 +++++++---- 5 files changed, 22 insertions(+), 135 deletions(-) diff --git a/README.md b/README.md index 89e675b..6a49527 100644 --- a/README.md +++ b/README.md @@ -108,8 +108,7 @@ * 可以官方指令 * 可以添加自定义指令 * 可以执行自定义指令 - - ![rustdesk_command_advance](./docs/rustdesk_command_advance.png) + 11. **LDAP 支持**, 当在API Server上设置了LDAP(已测试AD和LDAP),可以通过LDAP中的用户信息进行登录 https://github.com/lejianwen/rustdesk-api/issues/114 ,如果LDAP验证失败,返回本地用户 @@ -146,72 +145,11 @@ ### 相关配置 +* [配置文件](./conf/config.yaml) * 参考`conf/config.yaml`配置文件,修改相关配置。 * 如果`gorm.type`是`sqlite`,则不需要配置mysql相关配置。 * 语言如果不设置默认为`zh-CN` -```yaml -lang: "en" -app: - web-client: 1 # 1:启用 0:禁用 - register: false #是否开启注册 - show-swagger: 0 #是否显示swagger文档 - web-sso: true #是否显示web sso - token-expire: 168h #token有效时长 - disable-pwd-login: false #是否禁用密码登录 -gin: - api-addr: "0.0.0.0:21114" - mode: "release" - resources-path: 'resources' - trust-proxy: "" -gorm: - type: "sqlite" - max-idle-conns: 10 - max-open-conns: 100 -mysql: - username: "root" - password: "111111" - addr: "192.168.1.66:3308" - dbname: "rustdesk" -rustdesk: - id-server: "192.168.1.66:21116" - relay-server: "192.168.1.66:21117" - api-server: "http://192.168.1.66:21114" - key: "123456789" - personal: 1 -logger: - path: "./runtime/log.txt" - level: "warn" #trace,debug,info,warn,error,fatal - report-caller: true -proxy: - enable: false - host: "" -jwt: - key: "" - expire-duration: 168h -ldap: - enable: false - url: "ldap://ldap.example.com:389" - tls: false - tls-verify: false - base-dn: "dc=example,dc=com" - bind-dn: "cn=admin,dc=example,dc=com" - bind-password: "password" - - user: - base-dn: "ou=users,dc=example,dc=com" - enable-attr: "" #The attribute name of the user for enabling, in AD it is "userAccountControl", empty means no enable attribute, all users are enabled - enable-attr-value: "" # The value of the enable attribute when the user is enabled. If you are using AD, just set random value, it will be ignored. - filter: "(cn=*)" - username: "uid" # The attribute name of the user for usernamem if you are using AD, it should be "sAMAccountName" - email: "mail" - first-name: "givenName" - last-name: "sn" - sync: false # If true, the user will be synchronized to the database when the user logs in. If false, the user will be synchronized to the database when the user be created. - admin-group: "cn=admin,dc=example,dc=com" # The group name of the admin group, if the user is in this group, the user will be an admin. - -``` - ### 环境变量 环境变量和配置文件`conf/config.yaml`中的配置一一对应,变量名前缀是`RUSTDESK_API` 下面表格并未全部列出,可以参考`conf/config.yaml`中的配置。 @@ -248,6 +186,7 @@ ldap: | RUSTDESK_API_RUSTDESK_KEY | Rustdesk的key | 123456789 | | RUSTDESK_API_RUSTDESK_KEY_FILE | Rustdesk存放key的文件 | `./conf/data/id_ed25519.pub` | | RUSTDESK_API_RUSTDESK_WEBCLIENT
_MAGIC_QUERYONLINE | Web client v2 中是否启用新的在线状态查询方法; `1`:启用,`0`:不启用,默认不启用 | `0` | +| RUSTDESK_API_RUSTDESK_WS_HOST | 自定义Websocket Host | | | ----PROXY配置----- | ---------- | ---------- | | RUSTDESK_API_PROXY_ENABLE | 是否启用代理:`false`, `true` | `false` | | RUSTDESK_API_PROXY_HOST | 代理地址 | `http://127.0.0.1:1080` | diff --git a/README_EN.md b/README_EN.md index fe33336..1baf9ce 100644 --- a/README_EN.md +++ b/README_EN.md @@ -109,8 +109,6 @@ displaying data.Frontend code is available at [rustdesk-api-web](https://github. * Custom commands can be added * Custom commands can be executed - ![rustdesk_command_advance](./docs/en_img/rustdesk_command_advance.png) - 11. **LDAP Support**, When you setup the LDAP(test for OpenLDAP and AD), you can login with the LDAP's user. https://github.com/lejianwen/rustdesk-api/issues/114 , if LDAP fail fallback local user ### Web Client: @@ -145,71 +143,11 @@ displaying data.Frontend code is available at [rustdesk-api-web](https://github. ### Configuration +* [Config File](./conf/config.yaml) * Modify the configuration in `conf/config.yaml`. * If `gorm.type` is set to `sqlite`, MySQL-related configurations are not required. * Language support: `en` and `zh-CN` are supported. The default is `zh-CN`. -```yaml -lang: "en" -app: - web-client: 1 # web client route 1:open 0:close - register: false #register enable - show-swagger: 0 #show swagger 1:open 0:close - web-sso: true #web sso - token-expire: 168h #token expire duration - disable-pwd-login: false #disable password login -gin: - api-addr: "0.0.0.0:21114" - mode: "release" - resources-path: 'resources' - trust-proxy: "" -gorm: - type: "sqlite" - max-idle-conns: 10 - max-open-conns: 100 -mysql: - username: "root" - password: "111111" - addr: "192.168.1.66:3308" - dbname: "rustdesk" -rustdesk: - id-server: "192.168.1.66:21116" - relay-server: "192.168.1.66:21117" - api-server: "http://192.168.1.66:21114" - key: "123456789" - personal: 1 -logger: - path: "./runtime/log.txt" - level: "warn" #trace,debug,info,warn,error,fatal - report-caller: true -proxy: - enable: false - host: "" -jwt: - key: "" - expire-duration: 360000 -ldap: - enable: false - url: "ldap://ldap.example.com:389" - tls: false - tls-verify: false - base-dn: "dc=example,dc=com" - bind-dn: "cn=admin,dc=example,dc=com" - bind-password: "password" - - user: - base-dn: "ou=users,dc=example,dc=com" - enable-attr: "" #The attribute name of the user for enabling, in AD it is "userAccountControl", empty means no enable attribute, all users are enabled - enable-attr-value: "" # The value of the enable attribute when the user is enabled. If you are using AD, just set random value, it will be ignored. - filter: "(cn=*)" - username: "uid" # The attribute name of the user for usernamem if you are using AD, it should be "sAMAccountName" - email: "mail" - first-name: "givenName" - last-name: "sn" - sync: false # If true, the user will be synchronized to the database when the user logs in. If false, the user will be synchronized to the database when the user be created. - admin-group: "cn=admin,dc=example,dc=com" # The group name of the admin group, if the user is in this group, the user will be an admin. - -``` ### Environment Variables The environment variables correspond one-to-one with the configurations in the `conf/config.yaml` file. The prefix for variable names is `RUSTDESK_API`. @@ -247,6 +185,7 @@ The table below does not list all configurations. Please refer to the configurat | RUSTDESK_API_RUSTDESK_KEY | Rustdesk key | 123456789 | | RUSTDESK_API_RUSTDESK_KEY_FILE | Rustdesk key file | `./conf/data/id_ed25519.pub` | | RUSTDESK_API_RUSTDESK
_WEBCLIENT_MAGIC_QUERYONLINE | New online query method is enabled in the web client v2; '1': Enabled, '0': Disabled, not enabled by default | `0` | +| RUSTDESK_API_RUSTDESK_WS_HOST | Custom Websocket Host | | | ---- PROXY ----- | --------------- | ---------- | | RUSTDESK_API_PROXY_ENABLE | proxy_enable :`false`, `true` | `false` | | RUSTDESK_API_PROXY_HOST | proxy_host | `http://127.0.0.1:1080` | diff --git a/conf/config.yaml b/conf/config.yaml index 81de224..54536bb 100644 --- a/conf/config.yaml +++ b/conf/config.yaml @@ -32,6 +32,7 @@ rustdesk: key-file: "/data/id_ed25519.pub" personal: 1 webclient-magic-queryonline: 0 + ws-host: "" logger: path: "./runtime/log.txt" level: "info" #trace,debug,info,warn,error,fatal diff --git a/config/rustdesk.go b/config/rustdesk.go index 937aecb..2bc1c45 100644 --- a/config/rustdesk.go +++ b/config/rustdesk.go @@ -21,7 +21,8 @@ type Rustdesk struct { KeyFile string `mapstructure:"key-file"` Personal int `mapstructure:"personal"` //webclient-magic-queryonline - WebclientMagicQueryonline int `mapstructure:"webclient-magic-queryonline"` + WebclientMagicQueryonline int `mapstructure:"webclient-magic-queryonline"` + WsHost string `mapstructure:"ws-host"` } func (rd *Rustdesk) LoadKeyFile() { diff --git a/http/controller/web/index.go b/http/controller/web/index.go index 97d0fae..0bb689c 100644 --- a/http/controller/web/index.go +++ b/http/controller/web/index.go @@ -1,9 +1,9 @@ package web import ( + "fmt" "github.com/gin-gonic/gin" "github.com/lejianwen/rustdesk-api/v2/global" - "strconv" ) type Index struct { @@ -15,13 +15,20 @@ func (i *Index) Index(c *gin.Context) { func (i *Index) ConfigJs(c *gin.Context) { apiServer := global.Config.Rustdesk.ApiServer - magicQueryonline := strconv.Itoa(global.Config.Rustdesk.WebclientMagicQueryonline) - tmp := ` -localStorage.setItem('api-server', "` + apiServer + `") -const ws2_prefix = 'wc-' -localStorage.setItem(ws2_prefix+'api-server', "` + apiServer + `") + magicQueryonline := global.Config.Rustdesk.WebclientMagicQueryonline + tmp := fmt.Sprintf(`localStorage.setItem('api-server', '%v'); +const ws2_prefix = 'wc-'; +localStorage.setItem(ws2_prefix+'api-server', '%v'); -window.webclient_magic_queryonline = ` + magicQueryonline + `` +window.webclient_magic_queryonline = %d; +window.ws_host = '%v'; +`, apiServer, apiServer, magicQueryonline, global.Config.Rustdesk.WsHost) + // tmp := ` + //localStorage.setItem('api-server', "` + apiServer + `") + //const ws2_prefix = 'wc-' + //localStorage.setItem(ws2_prefix+'api-server', "` + apiServer + `") + // + //window.webclient_magic_queryonline = ` + magicQueryonline + `` c.Header("Content-Type", "application/javascript") c.String(200, tmp)