aboutsummaryrefslogtreecommitdiff
path: root/src/wg2sd.hpp
diff options
context:
space:
mode:
authorflu0r1ne <flu0r1ne@flu0r1ne.net>2023-08-25 19:05:30 -0500
committerflu0r1ne <flu0r1ne@flu0r1ne.net>2023-08-25 19:05:30 -0500
commit84ba3607bf4b87e2f872e960c957d7d860acd83d (patch)
treea4d5e92b2b88edd9c325ada62bf6d60948459529 /src/wg2sd.hpp
parent2f0a9c87bd5acd8fc0852f599599d031cde44bbe (diff)
downloadwg2nd-84ba3607bf4b87e2f872e960c957d7d860acd83d.tar.xz
wg2nd-84ba3607bf4b87e2f872e960c957d7d860acd83d.zip
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)
Diffstat (limited to 'src/wg2sd.hpp')
-rw-r--r--src/wg2sd.hpp141
1 files changed, 0 insertions, 141 deletions
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 <istream>
-#include <exception>
-#include <optional>
-#include <string>
-#include <vector>
-#include <filesystem>
-
-#include <cstdint>
-
-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<std::string> 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<std::string> 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<uint16_t> 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<Cidr> allowed_ips;
- // PersistentAlive=...
- std::string persistent_keepalive;
- // PresharedKey=...
- std::string preshared_key;
- };
-
- struct Config {
- // [Interface]
- Interface intf;
- // [Peer]
- std::vector<Peer> 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<uint64_t> line_no = {})
- : ConfigurationException(message)
- , _line_no { line_no }
- {}
-
-
- std::optional<uint64_t> line_no() const noexcept {
- return _line_no;
- }
-
- private:
- std::string _message;
- std::optional<uint64_t> _line_no;
- };
-
- struct SystemdFilespec {
- std::string name;
- std::string contents;
- };
-
- struct SystemdConfig {
- SystemdFilespec netdev;
- SystemdFilespec network;
- SystemdFilespec private_keyfile;
- std::vector<SystemdFilespec> symmetric_keyfiles;
-
- std::vector<std::string> 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);
-
-};