Browse Source

Added udm-dns initial setup

Breandan Dezendorf 2 years ago
parent
commit
18a8c0b4b3

+ 7 - 0
dezendorf/applications/udm-dns/BUILD

@@ -0,0 +1,7 @@
+load("@rules_python//python:defs.bzl", "py_binary")
+
+py_binary(
+  name = "udm-dns",
+  srcs = ["udm-dns.py"],
+  visibility = ["//visibility:public"],
+)

+ 13 - 0
dezendorf/applications/udm-dns/data/custom-list.yaml

@@ -0,0 +1,13 @@
+    192.168.1.151 thin1.dezendorf.net
+    192.168.1.152 thin2.dezendorf.net
+    192.168.1.153 thin3.dezendorf.net
+    192.168.1.154 apc-pdu-01.dezendorf.net
+    192.168.1.155 pve1.dezendorf.net
+    192.168.1.157 thick2.dezendorf.net
+    192.168.1.158 thick1.dezendorf.net
+    192.168.1.159 apc-pdu-02.dezendorf.net
+    192.168.1.160 rpi4-0.dezendorf.net
+    192.168.1.161 rpi4-1.dezendorf.net
+    192.168.1.236 plex.dezendorf.net
+    192.168.1.50 astoria.dezendorf.net
+    192.168.1.9 gondor.dezendorf.net

+ 30 - 0
dezendorf/applications/udm-dns/data/k3s-list.yaml

@@ -0,0 +1,30 @@
+    192.168.1.87 airsonic.dezendorf.net
+    192.168.1.87 alertmanager.dezendorf.net
+    192.168.1.87 argocd.dezendorf.net
+    192.168.1.87 auth.dezendorf.net
+    192.168.1.87 bazarr.dezendorf.net
+    192.168.1.87 beets.dezendorf.net
+    192.168.1.87 books.dezendorf.net
+    192.168.1.87 calibre.dezendorf.net
+    192.168.1.87 codeserver.dezendorf.net
+    192.168.1.87 devport.dezendorf.net
+    192.168.1.87 go.dezendorf.net
+    192.168.1.87 gogs.dezendorf.net
+    192.168.1.87 gopy.dezendorf.net
+    192.168.1.87 grafana.dezendorf.net
+    192.168.1.87 jackett.dezendorf.net
+    192.168.1.87 lidarr.dezendorf.net
+    192.168.1.87 longhorn.dezendorf.net
+    192.168.1.87 mysql.dezendorf.net
+    192.168.1.87 photos.dezendorf.net
+    192.168.1.87 pihole.dezendorf.net
+    192.168.1.87 prometheus.dezendorf.net
+    192.168.1.87 radarr.dezendorf.net
+    192.168.1.87 readarr.dezendorf.net
+    192.168.1.87 sonarr.dezendorf.net
+    192.168.1.87 sso.dezendorf.net
+    192.168.1.87 tesseract.dezendorf.net
+    192.168.1.87 traefik.dezendorf.net
+    192.168.1.87 transmission.dezendorf.net
+    192.168.1.87 whisparr.dezendorf.net
+    192.168.1.87 whoami.dezendorf.net

+ 100 - 0
dezendorf/applications/udm-dns/udm-dns.py

@@ -0,0 +1,100 @@
+#!/usr/bin/env python
+
+import re
+from datetime import timedelta
+import argparse
+import unificontrol
+
+from __future__ import print_function
+import os.path
+
+from google.auth.transport.requests import Request
+from google.oauth2.credentials import Credentials
+from google_auth_oauthlib.flow import InstalledAppFlow
+from googleapiclient.discovery import build
+from googleapiclient.errors import HttpError
+
+import math
+
+SCOPES = ['https://www.googleapis.com/auth/spreadsheets.readonly']
+SPREADSHEET_ID = ''
+
+class ClientEntry:
+  def __init__(self, entryNumber, hostname, address, macAddress, k8s):
+    self.entryNumber = entryNumber
+    self.hostname = hostname
+    self.address = address
+    self.macAddress = macAddress
+    self.k8s = k8s
+
+  def formatYamlEntry(self):
+    entry = "    {} {} # {}\n".format(self.hostname, self.address, self.macAddress)
+    return entry
+
+def main():
+  Subtitles = []
+
+  parser = argparse.ArgumentParser()
+
+  parser.add_argument("--k8s", required=False, help="Render k8s hostname yaml", action='store_true')
+  parser.add_argument("--hardware", required=False, help="Render hardware hostname yaml", action='store_true')
+  parser.add_argument("--yamlfile", required=False, help="Filename to store rendered yaml", type=str)
+
+  parser.add_argument("--unifi", required=False, help="Sync client addresses to unifi controller", action='store_true')
+
+  parser.add_argument("--sheet", required=True, help="Google Sheet ID to read from", type=str)
+
+  args = parser.parse_args()
+
+  SPREADSHEET_ID = args.sheet
+
+  print("Opening gsheet: {}".format(args.sheet))
+
+  with open(args.file, "r+") as file:
+    entryNumber = 0
+    text = ""
+    timestamp = ""
+    for line in file:
+      m1 = re.match(r"^([0-9]{2}:[0-9]{2}:[0-9]{2},[0-9]{3}) --> ([0-9]{2}:[0-9]{2}:[0-9]{2},[0-9]{3})", line)
+      if line == "\n":
+        if (entryNumber > 0) and (timestamp is not None):
+          s = SubtitleEntry(entryNumber, text, timestamp.groups()[0], timestamp.groups()[1])
+          Subtitles.append(s)
+          text = ""
+          timestamp = ""
+          entryNumber = 0
+      elif re.match(r"^[0-9]+$", line):
+        entryNumber = int(line.rstrip())
+      elif m1:
+        timestamp = m1
+      else:
+        text += line
+
+  if args.inplace == True:
+    args.outfile = args.file
+    args.file = args.file + ".backup"
+    with open(args.file, 'w') as o:
+      print("Writing backup to " + args.file)
+      for entry in Subtitles:
+        print(entry.formatEntry(), file=o)
+
+  print("Updating subtitle file: " + args.outfile)
+  lastEntryNumber = Subtitles[-1].entryNumber
+  with open(args.outfile, 'w') as o:
+    print("Shifting all entries by {} seconds".format(args.seconds))
+    for idx, entry in enumerate(Subtitles):
+      if idx == 0:
+        print("First subtitle line: {}".format(entry.text))
+        if args.strip_first and entry.text != "":
+          print("Stripping first line - {}".format(entry.text))
+          entry.text = ""
+      if idx == lastEntryNumber - 1:
+        print("Last subtitle line: {}".format(entry.text))
+        if args.strip_last and entry.text != "":
+          print("Stripping last line - {}".format(entry.text))
+          entry.text = ""
+      entry.shift(args.seconds)
+      print(entry.formatEntry(), file=o)
+
+if __name__ == "__main__":
+  main()