mirror of
git://git.yoctoproject.org/layerindex-web.git
synced 2025-07-19 20:59:01 +02:00
dockersetup: move HTTPS code to its own function
Refactor out HTTPS configuration code to a new function to give the code a bit more structure. Signed-off-by: Paul Eggleton <paul.eggleton@linux.intel.com>
This commit is contained in:
parent
e78c4dae9c
commit
4370564b91
139
dockersetup.py
139
dockersetup.py
|
@ -251,75 +251,8 @@ def edit_dockerfile_web(hostname, no_https):
|
|||
writefile("Dockerfile.web", ''.join(newlines))
|
||||
|
||||
|
||||
def generatepasswords(passwordlength):
|
||||
return ''.join([random.SystemRandom().choice('abcdefghijklmnopqrstuvwxyz0123456789!@#%^&*-_=+') for i in range(passwordlength)])
|
||||
|
||||
def readfile(filename):
|
||||
f = open(filename,'r')
|
||||
filedata = f.read()
|
||||
f.close()
|
||||
return filedata
|
||||
|
||||
def writefile(filename, data):
|
||||
f = open(filename,'w')
|
||||
f.write(data)
|
||||
f.close()
|
||||
|
||||
|
||||
# Generate secret key and database password
|
||||
secretkey = generatepasswords(50)
|
||||
dbpassword = generatepasswords(10)
|
||||
rmqpassword = generatepasswords(10)
|
||||
|
||||
## Get user arguments and modify config files
|
||||
hostname, http_proxy, https_proxy, dbfile, port, proxymod, portmapping, no_https, cert, cert_key, letsencrypt = get_args()
|
||||
|
||||
https_port = None
|
||||
http_port = None
|
||||
for portmap in portmapping.split(','):
|
||||
outport, inport = portmap.split(':', 1)
|
||||
if inport == '443':
|
||||
https_port = outport
|
||||
elif inport == '80':
|
||||
http_port = outport
|
||||
if (not https_port) and (not no_https):
|
||||
print("No HTTPS port mapping (to port 443 inside the container) was specified and --no-https was not specified")
|
||||
sys.exit(1)
|
||||
if not http_port:
|
||||
print("Port mapping must include a mapping to port 80 inside the container")
|
||||
sys.exit(1)
|
||||
|
||||
print("""
|
||||
OE Layer Index Docker setup script
|
||||
----------------------------------
|
||||
|
||||
This script will set up a cluster of Docker containers needed to run the
|
||||
OpenEmbedded layer index application.
|
||||
|
||||
Configuration is controlled by command-line arguments. If you need to check
|
||||
which options you need to specify, press Ctrl+C now and then run the script
|
||||
again with the --help argument.
|
||||
|
||||
Note that this script does have interactive prompts, so be prepared to
|
||||
provide information as needed.
|
||||
""")
|
||||
try:
|
||||
input('Press Enter to begin setup (or Ctrl+C to exit)...')
|
||||
except KeyboardInterrupt:
|
||||
print('')
|
||||
sys.exit(2)
|
||||
|
||||
if http_proxy:
|
||||
edit_gitproxy(proxymod, port)
|
||||
if http_proxy or https_proxy:
|
||||
edit_dockerfile(http_proxy, https_proxy)
|
||||
|
||||
edit_dockercompose(hostname, dbpassword, secretkey, rmqpassword, portmapping, letsencrypt)
|
||||
|
||||
edit_dockerfile_web(hostname, no_https)
|
||||
|
||||
def setup_https(hostname, http_port, https_port, letsencrypt, cert, cert_key):
|
||||
emailaddr = None
|
||||
if not no_https:
|
||||
local_cert_dir = os.path.abspath('docker/certs')
|
||||
container_cert_dir = '/opt/cert'
|
||||
if letsencrypt:
|
||||
|
@ -421,6 +354,76 @@ if not no_https:
|
|||
sys.exit(1)
|
||||
|
||||
|
||||
def generatepasswords(passwordlength):
|
||||
return ''.join([random.SystemRandom().choice('abcdefghijklmnopqrstuvwxyz0123456789!@#%^&*-_=+') for i in range(passwordlength)])
|
||||
|
||||
def readfile(filename):
|
||||
f = open(filename,'r')
|
||||
filedata = f.read()
|
||||
f.close()
|
||||
return filedata
|
||||
|
||||
def writefile(filename, data):
|
||||
f = open(filename,'w')
|
||||
f.write(data)
|
||||
f.close()
|
||||
|
||||
|
||||
# Generate secret key and database password
|
||||
secretkey = generatepasswords(50)
|
||||
dbpassword = generatepasswords(10)
|
||||
rmqpassword = generatepasswords(10)
|
||||
|
||||
## Get user arguments and modify config files
|
||||
hostname, http_proxy, https_proxy, dbfile, port, proxymod, portmapping, no_https, cert, cert_key, letsencrypt = get_args()
|
||||
|
||||
https_port = None
|
||||
http_port = None
|
||||
for portmap in portmapping.split(','):
|
||||
outport, inport = portmap.split(':', 1)
|
||||
if inport == '443':
|
||||
https_port = outport
|
||||
elif inport == '80':
|
||||
http_port = outport
|
||||
if (not https_port) and (not no_https):
|
||||
print("No HTTPS port mapping (to port 443 inside the container) was specified and --no-https was not specified")
|
||||
sys.exit(1)
|
||||
if not http_port:
|
||||
print("Port mapping must include a mapping to port 80 inside the container")
|
||||
sys.exit(1)
|
||||
|
||||
print("""
|
||||
OE Layer Index Docker setup script
|
||||
----------------------------------
|
||||
|
||||
This script will set up a cluster of Docker containers needed to run the
|
||||
OpenEmbedded Layer Index application.
|
||||
|
||||
Configuration is controlled by command-line arguments. If you need to check
|
||||
which options you need to specify, press Ctrl+C now and then run the script
|
||||
again with the --help argument.
|
||||
|
||||
Note that this script does have interactive prompts, so be prepared to
|
||||
provide information as needed.
|
||||
""")
|
||||
try:
|
||||
input('Press Enter to begin setup (or Ctrl+C to exit)...')
|
||||
except KeyboardInterrupt:
|
||||
print('')
|
||||
sys.exit(2)
|
||||
|
||||
if http_proxy:
|
||||
edit_gitproxy(proxymod, port)
|
||||
if http_proxy or https_proxy:
|
||||
edit_dockerfile(http_proxy, https_proxy)
|
||||
|
||||
edit_dockercompose(hostname, dbpassword, secretkey, rmqpassword, portmapping, letsencrypt)
|
||||
|
||||
edit_dockerfile_web(hostname, no_https)
|
||||
|
||||
if not no_https:
|
||||
setup_https(hostname, http_port, https_port, letsencrypt, cert, cert_key)
|
||||
|
||||
## Start up containers
|
||||
return_code = subprocess.call("docker-compose up -d", shell=True)
|
||||
if return_code != 0:
|
||||
|
|
Loading…
Reference in New Issue
Block a user