aboutsummaryrefslogtreecommitdiff
path: root/cmd/mobius-hotline-server
diff options
context:
space:
mode:
authorJeff Halter <868228+jhalter@users.noreply.github.com>2021-07-29 08:42:33 -0700
committerJeff Halter <868228+jhalter@users.noreply.github.com>2021-07-29 08:42:33 -0700
commit0c0b2680077c1103609c87a652bcc2263460b1d7 (patch)
tree9968655a20d3caec9077b49db2473cbdb344cb71 /cmd/mobius-hotline-server
parent95753255a17026750f5b53cc470999785e0c515f (diff)
Re-organize cmd paths
Diffstat (limited to 'cmd/mobius-hotline-server')
-rw-r--r--cmd/mobius-hotline-server/main.go73
-rw-r--r--cmd/mobius-hotline-server/mobius/config/Agreement.txt1
-rw-r--r--cmd/mobius-hotline-server/mobius/config/Files/hello.txt1
-rw-r--r--cmd/mobius-hotline-server/mobius/config/MessageBoard.txt1
-rw-r--r--cmd/mobius-hotline-server/mobius/config/ThreadedNews.yaml1
-rw-r--r--cmd/mobius-hotline-server/mobius/config/Users/admin.yaml12
-rw-r--r--cmd/mobius-hotline-server/mobius/config/Users/guest.yaml12
-rw-r--r--cmd/mobius-hotline-server/mobius/config/config.yaml12
8 files changed, 113 insertions, 0 deletions
diff --git a/cmd/mobius-hotline-server/main.go b/cmd/mobius-hotline-server/main.go
new file mode 100644
index 0000000..772625b
--- /dev/null
+++ b/cmd/mobius-hotline-server/main.go
@@ -0,0 +1,73 @@
+package main
+
+import (
+ "context"
+ "flag"
+ "fmt"
+ "github.com/jhalter/mobius/hotline"
+ "go.uber.org/zap"
+ "go.uber.org/zap/zapcore"
+ "os"
+)
+
+const (
+ defaultConfigPath = "/usr/local/var/mobius/config/" // matches Homebrew default config location
+ defaultPort = 5500
+)
+
+func main() {
+ ctx, cancelRoot := context.WithCancel(context.Background())
+
+ basePort := flag.Int("bind", defaultPort, "Bind address and port")
+ configDir := flag.String("config", defaultConfigPath, "Path to config root")
+ version := flag.Bool("version", false, "print version and exit")
+ logLevel := flag.String("log-level", "info", "Log level")
+ flag.Parse()
+
+ if *version {
+ fmt.Printf("v%s\n", hotline.VERSION)
+ os.Exit(0)
+ }
+
+ zapLvl, ok := zapLogLevel[*logLevel]
+ if !ok {
+ fmt.Printf("Invalid log level %s. Must be debug, info, warn, or error.\n", *logLevel)
+ os.Exit(0)
+ }
+
+ cores := []zapcore.Core{newStdoutCore(zapLvl)}
+ l := zap.New(zapcore.NewTee(cores...))
+ defer func() { _ = l.Sync() }()
+ logger := l.Sugar()
+
+ if _, err := os.Stat(*configDir); os.IsNotExist(err) {
+ logger.Fatalw("Configuration directory not found", "path", configDir)
+ }
+
+ srv, err := hotline.NewServer(*configDir, "", *basePort, logger)
+ if err != nil {
+ logger.Fatal(err)
+ }
+
+ // Serve Hotline requests until program exit
+ logger.Fatal(srv.ListenAndServe(ctx, cancelRoot))
+}
+
+func newStdoutCore(level zapcore.Level) zapcore.Core {
+ encoderCfg := zap.NewProductionEncoderConfig()
+ encoderCfg.TimeKey = "timestamp"
+ encoderCfg.EncodeTime = zapcore.ISO8601TimeEncoder
+
+ return zapcore.NewCore(
+ zapcore.NewConsoleEncoder(encoderCfg),
+ zapcore.Lock(os.Stdout),
+ level,
+ )
+}
+
+var zapLogLevel = map[string]zapcore.Level{
+ "debug": zap.DebugLevel,
+ "info": zap.InfoLevel,
+ "warn": zap.WarnLevel,
+ "error": zap.ErrorLevel,
+}
diff --git a/cmd/mobius-hotline-server/mobius/config/Agreement.txt b/cmd/mobius-hotline-server/mobius/config/Agreement.txt
new file mode 100644
index 0000000..5da4639
--- /dev/null
+++ b/cmd/mobius-hotline-server/mobius/config/Agreement.txt
@@ -0,0 +1 @@
+This is an agreement. Say you agree.
diff --git a/cmd/mobius-hotline-server/mobius/config/Files/hello.txt b/cmd/mobius-hotline-server/mobius/config/Files/hello.txt
new file mode 100644
index 0000000..271a837
--- /dev/null
+++ b/cmd/mobius-hotline-server/mobius/config/Files/hello.txt
@@ -0,0 +1 @@
+I'm a test file \ No newline at end of file
diff --git a/cmd/mobius-hotline-server/mobius/config/MessageBoard.txt b/cmd/mobius-hotline-server/mobius/config/MessageBoard.txt
new file mode 100644
index 0000000..cb36354
--- /dev/null
+++ b/cmd/mobius-hotline-server/mobius/config/MessageBoard.txt
@@ -0,0 +1 @@
+Welcome to Hotline
diff --git a/cmd/mobius-hotline-server/mobius/config/ThreadedNews.yaml b/cmd/mobius-hotline-server/mobius/config/ThreadedNews.yaml
new file mode 100644
index 0000000..59e0a68
--- /dev/null
+++ b/cmd/mobius-hotline-server/mobius/config/ThreadedNews.yaml
@@ -0,0 +1 @@
+Categories: {}
diff --git a/cmd/mobius-hotline-server/mobius/config/Users/admin.yaml b/cmd/mobius-hotline-server/mobius/config/Users/admin.yaml
new file mode 100644
index 0000000..5413735
--- /dev/null
+++ b/cmd/mobius-hotline-server/mobius/config/Users/admin.yaml
@@ -0,0 +1,12 @@
+Login: admin
+Name: admin
+Password: $2a$04$2itGEYx8C1N5bsfRSoC9JuonS3I4YfnyVPZHLSwp7kEInRX0yoB.a
+Access:
+- 255
+- 255
+- 255
+- 255
+- 255
+- 255
+- 255
+- 255
diff --git a/cmd/mobius-hotline-server/mobius/config/Users/guest.yaml b/cmd/mobius-hotline-server/mobius/config/Users/guest.yaml
new file mode 100644
index 0000000..a1e4069
--- /dev/null
+++ b/cmd/mobius-hotline-server/mobius/config/Users/guest.yaml
@@ -0,0 +1,12 @@
+Login: guest
+Name: guest
+Password: $2a$04$9P/jgLn1fR9TjSoWL.rKxuN6g.1TSpf2o6Hw.aaRuBwrWIJNwsKkS
+Access:
+- 252
+- 240
+- 205
+- 201
+- 43
+- 128
+- 0
+- 0
diff --git a/cmd/mobius-hotline-server/mobius/config/config.yaml b/cmd/mobius-hotline-server/mobius/config/config.yaml
new file mode 100644
index 0000000..5c8b202
--- /dev/null
+++ b/cmd/mobius-hotline-server/mobius/config/config.yaml
@@ -0,0 +1,12 @@
+Name: My Hotline server
+Description: A default configured Hotline server running Mobius v0.0.1
+BannerID: 0
+FileRoot: Files/
+EnableTrackerRegistration: false
+Trackers:
+- hltracker.com:5499
+NewsDelimiter: ""
+NewsDateFormat: ""
+MaxDownloads: 0
+MaxDownloadsPerClient: 0
+MaxConnectionsPerIP: 0