PABX da Simples IP
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

504 lines
16 KiB

<?php
function connect_db() {
$conexao = pg_connect("dbname=desenvolvimento port=5432 host=localhost user=contacte password=ctepgSQL");
if (!$conexao) {
exit;
}
}
function format_uptime($seconds) {
$secs = intval($seconds % 60);
$mins = intval($seconds / 60 % 60);
$hours = intval($seconds / 3600 % 24);
$days = intval($seconds / 86400);
if ($days > 0) {
$uptimeString .= $days;
$uptimeString .= (($days == 1) ? " Dia" : " Dias");
}
if ($hours > 0) {
$uptimeString .= (($days > 0) ? " " : "") . $hours;
$uptimeString .= (($hours == 1) ? " Hora" : " Horas");
}
if ($mins > 0) {
$uptimeString .= (($days > 0 || $hours > 0) ? " " : "") . $mins;
$uptimeString .= (($mins == 1) ? " Minuto" : " Minutos");
}
if ($secs > 0) {
$uptimeString .= (($days > 0 || $hours > 0 || $mins > 0) ? " " : "") . $secs;
$uptimeString .= (($secs == 1) ? " Segundo" : " Segundos");
}
return $uptimeString;
}
function lowermemory($Wertq) {
if ($Wertq > 1073741824) {
$Wertq = number_format($Wertq / 1073741824, 2, ".", ",") . " Tb";
} elseif ($Wertq > 1048576) {
$Wertq = number_format($Wertq / 1048576, 2, ".", ",") . " Gb";
} elseif ($Wertq > 1024) {
$Wertq = number_format($Wertq / 1024, 2, ".", ",") . " Mb";
} else {
$Wertq = number_format($Wertq, 2, ".", ",") . " Kb";
}
return $Wertq;
}
function getStat($_statPath) {
if (trim($_statPath) == '') {
$_statPath = '/proc/stat';
}
ob_start();
passthru('cat ' . $_statPath);
$stat = ob_get_contents();
ob_end_clean();
if (substr($stat, 0, 3) == 'cpu') {
$parts = explode(" ", preg_replace("!cpu +!", "", $stat));
} else {
return false;
}
$return = array();
$return['user'] = $parts[0];
$return['nice'] = $parts[1];
$return['system'] = $parts[2];
$return['idle'] = $parts[3];
return $return;
}
function getCpuUsage($_statPath = '/proc/stat') {
$time1 = getStat($_statPath) or die("getCpuUsage(): couldn't access STAT path or STAT file invalid\n");
sleep(1);
$time2 = getStat($_statPath) or die("getCpuUsage(): couldn't access STAT path or STAT file invalid\n");
$delta = array();
foreach ($time1 as $k => $v) {
$delta[$k] = $time2[$k] - $v;
}
$deltaTotal = array_sum($delta);
$percentages = array();
foreach ($delta as $k => $v) {
$percentages[$k] = round($v / $deltaTotal * 100, 2);
}
return $percentages;
}
function ZahlenFormatieren($Wert) {
if ($Wert > 1099511627776) {
$Wert = number_format($Wert / 1099511627776, 2, ".", ",") . " TB";
} elseif ($Wert > 1073741824) {
$Wert = number_format($Wert / 1073741824, 2, ".", ",") . " GB";
} elseif ($Wert > 1048576) {
$Wert = number_format($Wert / 1048576, 2, ".", ",") . " MB";
} elseif ($Wert > 1024) {
$Wert = number_format($Wert / 1024, 2, ".", ",") . " kB";
} else {
$Wert = number_format($Wert, 2, ".", ",") . " Bytes";
}
return $Wert;
}
function checkos() {
if (substr(PHP_OS, 0, 3) == "WIN") {
$osType = winosname();
$osbuild = php_uname('v');
$os = "windows";
} elseif (PHP_OS == "FreeBSD") {
$os = "nocpu";
$osType = "FreeBSD";
$osbuild = php_uname('r');
} elseif (PHP_OS == "Darwin") {
$os = "nocpu";
$osType = "Apple OS X";
$osbuild = php_uname('r');
} elseif (PHP_OS == "Linux") {
$os = "linux";
$osType = "Linux";
$osbuild = php_uname('r');
} else {
$os = "nocpu";
$osType = "Unknown OS";
$osbuild = php_uname('r');
}
return $osType;
}
function winosname() {
$wUnameB = php_uname("v");
$wUnameBM = php_uname("r");
$wUnameB = eregi_replace("build ", "", $wUnameB);
if ($wUnameBM == "5.0" && ($wUnameB == "2195")) {
$wVer = "Windows 2000";
}
if ($wUnameBM == "5.1" && ($wUnameB == "2600")) {
$wVer = "Windows XP";
}
if ($wUnameBM == "5.2" && ($wUnameB == "3790")) {
$wVer = "Windows Server 2003";
}
if ($wUnameBM == "6.0" && (php_uname("v") == "build 6000")) {
$wVer = "Windows Vista";
}
if ($wUnameBM == "6.0" && (php_uname("v") == "build 6001")) {
$wVer = "Windows Vista SP1";
}
return $wVer;
}
if (PHP_OS == "WINNT") {
$os = "windows";
$osbuild = php_uname('v');
} elseif (PHP_OS == "Linux") {
$os = "linux";
$osbuild = php_uname('r');
} else {
$os = "nocpu";
$osbuild = php_uname('r');
}
while (true) {
$envia_email = false;
$email = '<table width="100%" border="1" cellpadding="1" cellspacing="1" bordercolor="#CC0000">
<tr>
<td bordercolor="#FFFFFF" bgcolor="#CC0000" ><div align="center"><font face="Verdana, Arial, Helvetica, sans-serif" color="#FFFFFF" size="+1">AVISOS DO SISTEMA</font></div></td>
</tr>';
$email = $email . '<tr>
<td bordercolor="#FFFFFF" bgcolor="#CC0000" ><div align="center"><font face="Verdana, Arial, Helvetica, sans-serif" color="#FFFFFF" size="0">FORAM ENCONTRADAS AS SEGUINTES ANOMALIAS</font></div></td>
</tr>';
$title = "Monitor do Sistema";
$portcheck = ".1";
$copyright = "";
$servername = "localhost";
$customos = "";
$name[1] = "Servidor Web";
$port[1] = "80";
$name[2] = "SSL Web";
$port[2] = "443";
$name[3] = "MySQL-Server";
$port[3] = "3306";
$name[4] = "FTP-Server";
$port[4] = "21";
$name[5] = "Asterisk";
$port[5] = "5038";
$name[6] = "PostGreSQL";
$port[6] = "5432";
$name[7] = "SSH";
$port[7] = "22";
$arr = array(
array($name[1], $port[1]),
array($name[2], $port[2]),
array($name[3], $port[3]),
array($name[4], $port[4]),
array($name[5], $port[5]),
array($name[6], $port[6]),
array($name[7], $port[7]),
); {
}
if ($servername == "") {
$theservername = $_SERVER['SERVER_NAME'];
} else {
$theservername = $servername;
}
if ($customos == "") {
$osname = checkos();
} else {
$os = "nocpu";
$osname = $customos;
}
if (php_sapi_name() == "apache2handler") {
$httpapp = "Apache";
} else {
$httpapp = php_sapi_name();
}
if (PHP_OS == "WINNT") {
$os = "windows";
$osbuild = php_uname('v');
} elseif (PHP_OS == "Linux") {
$os = "linux";
$osbuild = php_uname('r');
} else {
$os = "nocpu";
$osbuild = php_uname('r');
}
connect_db();
$query = "SELECT * FROM pbx_monitora_sistema where nome_servico is not null and tipo_monitor='S' order by id desc";
$result = pg_query($query);
while ($dados = pg_fetch_array($result)) {
//VERIFICA SERVICOS DO SISTEMA
$query2 = "SELECT * FROM pbx_servicos_sistema order by id asc";
$result2 = pg_query($query2);
while ($dados2 = pg_fetch_array($result2)) {
if (@fsockopen('127.0.0.1', $dados2['porta'], $errno, $errstr, $portcheck)) {
} else {
if (trim($dados2['servico']) == trim($dados['nome_servico'])) {
$email = $email . ' <tr><td bordercolor="#FFFFFF" bgcolor="#CC0000" ><div align="center"><font face="Verdana, Arial, Helvetica, sans-serif" color="#FFFFFF" size="-1">O SERVI<EFBFBD>O:' . $dados2['servico'] . ' EST<EFBFBD> DESLIGADO!</font></div></td></tr>';
$envia_email = true;
}
}
flush();
}
}
pg_close();
$frei = disk_free_space("./");
$insgesamt = disk_total_space("./");
$belegt = $insgesamt - $frei;
$prozent_belegt = 100 * $belegt / $insgesamt;
//VERIFICACAO DE DISCOS
$espacao_em_disco = ZahlenFormatieren($insgesamt);
$espacao_em_uso = ZahlenFormatieren($belegt);
$por_usada = round($prozent_belegt, "2");
$espaco_livre = ZahlenFormatieren($frei);
connect_db();
$query = "SELECT * FROM pbx_monitora_sistema where nome_servico is not null and tipo_monitor='D' order by id desc";
$result = pg_query($query);
while ($dados = pg_fetch_array($result)) {
$limite_disco = $dados['avisar_ao_chegar'];
}
pg_close();
if ($espaco_livre < $limite_disco) {
$envia_email = true;
$email = $email . ' <tr><td bordercolor="#FFFFFF" bgcolor="#CC0000" ><div align="center"><font face="Verdana, Arial, Helvetica, sans-serif" color="#FFFFFF" size="-1">O ESPA<EFBFBD>O USADO EM DISCO <EFBFBD> DE :' . $por_usada . '% E O LIMITE <EFBFBD> DE :' . $limite_disco . '%</font></div></td></tr>';
} {
if ($os == "windows") {
$wmi = new COM("Winmgmts://");
$cpus = $wmi->execquery("SELECT * FROM Win32_Processor");
foreach ($cpus as $cpu) {
$cpu->loadpercentage;
}
$por_cpu = round($cpu->loadpercentage, "2");
}
if ($os == "linux") {
$cpu = getCpuUsage();
//MONITOR CPU
$cpulast = 100 - $cpu['idle'];
$uso_cpu = round($cpulast, "0");
$por_cpu = round($cpulast, "2");
connect_db();
$query = "SELECT * FROM pbx_monitora_sistema where tipo_monitor='C' order by id desc";
$result = pg_query($query);
while ($dados = pg_fetch_array($result)) {
$limite_cpu = $dados['avisar_ao_chegar'];
}
pg_close();
if ($por_cpu > $limite_cpu) {
$envia_email = true;
$email = $email . ' <tr><td bordercolor="#FFFFFF" bgcolor="#CC0000" ><div align="center"><font face="Verdana, Arial, Helvetica, sans-serif" color="#FFFFFF" size="-1">O CPU EST<EFBFBD> OPERANDO <EFBFBD> ' . $por_cpu . '% E O LIMITE <EFBFBD> DE :' . $limite_cpu . '%</font></div></td></tr>';
}
} elseif ($os == "nocpu") {
echo "";
} else {
//
}
} {
if ($os == "windows") {
//
} elseif ($os == "linux") {
$mem = file_get_contents("/proc/meminfo");
if (preg_match('/MemTotal\:\s+(\d+) kB/', $mem, $matches)) {
$insgesamtq = $matches[1];
}
if (preg_match('/Buffers\:\s+(\d+) kB/', $mem, $matches)) {
$buffertq = $matches[1];
}
if (preg_match('/Cached\:\s+(\d+) kB/', $mem, $matches)) {
$cachedamtq = $matches[1];
}
unset($matches);
if (preg_match('/MemFree\:\s+(\d+) kB/', $mem, $matches)) {
$freiq = $matches[1];
}
//MONITOR MEM<EFBFBD>RIA
$Used = $insgesamtq - $freiq - $cachedamtq - $buffertq;
$prozent_belegtq = 100 * $Used / $insgesamtq;
$memoria_uso = lowermemory($Used);
$memoria_total = lowermemory($insgesamtq);
$por_total = round($prozent_belegtq, "2");
connect_db();
$query = "SELECT * FROM pbx_monitora_sistema where tipo_monitor='M' order by id desc";
$result = pg_query($query);
while ($dados = pg_fetch_array($result)) {
$limite_mem = $dados['avisar_ao_chegar'];
}
pg_close();
if ($por_total > $limite_mem) {
$envia_email = true;
$email = $email . ' <tr><td bordercolor="#FFFFFF" bgcolor="#CC0000" ><div align="center"><font face="Verdana, Arial, Helvetica, sans-serif" color="#FFFFFF" size="-1">A MEM<EFBFBD>RIA EST<EFBFBD> OPERANDO <EFBFBD> ' . $por_total . '% E O LIMITE <EFBFBD> DE :' . $limite_mem . '%</font></div></td></tr>';
}
} elseif ($os == "nocpu") {
echo "";
} else {
}
} {
if ($os == "windows") {
$pagefile = 'c:\pagefile.sys';
function ifif($value, $true, $false) {
if ($value == 0) {
return $false;
} else {
return $true;
}
}
$upsince = filemtime($pagefile);
$gettime = (time() - filemtime($pagefile));
$days = floor($gettime / (24 * 3600));
$gettime = $gettime - ($days * (24 * 3600));
$hours = floor($gettime / (3600));
$gettime = $gettime - ($hours * (3600));
$minutes = floor($gettime / (60));
$gettime = $gettime - ($minutes * 60);
$seconds = $gettime;
$days = ifif($days != 1, $days . ' Dias', $days . ' Dia');
$hours = ifif($hours != 1, $hours . ' Horas', $hours . ' Hora');
$minutes = ifif($minutes != 1, $minutes . ' Minutos', $minutes . ' Minuto');
$seconds = ifif($seconds != 1, $seconds . ' Segundos', $seconds . ' Segundo');
if ($days == 0) {
$days = "";
}
if ($hours == 0) {
$hours = "";
}
if ($minutes == 0) {
$minutes = "";
}
if ($seconds == 0) {
$seconds = "";
}
//MONITOR TEMPO
$tempo_operacao = $days . ' ' . $hours . ' ' . $minutes . ' ' . $seconds;
$tempo_ligado = date('F jS, Y. h:i A', $upsince);
} elseif ($os == "linux") {
$uptime = exec("cat /proc/uptime");
$uptime = explode(" ", $uptime);
$uptimeSecs = $uptime[0];
$staticUptime = format_uptime($uptimeSecs);
//$tempo_operacao = $days . ' ' . $hours . ' ' . $minutes . ' ' . $seconds;
$email = $email . ' <tr><td bordercolor="#FFFFFF" bgcolor="#CC0000" ><div align="center"><font face="Verdana, Arial, Helvetica, sans-serif" color="#FFFFFF" size="-1">O SERVIDOR EST<EFBFBD> LIGADO <EFBFBD> ' . $staticUptime;
'%</font></div></td></tr></table>';
$tempo_ligado = $staticUptime;
} else {
//
}
}
flush();
if ($envia_email == true) {
connect_db();
$query = "SELECT * FROM pbx_monitora_sistema where enviar_para is not null order by id desc limit 1";
$result = pg_query($query);
while ($dados = pg_fetch_array($result)) {
$galera = $dados['enviar_para'];
}
pg_close();
require("class.phpmailer.php");
$mail = new PHPMailer();
$mail->IsSMTP(); // mandar via SMTP
connect_db();
$query = "SELECT * FROM pbx_conf_monitor";
$result = pg_query($query);
while ($dados = pg_fetch_array($result)) {
$servidor_email = $dados['servidor_email'];
$email_principal = $dados['email_principal'];
$senha_principal = $dados['senha_principal'];
$de_email = $dados['de_email'];
$de_nome = $dados['de_nome'];
$usuarios = $dados['usuarios'];
$cabecalho = $dados['cabecalho'];
$recebedores = $dados['recebedores'];
}
$query = "SELECT * FROM pbx_confMail where id='$servidor_email'";
$result = pg_query($query);
while ($dados = pg_fetch_array($result)) {
$senha = $dados['senha'];
$usuario = $dados['usuarios'];
$dominio = $dados['dominio'];
}
pg_close();
$mail->Host = $dominio; // Seu servidor smtp
$mail->SMTPAuth = true; // smtp autenticado
$mail->Username = $usuario; // usu<EFBFBD>rio deste servidor smtp
$mail->Password = $senha; // senha
$mail->From = $de_email;
$mail->FromName = $de_nome;
$var_recpt = explode(';', $recebedores);
for ($i = 0; count($var_recpt) > $i; $i++) {
$mail->AddAddress($var_recpt[$i]);
}
$mail->IsHTML(true); // send as HTML
$mail->Subject = $cabecalho;
$mail->Body = $email;
$mail->Send();
}
sleep(60);
}
?>