50 Commits

Author SHA1 Message Date
Sunil Mohan Adapa
f9b186e14f
*: Add type hints for app init methods
- This is so that the methods will be checked by mypy. This should help identify
any incorrect initialization of components.

- Remove unused self.repos in GitwebApp.

Signed-off-by: Sunil Mohan Adapa <sunil@medhas.org>
Reviewed-by: James Valleroy <jvalleroy@mailbox.org>
2024-03-09 14:22:14 -05:00
Sunil Mohan Adapa
4950639fbf
i2p: Use drop-in config component for /etc files
Tests:

- Could not test as the app is uninstallable

Signed-off-by: Sunil Mohan Adapa <sunil@medhas.org>
Reviewed-by: James Valleroy <jvalleroy@mailbox.org>
2023-06-05 20:29:01 -04:00
Sunil Mohan Adapa
c4241abfe8
i2p: Add protection to local service using firewall
Tests:

- When app is freshly installed, nft rules are inserted.

- Trying to connect to local daemon from fbx user fails.

- Functional tests pass.

Signed-off-by: Sunil Mohan Adapa <sunil@medhas.org>
Reviewed-by: James Valleroy <jvalleroy@mailbox.org>
2022-12-05 20:47:04 -05:00
Sunil Mohan Adapa
ce1347b172
i2p: Remove donation URL that is no longer available
Closes: #2300

https://www.reddit.com/r/i2p/comments/utou95/what_happened_to_the_donate_page_on_geti2pnet/

Signed-off-by: Sunil Mohan Adapa <sunil@medhas.org>
Reviewed-by: James Valleroy <jvalleroy@mailbox.org>
2022-12-03 08:55:24 -05:00
Sunil Mohan Adapa
24af41e6a8
i2p: Use privileged decorator for actions
Tests:

