Rexdf

The devil is in the Details.

owncloud-client登录出现Forbidden

| Comments

这几天发现树莓派上的owncloud-client登录不上了,退出登录后再登录,在输入完密码账户后,最后那一步总是提示”Error transferring …/remote.php/webdav/ server replied: Forbidden”。

如下图:

login failed owncloud-client on raspberry

一个月前应该都是用过的,而且win和手机的客户端端每天都在用,所以排除服务器故障。因为采用最小权限原则,树莓派上用的是一个单独账户,期初还怀疑账户权限问题,然而web登录正常,所以记起大约半个月前,owncloud和nextcloud同时更新过版本号。那大概是兼容性问题!因为树莓派的包大抵都很老,而且是armhf,可能是版本过低的缘故。

目前我的cross-build环境还没搭起来,所以只能找一下原因了。

调查

先看一下web界面左下角设置里面提供的WebDAV地址,https://1.1.1.1/remote.php/dav/files/admin/,咦,好像哪里不对! remote.php后面接的路径不对!

于是乎先找changelog,找了owncloud官方 server changelogclient changelog,搜webdav,果然看到Switch to new ownCloud server WebDAV endpointSwitch Webdav URL in field in navigation panel to the new endpoint的字样。

然后在github的owncloud/client里面release下载了2.2.4和2.5.0的源码,随便搜了一下。

$ grep -nr "/webdav/" client-2.2.4/
client-2.2.4/csync/tests/ownCloud/ownCloud/Test.pm:50:our $owncloud = "http://localhost/oc/remote.php/webdav/";
client-2.2.4/csync/tests/ownCloud/ownCloud/Test.pm:169:# http://localhost/owncloud/remote.php/webdav/t1-0543
...
$ grep -nr "/webdav/" client-2.5.0/
client-2.5.0/doc/owncloudcmd.rst:67: $ owncloudcmd /home/user/my_sync_folder https://carla:secret@server/owncloud/remote.php/webdav/
client-2.5.0/doc/owncloudcmd.rst:75: https://server/owncloud/remote.php/webdav/Music
...
$ grep -nr "/dav/" client-2.2.4/
$ grep -nr "/dav/" client-2.5.0/
client-2.5.0/src/libsync/account.cpp:64: return QLatin1String("/remote.php/dav/files/") + davUser() + QLatin1Char('/');
...

说明确实2.2.4的时候没有支持新的URL。不过对服务端源码10.0.9和10.0.10代码分析时没有找到问题关键所在,没有确定是哪一版本的服务端开始不支持remote.php/webdav/的。

解决

找了下,找到一个如何编译树莓派的owncloud-client

附:

为啥用的owncloud?因为它兼容性好,比如在IE8上面可以正常登录,不乱码。 其实Nextcloud和Seafile我都是一起跑着的。感觉上速度最快的是seafile。而Nextcloud特性比较多,比如rss源,然后手机上可以用客户端当做新闻阅读器,还有Nextcloud Talk等,因为我把能启用的插件都启用了,所以感觉上web ui速度比较慢,一般也就只当做下载器/新闻阅读器用了,存储都放到了简单稳定的owncloud了。而且owncloud也支持Nextcloud的office,均能在线编辑office文档,所以作为存储和办公来说,owncloud刚刚好。Nextcloud适合娱乐用。Seafile主要是账户设备数量限制,所以我基本上啥都不想存进去。

Comments