mirror of
https://github.com/YunoHost/moulinette.git
synced 2024-09-03 20:06:31 +02:00
Check already used domain+path
This commit is contained in:
parent
4a02aa2ad1
commit
f2c0e0f1af
1 changed files with 21 additions and 14 deletions
|
@ -158,16 +158,15 @@ def app_install(app, domain, path='/', label=None, mode='private'):
|
||||||
|
|
||||||
"""
|
"""
|
||||||
# TODO: Virer la règle "default" lemon
|
# TODO: Virer la règle "default" lemon
|
||||||
|
|
||||||
# TODO: check path and url_to_(un)protect pattern
|
# TODO: check path and url_to_(un)protect pattern
|
||||||
|
|
||||||
# TODO: check if app is installed on this domain/path (or subpath)
|
# TODO: check if app is installed on this domain/path (or subpath)
|
||||||
|
|
||||||
with YunoHostLDAP() as yldap:
|
with YunoHostLDAP() as yldap:
|
||||||
|
|
||||||
###########################################
|
|
||||||
# Fetch or extract sources #
|
##########################################
|
||||||
###########################################
|
# Fetch or extract sources #
|
||||||
|
##########################################
|
||||||
|
|
||||||
try: os.listdir(install_tmp)
|
try: os.listdir(install_tmp)
|
||||||
except OSError: os.makedirs(install_tmp)
|
except OSError: os.makedirs(install_tmp)
|
||||||
|
@ -190,6 +189,20 @@ def app_install(app, domain, path='/', label=None, mode='private'):
|
||||||
if not lvl(manifest, 'yunohost', 'multi_instance') or not is_true(manifest['yunohost']['multi_instance']):
|
if not lvl(manifest, 'yunohost', 'multi_instance') or not is_true(manifest['yunohost']['multi_instance']):
|
||||||
raise YunoHostError(1, _("App is already installed"))
|
raise YunoHostError(1, _("App is already installed"))
|
||||||
|
|
||||||
|
if domain +'.d' in listdir(a2_settings_path):
|
||||||
|
conf_list = listdir(a2_settings_path +'/'+ domain + '.d')
|
||||||
|
domain_app_list = []
|
||||||
|
for conf in conf_list:
|
||||||
|
if '.app.conf' in conf:
|
||||||
|
domain_app_list.append(conf[:len(conf)-9]
|
||||||
|
|
||||||
|
for installed_app in domain_app_list:
|
||||||
|
open(apps_setting_path +'/'+ installed_app +'/app_setting.yml') as f:
|
||||||
|
app_settings = yaml.load(f)
|
||||||
|
|
||||||
|
if app_settings['path'] == path:
|
||||||
|
raise YunoHostError(1, _("An app is already installed on this location"))
|
||||||
|
|
||||||
unique_app_id = manifest['yunohost']['uid'] +'__'+ str(instance_number)
|
unique_app_id = manifest['yunohost']['uid'] +'__'+ str(instance_number)
|
||||||
app_final_path = apps_path +'/'+ unique_app_id
|
app_final_path = apps_path +'/'+ unique_app_id
|
||||||
script_var_dict = { 'APP_DIR': app_tmp_folder }
|
script_var_dict = { 'APP_DIR': app_tmp_folder }
|
||||||
|
@ -246,8 +259,6 @@ def app_install(app, domain, path='/', label=None, mode='private'):
|
||||||
else:
|
else:
|
||||||
raise YunoHostError(22, _("Invalid privacy mode"))
|
raise YunoHostError(22, _("Invalid privacy mode"))
|
||||||
|
|
||||||
if os.path.exists(lemon_tmp_conf): os.remove(lemon_tmp_conf)
|
|
||||||
|
|
||||||
lemon_conf_lines = [
|
lemon_conf_lines = [
|
||||||
"$tmp->{'locationRules'}->{'"+ domain +"'}->{'(?#"+ unique_app_id +"Z)^"+ path +"'} = '"+ lemon_mode +"';"
|
"$tmp->{'locationRules'}->{'"+ domain +"'}->{'(?#"+ unique_app_id +"Z)^"+ path +"'} = '"+ lemon_mode +"';"
|
||||||
]
|
]
|
||||||
|
@ -284,12 +295,9 @@ def app_install(app, domain, path='/', label=None, mode='private'):
|
||||||
'</IfModule>'
|
'</IfModule>'
|
||||||
])
|
])
|
||||||
|
|
||||||
a2_conf_file = a2_settings_path +'/'+ domain +'.d/'+ unique_app_id +'.app.conf'
|
with open(a2_settings_path +'/'+ domain +'.d/'+ unique_app_id +'.app.conf', 'w') as a2_conf:
|
||||||
if os.path.exists(a2_conf_file): os.remove(a2_conf_file)
|
|
||||||
|
|
||||||
with open(a2_conf_file, 'a') as file:
|
|
||||||
for line in a2_conf_lines:
|
for line in a2_conf_lines:
|
||||||
file.write(line + '\n')
|
a2_conf.write(line + '\n')
|
||||||
|
|
||||||
|
|
||||||
#########################################
|
#########################################
|
||||||
|
@ -310,7 +318,6 @@ def app_install(app, domain, path='/', label=None, mode='private'):
|
||||||
shutil.rmtree(app_final_path + manifest['yunohost']['script_path'])
|
shutil.rmtree(app_final_path + manifest['yunohost']['script_path'])
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
#########################################
|
#########################################
|
||||||
# Write App settings #
|
# Write App settings #
|
||||||
#########################################
|
#########################################
|
||||||
|
@ -457,7 +464,7 @@ def _init_app_db(db_user, db_pwd, db_dict):
|
||||||
"""
|
"""
|
||||||
# Need MySQL DB ?
|
# Need MySQL DB ?
|
||||||
if lvl(db_dict, 'has_mysql_db') and is_true(db_dict['has_mysql_db']):
|
if lvl(db_dict, 'has_mysql_db') and is_true(db_dict['has_mysql_db']):
|
||||||
mysql_root_pwd = open('/etc/yunohost/mysql', 'rb').read().rstrip()
|
mysql_root_pwd = open('/etc/yunohost/mysql').read().rstrip()
|
||||||
mysql_command = 'mysql -u root -p'+ mysql_root_pwd +' -e "CREATE DATABASE '+ db_user +' ; GRANT ALL PRIVILEGES ON '+ db_user +'.* TO \''+ db_user +'\'@localhost IDENTIFIED BY \''+ db_pwd +'\';"'
|
mysql_command = 'mysql -u root -p'+ mysql_root_pwd +' -e "CREATE DATABASE '+ db_user +' ; GRANT ALL PRIVILEGES ON '+ db_user +'.* TO \''+ db_user +'\'@localhost IDENTIFIED BY \''+ db_pwd +'\';"'
|
||||||
if os.system(mysql_command) != 0:
|
if os.system(mysql_command) != 0:
|
||||||
raise YunoHostError(1, _("MySQL DB creation failed"))
|
raise YunoHostError(1, _("MySQL DB creation failed"))
|
||||||
|
|
Loading…
Reference in a new issue