User search is broken

Hello,

It seems like after the recent upgrade v1.32.4034.11 user search stopped working within the UI - Failed to load users, server error occurred.


Here is the full error from server logs:

[snowy-skies-7274][2024-10-14 07:49:25,790][ERROR] Exception on /user/5e7de9809c2e48a5eea1c7a9 [GET]
Traceback (most recent call last):
File “/usr/lib/pritunl/usr/lib/python3.9/site-packages/flask/app.py”, line 2190, in wsgi_app
response = self.full_dispatch_request()
File “/usr/lib/pritunl/usr/lib/python3.9/site-packages/flask/app.py”, line 1486, in full_dispatch_request
rv = self.handle_user_exception(e)
File “/usr/lib/pritunl/usr/lib/python3.9/site-packages/flask/app.py”, line 1484, in full_dispatch_request
rv = self.dispatch_request()
File “/usr/lib/pritunl/usr/lib/python3.9/site-packages/flask/app.py”, line 1469, in dispatch_request
return self.ensure_sync(self.view_functions[rule.endpoint])(**view_args)
File “/usr/lib/pritunl/usr/lib/python3.9/site-packages/pritunl/auth/app.py”, line 10, in _wrapped
return call(*args, **kwargs)
File “/usr/lib/pritunl/usr/lib/python3.9/site-packages/pritunl/handlers/user.py”, line 105, in user_get
for usr in query:
File “/usr/lib/pritunl/usr/lib/python3.9/site-packages/pritunl/organization/organization.py”, line 279, in iter_users
self.last_search_count = cursor.count()
AttributeError: ‘Cursor’ object has no attribute ‘count’

The version of MongoDB hasn’t changed during the upgrade…
Any thoughts?

Thanks and looking forward to reply.

Could this pymongo deprecation be related to the issue above?
https://pymongo.readthedocs.io/en/4.8.0/common-issues.html#deprecationwarning-count-is-deprecated

This has been fixed in the repository and will be included in the next release.

Still broken on pritunl v1.32.4115.91

I have just created the VM from Azure App Store using recommended config.

On Users page I get this error:

