Clean up unused code and better shutdown in main
All checks were successful
/ docker (push) Successful in 4m4s
All checks were successful
/ docker (push) Successful in 4m4s
This commit is contained in:
parent
b01f60d273
commit
6cc699cbbd
61 changed files with 36 additions and 5559 deletions
103
main.go
103
main.go
|
@ -5,24 +5,22 @@ import (
|
|||
"embed"
|
||||
"flag"
|
||||
"fmt"
|
||||
"net/http"
|
||||
"os"
|
||||
"os/signal"
|
||||
"path"
|
||||
"time"
|
||||
"sync"
|
||||
|
||||
"git.mstar.dev/mstar/goutils/other"
|
||||
"github.com/go-webauthn/webauthn/webauthn"
|
||||
"github.com/mstarongithub/passkey"
|
||||
"github.com/rs/zerolog/log"
|
||||
"gopkg.in/natefinch/lumberjack.v2"
|
||||
"gorm.io/driver/postgres"
|
||||
"gorm.io/gorm"
|
||||
|
||||
"git.mstar.dev/mstar/linstrom/config"
|
||||
"git.mstar.dev/mstar/linstrom/server"
|
||||
"git.mstar.dev/mstar/linstrom/shared"
|
||||
"git.mstar.dev/mstar/linstrom/storage"
|
||||
storagenew "git.mstar.dev/mstar/linstrom/storage-new"
|
||||
"git.mstar.dev/mstar/linstrom/storage-new/dbgen"
|
||||
"git.mstar.dev/mstar/linstrom/storage/cache"
|
||||
webdebug "git.mstar.dev/mstar/linstrom/web/debug"
|
||||
webpublic "git.mstar.dev/mstar/linstrom/web/public"
|
||||
)
|
||||
|
@ -43,6 +41,8 @@ var defaultDuck string
|
|||
var duckFS embed.FS
|
||||
|
||||
func main() {
|
||||
_ = reactiveFS
|
||||
_ = nojsFS
|
||||
other.SetupFlags()
|
||||
flag.Parse()
|
||||
logfile := getLogFilePathOrNil()
|
||||
|
@ -71,13 +71,7 @@ func main() {
|
|||
if *shared.FlagConfigOnly {
|
||||
return
|
||||
}
|
||||
if *shared.FlagStartNew {
|
||||
log.Info().Msg("Starting new system")
|
||||
newServer()
|
||||
} else {
|
||||
log.Info().Msg("Starting old system")
|
||||
oldServer()
|
||||
}
|
||||
newServer()
|
||||
}
|
||||
|
||||
func getLogFilePathOrNil() *string {
|
||||
|
@ -90,57 +84,8 @@ func getLogFilePathOrNil() *string {
|
|||
}
|
||||
}
|
||||
|
||||
func oldServer() {
|
||||
storageCache, err := cache.NewCache(
|
||||
config.GlobalConfig.Storage.MaxInMemoryCacheSize,
|
||||
config.GlobalConfig.Storage.RedisUrl,
|
||||
)
|
||||
if err != nil {
|
||||
log.Fatal().Err(err).Msg("Failed to start cache")
|
||||
}
|
||||
|
||||
// var store *storage.Storage
|
||||
// if config.GlobalConfig.Storage.DbIsPostgres != nil && *config.GlobalConfig.Storage.DbIsPostgres {
|
||||
// store, err = storage.NewStoragePostgres(config.GlobalConfig.Storage.DatabaseUrl, storageCache)
|
||||
// } else {
|
||||
// store, err = storage.NewStorageSqlite(config.GlobalConfig.Storage.DatabaseUrl, storageCache)
|
||||
// }
|
||||
//
|
||||
store, err := storage.NewStorage(config.GlobalConfig.Storage.BuildPostgresDSN(), storageCache)
|
||||
|
||||
if err != nil {
|
||||
log.Fatal().Err(err).Msg("Failed to setup storage")
|
||||
}
|
||||
|
||||
pkey, err := passkey.New(passkey.Config{
|
||||
WebauthnConfig: &webauthn.Config{
|
||||
RPDisplayName: "Linstrom",
|
||||
RPID: "localhost",
|
||||
RPOrigins: []string{"http://localhost:8000"},
|
||||
},
|
||||
UserStore: store,
|
||||
SessionStore: store,
|
||||
SessionMaxAge: time.Hour * 24,
|
||||
}, passkey.WithLogger(&shared.ZerologWrapper{}))
|
||||
if err != nil {
|
||||
log.Fatal().Err(err).Msg("Failed to setup passkey support")
|
||||
}
|
||||
|
||||
server := server.NewServer(
|
||||
store,
|
||||
pkey,
|
||||
shared.NewFSWrapper(reactiveFS, "frontend-reactive/dist/", false),
|
||||
shared.NewFSWrapper(nojsFS, "frontend-noscript/", false),
|
||||
&defaultDuck,
|
||||
)
|
||||
server.Start(":8000")
|
||||
// TODO: Set up media server
|
||||
// TODO: Set up queues
|
||||
// TODO: Set up plugins
|
||||
}
|
||||
|
||||
func newServer() {
|
||||
log.Info().Msg("Connectin to db")
|
||||
log.Info().Msg("Connecting to db")
|
||||
db, err := gorm.Open(
|
||||
postgres.Open(config.GlobalConfig.Storage.BuildPostgresDSN()),
|
||||
&gorm.Config{
|
||||
|
@ -163,21 +108,45 @@ func newServer() {
|
|||
if err = storagenew.InsertUnknownActorPlaceholder(); err != nil {
|
||||
log.Fatal().Err(err).Msg("Failed to insert self properly")
|
||||
}
|
||||
debugShutdownChan := make(chan *sync.WaitGroup, 1)
|
||||
interuptChan := make(chan os.Signal, 1)
|
||||
signal.Notify(interuptChan, os.Interrupt)
|
||||
if *shared.FlagStartDebugServer {
|
||||
go func() {
|
||||
log.Info().Msg("Starting debug server")
|
||||
if err = webdebug.New(*shared.FlagDebugPort).Start(); err != nil {
|
||||
s := webdebug.New(*shared.FlagDebugPort)
|
||||
go func() {
|
||||
wg := <-debugShutdownChan
|
||||
if err := s.Stop(); err != nil {
|
||||
log.Fatal().Err(err).Msg("Failed to cleanly stop debug server")
|
||||
}
|
||||
log.Info().Msg("Debug server stopped")
|
||||
wg.Done()
|
||||
}()
|
||||
if err = s.Start(); err != nil && err != http.ErrServerClosed {
|
||||
log.Fatal().Err(err).Msg("Debug server failed")
|
||||
}
|
||||
}()
|
||||
}
|
||||
log.Info().Msg("Starting public server")
|
||||
public := webpublic.New(
|
||||
fmt.Sprintf(":%v", config.GlobalConfig.General.PrivatePort),
|
||||
&defaultDuck,
|
||||
duckFS,
|
||||
)
|
||||
if err = public.Start(); err != nil {
|
||||
log.Fatal().Err(err).Msg("Failed to start public server")
|
||||
go func() {
|
||||
log.Info().Msg("Starting public server")
|
||||
if err = public.Start(); err != nil && err != http.ErrServerClosed {
|
||||
log.Fatal().Err(err).Msg("Failed to start public server")
|
||||
}
|
||||
}()
|
||||
<-interuptChan
|
||||
log.Info().Msg("Received interrupt, shutting down")
|
||||
wg := sync.WaitGroup{}
|
||||
wg.Add(1)
|
||||
debugShutdownChan <- &wg
|
||||
if err = public.Stop(); err != nil {
|
||||
log.Fatal().Err(err).Msg("Failed to stop public server")
|
||||
}
|
||||
log.Info().Msg("Public server stopped")
|
||||
wg.Wait()
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue