Cannot open /machines and /routes anymore
Hello,
I installed Headscale-WebUI a while ago and it was working fine until recently. Now, every time I try to access the machines page I get this error:
[2023-04-19 00:54:19,666] ERROR in app: Exception on /machines [GET]
Traceback (most recent call last):
File "/app/.venv/lib/python3.11/site-packages/flask/app.py", line 2528, in wsgi_app
response = self.full_dispatch_request()
^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/app/.venv/lib/python3.11/site-packages/flask/app.py", line 1825, in full_dispatch_request
rv = self.handle_user_exception(e)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/app/.venv/lib/python3.11/site-packages/flask/app.py", line 1823, in full_dispatch_request
rv = self.dispatch_request()
^^^^^^^^^^^^^^^^^^^^^^^
File "/app/.venv/lib/python3.11/site-packages/flask/app.py", line 1799, in dispatch_request
return self.ensure_sync(self.view_functions[rule.endpoint])(**view_args)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/app/server.py", line 114, in decorated
return view_func(*args, **kwargs)
^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/app/server.py", line 207, in machines_page
cards = renderer.render_machines_cards()
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/app/renderer.py", line 521, in render_machines_cards
content = content+str(sorted_machines[index])
~~~~~~~~~~~~~~~^^^^^^^
KeyError: 0
and this when I try to open /routes
[2023-04-19 01:11:19,214] INFO in renderer: Found route 25 / machine: [REDACTED]
[2023-04-19 01:11:19,215] ERROR in app: Exception on /routes [GET]
Traceback (most recent call last):
File "/app/.venv/lib/python3.11/site-packages/flask/app.py", line 2528, in wsgi_app
response = self.full_dispatch_request()
^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/app/.venv/lib/python3.11/site-packages/flask/app.py", line 1825, in full_dispatch_request
rv = self.handle_user_exception(e)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/app/.venv/lib/python3.11/site-packages/flask/app.py", line 1823, in full_dispatch_request
rv = self.dispatch_request()
^^^^^^^^^^^^^^^^^^^^^^^
File "/app/.venv/lib/python3.11/site-packages/flask/app.py", line 1799, in dispatch_request
return self.ensure_sync(self.view_functions[rule.endpoint])(**view_args)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/app/server.py", line 114, in decorated
return view_func(*args, **kwargs)
^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/app/server.py", line 181, in routes_page
render_page = renderer.render_routes(),
^^^^^^^^^^^^^^^^^^^^^^^^
File "/app/renderer.py", line 901, in render_routes
enabled = "<i id='"+machine_id+"-exit' onclick='toggle_exit("+node_exit_route_ids[0]+", "+node_exit_route_ids[1]+", \""+machine_id+"-exit\", \"True\", \"routes\")' class='material-icons green-text text-lighten-2 tooltipped' data-tooltip='Click to disable'>fiber_manual_record</i>"
~~~~~~~~~~~~~~~~~~~^^^
IndexError: list index out of range
Any other page, including /users and /overview work correctly showing all the information as expected. The only things that changed are the version of the Headscale-WebUI and the list of machines registered to my account (now 13). There is no apparent issue listing the machines via API and through Headscale-UI
Info about the version in use: Compatibility Headscale v0.21.0 App Version v0.6.1 Build Date 2023-04-14 Git Commit e7c1596 Git Branch main Source Code Github
+1
+1
Can you enable DEBUG logging and upload the logs? From the routes page error it looks like there's a problem with a potentially missing exit route.
Also, paste the output of headscale routes ls and headscale machines ls
- Certain routes are the same for different machines (i.e.: 192.168.0.1/24 is advertised by both machine A and B)
- MachineKey is missing from the first host
$ docker exec -it --user [REDACTED] headscale headscale routes ls
2023-04-21T03:14:40Z DBG Setting timeout timeout=5000
2023-04-21T03:14:40Z DBG HEADSCALE_CLI_ADDRESS environment is not set, connecting to unix socket. socket=/var/run/headscale.sock
ID | Machine | Prefix | Advertised | Enabled | Primary
1 | [REDACTED] | 0.0.0.0/0 | true | true | -
2 | [REDACTED] | 0.0.0.0/0 | true | true | -
3 | [REDACTED] | ::/0 | true | true | -
4 | [REDACTED] | 0.0.0.0/0 | true | true | -
5 | [REDACTED] | ::/0 | true | true | -
6 | [REDACTED] | 0.0.0.0/0 | true | true | -
7 | [REDACTED] | ::/0 | true | true | -
8 | [REDACTED] | 0.0.0.0/0 | false | false | -
9 | [REDACTED] | ::/0 | false | false | -
10 | [REDACTED] | [REDACTED]/24 | false | false | true
11 | [REDACTED] | 0.0.0.0/0 | true | true | -
12 | [REDACTED] | ::/0 | true | true | -
13 | [REDACTED] | [REDACTED]/24 | true | true | false
14 | [REDACTED] | 0.0.0.0/0 | true | true | -
15 | [REDACTED] | ::/0 | true | true | -
16 | [REDACTED] | [REDACTED]/24 | true | true | true
17 | [REDACTED] | 0.0.0.0/0 | true | true | -
18 | [REDACTED] | ::/0 | true | true | -
19 | [REDACTED] | 0.0.0.0/0 | true | true | -
20 | [REDACTED] | ::/0 | true | true | -
21 | [REDACTED] | 0.0.0.0/0 | true | true | -
22 | [REDACTED] | ::/0 | true | true | -
23 | [REDACTED] | [REDACTED]/16 | false | false | false
24 | [REDACTED] | [REDACTED]/16 | true | true | true
25 | [REDACTED] | [REDACTED]/24 | true | false | false
$ docker exec -it --user hs headscale headscale machines ls
2023-04-21T03:15:01Z DBG Setting timeout timeout=5000
2023-04-21T03:15:01Z DBG HEADSCALE_CLI_ADDRESS environment is not set, connecting to unix socket. socket=/var/run/headscale.sock
ID | Hostname | Name | MachineKey | NodeKey | User | IP addresses | Ephemeral | Last seen | Expiration | Online | Expired
1 | [REDACTED] | [REDACTED] | | [REDACTED] | [REDACTED] | 100.64.0.1, fd7a:115c:a1e0::1 | false | 2022-12-21 22:34:45 | 0001-01-01 00:00:00 | offline | no
2 | [REDACTED] | [REDACTED] | [REDACTED] | [REDACTED] | [REDACTED] | 100.64.0.2, fd7a:115c:a1e0::2 | false | 2023-04-19 03:39:06 | 0001-01-01 00:00:00 | offline | no
3 | [REDACTED] | [REDACTED] | [REDACTED] | [REDACTED] | [REDACTED] | 100.64.0.3, fd7a:115c:a1e0::3 | false | 2023-04-16 19:45:08 | 0001-01-01 00:00:00 | offline | no
4 | [REDACTED] | [REDACTED] | [REDACTED] | [REDACTED] | [REDACTED] | 100.64.0.4, fd7a:115c:a1e0::4 | false | 2023-03-23 23:29:41 | 0001-01-01 00:00:00 | offline | no
5 | [REDACTED] | [REDACTED] | [REDACTED] | [REDACTED] | [REDACTED] | 100.64.0.5, fd7a:115c:a1e0::5 | false | 2023-04-16 23:44:46 | 0001-01-01 00:00:00 | offline | no
6 | [REDACTED] | [REDACTED] | [REDACTED] | [REDACTED] | [REDACTED] | 100.64.0.6, fd7a:115c:a1e0::6 | false | 2023-04-16 15:14:23 | 0001-01-01 00:00:00 | offline | no
7 | [REDACTED] | [REDACTED] | [REDACTED] | [REDACTED] | [REDACTED] | 100.64.0.7, fd7a:115c:a1e0::7 | false | 2023-04-21 03:14:52 | 0001-01-01 00:00:00 | online | no
8 | [REDACTED] | [REDACTED] | [REDACTED] | [REDACTED] | [REDACTED] | 100.64.0.8, fd7a:115c:a1e0::8 | false | 2023-04-21 03:14:52 | 0001-01-01 00:00:00 | online | no
9 | [REDACTED] | [REDACTED] | [REDACTED] | [REDACTED] | [REDACTED] | 100.64.0.9, fd7a:115c:a1e0::9 | false | 2023-04-21 03:14:49 | 0001-01-01 00:00:00 | online | no
10 | [REDACTED] | [REDACTED] | [REDACTED] | [REDACTED] | [REDACTED] | 100.64.0.10, fd7a:115c:a1e0::a | false | 2023-03-25 02:47:26 | 0001-01-01 00:00:00 | offline | no
11 | [REDACTED] | [REDACTED] | [REDACTED] | [REDACTED] | [REDACTED] | 100.64.0.11, fd7a:115c:a1e0::b | false | 2023-03-25 02:45:34 | 0001-01-01 00:00:00 | offline | no
12 | [REDACTED] | [REDACTED] | [REDACTED] | [REDACTED] | [REDACTED] | 100.64.0.12, fd7a:115c:a1e0::c | false | 2023-04-21 03:14:56 | 0001-01-01 00:00:00 | online | no
13 | [REDACTED] | [REDACTED] | [REDACTED] | [REDACTED] | [REDACTED] | 100.64.0.13, fd7a:115c:a1e0::d | false | 2023-04-19 00:52:17 | 0001-01-01 00:00:00 | offline | no
This is the DEBUG log:
[2023-04-21 03:07:48 +0000] [1] [INFO] Starting gunicorn 20.1.0
[2023-04-21 03:07:48 +0000] [1] [INFO] Listening at: http://0.0.0.0:5000 (1)
[2023-04-21 03:07:48 +0000] [1] [INFO] Using worker: sync
[2023-04-21 03:07:48 +0000] [8] [INFO] Booting worker with pid: 8
[2023-04-21 03:07:49,955] INFO in server: Headscale-WebUI Version: v0.6.1 / main
[2023-04-21 03:07:49,955] INFO in server: LOG LEVEL SET TO DEBUG
[2023-04-21 03:07:49,955] INFO in server: DEBUG STATE: True
[2023-04-21 03:07:49,955] INFO in server: Loading basic auth libraries and configuring app...
[2023-04-21 03:08:03,879] INFO in helper: All startup checks passed.
[2023-04-21 03:08:03,883] INFO in helper: Testing API key validity.
[2023-04-21 03:08:04,034] INFO in helper: Key check passed.
[2023-04-21 03:08:04,034] INFO in headscale: Getting API key information
[2023-04-21 03:08:04,182] INFO in headscale: Looking for valid API Key...
[2023-04-21 03:08:04,182] INFO in headscale: Key found.
[2023-04-21 03:08:06,991] INFO in helper: All startup checks passed.
[2023-04-21 03:08:06,991] INFO in helper: Testing API key validity.
[2023-04-21 03:08:07,142] INFO in helper: Key check passed.
[2023-04-21 03:08:07,142] INFO in headscale: Getting API key information
[2023-04-21 03:08:07,290] INFO in headscale: Looking for valid API Key...
[2023-04-21 03:08:07,291] INFO in headscale: Key found.
[2023-04-21 03:08:07,291] INFO in renderer: Rendering machine cards
[2023-04-21 03:08:07,292] INFO in headscale: Getting machine information
[2023-04-21 03:08:07,443] DEBUG in renderer: Appending iterable: 0
[2023-04-21 03:08:07,443] DEBUG in renderer: Appending iterable: 1
[2023-04-21 03:08:07,443] DEBUG in renderer: Appending iterable: 2
[2023-04-21 03:08:07,443] DEBUG in renderer: Appending iterable: 3
[2023-04-21 03:08:07,443] DEBUG in renderer: Appending iterable: 4
[2023-04-21 03:08:07,444] DEBUG in renderer: Appending iterable: 5
[2023-04-21 03:08:07,444] DEBUG in renderer: Appending iterable: 6
[2023-04-21 03:08:07,444] DEBUG in renderer: Appending iterable: 7
[2023-04-21 03:08:07,444] DEBUG in renderer: Appending iterable: 8
[2023-04-21 03:08:07,444] DEBUG in renderer: Appending iterable: 9
[2023-04-21 03:08:07,444] DEBUG in renderer: Appending iterable: 10
[2023-04-21 03:08:07,444] DEBUG in renderer: Appending iterable: 11
[2023-04-21 03:08:07,444] DEBUG in renderer: Appending iterable: 12
[2023-04-21 03:08:07,444] INFO in headscale: Getting routes
[2023-04-21 03:08:07,597] DEBUG in renderer: Machine Information =================
[2023-04-21 03:08:07,598] DEBUG in renderer: Name: [REDACTED], ID: 1, User: [REDACTED], givenName: [REDACTED],
[2023-04-21 03:08:07,626] INFO in headscale: Getting routes for machine 1
[2023-04-21 03:08:07,778] INFO in headscale: Routes obtained
[2023-04-21 03:08:07,779] DEBUG in renderer: Found exit route ID's: ['1']
[2023-04-21 03:08:07,779] DEBUG in renderer: Exit Route Information: ID: 1 | Enabled: True | exit_route_enabled: True / Found: True
[2023-04-21 03:08:07,779] ERROR in app: Exception on /machines [GET]
Traceback (most recent call last):
File "/app/.venv/lib/python3.11/site-packages/flask/app.py", line 2528, in wsgi_app
response = self.full_dispatch_request()
^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/app/.venv/lib/python3.11/site-packages/flask/app.py", line 1825, in full_dispatch_request
rv = self.handle_user_exception(e)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/app/.venv/lib/python3.11/site-packages/flask/app.py", line 1823, in full_dispatch_request
rv = self.dispatch_request()
^^^^^^^^^^^^^^^^^^^^^^^
File "/app/.venv/lib/python3.11/site-packages/flask/app.py", line 1799, in dispatch_request
return self.ensure_sync(self.view_functions[rule.endpoint])(**view_args)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/app/server.py", line 114, in decorated
return view_func(*args, **kwargs)
^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/app/server.py", line 207, in machines_page
cards = renderer.render_machines_cards()
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/app/renderer.py", line 506, in render_machines_cards
for idx in iterable: thread_machine_content(machines_list["machines"][idx], machine_content, idx, all_routes, failover_pair_prefixes)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/app/renderer.py", line 302, in thread_machine_content
onclick="toggle_exit("""+exit_routes[0]+""", """+exit_routes[1]+""", '"""+machine["id"]+"""-exit', '"""+str(exit_route_enabled)+"""', 'machines')">
~~~~~~~~~~~^^^
IndexError: list index out of range
[2023-04-21 03:09:53,647] INFO in helper: All startup checks passed.
[2023-04-21 03:09:53,647] INFO in helper: Testing API key validity.
[2023-04-21 03:09:53,796] INFO in helper: Key check passed.
[2023-04-21 03:09:53,796] INFO in headscale: Getting API key information
[2023-04-21 03:09:53,944] INFO in headscale: Looking for valid API Key...
[2023-04-21 03:09:53,944] INFO in headscale: Key found.
[2023-04-21 03:09:53,945] INFO in renderer: Rendering Routes page
[2023-04-21 03:09:53,945] INFO in headscale: Getting routes
[2023-04-21 03:09:54,099] INFO in renderer: Found route 1 / machine: [REDACTED]
[2023-04-21 03:09:54,099] INFO in renderer: Found route 2 / machine: [REDACTED]
[2023-04-21 03:09:54,099] INFO in renderer: Found route 3 / machine: [REDACTED]
[2023-04-21 03:09:54,099] INFO in renderer: Found route 4 / machine: [REDACTED]
[2023-04-21 03:09:54,099] INFO in renderer: Found route 5 / machine: [REDACTED]
[2023-04-21 03:09:54,099] INFO in renderer: Found route 6 / machine: [REDACTED]
[2023-04-21 03:09:54,099] INFO in renderer: Found route 7 / machine: [REDACTED]
[2023-04-21 03:09:54,099] INFO in renderer: Found route 8 / machine: [REDACTED]
[2023-04-21 03:09:54,100] INFO in renderer: Found route 9 / machine: [REDACTED]
[2023-04-21 03:09:54,100] INFO in renderer: Found route 10 / machine: [REDACTED]
[2023-04-21 03:09:54,100] INFO in renderer: Found route 11 / machine: [REDACTED]
[2023-04-21 03:09:54,100] INFO in renderer: Found route 12 / machine: [REDACTED]
[2023-04-21 03:09:54,100] INFO in renderer: Found route 13 / machine: [REDACTED]
[2023-04-21 03:09:54,100] INFO in renderer: Found route 14 / machine: [REDACTED]
[2023-04-21 03:09:54,100] INFO in renderer: Found route 15 / machine: [REDACTED]
[2023-04-21 03:09:54,100] INFO in renderer: Found route 16 / machine: [REDACTED]
[2023-04-21 03:09:54,100] INFO in renderer: Found route 17 / machine: [REDACTED]
[2023-04-21 03:09:54,100] INFO in renderer: Found route 18 / machine: [REDACTED]
[2023-04-21 03:09:54,100] INFO in renderer: Found route 19 / machine: [REDACTED]
[2023-04-21 03:09:54,101] INFO in renderer: Found route 20 / machine: [REDACTED]
[2023-04-21 03:09:54,101] INFO in renderer: Found route 21 / machine: [REDACTED]
[2023-04-21 03:09:54,101] INFO in renderer: Found route 22 / machine: [REDACTED]
[2023-04-21 03:09:54,101] INFO in renderer: Found route 23 / machine: [REDACTED]
[2023-04-21 03:09:54,101] INFO in renderer: Found route 24 / machine: [REDACTED]
[2023-04-21 03:09:54,101] INFO in renderer: Found route 25 / machine: [REDACTED]
[2023-04-21 03:09:54,101] DEBUG in renderer: [10] Machine: [6] [REDACTED] : False / True
[2023-04-21 03:09:54,101] DEBUG in renderer: {'id': '10', 'machine': {'id': '6', 'machineKey': '[REDACTED]', 'nodeKey': '[REDACTED]', 'discoKey': '[REDACTED]', 'ipAddresses': ['fd7a:115c:a1e0::6', '100.64.0.6'], 'name': '[REDACTED]', 'user': {'id': '0', 'name': '', 'createdAt': '0001-01-01T00:00:00Z'}, 'lastSeen': '2023-04-16T15:14:23.437882397Z', 'lastSuccessfulUpdate': '2023-04-16T15:13:50.854859615Z', 'expiry': '0001-01-01T00:00:00Z', 'preAuthKey': None, 'createdAt': '2023-03-24T01:57:40.124957757Z', 'registerMethod': 'REGISTER_METHOD_UNSPECIFIED', 'forcedTags': [], 'invalidTags': [], 'validTags': [], 'givenName': '[REDACTED]', 'online': False}, 'prefix': '[REDACTED]/24', 'advertised': False, 'enabled': False, 'isPrimary': True, 'createdAt': '2023-03-24T02:07:20.797798699Z', 'updatedAt': '2023-03-25T03:25:50.479008803Z', 'deletedAt': None}
[2023-04-21 03:09:54,101] DEBUG in renderer: [25] Machine: [2] [REDACTED] : False / False
[2023-04-21 03:09:54,102] DEBUG in renderer: {'id': '25', 'machine': {'id': '2', 'machineKey': '[REDACTED]', 'nodeKey': '[REDACTED]', 'discoKey': '[REDACTED]', 'ipAddresses': ['fd7a:115c:a1e0::2', '100.64.0.2'], 'name': '[REDACTED]', 'user': {'id': '0', 'name': '', 'createdAt': '0001-01-01T00:00:00Z'}, 'lastSeen': '2023-04-19T03:39:06.801904827Z', 'lastSuccessfulUpdate': '2023-04-19T03:39:06.700248916Z', 'expiry': '0001-01-01T00:00:00Z', 'preAuthKey': None, 'createdAt': '2022-12-20T13:07:01.444366683Z', 'registerMethod': 'REGISTER_METHOD_UNSPECIFIED', 'forcedTags': [], 'invalidTags': [], 'validTags': [], 'givenName': '[REDACTED]', 'online': False}, 'prefix': '[REDACTED]/24', 'advertised': True, 'enabled': False, 'isPrimary': False, 'createdAt': '2023-03-27T12:31:14.494876222Z', 'updatedAt': '2023-04-08T14:30:10.241974701Z', 'deletedAt': None}
[2023-04-21 03:09:54,102] DEBUG in renderer: [13] Machine: [7] [REDACTED] : True / False
[2023-04-21 03:09:54,102] DEBUG in renderer: {'id': '13', 'machine': {'id': '7', 'machineKey': '[REDACTED]', 'nodeKey': '[REDACTED]', 'discoKey': '[REDACTED]', 'ipAddresses': ['fd7a:115c:a1e0::7', '100.64.0.7'], 'name': '[REDACTED]', 'user': {'id': '0', 'name': '', 'createdAt': '0001-01-01T00:00:00Z'}, 'lastSeen': '2023-04-21T03:09:52.345876574Z', 'lastSuccessfulUpdate': '2023-04-21T03:08:02.354917240Z', 'expiry': '0001-01-01T00:00:00Z', 'preAuthKey': None, 'createdAt': '2023-03-25T00:23:17.696711168Z', 'registerMethod': 'REGISTER_METHOD_UNSPECIFIED', 'forcedTags': [], 'invalidTags': [], 'validTags': [], 'givenName': '[REDACTED]', 'online': True}, 'prefix': '[REDACTED]/24', 'advertised': True, 'enabled': True, 'isPrimary': False, 'createdAt': '2023-03-25T00:23:20.587903038Z', 'updatedAt': '2023-04-19T02:00:05.663433484Z', 'deletedAt': None}
[2023-04-21 03:09:54,102] DEBUG in renderer: [16] Machine: [8] [REDACTED] : True / True
[2023-04-21 03:09:54,102] DEBUG in renderer: {'id': '16', 'machine': {'id': '8', 'machineKey': '[REDACTED]', 'nodeKey': '[REDACTED]', 'discoKey': '[REDACTED]', 'ipAddresses': ['fd7a:115c:a1e0::8', '100.64.0.8'], 'name': '[REDACTED]', 'user': {'id': '0', 'name': '', 'createdAt': '0001-01-01T00:00:00Z'}, 'lastSeen': '2023-04-21T03:09:52.638009129Z', 'lastSuccessfulUpdate': '2023-04-21T03:08:02.648652897Z', 'expiry': '0001-01-01T00:00:00Z', 'preAuthKey': None, 'createdAt': '2023-03-25T02:23:34.879322139Z', 'registerMethod': 'REGISTER_METHOD_UNSPECIFIED', 'forcedTags': [], 'invalidTags': [], 'validTags': [], 'givenName': '[REDACTED]', 'online': True}, 'prefix': '[REDACTED]/24', 'advertised': True, 'enabled': True, 'isPrimary': True, 'createdAt': '2023-03-25T02:23:35.424153311Z', 'updatedAt': '2023-04-19T02:00:05.679113435Z', 'deletedAt': None}
[2023-04-21 03:09:54,102] DEBUG in renderer: [23] Machine: [8] [REDACTED] : False / False
[2023-04-21 03:09:54,102] DEBUG in renderer: {'id': '23', 'machine': {'id': '8', 'machineKey': '[REDACTED]', 'nodeKey': '[REDACTED]', 'discoKey': '[REDACTED]', 'ipAddresses': ['fd7a:115c:a1e0::8', '100.64.0.8'], 'name': '[REDACTED]', 'user': {'id': '0', 'name': '', 'createdAt': '0001-01-01T00:00:00Z'}, 'lastSeen': '2023-04-21T03:09:52.638009129Z', 'lastSuccessfulUpdate': '2023-04-21T03:08:02.648652897Z', 'expiry': '0001-01-01T00:00:00Z', 'preAuthKey': None, 'createdAt': '2023-03-25T02:23:34.879322139Z', 'registerMethod': 'REGISTER_METHOD_UNSPECIFIED', 'forcedTags': [], 'invalidTags': [], 'validTags': [], 'givenName': '[REDACTED]', 'online': True}, 'prefix': '[REDACTED]/16', 'advertised': False, 'enabled': False, 'isPrimary': False, 'createdAt': '2023-03-26T19:13:30.709172334Z', 'updatedAt': '2023-03-26T19:16:51.901515331Z', 'deletedAt': None}
[2023-04-21 03:09:54,103] DEBUG in renderer: [24] Machine: [9] [REDACTED] : True / True
[2023-04-21 03:09:54,103] DEBUG in renderer: {'id': '24', 'machine': {'id': '9', 'machineKey': '[REDACTED]', 'nodeKey': '[REDACTED]', 'discoKey': '[REDACTED]', 'ipAddresses': ['fd7a:115c:a1e0::9', '100.64.0.9'], 'name': '[REDACTED]', 'user': {'id': '0', 'name': '', 'createdAt': '0001-01-01T00:00:00Z'}, 'lastSeen': '2023-04-21T03:09:49.312984587Z', 'lastSuccessfulUpdate': '2023-04-21T03:07:59.324134367Z', 'expiry': '0001-01-01T00:00:00Z', 'preAuthKey': None, 'createdAt': '2023-03-25T02:25:10.657663482Z', 'registerMethod': 'REGISTER_METHOD_UNSPECIFIED', 'forcedTags': [], 'invalidTags': [], 'validTags': [], 'givenName': '[REDACTED]', 'online': True}, 'prefix': '[REDACTED]/16', 'advertised': True, 'enabled': True, 'isPrimary': True, 'createdAt': '2023-03-26T19:17:32.022128600Z', 'updatedAt': '2023-03-26T19:18:41.430318158Z', 'deletedAt': None}
[2023-04-21 03:09:54,103] ERROR in app: Exception on /routes [GET]
Traceback (most recent call last):
File "/app/.venv/lib/python3.11/site-packages/flask/app.py", line 2528, in wsgi_app
response = self.full_dispatch_request()
^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/app/.venv/lib/python3.11/site-packages/flask/app.py", line 1825, in full_dispatch_request
rv = self.handle_user_exception(e)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/app/.venv/lib/python3.11/site-packages/flask/app.py", line 1823, in full_dispatch_request
rv = self.dispatch_request()
^^^^^^^^^^^^^^^^^^^^^^^
File "/app/.venv/lib/python3.11/site-packages/flask/app.py", line 1799, in dispatch_request
return self.ensure_sync(self.view_functions[rule.endpoint])(**view_args)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/app/server.py", line 114, in decorated
return view_func(*args, **kwargs)
^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/app/server.py", line 181, in routes_page
render_page = renderer.render_routes(),
^^^^^^^^^^^^^^^^^^^^^^^^
File "/app/renderer.py", line 901, in render_routes
enabled = "<i id='"+machine_id+"-exit' onclick='toggle_exit("+node_exit_route_ids[0]+", "+node_exit_route_ids[1]+", \""+machine_id+"-exit\", \"True\", \"routes\")' class='material-icons green-text text-lighten-2 tooltipped' data-tooltip='Click to disable'>fiber_manual_record</i>"
~~~~~~~~~~~~~~~~~~~^^^
IndexError: list index out of range
Interesting. It's because one of your nodes isn't advertising an IPv6 exit route. Currently my code just assumes you have both for all your exit nodes. Can you toggle the exit route on the node itself? I don't know why it would only have an IPv4 exit route and not IPv6
I couldn't toggle the exit route on the node so I tried to temporarily delete the machine. I can confirm that it worked and I could open both /routes and /machines! Nice catch!
The reason why the node doesn't have a IPv6 routes is because the protocol has been purposely deactivated on that machine.