From 77c8a136d2088d75c5c1fc477604908f72460e6c Mon Sep 17 00:00:00 2001 From: Nishant Chaprana Date: Wed, 4 Aug 2021 13:38:44 +0530 Subject: wireguard: Save plugin related settings in config file Change-Id: I76d12fa347d1211958463ccf38a043a0c6272ece Signed-off-by: Nishant Chaprana --- vpn/plugins/wireguard.c | 104 ++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 104 insertions(+) diff --git a/vpn/plugins/wireguard.c b/vpn/plugins/wireguard.c index 1da0ffb3..d8f32b32 100644 --- a/vpn/plugins/wireguard.c +++ b/vpn/plugins/wireguard.c @@ -460,10 +460,114 @@ static void wg_disconnect(struct vpn_provider *provider) g_free(info); } +#if defined TIZEN_EXT +static int wg_save(struct vpn_provider *provider, GKeyFile *keyfile) +{ + const char *option; + + DBG(""); + + /* + * The client/own device listen port. + */ + option = vpn_provider_get_string(provider, "WireGuard.ListenPort"); + if (option) + g_key_file_set_string(keyfile, + vpn_provider_get_save_group(provider), + "WireGuard.ListenPort", + option); + + /* + * comma separated DNS. + */ + option = vpn_provider_get_string(provider, "WireGuard.DNS"); + if (option) + g_key_file_set_string(keyfile, + vpn_provider_get_save_group(provider), + "WireGuard.DNS", + option); + + /* + * The client private key. + */ + option = vpn_provider_get_string(provider, "WireGuard.PrivateKey"); + if (option) + g_key_file_set_string(keyfile, + vpn_provider_get_save_group(provider), + "WireGuard.PrivateKey", + option); + + /* + * The server public key. + */ + option = vpn_provider_get_string(provider, "WireGuard.PublicKey"); + if (option) + g_key_file_set_string(keyfile, + vpn_provider_get_save_group(provider), + "WireGuard.PublicKey", + option); + + /* + * The preshared key. + */ + option = vpn_provider_get_string(provider, "WireGuard.PresharedKey"); + if (option) + g_key_file_set_string(keyfile, + vpn_provider_get_save_group(provider), + "WireGuard.PresharedKey", + option); + + /* + * Subnets accessed via VPN tunnel, 0.0.0.0/0 routes all traffic. + */ + option = vpn_provider_get_string(provider, "WireGuard.AllowedIPs"); + if (option) + g_key_file_set_string(keyfile, + vpn_provider_get_save_group(provider), + "WireGuard.AllowedIPs", + option); + + /* + * The time in seconds to emit periodic keep alive message. + */ + option = vpn_provider_get_string(provider, "WireGuard.PersistentKeepalive"); + if (option) + g_key_file_set_string(keyfile, + vpn_provider_get_save_group(provider), + "WireGuard.PersistentKeepalive", + option); + + /* + * The server listen port, default: 51820 + */ + option = vpn_provider_get_string(provider, "WireGuard.EndpointPort"); + if (option) + g_key_file_set_string(keyfile, + vpn_provider_get_save_group(provider), + "WireGuard.EndpointPort", + option); + + /* + * Save Address: The internal IP of the client node + */ + option = vpn_provider_get_string(provider, "WireGuard.Address"); + if (option) + g_key_file_set_string(keyfile, + vpn_provider_get_save_group(provider), + "WireGuard.Address", + option); + + return 0; +} +#endif + static struct vpn_driver vpn_driver = { .flags = VPN_FLAG_NO_TUN | VPN_FLAG_NO_DAEMON, .connect = wg_connect, .disconnect = wg_disconnect, +#if defined TIZEN_EXT + .save = wg_save, +#endif }; static int wg_init(void) -- cgit v1.2.3