Update Python dependencies and support Ubuntu 22.04 and Debian 11
Add a new notification server
Support a user to generate multiple share links for a single file/folder
The notification server enables desktop syncing and drive clients to get notification of library changes immediately using websocket. There are two benefits:
Reduce the time for syncing new changes to local
Reduce the load of the server as periodically pulling is removed. There are significant reduction of load when you have 1000+ clients.
The notification server works with Seafile syncing client 9.0+ and drive client 3.0+.
Congrats on the release! I run seafile 10 community with nginx. For the new notification server: Do i need to port forward it manually or is there a new nginx config coming? Right now i don’t see anything in the documentation.
will there also be updated linux clients in the official repo? they’re still at 8.0.7, released a year ago, and from what you write are unable to use the notification feature, thus not reducing any load.
** Message: 16:17:00.130: seafile-controller.c(621): No seafevents.
Traceback (most recent call last):
File “/opt/seafile/seafile-server-10.0.1/seahub/thirdpart/bin/gunicorn”, line 5, in
from gunicorn.app.wsgiapp import run
File “/opt/seafile/seafile-server-10.0.1/seahub/thirdpart/gunicorn/app/wsgiapp.py”, line 9, in
from gunicorn.app.base import Application
File “/opt/seafile/seafile-server-10.0.1/seahub/thirdpart/gunicorn/app/base.py”, line 11, in
from gunicorn import util
File “/opt/seafile/seafile-server-10.0.1/seahub/thirdpart/gunicorn/util.py”, line 25, in
import pkg_resources
File “/opt/seafile/seafile-server-10.0.1/seahub/thirdpart/pkg_resources/init.py”, line 88, in
from pkg_resources.extern import platformdirs
File “”, line 971, in _find_and_load
File “”, line 955, in _find_and_load_unlocked
File “”, line 658, in _load_unlocked
File “”, line 571, in module_from_spec
File “/opt/seafile/seafile-server-10.0.1/seahub/thirdpart/pkg_resources/extern/init.py”, line 52, in create_module
return self.load_module(spec.name)
File “/opt/seafile/seafile-server-10.0.1/seahub/thirdpart/pkg_resources/extern/init.py”, line 37, in load_module import(extant)
File “/opt/seafile/seafile-server-10.0.1/seahub/thirdpart/pkg_resources/_vendor/platformdirs/init.py”, line 5
from future import annotations
^
SyntaxError: future feature annotations is not defined
@daniel.pan there seems to be a small mistake in the config with: proxy_set_header Upgrade $http_upgrade.
After i removed the backslash in \$http_upgrade everything started working fine.
what is the plan for linux clients? they’re stuck at version 8.0.7, current is 9.0.1, so linux users are already missing out on some fixes and features. the 2FA issue that the clients have with non-root installations is unsolved for one year now. how are you planning to handle this in the future? will there ever be updates to the linux clients?
Hi drmartin,
I’ve seen that same error on one of my servers. After much research and troubleshooting, in my case upgrading from Python 3.6 to something higher (3.9 in my case) fixed the problem.
This was not super easy as my Linux distro defaults to 3.6 and upgrading to 3.9 meant manually changing the symbolic link for /usr/bin/python3 to point to python3.9 instead of the default of 3.6.
My understanding from my research is “future feature annotations” is a feature/command in pythons >= 3.7, but I’m not a python person, so I could be wrong.
The linux clients will continue to upgrade. The notification server support is disabled for Linux clients since the 3rd party library is unavailable. Other updates are not affected.
We didn’t notice the non-root 2FA problem. We’ll look into it.
ideally, there should simply be a check for the installed version of the libwebsockets library during configure before the build. the notifiation feature could then be activated automatically depending on the result. if users manage to manually update the library, they could simply rebuild the client locally to also get that feature.
i’m looking forward to getting updated deb packages, thank you
I may have missed something, but I don’t see what you’re looking at this endpoint.
There is the /notification/ping endpoint you can access from your browser, which should answer {"ret": "pong"}. I suppose it’s designed to be enough to test the notification server.
Now if you want a more in depth test, you can open a websocket, for example in your browser console.
ws = new WebSocket('ws://127.0.0.1/notification')
Then generate a valid jwt token signed with your jwt_private_key (you’d better to set a dummy key without fancy characters). I used this tool (have I to say you shouldn’t copy production secrets to some random web app?) to build the token with the following payload: