Commit Graph

82 Commits

Author SHA1 Message Date
Jianhui Zhao 1322c5deb6 Replaced string-based keys with byte arrays for HTTP proxy in sync.Map
Signed-off-by: Jianhui Zhao <zhaojh329@gmail.com>
2025-08-12 22:50:40 +08:00
Jianhui Zhao 1ef76bd855 Write the HTTP proxy error page to a file
Signed-off-by: Jianhui Zhao <zhaojh329@gmail.com>
2025-08-12 22:50:33 +08:00
Jianhui Zhao 19604debb4 use github.com/zhaojh329/rtty-go/proto
Signed-off-by: Jianhui Zhao <zhaojh329@gmail.com>
2025-08-09 13:54:32 +08:00
Jianhui Zhao 21db9f8528 use SPDX-License-Identifier
Signed-off-by: Jianhui Zhao <zhaojh329@gmail.com>
2025-08-08 19:56:51 +08:00
Jianhui Zhao 880ac06a93 Improves code organization and readability
- Encapsulate API routes into APIServer methods (api.go)
- Split large handleUserConnection into smaller methods (user.go)

Signed-off-by: Jianhui Zhao <zhaojh329@gmail.com>
2025-07-31 00:21:17 +08:00
Jianhui Zhao 5dbb4bf951 Update module name to 'github.com/zhaojh329/rttys/v5'
This is in line with the Go language module specifications.

Signed-off-by: Jianhui Zhao <zhaojh329@gmail.com>
2025-07-29 14:55:29 +08:00
Jianhui Zhao 7c3eb9cc99 http proxy: simplify session management and remove redundant cookies
- Add devid, group, destaddr, and https fields to HttpProxySession for better session tracking and logging.
- Refactor doHttpProxy to use only the rtty-http-sid cookie for session lookup, removing dependencies on group, devid, proto, and destaddr cookies.
- In httpProxyRedirect, store all necessary session info in HttpProxySession and set only the rtty-http-sid cookie.
- Unify logging to use the session string for easier debugging.

Signed-off-by: Jianhui Zhao <zhaojh329@gmail.com>
2025-07-21 21:18:32 +08:00
Jianhui Zhao d2320dce67 refine user hook URL control for specific API endpoints
Move user hook validation to individual endpoints (/connect, /cmd, /web).

Signed-off-by: Jianhui Zhao <zhaojh329@gmail.com>
2025-07-16 20:35:04 +08:00
Jianhui Zhao 98f3dbce02 add HTTP error responses to proxy connections
- Add sendHTTPErrorResponse function to send proper HTTP error pages
- Improve user experience by showing meaningful error pages instead of silent connection drops

Signed-off-by: Jianhui Zhao <zhaojh329@gmail.com>
2025-07-16 17:02:15 +08:00
Jianhui Zhao a0bfc21d11 Refactor the message distribution process
To solve a major problem: when there are many devices connected,
the broker will blocked in processing messages.

By the way, I've rewritten and reorganized the entire code architecture,
improved performance.

Some new features has been added:
* support device grouping.
* support show device's IP address.

Change-Id: I250e18091be7fd42028c82767b6edef50b3f6d8f
Signed-off-by: Jianhui Zhao <zhaojh329@gmail.com>
2025-07-07 12:21:36 +08:00
Jianhui Zhao a68aa3c921 add support log panic while running in daemon mode.
Signed-off-by: Jianhui Zhao <zhaojh329@gmail.com>
2025-06-27 16:52:22 +08:00
Jianhui Zhao 6749ca9e46 fix memleak in httpProxyCons
Signed-off-by: Jianhui Zhao <zhaojh329@gmail.com>
2025-06-26 18:34:34 +08:00
Jianhui Zhao efb4c8a539 Remove built-in TLS support in favor of Nginx termination
This commit eliminates the native TLS implementation from rttys.
Going forward, TLS termination will be handled exclusively by
Nginx reverse proxy. Key changes include:

1. Removed all TLS-related configuration options
2. Deleted certificate handling and encryption logic
3. Simplified network stack to plain TCP only
4. Updated documentation to reflect new architecture

