Example #1
0
def _apply_changes(request, old_status, new_status):
    """Apply the changes to Dynamic DNS client."""
    logger.info('New status is - %s', new_status)
    logger.info('Old status was - %s', old_status)

    if new_status['dynamicdns_secret'] == '':
        new_status['dynamicdns_secret'] = old_status['dynamicdns_secret']

    if new_status['dynamicdns_ipurl'] == '':
        new_status['dynamicdns_ipurl'] = EMPTYSTRING

    if new_status['dynamicdns_update_url'] == '':
        new_status['dynamicdns_update_url'] = EMPTYSTRING

    if new_status['dynamicdns_server'] == '':
        new_status['dynamicdns_server'] = EMPTYSTRING

    if new_status['service_type'] == 'GnuDIP':
        new_status['dynamicdns_update_url'] = EMPTYSTRING
    else:
        new_status['dynamicdns_server'] = EMPTYSTRING

    if old_status != new_status:
        disable_ssl_check = "disabled"
        use_http_basic_auth = "disabled"

        if new_status['disable_SSL_cert_check']:
            disable_ssl_check = "enabled"

        if new_status['use_http_basic_auth']:
            use_http_basic_auth = "enabled"

        _run(['configure', '-s', new_status['dynamicdns_server'],
              '-d', new_status['dynamicdns_domain'],
              '-u', new_status['dynamicdns_user'],
              '-p',
              '-I', new_status['dynamicdns_ipurl'],
              '-U', new_status['dynamicdns_update_url'],
              '-c', disable_ssl_check,
              '-b', use_http_basic_auth],
             input=new_status['dynamicdns_secret'].encode())

        if old_status['enabled']:
            domain_removed.send_robust(
                sender='dynamicdns', domain_type='dynamicdnsservice',
                name=old_status['dynamicdns_domain'])
            _run(['stop'])

        if new_status['enabled']:
            services = get_enabled_services(new_status['dynamicdns_domain'])
            domain_added.send_robust(
                sender='dynamicdns', domain_type='dynamicdnsservice',
                name=new_status['dynamicdns_domain'],
                description=_('Dynamic DNS Service'),
                services=services)
            _run(['start'])

        messages.success(request, _('Configuration updated'))
    else:
        logger.info('Nothing changed')
Example #2
0
def update_names_module(initial_registration=False, enabled=None,
                        kite_name=None):
    """
    Update the PageKite domain and services of the 'names' module.

    - initial_registration: Boolean (optional): Register also if not enabled
    - enabled: Boolean (optional) whether PageKite is enabled
    - kite_name: String (optional)
    """
    domain_removed.send_robust(sender='pagekite', domain_type='pagekite')

    if enabled is None:
        try:
            enabled = get_pagekite_config()['enabled']
        except IndexError:
            enabled = False

    if enabled:
        # Get enabled services and kite name
        services = get_pagekite_services()[0]
        enabled_services = [service for service in services if
                            services[service]]
        if kite_name is None:
            try:
                kite_name = get_kite_details()['kite_name']
            except IndexError:
                pass
    else:
        enabled_services = None
        kite_name = None

    if initial_registration or (enabled and kite_name):
        domain_added.send_robust(
            sender='pagekite', domain_type='pagekite', name=kite_name,
            description=_('Pagekite'), services=enabled_services)
Example #3
0
def init():
    """Initialize the module."""
    menu = cfg.main_menu.get('apps:index')
    menu.add_urlname(_('Anonymity Network (Tor)'), 'glyphicon-eye-close',
                     'tor:index', 100)

    global socks_service
    socks_service = service_module.Service(
        'tor-socks', _('Tor Anonymity Network'),
        is_external=False, enabled=is_enabled())

    global bridge_service
    bridge_service = service_module.Service(
        'tor-bridge', _('Tor Bridge Relay'),
        ports=['tor-orport', 'tor-obfs3', 'tor-obfs4'],
        is_external=True, enabled=is_enabled())

    # Register hidden service name with Name Services module.
    (hs_enabled, hs_hostname, hs_ports) = get_hs()

    if is_enabled() and is_running() and hs_enabled and hs_hostname:
        hs_services = []
        for service_type in SERVICES:
            if str(service_type[2]) in hs_ports:
                hs_services.append(service_type[0])
    else:
        hs_hostname = None
        hs_services = None

    domain_added.send_robust(
        sender='tor', domain_type='hiddenservice',
        name=hs_hostname, description=_('Tor Hidden Service'),
        services=hs_services)
