Update init.go and main.go

This commit is contained in:
vysion 2022-03-30 12:13:35 -07:00
parent 0cc42f57e6
commit dc4a0e7421
2 changed files with 28 additions and 38 deletions

28
init.go
View File

@ -2,14 +2,15 @@ package main
import ( import (
"context" "context"
"fmt"
"github.com/go-redis/redis/v8" "github.com/go-redis/redis/v8"
"github.com/spf13/viper" "github.com/spf13/viper"
"github.com/vysiondev/tytanium/constants"
"github.com/vysiondev/tytanium/global"
"github.com/vysiondev/tytanium/logger"
"log" "log"
"os" "os"
"time" "time"
"tytanium/constants"
"tytanium/global"
"tytanium/logger"
) )
const ( const (
@ -18,7 +19,7 @@ const (
) )
func init() { func init() {
log.Print("⬢ Tytanium secure file host server v" + constants.Version + "\n\n") fmt.Printf("[ ⬢ Tytanium v%s ]\n", constants.Version)
initConfiguration() initConfiguration()
initLogger() initLogger()
checkStorage() checkStorage()
@ -61,10 +62,21 @@ func initConfiguration() {
viper.SetDefault("Logging.Enabled", true) viper.SetDefault("Logging.Enabled", true)
viper.SetDefault("Logging.LogFile", "log.txt") viper.SetDefault("Logging.LogFile", "log.txt")
viper.SetDefault("Encryption.EncryptionKeyLength", 12)
err := viper.Unmarshal(&global.Configuration) err := viper.Unmarshal(&global.Configuration)
if err != nil { if err != nil {
log.Fatalf("Unable to decode into struct, %v", err) log.Fatalf("Unable to decode into struct, %v", err)
} }
if len(global.Configuration.Domain) == 0 {
log.Fatalf("Domain must be set in the configuration.")
}
if len(global.Configuration.Encryption.Nonce) == 0 {
log.Fatalf("You must set a nonce for encryption purposes. (Under Encryption.Nonce, use any string you want. It does not need to be secret.)")
}
if len(global.Configuration.Security.MasterKey) == 0 { if len(global.Configuration.Security.MasterKey) == 0 {
log.Println("Warning: Master key has not set in your configuration. Anyone on the Internet has permission to upload!") log.Println("Warning: Master key has not set in your configuration. Anyone on the Internet has permission to upload!")
if !global.Configuration.Security.DisableEmptyMasterKeyWarning { if !global.Configuration.Security.DisableEmptyMasterKeyWarning {
@ -73,11 +85,13 @@ func initConfiguration() {
} }
} }
// TODO: what the fuck is this clean it up
// - ID length * 4 bytes, // - ID length * 4 bytes,
// - extension length limit * 4 bytes, // - extension length limit * 4 bytes,
// - 1 byte for the / character, // - 1 byte for the / character,
// - 4 bytes for the . character // - 4 bytes for the . character
constants.PathLengthLimitBytes = (global.Configuration.Storage.IDLength * 4) + (constants.ExtensionLengthLimit * 4) + 5 // - X bytes for encryption key
constants.PathLengthLimitBytes = (global.Configuration.Storage.IDLength * 4) + (constants.ExtensionLengthLimit * 4) + 5 + global.Configuration.Encryption.EncryptionKeyLength
log.Println("[init] Loaded configuration") log.Println("[init] Loaded configuration")
} }
@ -91,8 +105,8 @@ func initLogger() {
log.Fatalf("Failed to open log file! %v", err) log.Fatalf("Failed to open log file! %v", err)
} }
logger.InfoLogger = log.New(file, "info:", log.Ldate|log.Ltime|log.Lshortfile) logger.InfoLogger = log.New(file, "info:", log.Ldate|log.Ltime|log.LUTC|log.Lshortfile)
logger.ErrorLogger = log.New(file, "error:", log.Ldate|log.Ltime|log.Lshortfile) logger.ErrorLogger = log.New(file, "error:", log.Ldate|log.Ltime|log.LUTC|log.Lshortfile)
log.Println("[init] Loggers initialized, output file: " + global.Configuration.Logging.LogFile) log.Println("[init] Loggers initialized, output file: " + global.Configuration.Logging.LogFile)
} }

38
main.go
View File

@ -1,19 +1,17 @@
package main package main
import ( import (
"context"
_ "embed" _ "embed"
"github.com/valyala/fasthttp" "github.com/valyala/fasthttp"
"github.com/vysiondev/tytanium/constants"
"github.com/vysiondev/tytanium/global"
"github.com/vysiondev/tytanium/logger"
"github.com/vysiondev/tytanium/middleware"
"log" "log"
"os" "os"
"os/signal" "os/signal"
"runtime"
"strconv" "strconv"
"time" "time"
"tytanium/constants"
"tytanium/global"
"tytanium/logger"
"tytanium/middleware"
) )
func main() { func main() {
@ -45,7 +43,7 @@ func main() {
log.Println("Server is listening for new requests on port " + portAsString) log.Println("Server is listening for new requests on port " + portAsString)
if global.Configuration.Logging.Enabled { if global.Configuration.Logging.Enabled {
logger.InfoLogger.Println("Server online, port " + portAsString) logger.InfoLogger.Printf("Server online, port %s, version %s", portAsString, constants.Version)
} }
stop := make(chan os.Signal) stop := make(chan os.Signal)
@ -57,30 +55,8 @@ func main() {
} }
}() }()
if global.Configuration.MoreStats {
// collect stats every n seconds
go func() {
for {
var m runtime.MemStats
runtime.ReadMemStats(&m)
ctx, cancel := context.WithTimeout(context.Background(), 5*time.Second)
e := global.RedisClient.Set(ctx, "ty_mem_usage", m.Alloc, 0).Err()
if e != nil {
log.Printf("Failed to write metrics! %v", e)
if global.Configuration.Logging.Enabled {
logger.ErrorLogger.Printf("Metrics failed to update: %v", e)
}
}
cancel()
time.Sleep(time.Millisecond * time.Duration(global.Configuration.StatsCollectionInterval))
}
}()
}
<-stop <-stop
log.Println("Shutting down, please wait") log.Println("Server is shutting down, please wait")
logger.InfoLogger.Println("Server started graceful shutdown") logger.InfoLogger.Println("Server started graceful shutdown")
if err := s.Shutdown(); err != nil { if err := s.Shutdown(); err != nil {
@ -88,7 +64,7 @@ func main() {
log.Fatalf("Failed to shutdown gracefully: %v\n", err) log.Fatalf("Failed to shutdown gracefully: %v\n", err)
} }
log.Println("Shut down") log.Println("Shut down. See you next time!")
logger.InfoLogger.Println("Server shut down successfully") logger.InfoLogger.Println("Server shut down successfully")
os.Exit(0) os.Exit(0)
} }