Advertisement
Goddino

program_dns

Feb 6th, 2020
639
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
PHP 17.97 KB | None | 0 0
  1. <?php
  2. echo "\n";
  3. // Variabile d'ambiente che stabilisce la connessione al database
  4. $connuri = getenv("DBCONN");
  5. // Connessione al database
  6. $conn = pg_connect($connuri);
  7. if(!$conn)
  8. {
  9.     echo "Errore di collegamento con il database\n" . pg_last_error();
  10. }
  11. else
  12. {
  13.     // Selezione dei domini dalla tabella 1
  14.     $query = "SELECT dominio FROM domain";
  15.     $result = pg_query($conn, $query);
  16.     if(!$result)
  17.     {
  18.         echo "\nErrore durante l'esecuzione della query SQL di selezione hostname\n" . pg_last_error();
  19.     }
  20.     else
  21.     {
  22.         $numero = pg_num_rows($result);
  23.         $i = 0;
  24.         $a = 0;
  25.         while($i < $numero)
  26.         {
  27.             $a++;
  28.             echo $a . "° ciclo while";
  29.             $row = pg_fetch_array($result, $i, PGSQL_ASSOC);
  30.             // Salvataggio dei domini nella variabile "dominio" e conseguente estrazione dei record TXT
  31.             $dominio = $row['dominio'];
  32.             $dominio = addslashes($dominio);
  33.             $dns_url = dns_get_record($dominio, DNS_TXT);
  34.             echo "DNS lookup: " . $dominio . "\n";
  35.             $lunghezza = count($dns_url);
  36.             // Parsing dei record TXT in modo da salvare soltanto quelli utili
  37.             for($i=0; $i<$lunghezza;$i++)
  38.             {
  39.                 if( $dns_url[$i]["txt"] != ( preg_match( "/^MS*/", $dns_url[$i]["txt"] ) || ( preg_match("/^\"MS*/", $dns_url[$i]["txt"] ) ) ) )
  40.                 {
  41.                     continue;
  42.                 }
  43.                 else
  44.                 {
  45.                     // In alcuni casi, il record potrebbe contenere i doppi apici, andiamoli ad eliminare
  46.                     if( preg_match("/^\"/", $dns_url[$i]["txt"] ) )
  47.                     {
  48.                         $dns_url = str_replace("\"", "", $dns_url[$i]["txt"]);
  49.                         echo "\n" . $dns_url . "\n\n";
  50.                     }
  51.                     else
  52.                     {
  53.                         // Salvataggio record TXT utili nella variabile "record_txt"
  54.                         $record_txt = $dns_url[$i]['txt'];
  55.                         $record_txt = addslashes($record_txt);
  56.                         // Controllo se il record è vuoto
  57.                         $query = "SELECT COUNT(record_txt) AS totale FROM domain WHERE dominio='$dominio'";
  58.                         $result = pg_query($conn, $query);
  59.                         if(!$result)
  60.                         {
  61.                             echo "\nErrore durante l'esecuzione della query SQL di controllo record_txt\n" . pg_last_error();
  62.                         }
  63.                         else
  64.                         {
  65.                             $result = pg_fetch_array($result);
  66.                             $totale = $result['totale'];
  67.                             // Se il record è vuoto skippa il processo
  68.                             if($totale == 0)
  69.                             {
  70.                                 continue;
  71.                             }
  72.                             else
  73.                             {
  74.                                 // Se non è vuoto, salva il record su una variabile
  75.                                 $query = "SELECT record_txt FROM domain WHERE dominio='$dominio'";
  76.                                 $result = pg_query($conn, $query);
  77.                                 if(!$result)
  78.                                 {
  79.                                     echo "\nErrore durante l'esecuzione della query SQL di controllo record_txt del dominio selezionato\n" . pg_last_error();
  80.                                 }
  81.                                 else
  82.                                 {
  83.                                     $result = pg_fetch_array($result);
  84.                                     $check_record = $result['record_txt'];
  85.                                     if($check_record != $record_txt)
  86.                                     {
  87.  
  88.                                         $data = date("Y-m-d H:i:s");
  89.                                         $data = addslashes($data);
  90.                                         // Prima di cambiare lo stato, salvo in una variabile lo stato attuale, in modo da poterlo aggiungere alla tabella log
  91.                                         $query = "SELECT stato FROM domain WHERE dominio='$dominio'";
  92.                                         $result = pg_query($conn, $query);
  93.                                         if(!$result)
  94.                                         {
  95.                                             echo "\nErrore durante l'esecuzione della query SQL di selezione del \"Vecchio stato\" dalla tabella domain\n" . pg_last_error();
  96.                                         }
  97.                                         else
  98.                                         {
  99.                                             $result = pg_fetch_array($result);
  100.                                             $vecchio_stato = $result['stato'];
  101.                                         }
  102.                                         // Se la il record sul database è diverso da quello del dominio, cambia lo stato in "NOTVALIDATED"
  103.                                         $query = "UPDATE domain SET stato='NOTVALIDATED', record_txt='$record_txt', ultima_modifica='$data' WHERE dominio='$dominio'";
  104.                                         $result = pg_query($conn, $query);
  105.                                         if(!$result)
  106.                                         {
  107.                                             echo "\nErrore durante l'esecuzione della query SQL di update di stato a 'NOTVALIDATED'\n" . pg_last_error();
  108.                                         }
  109.                                         else
  110.                                         {
  111.                                             echo "\n" . $dominio . " ha subito un cambiamento ed il suo record txt non matcha con quello presente nel database\n";
  112.                                             // Seleziona i campi da inserire nella tabella log, dalla tabella domain
  113.                                             $query = "SELECT customerID AS cid, record_txt, stato WHERE dominio='$dominio'";
  114.                                             $result = pg_query($conn, $query);
  115.                                             if(!$result)
  116.                                             {
  117.                                                 echo "\nErrore durante l'esecuzione della query SQL di selezione cid, record_txt e stato dalla tabella domain\n" . pg_last_error();
  118.                                             }
  119.                                             else
  120.                                             {
  121.                                                 //Salva i campi da inserire nei log
  122.                                                 $result = pg_fetch_array($result);
  123.                                                 $customerID = $result['cid'];
  124.                                                 $customerID = addslashes($customerID);
  125.                                                 $record_txt = $result['record_txt'];
  126.                                                 $record_txt = addslashes($record_txt);
  127.                                                 $nuovo_stato = $result['stato'];
  128.                                                 $nuovo_stato = addslashes($nuovo_stato);
  129.                                                 // Inserisce una riga di log
  130.                                                 $query = "INSERT INTO log(dominio, customerID, descrizione, data, vecchio_stato, nuovo_stato) VALUES('$dominio', '$customerID','$record_txt', '$data', '$vecchio_stato', '$nuovo_stato')";
  131.                                                 $result = pg_query($conn, $query);
  132.                                                 if(!$result)
  133.                                                 {
  134.                                                     echo "\nErrore durante l'esecuzione della query SQL per l'inserimento di una riga di log\n" . pg_last_error();
  135.                                                 }
  136.                                                 else
  137.                                                 {
  138.                                                     echo "\nAggiunta con successo una riga di log!\n";
  139.                                                 }
  140.                                             }
  141.                                         }
  142.                                     }
  143.                                 }
  144.                             }
  145.                         }
  146.                         // Aggiornamento della tabella tabella 1 con inserimento dei record utili
  147.                         $query = "UPDATE domain SET record_txt='$record_txt' WHERE dominio='$dominio'";
  148.                         $result = pg_query($conn, $query);
  149.                         if(!$result)
  150.                         {
  151.                             echo "\nErrore durante l'esecuzione della query SQL di inserimento dei record txt\n" . pg_last_error();
  152.                         }
  153.                         else
  154.                         {
  155.                             echo "\nInserito il record \"" . $record_txt . "\" per il dominio \"" . $dominio . "\"\n";
  156.                         }
  157.                         // Controllo se il record txt utile estratto esiste già nel database
  158.                         $query = "SELECT record_txt FROM domain WHERE record_txt='$record_txt' AND dominio='$dominio'";
  159.                         $result = pg_query($conn,$query);
  160.                         if(!$result)
  161.                         {
  162.                             echo "\nErrore durante l'esecuzione della query SQL di controllo\n" . pg_last_error();
  163.                         }
  164.                         else
  165.                         {
  166.                             // Controlla se il record txt utile appartiene effettivamente al record corrispondente al dominio selezionato
  167.                             $controllo = pg_num_rows($result);
  168.                             if($controllo == 1)
  169.                             {
  170.                                 // Se il record txt utile appartiene effettivamente al record corrispondente al dominio selezionato, seleziona lo stato
  171.                                 $query = "SELECT stato FROM domain WHERE dominio='$dominio'";
  172.                                 $result = pg_query($conn, $query);
  173.                                 if(!$result)
  174.                                 {
  175.                                     echo "\nErrore durante l'esecuzione della query SQL di selezione dello stato\n" . pg_last_error();
  176.                                 }
  177.                                 else
  178.                                 {
  179.                                     // Salva lo stato della tabella 1, corrispondente al dominio selezionato, nella variabile "vecchio stato"
  180.                                     $result = pg_fetch_assoc($result);
  181.                                     $vecchio_stato = $result['stato'];
  182.                                     $vecchio_stato = addslashes($vecchio_stato);
  183.                                 }
  184.                                 // Aggiorna la tabella 1 inserendo come stato "VALIDATED" nel campo corrispondente al dominio selezionato
  185.                                 $query = "UPDATE domain SET stato='VALIDATED' WHERE dominio='$dominio'";
  186.                                 $result = pg_query($conn, $query);
  187.                                 if(!$result)
  188.                                 {
  189.                                     echo "\nErrore durante l'esecuzione della query SQL di update di validazione\n" . pg_last_error();
  190.                                 }
  191.                                 else
  192.                                 {
  193.                                     echo "\nAggiornato il dominio \"" . $dominio . "\"\n";
  194.                                     // Seleziona i campi customerID, record_txt e stato dalla tabella 1 nel record del dominio selezionato
  195.                                     $query = "SELECT customerID AS cid, record_txt, stato FROM domain WHERE dominio='$dominio'";
  196.                                     $result = pg_query($conn, $query);
  197.                                     if(!$result)
  198.                                     {
  199.                                         echo "\nErrore durante l'esecuzione della query SQL di selezione dei valori per il log\n" . pg_last_error();
  200.                                     }
  201.                                     else
  202.                                     {
  203.                                         // Salva i risultati nelle variabili
  204.                                         $result = pg_fetch_assoc($result);
  205.                                         $customerID = $result['cid'];
  206.                                         $customerID = addslashes($customerID);
  207.                                         $stato = $result['stato'];
  208.                                         $stato = addslashes($stato);
  209.                                         $data = date("Y-m-d H:i:s");
  210.                                         $data = addslashes($data);
  211.                                         // Aggiorna la tabella 2 inserendo un nuovo record
  212.                                         $query = "INSERT INTO log (dominio, customerID, descrizione, data, vecchio_stato, nuovo_stato) VALUES('$dominio', '$customerID', '$record_txt', '$data', '$vecchio_stato', '$stato')";
  213.                                         $result = pg_query($conn, $query);
  214.                                         if(!$result)
  215.                                         {
  216.                                             echo "\nErrore durante l'esecuzione della query SQL della registrazione dei log\n" . pg_last_error();
  217.                                         }
  218.                                         else
  219.                                         {
  220.                                             echo "\nLog registrato con successo\n";
  221.                                         }
  222.                                     }
  223.                                 }
  224.                             }
  225.                             else
  226.                             {
  227.                                 // Se il record estratto non appartiene al record del dominio selezionato, salva lo stato corrente in una variabile
  228.                                 $query = "SELECT stato FROM domain WHERE dominio='$dominio'";
  229.                                 $result = pg_query($conn, $query);
  230.                                 if(!$result)
  231.                                 {
  232.                                     echo "\nErrore durante l'esecuzione della query SQL di selezione dello stato\n" . pg_last_error();
  233.                                 }
  234.                                 else
  235.                                 {
  236.                                     $result = pg_fetch_array($result);
  237.                                     $vecchio_stato = $result['stato'];
  238.                                 }
  239.                                 // Se il record_txt estratto non appartiene al record del dominio selezionato, aggiorna lo stato del record
  240.                                 $data = date("Y-m-d H:i:s");
  241.                                 $data = addslashes($data);
  242.                                 $query = "UPDATE domain SET stato='NOTVALIDATED', data='$data' WHERE dominio=$dominio";
  243.                                 $result = pg_query($conn, $query);
  244.                                 if(!$result)
  245.                                 {
  246.                                     echo "\nErrore durante l'esecuzione della query SQL di update di stato\n" . pg_last_error();
  247.                                 }
  248.                                 else
  249.                                 {
  250.                                     echo "\nIl dominio " . $dominio . " aveva un record non valido, ed il suo stato è stato cambiato a \"NOTVALIDATED\"";
  251.                                     // Seleziona i dati da inserire nella tabella log
  252.                                     $query = "SELECT customerID, record_txt, data, stato FROM domain WHERE dominio='$dominio'";
  253.                                     $result = pg_query($conn, $query);
  254.                                     if(!$result)
  255.                                     {
  256.                                         echo "\nErrore durante l'esecuzione della query SQL di selezione campi dalla tabella domain\n" . pg_last_error();
  257.                                     }
  258.                                     else
  259.                                     {
  260.                                         // Salva i dati da inserire nella tabella log
  261.                                         $result = pg_fetch_array($result);
  262.                                         $customerID = $result['customerID'];
  263.                                         $customerID = addslashes($customerID);
  264.                                         $record_txt = $result['record_txt'];
  265.                                         $record_txt = addslashes($record_txt);
  266.                                         $vecchio_stato = addslashes($vecchio_stato);
  267.                                         $nuovo_stato = $result['stato'];
  268.                                         $nuovo_stato = addslashes($nuovo_stato);
  269.                                         $query = "INSERT INTO log(domain, customerID, descrizione, data, vecchio_stato, nuovo_stato VALUES('$dominio', '$customerID', '$record_txt', '$data', '$vecchio_stato', '$nuovo_stato')";
  270.                                         $result = pg_query($conn, $query);
  271.                                         if(!$result)
  272.                                         {
  273.                                             echo "\nErrore durante l'esecuzione della query SQL di inserimento della riga di log\n" . pg_last_error();
  274.                                         }
  275.                                         else
  276.                                         {
  277.                                             echo "\nRiga di log inserita con successo!\n";
  278.                                         }
  279.                                     }
  280.                                 }
  281.                             }
  282.                         }
  283.                     }
  284.                 }
  285.             }
  286.             $i++;
  287.         }
  288.     }
  289. }
  290. echo "\n";
  291. ?>
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement