generated from VLADIMIR/template
update routes
This commit is contained in:
Vendored
+2
@@ -10,6 +10,7 @@
|
|||||||
"диалогом",
|
"диалогом",
|
||||||
"другой",
|
"другой",
|
||||||
"задать",
|
"задать",
|
||||||
|
"запущен",
|
||||||
"корректный",
|
"корректный",
|
||||||
"Можно",
|
"Можно",
|
||||||
"Название",
|
"Название",
|
||||||
@@ -27,6 +28,7 @@
|
|||||||
"приложением",
|
"приложением",
|
||||||
"проходами",
|
"проходами",
|
||||||
"проходом",
|
"проходом",
|
||||||
|
"сервер",
|
||||||
"скрытой",
|
"скрытой",
|
||||||
"скрытую",
|
"скрытую",
|
||||||
"существует",
|
"существует",
|
||||||
|
|||||||
@@ -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
@@ -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
|
||||||
|
|||||||
@@ -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
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -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
|
||||||
|
|||||||
Reference in New Issue
Block a user