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))); } }