三行代码实现 http shell, OPener_Server 第四弹 (更多教程更新中...)

2016-11-22 21:50:16 +08:00
 openercn

Http shell

同样是使用 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 中看结果。

附上 Hello world 教程

用 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 就可以看到结果。

OPener_Server 教程:

第 1 弹: https://www.v2ex.com/t/320838
第 2 弹: https://www.v2ex.com/t/321686
第 3 弹: https://www.v2ex.com/t/322192

项目地址: https://github.com/openerserver/openerserver_perl

微博: http://weibo.com/openerserver

微信公众号:

2289 次点击
所在节点    程序员
1 条回复
openervpn
2016-11-22 22:16:12 +08:00
关注中....

希望楼主再接再厉

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

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

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

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

© 2021 V2EX