Exemplo n.º 1
0
    def __init__(self):
        """Create components for the app."""
        super().__init__()

        self.groups = {'vpn': _('Connect to VPN services')}

        info = app_module.Info(app_id=self.app_id,
                               version=self._version,
                               name=_('OpenVPN'),
                               icon_filename='openvpn',
                               short_description=_('Virtual Private Network'),
                               description=_description,
                               manual_page='OpenVPN',
                               clients=manifest.clients)
        self.add(info)

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

        download_profile = \
            format_lazy(_('<a class="btn btn-primary btn-sm" href="{link}">'
                          'Download Profile</a>'),
                        link=reverse_lazy('openvpn:profile'))
        shortcut = frontpage.Shortcut(
            'shortcut-openvpn',
            info.name,
            short_description=info.short_description,
            icon=info.icon_filename,
            description=info.description + [download_profile],
            configure_url=reverse_lazy('openvpn:index'),
            login_required=True,
            allowed_groups=['vpn'])
        self.add(shortcut)

        packages = Packages('packages-openvpn', ['openvpn', 'easy-rsa'])
        self.add(packages)

        firewall = Firewall('firewall-openvpn',
                            info.name,
                            ports=['openvpn'],
                            is_external=True)
        self.add(firewall)

        daemon = Daemon('daemon-openvpn',
                        'openvpn-server@freedombox',
                        listen_ports=[(1194, 'udp4'), (1194, 'udp6')])
        self.add(daemon)

        users_and_groups = UsersAndGroups('users-and-groups-openvpn',
                                          groups=self.groups)
        self.add(users_and_groups)

        backup_restore = BackupRestore('backup-restore-openvpn',
                                       **manifest.backup)
        self.add(backup_restore)
Exemplo n.º 2
0
    def __init__(self):
        """Create components for the app."""
        super().__init__()

        info = app_module.Info(
            app_id=self.app_id, version=self._version, depends=['names'],
            name=_('PageKite'), icon='fa-flag',
            short_description=_('Public Visibility'), description=_description,
            manual_page='PageKite',
            donation_url='https://pagekite.net/support/faq/#donate')
        self.add(info)

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

        packages = Packages('packages-pagekite', ['pagekite'])
        self.add(packages)

        domain_type = DomainType('domain-type-pagekite', _('PageKite Domain'),
                                 'pagekite:index', can_have_certificate=True)
        self.add(domain_type)

        daemon = Daemon('daemon-pagekite', self.DAEMON)
        self.add(daemon)

        backup_restore = BackupRestore('backup-restore-pagekite',
                                       **manifest.backup)
        self.add(backup_restore)
Exemplo n.º 3
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)

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

        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__')
Exemplo n.º 4
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=_('Let\'s Encrypt'), icon='fa-lock',
                               short_description=_('Certificates'),
                               description=_description,
                               manual_page='LetsEncrypt',
                               donation_url='https://letsencrypt.org/donate/')
        self.add(info)

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

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

        domain_added.connect(on_domain_added)
        domain_removed.connect(on_domain_removed)

        post_module_loading.connect(_certificate_handle_modified)
Exemplo n.º 5
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, name=_('Update'),
                               icon='fa-refresh', description=_description,
                               manual_page='Upgrades')
        self.add(info)

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

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

        self._show_new_release_notification()

        # Check every day (every 3 minutes in debug mode):
        # - backports becomes available -> configure it if selected by user
        interval = 180 if cfg.develop else 24 * 3600
        glib.schedule(interval, setup_repositories)

        # Check every day (every 3 minutes in debug mode):
        # - new stable release becomes available -> perform dist-upgrade if
        #   updates are enabled
        interval = 180 if cfg.develop else 24 * 3600
        glib.schedule(interval, check_dist_upgrade)
Exemplo n.º 6
0
    def __init__(self):
        """Create components for the app."""
        super().__init__()

        info = app_module.Info(app_id=self.app_id, version=self._version,
                               is_essential=True, depends=['names'],
                               name=_('Service Discovery'), icon='fa-compass',
                               description=_description,
                               manual_page='ServiceDiscovery')
        self.add(info)

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

        packages = Packages('packages-avahi', ['avahi-daemon', 'avahi-utils'])
        self.add(packages)

        domain_type = DomainType('domain-type-local',
                                 _('Local Network Domain'), 'config:index',
                                 can_have_certificate=False)
        self.add(domain_type)

        firewall = Firewall('firewall-avahi', info.name, ports=['mdns'],
                            is_external=False)
        self.add(firewall)

        daemon = Daemon('daemon-avahi', 'avahi-daemon')
        self.add(daemon)

        backup_restore = BackupRestore('backup-restore-avahi',
                                       **manifest.backup)
        self.add(backup_restore)