Example #4
0
def set_domainname(domainname):
    """Sets machine domain name to domainname"""
    old_domainname = get_domainname()

    # Domain name should be ASCII. If it's unicode, convert to ASCII.
    domainname = str(domainname)

    LOGGER.info('Changing domain name to - %s', domainname)
    actions.superuser_run('domainname-change', [domainname])

    domainname_change.send_robust(sender='config',
                                  old_domainname=old_domainname,
                                  new_domainname=domainname)

    # Update domain registered with Name Services module.
    domain_removed.send_robust(sender='config', domain_type='domainname')
    if domainname:
        try:
            domainname_services = firewall.get_enabled_services(
                zone='external')
        except actions.ActionError:
            # This happens when firewalld is not installed.
            # TODO: Are these services actually enabled?
            domainname_services = [service[0] for service in SERVICES]

        domain_added.send_robust(sender='config', domain_type='domainname',
                                 name=domainname, description=_('Domain Name'),
                                 services=domainname_services)
Example #5
0
def init():
    """Initialize the module."""
    menu = main_menu.get('system')
    menu.add_urlname(name, 'glyphicon-refresh', 'dynamicdns:index')
    current_status = dynamicdns.get_status()
    if current_status['enabled']:
        services = dynamicdns.get_enabled_services(current_status['dynamicdns_domain'])
        domain_added.send_robust(
            sender='dynamicdns', domain_type='dynamicdnsservice',
            name=current_status['dynamicdns_domain'],
            description=_('Dynamic DNS Service'),
            services=services)
Example #6
0
def __apply_changes(request, old_status, new_status):
    """Apply the changes."""
    if old_status['enabled'] == new_status['enabled'] and \
       old_status['hs_enabled'] == new_status['hs_enabled'] and \
       old_status['apt_transport_tor_enabled'] == \
       new_status['apt_transport_tor_enabled']:
        messages.info(request, _('Setting unchanged'))
        return

    if old_status['enabled'] != new_status['enabled']:
        if new_status['enabled']:
            actions.superuser_run('tor', ['enable'])
            messages.success(request, _('Tor enabled'))
        else:
            actions.superuser_run('tor', ['disable'])
            messages.success(request, _('Tor disabled'))

    if old_status['hs_enabled'] != new_status['hs_enabled']:
        if new_status['hs_enabled']:
            actions.superuser_run('tor', ['enable-hs'])
            messages.success(request, _('Tor hidden service enabled'))
        else:
            actions.superuser_run('tor', ['disable-hs'])
            messages.success(request, _('Tor hidden service disabled'))

    # Update hidden service name registered with Name Services module.
    domain_removed.send_robust(
        sender='tor', domain_type='hiddenservice')

    enabled = action_utils.service_is_enabled('tor')
    is_running = action_utils.service_is_running('tor')
    (hs_enabled, hs_hostname, hs_ports) = get_hs()

    if enabled and is_running and hs_enabled and hs_hostname:
        hs_services = []
        for service in SERVICES:
            if str(service[2]) in hs_ports:
                hs_services.append(service[0])

        domain_added.send_robust(
            sender='tor', domain_type='hiddenservice',
            name=hs_hostname, description=_('Tor Hidden Service'),
            services=hs_services)

    if old_status['apt_transport_tor_enabled'] != \
       new_status['apt_transport_tor_enabled']:
        if new_status['apt_transport_tor_enabled']:
            actions.superuser_run('tor', ['enable-apt-transport-tor'])
            messages.success(request, _('Enabled package download over Tor'))
        else:
            actions.superuser_run('tor', ['disable-apt-transport-tor'])
            messages.success(request, _('Disabled package download over Tor'))
Example #7
0
def update_hidden_service_domain(status=None):
    """Update HS domain with Name Services module."""
    if not status:
        status = utils.get_status()

    domain_removed.send_robust(
        sender='tor', domain_type='hiddenservice')

    if status['enabled'] and status['is_running'] and \
       status['hs_enabled'] and status['hs_hostname']:
        domain_added.send_robust(
            sender='tor', domain_type='hiddenservice',
            name=status['hs_hostname'], description=_('Tor Hidden Service'),
            services=status['hs_services'])
Example #8
0
def update_hidden_service_domain(status=None):
    """Update HS domain with Name Services module."""
    if not status:
        status = get_status()

    domain_removed.send_robust(sender="tor", domain_type="hiddenservice")

    if status["enabled"] and status["is_running"] and status["hs_enabled"] and status["hs_hostname"]:
        domain_added.send_robust(
            sender="tor",
            domain_type="hiddenservice",
            name=status["hs_hostname"],
            description=_("Tor Hidden Service"),
            services=status["hs_services"],
        )
Example #9
0
def init():
    """Initialize the module."""
    menu = main_menu.get('apps')
    menu.add_urlname(name, 'glyphicon-eye-close', 'tor:index', short_description)

    setup_helper = globals()['setup_helper']
    needs_setup = setup_helper.get_state() == 'needs-setup'

    if not needs_setup:
        global socks_service
        socks_service = service_module.Service(
            'tor-socks', _('Tor Anonymity Network'), ports=['tor-socks'],
            is_external=False, is_enabled=utils.is_enabled,
            is_running=utils.is_running)

        global bridge_service
        bridge_service = service_module.Service(
            'tor-bridge', _('Tor Bridge Relay'),
            ports=['tor-orport', 'tor-obfs3', 'tor-obfs4'],
            is_external=True, is_enabled=utils.is_enabled,
            is_running=utils.is_running)

        # Register hidden service name with Name Services module.
        status = utils.get_status()
        hostname = status['hs_hostname']
        hs_virtports = [port['virtport'] for port in status['hs_ports']]

        if status['enabled'] and status['is_running'] and \
           status['hs_enabled'] and status['hs_hostname']:
            hs_services = []
            for service_type in SERVICES:
                if str(service_type[2]) in hs_virtports:
                    hs_services.append(service_type[0])
        else:
            hostname = None
            hs_services = None

        domain_added.send_robust(
            sender='tor', domain_type='hiddenservice',
            name=hostname, description=_('Tor Hidden Service'),
            services=hs_services)
Example #10
0
def set_domainname(domainname, old_domainname):
    """Sets machine domain name to domainname"""
    old_domainname = config.get_domainname()

    # Domain name should be ASCII. If it's unicode, convert to ASCII.
    domainname = str(domainname)

    LOGGER.info('Changing domain name to - %s', domainname)
    actions.superuser_run('domainname-change', [domainname])

    # Update domain registered with Name Services module.
    if old_domainname:
        domain_removed.send_robust(sender='config',
                                   domain_type='domain-type-static',
                                   name=old_domainname)

    if domainname:
        domain_added.send_robust(sender='config',
                                 domain_type='domain-type-static',
                                 name=domainname,
                                 services='__all__')
Example #11
0
def init():
    """Initialize the module."""
    menu = cfg.main_menu.get("apps:index")
    menu.add_urlname(title, "glyphicon-eye-close", "tor:index", 100)

    global socks_service
    socks_service = service_module.Service(
        "tor-socks", _("Tor Anonymity Network"), is_external=False, enabled=is_enabled()
    )

    global bridge_service
    bridge_service = service_module.Service(
        "tor-bridge",
        _("Tor Bridge Relay"),
        ports=["tor-orport", "tor-obfs3", "tor-obfs4"],
        is_external=True,
        enabled=is_enabled(),
    )

    # Register hidden service name with Name Services module.
    hs_info = get_hs()
    hostname = hs_info["hostname"]
    hs_virtports = [port["virtport"] for port in hs_info["ports"]]

    if is_enabled() and is_running() and hs_info["enabled"] and hs_info["hostname"]:
        hs_services = []
        for service_type in SERVICES:
            if str(service_type[2]) in hs_virtports:
                hs_services.append(service_type[0])
    else:
        hostname = None
        hs_services = None

    domain_added.send_robust(
        sender="tor",
        domain_type="hiddenservice",
        name=hostname,
        description=_("Tor Hidden Service"),
        services=hs_services,
    )
Example #12
0
def update_names_module(is_enabled=None):
    """Update the PageKite domain and services of the 'names' module."""
    domain_removed.send_robust(sender='pagekite',
                               domain_type='domain-type-pagekite')

    if is_enabled is False:
        return

    from plinth.modules.pagekite import app
    if is_enabled is None and not app.is_enabled():
        return

    config = get_config()
    enabled_services = [
        service for service, value in config['predefined_services'].items()
        if value
    ]
    if config['kite_name'] and config['kite_name'] != UNCONFIGURED_KITE:
        domain_added.send_robust(sender='pagekite',
                                 domain_type='domain-type-pagekite',
                                 name=config['kite_name'],
                                 services=enabled_services)
Example #13
0
def _collect_config_result(request):
    """Handle config process completion."""
    global config_process
    if not config_process:
        return

    return_code = config_process.poll()

    # Config process is not complete yet
    if return_code == None:
        return

    status = tor.get_status()

    tor.socks_service.notify_enabled(None, status['enabled'])
    tor.bridge_service.notify_enabled(None, status['enabled'])

    # Update hidden service name registered with Name Services module.
    domain_removed.send_robust(
        sender='tor', domain_type='hiddenservice')

    if status['enabled'] and status['is_running'] and \
       status['hs_enabled'] and status['hs_hostname']:
        hs_services = []
        for service in SERVICES:
            if str(service[2]) in status['hs_ports']:
                hs_services.append(service[0])

        domain_added.send_robust(
            sender='tor', domain_type='hiddenservice',
            name=status['hs_hostname'], description=_('Tor Hidden Service'),
            services=hs_services)

    if not return_code:
        messages.success(request, _('Configuration updated.'))
    else:
        messages.error(request, _('An error occurred during configuration.'))

    config_process = None
Example #14
0
def init():
    """Initialize the module"""
    menu = cfg.main_menu.get('system:index')
    menu.add_urlname(ugettext_lazy('Configure'), 'glyphicon-cog',
                     'config:index', 10)

    # Register domain with Name Services module.
    domainname = get_domainname()
    if domainname:
        try:
            domainname_services = firewall.get_enabled_services(
                zone='external')
        except actions.ActionError:
            # This happens when firewalld is not installed.
            # TODO: Are these services actually enabled?
            domainname_services = [service[0] for service in SERVICES]
    else:
        domainname_services = None

    domain_added.send_robust(sender='config', domain_type='domainname',
                             name=domainname, description=_('Domain Name'),
                             services=domainname_services)
Example #15
0
def update_names_module(initial_registration=False,
                        enabled=None,
                        kite_name=None):
    """
    Update the PageKite domain and services of the 'names' module.

    - initial_registration: Boolean (optional): Register also if not enabled
    - enabled: Boolean (optional) whether PageKite is enabled
    - kite_name: String (optional)
    """
    domain_removed.send_robust(sender='pagekite',
                               domain_type='domain-type-pagekite')

    if enabled is None:
        try:
            enabled = get_pagekite_config()['is_enabled']
        except IndexError:
            enabled = False

    if enabled:
        # Get enabled services and kite name
        services = get_pagekite_services()[0]
        enabled_services = [
            service for service in services if services[service]
        ]
        if kite_name is None:
            try:
                kite_name = get_kite_details()['kite_name']
            except IndexError:
                pass
    else:
        enabled_services = None
        kite_name = None

    if initial_registration or (enabled and kite_name):
        domain_added.send_robust(sender='pagekite',
                                 domain_type='domain-type-pagekite',
                                 name=kite_name,
                                 services=enabled_services)
Example #16
0
def set_domainname(domainname, old_domainname):
    """Sets machine domain name to domainname"""
    old_domainname = config.get_domainname()

    # Domain name is not case sensitive, but Let's Encrypt certificate
    # paths use lower-case domain name.
    domainname = domainname.lower()

    LOGGER.info('Changing domain name to - %s', domainname)
    actions.superuser_run('domainname-change', [domainname])

    # Update domain registered with Name Services module.
    if old_domainname:
        domain_removed.send_robust(sender='config',
                                   domain_type='domain-type-static',
                                   name=old_domainname)

    if domainname:
        domain_added.send_robust(sender='config',
                                 domain_type='domain-type-static',
                                 name=domainname,
                                 services='__all__')
Example #17
0
    def __init__(self):
        """Create components for the app."""
        super().__init__()
        info = app_module.Info(app_id=self.app_id,
                               version=version,
                               is_essential=is_essential,
                               depends=depends,
                               name=_('Dynamic DNS Client'),
                               icon='fa-refresh',
                               description=_description,
                               manual_page='DynamicDNS')
        self.add(info)

        menu_item = menu.Menu('menu-dynamicdns',
                              info.name,
                              None,
                              info.icon,
                              'dynamicdns:index',
                              parent_url_name='system')
        self.add(menu_item)

        domain_type = DomainType('domain-type-dynamic',
                                 _('Dynamic Domain Name'),
                                 'dynamicdns:index',
                                 can_have_certificate=True)
        self.add(domain_type)

        users_and_groups = UsersAndGroups('users-and-groups-dynamicdns',
                                          reserved_usernames=['ez-ipupd'])
        self.add(users_and_groups)

        current_status = get_status()
        if current_status['enabled']:
            domain_added.send_robust(sender='dynamicdns',
                                     domain_type='domain-type-dynamic',
                                     name=current_status['dynamicdns_domain'],
                                     services='__all__')
            self.set_enabled(True)
Example #18
0
def init():
    """Initialize the module."""
    global app
    app = TorApp()

    setup_helper = globals()['setup_helper']
    needs_setup = setup_helper.get_state() == 'needs-setup'

    if not needs_setup:
        if app.is_enabled():
            app.set_enabled(True)

        # Register hidden service name with Name Services module.
        status = utils.get_status()
        hostname = status['hs_hostname']
        services = [int(port['virtport']) for port in status['hs_ports']]

        if status['enabled'] and status['is_running'] and \
           status['hs_enabled'] and status['hs_hostname']:
            domain_added.send_robust(sender='tor',
                                     domain_type='domain-type-tor',
                                     name=hostname,
                                     services=services)
Example #19
0
def init():
    """Initialize the module"""
    menu = main_menu.get('system')
    menu.add_urlname(ugettext_lazy('Configure'), 'glyphicon-cog',
                     'config:index')

    # Register domain with Name Services module.
    domainname = get_domainname()
    if domainname:
        try:
            domainname_services = firewall.get_enabled_services(
                zone='external')
        except actions.ActionError:
            # This happens when firewalld is not installed.
            # TODO: Are these services actually enabled?
            domainname_services = [service[0] for service in SERVICES]
    else:
        domainname_services = None

    domain_added.send_robust(sender='config', domain_type='domainname',
                             name=domainname,
                             description=ugettext_lazy('Domain Name'),
                             services=domainname_services)
Example #20
0
def init():
    """Initialize the module."""
    menu = cfg.main_menu.get('apps:index')
    menu.add_urlname(title, 'glyphicon-eye-close', 'tor:index')

    global socks_service
    socks_service = service_module.Service(
        'tor-socks', _('Tor Anonymity Network'), ports=['tor-socks'],
        is_external=False, is_enabled=utils.is_enabled,
        is_running=utils.is_running)

    global bridge_service
    bridge_service = service_module.Service(
        'tor-bridge', _('Tor Bridge Relay'),
        ports=['tor-orport', 'tor-obfs3', 'tor-obfs4'],
        is_external=True, is_enabled=utils.is_enabled,
        is_running=utils.is_running)

    # Register hidden service name with Name Services module.
    status = utils.get_status()
    hostname = status['hs_hostname']
    hs_virtports = [port['virtport'] for port in status['hs_ports']]

    if status['enabled'] and status['is_running'] and \
       status['hs_enabled'] and status['hs_hostname']:
        hs_services = []
        for service_type in SERVICES:
            if str(service_type[2]) in hs_virtports:
                hs_services.append(service_type[0])
    else:
        hostname = None
        hs_services = None

    domain_added.send_robust(
        sender='tor', domain_type='hiddenservice',
        name=hostname, description=_('Tor Hidden Service'),
        services=hs_services)
