function active(id, sens) {
var mstyle = document.getElementById(id).style.display = (sens!=0?\"block\" :\"none\");
}";
function javascript_pack(){
global $protectedPost;
echo "";
}
function looking4config(){
if (!isset($_SESSION['OCS']['CONFIG_DOWNLOAD'])){
$values=look_config_default_values(array('DOWNLOAD_CYCLE_LATENCY','DOWNLOAD_PERIOD_LENGTH',
'DOWNLOAD_FRAG_LATENCY','DOWNLOAD_PERIOD_LATENCY'));
$_SESSION['OCS']['CONFIG_DOWNLOAD']=$values['ivalue'];
}
}
function champ_select_block($name,$input_name,$input_cache)
{
global $protectedPost;
$champs="";
return $champs;
}
function time_deploy(){
$champ=" ";
return $champ;
}
function input_pack_taille($name,$other_field,$size,$input_size,$input_value){
javascript_pack();
$champ.= " 1024 ) {
$champ.= " onKeyPress='maj(\"".$name."\",\"".$other_field."\",\"".$size."\");'
onkeydown='maj(\"".$name."\",\"".$other_field."\",\"".$size."\");' onkeyup='maj(\"".$name."\",\"".$other_field."\",\"".$size."\");' value='".$input_value."'
onblur='maj(\"".$name."\",\"".$other_field."\",\"".$size."\");' onclick='maj(\"".$name."\",\"".$other_field."\",\"".$size."\");'> ";
}else
$champ.= " value=1 readonly style='color:black; background-color:#e1e1e2;'> ";
return $champ;
}
function desactive_option($name,$list_id,$packid){
global $l;
$sql_desactive="delete from devices where name='%s' and ivalue=%s";
$arg_desactive=array($name,$packid);
if ($list_id != ''){
$sql_desactive.=" and hardware_id in ";
$sql=mysql2_prepare($sql_desactive,$arg_desactive,$list_id);
$res_desactive=mysql2_query_secure($sql['SQL'],$_SESSION['OCS']["writeServer"],$sql['ARG'],$l->g(512));
}else
$res_desactive=mysql2_query_secure($sql_desactive,$_SESSION['OCS']["writeServer"],$arg_desactive,$l->g(512));
return( mysql_affected_rows ( $_SESSION['OCS']["writeServer"] ) );
}
function active_option($name,$list_id,$packid,$tvalue=''){
global $l;
desactive_option($name,$list_id,$packid);
$sql_active="insert into devices (HARDWARE_ID, NAME, IVALUE,TVALUE) select ID,'%s','%s',";
if ($tvalue == ''){
$sql_active.="null from hardware where id in ";
$arg_active=array($name,$packid);
}else{
$sql_active.="'%s' from hardware where id in ";
$arg_active=array($name,$packid,$tvalue);
}
//$lbl_log=$l->g(601)." ".$id_pack." => ".$list_id;
$sql=mysql2_prepare($sql_active,$arg_active,$list_id);
$res_active=mysql2_query_secure($sql['SQL'],$_SESSION['OCS']["writeServer"],$sql['ARG'],$l->g(512));
return( mysql_affected_rows ( $_SESSION['OCS']["writeServer"] ) );
}
function desactive_download_option($list_id,$packid){
desactive_option('DOWNLOAD_FORCE',$list_id,$packid);
desactive_option('DOWNLOAD_SCHEDULE',$list_id,$packid);
desactive_option('DOWNLOAD_POSTCMD',$list_id,$packid);
}
function desactive_packet($list_id,$packid){
desactive_download_option($list_id,$packid);
$nb_line=desactive_option('DOWNLOAD',$list_id,$packid);
return $nb_line;
}
function found_id_pack($packid){
$sql_id_pack="select ID from download_enable where fileid=%s and ( group_id = '' or group_id is null)";
$arg_id_pack=$packid;
$result = mysql2_query_secure($sql_id_pack,$_SESSION['OCS']["readServer"],$arg_id_pack);
$id_pack = mysql_fetch_array( $result );
return $id_pack['ID'];
}
function active_serv($list_id,$packid,$id_rule){
global $l;
require_once('function_server.php');
//get all condition of this rule
$sql="select PRIORITY,CFIELD,OP,COMPTO,SERV_VALUE from download_affect_rules where rule=%s order by PRIORITY";
$arg=$id_rule;
$res_rules = mysql2_query_secure( $sql, $_SESSION['OCS']["readServer"],$arg );
while( $val_rules = mysql_fetch_array($res_rules)) {
$cfield[$val_rules['PRIORITY']]=$val_rules['CFIELD'];
$op[$val_rules['PRIORITY']]=$val_rules['OP'];
$compto[$val_rules['PRIORITY']]=$val_rules['COMPTO'];
}
$nb_insert=0;
foreach ($cfield as $key=>$value)
{
$rule_detail=array('cfield'=>$cfield[$key],'op'=>$op[$key],'compto'=>$compto[$key]);
$result=insert_with_rules($list_id,$rule_detail,$packid);
$nb_insert+=$result['nb_insert'];
$m=0;
while ($result['exist'][$m]){
$exist[]=$result['exist'][$m];
$m++;
}
$nb_exist += $result['nb_exist'];
if ($result['not_match'] == "")
break;
else{
unset($list_id);
$list_id=$result['not_match'];
}
}
if (isset($result['not_match']))
{
tab_list_error($result['not_match'],$result['nb_not_match']." ".$l->g(658)." ".$l->g(887)."
");
}
if (isset($exist))
{
tab_list_error($exist,$nb_exist." ".$l->g(659)." ".$l->g(482));
}
return $nb_insert;
}
function loadInfo( $serv, $tstamp ) {
$fname = $serv."/".$tstamp."/info";
$info =@file_get_contents( $fname );
if( ! $info )
return false;
@preg_match_all( "/((?:\d|\w)+)=\"((?:\d|\w)+)\"/", $info, $resul );
if( ! $resul )
return false;
$noms = array_flip( $resul[1] );
foreach( $noms as $nom=>$int ) {
$noms[ $nom ] = $resul[2][$int];
}
return( $noms );
}
function activ_pack($fileid,$https_server,$file_serv){
global $l;
//checking if corresponding available exists
$reqVerif = "SELECT * FROM download_available WHERE fileid=%s";
$argVerif = $fileid;
if( ! mysql_num_rows( mysql2_query_secure( $reqVerif, $_SESSION['OCS']["readServer"],$argVerif) )) {
$infoTab = loadInfo( $https_server, $file_serv );
if ($infoTab == ''){
$infoTab= array("PRI"=>'10',"FRAGS"=>'0');
}
$req1 = "INSERT INTO download_available(FILEID, NAME, PRIORITY, FRAGMENTS, OSNAME ) VALUES
( '%s', 'Manual_%s',%s,%s, 'N/A' )";
$arg1=array($fileid,$fileid,$infoTab["PRI"],$infoTab["FRAGS"]);
mysql2_query_secure( $req1, $_SESSION['OCS']["writeServer"],$arg1);
}
$req = "INSERT INTO download_enable(FILEID, INFO_LOC, PACK_LOC, CERT_FILE, CERT_PATH ) VALUES
( '%s', '%s', '%s', 'INSTALL_PATH/cacert.pem','INSTALL_PATH')";
$arg=array($fileid,$https_server,$file_serv);
$lbl_log= $l->g(514)." ".$fileid;
mysql2_query_secure( $req, $_SESSION['OCS']["writeServer"],$arg,$l->g(512));
}
function activ_pack_server($fileid,$https_server,$id_server_group){
global $protectedPost;
//search all computers have this package
$sqlDoub="select SERVER_ID,INFO_LOC from download_enable where FILEID= %s";
$argDoub = $fileid;
$resDoub = mysql2_query_secure( $sqlDoub, $_SESSION['OCS']["readServer"], $argDoub );
//exclu them
while ($valDoub = mysql_fetch_array( $resDoub )){
if ($valDoub['SERVER_ID'] != "")
$listDoub[]=$valDoub['SERVER_ID'];
//Update https server location if different from mysql database
if ($valDoub['INFO_LOC'] != $https_server) {
$sql_update_https= "UPDATE download_enable SET download_enable.INFO_LOC='%s' WHERE SERVER_ID=%s";
$arg_update_https=array($https_server,$valDoub['SERVER_ID']);
mysql2_query_secure( $sql_update_https, $_SESSION['OCS']["readServer"], $arg_update_https );
}
}
//If this list is not null, we create the end of sql request
if (isset($listDoub)){
$listDoub = " AND HARDWARE_ID not in (".implode(',',$listDoub).")";
}
//on insert l'activation du paquet pour les serveurs du groupe
$sql="insert into download_enable (FILEID,INFO_LOC,PACK_LOC,CERT_PATH,CERT_FILE,SERVER_ID,GROUP_ID)
select %s,'%s',url,'INSTALL_PATH','INSTALL_PATH/cacert.pem',
HARDWARE_ID, GROUP_ID from download_servers where GROUP_ID=%s".$listDoub;
$arg=array($fileid,$https_server,$id_server_group);
mysql2_query_secure( $sql, $_SESSION['OCS']["writeServer"],$arg);
$query="UPDATE download_available set COMMENT = '%s' WHERE FILEID = %s";
$arg_query=array($protectedPost['id_server_add'],$fileid);
mysql2_query_secure( $query, $_SESSION['OCS']["writeServer"], $arg_query );
}
function del_pack($fileid){
global $l;
//find all activate package
$reqEnable = "SELECT id FROM download_enable WHERE FILEID='%s'";
$argEnable = $fileid;
$resEnable = mysql2_query_secure($reqEnable, $_SESSION['OCS']["readServer"],$argEnable);
while($valEnable = mysql_fetch_array( $resEnable ) ) {
$list_id[]=$valEnable["id"];
}
//delete packet in DEVICES table
if ($list_id != ""){
foreach ($list_id as $k=>$v){
desactive_packet('',$v);
}
}
//delete activation of this pack
$reqDelEnable = "DELETE FROM download_enable WHERE FILEID='%s'";
$argDelEnable = $fileid;
mysql2_query_secure($reqDelEnable, $_SESSION['OCS']["writeServer"],$argDelEnable);
//delete info of this pack
$reqDelAvailable = "DELETE FROM download_available WHERE FILEID='%s'";
$argDelAvailable = $fileid;
mysql2_query_secure($reqDelAvailable, $_SESSION['OCS']["writeServer"],$argDelAvailable);
//what is the directory of this package?
$info=look_config_default_values('DOWNLOAD_PACK_DIR');
$document_root=$info['tvalue']['DOWNLOAD_PACK_DIR'];
//if no directory in base, take $_SERVER["DOCUMENT_ROOT"]
if (!isset($document_root))
$document_root = $_SERVER["DOCUMENT_ROOT"];
if (@opendir($document_root."/download/".$fileid)){
//delete all files from this package
if( ! @recursive_remove_directory( $document_root."/download/".$fileid )) {
msg_error($l->g(472)." ".$document_root."/download/".$fileid);
}
}
// delete redistribution package
$dl_rep_redist = look_config_default_values('DOWNLOAD_REP_CREAT');
$document_root = $dl_rep_redist['tvalue']['DOWNLOAD_REP_CREAT'];
if (!$document_root) {
$document_root = $_SERVER["DOCUMENT_ROOT"].'/download/server';
}
$redist_package = realpath($document_root."/".$fileid);
if ($redist_package and @opendir($redist_package)) {
//delete all files from this package
if(!@recursive_remove_directory($redist_package)) {
msg_error($l->g(472)." ".$redist_package);
}
}
addLog($l->g(512), $l->g(888)." ".$fileid );
}
function recursive_remove_directory($directory, $empty=FALSE) {
if(substr($directory,-1) == '/')
$directory = substr($directory,0,-1);
if(!file_exists($directory) || !is_dir($directory))
return FALSE;
elseif(is_readable($directory)) {
$handle = opendir($directory);
while (FALSE !== ($item = readdir($handle))) {
if($item != '.' && $item != '..') {
$path = $directory.'/'.$item;
if(is_dir($path))
recursive_remove_directory($path);
else
unlink($path);
}
}
closedir($handle);
if($empty == FALSE) {
if(!rmdir($directory))
return FALSE;
}
}
return TRUE;
}
function create_pack($sql_details,$info_details){
global $l;
$info_details=xml_escape_string($info_details);
//get temp file
$fname = $sql_details['document_root'].$sql_details['timestamp']."/tmp";
//cut this package
if( $size = @filesize( $fname )) {
$handle = fopen ( $fname, "rb");
$read = 0;
for( $i=1; $i<$sql_details['nbfrags']; $i++ ) {
$contents = fread ($handle, $size / $sql_details['nbfrags'] );
$read += strlen( $contents );
$handfrag = fopen( $sql_details['document_root'].$sql_details['timestamp']."/".$sql_details['timestamp']."-".$i, "w+b" );
fwrite( $handfrag, $contents );
fclose( $handfrag );
}
$contents = fread ($handle, $size - $read);
$read += strlen( $contents );
$handfrag = fopen( $sql_details['document_root'].$sql_details['timestamp']."/".$sql_details['timestamp']."-".$i, "w+b" );
fwrite( $handfrag, $contents );
fclose( $handfrag );
fclose ($handle);
unlink( $sql_details['document_root'].$sql_details['timestamp']."/tmp" );
}else{
if (!file_exists( $sql_details['document_root'].$sql_details['timestamp']))
mkdir( $sql_details['document_root'].$sql_details['timestamp']);
}
//if $info_details['DIGEST'] is null => no file to deploy, only execute commande in info file
// so nb_frag=0
if (!isset($info_details['DIGEST']) or $info_details['DIGEST'] == "")
$sql_details['nbfrags']=0;
//create info
$info = "\n";
$info .= "\n";
$handinfo = fopen( $sql_details['document_root'].$sql_details['timestamp']."/info", "w+" );
fwrite( $handinfo, utf8_decode($info));
fclose( $handinfo );
//delete all package with the same id
mysql2_query_secure( "DELETE FROM download_available WHERE FILEID='%s'", $_SESSION['OCS']["writeServer"],$sql_details['timestamp']);
//insert new package
$req = "INSERT INTO download_available(FILEID, NAME, PRIORITY, FRAGMENTS, SIZE, OSNAME, COMMENT,ID_WK) VALUES
( '%s', '%s','%s', '%s','%s', '%s', '%s','%s' )";
$arg = array($sql_details['timestamp'],$sql_details['name'],$info_details['PRI'],$sql_details['nbfrags'],
$sql_details['size'],$sql_details['os'],$sql_details['description'],$sql_details['id_wk']);
mysql2_query_secure( $req, $_SESSION['OCS']["writeServer"], $arg);
addLog($l->g(512), $l->g(617)." ".$sql_details['timestamp'] );
//info message
msg_success($l->g(437)." ".$sql_details['document_root'].$sql_details['timestamp']);
//delete cache for activation
unset($_SESSION['OCS']['DATA_CACHE']['LIST_PACK']);
unset($_SESSION['OCS']['NUM_ROW']['LIST_PACK']);
}
function crypt_file($dir_FILES,$digest_algo,$digest_encod){
//crypt this file
if( $digest_algo == "SHA1" )
$digest = sha1_file($dir_FILES,true);
else
$digest = md5_file($dir_FILES);
if( $digest_encod == "Base64" )
$digest = base64_encode( $digest );
return $digest;
}
function creat_temp_file($directory,$dir_FILES){
if (!file_exists ($directory."/tmp")){
if (! @mkdir( $directory)
or !copy( $dir_FILES, $directory."/tmp" )
)
msg_error("ERROR: can't create or write in ".$directory." folder, please refresh when fixed.
(or try disabling php safe mode)");
}
}
//$val_details['priority'],$val_details['fragments'],$val_details['size']
function tps_estimated($val_details)
{
global $l;
if ($val_details == "")
return;
/*********************************DETAIL SUR LE TEMPS APPROXIMATIF DE TELEDEPLOIEMENT*****************************************/
// $sql_config="select name,ivalue from config where name in ('DOWNLOAD_CYCLE_LATENCY',
// 'DOWNLOAD_PERIOD_LENGTH',
// 'DOWNLOAD_FRAG_LATENCY',
// 'DOWNLOAD_PERIOD_LATENCY')";
// $res_config = mysql_query( $sql_config, $_SESSION['OCS']["readServer"] );
// while ($val_config = mysql_fetch_array( $res_config ))
// $config[$val_config['name']]=$val_config['ivalue'];
looking4config();
if ($val_details['priority'] == 0)
$val_details['priority']=1;
//dur�e compl�te d'un cycle en seconde
$tps_cycle=$_SESSION['OCS']['CONFIG_DOWNLOAD']['DOWNLOAD_CYCLE_LATENCY']*$_SESSION['OCS']['CONFIG_DOWNLOAD']['DOWNLOAD_PERIOD_LENGTH'];
//nbre de t�l�chargement de fragment par cycle
$nb_frag_by_cycle=floor($_SESSION['OCS']['CONFIG_DOWNLOAD']['DOWNLOAD_PERIOD_LENGTH']/$val_details['priority']);
//nombre de cycles necessaires pour le t�l�chargement complet
$nb_cycle_for_download=$val_details['fragments']/$nb_frag_by_cycle;
//temps dans le cycle
$tps_cycle_for_download=$nb_cycle_for_download*$tps_cycle;
//temps entre chaque fragment pour tous les cycles
$tps_frag_latency=($nb_frag_by_cycle*$_SESSION['OCS']['CONFIG_DOWNLOAD']['DOWNLOAD_FRAG_LATENCY'])*$nb_cycle_for_download;
//temps entre chaque p�riode
$tps_period_latency=$_SESSION['OCS']['CONFIG_DOWNLOAD']['DOWNLOAD_PERIOD_LATENCY']*$nb_cycle_for_download;
//ajout de la vitesse de t�l�chargement
$download_speed=25000;
$tps_download_speed=$val_details['size']/$download_speed;
//temps total de t�l�chargement:
$tps_total=$tps_cycle_for_download
+$tps_frag_latency
+$tps_period_latency
+$tps_download_speed
;
$heure= floor($tps_total/3600);
$tps_total-=$heure*3600;
$minutes=floor($tps_total/60);
$tps_total-=$minutes*60;
$tps= $heure."h ".$minutes."min ";
if ($heure == 0 and $minutes == 0)
$tps.=floor($tps_total)." ".$l->g(511);
return $tps;
}
function found_info_pack($id){
global $l;
if (!is_numeric($id))
return array('ERROR'=>$l->g(1129));
$sql="select NAME,PRIORITY,FRAGMENTS,SIZE,OSNAME,COMMENT from download_available where fileid=%s";
$res = mysql2_query_secure( $sql, $_SESSION['OCS']["readServer"],$id);
$val = mysql_fetch_array( $res );
return $val;
}
?>