host = 'jph.answer.ai'API
Basic API for Caddy
Caddy admin
Initial functions
get_id
def get_id(
path
):
Get a ID full URL from a path
get_id('jph.answer.ai')'http://localhost:2019/id/jph.answer.ai/'
get_path
def get_path(
path
):
Get a config full URL from a path
get_path('/apps/tls/automation/policies')'http://localhost:2019/config/apps/tls/automation/policies/'
gid
def gid(
path:str='/'
):
Gets the id at path
has_id
def has_id(
id
):
Check if id is set up
gcfg
def gcfg(
path:str='/', method:str='get'
):
Gets the config at path
has_path
def has_path(
path
):
Check if path is set up
gcfg()pid
def pid(
d, path:str='/', method:str='post'
):
Puts the config d into path
pcfg
def pcfg(
d, path:str='/', method:str='post'
):
Puts the config d into path
# pcfg({})nested_setdict
def nested_setdict(
sd, value, keys:VAR_POSITIONAL
):
Returns sd updated to set value at the path keys
nested_setdict({'a':'b'}, {'c':'d'}, 'apps', 'http', 'servers', 'srv0'){'a': 'b', 'apps': {'http': {'servers': {'srv0': {'c': 'd'}}}}}
path2keys
def path2keys(
path
):
Split path by ‘/’ into a list
path2keys('/apps/tls/automation/policies')['apps', 'tls', 'automation', 'policies']
keys2path
def keys2path(
keys:VAR_POSITIONAL
):
Join keys into a ‘/’ separated path
keys2path('apps', 'tls', 'automation', 'policies')'/apps/tls/automation/policies'
nested_setcfg
def nested_setcfg(
value, keys:VAR_POSITIONAL
):
init_path
def init_path(
path, skip:int=0
):
Automation setup
cf_token = os.environ.get('CADDY_CF_TOKEN', 'XXX')get_acme_config
def get_acme_config(
token
):
add_tls_internal_config
def add_tls_internal_config(
):
add_acme_config
def add_acme_config(
cf_token
):
# add_acme_config(cf_token)# gcfg('/apps/tls/automation/policies')[0]Route setup
init_routes
def init_routes(
srv_name:str='srv0', skip:int=1
):
Create basic http server/routes config
init_routes()setup_pki_trust
def setup_pki_trust(
install_trust
):
Configure PKI certificate authority trust installation
setup_caddy
def setup_caddy(
cf_token:NoneType=None, # Cloudflare API token
srv_name:str='srv0', # Server name in the Caddyfile
local:bool=False, # Whether or not this is for localdev or deployment
install_trust:bool=None, # Install trust store?
):
Create SSL config and HTTP app skeleton
# pcfg({})
setup_caddy(cf_token)# gcfg(srvs_path)add_route
def add_route(
route
):
Add route dict to config
del_id
def del_id(
id
):
Delete route for id (e.g. a host)
# del_id(host)add_reverse_proxy
def add_reverse_proxy(
from_host, to_url, st_delay:str='1m', compress:bool=True
):
Create a reverse proxy handler
host = 'foo.fast.ai'# add_reverse_proxy(host, "localhost:5001")# gid(host)add_wildcard_route
def add_wildcard_route(
domain
):
Add a wildcard subdomain
add_wildcard_route('something.fast.ai')add_sub_reverse_proxy
def add_sub_reverse_proxy(
domain, subdomain, port:Union, # A single port or list of ports
host:str='localhost', st_delay:str='1m', encode:bool=True
):
Add a reverse proxy to a wildcard subdomain supporting multiple ports
add_sub_reverse_proxy('something.fast.ai', 'foo', 5001)del_id('foo.something.fast.ai')