[thawing-meadow-2334][2025-02-03 00:12:37,342][ERROR] Exception on /user/67a005d43cb3922f8a0dbc0b [GET]
Traceback (most recent call last):
  File "/usr/lib/pritunl/usr/lib/python3.9/site-packages/flask/app.py", line 2190, in wsgi_app
    response = self.full_dispatch_request()
  File "/usr/lib/pritunl/usr/lib/python3.9/site-packages/flask/app.py", line 1486, in full_dispatch_request
    rv = self.handle_user_exception(e)
  File "/usr/lib/pritunl/usr/lib/python3.9/site-packages/flask/app.py", line 1484, in full_dispatch_request
    rv = self.dispatch_request()
  File "/usr/lib/pritunl/usr/lib/python3.9/site-packages/flask/app.py", line 1469, in dispatch_request
    return self.ensure_sync(self.view_functions[rule.endpoint])(**view_args)
  File "/usr/lib/pritunl/usr/lib/python3.9/site-packages/pritunl/auth/app.py", line 10, in _wrapped
    return call(*args, **kwargs)
  File "/usr/lib/pritunl/usr/lib/python3.9/site-packages/pritunl/handlers/user.py", line 108, in user_get
    user_dict = usr.dict()
  File "/usr/lib/pritunl/usr/lib/python3.9/site-packages/pritunl/user/user.py", line 181, in dict
    override = self.is_device_key_override
  File "/usr/lib/pritunl/usr/lib/python3.9/site-packages/pritunl/mongo/object.py", line 58, in __getattr__
    raise AttributeError(
AttributeError: MongoObject instance has no attribute 'is_device_key_override'

On Dashboard:

[thawing-meadow-2334][2025-02-03 01:14:51,545][ERROR] Exception on /device/unregistered [GET]
Traceback (most recent call last):
  File "/usr/lib/pritunl/usr/lib/python3.9/site-packages/flask/app.py", line 2190, in wsgi_app
    response = self.full_dispatch_request()
  File "/usr/lib/pritunl/usr/lib/python3.9/site-packages/flask/app.py", line 1486, in full_dispatch_request
    rv = self.handle_user_exception(e)
  File "/usr/lib/pritunl/usr/lib/python3.9/site-packages/flask/app.py", line 1484, in full_dispatch_request
    rv = self.dispatch_request()
  File "/usr/lib/pritunl/usr/lib/python3.9/site-packages/flask/app.py", line 1469, in dispatch_request
    return self.ensure_sync(self.view_functions[rule.endpoint])(**view_args)
  File "/usr/lib/pritunl/usr/lib/python3.9/site-packages/pritunl/auth/app.py", line 10, in _wrapped
    return call(*args, **kwargs)
  File "/usr/lib/pritunl/usr/lib/python3.9/site-packages/pritunl/handlers/device.py", line 22, in device_unregistered_get
    for device in user.iter_unreg_devices():
  File "/usr/lib/pritunl/usr/lib/python3.9/site-packages/pritunl/user/utils.py", line 118, in iter_unreg_devices
    override = User.is_device_key_override
  File "/usr/lib/pritunl/usr/lib/python3.9/site-packages/pritunl/helpers.py", line 37, in __get__
    return self.func(objtype)
  File "/usr/lib/pritunl/usr/lib/python3.9/site-packages/pritunl/user/user.py", line 168, in is_device_key_override
    if not settings.user.device_key_override:
  File "/usr/lib/pritunl/usr/lib/python3.9/site-packages/pritunl/settings/group_base.py", line 8, in __getattr__
    raise AttributeError('%s instance has no attribute %r' % (
AttributeError: SettingsUser instance has no attribute 'device_key_override'

When I start the server I get this

[thawing-meadow-2334][2025-02-03 01:16:35,947][INFO] Starting vpn server
  server_id        = "xxx"
  instance_id      = "xx"
  instances        = []
  instances_count  = 0
  route_count      = 1
  network          = "xxxx"
  network6         = "xxx"
  dynamic_firewall = false
  geo_sort         = false
  force_connect    = false
  sso_auth         = false
  route_dns        = false
  device_auth      = false
  host_id          = "xx"
  host_address     = "10.0.0.4"
  host_address6    = "xxx"
  host_networks    = ["10.0.0.0/24"]
  cur_timestamp    = "2025-02-03 01:16:35.946864"
  libipt           = false
[thawing-meadow-2334][2025-02-03 01:16:35,974][ERROR] Server error occurred while running
Traceback (most recent call last):
  File "/usr/lib/pritunl/usr/lib/python3.9/site-packages/pritunl/server/instance.py", line 1627, in _run_thread
    self.generate_iptables_rules()
  File "/usr/lib/pritunl/usr/lib/python3.9/site-packages/pritunl/server/instance.py", line 610, in generate_iptables_rules
    for route in self.server.get_routes(
  File "/usr/lib/pritunl/usr/lib/python3.9/site-packages/pritunl/server/server.py", line 687, in get_routes
    if include_dns_routes and settings.vpn.dns_route:
  File "/usr/lib/pritunl/usr/lib/python3.9/site-packages/pritunl/settings/group_base.py", line 8, in __getattr__
    raise AttributeError('%s instance has no attribute %r' % (
AttributeError: SettingsVpn instance has no attribute 'dns_route'
  server_id   = "xxx"
  instance_id = "xxx"

There are no official Pritunl images on any of the cloud marketplaces other than Vultr and what those errors are showing is the codebase has been modified. The error in the original post in this thread was an actual error but not the errors you’re listing. You should delete the server and assume any information on it is compromised. Refer to the installation documentation on how to install Pritunl on a server.

The Vultr Pritunl image is built by Vultr but I have worked with them to insure it is correctly configured. No other third parties or cloud marketplaces provide approved installations of the software or an alternative way to purchase it.