jdysya 7fa137e24e feat(doc): 拓展文档功能并优化主题配置
- 新增 SecureMedia 组件以支持安全媒体播放
- 更新导航栏和侧边栏结构,将"processed"重命名为"enhance"
- 在主题配置中添加 PDF.js 相关设置
- 更新 .gitignore 文件以排除 pdfjs 相关目录
2025-02-18 10:01:50 +08:00

89 lines
2.2 KiB
Go

package main
import (
"gateway/config"
"gateway/handlers"
"gateway/middleware"
"gateway/models"
"gateway/utils"
"path/filepath"
"time"
"github.com/gin-contrib/sessions"
"github.com/gin-gonic/gin"
_ "github.com/go-sql-driver/mysql"
"github.com/jinzhu/gorm"
)
func main() {
// 初始化日志
utils.InitLogger()
// 解析static/index.html中的URLs并立即写入
hrefs, err := utils.ExtractHrefs("static/index.html")
if err != nil {
utils.Logger.Fatalf("解析HTML文件失败: %v", err)
}
// 保存URLs到config目录
configPath := filepath.Join("config", "urls.json")
if err := config.SaveURLsToFile(hrefs, configPath); err != nil {
utils.Logger.Fatalf("保存URLs失败: %v", err)
}
utils.Logger.Info("成功提取并保存URLs")
// 获取数据库配置
dbConfig := config.GetDBConfig()
// 使用配置连接数据库
db, err := gorm.Open("mysql", dbConfig.GetDSN())
if err != nil {
utils.Logger.Fatalf("数据库连接失败: %v", err)
}
defer db.Close()
// 设置数据库连接池参数
db.DB().SetMaxIdleConns(10)
db.DB().SetMaxOpenConns(100)
db.DB().SetConnMaxLifetime(time.Hour)
// 自动迁移表结构
db.AutoMigrate(&models.Region{}, &models.User{})
// 初始化 Gin 引擎
r := gin.Default()
// 配置 Session 中间件(移到最前面)
store := config.InitSessionStore()
r.Use(sessions.Sessions("mysession", store))
// 配置静态文件服务,添加认证中间件
r.Use(middleware.StaticAuthMiddleware())
r.Static("/static", "./static")
r.LoadHTMLGlob("templates/*")
// 路由配置
r.GET("/login", handlers.GetLogin)
r.POST("/login", handlers.PostLogin(db))
r.GET("/register", handlers.GetRegister(db))
r.POST("/register", handlers.PostRegister(db))
r.GET("/api/user/info", handlers.GetUserInfo(db))
// 文档页面路由
r.GET("/", handlers.ServeIndex(db))
// 添加路由认证中间件
r.Use(middleware.RouteAuthMiddleware())
r.POST("/api/secure-url", handlers.GenerateSecureURL)
// 在权限校验中间件后添加退出路由
r.GET("/logout", handlers.Logout)
// 新增通用静态文件路由(放在其他路由之后)
r.NoRoute(handlers.ServeStatic(db))
// 启动服务
r.Run(":7070")
}