You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
112 lines
4.3 KiB
112 lines
4.3 KiB
import os
|
|
import random
|
|
import string
|
|
import sys
|
|
import getpass
|
|
from ee.core.fileutils import EEFileUtils
|
|
from ee.core.mysql import EEMysql
|
|
|
|
|
|
def setup_domain(self, data):
|
|
|
|
ee_domain_name = data['site_name']
|
|
ee_site_webroot = data['webroot']
|
|
print("Creating {0}, please wait...".format(ee_domain_name))
|
|
# write nginx config for file
|
|
try:
|
|
ee_site_nginx_conf = open('/etc/nginx/sites-available/{0}.conf'
|
|
.format(ee_domain_name), 'w')
|
|
|
|
self.app.render((data), 'virtualconf.mustache',
|
|
out=ee_site_nginx_conf)
|
|
ee_site_nginx_conf.close()
|
|
except IOError as e:
|
|
print("Unable to create nginx conf for {2} ({0}): {1}"
|
|
.format(e.errno, e.strerror, ee_domain_name))
|
|
sys.exit(1)
|
|
except Exception as e:
|
|
print("{0}".format(e))
|
|
sys.exit(1)
|
|
|
|
# create symbolic link for
|
|
EEFileUtils.create_symlink(self, ['/etc/nginx/sites-available/{0}.conf'
|
|
.format(ee_domain_name),
|
|
'/etc/nginx/sites-enabled/{0}.conf'
|
|
.format(ee_domain_name)])
|
|
|
|
# Creating htdocs & logs directory
|
|
try:
|
|
if not os.path.exists('{0}/htdocs'.format(ee_site_webroot)):
|
|
os.makedirs('{0}/htdocs'.format(ee_site_webroot))
|
|
if not os.path.exists('{0}/logs'.format(ee_site_webroot)):
|
|
os.makedirs('{0}/logs'.format(ee_site_webroot))
|
|
except Exception as e:
|
|
print("{0}".format(e))
|
|
sys.exit(1)
|
|
|
|
EEFileUtils.create_symlink(self, ['/var/log/nginx/{0}.access.log'
|
|
.format(ee_domain_name),
|
|
'{0}/logs/access.log'
|
|
.format(ee_site_webroot)])
|
|
EEFileUtils.create_symlink(self, ['/var/log/nginx/{0}.error.log'
|
|
.format(ee_domain_name),
|
|
'{0}/logs/error.log'
|
|
.format(ee_site_webroot)])
|
|
|
|
|
|
def setup_database(self, data):
|
|
ee_domain_name = data['site_name']
|
|
ee_random = (''.join(random.sample(string.ascii_uppercase +
|
|
string.ascii_lowercase + string.digits, 15)))
|
|
ee_replace_dot = ee_domain_name.replace('.', '_')
|
|
prompt_dbname = self.app.config.get('mysql', 'db-name')
|
|
prompt_dbuser = self.app.config.get('mysql', 'db-user')
|
|
ee_mysql_host = self.app.config.get('mysql', 'grant-host')
|
|
print(ee_random)
|
|
|
|
if prompt_dbname == 'True':
|
|
try:
|
|
ee_db_name = input('Enter the MySQL database name [{0}]:'
|
|
.format(ee_replace_dot))
|
|
except EOFError as e:
|
|
print("{0} {1}".format(e.errorno, e.strerror))
|
|
sys.exit(0)
|
|
|
|
if not ee_db_name:
|
|
ee_db_name = ee_replace_dot
|
|
|
|
if prompt_dbuser:
|
|
try:
|
|
ee_db_username = input('Enter the MySQL database user name [{0}]: '
|
|
.format(ee_replace_dot))
|
|
ee_db_password = input('Enter the MySQL database password [{0}]: '
|
|
.format(ee_random))
|
|
except EOFError as e:
|
|
print("{0} {1}".format(e.errorno, e.strerror))
|
|
sys.exit(1)
|
|
|
|
if not ee_db_username:
|
|
ee_db_username = ee_replace_dot
|
|
if not ee_db_password:
|
|
ee_db_password = ee_random
|
|
|
|
if len(ee_db_name) > 16:
|
|
print('Autofix MySQL username (ERROR 1470 (HY000)), please wait...'
|
|
)
|
|
ee_random10 = (''.join(random.sample(string.ascii_uppercase +
|
|
string.ascii_lowercase + string.digits, 10)))
|
|
ee_db_name = (ee_db_name[0:6] + ee_random10)
|
|
|
|
# create MySQL database
|
|
EEMysql.execute(self, "create database \'{0}\'"
|
|
.format(ee_db_name))
|
|
|
|
# Create MySQL User
|
|
EEMysql.execute(self,
|
|
"create user \'{0}\'@\'{1}\' identified by \'{2}\'"
|
|
.format(ee_db_username, ee_mysql_host, ee_db_password))
|
|
|
|
# Grant permission
|
|
EEMysql.execute(self,
|
|
"grant all privileges on \'{0}\'.* to \'{1}\'@\'{2}\'"
|
|
.format(ee_db_name, ee_db_username, ee_db_password))
|
|
|