使用WebDav server解决OmniFocus同步问题

问题是什么

近期Omnifocus 官方的同步server很卡顿,打开手机看看,iOS端已经3天没有同步成功过了。
而且动不动弹出需要鉴定的对话框。

怎么解决

使用第三方webDav。

走过的弯路

可选的第三方webDav并不多,一方面是国内云盘厂商都基本不支持。另一方面是国外的要么不能正常访问,要么网速很慢。
我有尝试过以下2个路径:

  1. 坚果云,已经和OmniFocus决裂了,无法使用。
  2. Box,国内可以正常使用,电脑端同步也没有问题,但是不知是不是我数据量太大的原因,iOS端搞了一天也没同步成功一次。
    教程见:https://sspai.com/post/43256

最终解决方案

需求分析

我的需求是,一台电脑、一台手机,它们的omnifocus能同步即可。
如果是公网环境,必须2台都联网,来能同步。
如果2台都联网,使用公网云上的WebDav服务器和局域网的WebDav服务器是没区别的,那么我往自己Mac上搭建一个WebDav服务器不久完了。不用再看任何云盘厂商的脸色,也不用去担心数据风险了,因为就在我本地。

可选方案

Mac本地搭建WebDav的方式有很多。

  1. 原生搭建,装Apache,配置WebDav。
  2. 使用WebDavNav(App Store直接装,免费),教程见:https://sspai.com/post/43154
  3. 使用webDav server(App Store直接装,¥25)。

落地方案

我最终选择了方案3,
1.原生搭建没有问题,后续电脑重启,重装、睡眠唤醒、改目录等还是稍显麻烦。
2.按道理WebDavNav是没有任何问题的,因为都是本地。可能是因为我个人原因,电脑端过了个把小时同步完,手机端压根没有同步成功。
3.webDav server是付费的,而且软件比较小众,没有显示评分,本来还是不放心的,但是看到是langui.net的,他家的很多软件我自己也在用,是靠谱的。就心疼买了。
搞完之后,简单的配置,首次同步1分钟以内,增量同步1s左右。啥也不说了。

电脑端:

在这里插入图片描述

手机端

在这里插入图片描述

后记

折磨一段时间的同步问题,终于结束。
做一个GTDer的动力又增强了一些。

  • 4
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 7
    评论
首先,WebDAV是一种基于HTTP协议的文件管理技术,可以通过HTTP协议对远程服务器上的文件进行读写操作。在WebDAV中,常常需要对用户进行鉴权,以确保访问的安全性。下面是使用getAttribute实现WebDAV鉴权并下载文件的相关代码: ```java protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { String username = (String) request.getAttribute("username"); String password = (String) request.getAttribute("password"); String filePath = request.getParameter("filePath"); if (authenticate(username, password)) { File file = new File(filePath); if (file.exists()) { response.setContentType("application/octet-stream"); response.setHeader("Content-Disposition", "attachment;filename=" + file.getName()); FileInputStream fis = new FileInputStream(file); OutputStream os = response.getOutputStream(); byte[] bytes = new byte[1024]; int length = 0; while ((length = fis.read(bytes)) != -1) { os.write(bytes, 0, length); } fis.close(); os.flush(); os.close(); } else { response.sendError(HttpServletResponse.SC_NOT_FOUND); } } else { response.sendError(HttpServletResponse.SC_UNAUTHORIZED); } } private boolean authenticate(String username, String password) { // 鉴权逻辑 return true; } ``` 在上述代码中,首先使用getAttribute方法获取传递过来的用户名和密码,然后调用authenticate方法进行鉴权。如果鉴权通过,就根据传递过来的文件路径读取文件并将文件内容写入到response的输出流中,实现文件下载的功能。如果鉴权失败,则返回401状态码,如果文件不存在,则返回404状态码。
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值