LanBilling рдЦрд╛рддреЗ рдХреА рд╕реНрдерд┐рддрд┐ рдФрд░ RTU рд╡рд░реНрдЧ 4 рдФрд░ 5 рдХреЛ рд╕рд┐рдВрдХ рдХрд░реЗрдВ

рд╢реБрдн рджреЛрдкрд╣рд░, рдкреНрд░рд┐рдп рд╣рдм рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВред

рд▓реИрдирдмрд┐рд▓рд┐рдВрдЧ рдФрд░ рдЖрд░рдЯреАрдпреВ рдореЗрдВ рдЦрд╛рддреЗ рдХреА рд╕реНрдерд┐рддрд┐ рдХреЛ рд╕рд┐рдВрдХреНрд░рдирд╛рдЗрдЬрд╝ рдХрд░рдиреЗ рдХрд╛ рдПрдХ рдХрд╛рд░реНрдп рдерд╛ред
рдореИрдВ рдЖрдкрдХреЗ рд╕рд╛рде рдПрдХ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рд╡рд┐рдХрд▓реНрдк рд╕рд╛рдЭрд╛ рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВред

рдЗрд╕реНрддреЗрдорд╛рд▓ рдХрд┐рдпрд╛


рд▓рдирдмрд┐рд▓рд┐рдВрдЧ v.1.8
рдЖрд░рдЯреАрдпреВ рдХрдХреНрд╖рд╛ 4 рдФрд░ 5
php 5.3
mysql 5.0.51a-24 + lenn5
рдХреНрд░реЙрди

рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди


LanBilling рдЦрд╛рддрд╛ рд╕реНрдерд┐рддрд┐ рдбреЗрдЯрд╛ vgroups рддрд╛рд▓рд┐рдХрд╛ рдореЗрдВ рд╕рдВрдЧреНрд░рд╣реАрдд рд╣реИред

рддрд╛рд▓рд┐рдХрд╛ рдлрд╝реАрд▓реНрдб:

рдЕрд╡рд░реБрджреНрдз - рдЕрд╡рд░реБрджреНрдз рд╕реНрдерд┐рддрд┐ (0 - рдЦреБрд▓рд╛,> 0 - рдЕрд╡рд░реБрджреНрдз)
blk_req - рдЕрд╡рд░реБрджреНрдз рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЕрдиреБрд░реЛрдз рдХреА рд╕реНрдерд┐рддрд┐ (! =! рдФрд░! = рдЕрд╡рд░реБрджреНрдз - рдмреНрд▓реЙрдХ ; = 0 рдФрд░ = рдЕрд╡рд░реБрджреНрдз - рдмрдВрдж рдХрд░реЗрдВ)

рдХреНрд░реЛрди рдХрд╛рд░реНрдпреЛрдВ рдореЗрдВ рд╣рдо рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдЕрдВрддрд░рд╛рд▓ рдХреЗ рд╕рд╛рде php рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдирд┐рд╖реНрдкрд╛рджрди рдХреЛ рдЬреЛрдбрд╝рддреЗ рд╣реИрдВ, рдЬреЛ рдХреНрд╖реЗрддреНрд░ рдХреА рд╕реНрдерд┐рддрд┐ рдкреНрд░рд╛рдкреНрдд рдХрд░реЗрдЧрд╛
LanBilling рдбреЗрдЯрд╛рдмреЗрд╕ рд╕реЗ blk_req, рдорд╛рдирдХ RTU рд╕реНрдХреНрд░рд┐рдкреНрдЯ (set.aspx рдпрд╛ get.aspx) рдореЗрдВ рд╕реЗ рдПрдХ рдХреЛ рд╕рд╛рдмреБрди рдХрдорд╛рдВрдб рднреЗрдЬреЗрдВ рдФрд░, рдпрджрд┐ рд╕рд╣реА рд╣реИ, рддреЛ рдЕрд╡рд░реБрджреНрдз рдФрд░ blk_req рдлрд╝реАрд▓реНрдб рдХреЗ рдорд╛рди рдмрджрд▓реЗрдВ

рд╕рд╛рдмреБрди рдЕрдиреБрд░реЛрдз рднреЗрдЬрдиреЗ рдХрд╛ рдХрд╛рд░реНрдп

function xmlHttpsReq($xml,$type){ $ch = curl_init('https://IP_:/mobile_request/'.$type.'.aspx?admin'); curl_setopt($ch, CURLOPT_HEADER, 0); curl_setopt($ch, CURLOPT_RETURNTRANSFER,1); curl_setopt($ch, CURLOPT_POST,1); curl_setopt($ch, CURLOPT_POSTFIELDS, $xml); curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE); $data=curl_exec($ch); $result=substr($data,0,strpos($data,'</Root>')+7); if( curl_errno($ch) != 0 ) { die('CURL_error: ' . curl_errno($ch) . ', ' . curl_error($ch)); }; curl_close($ch); return $result; } 

