[ Index ] |
PHP Cross Reference of Unnamed Project |
[Summary view] [Print] [Text view]
1 <?php 2 3 /** 4 * Librairie de fonctions utilisees par backuppc 5 6 * @Version $Id: fonction_backup.inc.php 5172 2010-01-31 17:16:05Z plouf $ 7 8 * @Projet LCS / SambaEdu 9 10 * @Auteurs Philippe Chadefaux 11 12 * @Note: Ce fichier de fonction doit etre appele par un include 13 * 14 15 * @Licence Distribue sous la licence GPL 16 */ 17 18 /** 19 20 * file: fonction_backup.inc.php 21 * @Repertoire: includes/ 22 */ 23 24 25 26 //================================================= 27 28 /** 29 * relit la conf du fichier 30 31 * @Parametres 32 * @Return 33 */ 34 35 function umountUSB () { // relit la conf du fichier 36 system('sudo /usr/share/se3/sbin/umountusbdisk.sh'); 37 } 38 39 //================================================= 40 41 /** 42 * relit la conf du fichier 43 44 * @Parametres 45 * @Return 46 */ 47 48 function restoreUSB () { // relit la conf du fichier 49 system('sudo /usr/share/se3/sbin/restorebackup.sh'); 50 } 51 52 //================================================= 53 54 /** 55 * relit la conf du fichier 56 57 * @Parametres 58 * @Return 59 */ 60 61 /* Force la relecture de la conf */ 62 function reloadBackuPpc () { // relit la conf du fichier 63 exec('/usr/bin/sudo /usr/share/se3/scripts/startbackup reload'); 64 } 65 66 //================================================= 67 68 /** 69 * Stop BackupPc 70 71 * @Parametres 72 * @Return 73 */ 74 75 /* Stop backuppc */ 76 function stopBackupPc () { // Stop BackupPc 77 exec('/usr/bin/sudo /usr/share/se3/scripts/startbackup stop'); 78 } 79 80 //================================================= 81 82 /** 83 * Start BackupPc 84 85 * @Parametres 86 * @Return 87 */ 88 89 function startBackupPc () { // Start BackupPc 90 exec('/usr/bin/sudo /usr/share/se3/scripts/startbackup start'); 91 } 92 93 //================================================= 94 95 /** 96 * Indique si BackupPc est lance ou pas 97 98 * @Parametres 99 * @Return 100 */ 101 102 function EtatBackupPc () { // Indique si BackupPc est lance ou pas 103 exec("/bin/ps awux",$ps); 104 if (array_values(preg_grep("/BackupPC/",$ps))) { return 1; } else { return 0; } 105 } 106 107 //================================================= 108 109 /** 110 * verifie l'existence des cles pour connexions ssh 111 112 * @Parametres 113 * @Return 114 */ 115 116 function KeyExist () { // verifie l'existence des cles pour connexions ssh 117 return file_exists('/var/remote_adm/.ssh/id_rsa.pub'); 118 } 119 120 //================================================= 121 122 /** 123 * Creation de la cle pour ssh 124 125 * @Parametres 126 * @Return 127 */ 128 129 function CreeKey () { // Creation de la cle pour ssh 130 if (!file_exists('/var/remote_adm/.ssh')) { 131 mkdir("/var/remote_adm/.ssh",0744); 132 } 133 if (!file_exists('/var/remote_adm/.ssh/id_rsa.pub')) { 134 exec("/usr/bin/ssh-keygen -t rsa -N '' -f /var/remote_adm/.ssh/id_rsa"); 135 } 136 } 137 138 //================================================= 139 140 /** 141 * Retourne la valeur de la variable $Name contenu dans config.pl 142 143 * @Parametres 144 * @Return 145 */ 146 147 function variables($Name,$HostServer) { // Retourne la valeur de la variable $Name contenu dans config.pl 148 if($HostServer=="") { 149 $filename="/etc/backuppc/config.pl"; 150 } else { 151 $filename="/etc/backuppc/".$HostServer.".pl"; 152 } 153 154 if (file_exists("$filename")) { //Si le fichier existe on recherche les valeurs 155 $lignes = file("$filename"); 156 foreach ($lignes as $num => $ligne) { 157 if (preg_match ("/$Conf{$Name}.*=(.*);/",$ligne, $reg)) { 158 if (preg_match ("/\[(.*)\]/",$reg[1],$reg2)) { 159 $variable = trim ($reg2[1]); 160 return $variable; 161 } 162 if (preg_match("/'(.*)'/",$reg[1],$reg2)) { 163 $variable = trim($reg2[1]); 164 return $variable; 165 } 166 $variable = trim($reg[1]); 167 return $variable; 168 } 169 if (preg_match ("/$Name.*=>(.*),/",$ligne,$reg)) { 170 $variable = trim($reg[1]); 171 return $variable; 172 } 173 } 174 } 175 } 176 177 //================================================= 178 179 /** 180 * retourne 1 si une machine existe dans le fichier hosts 181 182 * @Parametres 183 * @Return 184 */ 185 186 function HostExist($HostServer) { //retourne 1 si une machine existe dans le fichier hosts 187 // verifier si HostServer ne peut pas etre plus precis 188 $filehost = '/etc/backuppc/hosts'; 189 $lignes = file("$filehost"); 190 foreach ($lignes as $num =>$line) { 191 if (preg_match("/^$HostServer\s+/i",$line)) { 192 return true; 193 } 194 } 195 return false; 196 } 197 198 //================================================= 199 200 /** 201 * Ajoute une machine dans le fichier hosts, retourne 0 si probleme 202 203 * @Parametres 204 * @Return 205 */ 206 207 function AjoutHosts($HostServer,$dhcp,$TypeServer) { // Ajoute une machine dans le fichier hosts, retourne 0 si probleme 208 $filehost = '/etc/backuppc/hosts'; 209 $fp = fopen($filehost,"a+"); 210 if (!HostExist($HostServer)) { 211 $ligne = "$HostServer \t $dhcp \t backuppc \t # $TypeServer\n"; 212 fwrite($fp, $ligne); 213 // if (fwrite($fp,$ligne)== FALSE) { 214 // return 0; 215 // } 216 } 217 fclose($fp); 218 } 219 220 //================================================= 221 222 /** 223 * Detruit une entree dans le fichier hosts 224 225 * @Parametres 226 * @Return 227 */ 228 229 function DeleteHost($HostServer) { // Detruit une entree dans le fichier hosts 230 $filehost = "/etc/backuppc/hosts"; 231 $filehost_tmp = $filehost.".tmp"; 232 if (file_exists($filehost)) { //On vire la machine dans le fichiers hosts 233 $fp = fopen("$filehost","r"); 234 $fp_tmp = fopen("$filehost_tmp","w"); 235 while (!feof($fp)) { 236 $ligne = fgets($fp,1098); 237 if (!preg_match("/^$HostServer\s+/i",$ligne)) { 238 fwrite($fp_tmp,$ligne); 239 } 240 } 241 fclose($fp); 242 fclose($fp_tmp); 243 copy($filehost_tmp,$filehost); 244 unlink($filehost_tmp); 245 } 246 } 247 248 //================================================= 249 250 /** 251 * Retourne la conf du dhcp 0 ou 1 252 253 * @Parametres 254 * @Return 255 */ 256 257 function GetDhcp($HostServer) { // Retourne la conf du dhcp 0 ou 1 258 $filehost = "/etc/backuppc/hosts"; 259 $lignes = file("$filehost"); 260 $expr = "/^$HostServer\s+([01])/"; 261 foreach ($lignes as $num => $line) { 262 if (preg_match($expr,$line,$regs)) { 263 return trim($regs[1]); 264 265 } 266 } 267 } 268 269 //================================================= 270 271 /** 272 * retourne quand il est indique le type de serveur 273 274 * @Parametres 275 * @Return 276 */ 277 278 function GetTypeServer($HostServer) { // retourne quand il est indique le type de serveur 279 $filehost = "/etc/backuppc/hosts"; 280 $lignes = file("$filehost"); 281 $expr = "/^$HostServer\s+.*[#]\s+(.*)/"; 282 foreach ($lignes as $num => $line) { 283 if (preg_match($expr,$line,$regs)) { 284 return trim($regs[1]); 285 } 286 } 287 } 288 289 //================================================= 290 291 /** 292 * Detruit le reertoire de la sauvegarde de la machine HostServer 293 294 * @Parametres 295 * @Return 296 */ 297 298 function DeleteRep($HostServer) { // Detruit le repertoire de la sauvegarde de la machine HostServer 299 $dir_backup="/var/lib/backuppc/pc/"; 300 if($HostServer=="") { 301 return; 302 } 303 $rep = $dir_backup.$HostServer; 304 if(is_dir($rep)) { 305 $cmd="/usr/bin/sudo /usr/share/se3/scripts/move_rep_backuppc.sh delete ".$HostServer; 306 exec($cmd); 307 } 308 } 309 310 //================================================= 311 312 /** 313 * Test si backuppc est installe en local sur un Se3 ou un Slis ou une machine dediee 314 315 * @Parametres 316 * @Return 317 */ 318 319 function TypeMachine() { // Test si backuppc est installe en local sur un Se3 ou un Slis ou une machine dediee 320 if(is_dir("/usr/share/se3")) { 321 return Se3; 322 } 323 if(file_exists("/etc/version_slis")) { 324 return Slis; 325 } 326 if(is_dir("/usr/share/lcs")) { 327 return Lcs; 328 } 329 } 330 331 //================================================= 332 333 /** 334 * active ou desactive la sauvegarde 335 336 * @Parametres 337 * @Return 338 */ 339 340 function Desactive($HostServer,$Etat) { // active ou desactive la sauvegarde 341 $filehost="/etc/backuppc/".$HostServer.".pl"; 342 $fp=fopen("$filehost","rb"); 343 $cont = fread($fp, filesize($filehost)); 344 fclose ($fp); 345 346 $mod = "/[\$]Conf\{FullPeriod\}\s*=\s*(.+);/"; 347 if ($Etat == "1") { 348 $mod_chang=""; 349 } else { 350 $mod_chang = "\$Conf{FullPeriod} = $Etat;"; 351 } 352 if(preg_match($mod,$cont)) { 353 $cont = preg_replace($mod,$mod_chang,$cont); 354 $fp = fopen("$filehost","w"); 355 fwrite($fp,$cont); 356 fclose ($fp); 357 } else { 358 $fp = fopen("$filehost","w"); 359 fwrite($fp,$cont); 360 fwrite($fp,$mod_chang); 361 fclose ($fp); 362 } 363 } 364 365 //================================================= 366 367 /** 368 * Recherche si la sauvegarde pour $HostServer est active 369 370 * @Parametres 371 * @Return 372 */ 373 374 function EtatDesactive($HostServer) { // Recherche si la sauvegarde pour $HostServer est active 375 $filehost="/etc/backuppc/".$HostServer.".pl"; 376 $fp=fopen("$filehost","rb"); 377 $cont = fread($fp, filesize($filehost)); 378 fclose ($fp); 379 380 $mod = "/[\$]Conf\{FullPeriod\}\s*=\s*(-1);/"; 381 382 if(preg_match($mod,$cont)) { 383 return true; 384 } else { 385 return false; 386 } 387 } 388 389 //================================================= 390 391 /** 392 * //vire les / lorsqu'ils sont en double ou triple 393 394 * @Parametres 395 * @Return 396 */ 397 398 function stripslashes2($valeur) { //vire les / lorsqu'ils sont en double ou triple 399 $valeur = str_replace("\\\\'","'",$valeur); 400 $valeur = str_replace("\\'","'",$valeur); 401 $valeur = str_replace("'\\\\","'\\",$valeur); 402 $valeur = stripslashes($valeur); 403 return $valeur; 404 } 405 406 //================================================= 407 408 /** 409 * deplace le repertoire de sauvegarde $drive vers $space 410 411 * @Parametres 412 * @Return 413 */ 414 415 function MoveRep($drive,$space) { // deplace le repertoire de sauvegarde $drive vers $space 416 $cmd="/usr/bin/sudo /usr/share/se3/scripts/move_rep_backuppc.sh ".$drive." ".$space; 417 exec($cmd); 418 } 419 420 //================================================= 421 422 /** 423 * Verifie la coherence entre le fichier host et la presence du fichier machine.pl 424 425 * @Parametres 426 * @Return 427 */ 428 429 function HostCoherence() { // Verifie la coherence entre le fichier host et la presence du fichier machine.pl 430 $filehost = '/etc/backuppc/hosts'; 431 $lignes = file("$filehost"); 432 foreach ($lignes as $num =>$line) { 433 if (!preg_match("/^#|^host\s+|^$/",$line)) { 434 preg_match("/(.*)\s+[01].*/",$line,$reg); 435 $host=trim($reg[1]); 436 $fichier = "/etc/backuppc/".$host.".pl"; 437 if(!file_exists("$fichier")) { 438 DeleteHost($host); 439 } 440 } 441 442 } 443 } 444 445 //================================================= 446 447 /** 448 * Test si l'interface a bien les droits pour ecrire dans le repertoire 449 450 * @Parametres : le répertoire a tester 451 * @Return : true si on a bien le droit d'ecrire, false sinon. 452 */ 453 454 function TestEcrire($repertoire) { // Test si ww-se3 a bien les droits pour ecrire dans le repertoire 455 $ok = true; 456 $nom_fichier = "$repertoire/test.tmp"; 457 $f = @fopen($nom_fichier,"w"); 458 if (!$f) $ok = false; 459 elseif (!@fclose($f)) $ok = false; 460 elseif (!@unlink($nom_fichier)) $ok = false; 461 return $ok; 462 } 463 464 ?>
title
Description
Body
title
Description
Body
title
Description
Body
title
Body
Generated: Tue Mar 17 22:47:18 2015 | Cross-referenced by PHPXref 0.7.1 |