Example #21
0
def init():
    """Initialize the module."""
    menu = cfg.main_menu.get('apps:index')
    menu.add_urlname(title, 'glyphicon-eye-close', 'tor:index')

    global socks_service
    socks_service = service_module.Service(
        'tor-socks', _('Tor Anonymity Network'), ports=['tor-socks'],
        is_external=False, is_enabled=utils.is_enabled,
        is_running=utils.is_running)

    global bridge_service
    bridge_service = service_module.Service(
        'tor-bridge', _('Tor Bridge Relay'),
        ports=['tor-orport', 'tor-obfs3', 'tor-obfs4'],
        is_external=True, is_enabled=utils.is_enabled,
        is_running=utils.is_running)

    # Register hidden service name with Name Services module.
    hs_info = utils.get_hs()
    hostname = hs_info['hostname']
    hs_virtports = [port['virtport'] for port in hs_info['ports']]

    if utils.is_enabled() and utils.is_running() and \
       hs_info['enabled'] and hs_info['hostname']:
        hs_services = []
        for service_type in SERVICES:
            if str(service_type[2]) in hs_virtports:
                hs_services.append(service_type[0])
    else:
        hostname = None
        hs_services = None

    domain_added.send_robust(
        sender='tor', domain_type='hiddenservice',
        name=hostname, description=_('Tor Hidden Service'),
        services=hs_services)
Example #22
0
def init():
    """Initialize the Tor module."""
    menu = cfg.main_menu.get('apps:index')
    menu.add_urlname(_('Anonymity Network (Tor)'), 'glyphicon-eye-close',
                     'tor:index', 100)

    # Register hidden service name with Name Services module.
    enabled = action_utils.service_is_enabled('tor')
    is_running = action_utils.service_is_running('tor')
    (hs_enabled, hs_hostname, hs_ports) = get_hs()

    if enabled and is_running and hs_enabled and hs_hostname:
        hs_services = []
        for service in SERVICES:
            if str(service[2]) in hs_ports:
                hs_services.append(service[0])
    else:
        hs_hostname = None
        hs_services = None

    domain_added.send_robust(
        sender='tor', domain_type='hiddenservice',
        name=hs_hostname, description=_('Tor Hidden Service'),
        services=hs_services)
Example #23
0
def init():
    """Initialize the Tor module."""
    menu = cfg.main_menu.get('apps:index')
    menu.add_urlname(_('Anonymity Network (Tor)'), 'glyphicon-eye-close',
                     'tor:index', 100)

    # Register hidden service name with Name Services module.
    enabled = action_utils.service_is_enabled('tor')
    is_running = action_utils.service_is_running('tor')
    (hs_enabled, hs_hostname, hs_ports) = get_hs()

    if enabled and is_running and hs_enabled and hs_hostname:
        hs_services = []
        for service in SERVICES:
            if str(service[2]) in hs_ports:
                hs_services.append(service[0])
    else:
        hs_hostname = None
        hs_services = None

    domain_added.send_robust(
        sender='tor', domain_type='hiddenservice',
        name=hs_hostname, description=_('Tor Hidden Service'),
        services=hs_services)
Example #24
0
def init():
    """Initialize the module"""
    menu = cfg.main_menu.get("system:index")
    menu.add_urlname(ugettext_lazy("Configure"), "glyphicon-cog", "config:index")

    # Register domain with Name Services module.
    domainname = get_domainname()
    if domainname:
        try:
            domainname_services = firewall.get_enabled_services(zone="external")
        except actions.ActionError:
            # This happens when firewalld is not installed.
            # TODO: Are these services actually enabled?
            domainname_services = [service[0] for service in SERVICES]
    else:
        domainname_services = None

    domain_added.send_robust(
        sender="config",
        domain_type="domainname",
        name=domainname,
        description=ugettext_lazy("Domain Name"),
        services=domainname_services,
    )
