Skip to content

Releases: jp1337/easywall

v2.3.0

Choose a tag to compare

@jp1337 jp1337 released this 03 May 08:28

Highlights

This release reworks the easywall web interface from the ground up. The hand-rolled CSS components have been replaced with DaisyUI 5.5 primitives, HTMX 2.0 powers a new generation of in-place interactions, and the visual palette has been redesigned for cohesion.

A new color concept

The previous orange-on-navy combination was complementary — striking, but visually noisy. The new "Aurora Operator" palette uses analogous cool tones throughout: deep slate-blue chrome with cyan-400 / teal-400 accents in dark mode, or white with cyan-600 / teal-600 in light mode. Status colors (emerald, amber, rose, sky) stay clearly distinct from the accent.

Live validation everywhere

Three editors now validate input as you type:

  • Custom rules (/custom) — nft --check runs server-side via POST /custom/validate, per-line syntax errors surface inline
  • Blacklist & whitelist (/blacklist, /whitelist) — net.ParseIP / net.ParseCIDR validate every line via the shared POST /iplist/validate
  • All editors fall back to a soft notice when the core daemon is offline

Auto-save and toast feedback

The Options, Network, and System pages no longer require clicking Save. Toggle a switch or change a numeric input and the form posts in the background; a small toast in the bottom-right confirms ("Saved" / "Save failed"). The Save button is preserved for graceful degradation when JavaScript is disabled.

Audit log filter

The audit log page now has a search box that filters rows live (case-insensitive substring across action / rule type / detail / user) via GET /log/filter.

Component overhaul

All 15 templates were migrated to DaisyUI primitives — cards, buttons, alerts, fieldsets, toggles, tables, badges, tabs, steps. The custom CSS in web/src/app.css now contains only layout-specific chrome (sidebar, topbar, auth pages, status dots, audit log action tags).

Fixed

  • Custom rules in state.Current.Custom are now actually applied to the nftables kernel after the typed-rules flush

Compatibility

No breaking changes. Configuration files, IPC protocol, and on-disk state are compatible with v2.2.0.

Full changelog

See CHANGELOG.md for the complete list, or browse the v2.2.0…v2.3.0 diff.

🤖 Generated with Claude Code

v2.2.0

Choose a tag to compare

@jp1337 jp1337 released this 28 Apr 21:19

What's new in v2.2.0

Added

  • Audit log viewer (GET /log) — the core's per-change audit.log is now accessible from the web UI in a table showing timestamp, action, rule type, detail, and user; most-recent entries first (up to 200 entries)
  • Dashboard rule-count cards — TCP port count, UDP port count, blocked IPs (blacklist), and allowed IPs (whitelist) are now shown as stat-cards on the dashboard, each linking to the relevant management page
  • GET/POST /system — acceptance window duration and enabled flag are now configurable from the web UI without editing easywall.toml

Full changelog: https://github.com/jp1337/easywall/blob/main/CHANGELOG.md

v2.1.0

Choose a tag to compare

@github-actions github-actions released this 27 Apr 07:40

Changelog

Features

  • 14c5d55: feat(auth): add GET/POST /password route for changing the admin password (@jp1337)
  • 4c68a15: feat(options): make firewall options editable from the web UI (@jp1337)
  • 108e8ab: feat(options): sync option-icon on/off class when toggle changes (@jp1337)
  • d21a294: feat(settings): add GET/POST /settings for IPv6 and Docker network config (@jp1337)

Bug Fixes

  • eb79e92: fix(apply): keep polling after accepted state — backend resets to idle immediately (@jp1337)
  • 72c231d: fix(lint): gofmt alignment in protocol.go const block (@jp1337)
  • a2f4bdd: fix(web): add CSP nonce to auth templates and expand nonce test coverage (@jp1337)
  • c513594: fix: IPv6 blacklist/whitelist + remove CSP unsafe-inline (@jp1337)

Other

v2.0.0

Choose a tag to compare

@github-actions github-actions released this 26 Apr 20:30

Changelog

Security

Features

Bug Fixes

Other

v0.3.1 - Fix issue #26

Choose a tag to compare

@jp1337 jp1337 released this 17 Feb 18:24

Changed

  • Remove --show-progress from shell scripts and fix issue #26

v0.3.0 - Rules Handler redesigned

Choose a tag to compare

@jp1337 jp1337 released this 30 Sep 09:55

Added

  • Ports can now have a description. In future versions you will be able to edit this description. Currently you can only delete the port and add a new description.
  • CodeQL analysis of GitHub enabled. This is a beta test of Github.
  • Python tests prepared for Python 3.9
  • It is now recognized when adding a port, if it is already present.
  • A new pip3 module pyyaml is now required. This should be installed automatically during the update.

Changed

  • Ports page in the web interface visually redesigned for the new port description
  • The update script no longer updates to the master branch, but to the last release
  • The Feature-Policy HTTP Header is deprecated and was replaced by Permissions-Policy.
  • Buffer overflow problem solved with very large HTTP header in request
  • Problem solved, if values were written in capital letters in the configuration
  • Tests rewritten for use with the new Rules Handler

Removed

  • Rules are no longer stored in the rules folder but in config/rules.yml. The folder structure under rules can therefore be deleted. There is no import of old rules, because easywall is still in beta status.

v0.2.4 - First Run Wizard

Choose a tag to compare

@jp1337 jp1337 released this 06 Sep 14:47

Added

  • Security headers of the demo page are checked for correctness and actuality.
  • Information about what to do after the installation of easywall to adjust the access data.
  • Class documentation automatically generated and added to the dosc folder
  • If no user name and password is set in the configuration file, the First Run Wizard is automatically displayed in the web interface
  • After saving the options in the web interface, the tab you saved will be displayed.
  • Login attempts and the lockout time for too many failed logins can now be configured under "Web Interface".
  • bindip and bindport option with the info that these are debug variables

Changed

  • The bindip and bindport options have been replaced by the UWSGI start parameters
  • Error messages when saving the options are now displayed correctly
  • Fixed several errors when starting the web interface in debug mode

v0.2.3 - Bugfixes

Choose a tag to compare

@jp1337 jp1337 released this 27 Aug 22:09

Changed

  • Problems with the installation fixed
  • Installation guide improved
  • Problems at startup under Ubuntu 18.04 solved

v0.2.2 - tiny security release

Choose a tag to compare

@jp1337 jp1337 released this 24 Aug 16:53

Added

  • Readme and documentation improved
  • Added quick start guide to documentation
  • APT package and repository guide added to installation documentation
  • New security and general HTTP headers added
  • Installation shellscripts strongly improved

Changed

  • Inline Javascript moved to separate file

v0.2.1 - Easier to install

Choose a tag to compare

@jp1337 jp1337 released this 22 Aug 21:34

Added

  • easywall is now also available as installable Debian package
  • easywall is now also available on pypi and can be installed over it
  • Massive improvement of GitHub workflows
  • Improve automated testing through GitHub workflows
  • There is now an FAQ documentation, which will be filled with time
  • The web server now sends headers to harden the application such as no permission for frames
  • 403 Error page added and web errors generally improved
  • The web configuration is now also checked for missing entries
  • flask-ipban dependency added
  • pypi package information improved and completed
  • Unit Tests significantly improved and the tools for Core and Web Tests combined

Changed

  • After 10 incorrect login attempts on the web interface by default, the attacker address is blocked
  • The log settings were moved to a separate configuration file "log.ini" in the "config" folder
  • The SSL settings were hardened - only current browsers can be used
  • The easywall_web folder was moved to the easywall folder as "easywall/web