精易论坛

标题: 易语言+PHPwai网转发,自定通讯协yi,无需额外扩展,会易语言就会写服务端 [打印本页]

作者: KServer    时间: 2020-2-5 22:41
标题: 易语言+PHPwai网转发,自定通讯协yi,无需额外扩展,会易语言就会写服务端
本帖最后由 KServer 于 2020-2-6 01:25 编辑
php采用workerman的gateway组件进行的编写。
易语言程序仅调用精易模块和鱼刺多线程模块,整个架构比较简单,只要稍微懂点易语言都可以操作,大雕勿扰================================================
结构介绍:
php放在公网服务器上进行服务(vps、独立服务器都可以,虚拟主机需要独立IP可以开端口的具体我没试过)
易语言放在nei网连接到php的服务端口,建立连接,发送验证binary
除了验证binary包以外,其他的均为加密传输,无惧窃听拦截,就算拦截到验证binary包,不知道私钥(暂且称呼为私钥)一样无法破Jbinary,也可以选择不加密
加密算法有AES,DES,RC2,RC4等,自行选择也可以说这就是一个内网穿透框架


暂时仅预留了多内网客户端接口,均衡功能还未实现,最好只用一个内网客户端,否则所有的内网客户端会同时受到通知~~~
注:binary = shuju 精易屏蔽了这个词,数/据

功能简介:
外网客户端的connect/receive/close 都会转发到内网服务端,内网服务端处理完后可以返回操作给外网服务端,支持send/sendAll/Close

映射通讯数据结构(示例中已处理沾包):
{byte isCrypt}{int Length}{Text Json}

搭建需求:
PHP端:VPS/服务器或可以开端口的虚拟主机,需要启用(pcntl、posix),支持 Windows && Linux,具体请见workerman开发文档
易语言端:无所谓,自定义自己的协yi就行了,什么http,ws等,都可以自行处理,只要是tcp就行了

肯定有人要问为什么不用swoole
本来是向用swoole的,但是尝试了一下后发现虽然效率很高,但是作为底层扩展,不是那么容易上手,文档也不是太全,增加了使用门槛,遇到bug的时候直接懵逼,作为映射服务端不太友好。so

上图:PHP仅需设置以下参数(不设置也可以直接用)
(一定要在防火墙开放端口,没有防火墙的当我没说)







示例里面采用的易语言自带客户组件,用户可以自行更换,有条件的可以自己重写协议



安装方法:
将 GatewayWorker 整个上传服务器(PHP版本必须≥7.0.0)
config.php => GatewayWorker/Applications/ephpSrv/config.php

Linux:切换至 GatewayWorker 目录,调试方式运行php startSrv.php start(守护模式为 php startSrv.php start -d,无日志输出)
Windows:执行 GatewayWorker 目录中的,startWinSrv.bat
具体停止和操作请看workerman文档 http://doc2.workerman.net/start-and-stop.html


易语言:
打开示例,按需求修改,运行,ok!


注意:
可能出现Connect 比 recv 后到达,close 可能会延迟到达或者比recv先到达,暂时没得整,有能力的自行解决一下
综合上述可以说是不安全的内网映射框架,一般情况够用了
PHP源码:
ephpSrv.rar (117.21 KB, 下载次数: 153)

易语言源码:

WorkerMan.rar (851.79 KB, 下载次数: 204)

===============================================
太闲了,没事做,有问题的可以回复问我
不接单

顺便说一下,鱼刺的线程池是真的好用,点个赞,精易模块的线程池,我用了半天没搞起来,上来就蹦






祝大家身体健康


作者: KServer    时间: 2020-2-6 08:50
怎么发出去了
作者: xiaowukeji    时间: 2020-2-6 09:51
厉害  一看就是高手
作者: 六升臣    时间: 2020-2-6 12:31
这个真牛比
作者: 卓胜软件开发    时间: 2020-2-6 12:41
提示: 作者被禁止或删除 内容自动屏蔽
作者: wuqingg    时间: 2020-2-6 13:23
印度趁机攻击我们了,想想办法干它GR的
作者: beepsanta    时间: 2020-2-6 17:28
谢谢分享  
作者: wjswzj0    时间: 2020-2-6 19:13
支持开源~!感谢分享
作者: KServer    时间: 2020-2-6 20:23

