diff --git a/README.md b/README.md
index cefefa3..f69c708 100644
--- a/README.md
+++ b/README.md
@@ -62,36 +62,6 @@ Authentication Server Response Format:
You can enable mTLS by specifying device CA storage (valid file) in config file or from CLI (variable ssl-cacert).
Device(s) without valid CA in storage will be disconnected in TLS handshake.
-## Database Preparation
-## Sqlite
-s#qlite://rttys.db
-
-### MySql or Mariadb
-mysql://rttys:rttys@tcp(localhost)/rttys
-
-On database instance, login to database console as root:
-```
-mysql -u root -p
-```
-
-Create database user which will be used by Rttys, authenticated by password. This example uses 'rttys' as password. Please use a secure password for your instance.
-```
-CREATE USER 'rttys' IDENTIFIED BY 'rttys';
-```
-
-Create database with UTF-8 charset and collation. Make sure to use utf8mb4 charset instead of utf8 as the former supports all Unicode characters (including emojis) beyond Basic Multilingual Plane. Also, collation chosen depending on your expected content. When in doubt, use either unicode_ci or general_ci.
-```
-CREATE DATABASE rttys CHARACTER SET 'utf8mb4' COLLATE 'utf8mb4_unicode_ci';
-```
-
-Grant all privileges on the database to database user created above.
-```
-GRANT ALL PRIVILEGES ON rttys.* TO 'rttys';
-FLUSH PRIVILEGES;
-```
-
-Quit from database console by exit.
-
## nginx proxy
```
diff --git a/README_ZH.md b/README_ZH.md
index 93784dd..7d2ced9 100644
--- a/README_ZH.md
+++ b/README_ZH.md
@@ -60,36 +60,6 @@ golang and node 20+ is required
您可以在配置文件中指定设备 CA 存储(有效文件)或在 CLI 中指定设备 CA 存储(参数 ssl-cacert) 来启用 mTLS。
存储中没有有效 CA 的设备将在 TLS 握手中断开连接。
-## 数据库准备
-### Sqlite
-sqlite://rttys.db
-
-### MySql 或者 Mariadb
-mysql://rttys:rttys@tcp(localhost)/rttys
-
-在数据库实例上,以root用户身份登录到数据库控制台:
-```
-mysql -u root -p
-```
-
-创建将由 Rttys 使用的数据库用户,通过密码验证。本例使用 “rttys” 作为密码。请为您的实例使用安全密码。
-```
-CREATE USER 'rttys' IDENTIFIED BY 'rttys';
-```
-
-使用 UTF-8 字符集和排序规则创建数据库。确保使用 utf8mb4 字符集而不是 utf8,因为前者支持基本多语言平面
-之外的所有 Unicode字符(包括emojis)。另外,根据您期望的内容选择排序规则。如有疑问,请使用 unicode_ci 或general_ci。
-```
-CREATE DATABASE rttys CHARACTER SET 'utf8mb4' COLLATE 'utf8mb4_unicode_ci';
-```
-将数据库上的所有权限授予上面创建的数据库用户。
-```
-GRANT ALL PRIVILEGES ON rttys.* TO 'rttys';
-FLUSH PRIVILEGES;
-```
-
-退出数据库控制台。
-
## nginx 反向代理
```
diff --git a/api.go b/api.go
index 2eb4feb..c8e84a0 100644
--- a/api.go
+++ b/api.go
@@ -2,7 +2,6 @@ package main
import (
"embed"
- "fmt"
"io/fs"
"net"
"net/http"
@@ -118,53 +117,24 @@ func apiStart(br *broker) {
Connected uint32 `json:"connected"`
Uptime uint32 `json:"uptime"`
Description string `json:"description"`
- Online bool `json:"online"`
Proto uint8 `json:"proto"`
}
- db, err := instanceDB(cfg.DB)
- if err != nil {
- log.Error().Msg(err.Error())
- c.Status(http.StatusInternalServerError)
- return
- }
- defer db.Close()
-
- sql := "SELECT id, description FROM device"
-
devs := make([]DeviceInfo, 0)
- rows, err := db.Query(sql)
- if err != nil {
- log.Error().Msg(err.Error())
- c.Status(http.StatusInternalServerError)
- return
- }
+ br.devices.Range(func(key, value any) bool {
+ dev := value.(*device)
- for rows.Next() {
- id := ""
- desc := ""
+ devs = append(devs, DeviceInfo{
+ ID: dev.id,
+ Description: dev.desc,
+ Connected: uint32(time.Now().Unix() - dev.timestamp),
+ Uptime: dev.uptime,
+ Proto: dev.proto,
+ })
- err := rows.Scan(&id, &desc)
- if err != nil {
- log.Error().Msg(err.Error())
- break
- }
-
- di := DeviceInfo{
- ID: id,
- Description: desc,
- }
-
- if dev, ok := br.getDevice(id); ok {
- di.Connected = uint32(time.Now().Unix() - dev.timestamp)
- di.Uptime = dev.uptime
- di.Online = true
- di.Proto = dev.proto
- }
-
- devs = append(devs, di)
- }
+ return true
+ })
allowOrigin(c.Writer)
@@ -245,36 +215,6 @@ func apiStart(br *broker) {
c.Status(http.StatusOK)
})
- authorized.POST("/delete", func(c *gin.Context) {
- type deldata struct {
- Devices []string `json:"devices"`
- }
-
- data := deldata{}
-
- err := c.BindJSON(&data)
- if err != nil {
- c.Status(http.StatusBadRequest)
- return
- }
-
- db, err := instanceDB(cfg.DB)
- if err != nil {
- log.Error().Msg(err.Error())
- return
- }
- defer db.Close()
-
- for _, devid := range data.Devices {
- if _, ok := br.getDevice(devid); !ok {
- sql := fmt.Sprintf("DELETE FROM device WHERE id = '%s'", devid)
- db.Exec(sql)
- }
- }
-
- c.Status(http.StatusOK)
- })
-
r.GET("/file/:sid", func(c *gin.Context) {
sid := c.Param("sid")
if fp, ok := br.fileProxy.Load(sid); ok {
diff --git a/broker.go b/broker.go
index 37befe1..a4b234d 100644
--- a/broker.go
+++ b/broker.go
@@ -136,7 +136,6 @@ func (br *broker) run() {
} else {
dev.registered = true
br.devices.Store(devid, c)
- dev.UpdateDb()
log.Info().Msgf("Device '%s' registered, proto %d, heartbeat %v", devid, dev.proto, dev.heartbeat)
}
diff --git a/config/config.go b/config/config.go
index dc3f5a1..57bf5ae 100644
--- a/config/config.go
+++ b/config/config.go
@@ -26,7 +26,6 @@ type Config struct {
Token string
DevAuthUrl string
WhiteList map[string]bool
- DB string
LocalAuth bool
SeparateSslConfig bool
Password string
@@ -71,7 +70,6 @@ func parseYamlCfg(cfg *Config, conf string) error {
getConfigOpt(yamlCfg, "token", &cfg.Token)
getConfigOpt(yamlCfg, "dev-auth-url", &cfg.DevAuthUrl)
- getConfigOpt(yamlCfg, "db", &cfg.DB)
getConfigOpt(yamlCfg, "local-auth", &cfg.LocalAuth)
val, err := yamlCfg.Get("white-list")
@@ -110,7 +108,6 @@ func Parse(c *cli.Context) (*Config, error) {
cfg := &Config{
AddrDev: ":5912",
AddrUser: ":5913",
- DB: "sqlite://rttys.db",
LocalAuth: true,
}
@@ -130,7 +127,6 @@ func Parse(c *cli.Context) (*Config, error) {
getFlagOpt(c, "dev-auth-url", &cfg.DevAuthUrl)
getFlagOpt(c, "local-auth", &cfg.LocalAuth)
getFlagOpt(c, "token", &cfg.Token)
- getFlagOpt(c, "db", &cfg.DB)
getFlagOpt(c, "password", &cfg.Password)
getFlagOpt(c, "ssl-cacert", &cfg.SslCacert)
diff --git a/database.go b/database.go
deleted file mode 100644
index 0bb4fdb..0000000
--- a/database.go
+++ /dev/null
@@ -1,25 +0,0 @@
-/*
- * @Author: 周家建
- * @Mail: zhou_0611@163.com
- * @Date: 2021-07-27 19:02:39
- * @Description:
- */
-
-package main
-
-import (
- "database/sql"
- "strings"
-
- _ "github.com/go-sql-driver/mysql"
- _ "modernc.org/sqlite"
-)
-
-func instanceDB(str string) (*sql.DB, error) {
- sp := strings.Split(str, "://")
- if len(sp) == 2 {
- return sql.Open(sp[0], sp[1])
- } else {
- return sql.Open("mysql", str)
- }
-}
diff --git a/device.go b/device.go
index 172e9cb..945aa30 100644
--- a/device.go
+++ b/device.go
@@ -152,28 +152,6 @@ func (dev *device) Close() {
close(dev.send)
}
-func (dev *device) UpdateDb() {
- db, err := instanceDB(dev.br.cfg.DB)
- if err != nil {
- log.Error().Msg(err.Error())
- return
- }
- defer db.Close()
-
- cnt := 0
-
- db.QueryRow("SELECT COUNT(*) FROM device WHERE id = ?", dev.id).Scan(&cnt)
- if cnt == 0 {
- _, err = db.Exec("INSERT INTO device values(?,?,?,?)", dev.id, dev.desc, time.Now(), "")
- } else {
- _, err = db.Exec("UPDATE device SET description = ?, online = ? WHERE id = ?", dev.desc, time.Now(), dev.id)
- }
-
- if err != nil {
- log.Error().Msg(err.Error())
- }
-}
-
func parseDeviceInfo(dev *device, b []byte) bool {
dev.proto = b[0]
diff --git a/go.mod b/go.mod
index 25043ab..4a4dcc6 100644
--- a/go.mod
+++ b/go.mod
@@ -7,7 +7,6 @@ toolchain go1.23.3
require (
github.com/dwdcth/consoleEx v0.0.0-20180521133551-f56f6eb78b76
github.com/gin-gonic/gin v1.10.0
- github.com/go-sql-driver/mysql v1.8.1
github.com/gorilla/websocket v1.5.3
github.com/howeyc/gopass v0.0.0-20210920133722-c8aef6fb66ef
github.com/json-iterator/go v1.1.12
@@ -16,44 +15,34 @@ require (
github.com/rs/zerolog v1.33.0
github.com/urfave/cli/v2 v2.27.5
golang.org/x/term v0.28.0
- modernc.org/sqlite v1.34.5
)
require (
- filippo.io/edwards25519 v1.1.0 // indirect
github.com/bytedance/sonic v1.12.7 // indirect
github.com/bytedance/sonic/loader v0.2.3 // indirect
github.com/cloudwego/base64x v0.1.4 // indirect
github.com/cpuguy83/go-md2man/v2 v2.0.6 // indirect
- github.com/dustin/go-humanize v1.0.1 // indirect
github.com/gabriel-vasile/mimetype v1.4.8 // indirect
github.com/gin-contrib/sse v1.0.0 // indirect
github.com/go-playground/locales v0.14.1 // indirect
github.com/go-playground/universal-translator v0.18.1 // indirect
github.com/go-playground/validator/v10 v10.24.0 // indirect
github.com/goccy/go-json v0.10.4 // indirect
- github.com/google/uuid v1.6.0 // indirect
github.com/klauspost/cpuid/v2 v2.2.9 // indirect
github.com/leodido/go-urn v1.4.0 // indirect
github.com/mattn/go-isatty v0.0.20 // indirect
github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd // indirect
github.com/modern-go/reflect2 v1.0.2 // indirect
- github.com/ncruces/go-strftime v0.1.9 // indirect
github.com/pelletier/go-toml/v2 v2.2.3 // indirect
- github.com/remyoudompheng/bigfft v0.0.0-20230129092748-24d4a6f8daec // indirect
github.com/russross/blackfriday/v2 v2.1.0 // indirect
github.com/twitchyliquid64/golang-asm v0.15.1 // indirect
github.com/ugorji/go/codec v1.2.12 // indirect
github.com/xrash/smetrics v0.0.0-20240521201337-686a1a2994c1 // indirect
golang.org/x/arch v0.13.0 // indirect
golang.org/x/crypto v0.32.0 // indirect
- golang.org/x/exp v0.0.0-20250106191152-7588d65b2ba8 // indirect
golang.org/x/net v0.34.0 // indirect
golang.org/x/sys v0.29.0 // indirect
golang.org/x/text v0.21.0 // indirect
google.golang.org/protobuf v1.36.3 // indirect
gopkg.in/yaml.v3 v3.0.1 // indirect
- modernc.org/libc v1.61.8 // indirect
- modernc.org/mathutil v1.7.1 // indirect
- modernc.org/memory v1.8.2 // indirect
)
diff --git a/go.sum b/go.sum
index 21729ac..b07f359 100644
--- a/go.sum
+++ b/go.sum
@@ -1,5 +1,3 @@
-filippo.io/edwards25519 v1.1.0 h1:FNf4tywRC1HmFuKW5xopWpigGjJKiJSV0Cqo0cJWDaA=
-filippo.io/edwards25519 v1.1.0/go.mod h1:BxyFTGdWcka3PhytdK4V28tE5sGfRvvvRV7EaN4VDT4=
github.com/bytedance/sonic v1.12.7 h1:CQU8pxOy9HToxhndH0Kx/S1qU/CuS9GnKYrGioDcU1Q=
github.com/bytedance/sonic v1.12.7/go.mod h1:tnbal4mxOMju17EGfknm2XyYcpyCnIROYOEYuemj13I=
github.com/bytedance/sonic/loader v0.1.1/go.mod h1:ncP89zfokxS5LZrJxl5z0UJcsk4M4yY2JpfqGeCtNLU=
@@ -14,8 +12,6 @@ github.com/cpuguy83/go-md2man/v2 v2.0.6/go.mod h1:oOW0eioCTA6cOiMLiUPZOpcVxMig6N
github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c=
github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
-github.com/dustin/go-humanize v1.0.1 h1:GzkhY7T5VNhEkwH0PVJgjz+fX1rhBrR7pRT3mDkpeCY=
-github.com/dustin/go-humanize v1.0.1/go.mod h1:Mu1zIs6XwVuF/gI1OepvI0qD18qycQx+mFykh5fBlto=
github.com/dwdcth/consoleEx v0.0.0-20180521133551-f56f6eb78b76 h1:eObfFy0e/9OQCd5tHy+855jrW7zTihdgIPD7hf2SOQ0=
github.com/dwdcth/consoleEx v0.0.0-20180521133551-f56f6eb78b76/go.mod h1:WPzFRpaqRmrZAD1vMpqUGZR24FE1EBoSG9lHKQyZOMM=
github.com/gabriel-vasile/mimetype v1.4.8 h1:FfZ3gj38NjllZIeJAmMhr+qKL8Wu+nOoI3GqacKw1NM=
@@ -32,18 +28,12 @@ github.com/go-playground/universal-translator v0.18.1 h1:Bcnm0ZwsGyWbCzImXv+pAJn
github.com/go-playground/universal-translator v0.18.1/go.mod h1:xekY+UJKNuX9WP91TpwSH2VMlDf28Uj24BCp08ZFTUY=
github.com/go-playground/validator/v10 v10.24.0 h1:KHQckvo8G6hlWnrPX4NJJ+aBfWNAE/HH+qdL2cBpCmg=
github.com/go-playground/validator/v10 v10.24.0/go.mod h1:GGzBIJMuE98Ic/kJsBXbz1x/7cByt++cQ+YOuDM5wus=
-github.com/go-sql-driver/mysql v1.8.1 h1:LedoTUt/eveggdHS9qUFC1EFSa8bU2+1pZjSRpvNJ1Y=
-github.com/go-sql-driver/mysql v1.8.1/go.mod h1:wEBSXgmK//2ZFJyE+qWnIsVGmvmEKlqwuVSjsCm7DZg=
github.com/goccy/go-json v0.10.4 h1:JSwxQzIqKfmFX1swYPpUThQZp/Ka4wzJdK0LWVytLPM=
github.com/goccy/go-json v0.10.4/go.mod h1:oq7eo15ShAhp70Anwd5lgX2pLfOS3QCiwU/PULtXL6M=
github.com/godbus/dbus/v5 v5.0.4/go.mod h1:xhWf0FNVPg57R7Z0UbKHbJfkEywrmjJnf7w5xrFpKfA=
-github.com/google/go-cmp v0.6.0 h1:ofyhxvXcZhMsU5ulbFiLKl/XBFqE1GSq7atu8tAmTRI=
-github.com/google/go-cmp v0.6.0/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY=
+github.com/google/go-cmp v0.5.5 h1:Khx7svrCpmxxtHBq5j2mp/xVjsi8hQMfNLvJFAlrGgU=
+github.com/google/go-cmp v0.5.5/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE=
github.com/google/gofuzz v1.0.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg=
-github.com/google/pprof v0.0.0-20240409012703-83162a5b38cd h1:gbpYu9NMq8jhDVbvlGkMFWCjLFlqqEZjEmObmhUy6Vo=
-github.com/google/pprof v0.0.0-20240409012703-83162a5b38cd/go.mod h1:kf6iHlnVGwgKolg33glAes7Yg/8iWP8ukqeldJSO7jw=
-github.com/google/uuid v1.6.0 h1:NIvaJDMOsjHA8n1jAhLSgzrAzy1Hgr+hNrb57e+94F0=
-github.com/google/uuid v1.6.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo=
github.com/gorilla/websocket v1.5.3 h1:saDtZ6Pbx/0u+bgYQ3q96pZgCzfhKXGPqt7kZ72aNNg=
github.com/gorilla/websocket v1.5.3/go.mod h1:YR8l580nyteQvAITg2hZ9XVh4b55+EU/adAjf1fMHhE=
github.com/howeyc/gopass v0.0.0-20210920133722-c8aef6fb66ef h1:A9HsByNhogrvm9cWb28sjiS3i7tcKCkflWFEkHfuAgM=
@@ -70,15 +60,11 @@ github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd h1:TRLaZ9cD/w
github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q=
github.com/modern-go/reflect2 v1.0.2 h1:xBagoLtFs94CBntxluKeaWgTMpvLxC4ur3nMaC9Gz0M=
github.com/modern-go/reflect2 v1.0.2/go.mod h1:yWuevngMOJpCy52FWWMvUC8ws7m/LJsjYzDa0/r8luk=
-github.com/ncruces/go-strftime v0.1.9 h1:bY0MQC28UADQmHmaF5dgpLmImcShSi2kHU9XLdhx/f4=
-github.com/ncruces/go-strftime v0.1.9/go.mod h1:Fwc5htZGVVkseilnfgOVb9mKy6w1naJmn9CehxcKcls=
github.com/pelletier/go-toml/v2 v2.2.3 h1:YmeHyLY8mFWbdkNWwpr+qIL2bEqT0o95WSdkNHvL12M=
github.com/pelletier/go-toml/v2 v2.2.3/go.mod h1:MfCQTFTvCcUyyvvwm1+G6H/jORL20Xlb6rzQu9GuUkc=
github.com/pkg/errors v0.9.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0=
github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM=
github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4=
-github.com/remyoudompheng/bigfft v0.0.0-20230129092748-24d4a6f8daec h1:W09IVJc94icq4NjY3clb7Lk8O1qJ8BdBEF8z0ibU0rE=
-github.com/remyoudompheng/bigfft v0.0.0-20230129092748-24d4a6f8daec/go.mod h1:qqbHyh8v60DhA7CoWK5oRCqLrMHRGoxYCSS9EjAz6Eo=
github.com/rs/xid v1.5.0/go.mod h1:trrq9SKmegXys3aeAKXMUTdJsYXVwGY3RLcfgqegfbg=
github.com/rs/zerolog v1.33.0 h1:1cU2KZkvPxNyfgEmhHAz/1A9Bz+llsdYzklWFzgp0r8=
github.com/rs/zerolog v1.33.0/go.mod h1:/7mN4D5sKwJLZQ2b/znpjC3/GQWY/xaDXUM0kKWRHss=
@@ -108,14 +94,8 @@ golang.org/x/arch v0.13.0 h1:KCkqVVV1kGg0X87TFysjCJ8MxtZEIU4Ja/yXGeoECdA=
golang.org/x/arch v0.13.0/go.mod h1:FEVrYAQjsQXMVJ1nsMoVVXPZg6p2JE2mx8psSWTDQys=
golang.org/x/crypto v0.32.0 h1:euUpcYgM8WcP71gNpTqQCn6rC2t6ULUPiOzfWaXVVfc=
golang.org/x/crypto v0.32.0/go.mod h1:ZnnJkOaASj8g0AjIduWNlq2NRxL0PlBrbKVyZ6V/Ugc=
-golang.org/x/exp v0.0.0-20250106191152-7588d65b2ba8 h1:yqrTHse8TCMW1M1ZCP+VAR/l0kKxwaAIqN/il7x4voA=
-golang.org/x/exp v0.0.0-20250106191152-7588d65b2ba8/go.mod h1:tujkw807nyEEAamNbDrEGzRav+ilXA7PCRAd6xsmwiU=
-golang.org/x/mod v0.22.0 h1:D4nJWe9zXqHOmWqj4VMOJhvzj7bEZg4wEYa759z1pH4=
-golang.org/x/mod v0.22.0/go.mod h1:6SkKJ3Xj0I0BrPOZoBy3bdMptDDU9oJrpohJ3eWZ1fY=
golang.org/x/net v0.34.0 h1:Mb7Mrk043xzHgnRM88suvJFwzVrRfHEHJEl5/71CKw0=
golang.org/x/net v0.34.0/go.mod h1:di0qlW3YNM5oh6GqDGQr92MyTozJPmybPK4Ev/Gm31k=
-golang.org/x/sync v0.10.0 h1:3NQrjDixjgGwUOCaF8w2+VYHv0Ve/vGYSbdkTa98gmQ=
-golang.org/x/sync v0.10.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk=
golang.org/x/sys v0.0.0-20220811171246-fbc7d0a398ab/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/sys v0.12.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
@@ -125,8 +105,8 @@ golang.org/x/term v0.28.0 h1:/Ts8HFuMR2E6IP/jlo7QVLZHggjKQbhu/7H0LJFr3Gg=
golang.org/x/term v0.28.0/go.mod h1:Sw/lC2IAUZ92udQNf3WodGtn4k/XoLyZoh8v/8uiwek=
golang.org/x/text v0.21.0 h1:zyQAAkrwaneQ066sspRyJaG9VNi/YJ1NfzcGB3hZ/qo=
golang.org/x/text v0.21.0/go.mod h1:4IBbMaMmOPCJ8SecivzSH54+73PCFmPWxNTLm+vZkEQ=
-golang.org/x/tools v0.29.0 h1:Xx0h3TtM9rzQpQuR4dKLrdglAmCEN5Oi+P74JdhdzXE=
-golang.org/x/tools v0.29.0/go.mod h1:KMQVMRsVxU6nHCFXrBPhDB8XncLNLM0lIy/F14RP588=
+golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543 h1:E7g+9GITq07hpfrRu66IVDexMakfv52eLZ2CXBWiKr4=
+golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
google.golang.org/protobuf v1.36.3 h1:82DV7MYdb8anAVi3qge1wSnMDrnKK7ebr+I0hHRN1BU=
google.golang.org/protobuf v1.36.3/go.mod h1:9fA7Ob0pmnwhb644+1+CVWFRbNajQ6iRojtC/QF5bRE=
gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405 h1:yhCVgyC4o1eVCa2tZl7eS0r+SDo693bJlVdllGtEeKM=
@@ -134,28 +114,4 @@ gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8
gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA=
gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
-modernc.org/cc/v4 v4.24.4 h1:TFkx1s6dCkQpd6dKurBNmpo+G8Zl4Sq/ztJ+2+DEsh0=
-modernc.org/cc/v4 v4.24.4/go.mod h1:uVtb5OGqUKpoLWhqwNQo/8LwvoiEBLvZXIQ/SmO6mL0=
-modernc.org/ccgo/v4 v4.23.12 h1:UF08a38c4B+K3VoGipBrVWLFUCHd8+X20QZtFAIlQNk=
-modernc.org/ccgo/v4 v4.23.12/go.mod h1:vdN4h2WR5aEoNondUx26K7G8X+nuBscYnAEWSRmN2/0=
-modernc.org/fileutil v1.3.0 h1:gQ5SIzK3H9kdfai/5x41oQiKValumqNTDXMvKo62HvE=
-modernc.org/fileutil v1.3.0/go.mod h1:XatxS8fZi3pS8/hKG2GH/ArUogfxjpEKs3Ku3aK4JyQ=
-modernc.org/gc/v2 v2.6.1 h1:+Qf6xdG8l7B27TQ8D8lw/iFMUj1RXRBOuMUWziJOsk8=
-modernc.org/gc/v2 v2.6.1/go.mod h1:YgIahr1ypgfe7chRuJi2gD7DBQiKSLMPgBQe9oIiito=
-modernc.org/libc v1.61.8 h1:50KrjlFFoKq9ABh+bNVUf5SfVfQ4NY7CEyFBh65qc60=
-modernc.org/libc v1.61.8/go.mod h1:XloulGc0yIRM+91kbwrp7jNi/mfYPAvDOD2qwzWEij0=
-modernc.org/mathutil v1.7.1 h1:GCZVGXdaN8gTqB1Mf/usp1Y/hSqgI2vAGGP4jZMCxOU=
-modernc.org/mathutil v1.7.1/go.mod h1:4p5IwJITfppl0G4sUEDtCr4DthTaT47/N3aT6MhfgJg=
-modernc.org/memory v1.8.2 h1:cL9L4bcoAObu4NkxOlKWBWtNHIsnnACGF/TbqQ6sbcI=
-modernc.org/memory v1.8.2/go.mod h1:ZbjSvMO5NQ1A2i3bWeDiVMxIorXwdClKE/0SZ+BMotU=
-modernc.org/opt v0.1.4 h1:2kNGMRiUjrp4LcaPuLY2PzUfqM/w9N23quVwhKt5Qm8=
-modernc.org/opt v0.1.4/go.mod h1:03fq9lsNfvkYSfxrfUhZCWPk1lm4cq4N+Bh//bEtgns=
-modernc.org/sortutil v1.2.1 h1:+xyoGf15mM3NMlPDnFqrteY07klSFxLElE2PVuWIJ7w=
-modernc.org/sortutil v1.2.1/go.mod h1:7ZI3a3REbai7gzCLcotuw9AC4VZVpYMjDzETGsSMqJE=
-modernc.org/sqlite v1.34.5 h1:Bb6SR13/fjp15jt70CL4f18JIN7p7dnMExd+UFnF15g=
-modernc.org/sqlite v1.34.5/go.mod h1:YLuNmX9NKs8wRNK2ko1LW1NGYcc9FkBO69JOt1AR9JE=
-modernc.org/strutil v1.2.1 h1:UneZBkQA+DX2Rp35KcM69cSsNES9ly8mQWD71HKlOA0=
-modernc.org/strutil v1.2.1/go.mod h1:EHkiggD70koQxjVdSBM3JKM7k6L0FbGE5eymy9i3B9A=
-modernc.org/token v1.1.0 h1:Xl7Ap9dKaEs5kLoOQeQmPWevfnk/DM5qcLcYlA8ys6Y=
-modernc.org/token v1.1.0/go.mod h1:UGzOrNV1mAFSEB63lOFHIpNRUVMvYTc6yu1SMY/XTDM=
nullprogram.com/x/optparse v1.0.0/go.mod h1:KdyPE+Igbe0jQUrVfMqDMeJQIJZEuyV7pjYmp6pbG50=
diff --git a/main.go b/main.go
index 00e437a..d15453b 100644
--- a/main.go
+++ b/main.go
@@ -16,18 +16,6 @@ import (
"github.com/urfave/cli/v2"
)
-func initDb(cfg *config.Config) error {
- db, err := instanceDB(cfg.DB)
- if err != nil {
- return err
- }
- defer db.Close()
-
- _, err = db.Exec("CREATE TABLE IF NOT EXISTS device(id VARCHAR(512) PRIMARY KEY NOT NULL, description TEXT NOT NULL, online DATETIME NOT NULL)")
-
- return err
-}
-
func runRttys(c *cli.Context) error {
xlog.SetPath(c.String("log"))
@@ -67,11 +55,6 @@ func runRttys(c *cli.Context) error {
log.Info().Msg("Build Time: " + version.BuildTime())
}
- err = initDb(cfg)
- if err != nil {
- return fmt.Errorf(`init database: %s`, err.Error())
- }
-
br := newBroker(cfg)
go br.run()
@@ -159,11 +142,6 @@ func main() {
Name: "white-list",
Usage: "white list(device IDs separated by spaces or *)",
},
- &cli.StringFlag{
- Name: "db",
- Value: "sqlite://rttys.db",
- Usage: "database source",
- },
&cli.BoolFlag{
Name: "local-auth",
Value: true,
diff --git a/rttys.conf b/rttys.conf
index d2b9c07..c33056a 100644
--- a/rttys.conf
+++ b/rttys.conf
@@ -28,10 +28,6 @@
#white-list: "*"
#white-list: rtty1 rtty2
-# database source
-db: sqlite://rttys.db
-#db: mysql://rttys:rttys@tcp(localhost)/rttys
-
# Local access does not require authentication
#local-auth: false
diff --git a/ui/src/i18n/en.json b/ui/src/i18n/en.json
index c125ec7..ef5f292 100644
--- a/ui/src/i18n/en.json
+++ b/ui/src/i18n/en.json
@@ -10,7 +10,7 @@
"Refresh List": "Refresh List",
"Please enter the filter key...": "Please enter the filter key...",
"Execute command": "Execute command",
- "device-count": "Online Device: {count}",
+ "device-count": "Device Count: {count}",
"Sign out": "Sign out",
"Sign up": "Sign up",
"New to Rttys?": "New to Rttys?",
@@ -42,7 +42,6 @@
"Stderr": "Stderr",
"Select file": "Select file",
"Upload": "Upload",
- "Device offline": "Device offline",
"Sessions is full": "Sessions is full",
"Copy - Ctrl+Insert": "Copy - Ctrl+Insert",
"Paste - Shift+Insert": "Paste - Shift+Insert",
@@ -57,10 +56,6 @@
"Access your devices's Web": "Access your devices's Web",
"Please enter the address you want to access": "Please enter the address you want to access:",
"The file you will upload is too large(> 4294967295 Byte)": "The file you will upload is too large(> 4294967295 Byte)",
- "Delete": "Delete",
- "Delete success": "Delete success",
- "Delete offline devices": "Delete offline devices",
- "There are no offline devices in selected devices": "There are no offline devices in selected devices",
"Invalid address": "Invalid address",
"Already copied to clipboard": "Already copied to clipboard",
"Please use shortcut \"Shift+Insert\"": "Please use shortcut \"Shift+Insert\"",
diff --git a/ui/src/i18n/zh-CN.json b/ui/src/i18n/zh-CN.json
index 6155734..5ba3ad0 100644
--- a/ui/src/i18n/zh-CN.json
+++ b/ui/src/i18n/zh-CN.json
@@ -10,7 +10,7 @@
"Refresh List": "刷新列表",
"Please enter the filter key...": "请输入关键字进行过滤...",
"Execute command": "执行命令",
- "device-count": "在线设备数: {count}",
+ "device-count": "设备数: {count}",
"Sign out": "退出",
"Sign up": "注册",
"New to Rttys?": "新用户?",
@@ -43,7 +43,6 @@
"Upload file to device": "上传文件到设备",
"Select file": "选择文件",
"Upload": "上传",
- "Device offline": "设备离线",
"Sessions is full": "会话已满",
"Copy - Ctrl+Insert": "复制 - Ctrl+Insert",
"Paste - Shift+Insert": "粘贴 - Shift+Insert",
@@ -58,10 +57,6 @@
"Access your devices's Web": "访问您的设备的 Web",
"Please enter the address you want to access": "请输入您要访问的地址:",
"The file you will upload is too large(> 4294967295 Byte)": "您要上传的文件太大了(> 4294967295 Byte)",
- "Delete": "删除",
- "Delete success": "删除成功",
- "Delete offline devices": "删除离线设备",
- "There are no offline devices in selected devices": "所选设备中无离线设备",
"Invalid address": "无效的地址",
"Already copied to clipboard": "已复制到剪切板",
"Please use shortcut \"Shift+Insert\"": "请使用快捷键 \"Shift+Insert\"",
diff --git a/ui/src/views/Home.vue b/ui/src/views/Home.vue
index c55f0b0..50eaf40 100644
--- a/ui/src/views/Home.vue
+++ b/ui/src/views/Home.vue
@@ -5,12 +5,9 @@
{{ $t('Refresh List') }}
{{ $t('Execute command') }}
-
- {{ $t('Delete') }}
-
- {{ $t('device-count', {count: devlists.filter(dev => dev.online).length}) }}
+ {{ $t('device-count', {count: devlists.length}) }}
{{ $t('Sign out') }}
@@ -32,13 +29,12 @@
-
+
-
+
- {{ $t('Device offline') }}
@@ -231,26 +227,6 @@ export default {
handleSelection(selection) {
this.selection = selection
},
- deleteDevices() {
- if (this.selection.length < 1) {
- this.$message.error(this.$t('Please select the devices you want to operate'))
- return
- }
-
- const offlines = this.selection.filter(s => !s.online)
-
- if (offlines.length < 1) {
- this.$message.info(this.$t('There are no offline devices in selected devices'))
- return
- }
-
- this.axios.post('/delete', {
- devices: offlines.map(s => s.id)
- }).then(() => {
- this.getDevices()
- this.$message.success(this.$t('Delete success'))
- })
- },
connectDevice(devid) {
window.open('/rtty/' + devid)
},
@@ -333,16 +309,14 @@ export default {
doCmd() {
(this.$refs['cmdForm']).validate(valid => {
if (valid) {
- const selection = this.selection.filter(dev => dev.online)
-
this.cmdModal = false
this.cmdStatus.modal = true
- this.cmdStatus.total = selection.length
- this.cmdStatus.execing = selection.length
+ this.cmdStatus.total = this.selection.length
+ this.cmdStatus.execing = this.selection.length
this.cmdStatus.fail = 0
this.cmdStatus.responses = []
- selection.forEach(item => {
+ this.selection.forEach(item => {
const data = {
username: this.cmdData.username,
password: this.cmdData.password,
diff --git a/ui/vite.config.js b/ui/vite.config.js
index a67122f..5d956e5 100644
--- a/ui/vite.config.js
+++ b/ui/vite.config.js
@@ -33,9 +33,6 @@ export default defineConfig({
'/alive': {
target: 'http://127.0.0.1:5913'
},
- '/delete': {
- target: 'http://127.0.0.1:5913'
- },
'^/cmd/.*': {
target: 'http://127.0.0.1:5913'
},