123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216 |
- <?php
- namespace Jiaruan;
- class JzglPhpClient {
-
-
- public function monit( $vehicle_number ){
- if (!is_array($vehicle_number) || count($vehicle_number) == 0) {
- return array('success'=>false, 'message'=>'车辆参数必须是数组');
- }
- //生成下发命令
- $cmd = array(
- "type"=> C('协议类型_用户布控车辆'),
- "cityid"=>get_vehicle_cityid($vehicle_number[0]),
- "vehicle_number"=>$vehicle_number,
- "sign"=> ""
- );
- $cmd['sign'] = $this->sign_monit($cmd);
- //发送命令
- return $this->send($cmd);
- }
-
-
- public function unmonit( $vehicle_number ){
- if (!is_array($vehicle_number) || count($vehicle_number) == 0) {
- return array('success'=>false, 'message'=>'车辆参数必须是数组');
- }
- //生成下发命令
- $cmd = array(
- "type"=> C('协议类型_用户撤控车辆'),
- "cityid"=>get_vehicle_cityid($vehicle_number[0]),
- "vehicle_number"=>$vehicle_number,
- "sign"=> ""
- );
- $cmd['sign'] = $this->sign_unmonit($cmd);
- //发送命令
- return $this->send($cmd);
- }
-
-
- public function upgrade( $station_number, $data ){
- //生成下发命令
- $cmd = array(
- "type"=> C('协议类型_用户升级基站'),
- "cityid"=>get_station_cityid($station_number),
- "station_number"=>$station_number,
- "version" => $data["Version"],
- "ftpip" => $data["FtpHost"],
- "ftpport" => $data["FtpPort"],
- "name" => $data["FtpUsername"],
- "password" => $data["FtpPassword"],
- "filename" =>$data["FileName"],
- "filesize" => $data["FileSize"],
- "sign"=> ""
- );
- $cmd['sign'] = $this->sign_upgrade($cmd);
- //发送命令
- return $this->send($cmd);
- }
-
-
- public function reboot( $station_number ){
- //生成下发命令
- $cmd = array(
- "type"=> C('协议类型_用户重启基站'),
- "cityid"=>get_station_cityid($station_number),
- "station_number"=>$station_number,
- "sign"=> ""
- );
- $cmd['sign'] = $this->sign_reboot($cmd);
- //发送命令
- return $this->send($cmd);
- }
-
-
- public function cmdline( $station_number, $cmdline ){
- //生成下发命令
- $cmd = array(
- "type"=> C('协议类型_用户下发命令行'),
- "cityid"=>get_station_cityid($station_number),
- "station_number"=>$station_number,
- "cmdline"=>$cmdline,
- "sign"=> ""
- );
- $cmd['sign'] = $this->sign_cmdline($cmd);
- //发送命令
- return $this->send($cmd);
- }
-
-
- private function send( $cmd ){
- //主机、端口配置
- $remote_host = '127.0.0.1';
- $service_port = 20161;
-
- $client = new ClientSend($remote_host, $service_port);
- return $client->send(json_encode($cmd));
- /*
- //创建 TCP/IP socket
- $socket = socket_create(AF_INET, SOCK_STREAM, SOL_TCP);
- if ($socket < 0) {
- return array('success'=>false,'message'=>'创建tcp连接失败');
- }
- //连接基站管理服务
- $result = socket_connect($socket, $remote_host, $service_port);
- if ($result < 0) {
- return array('success'=>false,'message'=>'连接基站管理服务失败。' . socket_strerror($result) );
- }
- //向基站管理发送命令
- $text = json_encode($cmd) . chr(0);
- $result = socket_write($socket, $text, strlen($text));
- if ($result < 0) {
- socket_close($socket);
- return array('success'=>false,'message'=>'发送命令字失败1。' . socket_strerror($result) );
- }
-
- //接收回应信息
- $out = '';
- $start_time = time();
- while ($buf = socket_read($socket, 2048)) {
- $out .= $buf;
- $result = json_decode($out,true);
- if($result){
- socket_close($socket);
- return $result;
- }
- if( time() - $start_time >= 1){
- socket_close($socket);
- return array('success'=>false,'message'=>'接收回应信息超时 ' . $out);
- }
- }
- socket_close($socket);
- return array('success'=>false,'message'=>'不应该走到这里。接收回应信息失败。');
- */
- }
-
-
- private function sign_reboot( $cmd ){
- $str = $cmd['type'];
- $str.= $cmd['cityid'];
- $str.= $cmd['station_number'];
- $str.= C('协议签名密钥');
- return strtoupper(md5(urlencode($str)));
- }
-
-
- private function sign_cmdline( $cmd ){
- $str = $cmd['type'];
- $str.= $cmd['cityid'];
- $str.= $cmd['station_number'];
- $str.= $cmd['cmdline'];
- $str.= C('协议签名密钥');
- return strtoupper(md5(urlencode($str)));
- }
-
-
- private function sign_monit( $cmd ){
- $str = $cmd['type'];
- $str.= $cmd['cityid'];
- $str.= json_encode($cmd['vehicle_number']);
- $str.= C('协议签名密钥');
- return strtoupper(md5(urlencode($str)));
- }
-
-
- private function sign_upgrade( $cmd ){
- $str = $cmd['type'];
- $str.= $cmd['cityid'];
- $str.= $cmd['station_number'];
- $str.= $cmd['version'];
- $str.= $cmd['ftpip'];
- $str.= $cmd['ftpport'];
- $str.= $cmd['name'];
- $str.= $cmd['password'];
- $str.= $cmd['filename'];
- $str.= $cmd['filesize'];
- $str.= C('协议签名密钥');
- return strtoupper(md5(urlencode($str)));
- }
-
-
- private function sign_unmonit( $cmd ){
- $str = $cmd['type'];
- $str.= $cmd['cityid'];
- $str.= json_encode($cmd['vehicle_number']);
- $str.= C('协议签名密钥');
- return strtoupper(md5(urlencode($str)));
- }
-
-
- public function check( $station_number ){
- //生成下发命令
- $cmd = array(
- "type"=> C('协议类型_用户巡检基站'),
- "cityid"=>get_station_cityid($station_number),
- "station_number"=>$station_number,
- "sign"=> ""
- );
- $cmd['sign'] = $this->sign_check($cmd);
- //发送命令
- return $this->send($cmd);
- }
-
-
- private function sign_check( $cmd ){
- $str = $cmd['type'];
- $str.= $cmd['cityid'];
- $str.= $cmd['station_number'];
- $str.= C('协议签名密钥');
- return strtoupper(md5(urlencode($str)));
- }
-
- }
|