[Freedombox-discuss] Plinth 0.5 released

James Valleroy jvalleroy at mailbox.org
Sat Aug 1 16:36:05 UTC 2015


Hello,

Plinth release 0.5 is now available.

Plinth is a web interface to administer the functions of FreedomBox.

Summary of changes since 0.4.5:
  - New app modules:
    - BitTorrent (Deluge)
    - Email Client (Roundcube)
    - Web Proxy (Privoxy)
  - Use libnm for Networks module
  - Add support for testing Django-dependent modules
  - Plinth can now setup ejabberd and jwchat
  - Setup firewall zones for network-manager connections
  - Manage LDAP users and groups with ldapscripts package
  - LDAP user authentication is now used for XMPP, ikiwiki, and SSH
  - Fixes to cherrypy autoreload and remove unneeded extra server.
Plinth now uses much less CPU.
  - Use django-stronghold for authentication handling
  - Bundle tests with applications; add Travis-CI status image to README
  - Move to using python3-augeas for Pagekite
  - Extend and use action utilities for enabling/disabling services and
Apache confs
  - Fixed timezone list issue
  - Bind a Network connection to an interface
  - Many small cleanups

Since there wasn't a release announcement for 0.4.5, here's a summary of
changes in that release (since 0.4.4):
  - New app modules:
    - BitTorrent (Transmission)
    - Dynamic DNS
    - Voice Chat (Mumble)
    - Wiki & Blog (ikiwiki)
  - New system modules:
    - Networks
    - Software Upgrades
  - Add unit tests with coverage report and Travis-CI integration
  - Add systemd service file for Plinth
  - Use augeas to configure Pagekite
  - Use domainname as ejabberd host
  - Bugfixes for ownCloud and packagekit
  - Fixes for user dropdown menu when javascript is disabled
  - Simpler look

The detailed lists of changes are attached.

Availability:

  Plinth's upstream URL is: https://github.com/freedombox/Plinth/

  The Plinth packaging is being updated currently, and should be
  uploaded to Debian unstable soon.

Contributors to this release:

  - Bharath Chava
  - Bob Girard
  - Daniel Steglich
  - James Valleroy
  - Maximiliano Curia (maxyz)
  - Michael Pimmer (fonfon)
  - Sunil Mohan Adapa

Contributions welcome!

  You can contribute to Plinth/FreedomBox by coding, designing,
  documenting, testing etc. See:
  https://wiki.debian.org/FreedomBox/Contribute/

  Also there are now a number of bugs tagged as "beginner" on the
  Plinth issue tracker. These bugs are good places for a new
  contributor to start. Please feel free to ask if you need any help or
  directions.
  https://github.com/freedombox/plinth/issues

