mirror of
https://github.com/Ernous/TorrServerJellyfin.git
synced 2025-12-19 13:36:09 +05:00
add shutdown
This commit is contained in:
@@ -14,11 +14,11 @@ import (
|
||||
)
|
||||
|
||||
type args struct {
|
||||
Port string `arg:"-p" help:"web server port"`
|
||||
Path string `arg:"-d" help:"database path"`
|
||||
Add string `arg:"-a" help:"add torrent link and exit"`
|
||||
RDB bool `arg:"-r" help:"start in read-only DB mode"`
|
||||
Kill bool `arg:"-k" help:"dont kill program on signal"`
|
||||
Port string `arg:"-p" help:"web server port"`
|
||||
Path string `arg:"-d" help:"database path"`
|
||||
Add string `arg:"-a" help:"add torrent link and exit"`
|
||||
RDB bool `arg:"-r" help:"start in read-only DB mode"`
|
||||
DontKill bool `arg:"-k" help:"dont kill program on signal"`
|
||||
}
|
||||
|
||||
func (args) Version() string {
|
||||
@@ -42,7 +42,7 @@ func main() {
|
||||
add()
|
||||
}
|
||||
|
||||
Preconfig(params.Kill)
|
||||
Preconfig(params.DontKill)
|
||||
|
||||
server.Start(params.Path, params.Port, params.RDB)
|
||||
fmt.Println(server.WaitServer())
|
||||
|
||||
@@ -3,47 +3,47 @@
|
||||
package main
|
||||
|
||||
import (
|
||||
"context"
|
||||
"fmt"
|
||||
"net"
|
||||
"os"
|
||||
"os/signal"
|
||||
"syscall"
|
||||
)
|
||||
|
||||
func Preconfig(kill bool) {
|
||||
sigc := make(chan os.Signal, 1)
|
||||
signal.Notify(sigc,
|
||||
syscall.SIGHUP,
|
||||
syscall.SIGINT,
|
||||
syscall.SIGSTOP,
|
||||
syscall.SIGPIPE,
|
||||
syscall.SIGTERM,
|
||||
syscall.SIGQUIT)
|
||||
go func() {
|
||||
for s := range sigc {
|
||||
if kill {
|
||||
fmt.Println("Signal catched:", s)
|
||||
fmt.Println("For stop server, close in web")
|
||||
func Preconfig(dkill bool) {
|
||||
if dkill {
|
||||
sigc := make(chan os.Signal, 1)
|
||||
signal.Notify(sigc,
|
||||
syscall.SIGHUP,
|
||||
syscall.SIGINT,
|
||||
syscall.SIGSTOP,
|
||||
syscall.SIGPIPE,
|
||||
syscall.SIGTERM,
|
||||
syscall.SIGQUIT)
|
||||
go func() {
|
||||
for s := range sigc {
|
||||
if dkill {
|
||||
fmt.Println("Signal catched:", s)
|
||||
fmt.Println("For stop server, close in api")
|
||||
}
|
||||
}
|
||||
}
|
||||
}()
|
||||
|
||||
//dns resover
|
||||
addrs, err := net.LookupHost("www.themoviedb.org")
|
||||
if len(addrs) == 0 {
|
||||
fmt.Println("Check dns", addrs, err)
|
||||
|
||||
fn := func(ctx context.Context, network, address string) (net.Conn, error) {
|
||||
d := net.Dialer{}
|
||||
return d.DialContext(ctx, "udp", "1.1.1.1:53")
|
||||
}
|
||||
|
||||
net.DefaultResolver = &net.Resolver{
|
||||
Dial: fn,
|
||||
}
|
||||
|
||||
addrs, err = net.LookupHost("www.themoviedb.org")
|
||||
fmt.Println("Check new dns", addrs, err)
|
||||
}()
|
||||
}
|
||||
//
|
||||
// //dns resover
|
||||
// addrs, err := net.LookupHost("www.themoviedb.org")
|
||||
// if len(addrs) == 0 {
|
||||
// fmt.Println("Check dns", addrs, err)
|
||||
//
|
||||
// fn := func(ctx context.Context, network, address string) (net.Conn, error) {
|
||||
// d := net.Dialer{}
|
||||
// return d.DialContext(ctx, "udp", "1.1.1.1:53")
|
||||
// }
|
||||
//
|
||||
// net.DefaultResolver = &net.Resolver{
|
||||
// Dial: fn,
|
||||
// }
|
||||
//
|
||||
// addrs, err = net.LookupHost("www.themoviedb.org")
|
||||
// fmt.Println("Check new dns", addrs, err)
|
||||
// }
|
||||
}
|
||||
|
||||
@@ -14,3 +14,10 @@ func InitSets(path string, readOnly bool) {
|
||||
func CloseDB() {
|
||||
tdb.CloseDB()
|
||||
}
|
||||
|
||||
func IsReadOnly() bool {
|
||||
if tdb == nil || tdb.ReadOnly {
|
||||
return true
|
||||
}
|
||||
return false
|
||||
}
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
package torr
|
||||
|
||||
import (
|
||||
"os"
|
||||
"sort"
|
||||
|
||||
"server/log"
|
||||
@@ -104,3 +105,9 @@ func SetSettings(set *sets.BTSets) {
|
||||
sets.SetBTSets(set)
|
||||
bts.Connect()
|
||||
}
|
||||
|
||||
func Shutdown() {
|
||||
bts.Disconnect()
|
||||
sets.CloseDB()
|
||||
os.Exit(0)
|
||||
}
|
||||
|
||||
@@ -1,7 +1,12 @@
|
||||
package api
|
||||
|
||||
import (
|
||||
"net/http"
|
||||
"time"
|
||||
|
||||
"github.com/gin-gonic/gin"
|
||||
sets "server/settings"
|
||||
"server/torr"
|
||||
"server/version"
|
||||
)
|
||||
|
||||
@@ -11,6 +16,7 @@ type requestI struct {
|
||||
|
||||
func SetupRoute(route *gin.Engine) {
|
||||
route.GET("/echo", echo)
|
||||
route.GET("/shutdown", shutdown)
|
||||
|
||||
route.POST("/settings", settings)
|
||||
|
||||
@@ -29,3 +35,15 @@ func SetupRoute(route *gin.Engine) {
|
||||
func echo(c *gin.Context) {
|
||||
c.String(200, "%v", version.Version)
|
||||
}
|
||||
|
||||
func shutdown(c *gin.Context) {
|
||||
if sets.IsReadOnly() {
|
||||
c.Status(http.StatusForbidden)
|
||||
return
|
||||
}
|
||||
c.Status(200)
|
||||
go func() {
|
||||
time.Sleep(1000)
|
||||
torr.Shutdown()
|
||||
}()
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user