同样是使用 jquey, 你已经使用了生成 helloworld 的上面那段代码生成了 helloworld ,下面你只要下面的代码就可以有一个 http shell :
var start_http_server2={'action':'new_http_server','ip':'','port':'1009'}; // 开启一个新的 http 服务器,监听在端口 1009 上 var reg_url={'action':'reg_url','type':'ajax_post','url':'/shell','host':'*:1009','go':shell}; //注册一个 url 地址 /shell ,绑定到 1008 端口上,设定这个 url 处理模式为 ajax post 模式,最后处理这个 url 的代码放到 shell var shell=`my ($r,$key,$data)=@_; my $rr=`$data`; $n->{send_resp}->($r,$key,{type=>'/shell',result=>'ok',g=>$rr}); `; url_post_data(url,JSON.stringify(start_http_server2)); url_post_data(url,JSON.stringify(reg_url));
Shell 代码只有三行:
my ($r,$key,$data)=@_; ### 接收参数 my $rr=`$data`; ### 执行,并取得结果 $n->{send_resp}->($r,$key,{type=>'/shell',result=>'ok',g=>$rr}); ### 通过 http 返回结果
测试执行效果:
var url2="http://test1.openerserver.com:1009/shell"; url_post_data(url2,'ls');
在 chrome 的 console.log 中看结果。
用 jquery :
var start_http_server={'action':'new_http_server','ip':'','port':'1008'}; // 开启一个新的 http 服务器,监听在端口 1008 上 var reg_url={'action':'reg_url','type':'http_get','url':'/helloworld','host':'*:1008','go':hello_fun}; //注册一个 url 地址 /helloworld ,绑定到 1008 端口上,设定这个 url 处理模式为 http get 模式,最后处理这个 url 的代码放到 hello_fun var hello_fun=`my ($r,$key)=@_; $n->{send_normal_resp}->($r,$key,'Hello Worlds'); `; //### 接收传入参数,$r 包含所有这个 http 请求相关信息,$key 包含该 http 请求的唯一 id //### 发送返回,返回内容是 html ,加入一个 hello world 字符串。 url_post_data(url,JSON.stringify(start_http_server)); url_post_data(url,JSON.stringify(reg_url)); var url="https://test1.openerserver.com:10008/op"; // 安装了 opener_server 的服务器地址: test1.openerserver.com var opener_flag='opener'; // 设定 http header 中 opener_flag 字段,相当于访问该 opener_server 的密码 function url_post_data(go,data){ $.ajax({ url: go, cache: false, headers: { opener_flag:opener_flag }, data: data, type: 'POST', dataType: 'json', success: function(data){ if (data.result=='ok') { console.log(data); }else{ console.log('error'); } }, error: function(dd,mm){ console.log('error:'); console.log(dd); console.log(mm); } }); }
在一个含有 jquery 代码的 html 页面上,执行上面的代码就可以了。
然后访问 http://test1.openervpn.com:1008/helloworld 就可以看到结果。
第 1 弹: t/320838
第 2 弹: t/321686
第 3 弹: t/322192
项目地址: https://github.com/openerserver/openerserver_perl
微博: http://weibo.com/openerserver
微信公众号: