Fotografický magazín "iZIN IDIF" každý týden ve Vašem e-mailu.
Co nového ve světě fotografie!
Zadejte Vaši e-mailovou adresu:
Kamarád fotí rád?
Přihlas ho k odběru fotomagazínu!
Zadejte e-mailovou adresu kamaráda:
Tipy a Triky
Jak na widget pro rychlé nastavení proxy
28. července 2009, 00.00 | Když poprvé spustíte Macintosh, budete jej s velkou pravděpodobností používat bez jakýchkoliv problémů. Po chvilce hledání objevíte systémové preference, kde naleznete všechno potřebné. Hloubka dalších průzkumů závisí na tom, kdo jste a co od počítače požadujete. Běžný uživatel s tím vystačí. Pro ty, kdo mají potřebu porozumět a možná i něco vytvořit, je určen tento článek.
Když poprvé spustíte Macintosh, budete jej s velkou pravděpodobností používat bez jakýchkoliv problémů. Po chvilce hledání objevíte systémové preference, kde naleznete všechno potřebné. Hloubka dalších průzkumů závisí na tom, kdo jste a co od počítače požadujete. Běžný uživatel s tím vystačí. Pro ty, kdo mají potřebu porozumět a možná i něco vytvořit, je určen tento článek.
Nastavení sítě
V síťovém nastavení MacOS X se nachází často přehlížené roletové menu location, umožňující přepínání mezi již nakonfigurovanými sítěmi. Použití tohoto způsobu nastavení sítě je šikovné a snad se dá také říci, že v rámci systému preferované.
Fungování je přímočaré, přepnutí lokace – nastavení sítě - se uskuteční pomocí jablka vlevo v horní liště. Každá lokace může mít, a zpravidla také má, své vlastní nastavení proxy, způsoby získávání IP adresy a tak podobně. Tento přístup není pro lidi, kteří přešli z jiných systémů příliš známý, a možná by trvalo delší dobu, než jej objeví. Lze bez něj žít, ale pokud se často přesunujete, můžete lokace vyzkoušet.
I když to není úplně patrné, podobný přístup existuje také ve Windows Vista. Tam ovšem přepínání mezi lokacemi probíhá zcela automaticky dle výchozí brány a nastavení zahrnuje též konfiguraci firewallu. Také v Linuxu existuje podobný přístup, i když možná ještě propracovanější. Situace je zde odvislá od použité distribuce. V debianu jsem používal balíček1, kde jsem si mohl nadefinovat IP adresu, kterou se testovala pomocí ARP pingu2. V případě, že byl systém nalezen, se síťové rozhraní nastavilo dle konfigurace. Všechny uvedené příklady se zdají mít hodně společného.
Praxe je možná jednodušší. Značná část uživatelů neprojeví o lokace zájem a nastavení sítě provádí jednoduše pomocí systémových preferencí. Stejným způsobem jsem postupoval i já. Nicméně než abych se mořil ustavičným přenastavováváním konfigurace sítě podle toho, kde se zrovna pohybuji, vytvořil jsem si udělátko, které mi situaci ulehčuje. Konkrétně se jedná o dashboardový widget, který umožňuje nastavení anonymní proxy pro protokoly http, https a ftp. Jedná se tedy o alternativní cestu k přepínání mezi lokacemi? Nikoliv, jedná se pouze o pomocníka, umožňujícího přepínání proxy. Můžete ho kombinovat současně s využitím lokací. Pro mé potřeby je to dostačující, nicméně vestavěné přepínání lokací disponuje větší škálou možností. Tolik tedy krátce k osobním zkušenostem z nastavování síťové konfigurace v MacOS X. Nyní pojďme k vytváření widgetu.
Vytváření widgetu
Vlastní widget je aplikace, obvykle vyvolávaná klávesovou zkratkou F12. Skládá se z přední a zadní strany, přičemž každá z těchto stran se programuje zvlášť.
Přední strana
Zadní strana
Pro ty z vás, kteří už někdy programovali webovou stránku nebo její komponenty pomocí javascriptu, bude psaní widgetu hračkou. Nejedná se totiž o nic nového a již získané vědomosti můžeme použít. Prostředí, ve kterém se widgety tvoří se jmenuje Dashcode. Vývoj a ladění v tomto prostředí je příjemné. K dispozici máme celou řadu standardních ovládacích prvků a předpřipravených efektů, takže výsledek většinou vypadá hezky. Důležitou vlastností každého widgetu jsou atributy, definující jeho schopnosti. Patří mezi ně například schopnost spouštět jiné programy, přistupovat na síť či na disk atd. Atributy se nastavují v Dashcode v rámci vývoje dle účelu widgetu a jsou jeho součástí.
Poté, co jste s výsledkem své práce spokojeni, musíte podle povahy widgetu rozhodnout, kam ho nainstalujete. Možností je více. Buďto lokálně do adresáře ~/Library/Widgets, potom bude viditelný pro daného uživatele, nebo ho učiníme viditelným pro všechny. Pak je nutné umístit widget do adresáře /Library/Widgets.
Ovládání sítě pro přátele příkazové řádky
Jednou z klíčových nástrojů pro správu sítě z příkazové řádky je networksetup. Jedná se o šikovnou věcičku, kterou nastavíte síť podobně jako prostřednictvím systémových preferencí. Bližší popis viz příkaz man networksetup. Konkrétní použití příkazu je následující networksetup -setwebproxy ethernet proxy.xyz.cz 3128.
Dalším nástrojem je interaktivní utilita scutil, sloužící pro správu systémových parametrů. Interaktivnost spočívá v tom, že přijímá data ze standardního vstupu, takže je můžeme průběžně zadávat. Lze ji ale také použít v „automatickém“ režimu. To je ilustrováno ve skriptu, který slouží pro přepínání proxy. Jádro přepínání spočívá v zadání následujících příkazů:
open
d.init
get State:/Network/Global/Proxies
d.add * HTTPSEnable 1
set State:/Network/Global/Proxies
Nejprve je nutné „úložiště“ parametrů otevřít, poté inicializovat a pak už můžeme začít pracovat. Informace získáváme pomocí příkazu get. Parametry přidáme příkazem add a nastavíme příkazem set. Klíčovým se jeví porozumění struktuře ukládání parametrů. Je definována a obhospodařována démonem configd, který se o parametry stará.
Další věc, o které se musím zmínit, nesouvisí se sítí, nýbrž s notifikací systému. Macintosh totiž nemá vestavěný notifikační rámec, což ale neznamená, že neexistuje. Nejčastěji se využívá časem prověřený nástroj zvaný growl. Jeho součástí je také utilita growlnotify, umožňující notifikace z příkazové řádky.
Potíže na cestě
Popisované nastavení sítě využívá kombinaci výše uvedených nástrojů. Jednotlivé nástroje fungovaly dobře jen do okamžiku, kdy jsem chtěl zjistit stav nastavení wifi proxy nástrojem networksetup. Tahle operace vždy končila chybou segmentation fault. Ať jsem dělal, co jsem dělal, nedařilo se mi chybu v shellovém skriptu (bash) odstranit a dobrat se k výsledku. Obvyklé praktiky bezchybně pracující na všech Nixech nebo Linuxu, se kterými jsem doposud pracoval, spočívající v přesměrování výstupů, ať už chybových nebo standardních, na MacOSX nefungovaly. Proto jsem musel přistoupit k alternativní cestě, spočívající ve čtení konfiguračního souboru systému. Konfigurace, nejen ta systémová, je uložena v textových XML souborech. Ta zajímavá pak v souboru /Library/Preferences/SystemConfiguration/preferences.plist. Schválně se někdy podívejte. S tímto XML souborem lze pracovat zcela tradičně. Chvilku trvalo, než jsem odladil správný XPath dotaz, kterým lze z tohoto souboru získat vše, co potřebujete. Tuto funkcionalitu jsem potřeboval zabalit do něčeho šikovného a tak jsem zvolil nativní binárku, která se může kupříkladu napsat v jazyce ObjectiveC. Jde to celkem snadno, i když to děláte poprvé, je ale nutné se částečně zorientovat v ohromném množství knihoven. Pro tvorbu binárky se obvykle využívá vývojové prostředí Xcode, se kterým je velmi pohodlná a rychlá práce. Výsledný soubor (CFGtool) jsem použil v shellovém skriptu.
Instalační skript
Fast Proxy Switcher3, jak jsem celý pokus nazval, používám osobně spolu s několika málo lidmi již přes rok bez problémů a to od verze Leoparda 10.5.4. Abych ulehčil instalaci sobě i jiným, rozhodl jsem se ji automatizovat pomocí AppleScriptu. Pro práci s ním se nabízí prostředí programu ScriptEditor, který je součástí operačního systému. Instalační skript funguje, moje zkušenost je ale rozpačitá a tenhle jazyk mi rozhodně k srdci nepřirostl.
Instalační skript
Shrnutí
Používání widgetů se mi zalíbilo. Nepletou se na ploše, neruší když nepotřebuji a píší se poměrně pohodlně. Pokládám je za elegantní řešení, mnohem lepší než „aktivní desktop“, který mi stále pod rukama na ploše cosi vyvádí. Za výhodu se dá také považovat fakt, že dashboardový „engine“ se ujal též v linuxovém prostředí KDE4, přičemž by vlastní widgety měly být i vzájemně kompatibilní. Jejich využití je širokospektrální, a pokud jste se v rámci představení jednoho využití ještě dozvěděli cosi nového o manuální konfiguraci sítě, jsem rád.
Každý ví, že nejvíce se člověk poučí čtením kódu a dalšími pokusy. Co není popsáno v tomto článku bezpečně najdete ve zdrojovém kódu. Už jen porozumění je krokem vpřed. Zdroje k widgetu jsou zde a zdroj k CFGtoolu můžete najít tady.
- Hlavní výhodou ARP pingu je, že nepotřebuje plně funkční TCP stack. Systémy resolvuje pomocí MAC adres, takže může fungovat i v situaci, kdy standardní ICMP ping nepracuje. ARP je zkratka pro Adress Resolution Protocol.
- Celý projekt lze stáhnout na http://www.nextsoft.cz/~malina/files/FastProxySwitcher_1_3.zip.
Diskuse k článku
Vložit nový příspěvek Sbalit příspěvky
|
|
|
|
|
|