Exemplo n.º 7
0
    def __init__(self):
        """Create components for the app."""
        super().__init__()

        info = app_module.Info(app_id=self.app_id,
                               version=self._version,
                               is_essential=True,
                               name=_('Security'),
                               icon='fa-lock',
                               manual_page='Security')
        self.add(info)

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

        packages = Packages('packages-security', ['fail2ban', 'debsecan'])
        self.add(packages)

        daemon = RelatedDaemon('related-daemon-fail2ban', 'fail2ban')
        self.add(daemon)

        backup_restore = BackupRestore('backup-restore-security',
                                       **manifest.backup)
        self.add(backup_restore)
Exemplo n.º 8
0
    def __init__(self):
        """Create components for the app."""
        super().__init__()

        info = app_module.Info(app_id=self.app_id,
                               version=self._version,
                               is_essential=True,
                               depends=['names'],
                               name=_('Let\'s Encrypt'),
                               icon='fa-lock',
                               short_description=_('Certificates'),
                               description=_description,
                               manual_page='LetsEncrypt',
                               donation_url='https://letsencrypt.org/donate/')
        self.add(info)

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

        packages = Packages('packages-letsencrypt', ['certbot'])
        self.add(packages)

        backup_restore = BackupRestore('backup-restore-letsencrypt',
                                       **manifest.backup)
        self.add(backup_restore)
Exemplo n.º 9
0
    def __init__(self):
        """Create components for the app."""
        super().__init__()
        info = app_module.Info(app_id=self.app_id,
                               version=version,
                               name=_('Monkeysphere'),
                               icon='fa-certificate',
                               description=_description,
                               manual_page='Monkeysphere')
        self.add(info)

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

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

        backup_restore = BackupRestore('backup-restore-monkeysphere',
                                       **manifest.backup)
        self.add(backup_restore)
Exemplo n.º 10
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,
                               name=_('Storage'),
                               icon='fa-hdd-o',
                               description=_description,
                               manual_page='Storage')
        self.add(info)

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

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

        # Check every hour for low disk space, every 3 minutes in debug mode
        interval = 180 if cfg.develop else 3600
        glib.schedule(interval, warn_about_low_disk_space)

        # Schedule initialization of UDisks2 initialization
        glib.schedule(3, udisks2.init, repeat=False)
Exemplo n.º 11
0
    def __init__(self):
        """Create components for the app."""
        super().__init__()
        info = app_module.Info(app_id=self.app_id, version=version,
                               name=_('Roundcube'), icon_filename='roundcube',
                               short_description=_('Email Client'),
                               description=_description,
                               manual_page='Roundcube',
                               clients=manifest.clients)
        self.add(info)

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

        shortcut = frontpage.Shortcut('shortcut-roundcube', info.name,
                                      short_description=info.short_description,
                                      icon=info.icon_filename,
                                      url='/roundcube/', clients=info.clients,
                                      login_required=True)
        self.add(shortcut)

        firewall = Firewall('firewall-roundcube', info.name,
                            ports=['http', 'https'], is_external=True)
        self.add(firewall)

        webserver = Webserver('webserver-roundcube', 'roundcube',
                              urls=['https://{host}/roundcube'])
        self.add(webserver)

        backup_restore = BackupRestore('backup-restore-roundcube',
                                       **manifest.backup)
        self.add(backup_restore)
Exemplo n.º 12
0
    def __init__(self):
        """Create components for the app."""
        super().__init__()

        info = app_module.Info(app_id=self.app_id, version=self._version,
                               is_essential=True, name=_('Software Update'),
                               icon='fa-refresh', description=_description,
                               manual_page='Upgrades')
        self.add(info)

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

        packages = Packages('packages-upgrades',
                            ['unattended-upgrades', 'needrestart'])
        self.add(packages)

        daemon = RelatedDaemon('related-daemon-upgrades',
                               'freedombox-dist-upgrade')
        self.add(daemon)

        backup_restore = BackupRestore('backup-restore-upgrades',
                                       **manifest.backup)
        self.add(backup_restore)