- Functional tests work.
- Initial setup works
  - Sometimes fails to write tunnel configuration (See #2127).
  - Favorites are created as listed in FAVORITES in resources.py
  - Tunnels are created: I2P HTTP Proxy, I2P HTTPS Proxy, Irc2P

Signed-off-by: Sunil Mohan Adapa <sunil@medhas.org>
Reviewed-by: James Valleroy <jvalleroy@mailbox.org>
2022-10-08 18:52:08 -04:00
Sunil Mohan Adapa
900c0d30b9
*: Drop module level app property
module.app property usage is greatly reduced because setup() and force_upgrade()
method are now part of App class instead of at the module level. Remove the
remaining minor cases of usage and drop the property altogether.

Signed-off-by: Sunil Mohan Adapa <sunil@medhas.org>
Reviewed-by: James Valleroy <jvalleroy@mailbox.org>
2022-08-15 10:36:29 -04:00
Sunil Mohan Adapa
75f6abac1e
*: Make setup method part of App class for all apps
- Primary purpose is to complete the App API and allow for multiple apps to be
present in a module without a single clashing setup() method. Secondary
objective is to get rid of SetupHelper instance simple use App instance instead.

- This brings us closer to not needing to implement setup() method for some of
the typical apps.

- Remove default value None for old_version parameter.

  - A valid integer value is always passed to this call.

  - The value of None is undefined.

  - Simplifies the App API slightly.

- Drop setting 'pre', 'post' values to indicate the stage of setup for the App.

  - Simplifies the setup methods significantly. Eliminates a class of
  bugs (some of them seen earlier).

  - The UI can show a simple 'installing...' or progress spinner instead of
  individual stages.

  - There are currently many inconsistencies where many operations are not
  wrapped in helper.call() calls.

Signed-off-by: Sunil Mohan Adapa <sunil@medhas.org>
Reviewed-by: James Valleroy <jvalleroy@mailbox.org>
2022-08-15 10:36:16 -04:00
Sunil Mohan Adapa
a3d4d99b33
*: Drop use of module level version
Signed-off-by: Sunil Mohan Adapa <sunil@medhas.org>
Reviewed-by: James Valleroy <jvalleroy@mailbox.org>
2021-12-04 16:38:08 -05:00
Sunil Mohan Adapa
781d8fa18b
*: Drop use of managed_services, rely on Daemon component
Signed-off-by: Sunil Mohan Adapa <sunil@medhas.org>
Reviewed-by: James Valleroy <jvalleroy@mailbox.org>
2021-12-04 16:35:57 -05:00
Sunil Mohan Adapa
4bf57c5707
*: Drop use of managed_packages and rely on Packages component
- For zoph, drop dependency on php7.4 as it will cause issues for future
versions of php. The dependency was a hack and not needed for Bullseye and
higher.

Signed-off-by: Sunil Mohan Adapa <sunil@medhas.org>
Reviewed-by: James Valleroy <jvalleroy@mailbox.org>
2021-12-04 16:34:52 -05:00
Joseph Nuthalapati
cd4bd17173
components: Introduce new component - Packages
Signed-off-by: Joseph Nuthalapati <njoseph@riseup.net>
[sunil: isort all files]
[sunil: Remove component in datetime component as managed_packages is empty]
[sunil: Minor refactor in minidlna for consistency]
Signed-off-by: Sunil Mohan Adapa <sunil@medhas.org>
Reviewed-by: Sunil Mohan Adapa <sunil@medhas.org>
2021-11-08 16:03:42 -08:00
Sunil Mohan Adapa
74214c18ae
*: Use Django gettext functions instead of ugettext
- ugettext functions will be removed in Django 4.0. Each use emits a warning
when running with Django 3.2. Since we have warnings enabled in developer mode,
we see quite a few messages because of this.

- ugettext is already a simple alias of gettext. So, no regressions are
expected.

Tests:

- Accessing an affected app in UI with Django 3.2 and Django 2.2 works fine.

- Using Django 3.2 there are no warnings related to removal of ugettext
functions.

- Ran regular unit tests.

Signed-off-by: Sunil Mohan Adapa <sunil@medhas.org>
Reviewed-by: James Valleroy <jvalleroy@mailbox.org>
2021-09-20 16:50:16 -04:00
Sunil Mohan Adapa
fb1898befc
backups: Use the backup component in all apps
Signed-off-by: Sunil Mohan Adapa <sunil@medhas.org>
Reviewed-by: Veiko Aasa <veiko17@disroot.org>
2021-01-04 13:47:38 +02:00
James Valleroy
f88ced9706
app: Add donation links in dropdown menu
Signed-off-by: James Valleroy <jvalleroy@mailbox.org>
[sunil: Undo a minor isort refactor in searx]
[sunil: Change the menu label to 'Donate']
Signed-off-by: Sunil Mohan Adapa <sunil@medhas.org>
Reviewed-by: Sunil Mohan Adapa <sunil@medhas.org>
2020-10-11 19:49:22 -07:00
Sunil Mohan Adapa
4aa8e6da09
firewall: Use service files for showing port forwarding info
- Start showing port ranges properly.

- Fixes issue with Coturn TURN relay ports not being shown.

Closes: #1851.

Tests:

- Visit each of affected apps and see the port forwarding information. The
information is same as before.

- HTTP and HTTPS ports are not shown.

- Coturn app shows additional port ranges for TURN relay ports.

- Shadowsocks app does not show port forwarding information as it is internal
only.

- Visit one of the apps not effected by the patch. There is no section related
to port forwarding.

Signed-off-by: Sunil Mohan Adapa <sunil@medhas.org>
Reviewed-by: Veiko Aasa <veiko17@disroot.org>
2020-09-04 16:31:52 +03:00
Joseph Nuthalapati
d92ca09e19
framework: Remove module init() functions
Fixes #1906

Signed-off-by: Joseph Nuthalapati <njoseph@riseup.net>
Reviewed-by: James Valleroy <jvalleroy@mailbox.org>
2020-08-03 18:06:48 -04:00
Joseph Nuthalapati
e04ae48637
users: Add component for managing users and groups
- Handle groups needed by an app.
- Handle reserved usernames for an app.
- Updated documentation
- Updated unit tests

Tests performed:
  - Reserved usernames: ez-ipupd, ejabberd, Debian-minetest, mldonkey,
    monkeysphere, mumble-server, privoxy, quasselcore, radicale, debian-tor,
    debian-transmission
  - Reserved usernames checks should work in the following forms:
    - Create user
    - Update user
    - First boot user creation
  - Full list of available groups should appear in following cases:
    - Create user form
    - Update user form
  - Full list of groups should get created in Django DB during:
    - Update user form display
    - First boot form save
  - When updating the last admin user, the 'admin' group choice is checked
    and disabled.
  - Following groups show up (sorted by group name):
    - bit-torrent: Download files using BitTorrent applications
    - git-access: Read-write access to Git repositories
    - i2p: Manage I2P application
    - wiki: View and edit wiki applications
    - minidlna: Media streaming server
    - ed2k: Download files using eDonkey applications
    - freedombox-share: Access to the private shares
    - web-search: Search the web
    - syncthing: Administer Syncthing application
    - feed-reader: Read and subscribe to news feeds
    - admin: Access to all services and system settings
  - Directory validation form checks for write permissions for following apps:
    - deluge with debian-deluged user
    - transmission with debian-transmission user
  - Sharing app should show all the groups in add/edit share forms
  - The following apps should get added to share group during setup:
    debian-transmission
    debian-deluged
  - Unit tests pass
  - Functional tests for users and groups pass
  - Test that an app (example syncthing) provides the necessary
    permissions to users in that group (but not in admin group).

Signed-off-by: Joseph Nuthalapati <njoseph@riseup.net>
[sunil: Fix i18n of group descriptions]
[sunil: Update developer documentation]
[sunil: Separate out cosmetic changes]
[sunil: Fix component ID for mumble]
[sunil: sharing: Remove unneeded dependency on users app]
[sunil: Implement better API for getting groups in component]
[sunil: Fix incorrect regression change ttrss app]
[sunil: Make iterating over gourps more readable]
[sunil: Improve tests, drop single use fixtures]
[sunil: Simplify test_view.py fixture]
Signed-off-by: Sunil Mohan Adapa <sunil@medhas.org>
Tested-by: Sunil Mohan Adapa <sunil@medhas.org>
Reviewed-by: Sunil Mohan Adapa <sunil@medhas.org>
Reviewed-by: James Valleroy <jvalleroy@mailbox.org>
2020-04-04 09:31:35 -04:00
Sunil Mohan Adapa
9368504da5
*.py: Use SPDX license identifier
Reviewed-by: Veiko Aasa <veiko17@disroot.org>
2020-02-19 14:38:55 +02:00
Sunil Mohan Adapa
b576a77c3d
app: Refactor all apps to use the Info component
- Remove the need to pass all the individual information elements to the AppView
  separately. This eliminates many issues with elements that were mistakenly not
  sent to AppView. Also reduces a lot of code duplication.

- Create App classes for power and sso for consistency.

Reviewed-by: James Valleroy <jvalleroy@mailbox.org>
2020-02-16 18:22:01 -05:00
Sunil Mohan Adapa
2ebb565c92
diagnostics: Use new component based API for all diagnostic tests
Signed-off-by: Sunil Mohan Adapa <sunil@medhas.org>
Reviewed-by: James Valleroy <jvalleroy@mailbox.org>
2019-12-30 11:37:46 -05:00
Alice Kile
eb83e00011
fix formatting issues
Reviewed-by: James Valleroy <jvalleroy@mailbox.org>
2019-12-07 13:08:35 -05:00
Alice Kile
fa74a26042
use single variable for referencing icon filename
- add and use "icon_filename" property to almost all of the modules
  being displayed in the apps page
- sharing and tor modules do not seem to be using setup.html template
  file and so the variable is not added to their __init__.py files,
  therefore the icon will not be displayed on these app pages.

Reviewed-by: James Valleroy <jvalleroy@mailbox.org>
2019-12-07 13:08:33 -05:00
Sunil Mohan Adapa
d6c0b98375
i2p: Use app.html instead of app-subsubmenu.html
- Gain ability to show internal zone warning for I2P proxies.

Signed-off-by: Sunil Mohan Adapa <sunil@medhas.org>
Reviewed-by: James Valleroy <jvalleroy@mailbox.org>
2019-10-05 13:26:13 -04:00
Nikolas Nyby
5439084c84
Add flake8 to gitlib-ci - closes #58
And fix the rest of the flake8 errors.

Reviewed-by: Sunil Mohan Adapa <sunil@medhas.org>
2019-07-25 11:07:06 -07:00
Nikolas Nyby
f81b1751ce
Fix typos in module init docs
Intialize -> Initialize

Reviewed-by: Sunil Mohan Adapa <sunil@medhas.org>
2019-07-24 14:55:22 -07:00
Sunil Mohan Adapa
e4351b6b97
Introduce daemon component to handle systemd units
Signed-off-by: Sunil Mohan Adapa <sunil@medhas.org>
Reviewed-by: James Valleroy <jvalleroy@mailbox.org>
2019-06-13 20:18:02 -04:00
Sunil Mohan Adapa
46f162d093
app: Add unique ID to each app class
Also maintain a global list of apps

Signed-off-by: Sunil Mohan Adapa <sunil@medhas.org>
Reviewed-by: James Valleroy <jvalleroy@mailbox.org>
2019-06-13 20:17:59 -04:00
Sunil Mohan Adapa
4100d36381
Introduce webserver component for managing Apache configuration
Signed-off-by: Sunil Mohan Adapa <sunil@medhas.org>
Reviewed-by: James Valleroy <jvalleroy@mailbox.org>
2019-06-13 20:17:49 -04:00
Sunil Mohan Adapa
ca2c7dbeb0
Introduce firewall component for opening/closing ports
Signed-off-by: Sunil Mohan Adapa <sunil@medhas.org>
Reviewed-by: James Valleroy <jvalleroy@mailbox.org>
2019-06-13 20:17:45 -04:00
Sunil Mohan Adapa
75c57d3e00
Turn frontpage shortcut into an app component
- Turn frontpage shortcut into an App component. Add tests and full
  documentation.

- Overridden implementations for tahoe, diaspora, mediawiki shortcuts to handle
  special cases. Special handling for ikiwiki.

- Extend App API for removing and retrieving a component.

- Add clients information into shortcuts to avoid hacks when presenting
  shortcuts to Mobile devices via API.

- Fixed unnecessary stripping and adding of '/' when setting home page redirect
  URLs. This fixes problem with setting Cockpit as home page.

- Replaced the use of term 'app' in favor of 'shortcut' as the term when setting
  frontpage shortcuts as home page.

- JSXC shortcut does not require login.

- Don't show shadowsocks for anonymous users.

- Simplify showing selected shortcut details.

Signed-off-by: Sunil Mohan Adapa <sunil@medhas.org>
2019-06-07 11:48:08 -07:00
Sunil Mohan Adapa
b96d901071
Introduce component architecture and menu component
- Introduce base class for all apps that will contain components. With
  unittests.

- Introduce base classes for components. With unittests.

- Turn Menu class into an app component.

  - Further cleanup Menu class.

  - Update tests.

  - Maintain a global list of menu items and look them up easily. Generalize
    such that subsubmenus can later be merged into Menu class.

  - Cleanup scope of main menu initialization.

  - Use None instead of empty strings for various values. Ensure that
    printing short_description does not show 'None' in output.

  - Use enable/disable instead of promote/demote.

- Use menu component in all apps.

Signed-off-by: Sunil Mohan Adapa <sunil@medhas.org>
2019-06-07 11:48:04 -07:00
Sunil Mohan Adapa
4bfb1accfb
i2p: Show port forwarding information
Signed-off-by: Sunil Mohan Adapa <sunil@medhas.org>
2019-05-13 15:54:24 -07:00
James Valleroy
893bd2b4d6
apps: Separate enabled and disabled apps
- Add 'secondary' flag to menu items.

- Mark apps as 'secondary' when disabled.

- Extend TemplateView for apps index.

- Add card-container for disabled apps.

Closes #1309

Signed-off-by: James Valleroy <jvalleroy@mailbox.org>
Reviewed-by: Sunil Mohan Adapa <sunil@medhas.org>
2019-05-07 16:57:55 -07:00
Sunil Mohan Adapa
97ed7fe144
i2p: Minor flake8 and yapf fixes
Signed-off-by: Sunil Mohan Adapa <sunil@medhas.org>
2019-04-29 16:51:54 -07:00
LoveIsGrief
f7d9c9eff5
i2p: Include default favorites after installation
The default favorites might change and we might have to update the list but for
now they were extracted from a clean router.config saved by the i2p daemon.

1528 - augeas for router.config

Reviewed-by: Sunil Mohan Adapa <sunil@medhas.org>
2019-04-29 16:51:19 -07:00
LoveIsGrief
1c9ad9f953
i2p: Use augeas for editing the router.config
It's cleaner and less hacky, however we still overwrite the default favs because
they aren't written to the file by i2p until a change is made manually in the
frontend.

We still need to recreate the list of default and add them manually.

Reviewed-by: Sunil Mohan Adapa <sunil@medhas.org>
2019-04-29 16:50:40 -07:00
Sunil Mohan Adapa
c13e9a4227
i2p: Don't enable proxies on external zone
- Only web interface (protected by sign-on) should be available on external
  interfaces.

- Proxies should only be available on internal interfaces. Otherwise, they will
  become open proxies on the Internet which might have implications for the
  FreedomBox user.

- Update description to convey that we are not opening SOCKS proxy but only
  HTTP, HTTPS and IRC proxies.

Signed-off-by: Sunil Mohan Adapa <sunil@medhas.org>
2019-04-29 15:38:43 -07:00
Sunil Mohan Adapa
8267c1156b
i2p: Disable the daemon before editing configuration
- This is likely to yield better consistency as the daemon also edits the
  configuration files.

Signed-off-by: Sunil Mohan Adapa <sunil@medhas.org>
2019-04-29 15:02:30 -07:00
Sunil Mohan Adapa
1e8a39e690
i2p: Update firewalld service descriptions
- HTTP/HTTPS proxies are not SOCKS proxies. SOCKS proxies are not recommended by
  the project. https://geti2p.net/en/docs/api/socks

- Write more detailed description in firewalld style.

- Rename the files for firewalld styling and removing 'socks'.

Signed-off-by: Sunil Mohan Adapa <sunil@medhas.org>
2019-04-29 15:02:27 -07:00
Sunil Mohan Adapa
a73f002ed6
i2p: flake8 and yapf fixes
- Run isort and yapf.

- Better docstrings.

Signed-off-by: Sunil Mohan Adapa <sunil@medhas.org>
2019-04-29 15:02:20 -07:00
LoveIsGrief
f40ecaa155
i2p: Add HTTP(S) and IRC ports to firewall
Enable or disable the ports with the firewalld.

Reviewed-by: Sunil Mohan Adapa <sunil@medhas.org>
2019-04-29 15:01:59 -07:00
LoveIsGrief
5c26c28f96
i2p: Open HTTP(S) and IRC ports on all interfaces on install
I2P has to be restarted in order for the changes to take effect.

Reviewed-by: Sunil Mohan Adapa <sunil@medhas.org>
2019-04-29 15:01:50 -07:00
Sunil Mohan Adapa
fe03b4f34f
i2p: Review and update views
- Update the description of the app. Remove link to web interface at it is now
  in clients list.

- Add showing running status of the service.

- Use the new style for showing subsubmenus under the description of the
  application.

- Don't use frames to show the interface. Let users launch that interface in a
  new window instead.

- Use class based views for I2P service views.

- Update description of the I2P service views.

- Minor styling updates.

Signed-off-by: Sunil Mohan Adapa <sunil@medhas.org>
2019-04-01 17:33:58 -07:00
Sunil Mohan Adapa
6e5a45a9b3
i2p: Review and cleanup action script
- Remove unneeded actions: start, stop, restart, is-running and is-enabled.

- Remove short form parameter passing for add-favorite action. Mostly for
  consistency and avoid confusion. Actions are not expected to be used by
  regular users.

- Rename Apache configuration from: i2p-plinth.conf to i2p-freedombox.conf

- Fix issue with adding favorites when none already present. This eliminates
  failure during first time installation for I2P.

- Fix issue with incorrect new lines while editing favorites.

- Minor fixes in Apache configuration.

Signed-off-by: Sunil Mohan Adapa <sunil@medhas.org>
2019-04-01 17:33:55 -07:00
Sunil Mohan Adapa
c98f44f5ae
i2p: Add diagnostic test for web interface port
Signed-off-by: Sunil Mohan Adapa <sunil@medhas.org>
2019-04-01 17:33:48 -07:00
Sunil Mohan Adapa
ba4d73ae60
i2p: Minor styling changes
Signed-off-by: Sunil Mohan Adapa <sunil@medhas.org>
2019-04-01 17:33:45 -07:00
LoveIsGrief
0b2922749b
i2p: setup: Enrich I2P favorites
3 search engines and a torrent tracker added to the favorites

freedombox-team/plinth#1428 Request: I2P support

Reviewed-by: Sunil Mohan Adapa <sunil@medhas.org>
2019-04-01 17:33:12 -07:00
LoveIsGrief
4e7fc70192
i2p: django: Add i2p homepage to description
freedombox-team/plinth#1428 Request: I2P support

Reviewed-by: Sunil Mohan Adapa <sunil@medhas.org>
2019-04-01 17:33:09 -07:00
LoveIsGrief
ad9712b54f
i2p: django: Additional information about /i2p location
The first visit will start a configuration process

freedombox-team/plinth#1428 Request: I2P support

Reviewed-by: Sunil Mohan Adapa <sunil@medhas.org>
2019-04-01 17:32:50 -07:00
LoveIsGrief
25d3f76434
i2p: Add new application
- installs i2p from apt
 - accessible under /i2p/
 - needed to modify diagnostics url to include numbers

TODO:

 - fix CSS at /i2p/ : firefox NS_ERROR_INVALID_CONTENT_ENCODING ???
 - all green diagnostics
 - functional tests
 - autoconfiguration in setup form
 - configuration of SOCKS5 proxy for network interfaces

Reviewed-by: Sunil Mohan Adapa <sunil@medhas.org>
2019-04-01 17:32:37 -07:00