GPT-backend/main.go

107 lines
1.8 KiB
Go
Raw Normal View History

2024-04-24 11:18:03 +00:00
package main
import (
2024-10-10 15:50:07 +02:00
"flag"
"log"
"os"
2024-05-29 13:29:32 +02:00
"strings"
2024-04-24 11:18:03 +00:00
2024-08-29 16:27:42 +02:00
"github.com/gin-contrib/cors"
2024-04-24 11:18:03 +00:00
"github.com/gin-gonic/gin"
)
2024-10-10 15:50:07 +02:00
func read_config() string {
f, ferr := os.ReadFile(config)
if ferr != nil {
log.Fatalf("failed to read config file: %v", ferr)
}
2024-04-24 12:25:55 +00:00
2024-10-10 15:50:07 +02:00
tmp_srv := strings.TrimSpace(string(f))
tmp_srv = strings.ReplaceAll(tmp_srv, "\r", "")
2024-06-04 15:12:00 +02:00
2024-10-10 15:50:07 +02:00
srvs := []string{}
/// delete comment rows
for _, server := range strings.Split(tmp_srv, "\n") {
2024-10-10 16:26:51 +02:00
if strings.HasPrefix(server, "#") {
continue
} else if server == "" {
continue
} else {
2024-10-10 15:50:07 +02:00
server = strings.ReplaceAll(server, " ", "")
srvs = append(srvs, server)
}
}
2024-06-04 15:12:00 +02:00
2024-10-10 15:50:07 +02:00
var server_list string
if len(srvs) > 1 {
server_list = strings.Join(srvs, ",")
} else {
server_list = srvs[0]
2024-06-04 15:12:00 +02:00
}
2024-04-24 12:25:55 +00:00
2024-10-10 15:50:07 +02:00
if debug {
2024-12-02 11:44:51 +01:00
log.Printf("config: '%s'\n", server_list)
2024-04-24 11:18:03 +00:00
}
2024-04-24 12:25:55 +00:00
2024-10-10 15:50:07 +02:00
return server_list
2024-05-29 13:29:32 +02:00
}
2024-04-24 12:25:55 +00:00
2024-10-10 15:50:07 +02:00
func main() {
2024-04-24 12:25:55 +00:00
2024-10-10 15:50:07 +02:00
var server_list string
2024-04-24 12:37:02 +00:00
2024-12-02 11:44:51 +01:00
log.SetFlags(log.LstdFlags | log.Lshortfile)
2024-10-10 15:50:07 +02:00
flag.Usage = usage
flag.Parse()
2024-04-24 12:25:55 +00:00
2024-10-10 15:50:07 +02:00
if version {
2024-12-02 11:44:51 +01:00
log.Printf("%s: %s\n", os.Args[0], _Version)
2024-10-10 15:50:07 +02:00
os.Exit(0)
2024-05-29 13:29:32 +02:00
}
2024-04-24 12:25:55 +00:00
2024-10-10 15:50:07 +02:00
if servers == "" && config == "" {
2024-12-02 11:44:51 +01:00
log.Println("no servers specified")
2024-10-10 15:50:07 +02:00
usage()
2024-04-24 12:47:00 +00:00
}
2024-10-10 15:50:07 +02:00
hosts := Hosts{}
if config != "" {
server_list = read_config()
} else {
server_list = servers
}
2024-05-29 13:29:32 +02:00
2024-10-10 15:50:07 +02:00
error := hosts.Init(server_list)
2024-06-04 15:12:00 +02:00
2024-10-10 15:50:07 +02:00
if error != nil {
2024-12-02 11:44:51 +01:00
log.Fatalln(error)
2024-10-10 15:50:07 +02:00
}
2024-04-24 11:18:03 +00:00
r := gin.Default()
2024-08-29 16:27:42 +02:00
r.Use(cors.Default())
2024-04-24 12:25:55 +00:00
r.GET("/api/tags", func(c *gin.Context) {
2024-12-02 11:44:51 +01:00
models, err := get_models_list(hosts)
2024-05-29 13:29:32 +02:00
if err != nil {
2024-12-02 11:44:51 +01:00
log.Println(err)
2024-05-29 13:29:32 +02:00
}
2024-04-24 12:25:55 +00:00
c.JSON(200, models)
2024-04-24 11:18:03 +00:00
})
2024-06-05 11:32:46 +02:00
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
2024-12-02 11:44:51 +01:00
log.Println("Starting server on port " + port)
2024-06-04 15:12:00 +02:00
r.Run(":" + port)
2024-05-10 11:52:42 +02:00
2024-12-02 11:44:51 +01:00
log.Print("END")
2024-04-24 11:18:03 +00:00
}