作者: 深圳梦    时间: 2020-2-6 21:45
支持开源~!感谢分享
作者: 罗泠雨人    时间: 2020-2-6 23:25
感谢分享了~~~~~~~~
作者: 流浪的三毛    时间: 2020-2-7 03:54
用不到,感谢分享。很给力。
作者: mood100    时间: 2020-2-7 12:20
学习收藏了,赞一个
作者: 白小怒    时间: 2020-2-11 22:10
谢谢分享
作者: 无心风云    时间: 2020-2-14 10:55
楼主,这个可以实现什么功能
作者: 爱世界梦    时间: 2020-2-14 15:26
打我打我大娃娃
作者: 爱世界梦    时间: 2020-2-14 15:26
の阿瓦打我的娃
作者: 爱世界梦    时间: 2020-2-14 15:27
挖到我?瓦达你
作者: 爱世界梦    时间: 2020-2-14 15:27
xaosduawbd8wgdbawd89wa去单位打我
作者: 爱世界梦    时间: 2020-2-14 15:27
打我的vaw你爱我的娃
作者: 爱世界梦    时间: 2020-2-14 15:27
打我打我的娃二大王
作者: KServer    时间: 2020-2-14 22:45
无心风云 发表于 2020-2-14 10:55
楼主,这个可以实现什么功能

看你自己需要什么功能,自行定制,比如需要公网访问本地的API,机器人,网络验证,各种TCP服务等
作者: vgoodlee    时间: 2020-2-15 00:40
这个源码还不错啊
作者: hizdf    时间: 2020-2-18 12:25
支持开源~!感谢分享
作者: 回忆寄往事    时间: 2020-2-19 18:25
学习学习                                                      
作者: xxiaoshujjun    时间: 2020-2-19 18:44
这个是不是类似e2ee的功能
作者: 179816129    时间: 2020-2-19 19:03
学习学习学习学习
作者: crazyyhl    时间: 2020-2-19 21:16
支持开源~!感谢分享
作者: love886    时间: 2020-2-20 03:31
11111111111111111
作者: xxiaoshujjun    时间: 2020-2-22 21:10
这个是不是就是nei网穿透功能
作者: kyo9766    时间: 2020-2-23 08:16
看大佬们的讨论,好像可以实现nei网穿透,小白暂时用不到,但是代码很给力,感谢分享
作者: 镇魂    时间: 2020-2-23 10:01
    收藏下!
作者: 镇魂    时间: 2020-2-23 10:01
感谢楼主分享,不知有何意义
作者: 镇魂    时间: 2020-2-23 10:06
点了下载 没反应 提示三十分钟内不重复扣币 但你倒是给我出现链接让我下载啊
作者: 251855753    时间: 2020-2-27 05:34
大佬啊;这是咋回事?
ACCEPT     tcp  --  0.0.0.0/0            0.0.0.0/0            tcp dpt:8700 ctstate NEW,UNTRACKED
ACCEPT     tcp  --  0.0.0.0/0            0.0.0.0/0            tcp dpt:52800 ctstate NEW,UNTRACKED

Chain IN_public_deny (1 references)
target     prot opt source               destination

Chain IN_public_log (1 references)
target     prot opt source               destination