Exemplo n.º 13
0
    def __init__(self):
        """Create components for the app."""
        super().__init__()

        groups = {'ed2k': _('Download files using eDonkey applications')}

        info = app_module.Info(
            app_id=self.app_id,
            version=version,
            name=_('MLDonkey'),
            icon_filename='mldonkey',
            short_description=_('Peer-to-peer File Sharing'),
            description=_description,
            manual_page='MLDonkey',
            clients=manifest.clients)
        self.add(info)

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

        shortcuts = frontpage.Shortcut(
            'shortcut-mldonkey',
            info.name,
            short_description=info.short_description,
            icon=info.icon_filename,
            url='/mldonkey/',
            login_required=True,
            clients=info.clients,
            allowed_groups=list(groups))
        self.add(shortcuts)

        firewall = Firewall('firewall-mldonkey',
                            info.name,
                            ports=['http', 'https'],
                            is_external=True)
        self.add(firewall)

        webserver = Webserver('webserver-mldonkey',
                              'mldonkey-freedombox',
                              urls=['https://{host}/mldonkey/'])
        self.add(webserver)

        daemon = Daemon('daemon-mldonkey',
                        managed_services[0],
                        listen_ports=[(4080, 'tcp4')])
        self.add(daemon)

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

        backup_restore = BackupRestore('backup-restore-mldonkey',
                                       **manifest.backup)
        self.add(backup_restore)
Exemplo n.º 14
0
    def __init__(self):
        """Create components for the app."""
        super().__init__()

        info = app_module.Info(app_id=self.app_id,
                               version=self._version,
                               is_essential=True,
                               name=_('Date & Time'),
                               icon='fa-clock-o',
                               description=_description,
                               manual_page='DateTime')
        self.add(info)

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

        packages = Packages('packages-datetime', ['systemd-timesyncd'])
        self.add(packages)

        if self._is_time_managed():
            daemon = Daemon('daemon-datetime', 'systemd-timesyncd')
            self.add(daemon)

        backup_restore = BackupRestore('backup-restore-datetime',
                                       **manifest.backup)
        self.add(backup_restore)
Exemplo n.º 15
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,
                               name=_('Firewall'),
                               icon='fa-shield',
                               description=_description,
                               manual_page='Firewall')
        self.add(info)

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

        daemon = Daemon('daemon-firewall', managed_services[0])
        self.add(daemon)

        backup_restore = BackupRestore('backup-restore-firewall',
                                       **manifest.backup)
        self.add(backup_restore)
Exemplo n.º 16
0
    def __init__(self):
        """Create components for the app."""
        super().__init__()
        info = app_module.Info(app_id=self.app_id,
                               version=version,
                               name=_('BIND'),
                               icon='fa-globe-w',
                               short_description=_('Domain Name Server'),
                               description=_description)
        self.add(info)

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

        firewall = Firewall('firewall-bind',
                            info.name,
                            ports=['dns'],
                            is_external=False)
        self.add(firewall)

        daemon = Daemon('daemon-bind',
                        managed_services[0],
                        listen_ports=[(53, 'tcp6'), (53, 'udp6'), (53, 'tcp4'),
                                      (53, 'udp4')],
                        alias=managed_services[1])
        self.add(daemon)

        backup_restore = BackupRestore('backup-restore-bind',
                                       **manifest.backup)
        self.add(backup_restore)
Exemplo n.º 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,
                               name=_('Diagnostics'),
                               icon='fa-heartbeat',
                               description=_description,
                               manual_page='Diagnostics')
        self.add(info)

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

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

        # Check periodically for low RAM space
        interval = 180 if cfg.develop else 3600
        glib.schedule(interval, _warn_about_low_ram_space)
