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) }