update routes

This commit is contained in:
2026-05-16 11:10:36 +07:00
parent f1c69c0f1f
commit f23a0c2152
7 changed files with 64 additions and 39 deletions
Vendored
BIN
View File
Binary file not shown.
+2
View File
@@ -10,6 +10,7 @@
"диалогом", "диалогом",
"другой", "другой",
"задать", "задать",
"запущен",
"корректный", "корректный",
"Можно", "Можно",
"Название", "Название",
@@ -27,6 +28,7 @@
"приложением", "приложением",
"проходами", "проходами",
"проходом", "проходом",
"сервер",
"скрытой", "скрытой",
"скрытую", "скрытую",
"существует", "существует",
+23 -29
View File
@@ -34,11 +34,10 @@ var userFS embed.FS
var adminFS embed.FS var adminFS embed.FS
func main() { func main() {
// Create a listener on TCP port grpcGatewayHost := config.GetGrpcGatewayHost()
lis, err := net.Listen("tcp", ":8080") userClientHost := config.GetUserClientHost()
if err != nil { adminClientHost := config.GetAdminClientHost()
log.Fatalln("Failed to listen:", err) fileHost := config.GetFileHost()
}
// Create a gRPC server object // Create a gRPC server object
s := grpc.NewServer() s := grpc.NewServer()
@@ -50,10 +49,6 @@ func main() {
log.Fatalln(err) log.Fatalln(err)
} }
clientHost := config.GetHost()
adminClientHost := config.GetAdminHost()
fileHost := config.GetFileHost()
cleaner := cleaner.NewCleaner() cleaner := cleaner.NewCleaner()
formatter := formatter.NewFormatter() formatter := formatter.NewFormatter()
@@ -72,7 +67,7 @@ func main() {
log.Fatalln(err) log.Fatalln(err)
} }
linkService := link.NewLinkService(clientHost) linkService := link.NewLinkService(userClientHost)
passwordGenerator := password.NewPasswordGenerator() passwordGenerator := password.NewPasswordGenerator()
@@ -90,12 +85,17 @@ func main() {
), ),
), ),
) )
// Serve gRPC server
log.Println("Serving gRPC on 0.0.0.0:8080") // Server gRPC
lis, err := net.Listen("tcp", ":8080")
if err != nil {
log.Fatalln("Failed to listen:", err)
}
go func() { go func() {
log.Fatalln(s.Serve(lis)) log.Fatalln(s.Serve(lis))
}() }()
// Client gRPC
// Create a client connection to the gRPC server we just started // Create a client connection to the gRPC server we just started
// This is where the gRPC-Gateway proxies the requests // This is where the gRPC-Gateway proxies the requests
conn, err := grpc.NewClient( conn, err := grpc.NewClient(
@@ -122,13 +122,12 @@ func main() {
log.Fatalln("Failed to register gateway:", err) log.Fatalln("Failed to register gateway:", err)
} }
// Server gRPC-Gateway
gwServer := &http.Server{ gwServer := &http.Server{
Addr: ":8090", Addr: config.GrpcGatewayPort,
Handler: cors(gwmux), Handler: cors(gwmux),
} }
log.Printf("Serving %s for gRPC-Gateway\n", grpcGatewayHost)
// Serve gRPC-Gateway server
log.Println("Serving gRPC-Gateway on http://0.0.0.0:8090")
go func() { go func() {
log.Fatalln(gwServer.ListenAndServe()) log.Fatalln(gwServer.ListenAndServe())
}() }()
@@ -141,23 +140,18 @@ func main() {
fileServerUser := http.FileServer(http.FS(subUserFS)) fileServerUser := http.FileServer(http.FS(subUserFS))
muxUser.Handle("/", fileServerUser) muxUser.Handle("/", fileServerUser)
// Serve user web server // Server user web
log.Println("Serving user web on http://0.0.0.0" + config.ClientPort) log.Printf("Serving %s for user web\n", userClientHost)
go func() { go func() {
log.Fatalln(http.ListenAndServe(config.ClientPort, muxUser)) log.Fatalln(http.ListenAndServe(config.UserClientPort, muxUser))
}() }()
go func() { go func() {
dir := "./data/story/images" dir := "./data/story/images"
// Создаем файловый сервер
fs := http.FileServer(http.Dir(dir)) fs := http.FileServer(http.Dir(dir))
// Добавляем middleware для логирования
http.Handle("/", loggingMiddleware(fs)) http.Handle("/", loggingMiddleware(fs))
log.Printf("Serving %s for file server, directory: %s\n", fileHost, dir)
log.Println("Файловый сервер запущен на http://localhost:8120") log.Fatal(http.ListenAndServe(config.FilePort, nil))
log.Println("Обслуживается директория: " + dir)
log.Fatal(http.ListenAndServe(":8120", nil))
}() }()
muxAdmin := http.NewServeMux() muxAdmin := http.NewServeMux()
@@ -168,9 +162,9 @@ func main() {
fileServerAdmin := http.FileServer(http.FS(subAdminFS)) fileServerAdmin := http.FileServer(http.FS(subAdminFS))
muxAdmin.Handle("/", fileServerAdmin) muxAdmin.Handle("/", fileServerAdmin)
// Serve admin web server // Server admin web
log.Printf("Serving admin web on %s\n", adminClientHost) log.Printf("Serving %s for admin web \n", adminClientHost)
log.Fatalln(http.ListenAndServe(":8110", muxAdmin)) log.Fatalln(http.ListenAndServe(config.AdminClientPort, muxAdmin))
} }
func cors(h http.Handler) http.Handler { func cors(h http.Handler) http.Handler {
+18 -2
View File
@@ -11,8 +11,24 @@ services:
- "8100:8100" - "8100:8100"
- "8110:8110" - "8110:8110"
- "8120:8120" - "8120:8120"
networks:
- crabs-network
volumes: volumes:
- data:/data - data:/data
labels:
reproxy.1.server: "rodniki.crabs-games.art"
reproxy.1.route: "^/schedule"
reproxy.1.dest: "http://pinned_message:8210/schedule"
reproxy.1.port: "8210"
reproxy.1.ping: "/"
volumes: reproxy.2.server: "rodniki.crabs-games.art"
data: reproxy.2.route: "/(.*)"
reproxy.2.dest: "http://pinned_message:8220/$$1"
reproxy.2.port: "8220"
reproxy.2.ping: "/"
networks:
crabs-network:
name: crabs-network
external: true
+19 -6
View File
@@ -7,7 +7,8 @@ import (
) )
const ( const (
ClientPort = ":8100" GrpcGatewayPort = ":8090"
UserClientPort = ":8100"
AdminClientPort = ":8110" AdminClientPort = ":8110"
FilePort = ":8120" FilePort = ":8120"
) )
@@ -20,7 +21,19 @@ func GetDBFilepath() string {
return getFilepath("DB_FILENAME", "data/db/store.db") return getFilepath("DB_FILENAME", "data/db/store.db")
} }
func GetAdminHost() string { func GetGrpcGatewayHost() string {
host := os.Getenv("HOST")
if host != "" {
return host
}
ips, err := getLocalIPs()
if err != nil || len(ips) == 0 {
return "http://127.0.0.1" + GrpcGatewayPort
}
return "http://" + ips[0] + GrpcGatewayPort
}
func GetAdminClientHost() string {
host := os.Getenv("HOST") host := os.Getenv("HOST")
if host != "" { if host != "" {
return host return host
@@ -32,20 +45,20 @@ func GetAdminHost() string {
return "http://" + ips[0] + AdminClientPort return "http://" + ips[0] + AdminClientPort
} }
func GetHost() string { func GetUserClientHost() string {
host := os.Getenv("HOST") host := os.Getenv("HOST")
if host != "" { if host != "" {
return host return host
} }
ips, err := getLocalIPs() ips, err := getLocalIPs()
if err != nil || len(ips) == 0 { if err != nil || len(ips) == 0 {
return "http://127.0.0.1" + ClientPort return "http://127.0.0.1" + UserClientPort
} }
return "http://" + ips[0] + ClientPort return "http://" + ips[0] + UserClientPort
} }
func GetFileHost() string { func GetFileHost() string {
host := os.Getenv("FILE_HOST") host := os.Getenv("HOST")
if host != "" { if host != "" {
return host return host
} }
+1 -1
View File
@@ -19,7 +19,7 @@ func NewDBService(filepath string) (IDBService, error) {
if err != nil { if err != nil {
return nil, err return nil, err
} }
log.Printf("load db from: %s", filepath) log.Printf("Load db from: %s", filepath)
_, err = db.Exec("CREATE TABLE IF NOT EXISTS teams (id INTEGER PRIMARY KEY AUTOINCREMENT, name TEXT UNIQUE NOT NULL CHECK(length(trim(name)) > 0), password TEXT);") _, err = db.Exec("CREATE TABLE IF NOT EXISTS teams (id INTEGER PRIMARY KEY AUTOINCREMENT, name TEXT UNIQUE NOT NULL CHECK(length(trim(name)) > 0), password TEXT);")
if err != nil { if err != nil {
return nil, err return nil, err
@@ -25,7 +25,7 @@ func (s *fileService) Load(ctx context.Context) (*models.Story, error) {
if err != nil { if err != nil {
return nil, fmt.Errorf("story file %s not found", s.filepath) return nil, fmt.Errorf("story file %s not found", s.filepath)
} }
log.Printf("load story from: %s", s.filepath) log.Printf("Load story from: %s", s.filepath)
story := &models.Story{} story := &models.Story{}
if err := json.Unmarshal(data, story); err != nil { if err := json.Unmarshal(data, story); err != nil {
return nil, err return nil, err