Exemplo n.º 18
0
    def __init__(self):
        """Create components for the app."""
        super().__init__()
        info = app_module.Info(app_id=self.app_id, version=version,
                               name=_('infinoted'), icon_filename='infinoted',
                               short_description=_('Gobby Server'),
                               description=_description,
                               manual_page='Infinoted',
                               clients=manifest.clients)
        self.add(info)

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

        shortcut = frontpage.Shortcut(
            'shortcut-infinoted', info.name,
            short_description=info.short_description, icon=info.icon_filename,
            description=info.description,
            configure_url=reverse_lazy('infinoted:index'),
            clients=info.clients, login_required=False)
        self.add(shortcut)

        firewall = Firewall('firewall-infinoted', info.name,
                            ports=['infinoted-plinth'], is_external=True)
        self.add(firewall)

        daemon = Daemon('daemon-infinoted', managed_services[0],
                        listen_ports=[(6523, 'tcp4'), (6523, 'tcp6')])
        self.add(daemon)

        backup_restore = BackupRestore('backup-restore-infinoted',
                                       **manifest.backup)
        self.add(backup_restore)
Exemplo n.º 19
0
    def __init__(self):
        """Create components for the app."""
        super().__init__()

        info = app_module.Info(app_id=self.app_id,
                               version=self._version,
                               is_essential=True,
                               name=_('Secure Shell (SSH) Server'),
                               icon='fa-terminal',
                               description=_description)
        self.add(info)

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

        packages = Packages('packages-ssh', ['openssh-server'])
        self.add(packages)

        firewall = Firewall('firewall-ssh',
                            info.name,
                            ports=['ssh'],
                            is_external=True)
        self.add(firewall)

        daemon = Daemon('daemon-ssh', 'ssh')
        self.add(daemon)

        backup_restore = BackupRestore('backup-restore-ssh', **manifest.backup)
        self.add(backup_restore)
Exemplo n.º 20
0
    def __init__(self):
        """Create components for the app."""
        super().__init__()

        groups = {'calibre': _('Use calibre e-book libraries')}

        info = app_module.Info(app_id=self.app_id,
                               version=version,
                               name=_('calibre'),
                               icon_filename='calibre',
                               short_description=_('E-book Library'),
                               description=_description,
                               manual_page='Calibre',
                               clients=manifest.clients,
                               donation_url='https://calibre-ebook.com/donate')
        self.add(info)

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

        shortcut = frontpage.Shortcut('shortcut-calibre',
                                      info.name,
                                      short_description=info.short_description,
                                      icon=info.icon_filename,
                                      url='/calibre',
                                      clients=info.clients,
                                      login_required=True,
                                      allowed_groups=list(groups))
        self.add(shortcut)

        firewall = Firewall('firewall-calibre',
                            info.name,
                            ports=['http', 'https'],
                            is_external=True)
        self.add(firewall)

        webserver = Webserver('webserver-calibre',
                              'calibre-freedombox',
                              urls=['https://{host}/calibre'])
        self.add(webserver)

        daemon = Daemon('daemon-calibre',
                        managed_services[0],
                        listen_ports=[(8844, 'tcp4')])
        self.add(daemon)

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

        backup_restore = BackupRestore('backup-restore-calibre',
                                       **manifest.backup)
        self.add(backup_restore)
Exemplo n.º 21
0
    def __init__(self):
        """Create components for the app."""
        super().__init__()

        groups = {
            'bit-torrent': _('Download files using BitTorrent applications')
        }

        info = app_module.Info(
            app_id=self.app_id, version=self._version, name=_('Transmission'),
            icon_filename='transmission',
            short_description=_('BitTorrent Web Client'),
            description=_description, manual_page='Transmission',
            clients=manifest.clients,
            donation_url='https://transmissionbt.com/donate/')
        self.add(info)

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

        shortcut = frontpage.Shortcut(
            'shortcut-transmission', info.name,
            short_description=info.short_description, icon=info.icon_filename,
            url='/transmission', clients=info.clients, login_required=True,
            allowed_groups=list(groups))
        self.add(shortcut)

        packages = Packages('packages-transmission', ['transmission-daemon'])
        self.add(packages)

        firewall = Firewall('firewall-transmission', info.name,
                            ports=['http', 'https',
                                   'transmission-client'], is_external=True)
        self.add(firewall)

        webserver = Webserver('webserver-transmission', 'transmission-plinth',
                              urls=['https://{host}/transmission'])
        self.add(webserver)

        daemon = Daemon(
            'daemon-transmission', self.DAEMON, listen_ports=[
                (9091, 'tcp4'),
                (51413, 'tcp4'),
                (51413, 'tcp6'),
                (51413, 'udp4'),
            ])
        self.add(daemon)

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

        backup_restore = BackupRestore('backup-restore-transmission',
                                       **manifest.backup)
        self.add(backup_restore)
