announce/borg-announce.py

Mon, 02 Jun 2025 08:38:59 -0500

author
Tuomo Valkonen <tuomov@iki.fi>
date
Mon, 02 Jun 2025 08:38:59 -0500
changeset 148
ff975e768112
permissions
-rw-r--r--

SSDP server discovery

148
ff975e768112 SSDP server discovery
Tuomo Valkonen <tuomov@iki.fi>
parents:
diff changeset
1 #!/usr/bin/python3
ff975e768112 SSDP server discovery
Tuomo Valkonen <tuomov@iki.fi>
parents:
diff changeset
2 import argparse
ff975e768112 SSDP server discovery
Tuomo Valkonen <tuomov@iki.fi>
parents:
diff changeset
3 from ssdpy import SSDPServer
ff975e768112 SSDP server discovery
Tuomo Valkonen <tuomov@iki.fi>
parents:
diff changeset
4 import socket
ff975e768112 SSDP server discovery
Tuomo Valkonen <tuomov@iki.fi>
parents:
diff changeset
5
ff975e768112 SSDP server discovery
Tuomo Valkonen <tuomov@iki.fi>
parents:
diff changeset
6 parser=argparse.ArgumentParser(
ff975e768112 SSDP server discovery
Tuomo Valkonen <tuomov@iki.fi>
parents:
diff changeset
7 description="BorgBackup SSDP/UPnP announcer",
ff975e768112 SSDP server discovery
Tuomo Valkonen <tuomov@iki.fi>
parents:
diff changeset
8 formatter_class=argparse.RawDescriptionHelpFormatter)
ff975e768112 SSDP server discovery
Tuomo Valkonen <tuomov@iki.fi>
parents:
diff changeset
9
ff975e768112 SSDP server discovery
Tuomo Valkonen <tuomov@iki.fi>
parents:
diff changeset
10 parser.add_argument(
ff975e768112 SSDP server discovery
Tuomo Valkonen <tuomov@iki.fi>
parents:
diff changeset
11 '--uuid',
ff975e768112 SSDP server discovery
Tuomo Valkonen <tuomov@iki.fi>
parents:
diff changeset
12 dest='uuid',
ff975e768112 SSDP server discovery
Tuomo Valkonen <tuomov@iki.fi>
parents:
diff changeset
13 required=True,
ff975e768112 SSDP server discovery
Tuomo Valkonen <tuomov@iki.fi>
parents:
diff changeset
14 help='UUID of borgbackup instance')
ff975e768112 SSDP server discovery
Tuomo Valkonen <tuomov@iki.fi>
parents:
diff changeset
15
ff975e768112 SSDP server discovery
Tuomo Valkonen <tuomov@iki.fi>
parents:
diff changeset
16 parser.add_argument(
ff975e768112 SSDP server discovery
Tuomo Valkonen <tuomov@iki.fi>
parents:
diff changeset
17 '--user',
ff975e768112 SSDP server discovery
Tuomo Valkonen <tuomov@iki.fi>
parents:
diff changeset
18 dest='user',
ff975e768112 SSDP server discovery
Tuomo Valkonen <tuomov@iki.fi>
parents:
diff changeset
19 required=False,
ff975e768112 SSDP server discovery
Tuomo Valkonen <tuomov@iki.fi>
parents:
diff changeset
20 help='Borgbackup user (for SSH login)')
ff975e768112 SSDP server discovery
Tuomo Valkonen <tuomov@iki.fi>
parents:
diff changeset
21
ff975e768112 SSDP server discovery
Tuomo Valkonen <tuomov@iki.fi>
parents:
diff changeset
22 def main():
ff975e768112 SSDP server discovery
Tuomo Valkonen <tuomov@iki.fi>
parents:
diff changeset
23 args=parser.parse_args()
ff975e768112 SSDP server discovery
Tuomo Valkonen <tuomov@iki.fi>
parents:
diff changeset
24
ff975e768112 SSDP server discovery
Tuomo Valkonen <tuomov@iki.fi>
parents:
diff changeset
25 # Find our own IP
ff975e768112 SSDP server discovery
Tuomo Valkonen <tuomov@iki.fi>
parents:
diff changeset
26 s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
ff975e768112 SSDP server discovery
Tuomo Valkonen <tuomov@iki.fi>
parents:
diff changeset
27 s.connect(("8.8.8.8", 80))
ff975e768112 SSDP server discovery
Tuomo Valkonen <tuomov@iki.fi>
parents:
diff changeset
28 my_ip = s.getsockname()[0]
ff975e768112 SSDP server discovery
Tuomo Valkonen <tuomov@iki.fi>
parents:
diff changeset
29 s.close()
ff975e768112 SSDP server discovery
Tuomo Valkonen <tuomov@iki.fi>
parents:
diff changeset
30 location = "ssh://{}{}/".format(args.user + "@" if args.user else "", my_ip)
ff975e768112 SSDP server discovery
Tuomo Valkonen <tuomov@iki.fi>
parents:
diff changeset
31
ff975e768112 SSDP server discovery
Tuomo Valkonen <tuomov@iki.fi>
parents:
diff changeset
32 server = SSDPServer(usn = args.uuid, device_type = "borg", location = location)
ff975e768112 SSDP server discovery
Tuomo Valkonen <tuomov@iki.fi>
parents:
diff changeset
33 server.serve_forever()
ff975e768112 SSDP server discovery
Tuomo Valkonen <tuomov@iki.fi>
parents:
diff changeset
34
ff975e768112 SSDP server discovery
Tuomo Valkonen <tuomov@iki.fi>
parents:
diff changeset
35 main()

mercurial