mirror of
https://github.com/eiblog/eiblog.git
synced 2026-02-08 07:42:27 +08:00
99 lines
2.7 KiB
Go
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()
|
|
}
|