shadowsocks / shadowsocks-qt5

A cross-platform shadowsocks GUI client
GNU Lesser General Public License v3.0
7.97k stars 2.33k forks source link

[讨论] 内建C++/Qt的后端? #20

Closed librehat closed 9 years ago

librehat commented 9 years ago

目前Shadowsocks-Qt5其实只是一个shell的角色(图形前端),实际上最核心的功能是依赖于各个Shadowsocks后端(Python、libev、Go、NodeJS)。请在本issue下参与是否有必要用C++/Qt写一个后端并内建于Shadowsocks-Qt5的讨论。

好处

clowwindy commented 9 years ago

建议直接静态链接 shadowsocks-libev

librehat commented 9 years ago

@clowwindy Fantastic! 能否写个libshadowsocks的开发文档?应该就是调用local里面的函数吧。

clowwindy commented 9 years ago

https://github.com/madeye/shadowsocks-libev/pull/127

直接链接然后按照自己的需要写一个 ss-local 的 main 函数挂在 GUI 的 event loop 里面,或者单独开个线程跑,设置参数,加改参数后重启 eventloop 的逻辑就行了

librehat commented 9 years ago

@clowwindy 好,周末我再捣鼓一下。

另,对于Linux平台的话是动态链接libshadowsocks还是静态链接呢?

elvisw commented 9 years ago

个人觉得: Windows可以直接打包shadowsocks-libev的exe Linux可以把shadowsocks-libev作为依赖打包(不过发行版太多了,真要打的话一个debian的deb再加上一个ArchLinux的aur就让人抓狂了)

librehat commented 9 years ago

@elvisw

所以目前在等待一个shadowsocks-libev成熟的library方案。静态链接到ss-qt5是最好的办法。以后有时间的用C++/Qt5写一个library也是可行的。

elvisw commented 9 years ago

@librehat 静态链接的话就应该能看到日志了,不错,现在ss-qt5运行libev后端没日志实在蛋疼

librehat commented 9 years ago

@elvisw 在Linux下是有日志实时输出的,这个不是ss-qt5的问题呢,我觉得可能是MinGW在Windows下编译的问题,因为libev那边我也看了一下,没看到有缓存输出的地方,都是直接flush输出来的。

librehat commented 9 years ago

libshadowsocks分支已经能使用libev的library了。qt版的library也已经开始写了:https://github.com/librehat/libqtshadowsocks (远远没到能用的地步,欢迎填坑)