V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
这是一个专门讨论 idea 的地方。

每个人的时间,资源是有限的,有的时候你或许能够想到很多 idea,但是由于现实的限制,却并不是所有的 idea 都能够成为现实。

那这个时候,不妨可以把那些 idea 分享出来,启发别人。
zhoudaiyu
V2EX  ›  奇思妙想

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

  •  
  •   zhoudaiyu · 169 天前 · 3246 次点击
    这是一个创建于 169 天前的主题,其中的信息可能已经有所发展或是发生改变。

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

    剪贴板同步.jpg

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

    image.png

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

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

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

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

    你这种做法个人感觉不太好。。你可以监听剪切板,别人就可以监听所有 db 操作,把数据搞一份出来。。
    zhoudaiyu
        25
    zhoudaiyu  
    OP
       168 天前
    @lonenol #24 数据库是本地的.db 文件,不暴露任何端口,别人无法连进来。orc 遇到代码不知道好使不好使

    @catror #22 可惜不是我们能控制的,我们只能用

    @klo424 #23 这个不太行,得能本地化部署
    dreamage
        26
    dreamage  
       168 天前
    公司规定限制的,LZ 还在想办法(帮公司同事)突破限制,不怕背锅么
    zhoudaiyu
        27
    zhoudaiyu  
    OP
       168 天前
    @dreamage #26 先自己偷摸用,暗中观察🐶
    gaobing
        28
    gaobing  
       168 天前
    raullf
        29
    raullf  
       167 天前 via iPhone
    我很好奇,16L 说的对噢,本来就是为了信息安全,单向联通 de
    你怎么从远程出来呢?
    raullf
        30
    raullf  
       167 天前 via iPhone
    另问架构图用什么软件画的呢,看着很美
    zhoudaiyu
        31
    zhoudaiyu  
    OP
       167 天前
    @raullf #30 processon
    hntangbohu
        32
    hntangbohu  
       167 天前
    qq 输入法好像有 云粘贴板
    klo424
        33
    klo424  
       167 天前
    @zhoudaiyu #25 本地化部署也能上外网吧?不能上外网的话,你想的那个方案也不行啊?
    zhoudaiyu
        34
    zhoudaiyu  
    OP
       167 天前
    @klo424 #33 能通过图中的服务器中转就可以
    5966
        35
    5966  
       165 天前 via iPhone
    我们这用的 Citrix Receiver 虚拟桌面,有权限的账号可以拷贝出文件!
    关于   ·   帮助文档   ·   API   ·   FAQ   ·   我们的愿景   ·   广告投放   ·   感谢   ·   实用小工具   ·   4388 人在线   最高记录 5497   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 26ms · UTC 06:02 · PVG 14:02 · LAX 23:02 · JFK 02:02
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.