All notable changes to this project will be documented in this file. The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.
- web: WAN is updated in the guide only when it is used
- pathlib compatibility in files backend
- three states in connection tests
- port forwarding to lan
- notification was lost in some cases
- remove empty array from json schema
- ntfy backend
- make foris-controller compatible with paho-mqtt 2.X
- networks: handle multiple "wans" and validate empty "MAC" with "wwan", accept "wwan" with "slot_path"
- lan: Unify DHCPv4/6 lease timestamps to the "end of the lease" format instead
of DHCPv6 "lease duration" (which is reported by
odhcpd
).
- tests: Refactor helper functions into shared module.
- tests: Use tox to run tests and linter checks instead of using deprecated setuptools integration for such tasks.
- setup.py: Drop the unnecessary egg suffix in VCS links.
- setup.py: Remove obsolete setuptools keywords (
tests_require
,setup_requires
,dependency_links
, ...). - tox: Use shared
tox.ini
for foris-controller and modules.
- guest: Use correct guest network bridge name for Turris OS 6.0+, so QoS for guest network will be able to start again.
- wan: Do not crash when some of the PPPoE credentials options are missing in uci config.
- Add new backend "ubus" for querying
/bin/ubus
. - tests: Allow ubus-cli mock to load json data for tests.
- lan+wan: refactor querying ubus from lan & wan backends.
- networks: Change severity of log message during detection of network bridges from "warning" to "debug". It will no longer spam system log during normal operation of foris-controller with message "WARNING:foris_controller_backends.networks:No anonymous section 'br-<bridge_name>' found among network devices.".
- lan: Make fetching dhcpv6 leases more resilient to unexpected values.
- wifi: Allow disabling Management Frame Protection (IEEE 802.11w) for WPA3 encryption modes (WPA2/3 and WPA3). It might help when wifi clients are having trouble connecting to the wifi Access Point.
- wan: Allow setting VLAN ID for WAN interface
- networks: Add optional VLAN ID of interface to the json schema
- setup: bump turrishw version to 0.10.0
- wan: Reuse shared 'vlan_id' definition in the json schema
- wan: store wan interface L2 options in separate device section
- lan: use ubus call instead of parsing odhcpd files to get DHCPv6 leases
- updater: Use type annotations from updater supervisor
- updater: handling of "reboot is required" from updater supervisor; it is now possible to approve update request in reForis
- setup.py: bump foris-controller-testtools version to 0.12.0
- networks: Sort interfaces by port names and disregard order in uci config
- wifi: refactor sorting of htmodes
- networks: allow managing of interfaces on Turris 1.x (previously disabled)
- setup.py: update turrishw dependency to 0.9.0, so we can tell which ethernet port belongs to which Mox module again on TOS 6.0.
- lan: allow managing of DHCPv4 static leases (create, update, delete)
- lan: make message data mandatory for update_settings
- lan: add static boolean flag to dhcpv4 clients list
- wifi: 802.11ax HE modes (20, 40, 80 and 160); 80+80 is not supported yet
- wifi: read and write OpenWrt 21.02 config syntax, while being able to read OpenWrt 19.07 config syntax
- mDNS/zeroconf entry has invalid service type
- read and write OpenWrt 21.02 network config, while being able to read OpenWrt 19.07 config
- mqtt: make advertizments a bit more efficient
- lan: Disable IPv6 server and ra when DHCP is disabled
- networks: fix detection of wifi interfaces
- guest: fix guest network firewall rules
- wifi: allow setting wifi encryption modes; it is possible to set different modes for regular and guest wifi
- wifi: use WPA2/WPA3 as default encryption mode
- wan: qos limit on traffic
- web:
list_languages
now uses reForis translations instead of Foris translations to determine available localization, since Foris is no longer present in TOS 5.3.0 - time: timezone is now set by backend based on provided region and city
- networks: fix reading multiple interfaces of wan (e.g. bridge)
- wan: ipv6_address in 6in4 may contain prefix as well
- networks: backport enabling managing of interfaces on Turris 1.x
- wifi: wifi: backport fixes for reading HT modes; it is now possible to save wifi settings on Turris 1.x router or any router with DNXA-H1 wireless card
- networks: fix reading multiple interfaces of wan (e.g. bridge)
- wan: ipv6_address in 6in4 may contain prefix as well
- utils: add
ip_network_address
helper function
- router_notifications: change default "from" and "host" of custom smtp server to empty string
- dns: fix setting custom forwarder port for non-TLS servers
- lan: update openvpn server push route configuration on lan update
- lan: fix crash on dhcp host which has multiple MAC addresses (contributed by ktetzlaff)
- lan: fix crash on negative dhcpv6 lease time; set it to 0 for now
- wan: add missing fw rule for 6to4
- zeroconf: Foris-controller won't fully start when something is running on port 5353
- time: ntp default servers location
- updater: provide URLs of package lists options
- updater: update package lists mock and tests (drop nikola, use fwlogs)
- lan: enable qos control
- lan: provide IPv6 DHCP leases
- wan: provide MAC address of WAN interface
- time: add possibility to change NTP servers
- uci: delete uci options gracefully
- computer mode: disable dhcpv6 server
- disable IPv6 DNS when IPv6 is disabled
- missing
ipv6_address
in 6in4 wan proto - guest: enable dhcpv6
- wan: return empty strings when
wan6
uci options (ip
,network
,gateway
) are not set
- remove Manifest.in and simplify package_data
- networks: include MAC address of interfaces
- zeroconf: update zconf service when IP changes
- wan: allow 6in4 tunnel without routed IPv6 prefix
- about: get software customization
- updater: add installed packages query
- wan: handle uci ip6prefix set as list
- zeroconf: export all IP addresses as properties
- example: set license for modules skeleton
- python2 to python3 refactoring
- Migrate CHANGELOG to Keep a Changelog style
- uci: perform
reload_config
command after uci commit
- lan: allow control of 192.168.1.1 redirect
- tests: minor cleanup
- example: fix typo in example test
- services: add openwrt service enabled state detection
- zeroconf: opt-in registration of a service
- system: add new core module
- about: suppress error log for get_contract()
- web: Add 'shield' guide profile
- dns: more robust reading of custom DNS resolvers
- wifi: fix reading of 802.11ac HT & VHT modes
- wifi: return HT and VHT modes in natural sort order
- wifi: basic detection of wireless capabilities through ubus
- dns: save domain to 'option domain'
- updater: run updater after update of package lists and languages from reforis
- various fixes and improvements under the hood
- updater: package lists api overhaul
- wifi: remove wifi detect which is deprecated
- dns: allow multiple ip addresses for DNS resolver
- introspect: add new module
- time: fix reading of three-level names timezones
- mqtt: fix advertizement state name when exitting
- advertizements: fix incorrect state
- cmdline: add env parameter to update newly created process env
- about: fix typo in function call
- dns: Fix add_forwarder WS notifications
- about: get os branch from svupdater
- dns: add add_forwarder action
- tests: refactoring of tests
- networks: get_network_info fix
- mqtt: custom announcements via python entry_points
- example project: using cookiecutter for generating new projects
- client_socket: use controller_id - mqtt fix
- use ipaddress module instead of foris_controller_utils.IPv4 and remove IPv4
- removing python version ifs
- doc: protocol documentation added + mqtt doc extended
- lan: fix list dhcp clients (whitespace in mac field)
- remote: add hostname into advertize
- lan: show only valid ipv4 addresses in dns
- remote: include module names and version into advertizements
- mqtt: retry to send messages (with a small timeout)
- remote: add working_replies field into advertizements
- mqtt: allow to process messages concurrently
- mqtt: doc file which describes erroneous situations added
- mqtt: use retain and clean the messages afterwards
- tests: fix fork bomb
- router_notifications: making lang optional
- updater: approval max delay period extended from 7 to 31 days
- about: remove board_name
- lan: don't fail when mac is missing in static lease record
- time: don't require wifi uci file to save time settings
- lan: fix schema description
- wan: wan6 defaults from 'none' to 'dhcpv6'
- updater: get enabled fix
- maintain: lighttpd restart command added
- remote: display netboot status in advertize and add set_netboot_configured call
- all python source code reformatted using black
- updater: reflect api changes of svupdater
- time: properly set regulatory domain after timezone was updated
- lan: support for customizing static dhcp clients added
- wifi: update notification contains all new data
- router_notification: add separate functions for setting emails and reboots
- router_notification: different default
- wifi+time: properly set regulatory domain (country)
- wifi hack to tame iw command
- async cmds fix
- suboridnates: api changes
- subordinates: send notification before restarting mqtt server
- mqtt: nicer client_id
- set proper controller_id in notifications
- subordinates: reload -> restart when managing (sub)subordinates
- about: atsha204 -> cryptowrapper migration
- remote module splitted into remote and subordinates
- remote: handlig of subsubordinates implemented
- controller-id program arg fix
- remote: adding subordinates
- updater: list api changes
- password: refuse to set compromised passwords
- socket_client: mqtt fix
- mqtt: can set path to credentials file
- make controller_id configurable + update its format
- updater: setting approval fix
- updater: api chnaged (no need to use uci)
- make ubus and mqtt buses optional
- mqtt: advertisement format fix
- mqtt: request - reply protocol change
- mqtt: more resilent message handling
- converting advertizements to regular notifications (remote.advertize)
- small code cleanups
- python2 is no longer supported
- mqtt: more resilent announcer
- remote: module added
- guest+lan: handle '1d' as leasetime in uci
- test structure reworked
- support for mqtt bus implemented
- wan,lan: dns list backward compatibility
- lan,wan,guest: interface_up_count attribute added
- networks: network_change notification added
- networks: display SSIDs
- setup.py: cleanup + PEP508 updated
- networks: wifi handling updated
- lan+wan+guest: handle missing wireless config
- networks: configurable and non-configurable interfaces
- turrishw: api update
- lan+wan: uci option fix when reading dns servers
- lan+guest: check dhcp range
- time: display list of ntp servers used in get_settings
- about: remove temperature
- about: remove contract related calls
- lan: get_settings more resilent
- web: new workflow (unset) and step(finished) added
- dns: forwarders settings added
- small test updates
- about: firewall/ucollect sending info moved to foris-data_collect-module
- data_collect: module moved to a separate module (foris-data_collect-module)
- lan+guest: show list of connected DHCP clients
- wan+lan+guest: display interface count
- lan: unmanaged mode added (device can act as a client /DHCP or static/ on LAN)
- guide: bridge workflow added
- turrishw integration (currently it obtains information about network interfaces)
- wifi: detect fix
- maintain: move some logic to /usr/bin/maintain-reboot script
- setup.py: packages fix
- guest+lan: added dhcp lease time option
- pytest: deprecation warnings removed
- web: various guide updates regarding workflows
- maintain: reboot and restart network are done using external script
- lan: module splitted to lan and guest
- networks: module added
- wifi: making it compatible with newer version of openwrt
- time module fixes
- python 3.7 compatilility fix
- web module language detect update
- data_collect - get_registered fix and test update
- test updates
- sample plugin updates
- display version + --version option
- support for locales with territory code (e.g. nb_NO)
- python3 compatibility
- CI with python3 integration
- create entrypoints for scripts
- reflect foris-schema api update (it should boost the performace significantly)
- log how long some operations took
- ubus: message format changed
- wifi: when option path is missing try to detect the device based on mac address
- wifi: make reset to be compatible with newer version of openwrt
- wifi: set encryption only when it is unset or none
- wifi: too long SSID and guest wifi fix
- time: use ntpd instead of ntpdate to trigger time update
- web: guide integration attempt
- lan: guest network and sqm service fix
- wan: 6in4 support
- wan: 6to4 support
- wan: handle missing wan6 section
- uci: character
'
in values - time: default value for ntp.enabled
- wifi module: possible device path fix
- updater module: new call get_enabled
- data_collect module: redownload registration code when router is not found
- wan module: new configuration options (duid, dhcp hostname) + some fixes
- wifi module: reset action added
- uci backend: import command added
- syslog support removed (should be handled elsewhere)
- data_collect: remove i_agree_datacollect
- wifi: api updates
- wifi module
- uci api update (reading anonymous section)
- foris-notify (some fixes)
- updater module & updater integration into other modules (maintain, web, data_collect)
- wan module - small fixes
- client socket (see doc/client_socket)
- wan module added
- CI install updates
- connection test moved from dns to wan module
- router_notifications module added
- some schema fixes
- notifications count added to web module (get_data)
- data_collect fixes
- services backend fail_on_error fix
- time module added
- CI test are using openwrt backend as well as mock backend
- tests for sample plugin integrated into our CI
- tests can use a varios kind of overrides of fixtures (mostly to alter files paths)
- bigger tests refactoring (part of the tests moved to foris-controller-testtools repo)
- lan module implemented
- new functionality added to data_collect module
- new password module added
- cmdline backend multiline fixes
- about module version parsing fixes
- web module api updates
- maintain module added
- support for long messages (>1MB)
- --extra-module-path (set extra modules from cmdline)
- cmdline changes
-m mod1,mod2
->-m mod1 -m mod2
- about module - fix for older turris
- dns module - use default value when an option is not present in uci
- uci - default argument to get_{named,anonymous}_option
- async commands - python buffer fixes
- async commands - match stderr as well
- uci - added replace_list function
- added backend to handle async commands
- dns module - connection check handling
- uci backend fix
- web module - language switch fix
- dns module reload fix
- calling external programs should be faster
- support for sending notifications added (+docs +tests)
- added an option to put logging output into a file
- some fixes
- some code cleanup
- some documentation added
- dns module (several option regarding dns)
- web module (language switch)
- wrapper around system services (start, stop, reload, ...)
- wrapper around uci command
- docs updates
- put stack traces to error msgs
- write stack traces to debug console
- syslog integration
- registration number call added
- contract valid call added
- router registered call added
- --single argument for ubus
- making modules and backends modular
- locking moved to backends
- initial version