mirror of https://github.com/1Panel-dev/1Panel
appstorecrontabdatabasedockerdocker-composedocker-containerdocker-imagedocker-uifilemanagerlamplnmppanel
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
88 lines
2.2 KiB
88 lines
2.2 KiB
package server |
|
|
|
import ( |
|
"crypto/tls" |
|
"encoding/gob" |
|
"fmt" |
|
"net/http" |
|
"os" |
|
"path" |
|
"time" |
|
|
|
"github.com/1Panel-dev/1Panel/backend/init/app" |
|
"github.com/1Panel-dev/1Panel/backend/init/business" |
|
|
|
"github.com/1Panel-dev/1Panel/backend/cron" |
|
"github.com/1Panel-dev/1Panel/backend/init/cache" |
|
"github.com/1Panel-dev/1Panel/backend/init/session" |
|
"github.com/1Panel-dev/1Panel/backend/init/session/psession" |
|
|
|
"github.com/1Panel-dev/1Panel/backend/global" |
|
"github.com/1Panel-dev/1Panel/backend/init/db" |
|
"github.com/1Panel-dev/1Panel/backend/init/hook" |
|
"github.com/1Panel-dev/1Panel/backend/init/log" |
|
"github.com/1Panel-dev/1Panel/backend/init/migration" |
|
"github.com/1Panel-dev/1Panel/backend/init/router" |
|
"github.com/1Panel-dev/1Panel/backend/init/validator" |
|
"github.com/1Panel-dev/1Panel/backend/init/viper" |
|
|
|
"github.com/fvbock/endless" |
|
"github.com/gin-gonic/gin" |
|
) |
|
|
|
func Start() { |
|
viper.Init() |
|
log.Init() |
|
app.Init() |
|
db.Init() |
|
migration.Init() |
|
validator.Init() |
|
gob.Register(psession.SessionUser{}) |
|
cache.Init() |
|
session.Init() |
|
gin.SetMode("debug") |
|
cron.Run() |
|
business.Init() |
|
hook.Init() |
|
|
|
rootRouter := router.Routers() |
|
address := fmt.Sprintf(":%s", global.CONF.System.Port) |
|
s := endless.NewServer(address, rootRouter) |
|
s.ReadHeaderTimeout = 20 * time.Second |
|
s.WriteTimeout = 60 * time.Second |
|
s.MaxHeaderBytes = 1 << 20 |
|
|
|
if global.CONF.System.SSL == "disable" { |
|
global.LOG.Infof("server run success on %s with http", global.CONF.System.Port) |
|
if err := s.ListenAndServe(); err != nil { |
|
global.LOG.Error(err) |
|
panic(err) |
|
} |
|
} else { |
|
certificate, err := os.ReadFile(path.Join(global.CONF.System.BaseDir, "1panel/secret/server.crt")) |
|
if err != nil { |
|
panic(err) |
|
} |
|
key, err := os.ReadFile(path.Join(global.CONF.System.BaseDir, "1panel/secret/server.key")) |
|
if err != nil { |
|
panic(err) |
|
} |
|
cert, err := tls.X509KeyPair(certificate, key) |
|
if err != nil { |
|
panic(err) |
|
} |
|
s := &http.Server{ |
|
Addr: address, |
|
Handler: rootRouter, |
|
TLSConfig: &tls.Config{ |
|
Certificates: []tls.Certificate{cert}, |
|
}, |
|
} |
|
|
|
global.LOG.Infof("server run success on %s with https", global.CONF.System.Port) |
|
if err := s.ListenAndServeTLS("", ""); err != nil { |
|
global.LOG.Error(err) |
|
panic(err) |
|
} |
|
} |
|
}
|
|
|