source: admin/WebConsole/comandos/gestores/wakeonlan_repo.php @ 43763e4

918-git-images-111dconfigfileconfigure-oglivegit-imageslgromero-new-oglivemainmaint-cronmount-efivarfsmultivmmultivm-ogboot-installerogClonningEngineogboot-installer-jenkinsoglive-ipv6test-python-scriptsticket-301ticket-50ticket-50-oldticket-577ticket-585ticket-611ticket-612ticket-693ticket-700ubu24tplunification2use-local-agent-oglivevarios-instalacion
Last change on this file since 43763e4 was 560455a, checked in by OpenGnSys Support Team <soporte-og@…>, 6 years ago

#915 adapt web console to use new REST API in OgAdmServer?

Use new REST API in ogAdmServer.

This allows us to start removing the old SockHidra? code.

  • Property mode set to 100644
File size: 2.7 KB
Line 
1<?php
2// Fichero con funciones para trabajar con el webservice
3include_once("../../includes/restfunctions.php");
4
5/**
6        En este punto disponemos de tres variables indicando las ips, las macs y las ids de los
7        ordenadores, este script obtiene cual es el repositorio
8        $cadenaid
9        $cadenaip
10        $cadenamac
11
12 */
13
14//Multicast or Unicast
15preg_match_all('!\d{1}!', $atributos, $matches);
16
17// Capturamos todas las ids
18$macs = explode(";",$cadenamac);
19$ips = explode(';',$cadenaip);
20
21wol($matches[0][0], $macs, $ips);
22
23// Recorremos las ids y vemos cual es la ip del repositorio
24$repos = array();
25$reposAndMacs = array();
26foreach($macs as $mac){
27        $cmd->texto="SELECT repo.ip, repo.apikey FROM ordenadores o,repositorios repo WHERE o.mac=\"".$mac."\" AND o.idrepositorio=repo.idrepositorio";
28        $rs=new Recordset;
29        $rs->Comando=&$cmd;
30    if (!$rs->Abrir())
31        return; // Error al abrir recordset
32    while (!$rs->EOF){
33                $repo = $rs->campos["ip"];
34                if(!existREPO($repo, $repos)){
35                        $repos[count($repos)]=$repo;
36                }
37                // Una vez creado el repo se asigna la mac del pc a su lista
38                if(empty($reposAndMacs[$repo])){
39                        $reposAndMacs[$repo] = array();
40                        $reposAndMacs[$repo]["apikey"] = $rs->campos["apikey"];
41                }
42                // Modificar la mac añadiendo ":" cada dos caracteres
43                $tmp = substr_replace($mac, ":", 2, 0);
44                $tmp = substr_replace($tmp, ":", 5, 0);
45                $tmp = substr_replace($tmp, ":", 8, 0);
46                $tmp = substr_replace($tmp, ":", 11, 0);
47                $tmp = substr_replace($tmp, ":", 14, 0);
48
49                $reposAndMacs[$repo][count($reposAndMacs[$repo])] = $tmp;
50            $rs->Siguiente();
51        }
52        $rs->Cerrar();
53}
54
55// En este punto tenemos un array con todos los repos y cada uno de ellos con una lista de todas las macs que deben arrancar
56// Recorremos cada uno de ellos
57foreach($reposAndMacs as $repo => $macs){
58        // En el array de $macs tenemos la clave "apikey"
59        if($macs["apikey"] !== "") {
60                $apiKeyRepo = $macs["apikey"];
61                unset($macs["apikey"]);
62                // Componer datos de conexión para el repositorio.
63                $urls[$repo]['url'] = "https://$repo/opengnsys/rest/repository/poweron";
64                $urls[$repo]['header'] = array('Authorization: '. $apiKeyRepo);
65                $urls[$repo]['post'] = '{"macs": ["' . implode('","', $macs) . '"], "ips": ["' . str_replace(';', '","', $cadenaip) .
66                        '"], "mar": "' . $matches[0][0] . '"}';
67        }
68        else {
69                $avisoRepo = true;
70        }
71}
72// Enviar petición múltiple a los repositorios afectados.
73if (isset($urls)) {
74        $result = multiRequest($urls);
75        // Comprobar respuesta.
76        foreach ($result as $repo => $res) {
77                if ($res['code'] != 200) {
78                        $avisoRepo = true;
79                }
80        }
81}
82
83
84function existREPO($repo, $repos){
85        $found=false;
86        $index = 0;
87        while(!$found && $index < count($repos)){
88                $r = $repos[$index];
89                $index++;
90                if($r == $repo)
91                        $found=true;
92        }
93        return $found;
94}
95
96
Note: See TracBrowser for help on using the repository browser.