g(512), $l->g(876).$packid." => ".$list_id ); } function found_id_pack_serv($packid){ $sql_id_pack="select ID from download_enable where fileid=%s and ( group_id != '' and group_id is not null)"; $arg=$packid; $result = mysql2_query_secure( $sql_id_pack, $_SESSION['OCS']["readServer"], $arg ); while($id_pack = mysql_fetch_array( $result )){ $id_paquets[]=$id_pack['ID']; } return $id_paquets; } //fonction qui permet de savoir //le nombre de serveur d�j� dans un groupe //et dans lesquels ils se trouvent function exist_server($list_id){ global $l; $sql="SELECT count(hardware_id) c,group_id,name FROM download_servers,hardware where hardware.id=download_servers.group_id and hardware_id in "; $arg=mysql2_prepare($sql,array(),$list_id); $res= mysql2_query_secure( $arg['SQL'] . " group by group_id ", $_SESSION['OCS']["readServer"],$arg['ARG']); $msg= ""; while( $val = mysql_fetch_array( $res ) ){ $msg.= $val['c'] . " " . $l->g(1135) . " " . $val['name'] . "
"; } if ($msg != ""){ msg_error($l->g(877) . "
" . $msg . " " . $l->g(878)); } } // fonction qui permet de supprimer des serveurs // d'un groupe de redistribution function remove_list_serv($id_group,$list_id){ if (is_array($list_id)) $list_id=implode(",", $list_id); $sql_del="DELETE FROM download_servers WHERE group_id='%s' and hardware_id in "; $arg_del=array($id_group); $arg=mysql2_prepare($sql_del,$arg_del,$list_id); mysql2_query_secure( $arg['SQL'], $_SESSION['OCS']["writeServer"] ,$arg['ARG']); $cached = mysql_affected_rows($_SESSION['OCS']["writeServer"]); return $cached; } function replace_var_generic($hardware_id,$url_group_server,$id_group=false) { $count_add_ip=substr_count($url_group_server, '$IP$'); $count_name=substr_count($url_group_server, '$NAME$'); if ($count_add_ip>0 or $count_name>0){ $sql="select IPADDR,NAME,ID from hardware where ID"; if ($hardware_id != 'ALL'){ $sql .= " = %s"; $arg = $hardware_id; } else{ $sql .= " in (select hardware_id from groups_cache where group_id = %s)"; $arg = $id_group; } $resdefaultvalues = mysql2_query_secure( $sql, $_SESSION['OCS']["readServer"],$arg); while ($item = mysql_fetch_object($resdefaultvalues)) { $url_temp=str_replace('$IP$', $item -> IPADDR, $url_group_server); $url[$item -> ID]=str_replace('$NAME$', $item -> NAME, $url_temp); } } elseif($hardware_id != 'ALL') $url[$hardware_id]=$url_group_server; else{ $sql = "select ID from hardware where ID"; $sql .= " in (select hardware_id from groups_cache where group_id = %s)"; $arg=$id_group; $resdefaultvalues = mysql2_query_secure( $sql, $_SESSION['OCS']["readServer"],$arg); while ($item = mysql_fetch_object($resdefaultvalues)) { $url[$item -> ID]=$url_group_server; } } return $url; } //function for add machine in server's group function add_mach($id_group,$list_mach) { $default_values=look_config_default_values(array('DOWNLOAD_SERVER_URI','DOWNLOAD_SERVER_DOCROOT')); if (is_array($list_mach)){ foreach ($list_mach as $key=>$value){ $reqCache = "INSERT IGNORE INTO download_servers(hardware_id, url, add_rep,GROUP_ID) VALUES (%s,'%s','%s',%s)"; $argcache=array($value,$default_values['tvalue']['DOWNLOAD_SERVER_URI'],$default_values['tvalue']['DOWNLOAD_SERVER_DOCROOT'],$id_group); $cachedRes = mysql2_query_secure( $reqCache , $_SESSION['OCS']["writeServer"] , $argcache); } }else{ $reqCache = "INSERT IGNORE INTO download_servers(hardware_id, url, add_rep,GROUP_ID) select id,'%s','%s',%s from hardware where id in "; $argCache=array($default_values['tvalue']['DOWNLOAD_SERVER_URI'],$default_values['tvalue']['DOWNLOAD_SERVER_DOCROOT'],$id_group); $arg=mysql2_prepare($reqCache,$argCache,$list_mach); $cachedRes = mysql2_query_secure( $arg['SQL'], $_SESSION['OCS']["writeServer"],$arg['ARG'] ); } return mysql_affected_rows($_SESSION['OCS']["writeServer"]); } //function for admin server function admin_serveur($action,$name_server,$descr,$mach) { global $l; if ($action == "") return $l->g(663); //intern problem if (trim($name_server) == "") return $l->g(638); //name of server is empty if ($mach == "") return $l->g(665); //no mach selected. group not creat if (is_numeric($name_server)) $idGroupServer=$name_server; else{ //verification group not have the same name $reqGetId = "SELECT id FROM hardware WHERE name='%s'"; $arg=$name_server; $resGetId = mysql2_query_secure( $reqGetId, $_SESSION['OCS']["readServer"],$arg); if( $valGetId = mysql_fetch_array( $resGetId ) ) $idGroupServer = $valGetId['id']; } //if we are in creat new server if ($action == 'new_serv'){ //if the name not exist in the base if (!isset($idGroupServer)){ $deviceid='_DOWNLOADGROUP_'; $sql="INSERT INTO hardware(deviceid,name,description,lastdate) VALUES( '%s' , '%s', '%s', NOW() )"; $arg=array($deviceid,$name_server,$descr); mysql2_query_secure( $sql, $_SESSION['OCS']["writeServer"],$arg); //Getting hardware id $insertId = mysql_insert_id( $_SESSION['OCS']["writeServer"] ); exist_server($mach); $nb_mach=add_mach($insertId,$mach); msg_success($l->g(880) . "
" . $nb_mach . " " . $l->g(881)); return ''; }else return $l->g(621); //this name allready exist }//if the machines add to the group or the group is replace elseif ($action == 'add_serv' or $action == 'replace_serv'){ if ($action == 'replace_serv'){ $sql="DELETE FROM download_servers WHERE GROUP_ID=%s"; $arg=$idGroupServer; mysql2_query_secure( $sql, $_SESSION['OCS']["writeServer"],$arg ); } exist_server($mach); $nb_mach=add_mach($idGroupServer,$mach); msg_success($l->g(879) . "
" . $nb_mach . " " . $l->g(881)); return ''; }elseif($action == 'del_serv'){ $nb_mach=remove_list_serv($idGroupServer,$mach); msg_success($nb_mach . " " . $l->g(882)); return ''; } } //function for insert machine with rules //$rule_detail=array($cfield[$key],$op[$key],$compto[$key]); function insert_with_rules($list_id,$rule_detail,$fileid){ if (is_array($list_id)) $list_id_hardware=implode(',',$list_id); else $list_id_hardware=$list_id; if ($list_id_hardware == "") return ; //for servers //recherche de tous les hardware_id des servers et des id de download_enable correspondant $sql_infoServ="select server_id,id from download_enable where group_id != '' and fileid=%s"; $arg_infoServ=$fileid; //echo $sql_infoServ; $res_infoServ = mysql2_query_secure( $sql_infoServ, $_SESSION['OCS']["readServer"],$arg_infoServ); //cr�ation de la liste des id_hardware des servers et d'un tableau de l'id de download_enable en fonction de l'hardware_id while( $val_infoServ = mysql_fetch_array($res_infoServ)) { $list_serverId[$val_infoServ['server_id']] = $val_infoServ['server_id']; $tab_Server[$val_infoServ['server_id']]=$val_infoServ['id']; } if ($rule_detail['compto'] == "NAME" or $rule_detail['compto'] =="WORKGROUP" or $rule_detail['compto'] =="USERID"){ $tablecompto="hardware"; $id_server="ID"; } if ($rule_detail['compto'] == "IPSUBNET" or $rule_detail['compto'] == "IPADDRESS"){ $tablecompto="networks"; $id_server="HARDWARE_ID"; } $sql_servValues = "select a.%s,a.%s,d.id as id_download_enable from %s a,download_enable d where a.%s in "; $arg_servValues = array($rule_detail['compto'],$id_server,$tablecompto,$id_server); $arg=mysql2_prepare($sql_servValues,$arg_servValues,$list_serverId); $arg['SQL'] .= " and d.server_id=a.%s and fileid='%s'"; array_push($arg['ARG'],$id_server); array_push($arg['ARG'],$fileid); $res_servValues = mysql2_query_secure( $arg['SQL'], $_SESSION['OCS']["readServer"], $arg['ARG']); //echo $sql_servValues."

