Commit graph

54 commits

Author SHA1 Message Date
Jo-Philipp Wich
008fa18878 luci-proto-wireguard: rewrite rpcd handler in ucode
Rewrite the wireguard rpcd plugin in ucode to prevent an implicit dependency
on the LuCI Lua runtime.

Signed-off-by: Jo-Philipp Wich <jo@mein.io>
2022-10-25 01:03:37 +02:00
Jo-Philipp Wich
94bfa33452 luci-proto-wireguard: handle multiple peers in imported configuration
When importing a fully configuration, import all peer entries from it
instead of non-deterministically merging all peer keys into one.

When importing a remote configuration as peer, only use the setting from
the peer section matching our local interface pubkey.

Also relabel the `Import peer configuration` button to
`Import configuration as peer` in order to be more explicit.

Signed-off-by: Jo-Philipp Wich <jo@mein.io>
2022-08-01 13:00:31 +02:00
Jo-Philipp Wich
2ae74b909b luci-proto-wireguard: configuration import improvements
- Reword texts in import dialogs for better clarity, use different
   descriptions for full import and peer import

 - Allow importing configurations without [Peer] section

Signed-off-by: Jo-Philipp Wich <jo@mein.io>
2022-07-23 20:24:09 +02:00
Jo-Philipp Wich
340183786e luci-proto-wireguard: gracefully deal with missing uci configs
The /etc/config/ddns in particular might not be present on the system,
don't fail if it is absent.

Fixes: #5838
Fixes: 9ba20645b0 ("luci-proto-wireguard: rewrite protocol handler")
Signed-off-by: Jo-Philipp Wich <jo@mein.io>
2022-06-21 00:07:48 +02:00
Jo-Philipp Wich
4769bf11aa luci-proto-wireguard: grant uci read access to system and ddns config
The configuration export requires access to /e/c/system and /e/c/ddns for
external hostname hints.

Fixes: #5838
Fixes: 9ba20645b0 ("luci-proto-wireguard: rewrite protocol handler")
Signed-off-by: Jo-Philipp Wich <jo@mein.io>
2022-06-20 23:58:07 +02:00
Jo-Philipp Wich
9ba20645b0 luci-proto-wireguard: rewrite protocol handler
This commit rewrites large chunks of the WireGuard protocol handler in order
to simplify the process of importing and exporting configuration. The major
changes are:

1) The wireguard interface configuration tab (General Settings) gained an
   import assistant which allows dragging or pasting a native WireGuard
   configuration file in order to import required settrings into uci

2) The peer configuration tab gained a similar import assistant which allows
   importing the settings for a WireGuard peer from an existing native
   WireGuard configuration file

3) The QR code export feature has been rewritten to make the resulting codes
   actually useful for importing into a WireGuard client application.
   Additionally the plaintext native WireGuard configuration is displayed
   to allow copy-pasting it for use on a Linux or OS X system

Signed-off-by: Jo-Philipp Wich <jo@mein.io>
2022-05-17 15:45:20 +02:00
Florian Eckert
7206d8fd6a luci-proto-wireguard: adjust MTU range from 0-8940
Signed-off-by: Florian Eckert <fe@dev.tdt.de>
2022-04-14 11:59:56 +02:00
Florian Eckert
ddd04a719f luci-proto-wireguard: remove MTU limit
fixes #5737

Signed-off-by: Florian Eckert <fe@dev.tdt.de>
2022-04-12 10:32:25 +02:00
Lukas Voegl
b6925a1227 luci-proto-wireguard: add generate psk button
Signed-off-by: Lukas Voegl <lvoegl@tdt.de>
2022-03-18 14:47:44 +01:00
Jo-Philipp Wich
ff4f52983e
Merge pull request #5540 from jow-/wireguard-peer-gridsection
Implement nested grid section support and use it for wireguard peer config
2021-12-02 10:54:36 +01:00
Florian Eckert
a1723c2272
Merge pull request #5400 from systemcrash/wg_pubkey
luci-proto-wireguard: display interface public key
2021-11-30 14:10:19 +01:00
Jo-Philipp Wich
f2445a862e luci-proto-wireguard: turn peer configuration into grid view
Turn the list of configured peers into a grid section in order to improve
the overview of the configuration form.

Fixes: #5489
Signed-off-by: Jo-Philipp Wich <jo@mein.io>
2021-11-22 09:43:29 +01:00
Jo-Philipp Wich
f58ae7635c luci-proto-wireguard: fix QR code generation markup
The custom code generation markup lacked a required CSS class.

Signed-off-by: Jo-Philipp Wich <jo@mein.io>
2021-11-21 23:40:21 +01:00
Robert Walli
aaa2b3dd2b luci-proto-wireguard: add option to disable peer-section
Submitted-by: Robert Walli <12079858+rwalli@users.noreply.github.com>
Signed-off-by: Florian Eckert <fe@dev.tdt.de>
2021-11-17 16:38:20 +01:00
Paul Dee
8a9dbe39d5 luci-proto-wireguard: display interface public key
Signed-off-by: Paul Dee <itsascambutmailmeanyway@gmail.com>
2021-11-11 01:31:43 +01:00
Jo-Philipp Wich
44445a8097 luci-proto-wireguard: fix potential shell injection vulnerabilities
The `luci.wireguard.generateQrCode` UBUS method allows injecting
arbitrary shell code by not sanitizing the `privkey` and `allowed_ips`
arguments before concatenating them into shell command expressions.

Signed-off-by: Jo-Philipp Wich <jo@mein.io>
2021-10-08 20:27:13 +02:00
Jo-Philipp Wich
01ecb1ac8a luci-proto-wireguard: fix markup not valid for XHTML
Fixes: #5407
Fixes: 03d615f62c ("luci-proto-wireguard: add more options to qr code")
Signed-off-by: Jo-Philipp Wich <jo@mein.io>
2021-10-07 16:19:30 +02:00
Florian Eckert
fc8a0b4d51
Merge pull request #5403 from lvoegl/luci-app-wireguard-fix-parsing
luci-app-wireguard: fix allowed_ip parsing
2021-10-01 17:06:33 +02:00
lvoegl
193abe7221 luci-app-wireguard: fix allowed_ip parsing
Signed-off-by: lvoegl <lvoegl@tdt.de>
2021-10-01 15:31:38 +02:00
Florian Eckert
88d7cc1261 luci-proto-wireguard: fix luci.wireguard rpcd dependency
Signed-off-by: Florian Eckert <fe@dev.tdt.de>
2021-09-30 12:46:15 +02:00
Florian Eckert
9d560c46cc luci-app-wireguard: fix dependency
Signed-off-by: Florian Eckert <fe@dev.tdt.de>
2021-09-26 13:50:46 +02:00
lvoegl
03d615f62c luci-proto-wireguard: add more options to qr code
Signed-off-by: lvoegl <lvoegl@tdt.de>
2021-09-17 14:22:54 +02:00
lvoegl
8530232f51 luci-proto-wireguard: client qr code generation
Signed-off-by: lvoegl <lvoegl@tdt.de>
2021-09-17 14:15:56 +02:00
lvoegl
d98935c45b luci-app-wireguard: merge app and proto rpcd
Signed-off-by: lvoegl <lvoegl@tdt.de>
2021-09-17 14:15:56 +02:00
Keith Irwin
092109c905
#5307 Made AllowedIPs optional
Signed-off-by: Keith Irwin <git@ki9.us>
2021-08-28 23:34:31 -06:00
Jo-Philipp Wich
bc1015f7db luci-proto-wireguard: fix fwmark validation to allow 32 bit values
The iptables mark field is 32 bits wide, which is 4 bytes and so 8 hex
characters. Fix the fwmark validation to allow 8 characters in the hex
string.

Fixes: #5098
Suggested-by: Robert <32970961+differentblue@users.noreply.github.com>
Signed-off-by: Jo-Philipp Wich <jo@mein.io>
2021-06-03 09:51:58 +02:00
Jo-Philipp Wich
171ef77e89 treewide: remove rendundant proto handler options
The introduction of network device configuration support also implemented
all common, protocol-independent interface options directly in the
interface config view, so drop the redundant option definitions.

Signed-off-by: Jo-Philipp Wich <jo@mein.io>
2021-03-15 11:41:44 +01:00
Ilya Lipnitskiy
98c3d36d45 luci-{app,proto}-wireguard: remove kmod-wireguard
Prepares for 5.10 migration. wireguard-tools will bring in the correct
wireguard kernel module dependency - either kmod-wireguard or
kmod-wireguard-oot.

Depends on https://github.com/openwrt/openwrt/pull/3885

Signed-off-by: Ilya Lipnitskiy <ilya.lipnitskiy@gmail.com>
2021-02-27 07:11:37 +02:00
Wojciech Jowsa
60ce87a197 luci-proto-wireguard: Add generate key button
Signed-off-by: Wojciech Jowsa <wojciech.jowsa@gmail.com>
[minor indentation fix, use bound section_id value, remove empty translation]
Signed-off-by: Jo-Philipp Wich <jo@mein.io>
2020-08-21 11:03:53 +02:00
Florian Eckert
dae15b8cf4 luci-proto-wireguard: verify last base64 string symbol is an = sign
Signed-off-by: Florian Eckert <fe@dev.tdt.de>
2020-05-14 09:44:50 +02:00
Florian Eckert
59bc317326 luci-proto-wireguard: add warning that allowed_ips must not be empty
Signed-off-by: Florian Eckert <fe@dev.tdt.de>
2020-05-13 15:34:27 +02:00
Jo-Philipp Wich
890dcac2de luci-proto-wireguard: remove peer sections when deleting interface
Signed-off-by: Jo-Philipp Wich <jo@mein.io>
2020-03-03 21:22:46 +01:00
Yuxiang Zhu
9684901dc2 wireguard: add checkbox for nohostroute option
This change allows to configure `nohostroute` option for wireguard to explicitely prevent creation
of host routes to endpoints.

By default without `option nohostroute '1'`, an explicite route to the peer's endpoint will be created in the main routing table with the next hop to the gateway. However, it causes issues with some setup. Enabling this option will inhibit this behavior. See discussions at http://lists.openwrt.org/pipermail/openwrt-devel/2019-March/016329.html.

Signed-off-by: Yuxiang Zhu <vfreex@gmail.com>
2020-02-09 02:12:30 +08:00
Jo-Philipp Wich
f1c89c103b luci-proto-wireguard: explicitely escape slashes in regex literals
The unespaced slashes confuse xgettext and likely other source
scanners as well.

Signed-off-by: Jo-Philipp Wich <jo@mein.io>
2020-01-22 22:02:24 +01:00
Jo-Philipp Wich
284918bfaf treewide: move templates and libraries not used by the core to luci-compat
Signed-off-by: Jo-Philipp Wich <jo@mein.io>
2019-11-03 17:56:58 +01:00
Jo-Philipp Wich
995322c55f luci-proto-wireguard: fix preshared key validation
Ensure that the preshared key option remains optional.

Fixes: #3075
Signed-off-by: Jo-Philipp Wich <jo@mein.io>
2019-09-17 08:28:45 +02:00
Jo-Philipp Wich
06f4feca1d protocols: drop server side cbi implementations of protocol handlers
Signed-off-by: Jo-Philipp Wich <jo@mein.io>
2019-09-10 15:28:16 +02:00
Jo-Philipp Wich
6a2a53a829 protocols: add client side protocol handler implementations
Signed-off-by: Jo-Philipp Wich <jo@mein.io>
2019-09-10 15:28:16 +02:00
Dan Lüdtke
63b86dbbbf luci-*-wireguard: Remove inactive maintainer
I tried to find a successor in the last months, but that failed.

Signed-off by Dan Luedtke <mail@danrl.com>
2018-11-10 13:54:59 +01:00
rwalli
140f41b40f
Add description 2018-07-08 19:46:10 +02:00
Kevin Darbyshire-Bryant
8f67019713 wireguard: update wireguard url
Signed-off-by: Kevin Darbyshire-Bryant <ldir@darbyshire-bryant.me.uk>
2018-06-11 11:43:39 +01:00
square.wf
43589ae4d8
Fix #1609: luci-proto-wireguard placeholder wrongfully suggests default port 2018-01-30 15:38:31 +01:00
Jo-Philipp Wich
f01e49210b luci-proto-wireguard: use "Optional" instead of "Optional." as translation
This allows sharing the translation string with other components.

Signed-off-by: Jo-Philipp Wich <jo@mein.io>
2017-05-30 21:45:54 +02:00
Jason A. Donenfeld
b9b64aae96 wireguard: preshared-key is now an attribute of the peer
Signed-off-by: Jason A. Donenfeld <Jason@zx2c4.com>
2017-05-09 16:51:40 +02:00
danrl
cd8333cf0b luci-proto-wireguard: add support for fwmark option
Adds support for the fwmark option.

FwMark is a 32-bit fwmark for outgoing packets.
If set to 0 or "off", this option is disabled.

Signed-off-by: Dan Luedtke <mail@danrl.com>
2017-02-27 20:48:46 +01:00
Dan Lüdtke
517d430f65 luci-proto-wireguard: mark package as arch indep.
Marks package luci-proto-wireguard as architecture independent.

Signed-off-by: Dan Luedtke <mail@danrl.com>
2017-02-16 21:50:39 +01:00
danrl
8fc55591b9 luci-proto-wireguard: stricter input validation
Signed-off-by: Dan Luedtke <mail@danrl.com>
2017-02-15 10:03:29 +01:00
danrl
a9463d3d1a luci-proto-wireguard: fix wrong maximum MTU
Signed-off-by: Dan Luedtke <mail@danrl.com>
2017-02-03 21:05:01 +01:00
danrl
77ea7c8c7e luci-proto-wireguard: enable addressing for tunnel interfaces
Enable static addresses on WireGuard tunnel interfaces without requiring
an static address interface.

This removes the requirement to use a static address interface on top of a
WireGuard tunnel interface in the majority of cases. In the past, users have
been confused by the current approach and asked for a simpler way to configure
WireGuard interfaces.

Signed-off-by: Dan Luedtke <mail@danrl.com>
2017-01-14 17:12:36 +01:00
danrl
3bfc32f541 luci-proto-wireguard: Fix misleading description
Description was misleading, as the routes are not created automatically. We have
a flag to create routes. Added a hint what to fill into the AlledIPs field as
users repeatedly have struggled to use it correctly. Thanks to Stefan Agner for
providing feedback on this.

Signed-off-by: Dan Luedtke <mail@danrl.com>
2016-12-01 09:01:35 +01:00