Example #25
0
    def __init__(self):
        """Create components for the app."""
        super().__init__()
        info = app_module.Info(app_id=self.app_id,
                               version=version,
                               name=_('Tor'),
                               icon_filename='tor',
                               short_description=_('Anonymity Network'),
                               description=_description,
                               manual_page='Tor',
                               clients=manifest.clients,
                               donation_url='https://donate.torproject.org/')
        self.add(info)

        menu_item = menu.Menu('menu-tor',
                              info.name,
                              info.short_description,
                              info.icon_filename,
                              'tor:index',
                              parent_url_name='apps')
        self.add(menu_item)

        domain_type = DomainType('domain-type-tor',
                                 _('Tor Onion Service'),
                                 'tor:index',
                                 can_have_certificate=False)
        self.add(domain_type)

        firewall = Firewall('firewall-tor-socks',
                            _('Tor Socks Proxy'),
                            ports=['tor-socks'],
                            is_external=False)
        self.add(firewall)

        firewall = Firewall('firewall-tor-relay',
                            _('Tor Bridge Relay'),
                            ports=['tor-orport', 'tor-obfs3', 'tor-obfs4'],
                            is_external=True)
        self.add(firewall)

        daemon = Daemon('daemon-tor',
                        managed_services[0],
                        strict_check=True,
                        listen_ports=[(9050, 'tcp4'), (9050, 'tcp6'),
                                      (9040, 'tcp4'), (9040, 'tcp6'),
                                      (9053, 'udp4'), (9053, 'udp6')])
        self.add(daemon)

        users_and_groups = UsersAndGroups('users-and-groups-tor',
                                          reserved_usernames=['debian-tor'])
        self.add(users_and_groups)

        backup_restore = BackupRestore('backup-restore-tor', **manifest.backup)
        self.add(backup_restore)

        # Register hidden service name with Name Services module.
        setup_helper = globals()['setup_helper']
        if setup_helper.get_state() != 'needs-setup' and \
           self.is_enabled() and app_is_running(self):
            status = utils.get_status(initialized=False)
            hostname = status['hs_hostname']
            services = [int(port['virtport']) for port in status['hs_ports']]

            if status['hs_enabled'] and status['hs_hostname']:
                domain_added.send_robust(sender='tor',
                                         domain_type='domain-type-tor',
                                         name=hostname,
                                         services=services)
Example #26
0
def _apply_changes(request, old_status, new_status):
    """Apply the changes to Dynamic DNS client."""
    logger.info('New status is - %s', new_status)
    logger.info('Old status was - %s', old_status)

    if new_status['dynamicdns_secret'] == '':
        new_status['dynamicdns_secret'] = old_status['dynamicdns_secret']

    if new_status['dynamicdns_ipurl'] == '':
        new_status['dynamicdns_ipurl'] = EMPTYSTRING

    if new_status['dynamicdns_update_url'] == '':
        new_status['dynamicdns_update_url'] = EMPTYSTRING

    if new_status['dynamicdns_server'] == '':
        new_status['dynamicdns_server'] = EMPTYSTRING

    if new_status['service_type'] == 'GnuDIP':
        new_status['dynamicdns_update_url'] = EMPTYSTRING
    else:
        new_status['dynamicdns_server'] = EMPTYSTRING

    if old_status != new_status:
        disable_ssl_check = "disabled"
        use_http_basic_auth = "disabled"
        use_ipv6 = "disabled"

        if new_status['disable_SSL_cert_check']:
            disable_ssl_check = "enabled"

        if new_status['use_http_basic_auth']:
            use_http_basic_auth = "enabled"

        if new_status.get('use_ipv6'):
            use_ipv6 = "enabled"

        # Domain name is not case sensitive, but Let's Encrypt
        # certificate paths use lower-case domain name.
        new_domain_name = new_status['dynamicdns_domain'].lower()

        _run([
            'configure',
            '-s',
            new_status['dynamicdns_server'],
            '-d',
            new_domain_name,
            '-u',
            new_status['dynamicdns_user'],
            '-p',
            '-I',
            new_status['dynamicdns_ipurl'],
            '-U',
            new_status['dynamicdns_update_url'],
            '-c',
            disable_ssl_check,
            '-b',
            use_http_basic_auth,
            '-6',
            use_ipv6,
        ],
             input=new_status['dynamicdns_secret'].encode())

        if old_status['enabled']:
            domain_removed.send_robust(sender='dynamicdns',
                                       domain_type='domain-type-dynamic',
                                       name=old_status['dynamicdns_domain'])
            _run(['stop'])

        if new_status['enabled']:
            domain_added.send_robust(sender='dynamicdns',
                                     domain_type='domain-type-dynamic',
                                     name=new_domain_name,
                                     services='__all__')
            _run(['start'])

        messages.success(request, _('Configuration updated'))
    else:
        logger.info('Nothing changed')