Commit Graph
93 Commits
Author SHA1 Message Date
Ondřej ZmatlíkandGitHub 87aef1c8ff Add read-only support and UI indicators for MikroTik dynamic peers (#733)
Docker / Build and Push (push) Canceled after 0s
github-pages / deploy (push) Canceled after 0s
Test / make test (push) Canceled after 0s
Docker / release (push) Canceled after 0s
* Add dynamic Mikrotik peer support & UI/i18n

Introduce handling for dynamically created Mikrotik peers: add Dynamic/IsDynamic fields to domain, peer and interface models and API models; include "dynamic" in Mikrotik queries; skip updates/deletes for dynamic peers; sync dynamic flag when restoring state. Prevent modifying/deleting dynamic peers in manager. UI: disable selection/edit for dynamic peers and show badge. Implement Mikrotik interface hook execution. Add i18n keys/translations for dynamic-peer messages across languages.

* Fix Mikrotik hooks implementation and UI visibility
2026-08-27 09:47:23 +02:00
62e7f9d8b9 Fix/OIDC return url base path (#735)
* fix: build OAuth return URL from the live location, not the Vite base

On base_path deployments, OAuth/OIDC login failed with a 400 "invalid
return URL" before the user ever reached the IdP.

LoginView and the router derived the app's runtime URL mount from
import.meta.env.BASE_URL, which is Vite's build-time *asset* base. Since
#711 set `base: './'` to fix relative asset loading (#710), BASE_URL is
"./", so `base_path: /wg` produced the return URL https://host/wg./#/login.
isValidReturnUrl() requires <base_path>/app, so every external-auth user
on a base_path deployment was locked out.

Derive the return URL from window.location instead: the app is mounted at
{base_path}/app/ in production and at / under `npm run dev`, so the live
document location is the only reliable source. Likewise drop the explicit
base from createWebHashHistory(), which then defaults to
`location.pathname + location.search` -- correct in every deployment.

This leaves the relative asset base from #711 untouched, so #710 stays
fixed, and it removes the last two readers of import.meta.env.BASE_URL
under frontend/src so the asset base can no longer affect routing.

Fixes #719

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Signed-off-by: Dan Berg <dan@webinargeek.com>

* fix: log rejected OAuth return URLs

The isValidReturnUrl() rejection was the only failure branch in
handleOauthInitiateGet without a slog call, and the 400 response body
reveals neither what was received nor what was expected. That is what
made #719 hard to diagnose.

Log both at Debug level, matching the neighbouring branches. The response
body is unchanged -- the URL is not echoed to the client.

Also note on the base-path test that the URL shape it pins is produced by
externalLogin() in frontend/src/views/LoginView.vue, so a future frontend
change has a breadcrumb back to the contract.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Signed-off-by: Dan Berg <dan@webinargeek.com>

---------

Signed-off-by: Dan Berg <dan@webinargeek.com>
Co-authored-by: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-08-11 22:42:13 +02:00
Christoph ae15359850 chore: update frontend deps 2026-07-21 23:24:40 +02:00
Rene LuriaandGitHub 712a5ea766 fix: resolve Prism syntax highlighting error in peer config modal (#727)
Docker / Build and Push (push) Has been cancelled
github-pages / deploy (push) Has been cancelled
Docker / release (push) Has been cancelled
* fix: resolve Prism syntax highlighting error in peer config modal

The PeerViewModal and InterfaceViewModal components displayed:
  Error: The language "undefined" has no grammar.

Root cause: vue-prism-component bundles its own instance of prismjs
(separate from the one imported elsewhere), so registering the ini
grammar on a different Prism instance had no effect on the one
actually performing the highlighting.

Fix: bypass vue-prism-component entirely. Import a single Prism
instance via a new helper (frontend/src/helpers/prism-setup.js) that
also registers the ini grammar, then render highlighted HTML directly
with <pre><code v-html="highlightedConfig">. This ensures the same
Prism object that owns the ini grammar is the one calling highlight().

Affected files:
- frontend/src/helpers/prism-setup.js (new): imports prismjs, defines
  the ini grammar on the Prism instance, re-exports it
- frontend/src/components/PeerViewModal.vue: replaces <Prism> with
  v-html using the shared Prism instance
- frontend/src/components/InterfaceViewModal.vue: same replacement
- frontend/src/main.js: removes the now-unused prism-setup import

Fixes #726

* Revert "fix: resolve Prism syntax highlighting error in peer config modal"

This reverts commit 8d1155224d.

* fix: resolve Prism syntax highlighting error in peer config modal

The PeerViewModal displayed: Error: The language "undefined" has no grammar.

Root cause: Vite bundled prismjs as separate instances per lazy-loaded
chunk, so the ini grammar registered in one instance was invisible to
vue-prism-component which used a different instance.

Fix:
- Add dedupe: ['prismjs'] to vite.config.mjs to force a single Prism
    instance across all chunks
- Add the missing 'prismjs/components/prism-ini' import in
    PeerViewModal.vue (InterfaceViewModal already had it)
2026-07-13 07:58:13 +02:00
Richard CarnibellaandGitHub 012013c188 Fix vue assets under web base path (#711)
Remove hardcoded `--base=/app/` from npm build script and set `base:
'./'` in vite.config to generate relative asset URLs

Update server `updateBasePathInFrontend` to handle relative paths

Fixes #710

Signed-off-by: Rich C <richcarni@gmail.com>
2026-06-08 20:08:41 +02:00
Dan BergandGitHub 0cf04d07e0 fix vue and oauth redirects under web base path (#683)
Docker / Build and Push (push) Has been cancelled
github-pages / deploy (push) Has been cancelled
Docker / release (push) Has been cancelled
2026-05-19 21:52:54 +02:00
ff935a404e feat(i18n): add Japanese (ja) translation (#682)
Docker / Build and Push (push) Has been cancelled
github-pages / deploy (push) Has been cancelled
Docker / release (push) Has been cancelled
- Add frontend/src/lang/translations/ja.json (full translation of all 422 entries from en.json)
- Register ja in frontend/src/lang/index.js so it appears in the language selector

Tested locally with v2.2.3 build. UI strings render correctly in Japanese.

Closes: language support request

Co-authored-by: Taro Kawakami <tarokun@tunagufactory.jp>
2026-05-03 21:23:34 +02:00
h44zandGitHub 1c133b6f6e Improved default peer handling (#674)
Docker / Build and Push (push) Has been cancelled
github-pages / deploy (push) Has been cancelled
Docker / release (push) Has been cancelled
* create default peers for newly created interfaces (#666)

* allow to manually create default peers for an interface (#666)
2026-04-16 21:55:41 +02:00
71806455dd OIDC - support IdP logout (#670)
* OIDC - support IdP logout

Signed-off-by: Michael Tupitsyn <michael.tupitsyn@gmail.com>

* Add support of logout_idp_session parameter

Signed-off-by: Michael Tupitsyn <michael.tupitsyn@gmail.com>

* Fix merge conflict issue

Signed-off-by: Michael Tupitsyn <michael.tupitsyn@gmail.com>

* Restore original package-lock.json

Signed-off-by: Michael Tupitsyn <michael.tupitsyn@gmail.com>

* Cleanup

---------

Signed-off-by: Michael Tupitsyn <michael.tupitsyn@gmail.com>
Co-authored-by: Christoph Haas <christoph.h@sprinternet.at>
2026-04-12 13:18:04 +02:00
h44zandGitHub 401642701a feat: improve pagination (#662) (#663)
Docker / Build and Push (push) Has been cancelled
github-pages / deploy (push) Has been cancelled
Docker / release (push) Has been cancelled
2026-04-07 22:17:53 +02:00
h44zandGitHub 920806b231 chore: update frontend deps (#657)
Docker / Build and Push (push) Has been cancelled
Docker / release (push) Has been cancelled
github-pages / deploy (push) Has been cancelled
2026-04-01 00:20:35 +02:00
ec08e31eb7 feat(frontend): add confirmation dialog before deleting users, peers, and interfaces (#654)
Docker / Build and Push (push) Has been cancelled
Docker / release (push) Has been cancelled
github-pages / deploy (push) Has been cancelled
* feat(frontend): add confirmation dialog before deleting users, peers, and interfaces (#652)

Add a browser confirm() dialog to the delete functions in UserEditModal,
PeerEditModal, and InterfaceEditModal to prevent accidental deletions.
The bulk-delete actions in UserView already had this protection; this
change brings single-item deletion in line with that behavior.

Translation keys (confirm-delete) added for all 10 supported locales:
de, en, es, fr, ko, pt, ru, uk, vi, zh.

Signed-off-by: LeC-D <leo.openc@gmail.com>

* fix broken translation files

---------

Signed-off-by: LeC-D <leo.openc@gmail.com>
Co-authored-by: Christoph Haas <christoph.h@sprinternet.at>
2026-03-31 19:49:53 +02:00
402cc1b5f3 feat: Implement LDAP interface-specific provisioning filters (#642)
Docker / Build and Push (push) Has been cancelled
github-pages / deploy (push) Has been cancelled
Docker / release (push) Has been cancelled
* Implement LDAP filter-based access control for interface provisioning

* test: add unit tests for LDAP interface filtering logic

* smaller improvements / cleanup

---------

Co-authored-by: jc <37738506+theguy147@users.noreply.github.com>
Co-authored-by: Christoph Haas <christoph.h@sprinternet.at>
2026-03-19 23:13:19 +01:00
h44zandGitHub 70cc44cc4d feat: add live traffic stats (#530) (#616) 2026-01-26 22:24:10 +01:00
h44zandGitHub e0f6c1d04b feat: allow multiple auth sources per user (#500,#477) (#612)
* feat: allow multiple auth sources per user (#500,#477)

* only override isAdmin flag if it is provided by the authentication source
2026-01-21 22:22:22 +01:00
Arnaud RocherandGitHub 5d58df8a19 fix: parity of Base64/URL encoding between frontend and backend (#611)
Docker / Build and Push (push) Has been cancelled
github-pages / deploy (push) Has been cancelled
Docker / release (push) Has been cancelled
Signed-off-by: Arnaud Rocher <arnaud.roche3@gmail.com>
2026-01-17 19:38:48 +01:00
h44zandGitHub 2200509bc0 feat: introduce "Create Default Peer" flag for interfaces (#513) (#605)
Docker / Build and Push (push) Has been cancelled
github-pages / deploy (push) Has been cancelled
Docker / release (push) Has been cancelled
2026-01-13 23:11:22 +01:00
h44zandGitHub 015220dc7b bulk actions for peers and users (#492) (#602) 2026-01-05 23:25:17 +01:00
h44zandGitHub 0a88fe745f allow setting a base-path for the web UI and API (#583) (#595)
Docker / Build and Push (push) Has been cancelled
github-pages / deploy (push) Has been cancelled
Docker / release (push) Has been cancelled
2025-12-20 15:30:55 +01:00
Christoph Haas a318118ee6 chore: update dependencies 2025-12-09 22:19:29 +01:00
Potorochin MaxandGitHub 364f7b3a5b Update russian translation (#574)
Docker / Build and Push (push) Has been cancelled
github-pages / deploy (push) Has been cancelled
Docker / release (push) Has been cancelled
Signed-off-by: ornaras <ornaras.us@gmail.com>
2025-11-21 13:50:47 +01:00
Christoph Haas 8bc4990441 chore: update frontend and backend dependencies
Docker / Build and Push (push) Has been cancelled
github-pages / deploy (push) Has been cancelled
Docker / release (push) Has been cancelled
2025-11-13 20:01:47 +01:00
Osvaldo-NetandGitHub 3d4a190949 Mejoras en la traducción al español y añade traducción para la herramienta de calculadora y cambio de contraseña. (#568)
* Mejorar traducción al español

* Update es.json

* Mejorar/Añadir traducciones al español
2025-11-13 17:48:33 +01:00
Christoph Haas 7c557d3e66 add german translation for ip calculator (#503) 2025-11-07 23:13:24 +01:00
Tomáš LukčaandGitHub d66a4b71b8 add IPCalculator View (#557)
Docker / Build and Push (push) Has been cancelled
github-pages / deploy (push) Has been cancelled
Docker / release (push) Has been cancelled
* create IPCalculator View + add cidr_tools package

* fixed translation and comma separated ip as placeholder
2025-11-03 17:40:42 +01:00
h44zandGitHub 3d923b328e password change UI (#543) (#548) 2025-10-15 21:11:40 +02:00
Christoph Haas faf1d995a8 fix parsing IP addresses in UI (ip-address lib was updated to V10) 2025-10-12 15:20:38 +02:00
h44zandGitHub cdf3a49801 Cleanup route handling (#542)
* mikrotik: allow to set DNS, wip: handle routes in wg-controller

* replace old route handling for local controller

* cleanup route handling for local backend

* implement route handling for mikrotik controller
2025-10-12 14:31:19 +02:00
Christoph c7724b620a smaller UI improvements; add system theme
Docker / Build and Push (push) Has been cancelled
Docker / release (push) Has been cancelled
github-pages / deploy (push) Has been cancelled
2025-10-12 00:48:35 +02:00
Christoph Haas 4d19f1d8bb fix a small visual glitch in dialogs
Docker / Build and Push (push) Has been cancelled
github-pages / deploy (push) Has been cancelled
Docker / release (push) Has been cancelled
2025-10-06 21:10:39 +02:00
Christoph Haas 3f539a1615 improve interface view: show correct DNS entries 2025-10-06 19:26:51 +02:00
Christoph Haas 05fbcccc9c chore: update dependencies 2025-10-04 13:22:51 +02:00
Christoph Haas 97b6c398e8 fix incorrect handling of client mode (#537)
Docker / Build and Push (push) Has been cancelled
Docker / release (push) Has been cancelled
github-pages / deploy (push) Has been cancelled
2025-10-03 17:30:14 +02:00
h44zandGitHub 61bf349813 add user's display-name to peer view (#525) (#534)
Docker / Build and Push (push) Has been cancelled
Docker / release (push) Has been cancelled
github-pages / deploy (push) Has been cancelled
2025-09-21 13:02:12 +02:00
Osvaldo-NetandGitHub 80693400be Soporte para el idioma español. (#530) (#532)
* Add files via upload

* Update index.js

* Update App.vue

* Update es.json
2025-09-21 12:44:59 +02:00
h44zandGitHub 112f6bfb77 Mikrotik integration (#467)
Docker / Build and Push (push) Has been cancelled
github-pages / deploy (push) Has been cancelled
Docker / release (push) Has been cancelled
Allow MikroTik routes as WireGuard backends
2025-08-10 14:42:02 +02:00
Christoph Haas c20f17cddf fix multi-peer generation, fix prefix handling (#491) 2025-08-09 15:55:29 +02:00
h44zandGitHub 6a8b28df88 add dark mode (#482) (#489)
Docker / Build and Push (push) Has been cancelled
Docker / release (push) Has been cancelled
github-pages / deploy (push) Has been cancelled
2025-07-27 00:15:27 +02:00
h44zandGitHub f08740991b support for raw-wireguard and wg-quick style peer configurations (#441) (#473) 2025-06-29 19:47:53 +02:00
h44zandGitHub dd28a8dddf allow to hide login form (#459) (#470)
Docker / Build and Push (push) Has been cancelled
github-pages / deploy (push) Has been cancelled
Docker / release (push) Has been cancelled
use the `hide_login_form` parameter in the `auth` settings to configure this feature
2025-06-27 13:50:38 +02:00
Christoph Haas 75a5f3d815 add/improve documentation 2025-05-16 14:58:05 +02:00
Christoph Haas e9005b1b90 add minimum password length check 2025-05-16 09:55:35 +02:00
Christoph Haas 1394be2341 add webauthn (passkey) support 2025-05-12 22:53:43 +02:00
Rafael AlexandreandGitHub f018babca7 update portuguese translations (#430)
Signed-off-by: Rafael Alexandre <r.alexandre99@gmail.com>
2025-05-09 15:45:13 +02:00
Christoph Haas 4ca37089bc fix browser warnings, update vite 2025-05-04 20:14:40 +02:00
Christoph Haas 8e5d5138c0 fix bootswatch 5.3.5 issue 2025-05-04 20:05:38 +02:00
Christoph Haas c73286e11a improve german translations 2025-05-04 19:44:25 +02:00
Dominik LakatošandGitHub 2b46dca770 generating WG keypair in browser using Web Crypto API (#422) 2025-05-03 07:58:41 +02:00
Christoph Haas b9c4ca04f5 allow to encrypt keys in db, add browser-only key generator, add hints that private keys are stored on the server (#420) 2025-05-02 18:48:35 +02:00
acc0mplishandGitHub fbcb22198c Added Korean translations (#414) 2025-04-24 14:54:45 +02:00