Adapt example config to version 2

This commit is contained in:
Dennis Schwerdel 2020-10-26 23:00:36 +01:00
parent 7bbf3ccdc4
commit 800e284408
2 changed files with 111 additions and 22 deletions

View File

@ -7,46 +7,64 @@
# `service vpncloud@NAME start/stop` on systemd systems. # `service vpncloud@NAME start/stop` on systemd systems.
# The port number on which to listen for data. # The port number or ip:port on which to listen for data.
# Note: Every VPN needs a different port number. # Note: Every VPN needs a different port number.
#port: 3210 listen: 3210
# Address of a peer to connect to. The address should be in the form # Address of a peer to connect to. The address should be in the form
# `addr:port`. If the node is not started, the connection will be retried # `addr:port`. If the node is not started, the connection will be retried
# periodically. This parameter can be repeated to connect to multiple peers. # periodically. This parameter can be repeated to connect to multiple peers.
# Note: Several entries can be separated by spaces. # Note: Several entries can be separated by spaces.
#peers: peers:
# - node2.example.com:3210 # - node2.example.com:3210
# - node3.example.com:3210 # - node3.example.com:3210
# Peer timeout in seconds. The peers will exchange information periodically # Peer timeout in seconds. The peers will exchange information periodically
# and drop peers that are silent for this period of time. # and drop peers that are silent for this period of time.
#peer_timeout: 600 peer-timeout: 300
# Switch table entry timeout in seconds. This parameter is only used in switch # Switch table entry timeout in seconds. This parameter is only used in switch
# mode. Addresses that have not been seen for the given period of time will # mode. Addresses that have not been seen for the given period of time will
# be forgot. # be forgot.
#switch_timeout: 300 switch-timeout: 300
# An optional token that identifies the network and helps to distinguish it
# from other networks.
#magic: "76706e01"
# An optional shared key to encrypt the VPN data. If this option is not set, # Crypto settings
# the traffic will be sent unencrypted. #crypto:
#shared_key: ""
# The encryption method to use ("aes256", or "chacha20"). Most current CPUs # An optional password to encrypt the VPN data.
# have special support for AES256 so this should be faster. For older #password: ""
# computers lacking this support, only CHACHA20 is supported.
#crypto: chacha20
# Name of the virtual device. Any `%d` will be filled with a free number. # Private key
#device_name: "vpncloud%d" #private-key: ""
# Public key
#public-key: ""
# Trusted keys
#trusted-keys:
# Supported algorithms. Subset of "aes128", "aes256", "chacha20", and
# "plain" where "plain" means unencrypted.
#algorithms:
# Device settings
device:
# Name of the virtual device. Any `%d` will be filled with a free number.
name: "vpncloud%d"
# Set the type of network. There are two options: **tap** devices process
# Ethernet frames **tun** devices process IP packets. [default: `tun`]
type: tun
# The path of the /dev/net/tun device. Only change if you need to.
#path: /dev/net/tun
# Whether to fix detected rp-filter problems
fix-rp-filter: false
# Set the type of network. There are two options: **tap** devices process
# Ethernet frames **tun** devices process IP packets. [default: `tap`]
#device_type: tap
# The mode of the VPN. The VPN can like a router, a switch or a hub. A **hub** # The mode of the VPN. The VPN can like a router, a switch or a hub. A **hub**
# will send all data always to all peers. A **switch** will learn addresses # will send all data always to all peers. A **switch** will learn addresses
@ -54,16 +72,24 @@
# unknown. A **router** will send data according to known subnets of the # unknown. A **router** will send data according to known subnets of the
# peers and ignore them otherwise. The **normal** mode is switch for tap # peers and ignore them otherwise. The **normal** mode is switch for tap
# devices and router for tun devices. [default: `normal`] # devices and router for tun devices. [default: `normal`]
#mode: normal mode: normal
# The local subnets to use. This parameter should be in the form # The local subnets to use. This parameter should be in the form
# `address/prefixlen` where address is an IPv4 address, an IPv6 address, or a # `address/prefixlen` where address is an IPv4 address, an IPv6 address, or a
# MAC address. The prefix length is the number of significant front bits that # MAC address. The prefix length is the number of significant front bits that
# distinguish the subnet from other subnets. Example: `10.1.1.0/24`. # distinguish the subnet from other subnets. Example: `10.1.1.0/24`.
# Note: Several entries can be separated by spaces. # Note: Several entries can be separated by spaces.
#subnets: #claims
# - 10.1.1.0/24 # - 10.1.1.0/24
# Whether to automatically claim the configured IP on tun devices
auto-claim: true
# An IP address to set on the device
#ip: ""
# A command to setup the network interface. The command will be run (as # A command to setup the network interface. The command will be run (as
# parameter to `sh -c`) when the device has been created to configure it. # parameter to `sh -c`) when the device has been created to configure it.
# The name of the allocated device will be available via the environment # The name of the allocated device will be available via the environment
@ -86,3 +112,29 @@
# when running in background. # when running in background.
#user: "" #user: ""
#group: "" #group: ""
# Beacon settings
beacon:
# File or command (prefix: "|") to use for storing beacons
#store: ""
# File or command (prefix: "|") to use for loading beacons
#load: ""
# How often to load and store beacons (in seconds)
interval: 3600
# Password to encrypt beacon data with
#password: ""
# Statsd settings
#statsd:
# Statsd server name:port
#server: ""
# Prefix to use for stats keys
#prefix: ""

View File

@ -582,6 +582,43 @@ statsd:
}) })
} }
#[test]
fn default_config_as_default() {
let mut default_config = Config {
device_type: Type::Dummy,
device_name: "".to_string(),
device_path: None,
fix_rp_filter: false,
ip: None,
ifup: None,
ifdown: None,
crypto: CryptoConfig::default(),
listen: "[::]:3210".parse::<SocketAddr>().unwrap(),
peers: vec![],
peer_timeout: 0,
keepalive: None,
beacon_store: None,
beacon_load: None,
beacon_interval: 0,
beacon_password: None,
mode: Mode::Hub,
switch_timeout: 0,
claims: vec![],
auto_claim: true,
port_forwarding: true,
daemonize: false,
pid_file: None,
stats_file: None,
statsd_server: None,
statsd_prefix: None,
user: None,
group: None
};
let default_config_file = serde_yaml::from_str::<ConfigFile>(include_str!("../assets/example.net.disabled")).unwrap();
default_config.merge_file(default_config_file);
assert_eq!(default_config, Config::default());
}
#[test] #[test]
fn config_merge() { fn config_merge() {
let mut config = Config::default(); let mut config = Config::default();