"; while( $val_servValues = mysql_fetch_array($res_servValues)) { $tab_serValues[$val_servValues[$rule_detail['compto']]]=$val_servValues[$id_server]; $correspond_servers[$val_servValues[$id_server]]=$val_servValues['id_download_enable']; } //for machines if ($rule_detail['cfield'] == "NAME" or $rule_detail['cfield'] =="WORKGROUP" or $rule_detail['cfield'] =="USERID"){ $tablefield="hardware"; $id_mach="ID"; } if ($rule_detail['cfield'] == "IPSUBNET" or $rule_detail['cfield'] == "IPADDRESS"){ $tablefield="networks"; $id_mach="HARDWARE_ID"; } $sql_machValue="select %s,%s from %s where %s in "; $arg_machValue=array($rule_detail['cfield'],$id_mach,$tablefield,$id_mach); $arg=mysql2_prepare($sql_machValue,$arg_machValue,$list_id_hardware); $res_machValue = mysql2_query_secure( $arg['SQL'], $_SESSION['OCS']["readServer"],$arg['ARG']); //print_r($tab_serValues); while( $val_machValue = mysql_fetch_array($res_machValue)) { if ($rule_detail['op'] == "EGAL"){ //echo "
".$val_machValue[$rule_detail['cfield']]."
"; //cas of egal if (isset($tab_serValues[$val_machValue[$rule_detail['cfield']]])){ $tab_final[$val_machValue[$id_mach]]=$correspond_servers[$tab_serValues[$val_machValue[$rule_detail['cfield']]]]; $verif_idMach[$val_machValue[$id_mach]]=$val_machValue[$id_mach]; } else{ $not_match[$val_machValue[$id_mach]]=$val_machValue[$id_mach]; //$nb_notMatch++; } } elseif ($rule_detail['op'] == "DIFF"){ if (!isset($tab_serValues[$val_machValue[$rule_detail['cfield']]])){ $tab_final[$val_machValue[$id_mach]]=$correspond_servers[$tab_serValues[$val_machValue[$rule_detail['cfield']]]]; $verif_idMach[$val_machValue[$id_mach]]=$val_machValue[$id_mach]; } else{ $not_match[$val_machValue[$id_mach]]=$val_machValue[$id_mach]; //$nb_notMatch++; } } } if (isset($verif_idMach)){ $sql_verif="select d.hardware_id as hardware_id from devices d,download_enable d_e where d.ivalue=d_e.id and fileid=%s AND d.HARDWARE_ID in "; $arg_verif=array($fileid); $arg=mysql2_prepare($sql_verif,$arg_verif,$verif_idMach); $arg['SQL'].=" and d.name='DOWNLOAD'"; $res_verif = mysql2_query_secure( $arg['SQL'], $_SESSION['OCS']["readServer"],$arg['ARG']); //recup�ration des machines en doublon while( $val_verif = mysql_fetch_array($res_verif)) { //cr�ation du tableau de doublon $exist[$val_verif['hardware_id']]=$val_verif['hardware_id']; //suppression des doublons //unset($tab_final[$val_verif['hardware_id']]); //$nb_exist++; } //suppression des doublons pour remettre le statut a attente de notification if ($exist != '') desactive_mach_serv(implode(',',$exist),$fileid); //insertion en base $nb_insert=0; foreach ($tab_final as $key=>$value){ $query="INSERT INTO devices(HARDWARE_ID, NAME, IVALUE) VALUES('%s', '%s','%s')"; $arg=array($key,'DOWNLOAD',$value); mysql2_query_secure( $query, $_SESSION['OCS']["writeServer"],$arg ); $insert[$key]=$value; $nb_insert++; } } $not_found=array(); if (is_array($not_match)) { foreach($not_match as $key=>$value){ $not_found[]=$value; } } $already_exist=array(); if (is_array($exist)){ foreach($exist as $key=>$value){ if (!isset($insert[$key])) $already_exist[]=$value; } } //retour des erreurs $don['not_match']=$not_found; $don['nb_not_match']=count($not_found); $don['exist']=$already_exist; $don['nb_exist']=count($already_exist); $don['nb_insert']=$nb_insert; //print_r($don); return $don; } ?>