68 lines
1.4 KiB
Go
68 lines
1.4 KiB
Go
package main
|
|
|
|
import (
|
|
"log"
|
|
|
|
"git.hatecomputers.club/hatecomputers/hatecomputers.club/api"
|
|
"git.hatecomputers.club/hatecomputers/hatecomputers.club/args"
|
|
"git.hatecomputers.club/hatecomputers/hatecomputers.club/database"
|
|
"git.hatecomputers.club/hatecomputers/hatecomputers.club/hcdns"
|
|
"git.hatecomputers.club/hatecomputers/hatecomputers.club/scheduler"
|
|
"github.com/joho/godotenv"
|
|
)
|
|
|
|
func main() {
|
|
log.SetFlags(log.LstdFlags | log.Lshortfile)
|
|
|
|
err := godotenv.Load()
|
|
if err != nil {
|
|
log.Println("could not load .env file:", err)
|
|
}
|
|
|
|
argv, err := args.GetArgs()
|
|
if err != nil {
|
|
log.Fatal(err)
|
|
}
|
|
|
|
dbConn := database.MakeConn(&argv.DatabasePath)
|
|
defer dbConn.Close()
|
|
|
|
if argv.Migrate {
|
|
_, err = database.Migrate(dbConn)
|
|
if err != nil {
|
|
log.Fatal(err)
|
|
}
|
|
log.Println("database migrated successfully")
|
|
}
|
|
|
|
if argv.Scheduler {
|
|
scheduler.StartScheduler(dbConn)
|
|
}
|
|
|
|
if argv.Server {
|
|
server := api.MakeServer(argv, dbConn)
|
|
log.Println("🚀🚀 API listening on port", argv.Port)
|
|
|
|
go func() {
|
|
err = server.ListenAndServe()
|
|
if err != nil {
|
|
log.Fatal(err)
|
|
}
|
|
}()
|
|
}
|
|
|
|
if argv.Dns {
|
|
server := hcdns.MakeServer(argv, dbConn)
|
|
log.Println("🚀🚀 DNS resolver listening on port", argv.DnsPort)
|
|
go func() {
|
|
err = server.ListenAndServe()
|
|
if err != nil {
|
|
log.Fatal(err)
|
|
}
|
|
}()
|
|
}
|
|
|
|
runForever := make(chan struct{})
|
|
<-runForever
|
|
}
|