119 lines
2.9 KiB
Go
119 lines
2.9 KiB
Go
|
package main
|
||
|
|
||
|
import (
|
||
|
"fmt"
|
||
|
"log"
|
||
|
"os"
|
||
|
"os/signal"
|
||
|
"runtime"
|
||
|
"srnd"
|
||
|
"strings"
|
||
|
"syscall"
|
||
|
)
|
||
|
|
||
|
func main() {
|
||
|
|
||
|
daemon := new(srnd.NNTPDaemon)
|
||
|
if len(os.Args) > 1 {
|
||
|
action := os.Args[1]
|
||
|
if action == "setup" {
|
||
|
log.Println("Setting up SRNd base...")
|
||
|
daemon.Setup()
|
||
|
log.Println("Setup Done")
|
||
|
} else if action == "run" {
|
||
|
log.Printf("Starting up %s...", srnd.Version())
|
||
|
daemon.Setup()
|
||
|
c := make(chan os.Signal, 1)
|
||
|
signal.Notify(c, os.Interrupt)
|
||
|
signal.Notify(c, syscall.SIGTERM, syscall.SIGHUP)
|
||
|
go func() {
|
||
|
for {
|
||
|
sig := <-c
|
||
|
if sig != syscall.SIGHUP {
|
||
|
break
|
||
|
}
|
||
|
srnd.ReloadTemplates()
|
||
|
daemon.Reload()
|
||
|
}
|
||
|
log.Println("Shutting down...")
|
||
|
daemon.End()
|
||
|
os.Exit(0)
|
||
|
}()
|
||
|
daemon.Run()
|
||
|
} else if action == "tool" {
|
||
|
if len(os.Args) > 2 {
|
||
|
tool := os.Args[2]
|
||
|
if tool == "mod" {
|
||
|
if len(os.Args) >= 5 {
|
||
|
action := os.Args[3]
|
||
|
if action == "add" {
|
||
|
pk := os.Args[4]
|
||
|
daemon.Setup()
|
||
|
db := daemon.GetDatabase()
|
||
|
err := db.MarkModPubkeyGlobal(pk)
|
||
|
if err != nil {
|
||
|
log.Fatal(err)
|
||
|
}
|
||
|
} else if action == "del" {
|
||
|
pk := os.Args[4]
|
||
|
daemon.Setup()
|
||
|
db := daemon.GetDatabase()
|
||
|
err := db.UnMarkModPubkeyGlobal(pk)
|
||
|
if err != nil {
|
||
|
log.Fatal(err)
|
||
|
}
|
||
|
}
|
||
|
} else {
|
||
|
fmt.Fprintf(os.Stdout, "usage: %s tool mod [add|del] pubkey\n", os.Args[0])
|
||
|
}
|
||
|
} else if tool == "rethumb" {
|
||
|
if len(os.Args) >= 4 {
|
||
|
threads := runtime.NumCPU()
|
||
|
arg := strings.ToLower(os.Args[3])
|
||
|
switch arg {
|
||
|
case "missing":
|
||
|
srnd.ThumbnailTool(threads, true)
|
||
|
return
|
||
|
case "all":
|
||
|
srnd.ThumbnailTool(threads, false)
|
||
|
return
|
||
|
}
|
||
|
}
|
||
|
fmt.Fprintf(os.Stdout, "usage: %s tool rethumb [missing|all]\n", os.Args[0])
|
||
|
} else if tool == "keygen" {
|
||
|
srnd.KeygenTool()
|
||
|
} else if tool == "nntp" {
|
||
|
if len(os.Args) >= 5 {
|
||
|
action := os.Args[3]
|
||
|
if action == "del-login" {
|
||
|
daemon.Setup()
|
||
|
daemon.DelNNTPLogin(os.Args[4])
|
||
|
} else if action == "add-login" {
|
||
|
if len(os.Args) == 6 {
|
||
|
username := os.Args[4]
|
||
|
passwd := os.Args[5]
|
||
|
daemon.Setup()
|
||
|
daemon.AddNNTPLogin(username, passwd)
|
||
|
} else {
|
||
|
fmt.Fprintf(os.Stdout, "Usage: %s tool nntp add-login username password\n", os.Args[0])
|
||
|
}
|
||
|
} else {
|
||
|
fmt.Fprintf(os.Stdout, "Usage: %s tool nntp [add-login|del-login]\n", os.Args[0])
|
||
|
}
|
||
|
} else {
|
||
|
fmt.Fprintf(os.Stdout, "Usage: %s tool nntp [add-login|del-login]\n", os.Args[0])
|
||
|
}
|
||
|
} else {
|
||
|
fmt.Fprintf(os.Stdout, "Usage: %s tool [rethumb|keygen|nntp|mod]\n", os.Args[0])
|
||
|
}
|
||
|
} else {
|
||
|
fmt.Fprintf(os.Stdout, "Usage: %s tool [rethumb|keygen|nntp|mod]\n", os.Args[0])
|
||
|
}
|
||
|
} else {
|
||
|
log.Println("Invalid action:", action)
|
||
|
}
|
||
|
} else {
|
||
|
fmt.Fprintf(os.Stdout, "Usage: %s [setup|run|tool]\n", os.Args[0])
|
||
|
}
|
||
|
}
|