Rationale:
- Delegates TLS to specialized reverse proxy (Nginx)
- Improves security through separation of concerns
- Reduces attack surface of rttys core service
- Enables centralized certificate management
- Facilitates future scalability with proxy layer

Signed-off-by: Jianhui Zhao <zhaojh329@gmail.com>
2025-06-26 15:07:01 +08:00
Jianhui Zhao eaf1c3960a add expire for httpProxySessions
Signed-off-by: Jianhui Zhao <zhaojh329@gmail.com>
2025-06-20 17:07:34 +08:00
Jianhui Zhao 33f82c789a fix log for http proxy
Signed-off-by: Jianhui Zhao <zhaojh329@gmail.com>
2025-06-20 16:56:16 +08:00
Jianhui Zhao 8f2cf21dfb fix: Fix func GenUniqueID
Signed-off-by: Jianhui Zhao <zhaojh329@gmail.com>
2025-06-17 22:39:17 +08:00
Jianhui Zhao bb112787d0 fix: prevent concurrent map access with sync.Map
```
fatal error: concurrent map read and map write
```

Signed-off-by: Jianhui Zhao <zhaojh329@gmail.com>
2025-05-28 14:08:37 +08:00
Dien Nguyen 3840811605 fix: use the WebUI cert and key file for web proxy service
We should use the WebUI cert and key file for web proxy service.

Signed-off-by: Dien Nguyen <nguyentienhoangdien@gmail.com>
2025-01-31 21:44:49 +08:00
Jianhui Zhao 0e4c8acbe0 chore: add more debug log
Signed-off-by: Jianhui Zhao <zhaojh329@gmail.com>
2025-01-16 17:07:08 +08:00
Jianhui Zhao 5e8bb12c6d feat: add support set http-proxy-redir-domain in nginx proxy.
```
location /web/ {
    proxy_set_header HttpProxyRedir http://web.your-server.com;
    proxy_set_header HttpProxyRedirDomain .your-server.com
    proxy_pass http://127.0.0.1:5913;
}
```

Signed-off-by: Jianhui Zhao <zhaojh329@gmail.com>
2025-01-16 11:21:16 +08:00
Jianhui Zhao 9b923492e0 chore: pretty code style
Signed-off-by: Jianhui Zhao <zhaojh329@gmail.com>
2025-01-16 10:40:36 +08:00
Jianhui Zhao bd0138743f chore: add more debug log
Signed-off-by: Jianhui Zhao <zhaojh329@gmail.com>
2025-01-16 10:02:20 +08:00
Jianhui Zhao 58ac74caf2 feat: default listen tcp4 for http proxy
Signed-off-by: Jianhui Zhao <zhaojh329@gmail.com>
2025-01-14 19:34:53 +08:00
Jianhui Zhao c76c5335cb chore: add more log
Signed-off-by: Jianhui Zhao <zhaojh329@gmail.com>
2025-01-14 19:34:01 +08:00
Jianhui Zhao a749bd3e8a feat: add support set http-proxy-redir-url in nginx proxy.
```
location /web/ {
    proxy_set_header HttpProxyRedir http://$server_name;
    proxy_pass http://127.0.0.1:5913;
}
```

Signed-off-by: Jianhui Zhao <zhaojh329@gmail.com>
2025-01-14 16:07:31 +08:00
Jianhui Zhao 91f6e74116 feat(ui): add an error page to show error message.
Signed-off-by: Jianhui Zhao <zhaojh329@gmail.com>
2024-12-16 15:26:17 +08:00
Jianhui Zhao a272ad4e80 feat: add support set http-proxy-redir-domain
Used for set cookie via nginx proxy.

