working commit
This commit is contained in:
+71
-12
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user