рд╕рднреА рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдбреЗрдЯрд╛ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХрд╛ рдХрд╛рд░реНрдп

 function getUserList() { $data=xmlHttpsReq('<commands><command name="Get" table="User" /></commands>','get'); $xml = new SimpleXMLElement($data); foreach ($xml->command->user as $user) { $usr[]=$user; } return $usr; } 

рд▓реЙрдЧрд┐рди рджреНрд╡рд╛рд░рд╛ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдбреЗрдЯрд╛ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХрд╛ рдХрд╛рд░реНрдп

 function getUser($ID) { $data=xmlHttpsReq('<commands><command name="Get" table="User"><item><id>'.$ID.'</id></item></command></commands>','get'); $xml = new SimpleXMLElement($data); return $xml->command->user; } 

рдЦрд╛рддрд╛ рдкреИрд░рд╛рдореАрдЯрд░ рд╕реЗрдЯ рдХрд░рдиреЗ рдХрд╛ рдХрд╛рд░реНрдп

 function setUser($arr) { $converter = new Array2XML(); $obj = $converter->convert($arr); $data=xmlHttpsReq('<commands><command name="Edit" table="User">'.$obj.'</command></commands>','set'); $xml = new SimpleXMLElement($data); return $xml->command->item->result; } 

рд╕рд░рдгреА рдХреЛ xml рдореЗрдВ рдмрджрд▓рдиреЗ рдХреЗ рд▓рд┐рдП рдХрдХреНрд╖рд╛

 class Array2XML { private $writer; private $rootName = 'item'; function __construct() { $this->writer = new XMLWriter(); } public function convert($data) { $this->writer->openMemory(); $this->writer->startElement($this->rootName); if (is_array($data)) { $this->getXML($data); } $this->writer->endElement(); return $this->writer->outputMemory(); } public function setVersion($version) { $this->version = $version; } public function setEncoding($encoding) { $this->encoding = $encoding; } public function setRootName($rootName) { $this->rootName = $rootName; } private function getXML($data) { foreach ($data as $key => $val) { if (is_numeric($key)) { $key = 'key'.$key; } if (is_array($val)) { $this->writer->startElement($key); $this->getXML($val); $this->writer->endElement(); } else { $this->writer->writeElement($key, $val); } } } } 


рдЦрд╛рддрд╛ рд╕реЗрдЯрд┐рдВрдЧ рдмрджрд▓рдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдореЗрдВ рд▓реЙрдЧрд┐рди рдФрд░ GUID рдХреЛ рдЬрд╛рдирдирд╛ рд╣реЛрдЧрд╛ред
рд╡рд░реНрддрдорд╛рди рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдореЗрдВ, RTU API рдЖрдкрдХреЛ рд▓реЙрдЧрд┐рди ( рдЧреЗрдЯрдЕрдк рдлрд╝рдВрдХреНрд╢рди) рджреНрд╡рд╛рд░рд╛ рдЦрд╛рддреЗ рдХрд╛ GUID рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рдирд╣реАрдВ рджреЗрддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП GUU рдкрд╛рдиреЗ рдХреЗ рд▓рд┐рдП getUserList рдлрд╝рдВрдХреНрд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ

рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди

 mysql_connect(HOST,USERNAME,PASSWORD); mysql_select_db(DBNAME); //      RTU $allusers = getUserList(); //    LanBilling   $res = mysql_query("SELECT CASE WHEN blk_req != 0 AND blk_req = blocked THEN 'true' WHEN blk_req != 0 AND blocked = 0 THEN 'false' ELSE 'none' END AS blk, login FROM vgroups WHERE blk_req != 0"); while ($row=mysql_fetch_array($res)) { unset($user); foreach($allusers as $allusr) { if($allusr->id==$row['login']) { $user=$allusr; break; } } if (($user)&&($row['blk']!='none')) { if(setUser(array('id'=>$user->id,'guid'=>$user->guid,'enabled'=>$row['blk']))=='true') $ids[] = $row['vg_id']; //     RTU        LanBilling } else $ids[] = $row['vg_id']; } //   if (count(@$ids)>0) { $sql = 'UPDATE vgroups SET blocked = IF(blk_req = blocked, 0, blk_req), blk_req = 0, blk_req_user = "" WHERE vg_id IN (' . implode(',', $ids) . ')'; mysql_query($sql); } 


рдЯрд┐рдкреНрдкрдгрд┐рдпреЛрдВ рдХрд╛ рд╕реНрд╡рд╛рдЧрдд рд╣реИред

Source: https://habr.com/ru/post/In126412/


All Articles