--
James
-------------- next part --------------
Daniel Steglich: added a module and a action script to manage ez-ipupdate tool, which provides dynamic IP updates to a gnudip dynamic DNS Server
daniel steglich: pep8 coding guidline adaption
Daniel Steglich: pep8 coding guidline adaption
Daniel Steglich: fixed permissions
Daniel Steglich: some pylint related adjustments
Daniel Steglich: fixed indentions
Daniel Steglich: some args are optional, do not return errors
Daniel Steglich: refactored naming from dynamicDNS to lowercase dynamicdns
Daniel Steglich: fixed file permissions
Daniel Steglich: fixed file permissions
Daniel Steglich: fixed pep8 issue
Daniel Steglich: added install command to action script
Daniel Steglich: fixed reading uptime from system
Daniel Steglich: fixed status update if nothing was done
Daniel Steglich: Merge remote-tracking branch 'upstream/master' into dynamicdns
Daniel Steglich: changed menu entry name to a more fancy string
Daniel Steglich: use package framework for installing ez-ipupdate
Daniel Steglich: Merge branch 'dynamicdns' of https://github.com/steglicd/Plinth into dynamicdns
Daniel Steglich: removed obsolete install options because installation process is done by package framework now
Daniel Steglich: do not load bootstrap template filters if not needed
Daniel Steglich: fixed endention
Daniel Steglich: pep8 guideline adaption
Daniel Steglich: Merge branch 'dynamicdns' of https://github.com/steglicd/Plinth into dynamicdns
Daniel Steglich: fixed pep8 errors reported by flake8
Daniel Steglich: do not report errors on first run
Daniel Steglich: improved robustness of update script in case of connection trouble (wget may hang a long time if DNS fails or route is unavailable)
Daniel Steglich: refactored configuration action to avoid multiple start/stop calls of the action script when the configuration changes
Daniel Steglich: fixed indention
Daniel Steglich: fixed an issue where first update after initial configuration will not work because the cronjob does not recognize the ip change
Daniel Steglich: some helptext adjustments
Daniel Steglich: use start-stop-daemon to avoid hanging web page if ez-ipupdate tool is blocking
James Valleroy: Create POSIX user during firstboot. Closes #31.
James Valleroy: Add option when adding a new user, to also create a POSIX user.
James Valleroy: Delete posix user when deleting plinth user.
James Valleroy: When updating a user's password, also update the POSIX user's password, when needed.
James Valleroy: When enabling/disabling Django user, also enable/disable the corresponding POSIX user.
James Valleroy: Show if user is also a POSIX user in edit user form.
Sunil Mohan Adapa: Fix issue with styling of error messages with bootstrap3
Sunil Mohan Adapa: users: Add posix user messages to other user management forms
Sunil Mohan Adapa: users: Handle errors better during POSIX user operations
Sunil Mohan Adapa: users: Rename a POSIX user when Plinth user is renamed
Sunil Mohan Adapa: users: Use deluser instead userdel for deleting POSIX users
Sunil Mohan Adapa: Serve /usr/share/javscript on /javascript
Sunil Mohan Adapa: Don't load Debian backup files as module configuration
Bob Girard: Add detailed test coverage console report
James Valleroy: Add upgrades module that can run unattended-upgrades.
James Valleroy: Add form for enabling automatic upgrades.
James Valleroy: fix typo
James Valleroy: Use regexs to match more valid configs for unattended-upgrades.
James Valleroy: Include { in Origins-Pattern regex pattern.
fonfon: Minor improvement of auto-update check
fonfon: More user-friendly output of an upgrade run
Bob Girard: Add unit tests (#1)
Sunil Mohan Adapa: Add to context processor and menu test cases
fonfon: system configuration: make domain optional
fonfon: Added 2015 to copyright note
fonfon: Made owncloud submit button more straightforward
fonfon: Display Plinth version in Documentation / About
Sunil Mohan Adapa: copying: Reflow text
Sunil Mohan Adapa: owncloud: Do Apache reload instead of restart
Bob Girard: Eliminate renaming plinth.config file for tests
Sunil Mohan Adapa: upgrades: Require CSRF token for starting upgrade process
Sunil Mohan Adapa: upgrades: Minor styling fixes
Sunil Mohan Adapa: upgrades: Handle upgrade interval other than 1 day properly
Sunil Mohan Adapa: upgrades: Handle action errors using error codes
Sunil Mohan Adapa: upgrades: Change menu item to 'Software Upgrades'
Daniel Steglich: fixed typo within error message
Daniel Steglich: made html templates more readable
Daniel Steglich: reduce retry conuter to avoid UI blocking time
Daniel Steglich: made code more readable
Daniel Steglich: use different UI logo than XMPP
fonfon: Merge pull request #86 from BobGirard/unit-tests-1
Daniel Steglich: do form validation within clean function of the ConfigureForm class and not when applying the changes
fonfon: Merge pull request #105 from SunilMohanAdapa/owncloud-apache-reload
Daniel Steglich: create config dir if not exist
Daniel Steglich: cat on a empty string will block the script
Daniel Steglich: removed second password field from configure form and validate the form completly within clean function of configure form
Daniel Steglich: added a checkbox to make the password visible
Daniel Steglich: first version of java script based dynamic provider selection
Daniel Steglich: beautyfied and refactored code
Daniel Steglich: added dynamic form fields and fixed support for users without javascript support
Daniel Steglich: prepared update URL functionality (implemented new parameters)
Daniel Steglich: consistent use of curly brackets
Daniel Steglich: consistent use of dollar bracket to assign variables from system call
Daniel Steglich: added comment lines
Daniel Steglich: use global defined string variables
Daniel Steglich: made the latest changes pep8 compatible
Daniel Steglich: fixed javascript after field renaming
Daniel Steglich: added concrete URL's for noip and selfhost.bz
Daniel Steglich: changed syntax of variables
Daniel Steglich: added function to replace vars from update URL
Daniel Steglich: fixed variables
Daniel Steglich: started adding help text variables
Daniel Steglich: do not show single quotes arround the update URL
Daniel Steglich: updated javascript disabled helper message
Daniel Steglich: store successful update events to be displayed on status page
Daniel Steglich: sorround update URL with double qoutes
Daniel Steglich: changed success/failure storage after update is done via update URL
Daniel Steglich: fixed indention
Daniel Steglich: added comments
Daniel Steglich: moved helper texts to variables
Daniel Steglich: fixed form validation: at least dynamicdns_server or dynamicdns_update_url needs to be configured
Daniel Steglich: fixed typo
Daniel Steglich: fixed indention
Daniel Steglich: covered empty server arguments and made parameter comparsion more easy
Daniel Steglich: changed form manipulation from plain javascript to jquerry and removed javascript from python file
Daniel Steglich: less than 80 characters per line
Daniel Steglich: do not delete GnuDIP Server address if dropdown box changes and check/uncheck HTTP Basic auth according to update URL provider template
Daniel Steglich: only do a update if DNS entry is outdated
Daniel Steglich: improved ipurl check
Daniel Steglich: improved check of current IP, registered at DNS server
Daniel Steglich: added freedns provider
Daniel Steglich: fixed dropdown box based deletion of unused params
Daniel Steglich: configure the form according to last configured values when loading the formular
Daniel Steglich: do not clear server and URL values when changing dropdown menu but check if one of them is filled when validate the form
Daniel Steglich: need to remove unused parameters according to dropdown box selection
Daniel Steglich: added some comments
Daniel Steglich: added hint for free dns service
Daniel Steglich: only show fields according to dropdown menu when entering form first tim (after enable checkbox was selected)
Sunil Mohan Adapa: owncloud: Check for database configuration to treat as enabled
Sunil Mohan Adapa: owncloud: Minor cleanup in action file
Sunil Mohan Adapa: owncloud: Make setup more robust to repeatition
Daniel Steglich: fixed indention
Daniel Steglich: fixed typo
Daniel Steglich: use ssl for freedns
Daniel Steglich: improved helptext
Daniel Steglich: do not change values of dropdown element, but change selection
Daniel Steglich: only validate form fileds if the form is enabled at all
Daniel Steglich: copyright notice added
Daniel Steglich: fixed status return string of updateurl
Daniel Steglich: improved form validation (only request domain/user/pass if gnudip is selected to allow empty params on update URL), and stripped single qoutes from empty values to avoid showing them when form is loaded
Daniel Steglich: removed duplicate code and avoid deleting form field config on reload
Daniel Steglich: improved helper text
Daniel Steglich: moved reconfiguration of dropdown display directly to the onchange function of the dropdown box as the code is not used elsewhere
Daniel Steglich: improved help texts
Daniel Steglich: refactoring, made the code more readable, use consistent indentions, whitespaces and linebreaks next to brackets
Daniel Steglich: removed dictionary because string values can be used in dropdown menu directly
Daniel Steglich: fixed missing whitespace
Daniel Steglich: made the bash script code shellcheck compatible, replaced obsolete statements
Daniel Steglich: fixed some syntax errors after last changes
Daniel Steglich: fixed missing bracket in awk command
Daniel Steglich: updated help message
Daniel Steglich: local vars are only possible inside of functions
Daniel Steglich: built in string substitution of bash shell does not work with dash. avoid this incompatibility.
Daniel Steglich: removed debug output
Daniel Steglich: use global wget options in addition to specific wget options
James Valleroy: Merge remote-tracking branch 'steglicd/dynamicdns'
Sunil Mohan Adapa: firewall: Fix bootstrap 2->3 style for diabled items
Sunil Mohan Adapa: mumble: Add new module for installing, enabling/disabling
Sunil Mohan Adapa: package: Add ability to receive notification on install
James Valleroy: Use domainname as ejabberd host. Only use hostname when domainname is blank.
Sunil Mohan Adapa: xmpp: Add yaml as install dependency in setup.py
Sunil Mohan Adapa: xmpp: List all configured vhosts during user registration
Bob Girard: Enable integration of Plinth with Travis-CI
Bob Girard: Skip tests for now requiring Django configuration
Sunil Mohan Adapa: packages: refresh package list before install and handle errors
Sunil Mohan Adapa: packages: handle speed updates during installation
James Valleroy: Update dynamicdns views to use new required package list format.
James Valleroy: Network connection list and delete
James Valleroy: Enable and disable network connections
James Valleroy: Add Ethernet or Wifi connection
James Valleroy: Set auto or static IPv4 address.
James Valleroy: Add form to edit network connections.
James Valleroy: Separate network-manager logic from network module views.
James Valleroy: Rename network module to networks. Move networkmanager helper functions into a new file. Add some network tests.
James Valleroy: Add wifi scan page to networks module.
James Valleroy: Connect to network selected from scan page.
James Valleroy: Add wifi security settings.
James Valleroy: Add firewall zone selection for networks.
James Valleroy: Fix network tests, add form help and validator.
James Valleroy: Add AP and adhoc wifi modes, and shared IPv4 addressing mode.
James Valleroy: Add wifi mode to connect page also.
James Valleroy: Update dependency list and pep8 fixes.
Sunil Mohan Adapa: network: Use uuids for identifying connections
Sunil Mohan Adapa: network: Untabify and minor refactoring
Sunil Mohan Adapa: network: Cleanup, minor fixes and refactoring
Sunil Mohan Adapa: network: Update tests to work with UUIDs and add a few more checks
Sunil Mohan Adapa: network: Update travis configuration to install network-manager package
Sunil Mohan Adapa: network: Disable networks module until python3-networkmanager is available
Sunil Mohan Adapa: network: Add python3-dbus install dependency to travis config
Sunil Mohan Adapa: network: Add python-networkmanager to setup.py and requirements.txt
Sunil Mohan Adapa: network: Skip network tests when running as non-root
Sunil Mohan Adapa: Add systemd service file
Sunil Mohan Adapa: Fix issues with configuration/parameters loading
James Valleroy: Add ikiwiki module with initial setup and option to enable site.
James Valleroy: ikiwiki: Create and manage wikis/blogs.
James Valleroy: ikiwiki: Add delete command for wikis and blogs.
James Valleroy: ikiwiki: Create admin account for new wiki/blog.
James Valleroy: PEP8 fixes
Sunil Mohan Adapa: ikiwiki: Update UI messages and minor refactoring
Sunil Mohan Adapa: ikiwiki: Don't error out when listing before setup
Sunil Mohan Adapa: ikiwiki: Data in /var/lib & setup after install
Sunil Mohan Adapa: Handle arguments to actions properly
Sunil Mohan Adapa: transmission: New module for BitTorrent downloads
Sunil Mohan Adapa: transmission: Run from behind Apache
James Valleroy: transmission: minor comment updates
Sunil Mohan Adapa: Don't use wells for placing all the content
Sunil Mohan Adapa: Don't use inverted look for navigation bar
Sunil Mohan Adapa: Implement a simpler navigation bar
Sunil Mohan Adapa: Redirect to apps page always from index page
James Valleroy: Add logout button that is only shown when javascript is disabled.
James Valleroy: User dropdown menu links to user edit page when javascript is disabled. Fix indentation.
Sunil Mohan Adapa: Use modernizr & CSS for user menu without JS
James Valleroy: Release 0.4.5
-------------- next part --------------
fonfon: pagekite action: Use augeas pagekite lens
fonfon: refactoring pagekite: configuration form works
fonfon: pagekite is required to be installed via package now
fonfon: Moved pagekit url creation to pagekite module
fonfon: renamed variables for consistency
fonfon: Removing a service limited to removing 1 service
fonfon: make pagekite login-required;
fonfon: removed old configobj pagekite action
fonfon: updated tests
fonfon: removed default frontend stuff from actions
fonfon: cleaned up actions and configuration form
fonfon: use util.service_is_running for tor also
fonfon: Prevent adding existing or predefined services
fonfon: minor layout cleanup
fonfon: pagekite: restart service when config is changed
fonfon: Updated unit- and doctests
fonfon: Removed quote-checking functionality from pagekite
fonfon: Use JSON as pagekite action-script arguments
fonfon: Renamed default services to standard services
fonfon: removed/skipped deprecated unit-test
fonfon: More consistent renaming from default to standard services
Sunil Mohan Adapa: networks: Use libnm instead of python-networkmanager
Sunil Mohan Adapa: networks: Update dependencies list
James Valleroy: Add BitTorrent module (deluge-web).
Sunil Mohan Adapa: deluge: Rename from bittorrent to deluge
Sunil Mohan Adapa: deluge: Make starting/stopping daemon safer
Sunil Mohan Adapa: deluge: Minor fixes and styling
Sunil Mohan Adapa: deluge: Auto start deluge-web using systemd
James Valleroy: Merge remote-tracking branch 'fonfon/pagekite-augeas-new'
James Valleroy: Merge remote-tracking branch 'sunil/network-manager-glib'
James Valleroy: Update network tests, minor fixes to network.py. Return UUID when adding a connection. Have get_connection raise an exception instead of returning None.
James Valleroy: Merge remote-tracking branch 'sunil/deluge-systemd'
Sunil Mohan Adapa: network: Minor fix when getting connection and styling
Bob Girard: Add support for testing Django-dependent modules
Bob Girard: Add plinth/tests/data/__init__.py to fix ImportError
Sunil Mohan Adapa: tests: Minor styling fixes and updates
Sunil Mohan Adapa: travis: Add packagekitglib as necessary package
James Valleroy: ikiwiki: Require some Recommends needed to compile wikis.
James Valleroy: ikiwiki: Don't redefine built-in type.
James Valleroy: xmpp: Preseed debconf values before ejabberd and jwchat packages are installed.
James Valleroy: Fix missing import and pass before_install correctly.
James Valleroy: xmpp: Enable jwchat apache conf after install.
Sunil Mohan Adapa: xmpp: Remove special handling for empty arguments
Sunil Mohan Adapa: xmpp: Minor fix to log message
Sunil Mohan Adapa: actions: Add more action utilities
Sunil Mohan Adapa: privoxy: New web proxy application
Sunil Mohan Adapa: roundcube: New app for web based email client
Maximiliano Curia: Use the cherrypy autoreload feature only in debug mode
Maximiliano Curia: Remove unneeded extra server
James Valleroy: users: Add option to create LDAP user.
James Valleroy: xmpp: Add option to use LDAP for authentication.
James Valleroy: Use ldapadd instead of slapadd.
James Valleroy: users: Show if user is also an LDAP user.
James Valleroy: users: Rename LDAP user.
James Valleroy: users: Delete LDAP user.
James Valleroy: users: Change LDAP user password.
James Valleroy: xmpp: Merge actions into single file.
James Valleroy: ldap: Switch to SASL authentication. Assume that root is able to modify user directory entries.
James Valleroy: first_boot: Also create LDAP user for initial user.
Sunil Mohan Adapa: ldap: Minor styling fixes
Sunil Mohan Adapa: ldap: Store password hashes instead of plain text
Bob Girard: Bundle tests with applications
Bob Girard: Add Travis-CI status image to README
James Valleroy: ikiwiki: Enable during setup.
James Valleroy: ikiwiki: Install conf files during Plinth install.
James Valleroy: ikiwiki: Use a2query to check if enabled.
James Valleroy: deluge: Install apache conf file during Plinth install.
James Valleroy: deluge: Run setup and enable after install.
James Valleroy: deluge: Also disable the service when stopping.
James Valleroy: deluge: enable/disable refactoring
James Valleroy: deluge, ikiwiki: Notify when service is enabled/disabled.
Sunil Mohan Adapa: deluge: Perform setup operations during enable
Sunil Mohan Adapa: ikiwiki: Minor styling and fix
Sunil Mohan Adapa: deluge: Further improvements to actions
fonfon: use django-stronghold for authentication handling (instead of @login_required)
fonfon: made first_boot state0 public
Sunil Mohan Adapa: Don't require login for logout page & minor fixes
Sunil Mohan Adapa: Add django-stronghold as dependency
James Valleroy: ikiwiki: Fix indentation in setup automators.
James Valleroy: ikiwiki: Enable HTTP auth using LDAP.
James Valleroy: ikiwiki: Add required package for changing wiki settings.
James Valleroy: Add new LDAP users to admin group.
James Valleroy: ikiwiki: Authorize users from admin or wiki group.
James Valleroy: Update LDAP admin group when renaming/deleting users.
James Valleroy: Add posixAccount class for LDAP users.
James Valleroy: Remove POSIX users.
James Valleroy: Add actions for LDAP group management.
James Valleroy: Add group management to user editing form.
James Valleroy: Fix group deletion.
James Valleroy: Don't print LDAP user passwords in log.
James Valleroy: Switch LDAP groups from groupOfUniqueNames to groupOfNames, to work with libpam-ldapd.
James Valleroy: Also add admin users to posixGroup for sudo privileges.
James Valleroy: Fix group management issues.
James Valleroy: Cleanup from switching group types.
James Valleroy: Create initial django groups during first_boot.
Sunil Mohan Adapa: users: Use checkboxes for groups during create
Sunil Mohan Adapa: ikiwiki: Update the LDAP login prompt message
Sunil Mohan Adapa: users: Improve Django group handling with LDAP
Sunil Mohan Adapa: users: Remove unused code checking for LDAP user
Sunil Mohan Adapa: pagekite: Move to using python3-augeas
Sunil Mohan Adapa: Use only action utilities for service management
Sunil Mohan Adapa: Don't use actions to check if service is running
Sunil Mohan Adapa: Add utilites for Apache configuration management
Sunil Mohan Adapa: deluge: Remove get-enabled from actions
Sunil Mohan Adapa: ikiwiki: Remove get-enabled from actions
Sunil Mohan Adapa: mumble: Remove get-enabled from actions
Sunil Mohan Adapa: privoxy: Remove get-enabled from actions
Sunil Mohan Adapa: roundcube: Remove get-enabled from actions
Sunil Mohan Adapa: transmission: Remove get-enabled from actions
Sunil Mohan Adapa: xmpp: Use webserver action utilties
Bharath Chava: Issue 88: When no timezone is set, Plinth shows first one in list.
Sunil Mohan Adapa: config: Hide time zone not-set option normally
James Valleroy: Revert "Don't print LDAP user passwords in log."
James Valleroy: Send LDAP user passwords to actions through stdin, not as arguments.
James Valleroy: xmpp: Always use LDAP authentication.
James Valleroy: xmpp: Remove account registration and in-band configuration.
James Valleroy: xmpp: Update module layout to match other modules. Split forms and views into separate files. Add configuration form to enable/disable the service.
James Valleroy: Bug fixes: Check if ejabberd is installed when running actions triggered by signals. Encode LDAP passwords as bytes.
Sunil Mohan Adapa: users: Fix incorrect replacement of _()
Sunil Mohan Adapa: users: Use ldapscripts for user management
Sunil Mohan Adapa: Add augeas-tools and ldapscripts as dependency
Sunil Mohan Adapa: ikiwiki: Update LDAP auth configuration
James Valleroy: first_boot: Switch to new ldap action.
James Valleroy: ldap: Actually read from stdin if available. I made a silly mistake while merging, sorry.
Daniel Steglich: networks: Always bind connections to a device
Sunil Mohan Adapa: networks: Improvements to interface binding
Sunil Mohan Adapa: tor: Update menu item with generic name
Sunil Mohan Adapa: owncloud: Update menu item with generic name
Sunil Mohan Adapa: Reorder all app menu items alphabetically
Sunil Mohan Adapa: tor: Move introduction from sidebard to main
Sunil Mohan Adapa: owncloud: Move introduction from sidebar to main
Sunil Mohan Adapa: help: Move additional info from sidebar to main
Sunil Mohan Adapa: pagekite: Remove unused import
Sunil Mohan Adapa: tor: Reimplement getting ports in Python
Sunil Mohan Adapa: tor: Update styling for service/port table
Sunil Mohan Adapa: package: Remove package module
Sunil Mohan Adapa: tor: Implement enabling/disabling
James Valleroy: Specify interfaces for network tests where needed.
James Valleroy: Make separate network test for IPv4 manual address.
James Valleroy: Also add IPv4 manual address test for wifi.
James Valleroy: Merge remote-tracking branch 'sunil/polish'
James Valleroy: Release 0.5
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 819 bytes
Desc: OpenPGP digital signature
URL: <http://lists.alioth.debian.org/pipermail/freedombox-discuss/attachments/20150801/b244f2b8/attachment-0001.sig>


More information about the Freedombox-discuss mailing list