想做个剪贴板同步的程序,请大家来看看我的想法吧

2022-01-09 13:23:10 +08:00
 zhoudaiyu

​ 事情的背景是这样的:我们办公时要同时使用本地的电脑(编码、文档等)和一个远程桌面(用于一些运维操作,程序 debug 等,这个远程桌面是部署在服务器上的,通过华为的 AccessClient 连接),本地电脑可以文本到远程桌面服务器,但是反过来不可以,因此我想到了一个方法来实现从远程桌面将文本(后续可能做文件的)复制到办公电脑的办法,整体架构图如下:

​ 其实就是靠 ditto 把剪贴板的内容持久化到 sqlite 中,我自己在远程桌面端启动一个客户端去监听 sqlite 的 Main 表中的插入记录中的 mText 字段,mText 中存储内容大致如下:

​ 然后将内容推送到一台办公电脑和远程桌面都能连接的,运行着 kafka 的服务器上,然后办公电脑端启动一个客户端去消费 kafka 的某个 topic ,并同步到本地客户端,用户就可以选择要粘贴的内容了。

​ 但是还有几个细节需要问问大家:1 、关于生产 /消费到到哪个 topic ,是否还需要一个程序去确定和同步 topic 的信息? 2 、消息内容虽然可以通过 kafka 提供的 tls 加密保证不被窃取,但是怎么不保证有人故意去连接别的 topic 去获取他人的剪贴板内容,即如何保证生产和消费的两个客户端都只能消费特定的 topic ? 3 、关于语言,我想用 Go 实现上述的功能,原因是:( 1 )单文件,依赖少,方便部署;( 2 )破解的难度相比如脚本语言高一些;( 3 )可跨操作系统编译,大家觉得可以吗?

​ 请大家说说这个思路的可行性和不足之处,十分感谢!

4312 次点击
所在节点    奇思妙想
35 条回复
zhoudaiyu
2022-01-09 13:35:42 +08:00
补充一点,远程桌面是不可以连接 Internet 的,只能连接某些服务器,这些服务器也是在内网环境的,所以微信、QQ 等需要 Internet 连接的方式都行不通,所以才想了这种思路
minamike
2022-01-09 14:38:25 +08:00
为什么不用 rdp
rdp 不是可以双向复制粘贴吗
thunderw
2022-01-09 14:42:04 +08:00
@minamike 怎么感觉只能进不能出是管理需求呢。这是一个 feature ,不是一个 bug 吧。
zhoudaiyu
2022-01-09 14:42:16 +08:00
@minamike #2 因为用华为的那个客户端不是我能定的,在华为的客户端里就不能双向复制粘贴
zhoudaiyu
2022-01-09 14:43:43 +08:00
@thunderw #3 对,但是也没有限制不能用别的手段粘贴出来,因为可以用 ftp ,但是好多人抱怨麻烦,我也觉得是(狗头
minamike
2022-01-09 14:45:23 +08:00
@zhoudaiyu 华为的那个客户端有什么特别的功能吗= =
zhoudaiyu
2022-01-09 14:48:44 +08:00
@minamike #6 企业定制的一些功能吧,主要是这个限制非常麻烦,从里面粘贴东西出来内容要到文件里->把文件推送到 ftp 服务器->然后自己电脑 ftp 刷新->拉文件->打开文件
minamike
2022-01-09 14:51:11 +08:00
@zhoudaiyu 那为什么不直接用 iCloud 呢
zhoudaiyu
2022-01-09 14:52:34 +08:00
@minamike #8 远程桌面环境不能连接 Internet ,参考我的 1 楼
xinyana
2022-01-09 16:43:26 +08:00
之前想过这个问题也分析过 ditto 的表结构,楼主加油,静待佳音
zhoudaiyu
2022-01-09 17:07:10 +08:00
@xinyana 大佬,我没看过代码,就直接读的数据库,找的表和字段没错吧?想和你交流交流,不知方便否?
mscststs
2022-01-09 18:21:23 +08:00
xinyana
2022-01-09 20:28:29 +08:00
@zhoudaiyu tg haopian
starsky007
2022-01-09 21:23:22 +08:00
为什么要引入 ditto ,难道不能直接监听剪贴板变化?
zhoudaiyu
2022-01-09 21:37:01 +08:00
@starsky007 开发成本低,公司内部用
yufeng0681
2022-01-09 23:13:34 +08:00
1 、这种 copy 限制,都是为了信息安全而设定; 你应该找运维人员,让他去联系华为云电脑供应商,如何开启桌面云 copy 到本地电脑的设置项(一般都有这样的功能,可能不让大段的 copy ,500 字节之类的限制还是要做的);
2 、一般如果是运维生产系统,基本上就是 linux 上运行,极少在 windows 上跑服务。 如果真的允许你们用 ftp 做中转。那其实已经突破了隔离生产环境的概念,属于面子上做做信息安全(生产隔离)。 那直接让运维人员开启 ssh 中转服务,直接从本地系统通过跳板机登录到目标服务器,采集日志信息(权限约束为:只读, 不允许进程操作,文件删除等操作)
zhoudaiyu
2022-01-09 23:22:22 +08:00
@yufeng0681 我就是运维……我们真的允许 FTP 中转…….
yufeng0681
2022-01-09 23:25:51 +08:00
1 、桌面云有服务端管理功能,分配系统权限,分配硬件资源。 可以咨询一下华为对接的。如何改。
2 、允许 ftp ,那你就再开 ssh 服务呗,本地就能跳到目标服务器进行运维操作(只读类的,不蛮好么。 还开发软件干啥……
zhoudaiyu
2022-01-09 23:28:12 +08:00
@yufeng0681 但是我们用的这个也是我们总公司买的,我们没权限搞这些。SSH 就别想了,只有 FTP 可以用…
yufeng0681
2022-01-09 23:45:25 +08:00
你如果没有权限在都能访问到的机器 A 上安装 ssh ,那你怎么能在机器 A 上开 kafka 呢?而且还 两边机器都能连上机器 A 的 kafka 端口?
你具备的权限和条件要说得更详细一些。
你具体的运维场景详细说明,就不一定要用自己开发软件的办法,而是用别人的软件搭建就好。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/827112

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX