working commit

This commit is contained in:
2026-02-13 13:25:16 +02:00
parent c2d231c844
commit 930df60877
11 changed files with 343 additions and 37 deletions
+71 -12
View File
@@ -11,20 +11,26 @@
package server
import (
"context"
"io/ioutil"
"os"
"os/signal"
"os/user"
"path/filepath"
"strconv"
"syscall"
"time"
"mstore/app/config"
"mstore/app/descr"
"mstore/app/handler"
"mstore/app/logger"
"mstore/app/maindb"
"mstore/app/operator"
"mstore/app/service"
"mstore/app/storage"
"sigs.k8s.io/yaml"
)
type Server struct {
@@ -35,6 +41,7 @@ type Server struct {
hand *handler.Handler
logg *logger.Logger
stor *storage.Storage
stat descr.Server
}
func NewServer() (*Server, error) {
@@ -95,50 +102,102 @@ func (srv *Server) Configure() error {
func (srv *Server) Build() error {
var err error
srv.logg.Infof("Server build")
srv.logg.Infof("Server building")
confDump := srv.conf.String()
srv.logg.Infof("Current server configuration is:\n%s\n", confDump)
if srv.conf.AsDaemon {
logdir := filepath.Dir(srv.conf.Logpath)
srv.logg.Infof("Create log directory %s", logdir)
srv.logg.Infof("Creating log directory %s", logdir)
err = os.MkdirAll(logdir, 0750)
if err != nil {
return err
}
rundir := filepath.Dir(srv.conf.Runpath)
srv.logg.Infof("Create run directory %s", rundir)
srv.logg.Infof("Creating run directory %s", rundir)
err = os.MkdirAll(rundir, 0750)
if err != nil {
return err
}
}
// Creating datadir
datadir := srv.conf.Datadir
srv.logg.Infof("Creating data directory %s ", datadir)
err = os.MkdirAll(datadir, 0750)
if err != nil {
return err
}
// Read state file
statefilePath := filepath.Join(srv.conf.Datadir, "server.yaml")
stateData, err := ioutil.ReadFile(statefilePath)
if err != nil {
err = yaml.Unmarshal(stateData, &srv.stat)
if err != nil {
return err
}
}
// Creating database
dbdir := srv.conf.Database.Basepath
srv.logg.Infof("Create database directory %s ", dbdir)
srv.logg.Infof("Creating database directory %s ", dbdir)
err = os.MkdirAll(dbdir, 0750)
if err != nil {
return err
}
mdb := maindb.NewDatabase(dbdir)
srv.logg.Infof("Open main database")
srv.logg.Infof("Opening main database")
err = mdb.OpenDatabase()
if err != nil {
return err
}
srv.logg.Infof("Initialize main database")
err = mdb.InitDatabase()
if err != nil {
return err
}
srv.mdb = mdb
ctx, _ := context.WithTimeout(context.Background(), 5*time.Second)
// Created db scheme
if !srv.stat.SchemeCreated {
srv.logg.Infof("Initialize main database")
err = mdb.InitDatabase()
if err != nil {
return err
}
srv.stat.SchemeCreated = true
}
// Created anonymous user
if !srv.stat.AnonymousCreated {
srv.logg.Infof("Creating anonimous user")
err = mdb.WriteAnonymous(ctx)
if err != nil {
return err
}
srv.stat.AnonymousCreated = true
}
if !srv.stat.InituserCreated {
srv.logg.Infof("Creating init user")
err = srv.mdb.WriteAnonymous(ctx)
if err != nil {
return err
}
srv.stat.InituserCreated = true
}
// Write status file
stateData, err = yaml.Marshal(srv.stat)
if err != nil {
return err
}
err = ioutil.WriteFile(statefilePath, stateData, 0640)
if err != nil {
return err
}
// Creating storage
srv.logg.Infof("Create storage directory")
datadir := srv.conf.Database.Basepath
srv.logg.Infof("Creating storage directory")
datadir = srv.conf.Database.Basepath
err = os.MkdirAll(datadir, 0750)
if err != nil {
return err