From c8192928dccb3a25bfb431744ddd8470a13f3c52 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 3 Mar 2021 05:06:20 +0000 Subject: [PATCH 01/20] Bump libc from 0.2.86 to 0.2.87 Bumps [libc](https://github.com/rust-lang/libc) from 0.2.86 to 0.2.87. - [Release notes](https://github.com/rust-lang/libc/releases) - [Commits](https://github.com/rust-lang/libc/compare/0.2.86...0.2.87) Signed-off-by: dependabot[bot] --- Cargo.lock | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 143119a..1ced6c1 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -502,9 +502,9 @@ checksum = "e2abad23fbc42b3700f2f279844dc832adb2b2eb069b2df918f455c4e18cc646" [[package]] name = "libc" -version = "0.2.86" +version = "0.2.87" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b7282d924be3275cec7f6756ff4121987bc6481325397dde6ba3e7802b1a8b1c" +checksum = "265d751d31d6780a3f956bb5b8022feba2d94eeee5a84ba64f4212eedca42213" [[package]] name = "linked-hash-map" From 2b79496e2c00b909068fd4bbe5c28bfa1878147f Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 8 Mar 2021 05:29:07 +0000 Subject: [PATCH 02/20] Bump libc from 0.2.87 to 0.2.88 Bumps [libc](https://github.com/rust-lang/libc) from 0.2.87 to 0.2.88. - [Release notes](https://github.com/rust-lang/libc/releases) - [Commits](https://github.com/rust-lang/libc/compare/0.2.87...0.2.88) Signed-off-by: dependabot[bot] --- Cargo.lock | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 1ced6c1..df7204b 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -502,9 +502,9 @@ checksum = "e2abad23fbc42b3700f2f279844dc832adb2b2eb069b2df918f455c4e18cc646" [[package]] name = "libc" -version = "0.2.87" +version = "0.2.88" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "265d751d31d6780a3f956bb5b8022feba2d94eeee5a84ba64f4212eedca42213" +checksum = "03b07a082330a35e43f63177cc01689da34fbffa0105e1246cf0311472cac73a" [[package]] name = "linked-hash-map" From a427ce70bd9971216f9d55fc1b7ca81693eaf430 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 8 Mar 2021 05:29:10 +0000 Subject: [PATCH 03/20] Bump serde from 1.0.123 to 1.0.124 Bumps [serde](https://github.com/serde-rs/serde) from 1.0.123 to 1.0.124. - [Release notes](https://github.com/serde-rs/serde/releases) - [Commits](https://github.com/serde-rs/serde/compare/v1.0.123...v1.0.124) Signed-off-by: dependabot[bot] --- Cargo.lock | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 1ced6c1..181ad07 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -894,9 +894,9 @@ checksum = "388a1df253eca08550bef6c72392cfe7c30914bf41df5269b68cbd6ff8f570a3" [[package]] name = "serde" -version = "1.0.123" +version = "1.0.124" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "92d5161132722baa40d802cc70b15262b98258453e85e5d1d365c757c73869ae" +checksum = "bd761ff957cb2a45fbb9ab3da6512de9de55872866160b23c25f1a841e99d29f" dependencies = [ "serde_derive", ] @@ -913,9 +913,9 @@ dependencies = [ [[package]] name = "serde_derive" -version = "1.0.123" +version = "1.0.124" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9391c295d64fc0abb2c556bad848f33cb8296276b1ad2677d1ae1ace4f258f31" +checksum = "1800f7693e94e186f5e25a28291ae1570da908aff7d97a095dec1e56ff99069b" dependencies = [ "proc-macro2", "quote", From e6432176716eb2421ba3cd33b11fc400160c2001 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Thu, 11 Mar 2021 05:17:50 +0000 Subject: [PATCH 04/20] Bump byteorder from 1.4.2 to 1.4.3 Bumps [byteorder](https://github.com/BurntSushi/byteorder) from 1.4.2 to 1.4.3. - [Release notes](https://github.com/BurntSushi/byteorder/releases) - [Changelog](https://github.com/BurntSushi/byteorder/blob/master/CHANGELOG.md) - [Commits](https://github.com/BurntSushi/byteorder/compare/1.4.2...1.4.3) Signed-off-by: dependabot[bot] --- Cargo.lock | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 273ceaf..a9411d4 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -91,9 +91,9 @@ checksum = "63396b8a4b9de3f4fdfb320ab6080762242f66a8ef174c49d8e19b674db4cdbe" [[package]] name = "byteorder" -version = "1.4.2" +version = "1.4.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ae44d1a3d5a19df61dd0c8beb138458ac2a53a7ac09eba97d55592540004306b" +checksum = "14c189c53d098945499cdfa7ecc63567cf3886b3332b312a5b4585d8d3a6a610" [[package]] name = "bytes" From 186f3fc2153d70844199fcb3d88e7aa5685c7707 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 15 Mar 2021 05:27:35 +0000 Subject: [PATCH 05/20] Bump dialoguer from 0.7.1 to 0.8.0 Bumps [dialoguer](https://github.com/mitsuhiko/dialoguer) from 0.7.1 to 0.8.0. - [Release notes](https://github.com/mitsuhiko/dialoguer/releases) - [Changelog](https://github.com/mitsuhiko/dialoguer/blob/master/CHANGELOG.md) - [Commits](https://github.com/mitsuhiko/dialoguer/compare/0.7.1...0.8.0) Signed-off-by: dependabot[bot] --- Cargo.lock | 13 ++++++------- Cargo.toml | 2 +- 2 files changed, 7 insertions(+), 8 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 273ceaf..1a2441a 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -145,9 +145,9 @@ dependencies = [ [[package]] name = "console" -version = "0.13.0" +version = "0.14.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a50aab2529019abfabfa93f1e6c41ef392f91fbf179b347a7e96abb524884a08" +checksum = "3993e6445baa160675931ec041a5e03ca84b9c6e32a056150d3aa2bdda0a1f45" dependencies = [ "encode_unicode", "lazy_static", @@ -156,7 +156,6 @@ dependencies = [ "terminal_size", "unicode-width", "winapi", - "winapi-util", ] [[package]] @@ -288,9 +287,9 @@ dependencies = [ [[package]] name = "dialoguer" -version = "0.7.1" +version = "0.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "70f807b2943dc90f9747497d9d65d7e92472149be0b88bf4ce1201b4ac979c26" +checksum = "c9dd058f8b65922819fabb4a41e7d1964e56344042c26efbccd465202c23fa0c" dependencies = [ "console", "lazy_static", @@ -1478,6 +1477,6 @@ dependencies = [ [[package]] name = "zeroize" -version = "0.9.3" +version = "1.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "45af6a010d13e4cf5b54c94ba5a2b2eba5596b9e46bf5875612d332a1f2b3f86" +checksum = "81a974bcdd357f0dca4d41677db03436324d45a4c9ed2d0b873a5a360ce41c36" diff --git a/Cargo.toml b/Cargo.toml index 88e29dc..6077406 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -32,7 +32,7 @@ privdrop = "0.5" byteorder = "1.4" thiserror = "1.0" smallvec = "1.6" -dialoguer = { version = "0.7", optional = true } +dialoguer = { version = "0.8", optional = true } tungstenite = { version = "0.13", optional = true, default-features = false } url = { version = "2.2", optional = true } igd = { version = "0.12", optional = true } From 5053bfa559bb4d2379b22d73a5445ddb48f44b87 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 23 Mar 2021 05:16:30 +0000 Subject: [PATCH 06/20] Bump libc from 0.2.88 to 0.2.91 Bumps [libc](https://github.com/rust-lang/libc) from 0.2.88 to 0.2.91. - [Release notes](https://github.com/rust-lang/libc/releases) - [Commits](https://github.com/rust-lang/libc/compare/0.2.88...0.2.91) Signed-off-by: dependabot[bot] --- Cargo.lock | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 7216fcd..ed4d63a 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -501,9 +501,9 @@ checksum = "e2abad23fbc42b3700f2f279844dc832adb2b2eb069b2df918f455c4e18cc646" [[package]] name = "libc" -version = "0.2.88" +version = "0.2.91" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "03b07a082330a35e43f63177cc01689da34fbffa0105e1246cf0311472cac73a" +checksum = "8916b1f6ca17130ec6568feccee27c156ad12037880833a3b842a823236502e7" [[package]] name = "linked-hash-map" From 8675fdee8768e98f8c24a89b27a622e73707e4f2 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 23 Mar 2021 05:16:35 +0000 Subject: [PATCH 07/20] Bump serde from 1.0.124 to 1.0.125 Bumps [serde](https://github.com/serde-rs/serde) from 1.0.124 to 1.0.125. - [Release notes](https://github.com/serde-rs/serde/releases) - [Commits](https://github.com/serde-rs/serde/compare/v1.0.124...v1.0.125) Signed-off-by: dependabot[bot] --- Cargo.lock | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 7216fcd..f34ba46 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -893,9 +893,9 @@ checksum = "388a1df253eca08550bef6c72392cfe7c30914bf41df5269b68cbd6ff8f570a3" [[package]] name = "serde" -version = "1.0.124" +version = "1.0.125" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bd761ff957cb2a45fbb9ab3da6512de9de55872866160b23c25f1a841e99d29f" +checksum = "558dc50e1a5a5fa7112ca2ce4effcb321b0300c0d4ccf0776a9f60cd89031171" dependencies = [ "serde_derive", ] @@ -912,9 +912,9 @@ dependencies = [ [[package]] name = "serde_derive" -version = "1.0.124" +version = "1.0.125" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1800f7693e94e186f5e25a28291ae1570da908aff7d97a095dec1e56ff99069b" +checksum = "b093b7a2bb58203b5da3056c05b4ec1fed827dcfdb37347a8841695263b3d06d" dependencies = [ "proc-macro2", "quote", From d7d06941e55d7cf7ae68998c65a6680edcb7cc0d Mon Sep 17 00:00:00 2001 From: Dennis Schwerdel Date: Fri, 26 Mar 2021 08:16:23 +0100 Subject: [PATCH 08/20] Test for broken time crate --- .devcontainer/Dockerfile | 2 + .github/workflows/check.yml | 3 + Cargo.lock | 122 +++++++++++++----------------------- src/tests/mod.rs | 7 ++- 4 files changed, 53 insertions(+), 81 deletions(-) diff --git a/.devcontainer/Dockerfile b/.devcontainer/Dockerfile index aaee7ac..b810945 100644 --- a/.devcontainer/Dockerfile +++ b/.devcontainer/Dockerfile @@ -4,3 +4,5 @@ FROM mcr.microsoft.com/vscode/devcontainers/rust:0-1 RUN apt-get update && export DEBIAN_FRONTEND=noninteractive \ && apt-get -y install --no-install-recommends asciidoctor + +RUN rm /etc/localtime && ln -s /usr/share/zoneinfo/Europe/Berlin /etc/localtime \ No newline at end of file diff --git a/.github/workflows/check.yml b/.github/workflows/check.yml index 0a6dd85..6f12ff8 100644 --- a/.github/workflows/check.yml +++ b/.github/workflows/check.yml @@ -18,6 +18,9 @@ jobs: name: Test Suite runs-on: ubuntu-latest steps: + - uses: actions/set-timezone-action@v1.1 + with: + timezoneLinux: Europe/Berlin - uses: actions/checkout@v2 - uses: actions-rs/toolchain@v1 with: diff --git a/Cargo.lock b/Cargo.lock index 54524c3..735c2b9 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -229,35 +229,33 @@ dependencies = [ [[package]] name = "crossbeam-epoch" -version = "0.9.2" +version = "0.9.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d60ab4a8dba064f2fbb5aa270c28da5cf4bbd0e72dae1140a6b0353a779dbe00" +checksum = "2584f639eb95fea8c798496315b297cf81b9b58b6d30ab066a75455333cf4b12" dependencies = [ "cfg-if 1.0.0", "crossbeam-utils", "lazy_static", - "loom", "memoffset", "scopeguard", ] [[package]] name = "crossbeam-utils" -version = "0.8.2" +version = "0.8.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bae8f328835f8f5a6ceb6a7842a7f2d0c03692adb5c889347235d59194731fe3" +checksum = "e7e9d99fa91428effe99c5c6d4634cdeba32b8cf784fc428a2a687f61a952c49" dependencies = [ "autocfg", "cfg-if 1.0.0", "lazy_static", - "loom", ] [[package]] name = "csv" -version = "1.1.5" +version = "1.1.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f9d58633299b24b515ac72a3f869f8b91306a3cec616a602843a383acd6f9e97" +checksum = "22813a6dc45b335f9bade10bf7271dc477e81113e89eb251a0bc2a8a81c536e1" dependencies = [ "bstr", "csv-core", @@ -346,19 +344,6 @@ dependencies = [ "percent-encoding", ] -[[package]] -name = "generator" -version = "0.6.24" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a9fed24fd1e18827652b4d55652899a1e9da8e54d91624dc3437a5bc3a9f9a9c" -dependencies = [ - "cc", - "libc", - "log", - "rustversion", - "winapi", -] - [[package]] name = "generic-array" version = "0.14.4" @@ -486,9 +471,9 @@ checksum = "dd25036021b0de88a0aff6b850051563c6516d0bf53f8638938edbb9de732736" [[package]] name = "js-sys" -version = "0.3.47" +version = "0.3.49" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5cfb73131c35423a367daf8cbd24100af0d077668c8c2943f0e7dd775fef0f65" +checksum = "dc15e39392125075f60c95ba416f5381ff6c3a948ff02ab12464715adf56c821" dependencies = [ "wasm-bindgen", ] @@ -520,17 +505,6 @@ dependencies = [ "cfg-if 1.0.0", ] -[[package]] -name = "loom" -version = "0.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d44c73b4636e497b4917eb21c33539efa3816741a2d3ff26c6316f1b529481a4" -dependencies = [ - "cfg-if 1.0.0", - "generator", - "scoped-tls", -] - [[package]] name = "matches" version = "0.1.8" @@ -598,9 +572,9 @@ dependencies = [ [[package]] name = "once_cell" -version = "1.6.0" +version = "1.7.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4ad167a2f54e832b82dbe003a046280dceffe5227b5f79e08e363a29638cfddd" +checksum = "af8b08b04175473088b46763e51ee54da5f9a164bc162f615b91bc179dbf15a3" [[package]] name = "oorandom" @@ -788,9 +762,9 @@ dependencies = [ [[package]] name = "regex" -version = "1.4.3" +version = "1.4.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d9251239e129e16308e70d853559389de218ac275b515068abc96829d05b948a" +checksum = "957056ecddbeba1b26965114e191d2e8589ce74db242b6ea25fc4062427a5c19" dependencies = [ "regex-syntax", ] @@ -806,9 +780,9 @@ dependencies = [ [[package]] name = "regex-syntax" -version = "0.6.22" +version = "0.6.23" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b5eb417147ba9860a96cfe72a0b93bf88fee1744b5636ec99ab20c1aa9376581" +checksum = "24d5f089152e60f62d28b835fbff2cd2e8dc0baf1ac13343bef92ab7eed84548" [[package]] name = "remove_dir_all" @@ -843,12 +817,6 @@ dependencies = [ "semver", ] -[[package]] -name = "rustversion" -version = "1.0.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cb5d2a036dc6d2d8fd16fde3498b04306e29bd193bf306a57427019b823d5acd" - [[package]] name = "ryu" version = "1.0.5" @@ -864,12 +832,6 @@ dependencies = [ "winapi-util", ] -[[package]] -name = "scoped-tls" -version = "1.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ea6a9290e3c9cf0f18145ef7ffa62d68ee0bf5fcd651017e586dc7fd5da448c2" - [[package]] name = "scopeguard" version = "1.1.0" @@ -923,9 +885,9 @@ dependencies = [ [[package]] name = "serde_json" -version = "1.0.62" +version = "1.0.64" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ea1c6153794552ea7cf7cf63b1231a25de00ec90db326ba6264440fa08e31486" +checksum = "799e97dc9fdae36a5c8b8f2cae9ce2ee9fdce2058c57a93e6099d919fd982f79" dependencies = [ "itoa", "ryu", @@ -987,9 +949,9 @@ checksum = "6e63cff320ae2c57904679ba7cb63280a3dc4613885beafb148ee7bf9aa9042d" [[package]] name = "standback" -version = "0.2.15" +version = "0.2.17" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a2beb4d1860a61f571530b3f855a1b538d0200f7871c63331ecd6f17b1f014f8" +checksum = "e113fb6f3de07a243d434a56ec6f186dfd51cb08448239fe7bcae73f87ff28ff" dependencies = [ "version_check", ] @@ -1075,9 +1037,9 @@ dependencies = [ [[package]] name = "syn" -version = "1.0.60" +version = "1.0.64" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c700597eca8a5a762beb35753ef6b94df201c81cca676604f547495a0d7f0081" +checksum = "3fd9d1e9976102a03c542daa2eff1b43f9d72306342f3f8b3ed5fb8908195d6f" dependencies = [ "proc-macro2", "quote", @@ -1177,9 +1139,9 @@ dependencies = [ [[package]] name = "tinytemplate" -version = "1.2.0" +version = "1.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a2ada8616fad06a2d0c455adc530de4ef57605a8120cc65da9653e0e9623ca74" +checksum = "be4d6b5f19ff7664e8c98d03e2139cb510db9b0a60b55f8e8709b689d939b6bc" dependencies = [ "serde", "serde_json", @@ -1222,9 +1184,9 @@ dependencies = [ [[package]] name = "typenum" -version = "1.12.0" +version = "1.13.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "373c8a200f9e67a0c95e62a4f52fbf80c23b4381c05a17845531982fa99e6b33" +checksum = "879f6906492a7cd215bfa4cf595b600146ccfac0c79bcbd1f3000162af5e8b06" [[package]] name = "unicode-bidi" @@ -1294,9 +1256,9 @@ checksum = "f1bddf1187be692e79c5ffeab891132dfb0f236ed36a43c7ed39f1165ee20191" [[package]] name = "version_check" -version = "0.9.2" +version = "0.9.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b5a972e5669d67ba988ce3dc826706fb0a8b01471c088cb0b6110b805cc36aed" +checksum = "5fecdca9a5291cc2b8dcf7dc02453fee791a280f3743cb0905f8822ae463b3fe" [[package]] name = "void" @@ -1335,9 +1297,9 @@ dependencies = [ [[package]] name = "walkdir" -version = "2.3.1" +version = "2.3.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "777182bc735b6424e1a57516d35ed72cb8019d85c8c9bf536dccb3445c1a2f7d" +checksum = "808cf2735cd4b6866113f648b791c6adc5714537bc222d9347bb203386ffda56" dependencies = [ "same-file", "winapi", @@ -1352,9 +1314,9 @@ checksum = "fd6fbd9a79829dd1ad0cc20627bf1ed606756a7f77edff7b66b7064f9cb327c6" [[package]] name = "wasm-bindgen" -version = "0.2.70" +version = "0.2.72" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "55c0f7123de74f0dab9b7d00fd614e7b19349cd1e2f5252bbe9b1754b59433be" +checksum = "8fe8f61dba8e5d645a4d8132dc7a0a66861ed5e1045d2c0ed940fab33bac0fbe" dependencies = [ "cfg-if 1.0.0", "wasm-bindgen-macro", @@ -1362,9 +1324,9 @@ dependencies = [ [[package]] name = "wasm-bindgen-backend" -version = "0.2.70" +version = "0.2.72" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7bc45447f0d4573f3d65720f636bbcc3dd6ce920ed704670118650bcd47764c7" +checksum = "046ceba58ff062da072c7cb4ba5b22a37f00a302483f7e2a6cdc18fedbdc1fd3" dependencies = [ "bumpalo", "lazy_static", @@ -1377,9 +1339,9 @@ dependencies = [ [[package]] name = "wasm-bindgen-macro" -version = "0.2.70" +version = "0.2.72" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3b8853882eef39593ad4174dd26fc9865a64e84026d223f63bb2c42affcbba2c" +checksum = "0ef9aa01d36cda046f797c57959ff5f3c615c9cc63997a8d545831ec7976819b" dependencies = [ "quote", "wasm-bindgen-macro-support", @@ -1387,9 +1349,9 @@ dependencies = [ [[package]] name = "wasm-bindgen-macro-support" -version = "0.2.70" +version = "0.2.72" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4133b5e7f2a531fa413b3a1695e925038a05a71cf67e87dafa295cb645a01385" +checksum = "96eb45c1b2ee33545a813a92dbb53856418bf7eb54ab34f7f7ff1448a5b3735d" dependencies = [ "proc-macro2", "quote", @@ -1400,15 +1362,15 @@ dependencies = [ [[package]] name = "wasm-bindgen-shared" -version = "0.2.70" +version = "0.2.72" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dd4945e4943ae02d15c13962b38a5b1e81eadd4b71214eee75af64a4d6a4fd64" +checksum = "b7148f4696fb4960a346eaa60bbfb42a1ac4ebba21f750f75fc1375b098d5ffa" [[package]] name = "web-sys" -version = "0.3.47" +version = "0.3.49" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c40dc691fc48003eba817c38da7113c15698142da971298003cac3ef175680b3" +checksum = "59fe19d70f5dacc03f6e46777213facae5ac3801575d56ca6cbd4c93dcd12310" dependencies = [ "js-sys", "wasm-bindgen", @@ -1416,9 +1378,9 @@ dependencies = [ [[package]] name = "wildmatch" -version = "1.0.13" +version = "1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d2399814fda0d6999a6bfe9b5c7660d836334deb162a09db8b73d5b38fd8c40a" +checksum = "7f44b95f62d34113cf558c93511ac93027e03e9c29a60dd0fd70e6e025c7270a" [[package]] name = "winapi" diff --git a/src/tests/mod.rs b/src/tests/mod.rs index 16e2f86..67dd149 100644 --- a/src/tests/mod.rs +++ b/src/tests/mod.rs @@ -5,4 +5,9 @@ mod common; mod nat; mod payload; -mod peers; \ No newline at end of file +mod peers; + +#[test] +fn test_time_format() { + assert!(time::OffsetDateTime::try_now_local().is_ok()); +} From 07d65df6ee538aa409aef86d0b985c6437641550 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 31 Mar 2021 05:05:49 +0000 Subject: [PATCH 09/20] Bump libc from 0.2.91 to 0.2.92 Bumps [libc](https://github.com/rust-lang/libc) from 0.2.91 to 0.2.92. - [Release notes](https://github.com/rust-lang/libc/releases) - [Commits](https://github.com/rust-lang/libc/compare/0.2.91...0.2.92) Signed-off-by: dependabot[bot] --- Cargo.lock | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 54524c3..94f6117 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -501,9 +501,9 @@ checksum = "e2abad23fbc42b3700f2f279844dc832adb2b2eb069b2df918f455c4e18cc646" [[package]] name = "libc" -version = "0.2.91" +version = "0.2.92" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8916b1f6ca17130ec6568feccee27c156ad12037880833a3b842a823236502e7" +checksum = "56d855069fafbb9b344c0f962150cd2c1187975cb1c22c1522c240d8c4986714" [[package]] name = "linked-hash-map" From 151ca445c33574ff4579a93c36bdc71218603641 Mon Sep 17 00:00:00 2001 From: Martin Hauke Date: Sun, 4 Apr 2021 22:02:39 +0200 Subject: [PATCH 10/20] systemd: add file vpncloud.target Add file vpncloud.target, which allows you to stop or restart all instances. --- assets/vpncloud.target | 2 ++ assets/vpncloud@.service | 1 + 2 files changed, 3 insertions(+) create mode 100644 assets/vpncloud.target diff --git a/assets/vpncloud.target b/assets/vpncloud.target new file mode 100644 index 0000000..1313447 --- /dev/null +++ b/assets/vpncloud.target @@ -0,0 +1,2 @@ +[Unit] +Description=VpnCloud target allowing to start/stop all vpncloud@.service instances at once diff --git a/assets/vpncloud@.service b/assets/vpncloud@.service index 7067953..5797232 100644 --- a/assets/vpncloud@.service +++ b/assets/vpncloud@.service @@ -2,6 +2,7 @@ Description=VpnCloud network '%I' After=network-online.target Wants=network-online.target +PartOf=vpncloud.target Documentation=man:vpncloud(1) [Service] From 6d4591f6854851d018d2299e99ca15e6b8cd2297 Mon Sep 17 00:00:00 2001 From: Dennis Schwerdel Date: Mon, 5 Apr 2021 16:55:09 +0000 Subject: [PATCH 11/20] Install .target file --- .rpm/vpncloud.spec | 1 + CHANGELOG.md | 1 + Cargo.toml | 1 + src/installer.rs | 6 ++++++ 4 files changed, 9 insertions(+) diff --git a/.rpm/vpncloud.spec b/.rpm/vpncloud.spec index 2dbdc77..22ead41 100644 --- a/.rpm/vpncloud.spec +++ b/.rpm/vpncloud.spec @@ -28,6 +28,7 @@ mkdir -p %{buildroot}/lib/systemd/system mkdir -p %{buildroot}/usr/share/man/man1 cp %{buildroot}/../../../../../assets/example.net.disabled %{buildroot}/etc/vpncloud/example.net.disabled cp %{buildroot}/../../../../../assets/vpncloud@.service %{buildroot}/lib/systemd/system/vpncloud@.service +cp %{buildroot}/../../../../../assets/vpncloud.target %{buildroot}/lib/systemd/system/vpncloud.target cp %{buildroot}/../../../../../assets/vpncloud-wsproxy.service %{buildroot}/lib/systemd/system/vpncloud-wsproxy.service cp %{buildroot}/../../../../../target/vpncloud.1.gz %{buildroot}/usr/share/man/man1/vpncloud.1.gz cp -a * %{buildroot} diff --git a/CHANGELOG.md b/CHANGELOG.md index 4e63562..5dd3174 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -4,6 +4,7 @@ This project follows [semantic versioning](http://semver.org). ### UNRELEASED +- [added] Service target file (thanks to mnhauke) - [added] Added interactive configuration wizard - [added] Support for (un-)installation - [added] Building static binaries diff --git a/Cargo.toml b/Cargo.toml index 6077406..9ff0d23 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -83,6 +83,7 @@ assets = [ ["target/release/vpncloud", "/usr/bin/vpncloud", "755"], ["assets/example.net.disabled", "/etc/vpncloud/example.net.disabled", "600"], ["assets/vpncloud@.service", "/lib/systemd/system/vpncloud@.service", "644"], + ["assets/vpncloud.target", "/lib/systemd/system/vpncloud.target", "644"], ["assets/vpncloud-wsproxy.service", "/lib/systemd/system/vpncloud-wsproxy.service", "644"], ["target/vpncloud.1.gz", "/usr/share/man/man1/vpncloud.1.gz", "644"] ] diff --git a/src/installer.rs b/src/installer.rs index 184d025..97b3a9c 100644 --- a/src/installer.rs +++ b/src/installer.rs @@ -9,6 +9,7 @@ use std::{ const MANPAGE: &[u8] = include_bytes!("../target/vpncloud.1.gz"); const SERVICE_FILE: &[u8] = include_bytes!("../assets/vpncloud@.service"); +const TARGET_FILE: &[u8] = include_bytes!("../assets/vpncloud.target"); const WS_PROXY_SERVICE_FILE: &[u8] = include_bytes!("../assets/vpncloud-wsproxy.service"); const EXAMPLE_CONFIG: &[u8] = include_bytes!("../assets/example.net.disabled"); @@ -36,6 +37,9 @@ pub fn install() -> Result<(), Error> { File::create("/lib/systemd/system/vpncloud@.service") .and_then(|mut f| f.write_all(SERVICE_FILE)) .map_err(|e| Error::FileIo("Failed to create service file", e))?; + File::create("/lib/systemd/system/vpncloud.target") + .and_then(|mut f| f.write_all(TARGET_FILE)) + .map_err(|e| Error::FileIo("Failed to create service target file", e))?; File::create("/lib/systemd/system/vpncloud-wsproxy.service") .and_then(|mut f| f.write_all(WS_PROXY_SERVICE_FILE)) .map_err(|e| Error::FileIo("Failed to create wsporxy service file", e))?; @@ -49,6 +53,8 @@ pub fn uninstall() -> Result<(), Error> { fs::remove_file("/usr/share/man/man1/vpncloud.1.gz").map_err(|e| Error::FileIo("Failed to remove manpage", e))?; fs::remove_file("/lib/systemd/system/vpncloud@.service") .map_err(|e| Error::FileIo("Failed to remove service file", e))?; + fs::remove_file("/lib/systemd/system/vpncloud.target") + .map_err(|e| Error::FileIo("Failed to remove service target file", e))?; fs::remove_file("/lib/systemd/system/vpncloud-wsproxy.service") .map_err(|e| Error::FileIo("Failed to remove wsproxy service file", e))?; fs::remove_file("/usr/bin/vpncloud").map_err(|e| Error::FileIo("Failed to remove binary", e))?; From 3b96380b42605ca4f88262efbf16226a7e59fa56 Mon Sep 17 00:00:00 2001 From: Dennis Schwerdel Date: Mon, 5 Apr 2021 17:01:40 +0000 Subject: [PATCH 12/20] Update deps --- .devcontainer/Dockerfile | 4 ++- .github/workflows/check.yml | 2 +- Cargo.lock | 52 ++++++++++++++++++------------------- 3 files changed, 30 insertions(+), 28 deletions(-) diff --git a/.devcontainer/Dockerfile b/.devcontainer/Dockerfile index b810945..0d7c1b2 100644 --- a/.devcontainer/Dockerfile +++ b/.devcontainer/Dockerfile @@ -5,4 +5,6 @@ FROM mcr.microsoft.com/vscode/devcontainers/rust:0-1 RUN apt-get update && export DEBIAN_FRONTEND=noninteractive \ && apt-get -y install --no-install-recommends asciidoctor -RUN rm /etc/localtime && ln -s /usr/share/zoneinfo/Europe/Berlin /etc/localtime \ No newline at end of file +RUN rm /etc/localtime && ln -s /usr/share/zoneinfo/Europe/Berlin /etc/localtime + +RUN cargo install cargo-outdated \ No newline at end of file diff --git a/.github/workflows/check.yml b/.github/workflows/check.yml index 6f12ff8..7796183 100644 --- a/.github/workflows/check.yml +++ b/.github/workflows/check.yml @@ -18,7 +18,7 @@ jobs: name: Test Suite runs-on: ubuntu-latest steps: - - uses: actions/set-timezone-action@v1.1 + - uses: actions/set-timezone-action@v1.0 with: timezoneLinux: Europe/Berlin - uses: actions/checkout@v2 diff --git a/Cargo.lock b/Cargo.lock index b1c86ef..886f628 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -160,9 +160,9 @@ dependencies = [ [[package]] name = "const_fn" -version = "0.4.5" +version = "0.4.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "28b9d6de7f49e22cf97ad17fc4036ece69300032f45f78f30b4a4482cdc3f4a6" +checksum = "076a6803b0dacd6a88cfe64deba628b01533ff5ef265687e6938280c1afd0a28" [[package]] name = "cpuid-bool" @@ -312,9 +312,9 @@ checksum = "212d0f5754cb6769937f4501cc0e67f4f4483c8d2c3e1e922ee9edbe4ab4c7c0" [[package]] name = "dtoa" -version = "0.4.7" +version = "0.4.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "88d7ed2934d741c6b37e33e3832298e8850b53fd2d2bea03873375596c7cea4e" +checksum = "56899898ce76aaf4a0f24d914c97ea6ed976d42fec6ad33fcbb0a1103e07b2b0" [[package]] name = "either" @@ -471,9 +471,9 @@ checksum = "dd25036021b0de88a0aff6b850051563c6516d0bf53f8638938edbb9de732736" [[package]] name = "js-sys" -version = "0.3.49" +version = "0.3.50" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dc15e39392125075f60c95ba416f5381ff6c3a948ff02ab12464715adf56c821" +checksum = "2d99f9e3e84b8f67f846ef5b4cbbc3b1c29f6c759fcbce6f01aa0e73d932a24c" dependencies = [ "wasm-bindgen", ] @@ -519,9 +519,9 @@ checksum = "0ee1c47aaa256ecabcaea351eae4a9b01ef39ed810004e298d2511ed284b1525" [[package]] name = "memoffset" -version = "0.6.1" +version = "0.6.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "157b4208e3059a8f9e78d559edc658e13df41410cb3ae03979c83130067fdd87" +checksum = "f83fb6581e8ed1f85fd45c116db8405483899489e38406156c25eb743554361d" dependencies = [ "autocfg", ] @@ -670,9 +670,9 @@ checksum = "dbf0c48bc1d91375ae5c3cd81e3722dff1abcf81a30960240640d223f59fe0e5" [[package]] name = "proc-macro2" -version = "1.0.24" +version = "1.0.26" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1e0704ee1a7e00d7bb417d0770ea303c1bccbabf0ef1667dae92b5967f5f8a71" +checksum = "a152013215dca273577e18d2bf00fa862b89b24169fb78c4c95aeb07992c9cec" dependencies = [ "unicode-xid", ] @@ -1037,9 +1037,9 @@ dependencies = [ [[package]] name = "syn" -version = "1.0.64" +version = "1.0.68" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3fd9d1e9976102a03c542daa2eff1b43f9d72306342f3f8b3ed5fb8908195d6f" +checksum = "3ce15dd3ed8aa2f8eeac4716d6ef5ab58b6b9256db41d7e1a0224c2788e8fd87" dependencies = [ "proc-macro2", "quote", @@ -1149,9 +1149,9 @@ dependencies = [ [[package]] name = "tinyvec" -version = "1.1.1" +version = "1.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "317cca572a0e89c3ce0ca1f1bdc9369547fe318a683418e42ac8f59d14701023" +checksum = "5b5220f05bb7de7f3f53c7c065e1199b3172696fe2db9f9c4d8ad9b4ee74c342" dependencies = [ "tinyvec_macros", ] @@ -1314,9 +1314,9 @@ checksum = "fd6fbd9a79829dd1ad0cc20627bf1ed606756a7f77edff7b66b7064f9cb327c6" [[package]] name = "wasm-bindgen" -version = "0.2.72" +version = "0.2.73" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8fe8f61dba8e5d645a4d8132dc7a0a66861ed5e1045d2c0ed940fab33bac0fbe" +checksum = "83240549659d187488f91f33c0f8547cbfef0b2088bc470c116d1d260ef623d9" dependencies = [ "cfg-if 1.0.0", "wasm-bindgen-macro", @@ -1324,9 +1324,9 @@ dependencies = [ [[package]] name = "wasm-bindgen-backend" -version = "0.2.72" +version = "0.2.73" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "046ceba58ff062da072c7cb4ba5b22a37f00a302483f7e2a6cdc18fedbdc1fd3" +checksum = "ae70622411ca953215ca6d06d3ebeb1e915f0f6613e3b495122878d7ebec7dae" dependencies = [ "bumpalo", "lazy_static", @@ -1339,9 +1339,9 @@ dependencies = [ [[package]] name = "wasm-bindgen-macro" -version = "0.2.72" +version = "0.2.73" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0ef9aa01d36cda046f797c57959ff5f3c615c9cc63997a8d545831ec7976819b" +checksum = "3e734d91443f177bfdb41969de821e15c516931c3c3db3d318fa1b68975d0f6f" dependencies = [ "quote", "wasm-bindgen-macro-support", @@ -1349,9 +1349,9 @@ dependencies = [ [[package]] name = "wasm-bindgen-macro-support" -version = "0.2.72" +version = "0.2.73" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "96eb45c1b2ee33545a813a92dbb53856418bf7eb54ab34f7f7ff1448a5b3735d" +checksum = "d53739ff08c8a68b0fdbcd54c372b8ab800b1449ab3c9d706503bc7dd1621b2c" dependencies = [ "proc-macro2", "quote", @@ -1362,15 +1362,15 @@ dependencies = [ [[package]] name = "wasm-bindgen-shared" -version = "0.2.72" +version = "0.2.73" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b7148f4696fb4960a346eaa60bbfb42a1ac4ebba21f750f75fc1375b098d5ffa" +checksum = "d9a543ae66aa233d14bb765ed9af4a33e81b8b58d1584cf1b47ff8cd0b9e4489" [[package]] name = "web-sys" -version = "0.3.49" +version = "0.3.50" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "59fe19d70f5dacc03f6e46777213facae5ac3801575d56ca6cbd4c93dcd12310" +checksum = "a905d57e488fec8861446d3393670fb50d27a262344013181c2cdf9fff5481be" dependencies = [ "js-sys", "wasm-bindgen", From 97e168c8560bcaff1efaa7993995757b054813a9 Mon Sep 17 00:00:00 2001 From: Dennis Schwerdel Date: Mon, 5 Apr 2021 17:06:19 +0000 Subject: [PATCH 13/20] Fix check action --- .devcontainer/Dockerfile | 2 +- .github/workflows/check.yml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/.devcontainer/Dockerfile b/.devcontainer/Dockerfile index 0d7c1b2..3898e26 100644 --- a/.devcontainer/Dockerfile +++ b/.devcontainer/Dockerfile @@ -7,4 +7,4 @@ RUN apt-get update && export DEBIAN_FRONTEND=noninteractive \ RUN rm /etc/localtime && ln -s /usr/share/zoneinfo/Europe/Berlin /etc/localtime -RUN cargo install cargo-outdated \ No newline at end of file +RUN cargo install cargo-outdated cargo-cache \ No newline at end of file diff --git a/.github/workflows/check.yml b/.github/workflows/check.yml index 7796183..d01adc6 100644 --- a/.github/workflows/check.yml +++ b/.github/workflows/check.yml @@ -18,7 +18,7 @@ jobs: name: Test Suite runs-on: ubuntu-latest steps: - - uses: actions/set-timezone-action@v1.0 + - uses: szenius/set-timezone@v1.0 with: timezoneLinux: Europe/Berlin - uses: actions/checkout@v2 From ff75845dfbe23a044a43b3c6f7301b3ea928eaa2 Mon Sep 17 00:00:00 2001 From: Dennis Schwerdel Date: Mon, 5 Apr 2021 22:50:35 +0200 Subject: [PATCH 14/20] Fix rpm build --- .rpm/vpncloud.spec | 1 + 1 file changed, 1 insertion(+) diff --git a/.rpm/vpncloud.spec b/.rpm/vpncloud.spec index 22ead41..b09c36f 100644 --- a/.rpm/vpncloud.spec +++ b/.rpm/vpncloud.spec @@ -41,6 +41,7 @@ rm -rf %{buildroot} /etc/vpncloud/example.net.disabled /usr/bin/vpncloud /lib/systemd/system/vpncloud@.service +/lib/systemd/system/vpncloud.target /lib/systemd/system/vpncloud-wsproxy.service /usr/share/man/man1/vpncloud.1.gz From 665b190257a37f482be922c4958901d9620ac677 Mon Sep 17 00:00:00 2001 From: Dennis Schwerdel Date: Tue, 6 Apr 2021 00:18:33 +0200 Subject: [PATCH 15/20] Fix permissions --- src/installer.rs | 4 ++-- src/wizard.rs | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/src/installer.rs b/src/installer.rs index 97b3a9c..2b6a0d5 100644 --- a/src/installer.rs +++ b/src/installer.rs @@ -23,10 +23,10 @@ pub fn install() -> Result<(), Error> { env::current_exe() .and_then(|p| fs::copy(p, "/usr/bin/vpncloud")) .map_err(|e| Error::FileIo("Failed to copy binary", e))?; - fs::set_permissions("/usr/bin/vpncloud", fs::Permissions::from_mode(755)) + fs::set_permissions("/usr/bin/vpncloud", fs::Permissions::from_mode(0o755)) .map_err(|e| Error::FileIo("Failed to set permissions for binary", e))?; fs::create_dir_all("/etc/vpncloud").map_err(|e| Error::FileIo("Failed to create config folder", e))?; - fs::set_permissions("/etc/vpncloud", fs::Permissions::from_mode(700)) + fs::set_permissions("/etc/vpncloud", fs::Permissions::from_mode(0o700)) .map_err(|e| Error::FileIo("Failed to set permissions for config folder", e))?; File::create("/etc/vpncloud/example.net.disabled") .and_then(|mut f| f.write_all(EXAMPLE_CONFIG)) diff --git a/src/wizard.rs b/src/wizard.rs index c34c3d6..9d0dc3d 100644 --- a/src/wizard.rs +++ b/src/wizard.rs @@ -498,7 +498,7 @@ pub fn configure(name: Option) -> Result<(), io::Error> { let f = fs::File::create(&file)?; serde_yaml::to_writer(f, &config_file) .map_err(|_| io::Error::new(io::ErrorKind::InvalidData, "Failed to parse config file"))?; - fs::set_permissions(file, fs::Permissions::from_mode(600))?; + fs::set_permissions(file, fs::Permissions::from_mode(0o600))?; println!(); println!("Use the following commands to control your VPN:"); println!(" start the VPN: sudo service vpncloud@{0} start", name); From 4fb92a36a6c1309659bcdd050b745b97ab4b743a Mon Sep 17 00:00:00 2001 From: Dennis Schwerdel Date: Tue, 6 Apr 2021 12:28:31 +0200 Subject: [PATCH 16/20] Prepare for release --- .devcontainer/Dockerfile | 12 +- .whitesource | 12 -- CHANGELOG.md | 4 +- Cargo.lock | 2 +- Cargo.toml | 4 +- README.md | 2 +- assets/changelog.txt | 16 ++- contrib/asciinema-recorder/Dockerfile | 8 +- contrib/asciinema-recorder/config | 4 +- contrib/asciinema-recorder/record.sh | 6 - contrib/asciinema-recorder/recorder.sh | 11 ++ src/beacon.rs | 85 ++++-------- src/cloud.rs | 143 +++++++++---------- src/config.rs | 182 ++++++++++++------------- src/crypto/common.rs | 59 ++++---- src/crypto/core.rs | 25 ++-- src/crypto/init.rs | 172 +++++++++++------------ src/crypto/mod.rs | 2 +- src/crypto/rotate.rs | 20 ++- src/device.rs | 54 ++++---- src/error.rs | 3 +- src/installer.rs | 2 +- src/main.rs | 40 +++--- src/messages.rs | 26 ++-- src/net.rs | 16 +-- src/oldconfig.rs | 12 +- src/payload.rs | 16 +-- src/poll/epoll.rs | 8 +- src/poll/mod.rs | 3 +- src/port_forwarding.rs | 26 ++-- src/table.rs | 28 ++-- src/tests/common.rs | 11 +- src/traffic.rs | 10 +- src/types.rs | 35 ++--- src/wizard.rs | 117 ++++++++-------- src/wsproxy.rs | 13 +- 36 files changed, 561 insertions(+), 628 deletions(-) delete mode 100644 .whitesource delete mode 100755 contrib/asciinema-recorder/record.sh create mode 100755 contrib/asciinema-recorder/recorder.sh diff --git a/.devcontainer/Dockerfile b/.devcontainer/Dockerfile index 3898e26..db4918b 100644 --- a/.devcontainer/Dockerfile +++ b/.devcontainer/Dockerfile @@ -1,10 +1,18 @@ # See here for image contents: https://github.com/microsoft/vscode-dev-containers/tree/v0.148.1/containers/rust/.devcontainer/base.Dockerfile -FROM mcr.microsoft.com/vscode/devcontainers/rust:0-1 +FROM mcr.microsoft.com/vscode/devcontainers/rust:1 RUN apt-get update && export DEBIAN_FRONTEND=noninteractive \ && apt-get -y install --no-install-recommends asciidoctor RUN rm /etc/localtime && ln -s /usr/share/zoneinfo/Europe/Berlin /etc/localtime -RUN cargo install cargo-outdated cargo-cache \ No newline at end of file +RUN chown vscode: -R /usr/local/rustup /usr/local/cargo + +USER vscode + +RUN rustup default 1.51.0 \ + && rustup component add clippy rust-src rustfmt + +RUN cargo install cargo-outdated cargo-cache \ + && cargo cache -a \ No newline at end of file diff --git a/.whitesource b/.whitesource deleted file mode 100644 index 55b922e..0000000 --- a/.whitesource +++ /dev/null @@ -1,12 +0,0 @@ -{ - "scanSettings": { - "baseBranches": [] - }, - "checkRunSettings": { - "vulnerableCheckRunConclusionLevel": "failure", - "displayMode": "diff" - }, - "issueSettings": { - "minSeverityLevel": "LOW" - } -} \ No newline at end of file diff --git a/CHANGELOG.md b/CHANGELOG.md index 5dd3174..bfb16a9 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,7 +2,7 @@ This project follows [semantic versioning](http://semver.org). -### UNRELEASED +### v2.2.0 (2021-04-06) - [added] Service target file (thanks to mnhauke) - [added] Added interactive configuration wizard @@ -10,7 +10,7 @@ This project follows [semantic versioning](http://semver.org). - [added] Building static binaries - [added] Building i686 rpm - [changed] Restructured example config -- [changed] Changed Rust version to 1.50.0 +- [changed] Changed Rust version to 1.51.0 - [changed] Updated dependencies - [changed] Change permissions of /etc/vpncloud diff --git a/Cargo.lock b/Cargo.lock index 886f628..3ab0283 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -1268,7 +1268,7 @@ checksum = "6a02e4885ed3bc0f2de90ea6dd45ebcbb66dacffe03547fadbb0eeae2770887d" [[package]] name = "vpncloud" -version = "2.1.0" +version = "2.2.0" dependencies = [ "byteorder", "criterion", diff --git a/Cargo.toml b/Cargo.toml index 9ff0d23..af7d619 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "vpncloud" -version = "2.1.0" +version = "2.2.0" authors = ["Dennis Schwerdel "] build = "build.rs" license = "GPL-3.0" @@ -12,7 +12,7 @@ readme = "README.md" edition = "2018" [package.metadata] -toolchain = "1.50.0" +toolchain = "1.51.0" upx_version = "3.96" [dependencies] diff --git a/README.md b/README.md index 64c7417..9666a72 100644 --- a/README.md +++ b/README.md @@ -19,7 +19,7 @@ peers: - REMOTE_HOST:PORT ``` -For more information, please see the [Website](https://vpncloud.ddswd.de) or the [Forum](https://groups.google.com/forum/#!forum/vpncloud). +For more information, please see the [Website](https://vpncloud.ddswd.de) or the [Discussions group](https://github.com/dswd/vpncloud/discussions). ### Project Status diff --git a/assets/changelog.txt b/assets/changelog.txt index 1ebb0ac..e008230 100644 --- a/assets/changelog.txt +++ b/assets/changelog.txt @@ -1,3 +1,17 @@ +vpncloud (2.2.0) stable; urgency=medium + + * [added] Service target file (thanks to mnhauke) + * [added] Added interactive configuration wizard + * [added] Support for (un-)installation + * [added] Building static binaries + * [added] Building i686 rpm + * [changed] Restructured example config + * [changed] Changed Rust version to 1.51.0 + * [changed] Updated dependencies + * [changed] Change permissions of /etc/vpncloud + + -- Dennis Schwerdel Tue, 06 Apr 2021 12:27:00 +0200 + vpncloud (2.1.0) stable; urgency=medium * [added] Support for websocket proxy mode @@ -9,7 +23,7 @@ vpncloud (2.1.0) stable; urgency=medium * [fixed] Added missing peer address propagation * [fixed] Fixed problem with peer addresses without port - -- Dennis Schwerdel Sat, 06 Feb 2020 13:13:00 +0100 + -- Dennis Schwerdel Sat, 06 Feb 2021 13:13:00 +0100 vpncloud (2.0.1) stable; urgency=medium diff --git a/contrib/asciinema-recorder/Dockerfile b/contrib/asciinema-recorder/Dockerfile index 53c152d..d342c20 100644 --- a/contrib/asciinema-recorder/Dockerfile +++ b/contrib/asciinema-recorder/Dockerfile @@ -1,9 +1,13 @@ FROM ubuntu -RUN apt-get update && apt-get install -y asciinema +RUN apt-get update && apt-get install -y asciinema locales bash iputils-ping +RUN sed -i '/en_US.UTF-8/s/^# //g' /etc/locale.gen && locale-gen +ENV LANG en_US.UTF-8 +ENV LANGUAGE en_US:en +ENV LC_ALL en_US.UTF-8 RUN mkdir /root/.asciinema RUN mkdir /etc/vpncloud WORKDIR /data ADD config /root/.asciinema/config -RUN echo 'PS1="\[\e[00;34m\]\[\e[01;31m\]\u\[\e[00;01;34m\]@\[\e[00;34m\]node\[\e[01;31m\]:\[\e[00;34m\]\w\[\e[01;31m\]> \[\e[00m\]"' >> /root/.bashrc \ No newline at end of file +RUN echo 'PS1="\[\e[00;34m\]\[\e[01;31m\]\u\[\e[00;01;34m\]@\[\e[00;34m\]node\[\e[01;31m\]:\[\e[00;34m\]\w\[\e[01;31m\]> \[\e[00m\]"' >> /root/.bashrc diff --git a/contrib/asciinema-recorder/config b/contrib/asciinema-recorder/config index 5746cd5..6bfaf0c 100644 --- a/contrib/asciinema-recorder/config +++ b/contrib/asciinema-recorder/config @@ -1,3 +1,3 @@ [record] -command = /usr/bin/bash -l -idle_time_limit = 2.5 \ No newline at end of file +command = bash -l +idle_time_limit = 2.5 diff --git a/contrib/asciinema-recorder/record.sh b/contrib/asciinema-recorder/record.sh deleted file mode 100755 index c9d9da4..0000000 --- a/contrib/asciinema-recorder/record.sh +++ /dev/null @@ -1,6 +0,0 @@ -#!/bin/bash - -set -e - -docker build -t asciinema-recorder . -docker run -it --rm --network host -v $(pwd)/../../target/release/:/usr/local/bin/ -v $(pwd):/data asciinema-recorder asciinema "$@" \ No newline at end of file diff --git a/contrib/asciinema-recorder/recorder.sh b/contrib/asciinema-recorder/recorder.sh new file mode 100755 index 0000000..9b289b7 --- /dev/null +++ b/contrib/asciinema-recorder/recorder.sh @@ -0,0 +1,11 @@ +#!/bin/bash + +set -e + +cd $(dirname $0) + +docker build -t asciinema-recorder . +docker run -it --rm --network host \ + -v $(pwd):/data \ + -v /etc/hosts:/etc/hosts \ + asciinema-recorder diff --git a/src/beacon.rs b/src/beacon.rs index 8fdef16..abb5cec 100644 --- a/src/beacon.rs +++ b/src/beacon.rs @@ -15,16 +15,15 @@ use std::{ process::{Command, Stdio}, sync::{ atomic::{AtomicBool, Ordering}, - Arc, Mutex + Arc, Mutex, }, - thread + thread, }; use super::util::{from_base62, to_base62, Encoder, TimeSource}; use smallvec::SmallVec; use std::net::{Ipv4Addr, Ipv6Addr, SocketAddr, SocketAddrV4, SocketAddrV6}; - const TYPE_BEGIN: u8 = 0; const TYPE_END: u8 = 1; const TYPE_DATA: u8 = 2; @@ -40,14 +39,14 @@ fn sha512(data: &[u8]) -> SmallVec<[u8; 64]> { struct FutureResult { has_result: AtomicBool, - result: Mutex + result: Mutex, } #[derive(Clone)] pub struct BeaconSerializer { shared_key: Vec, future_peers: Arc>>, - _dummy_ts: PhantomData + _dummy_ts: PhantomData, } impl BeaconSerializer { @@ -55,7 +54,7 @@ impl BeaconSerializer { Self { shared_key: shared_key.to_owned(), future_peers: Arc::new(FutureResult { has_result: AtomicBool::new(false), result: Mutex::new(Vec::new()) }), - _dummy_ts: PhantomData + _dummy_ts: PhantomData, } } @@ -105,7 +104,7 @@ impl BeaconSerializer { fn decrypt_data(&self, data: &mut Vec) -> bool { if data.is_empty() { - return false + return false; } let seed = data.pop().unwrap() ^ self.get_keystream(TYPE_SEED, 0, 0)[0]; self.mask_with_keystream(data as &mut [u8], TYPE_DATA, seed); @@ -122,7 +121,7 @@ impl BeaconSerializer { for p in peers { match *p { SocketAddr::V4(addr) => v4addrs.push(addr), - SocketAddr::V6(addr) => v6addrs.push(addr) + SocketAddr::V6(addr) => v6addrs.push(addr), } } // Add count of v4 addresses @@ -158,23 +157,23 @@ impl BeaconSerializer { let mut peers = Vec::new(); let mut pos = 0; if data.len() < 4 { - return peers + return peers; } if !self.decrypt_data(&mut data) { - return peers + return peers; } let then = Wrapping(Encoder::read_u16(&data[pos..=pos + 1])); if let Some(ttl) = ttl_hours { let now = Wrapping(Self::now_hour_16()); if now - then > Wrapping(ttl) && then - now > Wrapping(ttl) { - return peers + return peers; } } pos += 2; let v4count = data[pos] as usize; pos += 1; if v4count * 6 > data.len() - pos || (data.len() - pos - v4count * 6) % 18 > 0 { - return peers + return peers; } for _ in 0..v4count { assert!(data.len() >= pos + 6); @@ -198,7 +197,7 @@ impl BeaconSerializer { Ipv6Addr::new(ip[0], ip[1], ip[2], ip[3], ip[4], ip[5], ip[6], ip[7]), port, 0, - 0 + 0, )); peers.push(addr); } @@ -262,14 +261,14 @@ impl BeaconSerializer { peers.append(&mut self.peerlist_decode(&data[start_pos..end_pos], ttl_hours)); pos = start_pos } else { - break + break; } } peers } pub fn read_from_file>( - &self, path: P, ttl_hours: Option + &self, path: P, ttl_hours: Option, ) -> Result, io::Error> { let mut f = File::open(&path)?; let mut contents = String::new(); @@ -316,26 +315,22 @@ impl BeaconSerializer { } } - -#[cfg(test)] use crate::util::MockTimeSource; -#[cfg(test)] use std::str::FromStr; -#[cfg(test)] use std::time::Duration; +#[cfg(test)] +use crate::util::MockTimeSource; +#[cfg(test)] +use std::str::FromStr; +#[cfg(test)] +use std::time::Duration; #[test] fn encode() { MockTimeSource::set_time(2000 * 3600); let ser = BeaconSerializer::::new(b"mysecretkey"); - let mut peers = vec![ - SocketAddr::from_str("1.2.3.4:5678").unwrap(), - SocketAddr::from_str("6.6.6.6:53").unwrap() - ]; + let mut peers = vec![SocketAddr::from_str("1.2.3.4:5678").unwrap(), SocketAddr::from_str("6.6.6.6:53").unwrap()]; assert_eq!("WsHI31EWDMBYxvITiILIrm2k9gEik22E", ser.encode(&peers)); peers.push(SocketAddr::from_str("[::1]:5678").unwrap()); assert_eq!("WsHI3GXKaXCveo6uejmZizZ72kR6Y0L9T7h49TXONp1ugfKvvvEik22E", ser.encode(&peers)); - let peers = vec![ - SocketAddr::from_str("1.2.3.4:5678").unwrap(), - SocketAddr::from_str("6.6.6.6:54").unwrap() - ]; + let peers = vec![SocketAddr::from_str("1.2.3.4:5678").unwrap(), SocketAddr::from_str("6.6.6.6:54").unwrap()]; assert_eq!("WsHI32gm9eMSHP3Lm1GXcdP7rD3ik22E", ser.encode(&peers)); } @@ -343,10 +338,7 @@ fn encode() { fn decode() { MockTimeSource::set_time(2000 * 3600); let ser = BeaconSerializer::::new(b"mysecretkey"); - let mut peers = vec![ - SocketAddr::from_str("1.2.3.4:5678").unwrap(), - SocketAddr::from_str("6.6.6.6:53").unwrap() - ]; + let mut peers = vec![SocketAddr::from_str("1.2.3.4:5678").unwrap(), SocketAddr::from_str("6.6.6.6:53").unwrap()]; assert_eq!(format!("{:?}", peers), format!("{:?}", ser.decode("WsHI31EWDMBYxvITiILIrm2k9gEik22E", None))); peers.push(SocketAddr::from_str("[::1]:5678").unwrap()); assert_eq!( @@ -359,10 +351,7 @@ fn decode() { fn decode_split() { MockTimeSource::set_time(2000 * 3600); let ser = BeaconSerializer::::new(b"mysecretkey"); - let peers = vec![ - SocketAddr::from_str("1.2.3.4:5678").unwrap(), - SocketAddr::from_str("6.6.6.6:53").unwrap() - ]; + let peers = vec![SocketAddr::from_str("1.2.3.4:5678").unwrap(), SocketAddr::from_str("6.6.6.6:53").unwrap()]; assert_eq!( format!("{:?}", peers), format!("{:?}", ser.decode("WsHI3-1E.WD:MB Yx\tvI\nTi(IL)Ir[m2]k9ügEäik22E", None)) @@ -377,10 +366,7 @@ fn decode_split() { fn decode_offset() { MockTimeSource::set_time(2000 * 3600); let ser = BeaconSerializer::::new(b"mysecretkey"); - let peers = vec![ - SocketAddr::from_str("1.2.3.4:5678").unwrap(), - SocketAddr::from_str("6.6.6.6:53").unwrap() - ]; + let peers = vec![SocketAddr::from_str("1.2.3.4:5678").unwrap(), SocketAddr::from_str("6.6.6.6:53").unwrap()]; assert_eq!( format!("{:?}", peers), format!("{:?}", ser.decode("Hello World: WsHI31EWDMBYxvITiILIrm2k9gEik22E! End of the World", None)) @@ -391,10 +377,7 @@ fn decode_offset() { fn decode_multiple() { MockTimeSource::set_time(2000 * 3600); let ser = BeaconSerializer::::new(b"mysecretkey"); - let peers = vec![ - SocketAddr::from_str("1.2.3.4:5678").unwrap(), - SocketAddr::from_str("6.6.6.6:53").unwrap() - ]; + let peers = vec![SocketAddr::from_str("1.2.3.4:5678").unwrap(), SocketAddr::from_str("6.6.6.6:53").unwrap()]; assert_eq!( format!("{:?}", peers), format!("{:?}", ser.decode("WsHI31HVpqxFNMNSPrvik22E WsHI34yOBcZIulKdtn2ik22E", None)) @@ -438,15 +421,11 @@ fn decode_invalid() { assert_eq!(2, ser.decode("WsHI3WsHI31EWDMBYxvITiILIrm2k9gEik22Eik22E", None).len()); } - #[test] fn encode_decode() { MockTimeSource::set_time(2000 * 3600); let ser = BeaconSerializer::::new(b"mysecretkey"); - let peers = vec![ - SocketAddr::from_str("1.2.3.4:5678").unwrap(), - SocketAddr::from_str("6.6.6.6:53").unwrap() - ]; + let peers = vec![SocketAddr::from_str("1.2.3.4:5678").unwrap(), SocketAddr::from_str("6.6.6.6:53").unwrap()]; let data = ser.encode(&peers); let peers2 = ser.decode(&data, None); assert_eq!(format!("{:?}", peers), format!("{:?}", peers2)); @@ -456,10 +435,7 @@ fn encode_decode() { fn encode_decode_file() { MockTimeSource::set_time(2000 * 3600); let ser = BeaconSerializer::::new(b"mysecretkey"); - let peers = vec![ - SocketAddr::from_str("1.2.3.4:5678").unwrap(), - SocketAddr::from_str("6.6.6.6:53").unwrap() - ]; + let peers = vec![SocketAddr::from_str("1.2.3.4:5678").unwrap(), SocketAddr::from_str("6.6.6.6:53").unwrap()]; let file = tempfile::NamedTempFile::new().expect("Failed to create temp file"); assert!(ser.write_to_file(&peers, file.path()).is_ok()); let peers2 = ser.read_from_file(file.path(), None); @@ -471,10 +447,7 @@ fn encode_decode_file() { fn encode_decode_cmd() { MockTimeSource::set_time(2000 * 3600); let ser = BeaconSerializer::::new(b"mysecretkey"); - let peers = vec![ - SocketAddr::from_str("1.2.3.4:5678").unwrap(), - SocketAddr::from_str("6.6.6.6:53").unwrap() - ]; + let peers = vec![SocketAddr::from_str("1.2.3.4:5678").unwrap(), SocketAddr::from_str("6.6.6.6:53").unwrap()]; let file = tempfile::NamedTempFile::new().expect("Failed to create temp file"); assert!(ser.write_to_cmd(&peers, &format!("echo $beacon > {}", file.path().display())).is_ok()); thread::sleep(Duration::from_millis(100)); diff --git a/src/cloud.rs b/src/cloud.rs index fa00e24..88e9c22 100644 --- a/src/cloud.rs +++ b/src/cloud.rs @@ -12,7 +12,7 @@ use std::{ marker::PhantomData, net::{SocketAddr, ToSocketAddrs}, path::Path, - str::FromStr + str::FromStr, }; use fnv::FnvHasher; @@ -27,7 +27,7 @@ use crate::{ error::Error, messages::{ AddrList, NodeInfo, PeerInfo, MESSAGE_TYPE_CLOSE, MESSAGE_TYPE_DATA, MESSAGE_TYPE_KEEPALIVE, - MESSAGE_TYPE_NODE_INFO + MESSAGE_TYPE_NODE_INFO, }, net::{mapped_addr, Socket}, payload::Protocol, @@ -36,7 +36,7 @@ use crate::{ table::ClaimTable, traffic::TrafficStats, types::{Address, Mode, NodeId, Range, RangeList}, - util::{addr_nice, bytes_to_hex, resolve, CtrlC, Duration, MsgBuffer, StatsdMsg, Time, TimeSource} + util::{addr_nice, bytes_to_hex, resolve, CtrlC, Duration, MsgBuffer, StatsdMsg, Time, TimeSource}, }; pub type Hash = BuildHasherDefault; @@ -54,7 +54,7 @@ struct PeerData { timeout: Time, peer_timeout: u16, node_id: NodeId, - crypto: PeerCrypto + crypto: PeerCrypto, } #[derive(Clone)] @@ -64,10 +64,9 @@ pub struct ReconnectEntry { tries: u16, timeout: u16, next: Time, - final_timeout: Option