diff --git a/db/Database.cpp b/db/Database.cpp index aae9256..30cee93 100644 --- a/db/Database.cpp +++ b/db/Database.cpp @@ -18,7 +18,12 @@ namespace NekoRay { void ProfileManager::LoadManager() { for (auto id: _profiles) { - profiles[id] = LoadProxyEntity(QString("profiles/%1.json").arg(id)); + auto ent = LoadProxyEntity(QString("profiles/%1.json").arg(id)); + if (ent->bean->version == -114514) { // clear invaild profile + DeleteProfile(id); + continue; + } + profiles[id] = ent; } for (auto id: _groups) { groups[id] = LoadGroup(QString("groups/%1.json").arg(id)); @@ -49,13 +54,8 @@ namespace NekoRay { ent->load_control_force = true; ent->fn = jsonPath; ent->Load(); - return ent; - } else { - // 返回一个假的? - ent = NewProxyEntity("socks"); - ent->bean->name = "[Load Error]"; - return ent; } + return ent; } // 新建的不给 fn 和 id diff --git a/go/cmd/nekobox_core/box_main/cmd_run.go b/go/cmd/nekobox_core/box_main/cmd_run.go index d26d175..60bc7b2 100644 --- a/go/cmd/nekobox_core/box_main/cmd_run.go +++ b/go/cmd/nekobox_core/box_main/cmd_run.go @@ -79,6 +79,19 @@ func Create(nekoConfigContent []byte, forceDisableColor bool) (*box.Box, context cancel() return nil, nil, E.Cause(err, "create service") } + osSignals := make(chan os.Signal, 1) + signal.Notify(osSignals, os.Interrupt, syscall.SIGTERM, syscall.SIGHUP) + defer func() { + signal.Stop(osSignals) + close(osSignals) + }() + + go func() { + _, loaded := <-osSignals + if loaded { + cancel() + } + }() err = instance.Start() if err != nil { cancel() @@ -90,6 +103,7 @@ func Create(nekoConfigContent []byte, forceDisableColor bool) (*box.Box, context func run() error { osSignals := make(chan os.Signal, 1) signal.Notify(osSignals, os.Interrupt, syscall.SIGTERM, syscall.SIGHUP) + defer signal.Stop(osSignals) for { instance, cancel, err := Create(nil, false) if err != nil { diff --git a/go/cmd/nekobox_core/go.mod b/go/cmd/nekobox_core/go.mod index 50d88d4..64f82f3 100644 --- a/go/cmd/nekobox_core/go.mod +++ b/go/cmd/nekobox_core/go.mod @@ -6,7 +6,7 @@ require ( github.com/dustin/go-humanize v1.0.0 github.com/gofrs/uuid v4.3.1+incompatible github.com/sagernet/sing v0.0.0-20221008120626-60a9910eefe4 - github.com/sagernet/sing-box v1.0.2-0.20221121132044-ffd54eef6c71 + github.com/sagernet/sing-box v1.0.2-0.20221125145930-05ed88aba88b github.com/sagernet/sing-dns v0.0.0-20221113031420-c6aaf2ea4b10 github.com/sagernet/sing-tun v0.0.0-20221104121441-66c48a57776f github.com/spf13/cobra v1.6.1 @@ -49,7 +49,7 @@ require ( github.com/sagernet/go-tun2socks v1.16.12-0.20220818015926-16cb67876a61 // indirect github.com/sagernet/netlink v0.0.0-20220905062125-8043b4a9aa97 // indirect github.com/sagernet/quic-go v0.0.0-20221108053023-645bcc4f9b15 // indirect - github.com/sagernet/sing-shadowsocks v0.0.0-20220819002358-7461bb09a8f6 // indirect + github.com/sagernet/sing-shadowsocks v0.0.0-20221115140728-028358027bfa // indirect github.com/sagernet/sing-vmess v0.0.0-20221109021549-b446d5bdddf0 // indirect github.com/sagernet/smux v0.0.0-20220831015742-e0f1988e3195 // indirect github.com/sagernet/websocket v0.0.0-20220913015213-615516348b4e // indirect diff --git a/go/cmd/nekobox_core/go.sum b/go/cmd/nekobox_core/go.sum index 3424b72..9b11dee 100644 --- a/go/cmd/nekobox_core/go.sum +++ b/go/cmd/nekobox_core/go.sum @@ -146,12 +146,12 @@ github.com/sagernet/sing v0.0.0-20220812082120-05f9836bff8f/go.mod h1:QVsS5L/ZA2 github.com/sagernet/sing v0.0.0-20220817130738-ce854cda8522/go.mod h1:QVsS5L/ZA2Q5UhQwLrn0Trw+msNd/NPGEhBKR/ioWiY= github.com/sagernet/sing v0.0.0-20221008120626-60a9910eefe4 h1:LO7xMvMGhYmjQg2vjhTzsODyzs9/WLYu5Per+/8jIeo= github.com/sagernet/sing v0.0.0-20221008120626-60a9910eefe4/go.mod h1:zvgDYKI+vCAW9RyfyrKTgleI+DOa8lzHMPC7VZo3OL4= -github.com/sagernet/sing-box v1.0.2-0.20221121132044-ffd54eef6c71 h1:A8659oZ4CvbfeCkpA+H1+6pgjCbFbW8IxzVDPX/qIyg= -github.com/sagernet/sing-box v1.0.2-0.20221121132044-ffd54eef6c71/go.mod h1:k8mC06PczRyc8WqpBuMNgnT/xLr3s6xm6Zi47kh1Xl4= +github.com/sagernet/sing-box v1.0.2-0.20221125145930-05ed88aba88b h1:PUjtAyC2TpV/nOwr08AGQ9Y0eMWhob+MBV5lc51TxiU= +github.com/sagernet/sing-box v1.0.2-0.20221125145930-05ed88aba88b/go.mod h1:vpQv1/Y0cK/XyqIJLqvENWr1s3jewYEfTA/Aaykf7oc= github.com/sagernet/sing-dns v0.0.0-20221113031420-c6aaf2ea4b10 h1:K84AY2TxNX37ePYXVO6QTD/kgn9kDo4oGpTIn9PF5bo= github.com/sagernet/sing-dns v0.0.0-20221113031420-c6aaf2ea4b10/go.mod h1:VAvOT1pyryBIthTGRryFLXAsR1VRQZ05wolMYeQrr/E= -github.com/sagernet/sing-shadowsocks v0.0.0-20220819002358-7461bb09a8f6 h1:JJfDeYYhWunvtxsU/mOVNTmFQmnzGx9dY034qG6G3g4= -github.com/sagernet/sing-shadowsocks v0.0.0-20220819002358-7461bb09a8f6/go.mod h1:EX3RbZvrwAkPI2nuGa78T2iQXmrkT+/VQtskjou42xM= +github.com/sagernet/sing-shadowsocks v0.0.0-20221115140728-028358027bfa h1:L8x5xAykEs9jcEYVLDAOYSkERLfKOkU8TCKlWBOF91c= +github.com/sagernet/sing-shadowsocks v0.0.0-20221115140728-028358027bfa/go.mod h1:16sNARQbsFbYIzAuPySszQA6Wfgzk7GWSzh1a6kDrUU= github.com/sagernet/sing-tun v0.0.0-20221104121441-66c48a57776f h1:CXF+nErOb9f7qiHingSgTa2/lJAgmEFtAQ47oVwdRGU= github.com/sagernet/sing-tun v0.0.0-20221104121441-66c48a57776f/go.mod h1:1u3pjXA9HmH7kRiBJqM3C/zPxrxnCLd3svmqtub/RFU= github.com/sagernet/sing-vmess v0.0.0-20221109021549-b446d5bdddf0 h1:z3kuD3hPNdEq7/wVy5lwE21f+8ZTazBtR81qswxJoCc= diff --git a/rpc/gRPC.cpp b/rpc/gRPC.cpp index fba1829..4020946 100644 --- a/rpc/gRPC.cpp +++ b/rpc/gRPC.cpp @@ -83,9 +83,7 @@ namespace QtGrpc { return networkReply->readAll().mid(GrpcMessageSizeHeaderSize); } - QNetworkReply::NetworkError - call(const QString &method, const QString &service, const QByteArray &args, QByteArray &qByteArray, - int timeout_ms) { + QNetworkReply::NetworkError call(const QString &method, const QString &service, const QByteArray &args, QByteArray &qByteArray, int timeout_ms) { QNetworkReply *networkReply = post(method, service, args); QTimer *abortTimer = nullptr;