@@ -3,6 +3,8 @@ package main
33import (
44 "bytes"
55 "context"
6+ "crypto/rand"
7+ "encoding/hex"
68 "flag"
79 "fmt"
810 "io"
@@ -37,6 +39,7 @@ var args struct {
3739 addr string
3840 localdomain string
3941 logLv string
42+ hubID string
4043}
4144
4245var VERSION = "dev"
@@ -48,6 +51,7 @@ func init() {
4851 f .StringVar (& args .hello , "hello" , "webdav://{{.host}}.lo.shynome.com:4349{{.path}}" , "" )
4952 f .StringVar (& args .localdomain , "localdomain" , ".lo.shynome.com" , "" )
5053 f .StringVar (& args .logLv , "log" , defaultLogLv , "日志输出等级: 0 - 不输出; 1 - Error; 11 - Info; 111 - Debug" )
54+ f .StringVar (& args .hubID , "hub-id" , "" , "是否其用hub-id, 避免服务器上的文件被探测. 0 关闭" )
5155}
5256
5357var tracer = otel .Tracer ("lcode-hub" )
@@ -67,6 +71,24 @@ func main() {
6771 To (os .MkdirAll (lcodeDir , os .ModePerm ))
6872 db := To1 (xorm .NewEngine ("sqlite" , filepath .Join (lcodeDir , "lcode.db" )))
6973 To (hub .Sync (db ))
74+ To (db .Sync2 (new (Config )))
75+
76+ if args .hubID != "0" {
77+ nf := flag .NewFlagSet ("locde-hub@id-get" , flag .ContinueOnError )
78+ nf .SetOutput (& bytes.Buffer {})
79+ if len (args .hubID ) == 0 {
80+ v := To1 (getConfig (db , "hub-id" , func () string {
81+ b := make ([]byte , 3 )
82+ rand .Read (b )
83+ s := hex .EncodeToString (b )
84+ return s
85+ }))
86+ args .hubID = v
87+ }
88+ nf .StringVar (& args .hello , "hello" , fmt .Sprintf ("webdav://{{.host}}-%s.lo.shynome.com:4349{{.path}}" , args .hubID ), "" )
89+ nf .StringVar (& args .localdomain , "localdomain" , fmt .Sprintf ("-%s.lo.shynome.com" , args .hubID ), "" )
90+ nf .Parse (os .Args [1 :])
91+ }
7092
7193 l := To1 (net .Listen ("tcp" , args .addr ))
7294 defer l .Close ()
0 commit comments