<pre name="code" class="python">use Mojolicious::Lite;
use JSON qw/encode_json decode_json/;
use Encode;
no strict;
no warnings;
use JSON;
use POSIX;
# /foo?user=sri
get '/api/env' => sub {
my $c = shift;
my $env = $c->param('env');
my $ip = $c->param('ip');
if ($env){
use DBI;
my $dbName = 'oadb';
my $dbUser = 'query';
my $dbUserPass = 'kjk7787czcb';
my @arr2="";
my $dbh = DBI->connect("dbi:Oracle:$dbName", $dbUser, $dbUserPass) or die "can't connect to database " ;
my $hostSql = qq{select IP,INFO,ENV from machine_info where ENV='env-$env' };
my ($a1, $a2, $a3,$a4,$a5,$a6,$a7,$a8,$a9);
my $selStmt = $dbh->prepare($hostSql);
$selStmt->bind_columns( \$a1, \$a2, \$a3);
$selStmt->execute();
while( $selStmt->fetch() ){ push (@arr2, "$a1 $a2 $a3" );
};
$c->render(json => \@arr2);
}elsif($ip){
use DBI;
my $dbName = 'oadb';
my $dbUser = 'query';
my $dbUserPass = 'kjk7787czcb';
my $dbh = DBI->connect("dbi:Oracle:$dbName", $dbUser, $dbUserPass) or die "can't connect to database " ;
my $hostSql = qq{select IP,INFO,ENV from machine_info where IP='$ip' };
my ($a1, $a2, $a3,$a4,$a5,$a6,$a7,$a8,$a9);
my @arr2="";
my $selStmt = $dbh->prepare($hostSql);
$selStmt->bind_columns(undef, \$a1, \$a2, \$a3);
$selStmt->execute();
while( $selStmt->fetch() ){
push (@arr2, "$a1 $a2 $a3" )
};
#sleep (30);
$c->render(json => \@arr2);
}};
get '/api/bus' => sub {
my $c = shift;
my $bus= $c->param('bus');
my $flag=$c->param('flag');
if( ($bus) || ($flag) ) {
use URI::Escape;
use Encode;
use JSON qw/encode_json decode_json/;
my $area="杭州";
$area=uri_escape_utf8("$area");
use LWP::UserAgent;
my $ua = LWP::UserAgent->new;
my @header = (
'accept'=> "application/json",
'content-type'=> "application/json",
'apikey'=> "3074a7f9926a4bbb484aa8bb366e5b87",
'User-Agent' => "Mozilla/8.0"
);
my $url = "http://apis.baidu.com/xiaota/bus_lines/buses_lines?city=$area&bus=$bus&direction=$flag";
my $request = HTTP::Request->new(GET=>"$url");
$request->header(@header);
my $response = $ua->request($request);
$content= $response->decoded_content;
$content =~ s/\\u([0-9a-fA-F]{4})/pack("U",,hex($1))/eg;
$content = encode_utf8($content);
my $json_out = $content ;
$json_out = decode_json($content);
@bus="";
#
foreach (@{($json_out->{data}->{stations})}){$bus="$_->{stateName}";push (@bus ,$bus)};
#$client->reply_msg($msg,"@bus")
print "\@bus is @bus\n";
$c->render(json => \@bus);
};
};
get '/api/ipsearch' => sub {
my $c = shift;
my $ip=$c->param('ip');
if ($ip){
use LWP::UserAgent;
my $ua = LWP::UserAgent->new;
my $host = "http://ip.taobao.com/service/getIpInfo.php?ip=$ip";
my $request = HTTP::Request->new(GET=>"$host");
my $response = $ua->request($request);
my $content= $response->decoded_content;
$content =~ s/\\u([0-9a-fA-F]{4})/pack("U",,hex($1))/eg;
$content=encode(utf8,$content);
$json_out = decode_json($content);
$c->render(json => $json_out->{data} );
};
};
get '/api/update' => sub {
my $dbName = 'oadb';
my $dbUser = 'query';
my $dbUserPass = 'kjk7787czcb';
my $dbh = DBI->connect("dbi:Oracle:$dbName", $dbUser, $dbUserPass,{
RaiseError => 1,
AutoCommit => 0
}) or die "can't connect to database " ;
my $c = shift;
my $id=$c->param('id');
eval{
$dbh->do("update query.test set id=100 where id =$id") or $!;
$dbh->commit();
$c->render(text => "update successed" );
};
if( $@ ) {
#warn "Database error: $DBI::errstr\n";
$dbh->rollback(); #just die if rollback is failing
$c->render(text => "update failed" );
};
};
get '/api/getcode' => sub{
my $c = shift;
my $env = $c->param('env');
my $phone = $c->param('phone');
print "\$env is $env\n";
print "\$phone is $phone\n";
if ($env eq "zj"){
@arr1=();
@arr2=();
$str="";
@arr_out=();
@arr=();
my $starttime=strftime("%Y%m%d%H%M%S",localtime());
print "starttime is $starttime\n";
open (LOG1 ,"<",'/data01/applog_backup/zj-api01-catalina.out') or die $!;
while (<LOG1>) {
#2016-03-09 09:35:12,380 INFO com.zjzc.thirdparty.sms.SMSUtils - Send message:您的验证码为132435,本验证码5分钟内有效。 to phoneNo:18072722237 succeed!
if ( ($phone) and ($_ =~/$phone/) and ($_ =~/SMSUtils/) ){$str=$_;
my $d=encode_utf8('验证');
next if ($str !~ /$d/);
print "\$str is $str\n";
push (@arr1 ,$str);
}};
close LOG1;
open (LOG2 ,"<",'/data01/applog_backup/zj-api02-catalina.out') or die $!;
while (<LOG2>) {
if (($phone) and ($_ =~/$phone/) and ($_ =~/SMSUtils/) ){$str= $_;
my $d=encode_utf8('验证');
next if ($str !~ /$d/);
print "\$str is $str\n";
push (@arr2 ,$str);
}};
close LOG2;
my @arr=($arr1[-1], $arr2[-1]);
print "\@arr ---> @arr\n";
if (($arr1[-1]) or ($arr2[-1])){
foreach (@arr){
##2015-11-04 15:51:54,134 DEBUG com.zjzc.thirdparty.sms.SMSSendThread
##2016-03-09 09:35:12,380 INFO com.zjzc.thirdparty.sms.SMSUtils - Send message:您的验证码为132435,本验证码5分钟内有效。 to phoneNo:18072722237 succeed!
if ($_ =~ /([0-9]{4}-[0-9]{1,2}-[0-9]{2}\s+[0-9]{2}:[0-9]{2}:[0-9]{2}.*?)\s+(.*?Send message:)\s*(.*?)(to\s+phoneNo:\s*[0-9]{11}).*/){
$a1=$1;
$a2=$2;
$a3=$3;
$a4=$4;
##微信是UTF-8字符集
my $endtime=strftime("%Y%m%d%H%M%S",localtime());
my $d=encode_utf8('验证');
if ($a3 =~/$d/){
#$msg->reply("\@$friend $a1-$a3-$a4");
print "come in\n";
$a3=decode_utf8("$a3");
##encode("utf8",decode("gbk","格式为:中均/温金 客户手机号"))
#@content=($a1,$a3,$a4);
my @content=("$a1","$a3","$a4");
my $href= \@content;
push (@arr_out ,$href);
print "endtime is $endtime\n";
}
};
};
$c->render(json => \@arr_out );
}
else{ $a5="$phone--ZJ没有找到需要的验证码信息";
$c->render(text => "$a5" );
}
}elsif($env eq "wj"){
@arr1=();
@arr2=();
$str="";
@arr_out=();
@arr=();
my $starttime=strftime("%Y%m%d%H%M%S",localtime());
print "starttime is $starttime\n";
open (LOG1 ,"<",'/data01/applog_backup/wj-api01-catalina.out') or die $!;
while (<LOG1>) {
#2016-03-09 09:35:12,380 INFO com.zjzc.thirdparty.sms.SMSUtils - Send message:您的验证码为132435,本验证码5分钟内有效。 to phoneNo:18072722237 succeed!
if ( ($phone) and ($_ =~/$phone/) and ($_ =~/SMSUtils/) ){$str=$_;
my $d=encode_utf8('验证');
next if ($str !~ /$d/);
print "\$str is $str\n";
push (@arr1 ,$str);
}};
close LOG1;
open (LOG2 ,"<",'/data01/applog_backup/wj-api02-catalina.out') or die $!;
while (<LOG2>) {
if ( ($phone) and ($_ =~/$phone/) and ($_ =~/SMSUtils/) ){$str=$_;
my $d=encode_utf8('验证');
next if ($str !~ /$d/);
print "\$str is $str\n";
push (@arr2 ,$str);
}};
close LOG2;
my @arr=($arr1[-1], $arr2[-1]);
print "\@arr ---> @arr\n";
if (($arr1[-1]) or ($arr2[-1])){
foreach (@arr){
##2015-11-04 15:51:54,134 DEBUG com.zjzc.thirdparty.sms.SMSSendThread
##2016-03-09 09:35:12,380 INFO com.zjzc.thirdparty.sms.SMSUtils - Send message:您的验证码为132435,本验证码5分钟内有效。 to phoneNo:18072722237 succeed!
if ($_ =~ /([0-9]{4}-[0-9]{1,2}-[0-9]{2}\s+[0-9]{2}:[0-9]{2}:[0-9]{2}.*?)\s+(.*?Send message:)\s*(.*?)(to\s+phoneNo:\s*[0-9]{11}).*/){
$a1=$1;
$a2=$2;
$a3=$3;
$a4=$4;
##微信是UTF-8字符集
my $endtime=strftime("%Y%m%d%H%M%S",localtime());
my $d=encode_utf8('验证');
if ($a3 =~/$d/){
#$msg->reply("\@$friend $a1-$a3-$a4");
print "come in\n";
$a3=decode_utf8("$a3");
##encode("utf8",decode("gbk","格式为:中均/温金 客户手机号"))
#@content=($a1,$a3,$a4);
my @content=($a1,$a3,$a4);
my $href= \@content;
push (@arr_out ,$href);
# print "\@arr_out is @arr_out\n";
#$c->render(text => ("$a1,$a3,$a4") );
print "endtime is $endtime\n";
}
};
};
$c->render(json => \@arr_out );
}
else{ $a5="$phone--WJ没有找到需要的验证码信息";
$c->render(text => "$a5" );
}
}
};
app->start;