Closed mrnini closed 8 months ago
关于工作区指定这个可能不好修改了,会存在兼容性问题,要做的话可能提供一个选项,后续再看看
报错问题,我这边安装caddy试一试,我之前是使用坚果云测试的
关于工作区指定这个可能不好修改了,会存在兼容性问题,要做的话可能提供一个选项,后续再看看
报错问题,我这边安装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
}
}
或许现在调整带来的成本还是相对较低的
主要是我认为目前的方式是没问题的,只是个人喜好,目前的方式两边可以设置一样的值,无需操心子目录的事情。如果进行改变又将会有一批人认为还要关心子目录这又会很麻烦(不关心的话,两边配置一样那么备份和同步数据将混杂在一起,这会产生更严重的问题)
对于这个需求,我可以考虑添加一个新的编辑框在URL的下方,用于指定子目录
我的caddy搭建失败,我不太熟悉这个
webdav需要额外安装扩展么?我使用的docker搭建的
caddyfile如下
是的,webdav属于扩展插件,默认的caddy、及其docker镜像并不包含该内容。 有2种方案可以开启webdav: 方案1:
- 通过xcaddy编译
- 将编译的caddy封装到dockerfile中,并以此镜像构建容器。
方案2:
https://github.com/caddyserver/xcaddy
提示:可以通过 caddy list-modules 查看 caddy 文件是否包含需要的模块。
顺便问下,vscode的scriptcat插件能否修改端口,因为在docker中,vscode的容器重新构建会影响配置非常麻烦,因此通常的做法是开启一个范围的端口对外映射,容器内的服务调整端口来适配外部的访问。
是哪个插件呢?
vscode这个后续可以搞个配置进行修改
是哪个插件呢?
vscode这个后续可以搞个配置进行修改
webdav插件:http.handlers.webdav
我给你一个编译好的caddy:
容器版本:caddy v2.6.2 h1:wKoFIxpmOJLGl3QXoo6PNbYvGW4xLEgo32GPBEjWL8o=
这是我正在使用的caddy容器,以及caddy执行文件。
我这是mac m1 跑不了,不过知道是那个插件了,我试试
使用alist共享出来的Webdav连接失败,上面的脚本同步不报错也没同步,下面的Storage就弹登录框,用户名密码输入后无效,继续弹登录框,登录框关闭就失败了。账号信息验证失败: [object Object]。查出来是adguard拦截了。。。
adguard还拦截这个?
adguard还拦截这个?
adguard拦截了授权头,域名放白名单里也没用,关了就好了:
云同步账号信息验证失败: {"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":{}}}}
@YujiaCheng1996 看起来是必须得关闭,和Webdav的授权方式冲突了
同步:配置为 https://tools.a.com/ScriptCat,始终提示连接失败,调整 url 为 https://tools.a.com/ScriptCat/sync 后连接成功,但是目录变成了 d:\ ... \tools.a.com\ScriptCat\sync\ ScriptCat\sync\x.x。
这个问题看到了,是创建目录不允许导致的,看起来caddy不允许重复创建目录
当你重复备份的时候应该也会出现这个错误
bug已处理,可以使用这个包试试:https://github.com/scriptscat/scriptcat/actions/runs/5972527352/job/16203208348
需求后续再考虑如何实现,有一个目录了,还会再自动创建一个目录确实不够优雅
还有个问题,我多台电脑(大于3台)连接同一个webdav同步,都勾选了同步删除,但是我在一台电脑删除某个脚本后另一台电脑上的脚本还在,于是会反复的自动安装被删除的脚本,没有办法彻底删除。
@YujiaCheng1996 这个应该是bug,开一个新的issue吧,我怕忘记了
有一个目录了,还会再自动创建一个目录确实不够优雅
这个算需求了,哥哥觉得有必要的话,再新开一个issue后续讨论吧,先close了
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。