feat(docker): Add Dockerfile and compose file
This commit is contained in:
48
app/main.go
48
app/main.go
@@ -1,30 +1,62 @@
|
||||
package main
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
"net/http"
|
||||
|
||||
"git.secnex.io/secnex/gogwapi/config"
|
||||
"git.secnex.io/secnex/gogwapi/database"
|
||||
"git.secnex.io/secnex/gogwapi/models"
|
||||
"git.secnex.io/secnex/gogwapi/proxy"
|
||||
|
||||
"git.secnex.io/secnex/masterlog"
|
||||
)
|
||||
|
||||
func main() {
|
||||
pseudonymizer := masterlog.NewPseudonymizerFromString("1234567890")
|
||||
// pseudonymizer := masterlog.NewPseudonymizerFromEnv("MASTERLOG_SECRET")
|
||||
masterlog.SetPseudonymizer(pseudonymizer)
|
||||
masterlog.AddSensitiveFields("user_id", "password", "email")
|
||||
masterlog.SetLevel(masterlog.LevelInfo)
|
||||
masterlog.AddEncoder(&masterlog.JSONEncoder{})
|
||||
config, err := config.LoadYAMLConfig("../config.yaml")
|
||||
if err != nil {
|
||||
masterlog.Error("failed to load config", map[string]interface{}{"error": err.Error()})
|
||||
return
|
||||
}
|
||||
|
||||
targets := config.Targets
|
||||
masterlog.Info("Targets loaded", map[string]interface{}{"count": len(targets)})
|
||||
for _, target := range targets {
|
||||
targetDescription := target.Name
|
||||
if target.Group != nil {
|
||||
targetDescription = fmt.Sprintf("[%s] %s", *target.Group, target.Name)
|
||||
}
|
||||
masterlog.Info(targetDescription, map[string]interface{}{"target": target.Name, "group": *target.Group, "records": len(target.Records)})
|
||||
}
|
||||
|
||||
allModels := []interface{}{
|
||||
&models.Endpoint{},
|
||||
}
|
||||
|
||||
dbConfig := database.NewDatabaseConfigurationFromEnv()
|
||||
dbConfig := database.NewDatabaseConfigurationFromEnvAndConfig(config)
|
||||
masterlog.Info("Connecting to database", map[string]interface{}{"host": dbConfig.Host, "port": dbConfig.Port, "database": dbConfig.Database})
|
||||
if err := dbConfig.Connect(allModels...); err != nil {
|
||||
masterlog.Error("failed to connect to database", map[string]interface{}{"error": err.Error()})
|
||||
return
|
||||
}
|
||||
masterlog.Info("Connected to database!")
|
||||
masterlog.Info("Starting server", map[string]interface{}{"port": ":3000"})
|
||||
|
||||
// Initialize reverse proxy
|
||||
reverseProxy := proxy.NewReverseProxy(config)
|
||||
|
||||
// Setup HTTP server
|
||||
mux := http.NewServeMux()
|
||||
mux.HandleFunc("/", reverseProxy.ServeHTTP)
|
||||
|
||||
// Start server
|
||||
addr := fmt.Sprintf(":%d", config.Server.Port)
|
||||
masterlog.Info("Starting reverse proxy server", map[string]interface{}{
|
||||
"port": config.Server.Port,
|
||||
"address": addr,
|
||||
})
|
||||
|
||||
if err := http.ListenAndServe(addr, mux); err != nil {
|
||||
masterlog.Error("server failed to start", map[string]interface{}{"error": err.Error()})
|
||||
return
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user