Exemplo n.º 22
0
    def __init__(self):
        """Create components for the app."""
        super().__init__()

        info = app_module.Info(app_id=self.app_id,
                               version=version,
                               name=_('Coturn'),
                               icon_filename='coturn',
                               short_description=_('VoIP Helper'),
                               description=_description,
                               manual_page='Coturn')
        self.add(info)

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

        firewall = Firewall('firewall-coturn',
                            info.name,
                            ports=['coturn-freedombox'],
                            is_external=True)
        self.add(firewall)

        letsencrypt = LetsEncrypt(
            'letsencrypt-coturn',
            domains=get_domains,
            daemons=managed_services,
            should_copy_certificates=True,
            private_key_path='/etc/coturn/certs/pkey.pem',
            certificate_path='/etc/coturn/certs/cert.pem',
            user_owner='turnserver',
            group_owner='turnserver',
            managing_app='coturn')
        self.add(letsencrypt)

        daemon = Daemon('daemon-coturn',
                        managed_services[0],
                        listen_ports=[(3478, 'udp4'), (3478, 'udp6'),
                                      (3478, 'tcp4'), (3478, 'tcp6'),
                                      (3479, 'udp4'), (3479, 'udp6'),
                                      (3479, 'tcp4'), (3479, 'tcp6'),
                                      (5349, 'udp4'), (5349, 'udp6'),
                                      (5349, 'tcp4'), (5349, 'tcp6'),
                                      (5350, 'udp4'), (5350, 'udp6'),
                                      (5350, 'tcp4'), (5350, 'tcp6')])
        self.add(daemon)

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

        backup_restore = BackupRestore('backup-restore-coturn',
                                       **manifest.backup)
        self.add(backup_restore)
Exemplo n.º 23
0
    def __init__(self):
        """Create components for the app."""
        super().__init__()
        self._private_mode = True

        info = app_module.Info(app_id=self.app_id,
                               version=self._version,
                               name=_('MediaWiki'),
                               icon_filename='mediawiki',
                               short_description=_('Wiki'),
                               description=_description,
                               manual_page='MediaWiki',
                               clients=manifest.clients)
        self.add(info)

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

        shortcut = Shortcut('shortcut-mediawiki',
                            info.name,
                            short_description=info.short_description,
                            icon=info.icon_filename,
                            url='/mediawiki',
                            clients=info.clients,
                            login_required=True)
        self.add(shortcut)

        packages = Packages('packages-mediawiki',
                            ['mediawiki', 'imagemagick', 'php-sqlite3'])
        self.add(packages)

        firewall = Firewall('firewall-mediawiki',
                            info.name,
                            ports=['http', 'https'],
                            is_external=True)
        self.add(firewall)

        webserver = Webserver('webserver-mediawiki',
                              'mediawiki',
                              urls=['https://{host}/mediawiki'])
        self.add(webserver)

        webserver = Webserver('webserver-mediawiki-freedombox',
                              'mediawiki-freedombox')
        self.add(webserver)

        daemon = Daemon('daemon-mediawiki', 'mediawiki-jobrunner')
        self.add(daemon)

        backup_restore = BackupRestore('backup-restore-mediawiki',
                                       **manifest.backup)
        self.add(backup_restore)
Exemplo n.º 24
0
    def __init__(self):
        """Create components for the app."""
        super().__init__()

        info = app_module.Info(
            app_id=self.app_id,
            version=self._version,
            name=_('Minetest'),
            icon_filename='minetest',
            short_description=_('Block Sandbox'),
            description=_description,
            manual_page='Minetest',
            clients=manifest.clients,
            donation_url='https://www.minetest.net/get-involved/#donate')
        self.add(info)

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

        shortcut = frontpage.Shortcut(
            'shortcut-minetest',
            info.name,
            short_description=info.short_description,
            icon=info.icon_filename,
            description=info.description,
            configure_url=reverse_lazy('minetest:index'),
            clients=info.clients,
            login_required=False)
        self.add(shortcut)

        packages = Packages('packages-minetest', ['minetest-server'] + _mods)
        self.add(packages)

        firewall = Firewall('firewall-minetest',
                            info.name,
                            ports=['minetest-plinth'],
                            is_external=True)
        self.add(firewall)

        daemon = Daemon('daemon-minetest',
                        'minetest-server',
                        listen_ports=[(30000, 'udp4')])
        self.add(daemon)

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

        backup_restore = BackupRestore('backup-restore-minetest',
                                       **manifest.backup)
        self.add(backup_restore)
