v1.0.0
This commit is contained in:
@@ -0,0 +1,178 @@
|
||||
package initialize
|
||||
|
||||
import (
|
||||
"flag"
|
||||
"fmt"
|
||||
"os"
|
||||
"sun-panel/global"
|
||||
"sun-panel/initialize/cUserToken"
|
||||
"sun-panel/initialize/config"
|
||||
"sun-panel/initialize/database"
|
||||
"sun-panel/initialize/lang"
|
||||
"sun-panel/initialize/other"
|
||||
"sun-panel/initialize/redis"
|
||||
"sun-panel/initialize/runlog"
|
||||
"sun-panel/initialize/systemSettingCache"
|
||||
"sun-panel/initialize/userToken"
|
||||
"sun-panel/lib/cmn"
|
||||
"sun-panel/models"
|
||||
"sun-panel/structs"
|
||||
|
||||
"log"
|
||||
|
||||
"github.com/gin-gonic/gin"
|
||||
)
|
||||
|
||||
var DB_DRIVER = database.SQLITE
|
||||
|
||||
// var RUNCODE = "debug"
|
||||
// var ISDOCER = "" // 是否为docker模式
|
||||
|
||||
func InitApp() error {
|
||||
gin.SetMode(global.RUNCODE) // GIN 运行模式
|
||||
|
||||
// 日志
|
||||
if logger, err := runlog.InitRunlog(global.RUNCODE, "running.log"); err != nil {
|
||||
log.Panicln("日志初始化错误", err)
|
||||
panic(err)
|
||||
} else {
|
||||
global.Logger = logger
|
||||
}
|
||||
|
||||
// 命令行运行
|
||||
CommandRun()
|
||||
|
||||
// 配置初始化
|
||||
{
|
||||
if config, err := config.ConfigInit(); err != nil {
|
||||
global.Logger.Errorln("配置初始化错误", err)
|
||||
return err
|
||||
} else {
|
||||
global.Config = config
|
||||
}
|
||||
}
|
||||
|
||||
// 多语言初始化
|
||||
lang.LangInit("zh-cn") // en-us
|
||||
|
||||
DatabaseConnect()
|
||||
|
||||
// Redis 连接
|
||||
{
|
||||
// 判断是否有使用redis的驱动,没有将不连接
|
||||
cacheDrive := global.Config.GetValueString("base", "cache_drive")
|
||||
queueDrive := global.Config.GetValueString("base", "queue_drive")
|
||||
if cacheDrive == "redis" || queueDrive == "redis" {
|
||||
redisConfig := structs.IniConfigRedis{}
|
||||
global.Config.GetSection("redis", &redisConfig)
|
||||
rdb, err := redis.InitRedis(redis.Options{
|
||||
Addr: redisConfig.Address,
|
||||
Password: redisConfig.Password,
|
||||
DB: redisConfig.Db,
|
||||
})
|
||||
|
||||
if err != nil {
|
||||
log.Panicln("Redis初始化错误", err)
|
||||
panic(err)
|
||||
// return err
|
||||
}
|
||||
global.RedisDb = rdb
|
||||
}
|
||||
}
|
||||
|
||||
// 初始化用户token
|
||||
global.UserToken = userToken.InitUserToken()
|
||||
global.CUserToken = cUserToken.InitCUserToken()
|
||||
|
||||
// 其他的初始化
|
||||
global.VerifyCodeCachePool = other.InitVerifyCodeCachePool()
|
||||
global.SystemSetting = systemSettingCache.InItSystemSettingCache()
|
||||
|
||||
return nil
|
||||
}
|
||||
|
||||
func DatabaseConnect() {
|
||||
// 数据库连接 - 开始
|
||||
var dbClientInfo database.DbClient
|
||||
databaseDrive := global.Config.GetValueStringOrDefault("base", "database_drive")
|
||||
if databaseDrive == database.MYSQL {
|
||||
dbClientInfo = &database.MySQLConfig{
|
||||
Username: global.Config.GetValueStringOrDefault("mysql", "username"),
|
||||
Password: global.Config.GetValueStringOrDefault("mysql", "password"),
|
||||
Host: global.Config.GetValueStringOrDefault("mysql", "host"),
|
||||
Port: global.Config.GetValueStringOrDefault("mysql", "port"),
|
||||
Database: global.Config.GetValueStringOrDefault("mysql", "db_name"),
|
||||
WaitTimeout: global.Config.GetValueInt("mysql", "wait_timeout"),
|
||||
}
|
||||
} else {
|
||||
dbClientInfo = &database.SQLiteConfig{
|
||||
Filename: global.Config.GetValueStringOrDefault("sqlite", "file_path"),
|
||||
}
|
||||
}
|
||||
|
||||
if db, err := database.DbInit(dbClientInfo); err != nil {
|
||||
log.Panicln("数据库初始化错误", err)
|
||||
panic(err)
|
||||
} else {
|
||||
global.Db = db
|
||||
models.Db = global.Db
|
||||
}
|
||||
|
||||
database.CreateDatabase(databaseDrive, global.Db)
|
||||
|
||||
database.NotFoundAndCreateUser(global.Db)
|
||||
}
|
||||
|
||||
// 命令行运行
|
||||
func CommandRun() {
|
||||
var (
|
||||
cfg bool
|
||||
pwd bool
|
||||
)
|
||||
|
||||
flag.BoolVar(&cfg, "config", false, "生成配置文件")
|
||||
flag.BoolVar(&pwd, "password-reset", false, "重置第一个用户的密码")
|
||||
|
||||
flag.Parse()
|
||||
|
||||
if cfg {
|
||||
// 生成配置文件
|
||||
fmt.Println("正在生成配置文件")
|
||||
cmn.AssetsTakeFileToPath("conf.example.ini", "conf/conf.example.ini")
|
||||
cmn.AssetsTakeFileToPath("conf.example.ini", "conf/conf.ini")
|
||||
fmt.Println("配置文件已经创建 conf/conf.ini ", "请按照自己的需求修改")
|
||||
os.Exit(0) // 务必退出
|
||||
} else if pwd {
|
||||
|
||||
// 配置初始化
|
||||
config, _ := config.ConfigInit()
|
||||
global.Config = config
|
||||
|
||||
// 重置密码
|
||||
DatabaseConnect()
|
||||
userInfo := models.User{}
|
||||
if err := global.Db.First(&userInfo).Error; err != nil {
|
||||
fmt.Println("ERROR", err.Error())
|
||||
os.Exit(0) // 务必退出
|
||||
}
|
||||
|
||||
newPassword := "12345678"
|
||||
|
||||
updateInfo := models.User{
|
||||
Password: cmn.PasswordEncryption(newPassword),
|
||||
Token: "",
|
||||
}
|
||||
if err := global.Db.Select("Password", "Token").Where("id=?", userInfo.ID).Updates(&updateInfo).Error; err != nil {
|
||||
fmt.Println("ERROR", err.Error())
|
||||
os.Exit(0) // 务必退出
|
||||
}
|
||||
|
||||
fmt.Println("密码已经重置成功,以下是账号信息")
|
||||
fmt.Println("用户名 ", userInfo.Username)
|
||||
fmt.Println("密码 ", newPassword)
|
||||
os.Exit(0) // 务必退出
|
||||
} else {
|
||||
return
|
||||
}
|
||||
os.Exit(0) // 务必退出
|
||||
}
|
||||
Reference in New Issue
Block a user