Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

WebDAV 功能的使用体验 以及 一些调整建议 #213

Closed
mrnini opened this issue Jul 13, 2023 · 17 comments
Closed

WebDAV 功能的使用体验 以及 一些调整建议 #213

mrnini opened this issue Jul 13, 2023 · 17 comments
Labels
bug Something isn't working enhancement New feature or request

Comments

@mrnini
Copy link

mrnini commented Jul 13, 2023

WebDAV 功能的使用体验 以及 一些调整建议

首先,感谢作者带来这么有趣的作品,此处省略1万字。
不可否认,WebDAV 结合caddy使用非常棒,是一个出色的 idea~!

caddy: v2.6.2
edge: 版本 114.0.1823.67 (正式版本) (64 位)
scriptCat: v0.14.1 安装自 https://microsoftedge.microsoft.com/addons?hl=zh-CN

环境配置:webdav 目录为 d:\ ... \tools.a.com\ScriptCat ,一个通用的域名,通过目录划分不同的工作区域,各个工作区域独立控制访问权限 。
鉴权类型:均为password。

下列为配置遇到的情况:
备份:配置为 https://tools.a.com/ScriptCat,会自动创建 d:\ ... \tools.a.com\ScriptCat\ ScriptCat\xxx.zip
同步:配置为 https://tools.a.com/ScriptCat,始终提示连接失败,调整 url 为 https://tools.a.com/ScriptCat/sync 后连接成功,但是目录变成了 d:\ ... \tools.a.com\ScriptCat\sync\ ScriptCat\sync\x.x
fileStorage:配置为 https://tools.a.com\ScriptCat\fs,打开目录报错,参阅api文档,应该需要app目录,而ScriptCat是根据上述配置猜的...,手动新建目录 d:\ ... \tools.a.com\ScriptCat\fs\ ScriptCat\app 不报错了,其实即便这里自动创建的目录也不对,与备份的是有冲突,最后就是备份zip文件与app文件夹 有同一个父级的ScriptCat,目录结构混乱了些。这里要说明下,手动配置的目的只是想看看打开目录是否不报错。

这几个项目配置下来感觉作者是想提供一些便利,但这似乎起到了反作用,对拥有良好系统使用习惯的用户并不怎么友好,自动处理的选择权应该还给用户,否则会非常混乱。

建议完全接受用户配的url,用户配置的地址即为ScriptCat的工作区域,有时候人工智能会显得非常笨拙,借此上述功能的调整建议如下:

交互:调整为一个页面,集中配置,使用同一个url设定,对于可能产生的目录给予样例展示。
备份:d:\ ... \tools.a.com\ScriptCat\ ScriptCat\xxx.zip;调整为:d:\ ... \tools.a.com\ScriptCat\ backup\xxx.zip
同步:d:\ ... \tools.a.com\ScriptCat\sync\ ScriptCat\sync\x.x,调整为 d:\ ... \tools.a.com\ScriptCat\ sync\x.x
fileStorage:直接创建 d:\ ... \tools.a.com\ScriptCat\ fileStorage\app

@CodFrm CodFrm added the enhancement New feature or request label Jul 13, 2023
@CodFrm
Copy link
Member

CodFrm commented Jul 13, 2023

关于工作区指定这个可能不好修改了,会存在兼容性问题,要做的话可能提供一个选项,后续再看看

报错问题,我这边安装caddy试一试,我之前是使用坚果云测试的

@mrnini
Copy link
Author

mrnini commented Jul 13, 2023

关于工作区指定这个可能不好修改了,会存在兼容性问题,要做的话可能提供一个选项,后续再看看

报错问题,我这边安装caddy试一试,我之前是使用坚果云测试的

我想我知道,可能这里已经产生了用户数据,这的确是一个问题,但是 来日方长,往后的路还很长,或许现在调整带来的成本还是相对较低的,或许可以参考,某些厂的做法,在工作区内通过版本划分建立文件夹,历史数据可以迁移或拷贝过来,平滑过渡的可能性还是可以有的,这样做不仅可以解决现有问题,对于以后的数据结构调整、功能扩展 该机制也可以提供良好的支持。

另附caddy的配置:

(hsts) {
	header {
		# enable HSTS
		Strict-Transport-Security max-age=31536000;
	}
}

(auth_cat) {
	basicauth {
		# caddy hash-password --plaintext cat
		cat $2a$14$2qFPQL7Kkh8ru2r/9dYtY.eUpI2kNsUQd5Mnr9iveUq8uIuJ27lau 
	}
}

tools.a.com {
	root * /srv/tools.a.com
	import hsts

	rewrite /ScriptCat /ScriptCat/
	route /ScriptCat/* {
		import auth_cat
		webdav 
	}
}

@CodFrm
Copy link
Member

CodFrm commented Jul 14, 2023

或许现在调整带来的成本还是相对较低的

主要是我认为目前的方式是没问题的,只是个人喜好,目前的方式两边可以设置一样的值,无需操心子目录的事情。如果进行改变又将会有一批人认为还要关心子目录这又会很麻烦(不关心的话,两边配置一样那么备份和同步数据将混杂在一起,这会产生更严重的问题)

对于这个需求,我可以考虑添加一个新的编辑框在URL的下方,用于指定子目录

image

@CodFrm CodFrm added the bug Something isn't working label Jul 26, 2023
@CodFrm
Copy link
Member

CodFrm commented Aug 15, 2023

我的caddy搭建失败,我不太熟悉这个

webdav需要额外安装扩展么?我使用的docker搭建的

caddyfile如下

image

@mrnini
Copy link
Author

mrnini commented Aug 20, 2023

是的,webdav属于扩展插件,默认的caddy、及其docker镜像并不包含该内容。
有2种方案可以开启webdav:
方案1:

  1. 通过xcaddy编译
  2. 将编译的caddy封装到dockerfile中,并以此镜像构建容器。

方案2:

  1. 通过xcaddy编译
  2. 将编译的caddy直接放入到容器中,替换掉原有的caddy,路径 /usr/bin/caddy

https://github.com/caddyserver/xcaddy

提示:可以通过 caddy list-modules 查看 caddy 文件是否包含需要的模块。

顺便问下,vscode的scriptcat插件能否修改端口,因为在docker中,vscode的容器重新构建会影响配置非常麻烦,因此通常的做法是开启一个范围的端口对外映射,容器内的服务调整端口来适配外部的访问。

@CodFrm
Copy link
Member

CodFrm commented Aug 20, 2023

是哪个插件呢?

vscode这个后续可以搞个配置进行修改

@mrnini
Copy link
Author

mrnini commented Aug 20, 2023

是哪个插件呢?

vscode这个后续可以搞个配置进行修改

webdav插件:http.handlers.webdav

image

我给你一个编译好的caddy:

容器版本:caddy v2.6.2 h1:wKoFIxpmOJLGl3QXoo6PNbYvGW4xLEgo32GPBEjWL8o=

caddy.zip

这是我正在使用的caddy容器,以及caddy执行文件。

@CodFrm
Copy link
Member

CodFrm commented Aug 21, 2023

我这是mac m1 跑不了,不过知道是那个插件了,我试试

@YujiaCheng1996
Copy link

YujiaCheng1996 commented Aug 23, 2023

使用alist共享出来的Webdav连接失败,上面的脚本同步不报错也没同步,下面的Storage就弹登录框,用户名密码输入后无效,继续弹登录框,登录框关闭就失败了。账号信息验证失败: [object Object]。查出来是adguard拦截了。。。

@CodFrm
Copy link
Member

CodFrm commented Aug 23, 2023

adguard还拦截这个?

@YujiaCheng1996
Copy link

YujiaCheng1996 commented Aug 23, 2023

adguard还拦截这个?

adguard拦截了授权头,域名放白名单里也没用,关了就好了:
1692756954570

云同步账号信息验证失败: {"error":{"status":401,"response":{"data":"","status":401,"statusText":"","headers":{"access-control-allow-origin":"*","cf-cache-status":"DYNAMIC","cf-ray":"xxxx","content-length":"0","date":"Wed, 23 Aug 2023 02:11:12 GMT","nel":"{\"success_fraction\":0,\"report_to\":\"cf-nel\",\"max_age\":604800}","server":"cloudflare","strict-transport-security":"max-age=31536000; includeSubDomains; preload","www-authenticate":"Basic realm=\"alist\"","x-content-type-options":"nosniff"},"config":{"transitional":{"silentJSONParsing":true,"forcedJSONParsing":true,"clarifyTimeoutError":false},"transformRequest":[null],"transformResponse":[null],"timeout":0,"xsrfCookieName":"XSRF-TOKEN","xsrfHeaderName":"X-XSRF-TOKEN","maxContentLength":-1,"maxBodyLength":-1,"env":{"FormData":null},"headers":{"Accept":"text/plain","Authorization":"xxxx","Depth":"0"},"url":"xxxx","method":"propfind","responseType":"text"},"request":{}}}}

@CodFrm
Copy link
Member

CodFrm commented Aug 25, 2023

@YujiaCheng1996 看起来是必须得关闭,和Webdav的授权方式冲突了

@CodFrm
Copy link
Member

CodFrm commented Aug 25, 2023

同步:配置为 https://tools.a.com/ScriptCat,始终提示连接失败,调整 url 为 https://tools.a.com/ScriptCat/sync 后连接成功,但是目录变成了 d:\ ... \tools.a.com\ScriptCat\sync\ ScriptCat\sync\x.x。

这个问题看到了,是创建目录不允许导致的,看起来caddy不允许重复创建目录

image

当你重复备份的时候应该也会出现这个错误

CodFrm added a commit that referenced this issue Aug 25, 2023
@CodFrm
Copy link
Member

CodFrm commented Aug 25, 2023

bug已处理,可以使用这个包试试:https://github.com/scriptscat/scriptcat/actions/runs/5972527352/job/16203208348

需求后续再考虑如何实现,有一个目录了,还会再自动创建一个目录确实不够优雅

@YujiaCheng1996
Copy link

还有个问题,我多台电脑(大于3台)连接同一个webdav同步,都勾选了同步删除,但是我在一台电脑删除某个脚本后另一台电脑上的脚本还在,于是会反复的自动安装被删除的脚本,没有办法彻底删除。

@CodFrm
Copy link
Member

CodFrm commented Jan 19, 2024

@YujiaCheng1996 这个应该是bug,开一个新的issue吧,我怕忘记了

@CodFrm
Copy link
Member

CodFrm commented Feb 23, 2024

有一个目录了,还会再自动创建一个目录确实不够优雅这个算需求了,哥哥觉得有必要的话,再新开一个issue后续讨论吧,先close了

@CodFrm CodFrm closed this as completed Feb 23, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
bug Something isn't working enhancement New feature or request
Projects
None yet
Development

No branches or pull requests

3 participants