mirror of
https://github.com/YunoHost/yunohost.git
synced 2024-09-03 20:06:10 +02:00
[ux] move 'maindomain' command from 'tools' to 'domain' section
This commit is contained in:
parent
3bc4945ccf
commit
877cfc1fe5
3 changed files with 75 additions and 53 deletions
|
@ -441,6 +441,19 @@ domain:
|
||||||
- !!str ^[0-9]+$
|
- !!str ^[0-9]+$
|
||||||
- "pattern_positive_number"
|
- "pattern_positive_number"
|
||||||
|
|
||||||
|
### domain_maindomain()
|
||||||
|
maindomain:
|
||||||
|
action_help: Check the current main domain, or change it
|
||||||
|
api:
|
||||||
|
- GET /domains/main
|
||||||
|
- PUT /domains/main
|
||||||
|
arguments:
|
||||||
|
-n:
|
||||||
|
full: --new-main-domain
|
||||||
|
help: Change the current main domain
|
||||||
|
extra:
|
||||||
|
pattern: *pattern_domain
|
||||||
|
|
||||||
### certificate_status()
|
### certificate_status()
|
||||||
cert-status:
|
cert-status:
|
||||||
action_help: List status of current certificates (all by default).
|
action_help: List status of current certificates (all by default).
|
||||||
|
@ -1542,6 +1555,7 @@ tools:
|
||||||
### tools_maindomain()
|
### tools_maindomain()
|
||||||
maindomain:
|
maindomain:
|
||||||
action_help: Check the current main domain, or change it
|
action_help: Check the current main domain, or change it
|
||||||
|
deprecated: true
|
||||||
api:
|
api:
|
||||||
- GET /domains/main
|
- GET /domains/main
|
||||||
- PUT /domains/main
|
- PUT /domains/main
|
||||||
|
|
|
@ -34,10 +34,12 @@ from moulinette.utils.log import getActionLogger
|
||||||
|
|
||||||
import yunohost.certificate
|
import yunohost.certificate
|
||||||
|
|
||||||
|
from yunohost.app import app_ssowatconf
|
||||||
from yunohost.regenconf import regen_conf
|
from yunohost.regenconf import regen_conf
|
||||||
from yunohost.utils.network import get_public_ip
|
from yunohost.utils.network import get_public_ip
|
||||||
from yunohost.log import is_unit_operation
|
from yunohost.log import is_unit_operation
|
||||||
from yunohost.hook import hook_callback
|
from yunohost.hook import hook_callback
|
||||||
|
from yunohost.tools import _set_hostname
|
||||||
|
|
||||||
logger = getActionLogger('yunohost.domain')
|
logger = getActionLogger('yunohost.domain')
|
||||||
|
|
||||||
|
@ -233,6 +235,62 @@ def domain_dns_conf(domain, ttl=None):
|
||||||
return result
|
return result
|
||||||
|
|
||||||
|
|
||||||
|
@is_unit_operation()
|
||||||
|
def domain_maindomain(operation_logger, new_main_domain=None):
|
||||||
|
"""
|
||||||
|
Check the current main domain, or change it
|
||||||
|
|
||||||
|
Keyword argument:
|
||||||
|
new_main_domain -- The new domain to be set as the main domain
|
||||||
|
|
||||||
|
"""
|
||||||
|
|
||||||
|
# If no new domain specified, we return the current main domain
|
||||||
|
if not new_main_domain:
|
||||||
|
return {'current_main_domain': _get_maindomain()}
|
||||||
|
|
||||||
|
# Check domain exists
|
||||||
|
if new_main_domain not in domain_list()['domains']:
|
||||||
|
raise YunohostError('domain_unknown')
|
||||||
|
|
||||||
|
operation_logger.related_to.append(('domain', new_main_domain))
|
||||||
|
operation_logger.start()
|
||||||
|
|
||||||
|
# Apply changes to ssl certs
|
||||||
|
ssl_key = "/etc/ssl/private/yunohost_key.pem"
|
||||||
|
ssl_crt = "/etc/ssl/private/yunohost_crt.pem"
|
||||||
|
new_ssl_key = "/etc/yunohost/certs/%s/key.pem" % new_main_domain
|
||||||
|
new_ssl_crt = "/etc/yunohost/certs/%s/crt.pem" % new_main_domain
|
||||||
|
|
||||||
|
try:
|
||||||
|
if os.path.exists(ssl_key) or os.path.lexists(ssl_key):
|
||||||
|
os.remove(ssl_key)
|
||||||
|
if os.path.exists(ssl_crt) or os.path.lexists(ssl_crt):
|
||||||
|
os.remove(ssl_crt)
|
||||||
|
|
||||||
|
os.symlink(new_ssl_key, ssl_key)
|
||||||
|
os.symlink(new_ssl_crt, ssl_crt)
|
||||||
|
|
||||||
|
_set_maindomain(new_main_domain)
|
||||||
|
except Exception as e:
|
||||||
|
logger.warning("%s" % e, exc_info=1)
|
||||||
|
raise YunohostError('maindomain_change_failed')
|
||||||
|
|
||||||
|
_set_hostname(new_main_domain)
|
||||||
|
|
||||||
|
# Generate SSOwat configuration file
|
||||||
|
app_ssowatconf()
|
||||||
|
|
||||||
|
# Regen configurations
|
||||||
|
try:
|
||||||
|
with open('/etc/yunohost/installed', 'r'):
|
||||||
|
regen_conf()
|
||||||
|
except IOError:
|
||||||
|
pass
|
||||||
|
|
||||||
|
logger.success(m18n.n('maindomain_changed'))
|
||||||
|
|
||||||
|
|
||||||
def domain_cert_status(domain_list, full=False):
|
def domain_cert_status(domain_list, full=False):
|
||||||
return yunohost.certificate.certificate_status(domain_list, full)
|
return yunohost.certificate.certificate_status(domain_list, full)
|
||||||
|
|
||||||
|
|
|
@ -39,7 +39,7 @@ from moulinette.utils.log import getActionLogger
|
||||||
from moulinette.utils.process import check_output, call_async_output
|
from moulinette.utils.process import check_output, call_async_output
|
||||||
from moulinette.utils.filesystem import read_json, write_to_json, read_yaml, write_to_yaml
|
from moulinette.utils.filesystem import read_json, write_to_json, read_yaml, write_to_yaml
|
||||||
from yunohost.app import app_fetchlist, app_info, app_upgrade, app_ssowatconf, app_list, _install_appslist_fetch_cron
|
from yunohost.app import app_fetchlist, app_info, app_upgrade, app_ssowatconf, app_list, _install_appslist_fetch_cron
|
||||||
from yunohost.domain import domain_add, domain_list, _get_maindomain, _set_maindomain
|
from yunohost.domain import domain_add, domain_list
|
||||||
from yunohost.dyndns import _dyndns_available, _dyndns_provides
|
from yunohost.dyndns import _dyndns_available, _dyndns_provides
|
||||||
from yunohost.firewall import firewall_upnp
|
from yunohost.firewall import firewall_upnp
|
||||||
from yunohost.service import service_status, service_start, service_enable
|
from yunohost.service import service_status, service_start, service_enable
|
||||||
|
@ -166,58 +166,8 @@ def tools_adminpw(new_password, check_strength=True):
|
||||||
|
|
||||||
@is_unit_operation()
|
@is_unit_operation()
|
||||||
def tools_maindomain(operation_logger, new_main_domain=None):
|
def tools_maindomain(operation_logger, new_main_domain=None):
|
||||||
"""
|
from yunohost.domain import domain_maindomain
|
||||||
Check the current main domain, or change it
|
return domain_main_domain(new_main_domain=new_main_domain)
|
||||||
|
|
||||||
Keyword argument:
|
|
||||||
new_domain -- The new domain to be set as the main domain
|
|
||||||
|
|
||||||
"""
|
|
||||||
|
|
||||||
# If no new domain specified, we return the current main domain
|
|
||||||
if not new_domain:
|
|
||||||
return {'current_main_domain': _get_maindomain()}
|
|
||||||
|
|
||||||
# Check domain exists
|
|
||||||
if new_domain not in domain_list()['domains']:
|
|
||||||
raise YunohostError('domain_unknown')
|
|
||||||
|
|
||||||
operation_logger.related_to.append(('domain', new_domain))
|
|
||||||
operation_logger.start()
|
|
||||||
|
|
||||||
# Apply changes to ssl certs
|
|
||||||
ssl_key = "/etc/ssl/private/yunohost_key.pem"
|
|
||||||
ssl_crt = "/etc/ssl/private/yunohost_crt.pem"
|
|
||||||
new_ssl_key = "/etc/yunohost/certs/%s/key.pem" % new_domain
|
|
||||||
new_ssl_crt = "/etc/yunohost/certs/%s/crt.pem" % new_domain
|
|
||||||
|
|
||||||
try:
|
|
||||||
if os.path.exists(ssl_key) or os.path.lexists(ssl_key):
|
|
||||||
os.remove(ssl_key)
|
|
||||||
if os.path.exists(ssl_crt) or os.path.lexists(ssl_crt):
|
|
||||||
os.remove(ssl_crt)
|
|
||||||
|
|
||||||
os.symlink(new_ssl_key, ssl_key)
|
|
||||||
os.symlink(new_ssl_crt, ssl_crt)
|
|
||||||
|
|
||||||
_set_maindomain(new_domain)
|
|
||||||
except Exception as e:
|
|
||||||
logger.warning("%s" % e, exc_info=1)
|
|
||||||
raise YunohostError('maindomain_change_failed')
|
|
||||||
|
|
||||||
_set_hostname(new_domain)
|
|
||||||
|
|
||||||
# Generate SSOwat configuration file
|
|
||||||
app_ssowatconf()
|
|
||||||
|
|
||||||
# Regen configurations
|
|
||||||
try:
|
|
||||||
with open('/etc/yunohost/installed', 'r'):
|
|
||||||
regen_conf()
|
|
||||||
except IOError:
|
|
||||||
pass
|
|
||||||
|
|
||||||
logger.success(m18n.n('maindomain_changed'))
|
|
||||||
|
|
||||||
|
|
||||||
def _set_hostname(hostname, pretty_hostname=None):
|
def _set_hostname(hostname, pretty_hostname=None):
|
||||||
|
|
Loading…
Add table
Reference in a new issue