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