maybe add sub path support
Some checks failed
Publish Docker Image / docker (push) Failing after 1m34s
Some checks failed
Publish Docker Image / docker (push) Failing after 1m34s
This commit is contained in:
parent
97ac22e62e
commit
30e3d3363c
@ -27,10 +27,6 @@ class AddCommand(Command):
|
|||||||
print(f"Adding \"{domain}\" -> \"{serviceHost}\"")
|
print(f"Adding \"{domain}\" -> \"{serviceHost}\"")
|
||||||
|
|
||||||
traefikConfig.addRouter(name, domain, serviceHost)
|
traefikConfig.addRouter(name, domain, serviceHost)
|
||||||
traefikConfig.addService(name, serviceHost)
|
|
||||||
|
|
||||||
traefikConfig.save()
|
traefikConfig.save()
|
||||||
|
|
||||||
# restartTraefik()
|
|
||||||
|
|
||||||
print(f"Access your service at http://{domain}")
|
print(f"Access your service at http://{domain}")
|
41
src/command/impl/addSubPathCommand.py
Normal file
41
src/command/impl/addSubPathCommand.py
Normal file
@ -0,0 +1,41 @@
|
|||||||
|
from command.command import Command
|
||||||
|
from traefik.traefikConfig import TraefikConfig
|
||||||
|
from utils.dockerUtils import restartTraefik
|
||||||
|
|
||||||
|
class AddSubPathCommand(Command):
|
||||||
|
def __init__(self):
|
||||||
|
super().__init__("add-path", "Add sub path to a domain (eg: bob.com/joe)", "add-path <name> <domain> <path> <service host>")
|
||||||
|
|
||||||
|
def execute(self, traefikConfig: TraefikConfig, args):
|
||||||
|
if len(args) < 3:
|
||||||
|
self.printUsage()
|
||||||
|
return
|
||||||
|
|
||||||
|
domain = args[1]
|
||||||
|
name = args[0] + "-sub-path-" + domain
|
||||||
|
path = args[2]
|
||||||
|
serviceHost = args[3]
|
||||||
|
|
||||||
|
# Fix the path
|
||||||
|
if path.startswith("/") == False:
|
||||||
|
path = "/" + path
|
||||||
|
|
||||||
|
if traefikConfig.hasPathRewrite(name):
|
||||||
|
print(f"Router \"{name}\" already exists")
|
||||||
|
return
|
||||||
|
|
||||||
|
if traefikConfig.hasRouter(name) == False:
|
||||||
|
print(f"Router \"{name}\" does not exist")
|
||||||
|
return
|
||||||
|
|
||||||
|
# Validate if the service host is a valid URL
|
||||||
|
if not serviceHost.startswith("http://") and not serviceHost.startswith("https://"):
|
||||||
|
print(f"Service host \"{serviceHost}\" is not a valid URL")
|
||||||
|
return
|
||||||
|
|
||||||
|
print(f"Adding \"{domain}\" -> \"{serviceHost}\"")
|
||||||
|
|
||||||
|
traefikConfig.addSubPathRouter(name, domain, path, serviceHost)
|
||||||
|
traefikConfig.save()
|
||||||
|
|
||||||
|
print(f"Access your service at http://{domain}")
|
@ -38,6 +38,29 @@ class TraefikConfig:
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
def addSubPathRouter(self, name, domain, path, serviceHost):
|
||||||
|
self.addPathRewrite(name, path)
|
||||||
|
|
||||||
|
# Add router
|
||||||
|
self.configYml["http"]["routers"][name] = {
|
||||||
|
"entryPoints": ["https"],
|
||||||
|
"rule": "Host(`%s`) && PathPrefix(`%s`)" % (domain, path),
|
||||||
|
"middlewares": ["default-headers", "https-redirectscheme", name],
|
||||||
|
"tls": {},
|
||||||
|
"service": name
|
||||||
|
}
|
||||||
|
|
||||||
|
# Add service
|
||||||
|
self.configYml["http"]["services"][name] = {
|
||||||
|
"loadBalancer": {
|
||||||
|
"servers": [
|
||||||
|
{
|
||||||
|
"url": serviceHost
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
def removeRouter(self, name):
|
def removeRouter(self, name):
|
||||||
# Remove router
|
# Remove router
|
||||||
del self.configYml["http"]["routers"][name]
|
del self.configYml["http"]["routers"][name]
|
||||||
@ -47,16 +70,14 @@ class TraefikConfig:
|
|||||||
|
|
||||||
def hasRouter(self, name):
|
def hasRouter(self, name):
|
||||||
return name in self.configYml["http"]["routers"]
|
return name in self.configYml["http"]["routers"]
|
||||||
|
|
||||||
|
def hasPathRewrite(self, name):
|
||||||
|
return name in self.configYml["http"]["middlewares"]
|
||||||
|
|
||||||
def addService(self, name, serviceHost):
|
def addPathRewrite(self, name, path):
|
||||||
# Add service
|
self.configYml["http"]["middlewares"][name] = {
|
||||||
self.configYml["http"]["services"][name] = {
|
"stripPrefix": {
|
||||||
"loadBalancer": {
|
"prefixes": [path]
|
||||||
"servers": [
|
|
||||||
{
|
|
||||||
"url": serviceHost
|
|
||||||
}
|
|
||||||
]
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user