Pokud provozujete vlastní internetový server, může se vám hodit možnost zjistit pomocí mobilního telefonu, zda některé ze služeb, které server zajišťuje, neselhaly. Jednoduchým pokusem o navázání spojení na portu dané služby určíte, zda je na serveru daná služba k dispozici.

Je dobré si říci, že tímto způsobem zjistíte, že server na daném portu odpovídá. Nezjistíte ale, zda se chová korektně služba –  i tak to ale pro rychlou letmou kontrolu bohatě postačí. Podobnou aplikaci, která využívá zde popisovaný způsob ověření dostupnosti služby na serveru, si můžete vyzkoušet (je nutný prohlížeč wml stránek – Opera, WinWap, mobilní telefon s wapem, nebo emulátor).

Skript obsahuje jednu kartu, do které se v závislosti na nastavení proměnné addr vygeneruje buď formulář pro zadání adresy zjišťovaného serveru, nebo rovnou výsledek. Součástí formuláře je i pole pro možnost zadání vlastní služby – vlastního čísla portu. Skript lze volat i přímo se zadanými parametry adresy serveru a případně i vlastní služby. Adresu serveru je možné zadávat doménou nebo jako IP adresu.

Skript srvstat.php:

<?PHP
function lookup($hport,$comment,$who) {  // pro test navázání spojení se serverem na daném portu
  $fp = fsockopen($who, $hport, &$errno, &$errstr, 4); // pokus se otevřít socket
  if (!$fp) {
    $data = "$comment ($hport): -neodpov&#xED;d&#xE1;"; // nezadařilo se, služba nebo server neodpovídá
  }
  else {
    $data = "$comment ($hport): -aktivn&#xED;"; // služba je aktivní
    fclose($fp);
  }
  return $data;
}
header("Content-type: text/vnd.wap.wml"); // nutná hlavička WML dokumentu
?>
<?xml version="1.0"?>
<!DOCTYPE wml PUBLIC "-//WAPFORUM//DTD WML 1.1//EN" "http://www.wapforum.org/DTD/wml_1.1.xml">
<wml>
<template>
<do type="prev" label="Zp&#x011B;t"><prev/></do>
<do type="accept" label="Hlavn&#xED;"><go href="index.php"/></do>
</template>
<card id="srvstat" title="ServerStat">
<p>
<?PHP if (empty($addr)) { ?> // není-li zadaná adresa serveru, vygenerovat formulář pro její zadání
Adresa serveru <input type="text" name="addr" title="Adresa"/><br/>  // pole pro adresu serveru
Vlastn&#xED; slu&#x017E;ba <input type="text" name="myport" emptyok="true" title="Vlastn&#xED; port"/><br/> // pole pro volitelné zadání vlastní služby
<anchor>Spustit<go href="srvstat.php" method="get">
<postfield name="myport" value="$(myport)"/>
<postfield name="addr" value="$(addr)"/>
</go></anchor><br/>
<?PHP } else { // je-li zadána adresa serveru, projít postupně seznam služeb – otestovat odezvu serveru na ně
  echo StrToUpper($addr)."<br/><small>\n";
  echo lookup("80","HTTP","$addr")."<br/>\n";
  echo lookup("21","FTP","$addr")."<br/>\n";
  echo lookup("22","SSH","$addr")."<br/>\n";
  echo lookup("443","SSL","$addr")."<br/>\n";
  echo lookup("25","SMTP","$addr")."<br/>\n";
  echo lookup("110","POP3","$addr")."<br/>\n";
  echo lookup("143","IMAP4","$addr")."<br/>\n";
  echo lookup("139","NetBIOS","$addr")."<br/>\n";
  echo lookup("389","LDAP","$addr")."<br/>\n";
  echo lookup("23","Telnet","$addr")."<br/>\n";
  echo lookup("3306","MySQL","$addr")."<br/>\n";
  echo lookup("6667","IRC","$addr")."<br/>\n";
  if (trim($myport)<>"") // je-li zadána vlastní služba, otestovat ji také
    echo lookup($myport,"vlastn&#xED;","$addr")."<br/>\n";
  echo "</small>\n";
}
?>
</p>
</card>
</wml>

Příklad volání skriptu včetně zadání adresy zjišťovaného serveru:

srvsw.php?addr=www.ibm.com&myport=1024
srvsw.php?addr=212.47.7.203

Ve skutečném skriptu je nutné vynechat komentáře (neodpovídají syntaxi WML). Skript si můžete stáhnout (příponu src pak přepište na txt). Část vnořenou v odstavci karty lze vyjmout a po drobných úpravách (zj. formuláře) použít i ve skriptu běžné webové stránky ve formátu HTML.

Starší komentáře ke článku

Pokud máte zájem o starší komentáře k tomuto článku, naleznete je zde.

Žádný příspěvek v diskuzi

Odpovědět