announce/borg-announce.py

changeset 148
ff975e768112
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/announce/borg-announce.py	Mon Jun 02 08:38:59 2025 -0500
@@ -0,0 +1,35 @@
+#!/usr/bin/python3
+import argparse
+from ssdpy import SSDPServer
+import socket
+
+parser=argparse.ArgumentParser(
+    description="BorgBackup SSDP/UPnP announcer",
+    formatter_class=argparse.RawDescriptionHelpFormatter)
+
+parser.add_argument(
+    '--uuid',
+    dest='uuid',
+    required=True,
+    help='UUID of borgbackup instance')
+
+parser.add_argument(
+    '--user',
+    dest='user',
+    required=False,
+    help='Borgbackup user (for SSH login)')
+
+def main():
+    args=parser.parse_args()
+
+    # Find our own IP
+    s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
+    s.connect(("8.8.8.8", 80))
+    my_ip = s.getsockname()[0]
+    s.close()
+    location = "ssh://{}{}/".format(args.user + "@" if args.user else "", my_ip)
+
+    server = SSDPServer(usn = args.uuid, device_type = "borg", location = location)
+    server.serve_forever()
+
+main()

mercurial