Archiv pro rubriku: Nezařazené

Apache – nastavujeme zobrazování chyb

Na své distribuci Ubuntu jsem se rozhodl zprovoznit lokální webový a databázový server. Vznikla mi tak oblíbená kombinace označovaná jako LAMP (Linux, Apache, MySQL, PHP). Mohl jsem proto začít vytvářet dynamické stránky bez nutnosti nahrávat vždy soubory přes FTP na hosting. Úspora času je značná a není dále třeba věnovat pozornost tomu, jaké soubory po úpravě kódu aktualizovat na vzdálené straně. Po defaultní instalaci s minimem nastavení jsem si však všiml, že mi lokální Apache neukazuje chyby v PHP. Namísto toho jsem obdržel informaci o problému na straně serveru. Taková konfigurace se hodí pro skutečné nasazení, protože případný útočník nezjistí podrobnosti, které by mu mohly pomoci v jeho nežádoucí činnosti. Během programování však absence chybových hlášení zabolí.

Hledáme php.ini

Ke změně chování Apache musíme provést obměnu v souboru php.ini. Jeho umístění se však může lišit dle verze či distribuce. Poradím vám proto univerzální způsob. Vytvořte si nový PHP skript a napište do něj:

<?php
phpinfo();
?>

Následně jej načtěte ve webovém prohlížeči (např. 127.0.0.1/info.php). Zde nás zajímá položka Configuration File (php.ini) Path. V mém případě se tedy daný soubor nachází v /etc/php5/apache2/php.ini. K jeho otevření použijte libovolný editor. Nemáte-li práva zápisu, spusťte program jako root. Já například do terminálu zadal gksudo gedit. Nyní na vás čeká mnoho komentářů a dostupných voleb. My však hledáme display_errors, kde zadáme On. Nyní restartujeme Apache s pomocí příkazu sudo /etc/init.d/apache2 restart.

 

php.ini

Pokročilejší nastavení

Uvedený postup v mém případě postačil k tomu, aby server začal zobrazovat nedostatky v syntaxi. S php.ini si navíc můžete určit, o jakých problémech chcete být vlastně informováni. Tuto vlastnost řeší direktiva error_reporting. Zpravidla se zde používá konstanta E_ALL zaručující výpis nejen všech chyb, ale i varování.

Cisco IOS – konfigurace DHCP

Konfigurace DHCPPod zkratkou DHCP (Dynamic Host Configuration Protocol) se skrývá užitečný nástroj, který dokáže usnadnit základní konfiguraci většího počtu pracovních stanic (klientů). Na straně serveru totiž stačí obecně určit parametry, které budou následně automaticky rozdistribuovány příslušným počítačům v síti. Obvykle se DHCP využívá k nastavení IP adresy, masky, výchozí brány a DNS serveru. Není proto potřeba mechanicky obcházet veškerá zařízení a ručně zmíněné údaje zadávat. V potřebný server se dokáže proměnit i Cisco router. Jeho základní úkoly proto lze velmi jednoduše rozšířit, o čemž se níže přesvědčíte. Představím vám sérii příkazů, které vám v síti zprovozní DHCP přesně dle vašich představ.

Konfigurace

Jako první krok se doporučuje nejprve specifikovat rozsah, který přidělovat nechcete a až poté službu DHCP spustit. Pokud by jste postupovali opačně, mohl by některý z klientů obdržet pro vás nevhodnou adresu. Veškeré příkazy se zadávají v konfiguračním režimu. Samostatnou IP vyjmete následovně:

Router(config)#ip dhcp excluded-address 192.168.1.1

Přidělování většího počtu IP snadno zakážete takto:

Router(config)#ip dhcp excluded-address 192.168.1.1 192.168.1.99

Nyní již můžeme přejít ke konfiguraci samotného adresního rozsahu:

Router(config)#ip dhcp pool NAZEVROZSAHU

Po potvrzení výše uvedeného rozsahu se router přepne do konfiguračního režimu platného právě pro DHCP. Směle proto přesně specifikujeme konkrétní údaje. Nejzákladnější informaci symbolizuje adresa sítě společně s maskou:

