-
Notifications
You must be signed in to change notification settings - Fork 3
/
monitor.php
executable file
·105 lines (88 loc) · 3.46 KB
/
monitor.php
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
<?php
/*
* To change this license header, choose License Headers in Project Properties.
* To change this template file, choose Tools | Templates
* and open the template in the editor.
*/
# Configuracion para envio de mails, para pruebas puede utilizarse Gmail
require 'config/config-mail.php';
$mail_test = false;
#
$path= './capabilities';
$aContext = array(
'http' => array(
'proxy' => '172.20.203.111:3128',
'request_fulluri' => true,
),
);
$cxContext = stream_context_create($aContext);
# Consulta Servidores de los servicios.
$file = file_get_contents("http://servicios.idera.gob.ar/geoservicios/sources.json",
False, $cxContext);
$services = json_decode($file, true);
$file_db = new PDO('sqlite:emails.sqlite');
$hoy = new DateTime();
// Prepare UPDATE statement to SQLite3 file db
$sql_update = "UPDATE emails SET fecha_envio = :fecha where provider = :provider";
$update = $file_db->prepare($sql_update);
// Bind parameters to statement variables
$update->bindParam(':provider', $_provider);
$update->bindParam(':fecha', $_fecha);
#Borra xml cacheados anteriormente
exec("rm $path/*.xml");
# Recorre los servidores y obtiene capacidades de cada servicio.
if ($services && !$mail_test){
foreach ($services as $service) {
foreach ($service as $nodo)
if (isset($nodo["wms"])) {
exec("wget --tries=2 --timeout=60 -O $path/$nodo[id].xml " . $nodo["wms"] .
"'&service=WMS&version=1.1.1&request=GetCapabilities'");
if (0 == filesize("$path/$nodo[id].xml")) {
$_provider = $nodo['id'];
$_url = $nodo["wms"];
$sql_consulta = "SELECT * FROM emails where provider = '$_provider'";
$consulta = $file_db->prepare($sql_consulta);
$consulta->execute();
$resultado = $consulta->fetch(PDO::FETCH_ASSOC);
if (!empty($resultado)) { //si tiene email entra
echo "Existe el email \n";
$fecha_envio = $resultado["fecha_envio"];
$ultimo_envio = DateTime::createFromFormat("Y-m-d H:i:s", $fecha_envio);
$intervalo = $hoy->diff($ultimo_envio);
$diferencia_dias = $intervalo->format("%R%a");
if (abs($diferencia_dias) > 7) {
$para = $resultado["email"];
echo "Intento enviar email \n";
$mail->clearAddresses();
$mail->addAddress($para);
$mail->msgHTML("Informamos que su servicio " . $_url .
" se encuentra inaccesible. Por favor no responda este mensaje");
if (!$mail->send()) {
echo "Mailer Error: " . $mail->ErrorInfo;
} else {
echo "envio un email porque el servidor de $_provider esta caído \n";
$_fecha = $hoy->format("Y-m-d H:i:s");
$update->execute();
}
}
}else{
echo "No existe el mail \n";
}
}
}
}
} else {
$para = "[email protected]";
echo "Intento enviar email \n";
$mail->clearAddresses();
$mail->addAddress($para);
if($mail_test) {$mail->msgHTML("Mail de prueba");}
else {
$mail->msgHTML("informamos que el script sources.php no devuelve datos. Por favor no responda este mensaje");
}
if (!$mail->send()) {
echo "Mailer Error: " . $mail->ErrorInfo;
} else {
echo "envio un email porque el script sources.php no devuelve datos\n";
}
}