mirror of
https://github.com/coaidev/coai.git
synced 2025-05-19 04:50:14 +09:00
76 lines
1.3 KiB
Go
76 lines
1.3 KiB
Go
package main
|
|
|
|
import (
|
|
"chat/adapter"
|
|
"chat/addition"
|
|
"chat/admin"
|
|
"chat/auth"
|
|
"chat/channel"
|
|
"chat/cli"
|
|
"chat/globals"
|
|
"chat/manager"
|
|
"chat/manager/conversation"
|
|
"chat/middleware"
|
|
"chat/utils"
|
|
"fmt"
|
|
"github.com/gin-gonic/gin"
|
|
"github.com/spf13/viper"
|
|
"net/url"
|
|
)
|
|
|
|
func readCorsOrigins() {
|
|
origins := viper.GetStringSlice("allow_origins")
|
|
if len(origins) > 0 {
|
|
globals.AllowedOrigins = utils.Each(origins, func(origin string) string {
|
|
// remove protocol and trailing slash
|
|
// e.g. https://chatnio.net/ -> chatnio.net
|
|
|
|
if host, err := url.Parse(origin); err == nil {
|
|
return host.Host
|
|
}
|
|
|
|
return origin
|
|
})
|
|
}
|
|
}
|
|
|
|
func registerApiRouter(engine *gin.Engine) {
|
|
var app *gin.RouterGroup
|
|
if !viper.GetBool("serve_static") {
|
|
app = engine.Group("")
|
|
} else {
|
|
app = engine.Group("/api")
|
|
}
|
|
|
|
{
|
|
auth.Register(app)
|
|
admin.Register(app)
|
|
adapter.Register(app)
|
|
manager.Register(app)
|
|
addition.Register(app)
|
|
conversation.Register(app)
|
|
}
|
|
}
|
|
|
|
func main() {
|
|
utils.ReadConf()
|
|
admin.InitInstance()
|
|
channel.InitManager()
|
|
|
|
if cli.Run() {
|
|
return
|
|
}
|
|
|
|
app := utils.NewEngine()
|
|
worker := middleware.RegisterMiddleware(app)
|
|
defer worker()
|
|
|
|
utils.RegisterStaticRoute(app)
|
|
registerApiRouter(app)
|
|
readCorsOrigins()
|
|
|
|
if err := app.Run(fmt.Sprintf(":%s", viper.GetString("server.port"))); err != nil {
|
|
panic(err)
|
|
}
|
|
}
|