def __init__(self): """Create components for the app.""" super().__init__() info = app_module.Info(app_id=self.app_id, version=version, name=_('Radicale'), icon_filename='radicale', short_description=_('Calendar and Addressbook'), description=_description, manual_page='Radicale', clients=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) firewall = Firewall('firewall-radicale', info.name, ports=['http', 'https'], is_external=True) self.add(firewall) webserver = RadicaleWebserver('webserver-radicale', None, urls=['https://{host}/radicale']) self.add(webserver) uwsgi = RadicaleUwsgi('uwsgi-radicale', 'radicale') self.add(uwsgi) daemon = RadicaleDaemon('daemon-radicale', managed_services[0]) self.add(daemon)
def __init__(self): """Create components for the app.""" super().__init__() info = app_module.Info(app_id=self.app_id, version=version, name=_('Shaarli'), icon_filename='shaarli', short_description=_('Bookmarks'), description=_description, manual_page='Shaarli', clients=clients) self.add(info) menu_item = menu.Menu('menu-shaarli', info.name, info.short_description, info.icon_filename, 'shaarli:index', parent_url_name='apps') self.add(menu_item) shortcut = frontpage.Shortcut('shortcut-shaarli', info.name, short_description=info.short_description, icon=info.icon_filename, url='/shaarli', clients=info.clients, login_required=True) self.add(shortcut) firewall = Firewall('firewall-shaarli', info.name, ports=['http', 'https'], is_external=True) self.add(firewall) webserver = Webserver('webserver-shaarli', 'shaarli') self.add(webserver)
def __init__(self): """Create components for the app.""" super().__init__() info = app_module.Info(app_id=self.app_id, version=version, name=_('Privoxy'), icon_filename='privoxy', short_description=_('Web Proxy'), description=_description, manual_page='Privoxy') 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) firewall = Firewall('firewall-privoxy', info.name, ports=['privoxy'], is_external=False) self.add(firewall) daemon = Daemon('daemon-privoxy', managed_services[0], 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)
def __init__(self): """Create components for the app.""" super().__init__() info = app_module.Info(app_id=self.app_id, version=version, name=_('Transmission'), icon_filename='transmission', short_description=_('BitTorrent Web Client'), description=_description, manual_page='Transmission', clients=clients) 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=[group[0]]) self.add(shortcut) firewall = Firewall('firewall-transmission', info.name, ports=['http', 'https'], is_external=True) self.add(firewall) webserver = Webserver('webserver-transmission', 'transmission-plinth', urls=['https://{host}/transmission']) self.add(webserver) daemon = Daemon('daemon-transmission', managed_services[0], listen_ports=[(9091, 'tcp4')]) self.add(daemon)
def __init__(self): """Create components for the app.""" super().__init__() groups = {'freedombox-share': _('Access to the private shares')} info = app_module.Info( app_id=self.app_id, version=version, name=_('Samba'), icon_filename='samba', short_description=_('Network File Storage'), manual_page='Samba', description=_description, clients=manifest.clients, donation_url='https://www.samba.org/samba/donations.html') self.add(info) menu_item = menu.Menu('menu-samba', info.name, info.short_description, info.icon_filename, 'samba:index', parent_url_name='apps') self.add(menu_item) shortcut = frontpage.Shortcut( 'shortcut-samba', info.name, short_description=info.short_description, icon=info.icon_filename, description=info.description, configure_url=reverse_lazy('samba:index'), clients=info.clients, login_required=True, allowed_groups=list(groups)) self.add(shortcut) firewall = Firewall('firewall-samba', info.name, ports=['samba']) self.add(firewall) daemon = Daemon('daemon-samba', managed_services[0], listen_ports=[(139, 'tcp4'), (139, 'tcp6'), (445, 'tcp4'), (445, 'tcp6')]) self.add(daemon) daemon_nmbd = Daemon('daemon-samba-nmbd', managed_services[1], listen_ports=[(137, 'udp4'), (138, 'udp4')]) self.add(daemon_nmbd) users_and_groups = UsersAndGroups('users-and-groups-samba', groups=groups) self.add(users_and_groups) backup_restore = SambaBackupRestore('backup-restore-samba', **manifest.backup) self.add(backup_restore)
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=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)
def __init__(self): """Create components for the app.""" super().__init__() info = app_module.Info( app_id=self.app_id, version=self._version, name=_('WireGuard'), icon_filename='wireguard', short_description=_('Virtual Private Network'), description=_description, manual_page='WireGuard', clients=manifest.clients, donation_url='https://www.wireguard.com/donations/') self.add(info) menu_item = menu.Menu('menu-wireguard', info.name, info.short_description, info.icon_filename, 'wireguard:index', parent_url_name='apps') self.add(menu_item) shortcut = frontpage.Shortcut( 'shortcut-wireguard', info.name, short_description=info.short_description, icon=info.icon_filename, description=info.description, configure_url=reverse_lazy('wireguard:index'), login_required=True, clients=info.clients) self.add(shortcut) packages = Packages('packages-wireguard', ['wireguard']) self.add(packages) firewall = Firewall('firewall-wireguard', info.name, ports=['wireguard-freedombox'], is_external=True) self.add(firewall)
def __init__(self): """Create components for the app.""" super().__init__() info = app_module.Info(app_id=self.app_id, version=version, name=_('Tahoe-LAFS'), icon_filename='tahoe-lafs', short_description=_('Distributed File Storage'), description=_description) self.add(info) menu_item = menu.Menu('menu-tahoe', info.name, info.short_description, info.icon_filename, 'tahoe:index', parent_url_name='apps', advanced=True) self.add(menu_item) shortcut = frontpage.Shortcut( 'shortcut-tahoe', info.name, short_description=info.short_description, icon=info.icon_filename, description=info.description, url=None, configure_url=reverse_lazy('tahoe:index'), login_required=True) self.add(shortcut) firewall = Firewall('firewall-tahoe', info.name, ports=['tahoe-plinth'], is_external=True) self.add(firewall) webserver = Webserver('webserver-tahoe', 'tahoe-plinth') self.add(webserver) daemon = Daemon('daemon-tahoe', managed_services[0]) self.add(daemon)
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)
def __init__(self): """Create components for the app.""" super().__init__() info = app_module.Info(app_id=self.app_id, version=version, name=_('Mumble'), icon_filename='mumble', short_description=_('Voice Chat'), description=_description, manual_page='Mumble', clients=clients) self.add(info) menu_item = menu.Menu('menu-mumble', info.name, info.short_description, 'mumble', 'mumble:index', parent_url_name='apps') self.add(menu_item) shortcut = frontpage.Shortcut( 'shortcut-mumble', info.name, short_description=info.short_description, icon=info.icon_filename, description=info.description, configure_url=reverse_lazy('mumble:index'), clients=info.clients) self.add(shortcut) firewall = Firewall('firewall-mumble', info.name, ports=['mumble-plinth'], is_external=True) self.add(firewall) daemon = Daemon( 'daemon-mumble', managed_services[0], listen_ports=[(64738, 'tcp4'), (64738, 'tcp6'), (64738, 'udp4'), (64738, 'udp6')]) self.add(daemon) users_and_groups = UsersAndGroups('users-and-groups-mumble', reserved_usernames=['mumble-server']) self.add(users_and_groups)
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)
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)
def __init__(self): """Create components for the app.""" super().__init__() info = app_module.Info(app_id=self.app_id, version=version, name=_('Shadowsocks'), icon_filename='shadowsocks', short_description=_('Socks5 Proxy'), description=_description, manual_page='Shadowsocks') self.add(info) menu_item = menu.Menu('menu-shadowsocks', info.name, info.short_description, info.icon_filename, 'shadowsocks:index', parent_url_name='apps') self.add(menu_item) shortcut = frontpage.Shortcut( 'shortcut-shadowsocks', info.name, short_description=info.short_description, icon=info.icon_filename, description=info.description, configure_url=reverse_lazy('shadowsocks:index'), login_required=True) self.add(shortcut) firewall = Firewall('firewall-shadowsocks', info.name, ports=['shadowsocks-local-plinth'], is_external=False) self.add(firewall) daemon = Daemon('daemon-shadowsocks', managed_services[0], listen_ports=[(1080, 'tcp4'), (1080, 'tcp6')]) self.add(daemon)
def __init__(self): """Create components for the app.""" super().__init__() 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=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=[group[0]]) 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)
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=version, name=_('I2P'), icon_filename='i2p', short_description=_('Anonymity Network'), description=_description, manual_page='I2P', clients=clients) 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) 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', managed_services[0], listen_ports=[(7657, 'tcp6')]) self.add(daemon) users_and_groups = UsersAndGroups('users-and-groups-i2p', groups=groups) self.add(users_and_groups)
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)
def __init__(self): """Create components for the app.""" super().__init__() info = app_module.Info(app_id=self.app_id, version=version, name=_('Matrix Synapse'), icon_filename='matrixsynapse', short_description=_('Chat Server'), description=_description, manual_page='MatrixSynapse', clients=clients) self.add(info) menu_item = menu.Menu('menu-matrixsynapse', info.name, info.short_description, 'matrixsynapse', 'matrixsynapse:index', parent_url_name='apps') self.add(menu_item) shortcut = frontpage.Shortcut( 'shortcut-matrixsynapse', info.name, short_description=info.short_description, icon=info.icon_filename, description=info.description, configure_url=reverse_lazy('matrixsynapse:index'), clients=info.clients, login_required=True) self.add(shortcut) firewall = Firewall('firewall-matrixsynapse', info.name, ports=['matrix-synapse-plinth'], is_external=True) self.add(firewall) webserver = Webserver('webserver-matrixsynapse', 'matrix-synapse-plinth', urls=['https://{host}/_matrix/client/versions']) self.add(webserver) letsencrypt = LetsEncrypt( 'letsencrypt-matrixsynapse', domains=get_domains, daemons=[managed_services[0]], should_copy_certificates=True, private_key_path='/etc/matrix-synapse/homeserver.tls.key', certificate_path='/etc/matrix-synapse/homeserver.tls.crt', user_owner='matrix-synapse', group_owner='nogroup', managing_app='matrixsynapse') self.add(letsencrypt) daemon = Daemon('daemon-matrixsynapse', managed_services[0], listen_ports=[(8008, 'tcp4'), (8448, 'tcp4')]) self.add(daemon)
def add_shortcut(self, site, title): """Add an ikiwiki shortcut to frontpage.""" shortcut = frontpage.Shortcut('shortcut-ikiwiki-' + site, title, icon=self.info.icon_filename, url='/ikiwiki/' + site, clients=self.info.clients) self.add(shortcut) return shortcut
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)
def __init__(self): """Create components for the app.""" super().__init__() info = app_module.Info(app_id=self.app_id, version=version, name=_('Quassel'), icon_filename='quassel', short_description=_('IRC Client'), description=_description, manual_page='Quassel', clients=clients) self.add(info) menu_item = menu.Menu('menu-quassel', info.name, info.short_description, info.icon_filename, 'quassel:index', parent_url_name='apps') self.add(menu_item) shortcut = frontpage.Shortcut( 'shortcut-quassel', info.name, short_description=info.short_description, icon=info.icon_filename, description=info.description, configure_url=reverse_lazy('quassel:index'), clients=info.clients, login_required=True) self.add(shortcut) firewall = Firewall('firewall-quassel', info.name, ports=['quassel-plinth'], is_external=True) self.add(firewall) letsencrypt = LetsEncrypt( 'letsencrypt-quassel', domains=get_domains, daemons=managed_services, should_copy_certificates=True, private_key_path='/var/lib/quassel/quasselCert.pem', certificate_path='/var/lib/quassel/quasselCert.pem', user_owner='quasselcore', group_owner='quassel', managing_app='quassel') self.add(letsencrypt) daemon = Daemon('daemon-quassel', managed_services[0], listen_ports=[(4242, 'tcp4'), (4242, 'tcp6')]) self.add(daemon) users_and_groups = UsersAndGroups('users-and-groups-quasselcore', reserved_usernames=['quasselcore']) self.add(users_and_groups)
def __init__(self): """Create components for the app.""" super().__init__() groups = {'git-access': _('Read-write access to Git repositories')} self.repos = [] info = app_module.Info(app_id=self.app_id, version=version, name=_('Gitweb'), icon_filename='gitweb', short_description=_('Simple Git Hosting'), description=_description, manual_page='GitWeb', clients=clients) self.add(info) menu_item = menu.Menu('menu-gitweb', info.name, info.short_description, info.icon_filename, 'gitweb:index', parent_url_name='apps') self.add(menu_item) shortcut = frontpage.Shortcut('shortcut-gitweb', info.name, short_description=info.short_description, icon=info.icon_filename, url='/gitweb/', clients=info.clients, login_required=True, allowed_groups=list(groups)) self.add(shortcut) firewall = Firewall('firewall-gitweb', info.name, ports=['http', 'https'], is_external=True) self.add(firewall) webserver = Webserver('webserver-gitweb', 'gitweb-freedombox', urls=['https://{host}/gitweb/']) self.add(webserver) self.auth_webserver = GitwebWebserverAuth('webserver-gitweb-auth', 'gitweb-freedombox-auth') self.add(self.auth_webserver) users_and_groups = UsersAndGroups('users-and-groups-gitweb', groups=groups) self.add(users_and_groups) setup_helper = globals()['setup_helper'] if setup_helper.get_state() != 'needs-setup': self.update_service_access()
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)
def __init__(self): """Create components for the app.""" super().__init__() self.groups = {'syncthing': _('Administer Syncthing application')} info = app_module.Info(app_id=self.app_id, version=version, name=_('Syncthing'), icon_filename='syncthing', short_description=_('File Synchronization'), description=_description, manual_page='Syncthing', clients=clients) self.add(info) menu_item = menu.Menu('menu-syncthing', info.name, info.short_description, info.icon_filename, 'syncthing:index', parent_url_name='apps') self.add(menu_item) shortcut = frontpage.Shortcut('shortcut-syncthing', info.name, short_description=info.short_description, icon=info.icon_filename, url='/syncthing/', clients=info.clients, login_required=True, allowed_groups=list(self.groups)) self.add(shortcut) firewall = Firewall('firewall-syncthing-web', info.name, ports=['http', 'https'], is_external=True) self.add(firewall) firewall = Firewall('firewall-syncthing-ports', info.name, ports=['syncthing'], is_external=True) self.add(firewall) webserver = Webserver('webserver-syncthing', 'syncthing-plinth', urls=['https://{host}/syncthing/']) self.add(webserver) daemon = Daemon('daemon-syncthing', managed_services[0]) self.add(daemon) users_and_groups = UsersAndGroups('users-and-groups-syncthing', [SYSTEM_USER], self.groups) self.add(users_and_groups)
def __init__(self): """Create components for the app.""" super().__init__() info = app_module.Info( app_id=self.app_id, version=self._version, name=_('WordPress'), icon_filename='wordpress', short_description=_('Website and Blog'), description=_description, manual_page='WordPress', clients=manifest.clients, donation_url='https://wordpressfoundation.org/donate/') self.add(info) menu_item = menu.Menu('menu-wordpress', info.name, info.short_description, info.icon_filename, 'wordpress:index', parent_url_name='apps') self.add(menu_item) shortcut = frontpage.Shortcut('shortcut-wordpress', info.name, short_description=info.short_description, icon=info.icon_filename, url='/wordpress/', clients=info.clients) self.add(shortcut) # Add php to avoid wordpress package bringing in lib-apache2-mod-php. # WordPress only supports MySQL/MariaDB as database server. packages = Packages( 'packages-wordpress', [ 'wordpress', # Avoid WordPress package bringing in libapache2-mod-php 'php', # Optional, for performance 'php-imagick', # Optional, to upload plugins/themes using SSH connection 'php-ssh2', # Optional, for performance 'php-zip', # WordPress only supports MySQL/MariaDB as DB 'default-mysql-server', ]) self.add(packages) firewall = Firewall('firewall-wordpress', info.name, ports=['http', 'https'], is_external=True) self.add(firewall) webserver = Webserver('webserver-wordpress', 'wordpress-freedombox', urls=['https://{host}/wordpress/']) self.add(webserver) daemon = Daemon('daemon-wordpress', 'wordpress-freedombox.timer') self.add(daemon) backup_restore = WordPressBackupRestore('backup-restore-wordpress', **manifest.backup) self.add(backup_restore)
def __init__(self): """Create components for the app.""" super().__init__() groups = {'web-search': _('Search the web')} info = app_module.Info(app_id=self.app_id, version=version, name=_('Searx'), icon_filename='searx', short_description=_('Web Search'), description=_description, manual_page='Searx', clients=clients) self.add(info) menu_item = menu.Menu('menu-searx', info.name, info.short_description, info.icon_filename, 'searx:index', parent_url_name='apps') self.add(menu_item) shortcut = frontpage.Shortcut( 'shortcut-searx', info.name, short_description=info.short_description, icon=info.icon_filename, url='/searx/', clients=info.clients, login_required=(not is_public_access_enabled()), allowed_groups=list(groups)) self.add(shortcut) firewall = Firewall('firewall-searx', info.name, ports=['http', 'https'], is_external=True) self.add(firewall) webserver = Webserver('webserver-searx', 'searx-freedombox', urls=['https://{host}/searx/']) self.add(webserver) webserver = SearxWebserverAuth('webserver-searx-auth', 'searx-freedombox-auth') self.add(webserver) uwsgi = Uwsgi('uwsgi-searx', 'searx') self.add(uwsgi) users_and_groups = UsersAndGroups('users-and-groups-searx', groups=groups) self.add(users_and_groups)
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)
def __init__(self): """Create components for the app.""" super().__init__() groups = {'feed-reader': _('Read and subscribe to news feeds')} info = app_module.Info(app_id=self.app_id, version=version, name=_('Tiny Tiny RSS'), icon_filename='ttrss', short_description=_('News Feed Reader'), description=_description, manual_page='TinyTinyRSS', clients=manifest.clients) self.add(info) menu_item = menu.Menu('menu-ttrss', info.name, info.short_description, info.icon_filename, 'ttrss:index', parent_url_name='apps') self.add(menu_item) shortcut = frontpage.Shortcut('shortcut-ttrss', info.name, short_description=info.short_description, icon=info.icon_filename, url='/tt-rss', clients=info.clients, login_required=True, allowed_groups=list(groups)) self.add(shortcut) firewall = Firewall('firewall-ttrss', info.name, ports=['http', 'https'], is_external=True) self.add(firewall) webserver = Webserver('webserver-ttrss', 'tt-rss-plinth', urls=['https://{host}/tt-rss']) self.add(webserver) daemon = Daemon('daemon-ttrss', managed_services[0]) self.add(daemon) users_and_groups = UsersAndGroups('users-and-groups-ttrss', groups=groups) self.add(users_and_groups) backup_restore = TTRSSBackupRestore('backup-restore-ttrss', **manifest.backup) self.add(backup_restore)
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)
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)
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)