iFargle / headscale-webui

A simple Headscale web UI for small-scale deployments.
Other
627 stars 57 forks source link

Cannot open /machines and /routes anymore #84

Open porelli opened 1 year ago

porelli commented 1 year ago

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

h3zh1 commented 1 year ago

+1

jamesdongg commented 1 year ago

+1

iFargle commented 1 year ago

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.

iFargle commented 1 year ago

Also, paste the output of headscale routes ls and headscale machines ls

porelli commented 1 year ago

$ 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

```
iFargle commented 1 year ago

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

porelli commented 1 year ago

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.