From 84ba3607bf4b87e2f872e960c957d7d860acd83d Mon Sep 17 00:00:00 2001 From: flu0r1ne Date: Fri, 25 Aug 2023 19:05:30 -0500 Subject: Rename project wg2sd -> wg2nd, new CLI + generate 1. Renamed the project from wg2sd to wg2nd 2. Modified the _gen_netdev_cfg() function to handle the MTUBytes field. 3. Add new CLI with `generate` and `install` commands 4. Modified the gen_systemd_config() function to accept keyfile_or_output_path and filename parameters. - user can choose the name of the keyfile on the CLI - user can choose alternative output filename (instead of just using the interface name) --- src/wg2sd.hpp | 141 ---------------------------------------------------------- 1 file changed, 141 deletions(-) delete mode 100644 src/wg2sd.hpp (limited to 'src/wg2sd.hpp') diff --git a/src/wg2sd.hpp b/src/wg2sd.hpp deleted file mode 100644 index e80a284..0000000 --- a/src/wg2sd.hpp +++ /dev/null @@ -1,141 +0,0 @@ -#pragma once - -#include -#include -#include -#include -#include -#include - -#include - -namespace wg2sd { - - struct Interface { - // File name, or defaults to "wg" - std::string name; - // Address=... - // List of ip addresses to be assigned to the interface - std::vector addresses; - // PrivateKey=... - // Base64-encoded private key string - std::string private_key; - // MTu=.. - std::string mtu; - // DNS=... - // DNS consists of a comma-separated list of IP addresses of DNS servers - std::vector DNS; - // Table=... - // By default, wireguard creates routes. This is disabled, when Table=off - bool should_create_routes; - // Table number (if specific), 0 if auto - uint32_t table; - // ListenPort=... - // The port number on which the interface will listen - std::optional listen_port; - // PreUp, PostUp, PreDown PostDown - std::string preup, postup, predown, postdown; - // SaveConfig - std::string save_config; - - Interface() - : should_create_routes { false } - , table { 0 } - , listen_port { } - { } - }; - - struct Cidr { - std::string route; - bool is_default_route; - bool is_ipv4; - }; - - struct Peer { - // Endpoint=... - // IP and port of the peer - std::string endpoint; - // PublicKey=... - std::string public_key; - // AllowedIPs=... - // Comma separated list of allowed ips - // Each allowed ip is a CIDR block - std::vector allowed_ips; - // PersistentAlive=... - std::string persistent_keepalive; - // PresharedKey=... - std::string preshared_key; - }; - - struct Config { - // [Interface] - Interface intf; - // [Peer] - std::vector peers; - // If one of the peers has a default route - bool has_default_route; - - Config() - : has_default_route { false } - { } - }; - - class ConfigurationException : public std::exception { - - public: - - ConfigurationException(std::string const & message) - : _message { message } - {} - - char const * what() const noexcept override { - return _message.c_str(); - } - - private: - std::string _message; - }; - - class ParsingException : public ConfigurationException { - - public: - - ParsingException(std::string const & message, std::optional line_no = {}) - : ConfigurationException(message) - , _line_no { line_no } - {} - - - std::optional line_no() const noexcept { - return _line_no; - } - - private: - std::string _message; - std::optional _line_no; - }; - - struct SystemdFilespec { - std::string name; - std::string contents; - }; - - struct SystemdConfig { - SystemdFilespec netdev; - SystemdFilespec network; - SystemdFilespec private_keyfile; - std::vector symmetric_keyfiles; - - std::vector warnings; - std::string firewall; - }; - - std::string interface_name_from_filename(std::filesystem::path config_path); - - Config parse_config(std::string const & interface_name, std::istream & stream); - - SystemdConfig gen_systemd_config(Config const & cfg, std::string const & output_path); - - SystemdConfig wg2sd(std::string const & interface_name, std::istream & stream, std::string const & output_path); - -}; -- cgit v1.2.3