From baa1d01a4971fd1b64e17bbfabb2b0f97a830f6a Mon Sep 17 00:00:00 2001 From: dadevel Date: Sun, 10 Jul 2022 12:48:20 +0200 Subject: [PATCH] package with poetry --- README.md | 21 ++++++-- wg-netns@.service => extras/wg-netns@.service | 0 poetry.lock | 49 +++++++++++++++++++ pyproject.toml | 19 +++++++ setup.sh | 9 ---- wg-netns.py => wgnetns/main.py | 22 +++++---- 6 files changed, 99 insertions(+), 21 deletions(-) rename wg-netns@.service => extras/wg-netns@.service (100%) create mode 100644 poetry.lock create mode 100644 pyproject.toml delete mode 100755 setup.sh rename wg-netns.py => wgnetns/main.py (99%) diff --git a/README.md b/README.md index c90693a..a713fd2 100644 --- a/README.md +++ b/README.md @@ -14,9 +14,23 @@ Requirements: Installation: +a) With [pipx](https://github.com/pypa/pipx). + +~~~ bash +pipx install git+https://github.com/dadevel/wg-netns.git@main +~~~ + +b) With `pip`. + +~~~ bash +pip install --user git+https://github.com/dadevel/wg-netns.git@main +~~~ + +c) As standalone script. + ~~~ bash -git clone --depth 1 https://github.com/dadevel/wg-netns.git -sudo ./wg-netns/setup.sh +curl -o ~/.local/bin/wg-netns https://raw.githubusercontent.com/dadevel/wg-netns/main/wgnetns/main.py +chmod +x ~/.local/bin/wg-netns ~~~ ## Usage @@ -132,10 +146,11 @@ ip netns exec ns-example bash -i ### Systemd Service -You can find a `wg-quick@.service` equivalent at [wg-netns@.service](./wg-netns@.service). +You can find a `wg-quick@.service` equivalent at [wg-netns@.service](./extras/wg-netns@.service). Place your profile in `/etc/wireguard/`, e.g. `example.json`, then start the service. ~~~ bash +curl -o /etc/systemd/system/wg-netns@.service https://raw.githubusercontent.com/dadevel/wg-netns/main/extras/wg-netns@.service systemctl enable --now wg-netns@example.service ~~~ diff --git a/wg-netns@.service b/extras/wg-netns@.service similarity index 100% rename from wg-netns@.service rename to extras/wg-netns@.service diff --git a/poetry.lock b/poetry.lock new file mode 100644 index 0000000..3115393 --- /dev/null +++ b/poetry.lock @@ -0,0 +1,49 @@ +[[package]] +name = "pyyaml" +version = "6.0" +description = "YAML parser and emitter for Python" +category = "main" +optional = false +python-versions = ">=3.6" + +[metadata] +lock-version = "1.1" +python-versions = "^3.7" +content-hash = "26f0d3bbc0e7914fb97929a54b78c3c81fa915b86abdd44d69321cf5b462cd0d" + +[metadata.files] +pyyaml = [ + {file = "PyYAML-6.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:d4db7c7aef085872ef65a8fd7d6d09a14ae91f691dec3e87ee5ee0539d516f53"}, + {file = "PyYAML-6.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:9df7ed3b3d2e0ecfe09e14741b857df43adb5a3ddadc919a2d94fbdf78fea53c"}, + {file = "PyYAML-6.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:77f396e6ef4c73fdc33a9157446466f1cff553d979bd00ecb64385760c6babdc"}, + {file = "PyYAML-6.0-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:a80a78046a72361de73f8f395f1f1e49f956c6be882eed58505a15f3e430962b"}, + {file = "PyYAML-6.0-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:f84fbc98b019fef2ee9a1cb3ce93e3187a6df0b2538a651bfb890254ba9f90b5"}, + {file = "PyYAML-6.0-cp310-cp310-win32.whl", hash = "sha256:2cd5df3de48857ed0544b34e2d40e9fac445930039f3cfe4bcc592a1f836d513"}, + {file = "PyYAML-6.0-cp310-cp310-win_amd64.whl", hash = "sha256:daf496c58a8c52083df09b80c860005194014c3698698d1a57cbcfa182142a3a"}, + {file = "PyYAML-6.0-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:897b80890765f037df3403d22bab41627ca8811ae55e9a722fd0392850ec4d86"}, + {file = "PyYAML-6.0-cp36-cp36m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:50602afada6d6cbfad699b0c7bb50d5ccffa7e46a3d738092afddc1f9758427f"}, + {file = "PyYAML-6.0-cp36-cp36m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:48c346915c114f5fdb3ead70312bd042a953a8ce5c7106d5bfb1a5254e47da92"}, + {file = "PyYAML-6.0-cp36-cp36m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:98c4d36e99714e55cfbaaee6dd5badbc9a1ec339ebfc3b1f52e293aee6bb71a4"}, + {file = "PyYAML-6.0-cp36-cp36m-win32.whl", hash = "sha256:0283c35a6a9fbf047493e3a0ce8d79ef5030852c51e9d911a27badfde0605293"}, + {file = "PyYAML-6.0-cp36-cp36m-win_amd64.whl", hash = "sha256:07751360502caac1c067a8132d150cf3d61339af5691fe9e87803040dbc5db57"}, + {file = "PyYAML-6.0-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:819b3830a1543db06c4d4b865e70ded25be52a2e0631ccd2f6a47a2822f2fd7c"}, + {file = "PyYAML-6.0-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:473f9edb243cb1935ab5a084eb238d842fb8f404ed2193a915d1784b5a6b5fc0"}, + {file = "PyYAML-6.0-cp37-cp37m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:0ce82d761c532fe4ec3f87fc45688bdd3a4c1dc5e0b4a19814b9009a29baefd4"}, + {file = "PyYAML-6.0-cp37-cp37m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:231710d57adfd809ef5d34183b8ed1eeae3f76459c18fb4a0b373ad56bedcdd9"}, + {file = "PyYAML-6.0-cp37-cp37m-win32.whl", hash = "sha256:c5687b8d43cf58545ade1fe3e055f70eac7a5a1a0bf42824308d868289a95737"}, + {file = "PyYAML-6.0-cp37-cp37m-win_amd64.whl", hash = "sha256:d15a181d1ecd0d4270dc32edb46f7cb7733c7c508857278d3d378d14d606db2d"}, + {file = "PyYAML-6.0-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:0b4624f379dab24d3725ffde76559cff63d9ec94e1736b556dacdfebe5ab6d4b"}, + {file = "PyYAML-6.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:213c60cd50106436cc818accf5baa1aba61c0189ff610f64f4a3e8c6726218ba"}, + {file = "PyYAML-6.0-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:9fa600030013c4de8165339db93d182b9431076eb98eb40ee068700c9c813e34"}, + {file = "PyYAML-6.0-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:277a0ef2981ca40581a47093e9e2d13b3f1fbbeffae064c1d21bfceba2030287"}, + {file = "PyYAML-6.0-cp38-cp38-win32.whl", hash = "sha256:d4eccecf9adf6fbcc6861a38015c2a64f38b9d94838ac1810a9023a0609e1b78"}, + {file = "PyYAML-6.0-cp38-cp38-win_amd64.whl", hash = "sha256:1e4747bc279b4f613a09eb64bba2ba602d8a6664c6ce6396a4d0cd413a50ce07"}, + {file = "PyYAML-6.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:055d937d65826939cb044fc8c9b08889e8c743fdc6a32b33e2390f66013e449b"}, + {file = "PyYAML-6.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:e61ceaab6f49fb8bdfaa0f92c4b57bcfbea54c09277b1b4f7ac376bfb7a7c174"}, + {file = "PyYAML-6.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d67d839ede4ed1b28a4e8909735fc992a923cdb84e618544973d7dfc71540803"}, + {file = "PyYAML-6.0-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:cba8c411ef271aa037d7357a2bc8f9ee8b58b9965831d9e51baf703280dc73d3"}, + {file = "PyYAML-6.0-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:40527857252b61eacd1d9af500c3337ba8deb8fc298940291486c465c8b46ec0"}, + {file = "PyYAML-6.0-cp39-cp39-win32.whl", hash = "sha256:b5b9eccad747aabaaffbc6064800670f0c297e52c12754eb1d976c57e4f74dcb"}, + {file = "PyYAML-6.0-cp39-cp39-win_amd64.whl", hash = "sha256:b3d267842bf12586ba6c734f89d1f5b871df0273157918b0ccefa29deb05c21c"}, + {file = "PyYAML-6.0.tar.gz", hash = "sha256:68fb519c14306fec9720a2a5b45bc9f0c8d1b9c72adf45c37baedfcd949c35a2"}, +] diff --git a/pyproject.toml b/pyproject.toml new file mode 100644 index 0000000..753f586 --- /dev/null +++ b/pyproject.toml @@ -0,0 +1,19 @@ +[tool.poetry] +name = "wgnetns" +version = "2.0.1" +description = "wg-quick for network namespaces" +authors = ["dadevel "] +license = "MIT" + +[tool.poetry.scripts] +wg-netns = "wgnetns.main:main" + +[tool.poetry.dependencies] +python = "^3.7" +pyyaml = "^6.0" + +[tool.poetry.dev-dependencies] + +[build-system] +requires = ["poetry-core>=1.0.0"] +build-backend = "poetry.core.masonry.api" diff --git a/setup.sh b/setup.sh deleted file mode 100755 index ca40084..0000000 --- a/setup.sh +++ /dev/null @@ -1,9 +0,0 @@ -#!/bin/sh -PS4='> ' -set -eux - -PREFIX="${PREFIX:-/usr/local}" - -cd "$(dirname "$0")" -install -m 0755 -D ./wg-netns.py "$PREFIX/bin/wg-netns" -install -m 0644 -D ./wg-netns@.service "$PREFIX/lib/systemd/system/wg-netns@.service" diff --git a/wg-netns.py b/wgnetns/main.py similarity index 99% rename from wg-netns.py rename to wgnetns/main.py index 258431e..d4ef602 100755 --- a/wg-netns.py +++ b/wgnetns/main.py @@ -21,7 +21,18 @@ VERBOSE = 0 SHELL = Path('/bin/sh') -def main(args): +def main(): + try: + cli(sys.argv[1:]) + sys.exit(0) + except Exception as e: + print(f'error: {e} ({e.__class__.__name__})', file=sys.stderr) + if VERBOSE: + raise + sys.exit(1) + + +def cli(args): global WIREGUARD_DIR global NETNS_DIR global VERBOSE @@ -292,11 +303,4 @@ def run(*args, stdin: str = None, check=True, capture=False) -> str: if __name__ == '__main__': - try: - main(sys.argv[1:]) - sys.exit(0) - except Exception as e: - print(f'error: {e} ({e.__class__.__name__})', file=sys.stderr) - if VERBOSE: - raise - sys.exit(1) + main()