Router(dhcp-config)# network 192.168.1.0 255.255.255.0

Zapomenout pochopitelně nesmíme ani na výchozí bránu:

Router(dhcp-config)#default-router 192.168.1.1

Povšimněte si, že právě přidělování adresy 192.168.1.1 jsme v předchozích krocích úspěšně zakázali, protože patří routeru (bráně) a nesmí ji obdržet klient. Jako poslední údaj již jen chybí DNS server. V našem případě využíváme veřejnou DNS od společnosti Google (IP 8.8.8.8):

Router(dhcp-config)#dns-server 8.8.8.8

Konfigurační mód opustíte po zadání end:

Router(dhcp-config)#end

Tím je síť připravena na spuštění DHCP do reálného provozu. Stačí jen u klientů povolit automatické přidělování adres.

Příchozí dotazy:

  • konfigurace dhcp

Subreg API – kontrola dostupnosti domény

DoménaSpolečnost Subreg se dostupností svého API rozhraní poměrně výrazně chlubí, a proto když jsem začal řešit automatické ověření domény s libovolnou koncovkou, byla má volba vcelku jasná. Pakliže si i vy chcete ušetřit práci a určitou proceduru svěřit aplikaci, můžete celou záležitost zrealizovat podobně, jako jsem to učinil já. Nedílnou součást API od Subregu tvoří i dokumentace, nechcete-li však ztrácet čas jejím studováním, patrně postačí, když se podíváte na moji hotovou ukázku zdrojového kódu v PHP. Napsaní vlastní funkce patrně díky ní mnoho času nezabere.

Přihlášení a odeslání požadavku

Nejprve si vytvořte proměnou, která v sobě bude obsahovat znění dané domény. Učinit tak lze mnoha rozdílnými způsoby, a proto níže uvedený příklad zobrazuje jen samotné ověření. Ať už potřebná data získáte z formuláře, databáze či CSV souboru, vždy bude následující postup shodný. Po lehké modifikaci proto snadno zpracování aplikujete u odlišných projektů.

<?php

$domena = "szj.cz";

$client = new SoapClient(
        null, 
        array(
            "location" => "https://soap.subreg.cz/cmd.php",
            "uri" => "http://soap.subreg.cz/soap"
            )
        );

$params = array ( 
    "data" => array (
        "login" => "jmeno",
        "password" => "heslo",
    )
);

$response = $client->__call("Login",$params);

$token = $response["data"]["ssid"];

unset($params);

$params = array (
    "data" => array (
            "ssid" => $token,
            "domain" => $domena,
    )
);

$response = $client->__call("Check_Domain",$params);

echo 'Doména '.$domena.' je ';
if ($response["data"]["avail"] == 0)
{
echo '<span style="color:#FF0000">Obsazená</span>'; 
}
else if($response["data"]["avail"] == 1)
{
echo '<span style="color:#00FF00">Volná</span>';
}

?>

Základ zdrojového kódu se pochopitelně shoduje s nastíněným použitím prezentovaným na stránkách Subregu v sekci API. Několik drobných obměn však naleznete. Především je nutno specifikovat používané komunikační kanály. Protože jsme běžní uživatelé, zaměníme původní PRODUCTION za soap.subreg.cz. Nyní přistoupíme k samotnému přihlášení. Pole musí obsahovat platné uživatelské jméno a heslo. Jde o údaje, které zadáváte na hlavní stránce Subregu, když potřebujete učinit prostřednictvím svého účtu libovolnou objednávku. V odpovědi na nás čeká ssid, s jehož pomocí vznikne platný dotaz. Opět se neobejdeme bez příslušného pole. V něm se přitom již bude objevovat jako řetězec požadovaná doména specifikovaná na začátku skriptu.

Nyní bych rád napsal, že odpověď API serveru na sebe nenechá dlouho čekat, během testování se mi však stalo, že vykonání trvalo i déle než deset vteřin. Patrně však nešlo o standardní stav, protože nyní získávám žádaná data bez dlouhých prodlev.

Poslední úkol představuje zpracování výsledku. Pakliže se na indexu avail nachází 0, znamená to, že doména není volná. Jak již jistě tušíte, opačný stav signalizuje 1.