From 3f0cc54e77d72dea2721f1c10a03c1cb739e97b8 Mon Sep 17 00:00:00 2001 From: Stuart Stent Date: Thu, 9 Sep 2021 16:17:56 -0400 Subject: [PATCH] adding portfwd job --- .drone/portfwd.yml | 18 ++++++++++++++++++ portfwd/Dockerfile | 10 ++++++++++ portfwd/unifi.py | 33 +++++++++++++++++++++++++++++++++ 3 files changed, 61 insertions(+) create mode 100644 .drone/portfwd.yml create mode 100644 portfwd/Dockerfile create mode 100644 portfwd/unifi.py diff --git a/.drone/portfwd.yml b/.drone/portfwd.yml new file mode 100644 index 0000000..d453434 --- /dev/null +++ b/.drone/portfwd.yml @@ -0,0 +1,18 @@ +--- +clone: + git: + image: plugins/git + when: + path: 'portfwd/*' + +pipeline: + publish_portfwd: + image: plugins/docker + repo: registry.service.dc1.consul:5000/portfwd + registry: registry.service.dc1.consul:5000 + insecure: true + context: portfwd/ + dockerfile: portfwd/Dockerfile + when: + path: 'portfwd/*' +... diff --git a/portfwd/Dockerfile b/portfwd/Dockerfile new file mode 100644 index 0000000..a8e06a7 --- /dev/null +++ b/portfwd/Dockerfile @@ -0,0 +1,10 @@ + +FROM alpine:3 +RUN apk add --no-cache python3 py3-pip + +RUN pip install unificontrol +ADD unifi.py ./ +ENV IP_ADDR=192.168.1.100 +# EXPOSE 1080 + +ENTRYPOINT ["python3","unifi.py"] diff --git a/portfwd/unifi.py b/portfwd/unifi.py new file mode 100644 index 0000000..ef30352 --- /dev/null +++ b/portfwd/unifi.py @@ -0,0 +1,33 @@ +import ssl +import unificontrol +from unificontrol.metaprogram import UnifiAPICall, UnifiAPICallNoSite, MetaNameFixer +from pprint import pprint +import os + +FWD_IP = os.getenv('IP_ADDR') +cert = ssl.get_server_certificate(("unifi.service.dc1.consul", 8443)) +# Store the cert in a safe place +... +# Fetch the cert from a safe place +client = unificontrol.UnifiClient(host="unifi.service.dc1.consul", + username="admin", password="tSxLlolgmXq6Zp1HplWK", site="default", + cert=cert) + +edit_forward = UnifiAPICall( + "update Port forward", + "rest/portforward/613a5bb648247c60a5b14ba6", + json_args=[ + ('_id', '613a5bb648247c60a5b14ba6'), + ('enabled', 'true'), + ('dst_port', '51820'), + ('fwd', FWD_IP), + ('fwd_port', '51820'), + ('name', 'wireguard'), + ('proto', 'udp'), + ('site_id', '5c9419f5e718399f4a746e7f'), + ('src', 'any')], + method="PUT", + ) + +pprint(edit_forward(client)) +