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ídá"; // nezadařilo se, služba nebo server neodpovídá } else { $data = "$comment ($hport): -aktivní"; // 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ět"><prev/></do> <do type="accept" label="Hlavní"><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í služba <input type="text" name="myport" emptyok="true" title="Vlastní 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í","$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.