Advertisement
cdsatrian

device

Jul 9th, 2019
268
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
PHP 16.15 KB | None | 0 0
  1. <?php
  2. ini_set('memory_limit','8192M');
  3. ini_set('max_execution_time', 900);
  4. function get_list_tables($url){
  5.   $tables=file_get_contents($url);
  6.   $arr_tables=json_decode($tables,true);
  7.   $list_table=array();
  8.   foreach($arr_tables as $d){
  9.     $temp='RAW_'.$d['vh_alias'].'_'.$d['vh_name'];
  10.     $temp=str_replace(array('.','-'),'_',$temp);
  11.     $list_table[]=array(strtoupper($temp),$d['links']['2']['href']);
  12.   }
  13.   return $list_table;
  14. }
  15.  
  16. function insert_data($table, $con){
  17.   $return=false;
  18.   if(substr($table[0],0,7)!='RAW_JUP'){
  19.     $nodes=file_get_contents($table[1]);
  20.     $arr_nodes=json_decode($nodes,true);
  21.     $list_nodes=array();
  22.     echo '<pre>';
  23.  
  24.     //-- get table structure
  25.     $temp=reset($arr_nodes);
  26.     $list_fields=array();
  27.     foreach($temp as $key=>$value){
  28.       if(!is_array($value)){
  29.         $list_fields[]=strtoupper($key);
  30.       }else{
  31.         $id=$ix=0;
  32.         foreach($value as $k=>$val){
  33.           if($ix!=$k){$ix=$k;++$id;};
  34.           if(!is_numeric($k)){
  35.             if(!is_array($val)){
  36.               $list_fields[]=strtoupper($key.'_'.$k);
  37.             }else{
  38.               $jd=$jx=0;
  39.               foreach($val as $idx=>$va){
  40.                 if($jx!=$idx){$jx=$idx;++$jd;};
  41.                 if(!is_numeric($idx)){
  42.                   $list_fields[]=strtoupper($key.'_'.$k.'_'.$idx);
  43.                 }else{
  44.                   foreach($va as $kx=>$kv){
  45.                     $list_fields[]=strtoupper($key.'_'.$k.'_'.$kx.'_'.$jd);
  46.                   }
  47.                 }
  48.               }
  49.             }
  50.           }else{
  51.             foreach($val as $i=>$v){
  52.               $list_fields[]=strtoupper($key.'_'.$i.'_'.$id);
  53.             }
  54.           }
  55.         }
  56.       }
  57.     }
  58.     echo "[START] processing table  {$table[0]}\n";
  59.     $sql_check="SELECT COUNT(1) AS jml FROM user_tables WHERE TABLE_NAME='{$table[0]}'";
  60.     $stmt = oci_parse($con,$sql_check)or die('statement error' . $sql_check);;
  61.     oci_execute($stmt, OCI_COMMIT_ON_SUCCESS )or die('execute error ' . $sql_check);
  62.     $row=oci_fetch_assoc($stmt);
  63.     oci_free_statement($stmt);
  64.     if($row['JML']==0){
  65.     //-- create a table based on given structure
  66.       $sql_create="CREATE TABLE \"IF_INTRANET_JAH\".\"{$table[0]}\"( ";
  67.       foreach($list_fields as $field){
  68.         $sql_create.="\"{$field}\" VARCHAR2(".(strtoupper($field)=='DESCRIPTION'?'10':'2')."00 BYTE), ";
  69.       }
  70.       $sql_create.="\"DATE_IN\" TIMESTAMP (6) DEFAULT SYSDATE NOT NULL ENABLE ) SEGMENT CREATION IMMEDIATE PCTFREE 10 PCTUSED 40 INITRANS 1 MAXTRANS 255 NOCOMPRESS LOGGING STORAGE(INITIAL 65536 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645 PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT FLASH_CACHE DEFAULT CELL_FLASH_CACHE DEFAULT) TABLESPACE \"IF_INTRANET_JAH_DATA\" ";
  71.       $stmt = oci_parse($con,$sql_create)or die('statement error' . $sql_create);;
  72.       oci_execute($stmt, OCI_COMMIT_ON_SUCCESS )or die('execute error ' . $sql_create);
  73.       oci_free_statement($stmt);
  74.     }
  75.     //-- insert data to db table
  76.     $find=array("'","&");
  77.     $replace=array("","n");
  78.     $fields=implode('","',$list_fields);
  79.     reset($arr_nodes);
  80.     $count=0;
  81.     $sql_insert="INSERT ALL ";
  82.     foreach($arr_nodes as $temp){
  83.       if(++$count==10){
  84.         $sql_insert.="SELECT * FROM dual";
  85.         $stmt = oci_parse($con,$sql_insert)or die('statement error' . $sql_insert);;
  86.         oci_execute($stmt, OCI_COMMIT_ON_SUCCESS )or die('execute error ' . $sql_insert);
  87.         oci_free_statement($stmt);
  88.         $count=0;
  89.         $sql_insert="INSERT ALL ";
  90.       }
  91.       $list_values=array();
  92.       $sql_insert.="INTO \"IF_INTRANET_JAH\".\"{$table[0]}\"(\"{$fields}\") VALUES (";
  93.       foreach($temp as $key=>$value){
  94.         if(!is_array($value)){
  95.           if($key=='description'){
  96.             $value=str_replace($find,$replace,$value);
  97.           }
  98.           $list_values[]=$value;
  99.         }else{
  100.           $id=$ix=0;
  101.           foreach($value as $k=>$val){
  102.             if($ix!=$k){$ix=$k;++$id;};
  103.             if(!is_numeric($k)){
  104.               if(!is_array($val)){
  105.                 $list_values[]=$val;
  106.               }else{
  107.                 $jd=$jx=0;
  108.                 foreach($val as $idx=>$va){
  109.                   if($jx!=$idx){$jx=$idx;++$jd;};
  110.                   if(!is_numeric($idx)){
  111.                     $list_values[]=$va;
  112.                   }else{
  113.                     foreach($va as $kx=>$kv){
  114.                       $list_values[]=$kv;
  115.                     }
  116.                   }
  117.                 }
  118.               }
  119.             }else{
  120.               foreach($val as $i=>$v){
  121.                 $list_values[]=$v;
  122.               }
  123.             }
  124.           }
  125.         }
  126.       }
  127.       $temp="'".implode("','",$list_values)."'";
  128.       $temp=str_replace('#','',$temp);
  129.       $sql_insert.=$temp.") ";
  130.     }
  131.     $sql_insert.="SELECT * FROM dual ";
  132.     $stmt = oci_parse($con,$sql_insert)or die('statement error' . $sql_insert);;
  133.     $return=oci_execute($stmt, OCI_COMMIT_ON_SUCCESS )or die('execute error ' . $sql_insert);
  134.     oci_free_statement($stmt);
  135.   }
  136.   return $return;
  137. }
  138.  
  139. //-- for insert idirect
  140. function insert_idirect($table,$con){
  141.     $return=false;
  142.     $list_fields=array
  143.             (
  144.             'ID',
  145.             'NAME',
  146.             'DESCRIPTION',
  147.             'SERIALNUMBER',
  148.             'TYPE',
  149.             'SOFTWAREVERSION',
  150.             'PP_ID',
  151.             'PP_NAME',
  152.             'INROUTEGROUP_ID',
  153.             'INROUTEGROUP_NAME',
  154.             'OUTROUTE_ID',
  155.             'OUTROUTE_NAME',
  156.             'INTERFACE_ETH0_VLANID_1',
  157.             'INTERFACE_ETH0_IP_1',
  158.             'INTERFACE_ETH0_SUBNET_1',
  159.             'INTERFACE_ETH0_GW_1',
  160.             'INTERFACE_ETH0_VLANID_2',
  161.             'INTERFACE_ETH0_IP_2',
  162.             'INTERFACE_ETH0_SUBNET_2',
  163.             'INTERFACE_ETH0_GW_2',
  164.             'INTERFACE_SAT0_VLANID_1',
  165.             'INTERFACE_SAT0_IP_1',
  166.             'INTERFACE_SAT0_SUBNET_1',
  167.             'INTERFACE_SAT0_GW_1',
  168.             'INTERFACE_SAT0_VLANID_2',
  169.             'INTERFACE_SAT0_IP_2',
  170.             'INTERFACE_SAT0_SUBNET_2',
  171.             'INTERFACE_SAT0_GW_2',
  172.             'DATE_IN'
  173.             );
  174.     echo "[START] processing table {$table[0]}\n";
  175.     $nodes=file_get_contents($table[1]);
  176.     $arr_nodes=json_decode($nodes,true);
  177.     $list_nodes=array();
  178.     $find=array("'","&");
  179.     $replace=array("","n");
  180.     $sql_insert="INSERT ALL ";
  181.     $fields=implode('","',$list_fields);
  182.     $count=0;
  183.     foreach($arr_nodes as $d){
  184.         $sql_insert.="INTO \"IF_INTRANET_JAH\".\"{$table[0]}\"(\"{$fields}\") VALUES ";
  185.         $desc=$d['description'];
  186.         $desc=str_replace($find,$replace,$desc);
  187.         $sql_insert.="(
  188.          '{$d['id']}',
  189.          '{$d['name']}',
  190.          '{$desc}',
  191.          '{$d['serialnumber']}',
  192.          '{$d['type']}',
  193.          '{$d['softwareversion']}',
  194.          '{$d['pp']['id']}',
  195.          '{$d['pp']['name']}',
  196.          '{$d['inroutegroup']['id']}',
  197.          '{$d['inroutegroup']['name']}',
  198.          '{$d['outroute']['id']}',
  199.          '{$d['outroute']['name']}',";
  200.         foreach($d['interface']['eth0'] as $eth){
  201.           $sql_insert.="
  202.              '".$eth['vlanid']."',
  203.              '".$eth['ip']."',
  204.              '".$eth['subnet']."',
  205.              '".$eth['gw'].",";
  206.         }
  207.         if(count($d['interface']['eth0'])<2){
  208.           $sql_insert.="'','','','',";
  209.         }
  210.         foreach($d['interface']['sat0'] as $sat){
  211.           $sql_insert.="
  212.              '".$sat['vlanid']."',
  213.              '".$sat['ip']."',
  214.              '".$sat['subnet']."',
  215.              '".$sat['gw']."',";
  216.         }
  217.         if(count($d['interface']['sat0'])<2){
  218.           $sql_insert.="'','','','',";
  219.         }
  220.         $sql_insert.="
  221.          NOW()
  222.          )";
  223.         if(++$count==10){
  224.             $sql_insert.="SELECT * FROM dual";
  225.             $stmt = oci_parse($con,$sql_insert)or die('statement error' . $sql_insert);;
  226.             oci_execute($stmt, OCI_COMMIT_ON_SUCCESS )or die('execute error ' . $sql_insert);
  227.             oci_free_statement($stmt);
  228.             $count=0;
  229.             $sql_insert="INSERT ALL ";
  230.         }
  231.     }
  232.     $sql_insert.="SELECT * FROM dual ";
  233.     $stmt = oci_parse($con,$sql_insert)or die('statement error' . $sql_insert);;
  234.     $return=oci_execute($stmt, OCI_COMMIT_ON_SUCCESS )or die('execute error ' . $sql_insert);
  235.     oci_free_statement($stmt);
  236.     return $return;
  237. }
  238.  
  239. //-- for insert jupiter
  240. function insert_jupiter($table,$con=''){
  241.     $return=false;
  242.     $list_fields=array
  243.             (
  244.             'GWID',
  245.             'USERFILEMODE',
  246.             'BEAMID',
  247.             'NETWORKID',
  248.             'TRACELOGGINGMODE',
  249.             'VLNADRES0_INTFCFIPV4SUBNETMASK',
  250.             'VLNADRES0_VLANCFNATENABLED',
  251.             'VLNADRES0_INTFCFMAPPEDIPV4SBNT',
  252.             'VLNADRES0_INTFCFTMPLTEIPV4SBNT',
  253.             'VLNADRES0_INTFCFNATLCLSBNTPRFX',
  254.             'VLNADRES0_INTFCFNATLCLIPADRES',
  255.             'VLNADRES0_VLANCFVLANID',
  256.             'VLNADRES0_TERMINAL_REF',
  257.             'VLNADRES0_VLANCFNATMODE',
  258.             'VLNADRES0_INTFCFMAPPEDIPV6PRFX',
  259.             'VLNADRES0_VLANCFNAME',
  260.             'VLNADRES0_INTFCFTMPLTEIPV6PRFX',
  261.             'VLNADRES0_AUTOASSIGNED',
  262.             'VLNADRES0_INTFCFMAPPEDIPV4PRFX',
  263.             'TMPRPLCMNT0_INTFCFTMPADRTBLNDX',
  264.             'TMPRPLCMNT0_INTFCFSUBNETMASK',
  265.             'TMPRPLCMNT0_TERMINAL_CLASS',
  266.             'TMPRPLCMNT0_ADDRESSTYPE',
  267.             'TMPRPLCMNT0_INTFCFMAPEDADRSBNT',
  268.             'TMPRPLCMNT1_INTFCFTMPADRTBLNDX',
  269.             'TMPRPLCMNT1_INTFCFSUBNETMASK',
  270.             'TMPRPLCMNT1_TERMINAL_CLASS',
  271.             'TMPRPLCMNT1_ADDRESSTYPE',
  272.             'TMPRPLCMNT1_INTFCFMAPEDADRSBNT',
  273.             'TMPRPLCMNT2_INTFCFTMPADRTBLNDX',
  274.             'TMPRPLCMNT2_INTFCFSUBNETMASK',
  275.             'TMPRPLCMNT2_TERMINAL_CLASS',
  276.             'TMPRPLCMNT2_ADDRESSTYPE',
  277.             'TMPRPLCMNT2_INTFCFMAPEDADRSBNT',
  278.             'TMPRPLCMNT3_INTFCFTMPADRTBLNDX',
  279.             'TMPRPLCMNT3_INTFCFSUBNETMASK',
  280.             'TMPRPLCMNT3_TERMINAL_CLASS',
  281.             'TMPRPLCMNT3_ADDRESSTYPE',
  282.             'TMPRPLCMNT3_INTFCFMAPEDADRSBNT',
  283.             'TMPRPLCMNT4_INTFCFTMPADRTBLNDX',
  284.             'TMPRPLCMNT4_INTFCFSUBNETMASK',
  285.             'TMPRPLCMNT4_TERMINAL_CLASS',
  286.             'TMPRPLCMNT4_ADDRESSTYPE',
  287.             'TMPRPLCMNT4_INTFCFMAPEDADRSBNT',
  288.             'TMPRPLCMNT5_INTFCFTMPADRTBLNDX',
  289.             'TMPRPLCMNT5_INTFCFSUBNETMASK',
  290.             'TMPRPLCMNT5_TERMINAL_CLASS',
  291.             'TMPRPLCMNT5_ADDRESSTYPE',
  292.             'TMPRPLCMNT5_INTFCFMAPEDADRSBNT',
  293.             'SAI',
  294.             'SWPROFILEID',
  295.             'STATICIPSUBNETSIZE',
  296.             'MODE',
  297.             'TIMESTAMP',
  298.             'ID',
  299.             'AUTOLOGGINGMODE',
  300.             'ESN',
  301.             'INTFCFLANIPV4ADDR',
  302.             'LONGITUDE',
  303.             'SPID',
  304.             'TEMPLATEMACPARAMETERS',
  305.             'STATICIPWITHRTR',  
  306.             'VSATUPLINKSPISIGNATURE',
  307.             'USERFILEINPUTSTRING',
  308.             'SWAPALLOWED',
  309.             'HEALTHMONITOTERMINAL',
  310.             'VSATUPLINKSPIPARAMS',
  311.             'SERVICEPLANID',
  312.             'TRACELEVEL',
  313.             'VLANGROUPID',
  314.             'ODUPOWER',
  315.             'SUSPENSIONSTATE',
  316.             'AUDITMEMORYCAPCITY',
  317.             'TRACEMEMORYCPACITY',
  318.             'VSATSPISIGNATURE',
  319.             'MOVEALLOWED',
  320.             'HARDWARETYPE',
  321.             'ACTIVATIONTYPE',
  322.             'SCIDI',
  323.             'VSATSPIPARAMS',
  324.             'VNID',
  325.             'LATITUDE',
  326.             'TIMEZONEID',
  327.             'DATE_IN'
  328.             );
  329.     echo "[START] processing table {$table[0]}\n";
  330.     $nodes=file_get_contents($table[1]);
  331.     $arr_nodes=json_decode($nodes,true);
  332.     $list_nodes=array();
  333.     $sql_insert="INSERT ALL ";
  334.     $fields=implode('","',$list_fields);
  335.     $count=0;
  336.     foreach($arr_nodes as $d){
  337.         $sql_insert.="INTO \"IF_INTRANET_JAH\".\"{$table[0]}\"(\"{$fields}\") VALUES ";
  338.         $sql_insert.="(
  339.          '{$d['gwId']}',
  340.          '{$d['userFileMode']}',
  341.          '{$d['beamId']}',
  342.          '{$d['networkId']}',
  343.          '{$d['traceLoggingMode']}',";
  344.         foreach($d['vlanAddressing']as $eth){
  345.           $sql_insert.="
  346.              '".$eth['intfCfIPv4SubnetMask']."',
  347.              '".$eth['vlanCfNatEnabled']."',
  348.              '".$eth['intfCfMappedIPv4Subnet']."',
  349.              '".$eth['intfCfTemplateIPv4Subnet']."',
  350.              '".$eth['intfCfDMZAddress']."',
  351.              '".$eth['intfCfNatLocalSubnetPrefix']."',
  352.              '".$eth['intfCfNatLocalIpAddress']."',
  353.              '".$eth['terminal']['_ref']."',
  354.              '".$eth['terminal']['class']."',
  355.              '".$eth['vlanCfNatMode']."',
  356.              '".$eth['intfCfIPv6PrefixLen']."',
  357.              '".$eth['intfCfMappedIPv6Prefix']."',
  358.              '".$eth['vlanCfName']."',
  359.              '".$eth['intfCfTemplateIPv6Prefix']."',
  360.              '".$eth['autoAssigned']."',
  361.              '".$eth['intfCfMappedIPv4Prefix']."',";
  362.         }
  363.         $k=0;
  364.         if(!empty($d['templateReplacementAddressing'])){
  365.             ++$k;
  366.             foreach($d['templateReplacementAddressing'] as $sat){
  367.               $sql_insert.="
  368.                  '".$sat['intfCfTemplateAdrTableIndex']."',
  369.                  '".$sat['intfCfAdrSubnetMask']."',
  370.                  '".$sat['terminal']['_ref']."',
  371.                  '".$sat['terminal']['class']."',
  372.                  '".$sat['intfCfTemplateAdrSubnet']."',
  373.                  '".$sat['addressType']."',
  374.                  '".$sat['intfCfMappedAdrSubnet']."',";
  375.             }
  376.         }
  377.         for($l=($k-1);$l<5;$l++){
  378.           $sql_insert.="'','','','','','','',";
  379.         }
  380.         $sql_insert.="(
  381.            '{$d['sai']}',
  382.            '{$d['swProfileId']}',
  383.            '{$d['staticIpSubnetSize']}',
  384.            '{$d['timestamp']}',
  385.            '{$d['id']}',
  386.            '{$d['auditLoggingMode']}',
  387.            '{$d['esn']}',
  388.            '{$d['intfCfLan1Ipv4Addr']}',
  389.            '{$d['longitude']}',
  390.            '{$d['spId']}',
  391.            '".(!empty($d['templateMacParameters'])?$d['templateMacParameters']:'')."',
  392.            '{$d['staticIPWithRtr']}',
  393.            '{$d['vsatUplinkSpiSignature']}',
  394.            '{$d['userFileInputString']}',
  395.            '{$d['swapAllowed']}',
  396.            '{$d['healthMonitorTerminal']}',
  397.            '{$d['vsatUplinkSpiParams']}',
  398.            '{$d['servicePlanId']}',
  399.            '{$d['traceLevel']}',
  400.            '{$d['vlanGroupId']}',
  401.            '{$d['oduPower']}',
  402.            '{$d['suspensionState']}',
  403.            '{$d['auditMemoryCapacity']}',
  404.            '{$d['traceMemoryCapacity']}',
  405.            '{$d['vsatSpiSignature']}',
  406.            '{$d['moveAllowed']}',
  407.            '{$d['hardwareType']}',
  408.            '{$d['activationState']}',
  409.            '{$d['scidi']}',
  410.            '{$d['vsatSpiParams']}',
  411.            '{$d['vnId']}',
  412.            '{$d['latitude']}',
  413.            '{$d['timeZoneId']}',
  414.            NOW()
  415.          )";
  416.         if(++$count==10){
  417.             $sql_insert.="SELECT * FROM dual";
  418.             $stmt = oci_parse($con,$sql_insert)or die('statement error' . $sql_insert);;
  419.             oci_execute($stmt, OCI_COMMIT_ON_SUCCESS )or die('execute error ' . $sql_insert);
  420.             oci_free_statement($stmt);
  421.             $count=0;
  422.             $sql_insert="INSERT ALL ";
  423.         }
  424.     }
  425.     $sql_insert.="SELECT * FROM dual ";
  426.     $stmt = oci_parse($con,$sql_insert)or die('statement error' . $sql_insert);;
  427.     $return=oci_execute($stmt, OCI_COMMIT_ON_SUCCESS )or die('execute error ' . $sql_insert);
  428.     oci_free_statement($stmt);
  429.     return $return;
  430. }
  431.  
  432. //-- create and insert table
  433. $con = oci_connect('IF_INTRANET_JAH','E9JWZz66TkkK','10.24.19.123:6725/IMSDEV') or die('connection failed !');
  434. $url="http://132.13.33.112/webapi/vsat/v2/vsathubs/";
  435. $list_table=get_list_tables($url);
  436. foreach($list_table as $table){
  437.     if(substr($table[0],0,7)=='RAW_IDI'){
  438.         $result=insert_idirect($table,$con);
  439.     }elseif(substr($table[0],0,7)=='RAW_JUP'){
  440.         $result=insert_jupiter($table,$con);
  441.     }else{
  442.         $result=insert_data($table,$con);
  443.     }
  444. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement