update
This commit is contained in:
@@ -0,0 +1 @@
|
||||
<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta http-equiv="X-UA-Compatible" content="IE=edge"><meta name="viewport" content="width=device-width,initial-scale=1"><link rel="icon" href="/favicon.ico"><title>oaf</title><link rel="stylesheet" href="https://fonts.googleapis.com/css?family=Roboto:100,300,400,500,700,900"><link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/@mdi/font@latest/css/materialdesignicons.min.css"><link href="/css/chunk-6cfd0404.487f8d50.css" rel="prefetch"><link href="/js/about.a3055c06.js" rel="prefetch"><link href="/js/chunk-6cfd0404.65d5baaf.js" rel="prefetch"><link href="/app.b131f8d0f62acd99ab8e.js" rel="preload" as="script"><link href="/css/app.dafd5329.css" rel="preload" as="style"><link href="/css/chunk-vendors.dfe6062e.css" rel="preload" as="style"><link href="/js/chunk-vendors.83bac771.js" rel="preload" as="script"><link href="/css/chunk-vendors.dfe6062e.css" rel="stylesheet"><link href="/css/app.dafd5329.css" rel="stylesheet"></head><body><noscript><strong>We're sorry but oaf doesn't work properly without JavaScript enabled. Please enable it to continue.</strong></noscript><div id="app"></div><script src="/js/chunk-vendors.83bac771.js"></script><script src="/app.b131f8d0f62acd99ab8e.js"></script></body></html>
|
||||
+86
@@ -0,0 +1,86 @@
|
||||
package sub
|
||||
|
||||
import (
|
||||
"OneAuth/api"
|
||||
"OneAuth/cfg"
|
||||
"OneAuth/models"
|
||||
"embed"
|
||||
"github.com/urfave/cli/v2"
|
||||
"github.com/veypi/OneBD"
|
||||
"github.com/veypi/OneBD/core"
|
||||
"github.com/veypi/OneBD/rfc"
|
||||
"github.com/veypi/utils/log"
|
||||
"net/http"
|
||||
"os"
|
||||
)
|
||||
|
||||
//go:embed static
|
||||
var staticFiles embed.FS
|
||||
|
||||
//go:embed static/index.html
|
||||
var indexFile []byte
|
||||
|
||||
var Web = cli.Command{
|
||||
Name: "web",
|
||||
Usage: "",
|
||||
Description: "oa 核心http服务",
|
||||
Action: RunWeb,
|
||||
Flags: []cli.Flag{},
|
||||
}
|
||||
|
||||
func RunWeb(c *cli.Context) error {
|
||||
_ = runSyncDB(c)
|
||||
ll := log.InfoLevel
|
||||
if l, err := log.ParseLevel(cfg.CFG.LoggerLevel); err == nil {
|
||||
ll = l
|
||||
}
|
||||
app := OneBD.New(&OneBD.Config{
|
||||
Host: cfg.CFG.Host,
|
||||
LoggerPath: cfg.CFG.LoggerPath,
|
||||
LoggerLevel: ll,
|
||||
})
|
||||
app.Router().EmbedFile("/", indexFile)
|
||||
app.Router().EmbedDir("/", staticFiles, "static/")
|
||||
|
||||
// TODO media 文件需要检验权限
|
||||
//app.Router().SubRouter("/media/").Static("/", cfg.CFG.EXEDir+"/media")
|
||||
|
||||
app.Router().SetNotFoundFunc(func(m core.Meta) {
|
||||
f, err := os.Open(cfg.CFG.EXEDir + "/static/index.html")
|
||||
if err != nil {
|
||||
m.WriteHeader(rfc.StatusNotFound)
|
||||
return
|
||||
}
|
||||
defer f.Close()
|
||||
info, err := f.Stat()
|
||||
if err != nil {
|
||||
m.WriteHeader(rfc.StatusNotFound)
|
||||
return
|
||||
}
|
||||
if info.IsDir() {
|
||||
// TODO:: dir list
|
||||
m.WriteHeader(rfc.StatusNotFound)
|
||||
return
|
||||
}
|
||||
http.ServeContent(m, m.Request(), info.Name(), info.ModTime(), f)
|
||||
})
|
||||
|
||||
api.Router(app.Router().SubRouter("api"))
|
||||
|
||||
log.Info().Msg("\nRouting Table\n" + app.Router().String())
|
||||
return app.Run()
|
||||
}
|
||||
|
||||
func runSyncDB(*cli.Context) error {
|
||||
db := cfg.DB()
|
||||
log.HandlerErrs(
|
||||
db.SetupJoinTable(&models.User{}, "Roles", &models.UserRole{}),
|
||||
db.SetupJoinTable(&models.Role{}, "Users", &models.UserRole{}),
|
||||
db.SetupJoinTable(&models.Role{}, "Auths", &models.RoleAuth{}),
|
||||
db.AutoMigrate(&models.User{}, &models.Role{}, &models.Auth{}),
|
||||
)
|
||||
log.HandlerErrs(
|
||||
db.AutoMigrate(&models.App{}, &models.Wechat{}),
|
||||
)
|
||||
return nil
|
||||
}
|
||||
Reference in New Issue
Block a user