Exemplo n.º 25
0
    def __init__(self):
        """Create components for the app."""
        super().__init__()

        info = app_module.Info(app_id=self.app_id,
                               version=self._version,
                               name=_('Radicale'),
                               icon_filename='radicale',
                               short_description=_('Calendar and Addressbook'),
                               description=_description,
                               manual_page='Radicale',
                               clients=manifest.clients)
        self.add(info)

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

        shortcut = frontpage.Shortcut('shortcut-radicale',
                                      info.name,
                                      short_description=info.short_description,
                                      icon=info.icon_filename,
                                      url='/radicale/',
                                      clients=info.clients,
                                      login_required=True)
        self.add(shortcut)

        packages = Packages('packages-radicale', ['radicale'])
        self.add(packages)

        firewall = Firewall('firewall-radicale',
                            info.name,
                            ports=['http', 'https'],
                            is_external=True)
        self.add(firewall)

        webserver = Webserver('webserver-radicale',
                              'radicale2-freedombox',
                              urls=['https://{host}/radicale'])
        self.add(webserver)

        uwsgi = Uwsgi('uwsgi-radicale', 'radicale')
        self.add(uwsgi)

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

        backup_restore = BackupRestore('backup-restore-radicale',
                                       **manifest.backup)
        self.add(backup_restore)
Exemplo n.º 26
0
    def __init__(self):
        """Create components for the app."""
        super().__init__()

        info = app_module.Info(
            app_id=self.app_id,
            version=self._version,
            name=_('Privoxy'),
            icon_filename='privoxy',
            short_description=_('Web Proxy'),
            description=_description,
            manual_page='Privoxy',
            donation_url='https://www.privoxy.org/faq/general.html#DONATE')
        self.add(info)

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

        shortcut = frontpage.Shortcut(
            'shortcut-privoxy',
            info.name,
            short_description=info.short_description,
            icon=info.icon_filename,
            description=info.description,
            configure_url=reverse_lazy('privoxy:index'),
            login_required=True)
        self.add(shortcut)

        packages = Packages('packages-privoxy', ['privoxy'])
        self.add(packages)

        firewall = Firewall('firewall-privoxy',
                            info.name,
                            ports=['privoxy'],
                            is_external=False)
        self.add(firewall)

        daemon = Daemon('daemon-privoxy',
                        'privoxy',
                        listen_ports=[(8118, 'tcp4'), (8118, 'tcp6')])
        self.add(daemon)

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

        backup_restore = BackupRestore('backup-restore-privoxy',
                                       **manifest.backup)
        self.add(backup_restore)
Exemplo n.º 27
0
    def __init__(self):
        """Initialize the app components"""
        super().__init__()

        groups = {'minidlna': _('Media streaming server')}

        info = app_module.Info(app_id=self.app_id,
                               version=version,
                               name=_('MiniDLNA'),
                               icon_filename='minidlna',
                               short_description=_('Simple Media Server'),
                               description=_description,
                               manual_page='MiniDLNA',
                               clients=manifest.clients)
        self.add(info)

        menu_item = menu.Menu(
            'menu-minidlna',
            name=info.name,
            short_description=info.short_description,
            url_name='minidlna:index',
            parent_url_name='apps',
            icon=info.icon_filename,
        )
        firewall = Firewall('firewall-minidlna',
                            info.name,
                            ports=['minidlna'],
                            is_external=False)
        webserver = Webserver('webserver-minidlna',
                              'minidlna-freedombox',
                              urls=['http://localhost:8200/'])
        shortcut = frontpage.Shortcut('shortcut-minidlna',
                                      info.name,
                                      short_description=info.short_description,
                                      description=info.description,
                                      icon=info.icon_filename,
                                      url='/_minidlna/',
                                      login_required=True,
                                      allowed_groups=list(groups))
        daemon = Daemon('daemon-minidlna', managed_services[0])

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

        self.add(menu_item)
        self.add(webserver)
        self.add(firewall)
        self.add(shortcut)
        self.add(daemon)

        users_and_groups = UsersAndGroups('users-and-groups-minidlna',
                                          groups=groups)
        self.add(users_and_groups)
