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