Archived
1
0
This repository has been archived on 2023-08-12. You can view files and clone it, but cannot push or open issues or pull requests.
Jeff Becker 3a6cbf9de6 move srndv2 to nntpchan repo with vendored deps so that nothing breaks every again
this deprecates the github.com/majestrate/srndv2 repo
2017-04-03 10:00:38 -04:00

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])
}
}