开源 7.0.5 docker 版缺少重置资料库密码的相关代码


#1

我使用的是 开源 7.0.5 docker 版,镜像名称是“seafileltd/seafile-mc:7.0.5”。当我打开重置密码功能后,发现系统总是提醒我"无法重置这个资料库的密码。"。服务器手册上似乎也没说这是专业版功能,是忘了说明吗?图片是这样

image

在我的 seahub.log 中,是这样写的:

[ERROR] seahub.utils.repo:317 add_encrypted_repo_secret_key_to_database 'SeafileAPI' object has no attribute 'get_secret_key'

以下是代码追踪路径:

# 根据 seahub.log 的日志信息,可以找到以下文件
/opt/seafile/seafile-server-7.0.5/seahub/seahub/utils/repo.py
line 310:
def add_encrypted_repo_secret_key_to_database(repo_id, password):
    try:
        if not RepoSecretKey.objects.get_secret_key(repo_id):
            # get secret_key, then save it to database
            # 根据日志,问题应该出现在下面这一句
            secret_key = seafile_api.get_secret_key(repo_id, password)
            RepoSecretKey.objects.add_secret_key(repo_id, secret_key)
    except Exception as e:
        logger.error(e)
line 8:
from seaserv import seafile_api, ccnet_api

# 搜索文件名 'seaserv*' 可以找到,它在这个文件夹
/opt/seafile/seafile-server-7.0.5/seafile/lib64/python2.7/site-packages/seaserv
# 文件夹中 __init__.py 的第 43 行:
from api import seafile_api, ccnet_api
# 这个 from api 在同一个文件夹下,文件名是 api.py
/opt/seafile/seafile-server-7.0.5/seafile/lib64/python2.7/site-packages/seaserv/api.py
# 某一行: seafile_api = SeafileAPI()
# 同文件(api.py)中就有 class SeafileAPI 的定义,该类中的确没有写 get_secret_key 方法

# 我又将 专业 7.0.13 docker 版下载来比对。
# 镜像名 “docker.seafile.top/seafileltd/seafile-pro-mc:7.0.13”
# 该容器中的确有 get_secret_key 方法,就在下面这个路径
/opt/seafile/seafile-pro-server-7.0.13/seafile/lib/python2.7/site-packages/seaserv/api.py

这个代码在专业版中有,社区版没有。看样子似乎是专业版的特有功能。但在服务器手册中并没有提到资料库密码重置是专业版功能。所以这是代码有 bug 还是手册没写清楚呢?


#2

我们看一下这个问题


#3

这个功能开源版中没有,前端会显示重置密码,应该是个 bug,后续版本会隐藏掉。