Files
eiblog/cmd/eiblog/handler/internal/internal.go
2025-07-21 20:07:26 +08:00

99 lines
2.7 KiB
Go

package internal
import (
"io/fs"
"path/filepath"
"strings"
"text/template"
"time"
"github.com/eiblog/eiblog/cmd/eiblog/config"
"github.com/eiblog/eiblog/cmd/eiblog/handler/internal/store"
"github.com/eiblog/eiblog/pkg/third/disqus"
"github.com/eiblog/eiblog/pkg/third/es"
"github.com/eiblog/eiblog/pkg/third/pinger"
"github.com/eiblog/eiblog/pkg/third/qiniu"
"github.com/eiblog/eiblog/tools"
"github.com/sirupsen/logrus"
)
var (
XMLTemplate *template.Template // template/xml模板
HTMLTemplate *template.Template // page/html | website/html模板
Store store.Store // 数据库存储
Ei *Cache // 博客数据缓存
TwoFactorSecret string // 缓存两步验证密钥
ESClient *es.ESClient // es 客户端
DisqusClient *disqus.DisqusClient // disqus 客户端
QiniuClient *qiniu.QiniuClient // qiniu客户端
Pinger *pinger.Pinger // pinger 客户端
)
func init() {
var err error
tools.TimeLocation, err = time.LoadLocation(config.Conf.General.Timezone)
if err != nil {
logrus.Fatal("init timezone: ", err)
}
// 模板解析初始化
root := filepath.Join(config.EtcDir, "xml", "*.xml")
XMLTemplate, err = template.New("eiblog").Funcs(tools.TplFuncMap).ParseGlob(root)
if err != nil {
logrus.Fatal("init xml template: ", err)
}
root = filepath.Join(config.EtcDir, "template")
files := tools.ReadDirFiles(root, func(fi fs.DirEntry) bool {
// should not read dir & .DS_Store
return strings.HasPrefix(fi.Name(), ".")
})
root = filepath.Join(config.EtcDir, "page")
pageFiles := tools.ReadDirFiles(root, func(fi fs.DirEntry) bool {
return !strings.HasSuffix(fi.Name(), ".html")
})
files = append(files, pageFiles...)
HTMLTemplate, err = template.New("eiblog").Funcs(tools.TplFuncMap).ParseFiles(files...)
if err != nil {
logrus.Fatal("init html template: ", err)
}
// 数据库初始化
logrus.Info("store drivers: ", store.Drivers())
Store, err = store.NewStore(config.Conf.Database)
if err != nil {
logrus.Fatal("init store: ", err)
}
Ei, err = NewCache()
if err != nil {
logrus.Fatal("init blog cache: ", err)
}
if config.Conf.ESHost != "" {
ESClient, err = es.NewESClient(config.Conf.ESHost)
if err != nil {
logrus.Fatal("init es client: ", err)
}
}
DisqusClient, err = disqus.NewDisqusClient(config.Conf.Host, config.Conf.Disqus)
if err != nil {
logrus.Fatal("init disqus client: ", err)
}
QiniuClient, err = qiniu.NewQiniuClient(config.Conf.Qiniu)
if err != nil {
logrus.Fatal("init qiniu client: ", err)
}
Pinger, err = pinger.NewPinger(config.Conf.Host, config.Conf.FeedRPC)
if err != nil {
logrus.Fatal("init pinger: ", err)
}
// 启动定时器
go startTimer()
}