Pystyykö php:lla tarkistamaan onko portti auki palomuurissa?
Kyllä pystyy. Tee looppi joka tarkastaa esim fsockopen()-funktiolla halutut portit.
Kuten esim
Tuleekos tohon hostiin oma ip kun testaa onks omast adsl purkist vaiks 12345 portti auki?
Varmaankin olisi suotavaa myös sulkea ne avatut socketit, vaikka onkin kyse skriptikielestä, joka varmaankin hoitaa homman tarvittaessa myös itse.
fsockopen() sulkee portin automaattisesti, pfsockopen()-funktio jättää portin auki - siksi en erikseen sulkenut portteja.
Jykkemus, voit vaihtaa rivin
$host = "" //jne...
muotoon
$host = $_SERVER['REMOTE_ADDR'];
Niin koodi tutkii portit katselijan ip:stä.
ukko kirjoitti:
fsockopen() sulkee portin automaattisesti, pfsockopen()-funktio jättää portin auki
Tietyssä mielessä kyllä, mutta sulkeminen ei todellakaan tapahdu funktiossa vaan vasta skriptin lopuksi. Kuitenkin noin vähän matalamman tason kieliin tottuneena olen kovasti sitä mieltä, että vaikka järjestelmä osaisi itse sulkea tuon, kun skripti päättyy, niin kannattaa silti sulkea se itse. Tilanne on hieman sama kuin muistia varatessa: vaikka muistin vapautus toimii usein ihan käyttöjärjestelmätasolla, kun prosessi päättyy, niin siitä huolimatta varattu muisti kannattaa vapauttaa jo ohjelman aikana. Sitä paitsi tottahan tuokin skripti toimii nopeammin ja ennen muuta varmemmin, jos siinä on auki vain yksi portti kerrallaan, on aivan järjetöntä turhaa kuormitusta avata ne kaikki 65000 yhtä aikaa ja luottaa siihen, että kyllä ne lopuksi sulkeutuvat.
lainaus:
---Sitä paitsi tottahan tuokin skripti toimii nopeammin ja ennen muuta varmemmin, jos siinä on auki vain yksi portti kerrallaan ---
Aivan totta, isommassa skaalassa kyllä ja miksei pienemmässäkin ;). En tullut ollenkaan ajatelleeksi tuota tapausta jossa portteja yritetään avata tuhansia, kun kirjoitin koodin.
Aihe on jo aika vanha, joten et voi enää vastata siihen.