This commit is contained in:
47
main.go
47
main.go
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright (C) 2022-2023. Gardel <sunxinao@hotmail.com> and contributors
|
||||
* Copyright (C) 2022-2025. Gardel <sunxinao@hotmail.com> and contributors
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU Affero General Public License as published by
|
||||
@@ -31,10 +31,12 @@ import (
|
||||
"net/http"
|
||||
"os"
|
||||
"os/signal"
|
||||
"strings"
|
||||
"syscall"
|
||||
"time"
|
||||
"yggdrasil-go/model"
|
||||
"yggdrasil-go/router"
|
||||
"yggdrasil-go/service"
|
||||
"yggdrasil-go/util"
|
||||
)
|
||||
|
||||
@@ -51,6 +53,18 @@ type ServerCfg struct {
|
||||
TrustedProxies []string `ini:"trusted_proxies"`
|
||||
}
|
||||
|
||||
type SmtpCfg struct {
|
||||
SmtpServer string `ini:"smtp_server"`
|
||||
SmtpPort int `ini:"smtp_port"`
|
||||
SmtpSsl bool `ini:"smtp_ssl"`
|
||||
EmailFrom string `ini:"email_from"`
|
||||
SmtpUser string `ini:"smtp_user"`
|
||||
SmtpPassword string `ini:"smtp_password"`
|
||||
TitlePrefix string `ini:"title_prefix"`
|
||||
RegisterTemplate string `ini:"register_template"`
|
||||
ResetPasswordTemplate string `ini:"reset_password_template"`
|
||||
}
|
||||
|
||||
func main() {
|
||||
configFilePath := "config.ini"
|
||||
cfg, err := ini.LooseLoad(configFilePath)
|
||||
@@ -92,12 +106,25 @@ func main() {
|
||||
if err != nil {
|
||||
log.Fatal("无法读取配置文件", err)
|
||||
}
|
||||
smtpCfg := SmtpCfg{
|
||||
SmtpServer: "localhost",
|
||||
SmtpPort: 25,
|
||||
SmtpSsl: false,
|
||||
EmailFrom: "Go Yggdrasil Server <mc@example.com>",
|
||||
SmtpUser: "mc@example.com",
|
||||
SmtpPassword: "123456",
|
||||
TitlePrefix: "[A Mojang Yggdrasil Server]",
|
||||
RegisterTemplate: "请访问下面的链接进行验证: <pre>" + meta.SkinRootUrl + "/profile/#emailVerifyToken={{.AccessToken}}</pre>",
|
||||
ResetPasswordTemplate: "请访问下面的链接进行密码重置: <pre>" + meta.SkinRootUrl + "/profile/resetPassword#passwordResetToken={{.AccessToken}}</pre>",
|
||||
}
|
||||
err = cfg.Section("smtp").MapTo(&smtpCfg)
|
||||
_, err = os.Stat(configFilePath)
|
||||
if err != nil && os.IsNotExist(err) {
|
||||
log.Println("配置文件不存在,已使用默认配置")
|
||||
_ = cfg.Section("meta").ReflectFrom(&meta)
|
||||
_ = cfg.Section("database").ReflectFrom(&dbCfg)
|
||||
_ = cfg.Section("server").ReflectFrom(&serverCfg)
|
||||
_ = cfg.Section("smtp").ReflectFrom(&smtpCfg)
|
||||
err = cfg.SaveToIndent(configFilePath, " ")
|
||||
if err != nil {
|
||||
log.Println("警告: 无法保存配置文件", err)
|
||||
@@ -133,8 +160,24 @@ func main() {
|
||||
if err != nil {
|
||||
log.Fatal(err)
|
||||
}
|
||||
router.InitRouters(r, db, &serverMeta, meta.SkinRootUrl)
|
||||
smtpConfig := service.SmtpConfig{
|
||||
SmtpServer: smtpCfg.SmtpServer,
|
||||
SmtpPort: smtpCfg.SmtpPort,
|
||||
SmtpSsl: smtpCfg.SmtpSsl,
|
||||
EmailFrom: smtpCfg.EmailFrom,
|
||||
SmtpUser: smtpCfg.SmtpUser,
|
||||
SmtpPassword: smtpCfg.SmtpPassword,
|
||||
TitlePrefix: smtpCfg.TitlePrefix,
|
||||
RegisterTemplate: smtpCfg.RegisterTemplate,
|
||||
ResetPasswordTemplate: smtpCfg.ResetPasswordTemplate,
|
||||
}
|
||||
router.InitRouters(r, db, &serverMeta, &smtpConfig, meta.SkinRootUrl)
|
||||
r.Static("/profile", "assets")
|
||||
r.NoRoute(func(c *gin.Context) {
|
||||
if strings.HasPrefix(c.Request.URL.Path, "/profile/") {
|
||||
c.File("assets/index.html")
|
||||
}
|
||||
})
|
||||
srv := &http.Server{
|
||||
Addr: serverCfg.ServerAddress,
|
||||
Handler: r,
|
||||
|
Reference in New Issue
Block a user