Signed-off-by: Jianhui Zhao <zhaojh329@gmail.com>
2024-12-16 11:15:40 +08:00
Jianhui Zhao 089dab6de4 feat: add support tls redirection for http proxy
Signed-off-by: Jianhui Zhao <zhaojh329@gmail.com>
2024-11-22 14:54:40 +08:00
Jianhui Zhao 5eb0cc7e1b fix: fix websocket proxy #153
Signed-off-by: Jianhui Zhao <zhaojh329@gmail.com>
2024-11-21 12:12:38 +08:00
Jianhui Zhao 58c29ec208 feat: https proxy compatible old rtty
Signed-off-by: Jianhui Zhao <zhaojh329@gmail.com>
2022-09-25 17:08:13 +08:00
Jianhui Zhao 25e9fad0b4 feat: support WebSocket in http proxy
Signed-off-by: Jianhui Zhao <zhaojh329@gmail.com>
2022-07-31 15:23:11 +08:00
Jianhui Zhao 06695ba338 feat: support https proxy
Signed-off-by: Jianhui Zhao <zhaojh329@gmail.com>
2022-07-31 15:22:28 +08:00
Jianhui Zhao ed859122e0 feat: support specify path and query for web proxy
Signed-off-by: Jianhui Zhao <zhaojh329@gmail.com>
2022-05-09 16:51:32 +08:00
Jianhui Zhao cc5e8b7896 fix: panic: send on closed channel
Signed-off-by: Jianhui Zhao <zhaojh329@gmail.com>
2021-09-22 11:58:41 +00:00
Jianhui Zhao 33ed98e253 perf: improve http proxy
Signed-off-by: Jianhui Zhao <zhaojh329@gmail.com>
2021-09-19 23:40:09 +08:00
Jianhui Zhao e26337f3ea chore: improve code
Signed-off-by: Jianhui Zhao <zhaojh329@gmail.com>
2021-09-16 11:53:15 +00:00
Jianhui Zhao 2291340776 perf: gzip ui asserts
Signed-off-by: Jianhui Zhao <zhaojh329@gmail.com>
2021-09-14 16:01:55 +00:00
Jianhui Zhao 29a925d4a9 chore: improve code
Signed-off-by: Jianhui Zhao <zhaojh329@gmail.com>
2021-09-11 02:13:32 +08:00
Jianhui Zhao c857cc305b chore: rename go module to rttys
Signed-off-by: Jianhui Zhao <zhaojh329@gmail.com>
2021-09-08 10:33:47 +00:00
Jianhui Zhao deb5377437 chore: rename frontend to ui
Signed-off-by: Jianhui Zhao <zhaojh329@gmail.com>
2021-09-08 09:34:29 +00:00
jiajian0611 9527ae775c Adjust the database configuration format of the configuration file to support the selection of MySQL and SQLite3. (#88)
Signed-off-by: zhou_jiajian <zhou_0611@163.com>
2021-07-29 13:44:01 +08:00
Jianhui Zhao e7e74254e4 feat: support delete offline devices
Signed-off-by: Jianhui Zhao <zhaojh329@gmail.com>
2021-05-28 21:19:06 +08:00
Jianhui Zhao 7bc0542dea feat: device management
Signed-off-by: Jianhui Zhao <zhaojh329@gmail.com>
2021-05-02 19:01:46 +08:00
Jianhui Zhao 7fed1bbdcd Improve code
Signed-off-by: Jianhui Zhao <zhaojh329@gmail.com>
2021-02-28 20:40:27 +08:00
Jianhui Zhao b5ecca7b7e feat: Local authentication is configurable
Signed-off-by: Jianhui Zhao <zhaojh329@gmail.com>
2021-02-28 20:36:06 +08:00
Jianhui Zhao 2a08cb5a8f feat: store font size in database
Signed-off-by: Jianhui Zhao <zhaojh329@gmail.com>
2021-02-28 20:30:43 +08:00
Jianhui Zhao 28305360dc fix: set/get font size of terminal
Signed-off-by: Jianhui Zhao <zhaojh329@gmail.com>
2021-02-28 20:22:29 +08:00
Jianhui Zhao 1324911b10 fix: sign out
Signed-off-by: Jianhui Zhao <zhaojh329@gmail.com>
2021-02-27 23:15:34 +08:00
Jianhui Zhao dd3fb3e9a7 feat: support user sign up
Signed-off-by: Jianhui Zhao <zhaojh329@gmail.com>
2021-02-27 22:53:39 +08:00
Jianhui Zhao d3c4e05041 feat: use go:embed from go1.16
Signed-off-by: Jianhui Zhao <zhaojh329@gmail.com>
2021-02-20 23:02:11 +08:00