Exemplo n.º 28
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,
                               name=_('Cockpit'),
                               icon='fa-wrench',
                               icon_filename='cockpit',
                               short_description=_('Server Administration'),
                               description=_description,
                               manual_page='Cockpit',
                               clients=manifest.clients)
        self.add(info)

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

        shortcut = frontpage.Shortcut('shortcut-cockpit',
                                      info.name,
                                      short_description=info.short_description,
                                      icon=info.icon_filename,
                                      url='/_cockpit/',
                                      clients=info.clients,
                                      login_required=True,
                                      allowed_groups=['admin'])
        self.add(shortcut)

        firewall = Firewall('firewall-cockpit',
                            info.name,
                            ports=['http', 'https'],
                            is_external=True)
        self.add(firewall)

        webserver = Webserver('webserver-cockpit',
                              'cockpit-freedombox',
                              urls=['https://{host}/_cockpit/'])
        self.add(webserver)

        daemon = Daemon('daemon-cockpit', managed_services[0])
        self.add(daemon)

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

        domain_added.connect(on_domain_added)
        domain_removed.connect(on_domain_removed)
Exemplo n.º 29
0
    def __init__(self):
        """Create components for the app."""
        super().__init__()

        info = app_module.Info(app_id=self.app_id,
                               version=self._version,
                               name=_('JSXC'),
                               icon_filename='jsxc',
                               short_description=_('Chat Client'),
                               description=_description,
                               manual_page='JSXC',
                               clients=manifest.clients)
        self.add(info)

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

        shortcut = frontpage.Shortcut('shortcut-jsxc',
                                      name=info.name,
                                      short_description=info.short_description,
                                      icon=info.icon_filename,
                                      url=reverse_lazy('jsxc:jsxc'),
                                      clients=info.clients)
        self.add(shortcut)

        packages = Packages('packages-jsxc', ['libjs-jsxc'])
        self.add(packages)

        firewall = Firewall('firewall-jsxc',
                            info.name,
                            ports=['http', 'https'],
                            is_external=True)
        self.add(firewall)

        directory_map = {
            '/static/jsxc/img': '/usr/share/libjs-jsxc/img/',
            '/static/jsxc/libjs-jsxc/lib': '/usr/share/javascript/jsxc/lib/',
            '/static/jsxc/libjs-jsxc/sound': '/usr/share/libjs-jsxc/sound/',
            '/static/jsxc/libjs-jsxc/': '/usr/share/libjs-jsxc/css/',
        }
        static_files = StaticFiles('static-files-jsxc',
                                   directory_map=directory_map)
        self.add(static_files)

        backup_restore = BackupRestore('backup-restore-jsxc',
                                       **manifest.backup)
        self.add(backup_restore)
Exemplo n.º 30
0
    def __init__(self):
        """Create components for the app."""
        super().__init__()

        groups = {'i2p': _('Manage I2P application')}

        info = app_module.Info(
            app_id=self.app_id, version=self._version, name=_('I2P'),
            icon_filename='i2p', short_description=_('Anonymity Network'),
            description=_description, manual_page='I2P',
            clients=manifest.clients,
            donation_url='https://geti2p.net/en/get-involved/donate')
        self.add(info)

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

        shortcut = frontpage.Shortcut('shortcut-i2p', info.name,
                                      short_description=info.short_description,
                                      icon=info.icon_filename, url='/i2p/',
                                      clients=info.clients,
                                      login_required=True,
                                      allowed_groups=list(groups))
        self.add(shortcut)

        packages = Packages('packages-i2p', ['i2p'])
        self.add(packages)

        firewall = Firewall('firewall-i2p-web', info.name,
                            ports=['http', 'https'], is_external=True)
        self.add(firewall)

        firewall = Firewall('firewall-i2p-proxies', _('I2P Proxy'),
                            ports=tunnels_to_manage.values(),
                            is_external=False)
        self.add(firewall)

        webserver = Webserver('webserver-i2p', 'i2p-freedombox',
                              urls=['https://{host}/i2p/'])
        self.add(webserver)

        daemon = Daemon('daemon-i2p', 'i2p', listen_ports=[(7657, 'tcp6')])
        self.add(daemon)

        users_and_groups = UsersAndGroups('users-and-groups-i2p',
                                          groups=groups)
        self.add(users_and_groups)

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