GPT-backend/main.go
2024-12-02 11:44:51 +01:00

106 lines
1.8 KiB
Go

package main
import (
"flag"
"log"
"os"
"strings"
"github.com/gin-contrib/cors"
"github.com/gin-gonic/gin"
)
func read_config() string {
f, ferr := os.ReadFile(config)
if ferr != nil {
log.Fatalf("failed to read config file: %v", ferr)
}
tmp_srv := strings.TrimSpace(string(f))
tmp_srv = strings.ReplaceAll(tmp_srv, "\r", "")
srvs := []string{}
/// delete comment rows
for _, server := range strings.Split(tmp_srv, "\n") {
if strings.HasPrefix(server, "#") {
continue
} else if server == "" {
continue
} else {
server = strings.ReplaceAll(server, " ", "")
srvs = append(srvs, server)
}
}
var server_list string
if len(srvs) > 1 {
server_list = strings.Join(srvs, ",")
} else {
server_list = srvs[0]
}
if debug {
log.Printf("config: '%s'\n", server_list)
}
return server_list
}
func main() {
var server_list string
log.SetFlags(log.LstdFlags | log.Lshortfile)
flag.Usage = usage
flag.Parse()
if version {
log.Printf("%s: %s\n", os.Args[0], _Version)
os.Exit(0)
}
if servers == "" && config == "" {
log.Println("no servers specified")
usage()
}
hosts := Hosts{}
if config != "" {
server_list = read_config()
} else {
server_list = servers
}
error := hosts.Init(server_list)
if error != nil {
log.Fatalln(error)
}
r := gin.Default()
r.Use(cors.Default())
r.GET("/api/tags", func(c *gin.Context) {
models, err := get_models_list(hosts)
if err != nil {
log.Println(err)
}
c.JSON(200, models)
})
sapp := r.Group("/_app")
sapp.Static("/", "./static/_app")
static := r.Group("/static")
static.Static("/", "./static/static")
r.StaticFile("/", "./static/index.html")
r.StaticFile("/favicon.png", "./static/favicon.png")
r.ForwardedByClientIP = true
log.Println("Starting server on port " + port)
r.Run(":" + port)
log.Print("END")
}