mail-autoconfig/internal/app/app.go

63 lines
1.2 KiB
Go
Raw Normal View History

2024-06-04 20:46:09 +00:00
package app
import (
"fmt"
"log"
"text/template"
"git.asperti.com/paspo/mail-autoconfig/internal/config"
"git.asperti.com/paspo/mail-autoconfig/internal/db"
"github.com/gin-gonic/gin"
)
var Domains map[string]Domain
var Router *gin.Engine
func init() {
var err error
Domains = make(map[string]Domain)
thunderbirdTemplate, err = template.New("thunderbird").Parse(thunderbirdTpl)
if err != nil {
log.Fatal(err) // TODO
}
outlookTemplate, err = template.New("outlook").Parse(outlookTpl)
if err != nil {
log.Fatal(err) // TODO
}
Router = gin.Default()
Router.GET("/.well-known/autoconfig/mail/config-v1.1.xml", RenderThunderbird)
Router.GET("/mail/config-v1.1.xml", RenderThunderbird)
Router.POST("/autodiscover/autodiscover.xml", RenderOutlook)
}
func FetchAllDomains() error {
var err error
rows, err := db.DB.Queryx("select * from domains")
if err != nil {
return err
}
defer rows.Close()
for rows.Next() {
var d Domain
err := rows.StructScan(&d)
if err != nil {
return err
}
Domains[d.Domain] = d
}
err = rows.Err()
if err != nil {
return err
}
return nil
}
func Start() {
address := fmt.Sprintf(":%d", config.AppConfig.HttpPort)
Router.Run(address)
}