[release] v0.9.0-unstable4
This commit is contained in:
parent
2185d2be7c
commit
f2c495baa5
|
@ -1,6 +1,6 @@
|
||||||
{
|
{
|
||||||
"name": "cosmos-server",
|
"name": "cosmos-server",
|
||||||
"version": "0.9.0-unstable3",
|
"version": "0.9.0-unstable4",
|
||||||
"description": "",
|
"description": "",
|
||||||
"main": "test-server.js",
|
"main": "test-server.js",
|
||||||
"bugs": {
|
"bugs": {
|
||||||
|
@ -67,7 +67,7 @@
|
||||||
"build": "sh build.sh",
|
"build": "sh build.sh",
|
||||||
"dev": "npm run build && npm run start",
|
"dev": "npm run build && npm run start",
|
||||||
"dockerdevbuild": "sh build.sh && docker build -f dockerfile.local --tag cosmos-dev .",
|
"dockerdevbuild": "sh build.sh && docker build -f dockerfile.local --tag cosmos-dev .",
|
||||||
"dockerdevrun": "docker stop cosmos-dev; docker rm cosmos-dev; docker run -d -p 80:80 -p 443:443 -e DOCKER_HOST=tcp://host.docker.internal:2375 -e COSMOS_MONGODB=$MONGODB -e COSMOS_LOG_LEVEL=DEBUG -v /:/mnt/host --restart=unless-stopped -h cosmos-dev --name cosmos-dev cosmos-dev",
|
"dockerdevrun": "docker stop cosmos-dev; docker rm cosmos-dev; docker run -d -p 7200:443 -p 80:80 -p 443:443 -e DOCKER_HOST=tcp://host.docker.internal:2375 -e COSMOS_MONGODB=$MONGODB -e COSMOS_LOG_LEVEL=DEBUG -v /:/mnt/host --restart=unless-stopped -h cosmos-dev --name cosmos-dev cosmos-dev",
|
||||||
"dockerdev": "npm run dockerdevbuild && npm run dockerdevrun",
|
"dockerdev": "npm run dockerdevbuild && npm run dockerdevrun",
|
||||||
"dockerdevclient": "npm run client-build && npm run dockerdevbuild && npm run dockerdevrun",
|
"dockerdevclient": "npm run client-build && npm run dockerdevbuild && npm run dockerdevrun",
|
||||||
"demo": "vite build --base=/cosmos-ui/ --mode demo",
|
"demo": "vite build --base=/cosmos-ui/ --mode demo",
|
||||||
|
|
|
@ -214,6 +214,7 @@ func CreateService(serviceRequest DockerServiceCreateRequest, OnLog func(string)
|
||||||
utils.Log("Starting creation of new service...")
|
utils.Log("Starting creation of new service...")
|
||||||
OnLog("Starting creation of new service...\n")
|
OnLog("Starting creation of new service...\n")
|
||||||
|
|
||||||
|
needsHTTPRestart := false
|
||||||
config := utils.ReadConfigFromFile()
|
config := utils.ReadConfigFromFile()
|
||||||
configRoutes := config.HTTPConfig.ProxyConfig.Routes
|
configRoutes := config.HTTPConfig.ProxyConfig.Routes
|
||||||
|
|
||||||
|
@ -326,6 +327,7 @@ func CreateService(serviceRequest DockerServiceCreateRequest, OnLog func(string)
|
||||||
OnLog(fmt.Sprintf("Image %s pulled\n", container.Image))
|
OnLog(fmt.Sprintf("Image %s pulled\n", container.Image))
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
// Create containers
|
// Create containers
|
||||||
for serviceName, container := range serviceRequest.Services {
|
for serviceName, container := range serviceRequest.Services {
|
||||||
utils.Log(fmt.Sprintf("Checking service %s...", serviceName))
|
utils.Log(fmt.Sprintf("Checking service %s...", serviceName))
|
||||||
|
@ -583,6 +585,7 @@ func CreateService(serviceRequest DockerServiceCreateRequest, OnLog func(string)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if !exists {
|
if !exists {
|
||||||
|
needsHTTPRestart = true
|
||||||
configRoutes = append([]utils.ProxyRouteConfig{(utils.ProxyRouteConfig)(route)}, configRoutes...)
|
configRoutes = append([]utils.ProxyRouteConfig{(utils.ProxyRouteConfig)(route)}, configRoutes...)
|
||||||
} else {
|
} else {
|
||||||
utils.Error("CreateService: Rolling back changes because of -- Route already exist", nil)
|
utils.Error("CreateService: Rolling back changes because of -- Route already exist", nil)
|
||||||
|
@ -707,7 +710,10 @@ func CreateService(serviceRequest DockerServiceCreateRequest, OnLog func(string)
|
||||||
// Save the route configs
|
// Save the route configs
|
||||||
config.HTTPConfig.ProxyConfig.Routes = configRoutes
|
config.HTTPConfig.ProxyConfig.Routes = configRoutes
|
||||||
utils.SaveConfigTofile(config)
|
utils.SaveConfigTofile(config)
|
||||||
utils.RestartHTTPServer()
|
|
||||||
|
if needsHTTPRestart {
|
||||||
|
utils.RestartHTTPServer()
|
||||||
|
}
|
||||||
|
|
||||||
// After all operations
|
// After all operations
|
||||||
utils.Log("CreateService: Operation succeeded. SERVICE STARTED")
|
utils.Log("CreateService: Operation succeeded. SERVICE STARTED")
|
||||||
|
|
|
@ -69,17 +69,18 @@ func CheckPorts() error {
|
||||||
|
|
||||||
// Get the ports
|
// Get the ports
|
||||||
ports := map[string]struct{}{}
|
ports := map[string]struct{}{}
|
||||||
|
finalPorts := []string{}
|
||||||
|
|
||||||
for containerPort, hostConfig := range inspect.NetworkSettings.Ports {
|
for containerPort, hostConfig := range inspect.NetworkSettings.Ports {
|
||||||
utils.Debug("Container port: " + containerPort.Port())
|
utils.Debug("Container port: " + containerPort.Port())
|
||||||
|
|
||||||
for _, hostPort := range hostConfig {
|
for _, hostPort := range hostConfig {
|
||||||
utils.Debug("Host port: " + hostPort.HostPort)
|
utils.Debug("Host port: " + hostPort.HostPort)
|
||||||
ports[hostPort.HostPort] = struct{}{}
|
ports[hostPort.HostPort] = struct{}{}
|
||||||
|
finalPorts = append(finalPorts, hostPort.HostPort + ":" + containerPort.Port())
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
finalPorts := []string{}
|
|
||||||
|
|
||||||
hasChanged := false
|
hasChanged := false
|
||||||
|
|
||||||
utils.Debug("Expected ports: " + strings.Join(expectedPorts, ", "))
|
utils.Debug("Expected ports: " + strings.Join(expectedPorts, ", "))
|
||||||
|
@ -94,21 +95,18 @@ func CheckPorts() error {
|
||||||
finalPorts = append(finalPorts, port + ":" + expectedPort)
|
finalPorts = append(finalPorts, port + ":" + expectedPort)
|
||||||
hasChanged = true
|
hasChanged = true
|
||||||
}
|
}
|
||||||
} else {
|
|
||||||
finalPorts = append(finalPorts, port + ":" + expectedPort)
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if hasChanged {
|
if hasChanged {
|
||||||
finalPorts = append(finalPorts, config.HTTPConfig.HTTPPort + ":" + config.HTTPConfig.HTTPPort)
|
|
||||||
finalPorts = append(finalPorts, config.HTTPConfig.HTTPSPort + ":" + config.HTTPConfig.HTTPSPort)
|
|
||||||
|
|
||||||
utils.Log("Port mapping changed. Needs update.")
|
utils.Log("Port mapping changed. Needs update.")
|
||||||
utils.Log("New ports: " + strings.Join(finalPorts, ", "))
|
utils.Log("New ports: " + strings.Join(finalPorts, ", "))
|
||||||
|
|
||||||
UpdatePorts(finalPorts)
|
UpdatePorts(finalPorts)
|
||||||
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
utils.Log("Port mapping not changed.")
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -121,11 +119,12 @@ func UpdatePorts(finalPorts []string) error {
|
||||||
return errors.New("SelUpdatePorts - not using Docker")
|
return errors.New("SelUpdatePorts - not using Docker")
|
||||||
}
|
}
|
||||||
|
|
||||||
|
containerName := os.Getenv("HOSTNAME")
|
||||||
|
utils.Log("SelUpdatePorts - Container name: " + containerName)
|
||||||
|
|
||||||
// make sure to remove resiude of old self updater
|
// make sure to remove resiude of old self updater
|
||||||
RemoveSelfUpdater()
|
RemoveSelfUpdater()
|
||||||
|
|
||||||
containerName := os.Getenv("HOSTNAME")
|
|
||||||
|
|
||||||
version := "latest"
|
version := "latest"
|
||||||
|
|
||||||
// if arm
|
// if arm
|
||||||
|
@ -159,6 +158,8 @@ func UpdatePorts(finalPorts []string) error {
|
||||||
},
|
},
|
||||||
};
|
};
|
||||||
|
|
||||||
|
utils.Log("SelUpdatePorts - Creating updater service")
|
||||||
|
|
||||||
err := CreateService(service, func (msg string) {})
|
err := CreateService(service, func (msg string) {})
|
||||||
|
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
|
|
@ -38,11 +38,11 @@ func startHTTPServer(router *mux.Router) {
|
||||||
Handler: router,
|
Handler: router,
|
||||||
DisableGeneralOptionsHandler: true,
|
DisableGeneralOptionsHandler: true,
|
||||||
}
|
}
|
||||||
|
|
||||||
utils.Log("Listening to HTTP on : 0.0.0.0:" + serverPortHTTP)
|
|
||||||
|
|
||||||
docker.CheckPorts()
|
docker.CheckPorts()
|
||||||
|
|
||||||
|
utils.Log("Listening to HTTP on : 0.0.0.0:" + serverPortHTTP)
|
||||||
|
|
||||||
errServ = HTTPServer.ListenAndServe()
|
errServ = HTTPServer.ListenAndServe()
|
||||||
|
|
||||||
if errServ != nil && errServ != http.ErrServerClosed {
|
if errServ != nil && errServ != http.ErrServerClosed {
|
||||||
|
@ -201,11 +201,11 @@ func InitServer() *mux.Router {
|
||||||
var tlsCert = HTTPConfig.TLSCert
|
var tlsCert = HTTPConfig.TLSCert
|
||||||
var tlsKey= HTTPConfig.TLSKey
|
var tlsKey= HTTPConfig.TLSKey
|
||||||
|
|
||||||
domains := utils.GetAllHostnames(true, false)
|
domains := utils.GetAllHostnames(true, true)
|
||||||
oldDomains := baseMainConfig.HTTPConfig.TLSKeyHostsCached
|
oldDomains := baseMainConfig.HTTPConfig.TLSKeyHostsCached
|
||||||
falledBack := false
|
falledBack := false
|
||||||
|
|
||||||
NeedsRefresh := baseMainConfig.HTTPConfig.ForceHTTPSCertificateRenewal || (tlsCert == "" || tlsKey == "") || !utils.StringArrayEquals(domains, oldDomains) || !CertificateIsValid(baseMainConfig.HTTPConfig.TLSValidUntil)
|
NeedsRefresh := baseMainConfig.HTTPConfig.ForceHTTPSCertificateRenewal || (tlsCert == "" || tlsKey == "") || !utils.HasAnyNewItem(domains, oldDomains) || !CertificateIsValid(baseMainConfig.HTTPConfig.TLSValidUntil)
|
||||||
|
|
||||||
// If we have a certificate, we can fallback to it if necessary
|
// If we have a certificate, we can fallback to it if necessary
|
||||||
CanFallback := tlsCert != "" && tlsKey != "" &&
|
CanFallback := tlsCert != "" && tlsKey != "" &&
|
||||||
|
@ -414,5 +414,5 @@ func RestartServer() {
|
||||||
HTTPServer.Shutdown(context.Background())
|
HTTPServer.Shutdown(context.Background())
|
||||||
}()
|
}()
|
||||||
|
|
||||||
utils.Log("HTTP Server stopped. Restarting...")
|
utils.Log("HTTPServer shutdown.")
|
||||||
}
|
}
|
||||||
|
|
|
@ -327,6 +327,11 @@ func LetsEncryptValidOnly(hostnames []string, acceptWildcard bool) []string {
|
||||||
|
|
||||||
func GetAllHostnames(applyWildCard bool, removePorts bool) []string {
|
func GetAllHostnames(applyWildCard bool, removePorts bool) []string {
|
||||||
mainHostname := GetMainConfig().HTTPConfig.Hostname
|
mainHostname := GetMainConfig().HTTPConfig.Hostname
|
||||||
|
|
||||||
|
if removePorts {
|
||||||
|
mainHostname = strings.Split(mainHostname, ":")[0]
|
||||||
|
}
|
||||||
|
|
||||||
hostnames := []string{
|
hostnames := []string{
|
||||||
mainHostname,
|
mainHostname,
|
||||||
}
|
}
|
||||||
|
@ -401,6 +406,15 @@ func StringArrayEquals(a []string, b []string) bool {
|
||||||
return true
|
return true
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func HasAnyNewItem(after []string, before []string) bool {
|
||||||
|
for _, value := range after {
|
||||||
|
if !StringArrayContains(before, value) {
|
||||||
|
return true
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return false
|
||||||
|
}
|
||||||
|
|
||||||
func StringArrayContains(a []string, b string) bool {
|
func StringArrayContains(a []string, b string) bool {
|
||||||
for _, value := range a {
|
for _, value := range a {
|
||||||
if value == b {
|
if value == b {
|
||||||
|
|
Loading…
Reference in a new issue