Chain OUTPUT_direct (1 references)
target     prot opt source               destination
[root@izbp1dtymq8s2wrk29ya2dz im]# php startSrv.php start
Workerman[startSrv.php] start in DEBUG mode
pcntl_signal() has been disabled for security reasons in file /www/wwwroot/im/vendor/workerman/workerman/Worker.php on line 1100
pcntl_signal() has been disabled for security reasons in file /www/wwwroot/im/vendor/workerman/workerman/Worker.php on line 1102
pcntl_signal() has been disabled for security reasons in file /www/wwwroot/im/vendor/workerman/workerman/Worker.php on line 1104
pcntl_signal() has been disabled for security reasons in file /www/wwwroot/im/vendor/workerman/workerman/Worker.php on line 1106
pcntl_signal() has been disabled for security reasons in file /www/wwwroot/im/vendor/workerman/workerman/Worker.php on line 1108
pcntl_signal() has been disabled for security reasons in file /www/wwwroot/im/vendor/workerman/workerman/Worker.php on line 1110
pcntl_signal() has been disabled for security reasons in file /www/wwwroot/im/vendor/workerman/workerman/Worker.php on line 1112
------------------------------------------- WORKERMAN --------------------------------------------
Workerman version:3.5.26          PHP version:7.2.18
-------------------------------------------- WORKERS ---------------------------------------------
proto   user            worker            listen                    processes    status
tcp     root            ePHPSrv_Worker    none                      2             [OK]
tcp     root            ePHPSrv           packs://0.0.0.0:8700      2             [OK]
tcp     root            Register          text://127.0.0.1:52800    1             [OK]
--------------------------------------------------------------------------------------------------
Press Ctrl+C to stop. Start success.
pcntl_fork() has been disabled for security reasons in file /www/wwwroot/im/vendor/workerman/workerman/Worker.php on line 1507
PHP Fatal error:  Uncaught Exception: forkOneWorker fail in /www/wwwroot/im/vendor/workerman/workerman/Worker.php:1539
Stack trace:
#0 /www/wwwroot/im/vendor/workerman/workerman/Worker.php(1364): Workerman\Worker::forkOneWorkerForLinux(Object(GatewayWorker\BusinessWorker))
#1 /www/wwwroot/im/vendor/workerman/workerman/Worker.php(1338): Workerman\Worker::forkWorkersForLinux()
#2 /www/wwwroot/im/vendor/workerman/workerman/Worker.php(539): Workerman\Worker::forkWorkers()
#3 /www/wwwroot/im/startSrv.php(39): Workerman\Worker::runAll()
#4 {main}
  thrown in /www/wwwroot/im/vendor/workerman/workerman/Worker.php on line 1539

Fatal error: Uncaught Exception: forkOneWorker fail in /www/wwwroot/im/vendor/workerman/workerman/Worker.php:1539
Stack trace:
#0 /www/wwwroot/im/vendor/workerman/workerman/Worker.php(1364): Workerman\Worker::forkOneWorkerForLinux(Object(GatewayWorker\BusinessWorker))
#1 /www/wwwroot/im/vendor/workerman/workerman/Worker.php(1338): Workerman\Worker::forkWorkersForLinux()
#2 /www/wwwroot/im/vendor/workerman/workerman/Worker.php(539): Workerman\Worker::forkWorkers()
#3 /www/wwwroot/im/startSrv.php(39): Workerman\Worker::runAll()
#4 {main}
  thrown in /www/wwwroot/im/vendor/workerman/workerman/Worker.php on line 1539

作者: wjswzj0    时间: 2020-3-2 13:06
感谢分享,很给力!~
作者: KServer    时间: 2020-3-5 16:08
251855753 发表于 2020-2-27 05:34
大佬啊;这是咋回事?
ACCEPT     tcp  --  0.0.0.0/0            0.0.0.0/0            tcp dpt:8700 cts ...

php需要启用 pcntl、posix 函数,在 disable_functions 中取消禁用
作者: fengyewl    时间: 2020-3-5 22:15
感谢分享,很给力!~
作者: gaoqing    时间: 2020-3-9 08:19
谢谢分享!
作者: gaoqing    时间: 2020-3-9 08:19
这个不错去啊!
作者: long467899509    时间: 2020-3-25 19:57
支持开源~!感谢分享
作者: xbp2013    时间: 2020-4-4 22:15
谢谢分享,辛苦了
作者: 宋大宝    时间: 2020-4-13 19:44
切格瓦拉前来报到
作者: KServer    时间: 2020-7-19 19:29
自己顶
作者: chongtianlong    时间: 2021-9-1 16:05
重复扣币很严重
作者: 格调13    时间: 2021-9-8 13:23
支持开源~!感谢分享
作者: Dream520    时间: 2021-9-8 13:39

支持开源~!感谢分享
作者: 神灯全图销售    时间: 2021-12-11 01:41
大佬解压密码是啥啊。
作者: 金叶    时间: 2023-3-1 23:30
神灯全图销售 发表于 2021-12-11 01:41
大佬解压密码是啥啊。

没密码真是个难题
作者: 已注销571294    时间: 2023-3-11 18:15
提示: 作者被禁止或删除 内容自动屏蔽
作者: 已注销571294    时间: 2023-3-11 18:15
提示: 作者被禁止或删除 内容自动屏蔽




欢迎光临 精易论坛 (https://125.confly.eu.org/) Powered by Discuz! X3.4