 |
|
 |
|
| |
June 1st, 2008
1.díl 2.díl
Dneska si pohrajeme s formuláři, resp. s inputy a textareami a na závěr trošku začarujeme s odkazy. Hodně často musí člověk datlovat ve fórech BBCode, nebo nedej bože HTML. Není tedy od věci, aby jsme si tyhle rutinky trošku ulehčili.
Formuláře

[Edit Widget Popup Menu]
Submenu, 67653, Edit Widget Insert Menu
Submenu, 67654, Internal Note List
--------------------
Submenu, "BBcode", BBCode
Submenu, "Texy!", Texy
Submenu, "HTML", HTML
Submenu, "XSS", XSS
Submenu, "SQL injection", SQL
--------------------1
Item, 50864 = Undo
Item, 68116 = Redo
--------------------2
Item, 50865 = Cut
Item, 50866 = Copy
Item, 50867 = Paste
Item, 50868 = Delete
--------------------3
Item, 67652 = Copy to note
--------------------4
Item, 67655 = Clear
Item, 50869 = Select all
--------------------5
Item, 69620 = Spell check
--------------------6
Item, 1560773594 = Create search
[BBCode]
Item, "[code]"=Cut & Insert, "[code]" & Paste & Insert, "[/code]"
Item, "[img]"=Cut & Insert, "[img]" & Paste & Insert, "[/img]"
Item, "[quote]"=Insert, "[quote]" & Paste & Insert, "[/quote]"
Item, "[url]"=Cut & Insert, "[url=" & Paste & Insert, "][/url]"
Item, "[url simple]"=Cut & Insert, "[url]" & Paste & Insert, "[/url]"
Item, "[b]"=Cut & Insert, "[b]" & Paste & Insert, "[/b]"
[Texy]
Item, "href"=Cut & Insert, "'title':" & Paste & Insert
Item, "image"=Cut & Insert, "[* " & Paste & Insert, " *]"
Jak vytvořit submenu umíme už od minule, takže jediná novinka je použití schránky. Jak vidíte, pomocí Cut vyřízneme výběr do schránky, Insertem vložíme začátek BBCodu, posléze obsah schránky a nakonec uzavřeme tag. Zbytek už je stále to samé, takže si to komentář ani nezaslouží. Snad jen poznámka, zatím se mi nepodařilo přijít na to, jak do hodnoty vložit úvozovky (zvláště se hodí při testování SQL a XSS zranitelností). Takže jen opravdu ilustrativně, každý si určitě přidá svůj oblíbený značkovací jazyk, nebo cokoliv jiného.
[HTML]
Item, "<img>"=Cut & Insert, "<img src='" & Paste & Insert, "' />"
Item, "<a>"=Cut & Insert, "<a href='" & Paste & Insert, "'></a>"
Item, "<a blank>"=Cut & Insert, "<a href='" & Paste & Insert, "' target='_blank'></a>"
Item, "<p>"=Insert, "<p>" & Paste & Insert, "</p>"
Item, "<br/>"=Cut & Insert, "<br/>" & Paste & Insert, "<br/>"
Item, "<strong>"=Cut & Insert, "<strong>" & Paste & Insert, "</strong>"
[XSS]
Item, "test"=Insert, "';!--<you suck>=&{()}""
Item, "alert"=Insert, "<script>alert('pwned')</script>"
Item, "loop alert"=Insert, "<script>while(1) { alert('pwned'); }</script>"
[SQL]
Item, "bypass"=Insert, "admin'/*"
Item, "bypass2"=Insert, "admin'--"
Item, "condition"=Insert, "' OR 1=1 /*
Item, "condition2"=Insert, "' OR 1=1 --"
Item, "condition3"=Insert, "' OR 1=1 #"
Odkazy

Občas se hodí otevřít odkaz nejen v novém okně, ale třeba v jiném prohlížeči, uložit ho do nějaké bookmarkovací služby, nebo jen prozaicky stáhnout. Stahování wgetem jsme řešili minule, různé bookmarkovací služby si každý jednoduše nastaví sám (důležitá je jen proměnná %l, která obsahuje url odkazu. Zastavím se tedy letmo u spusštění v jiném prohlížeči (ikdyž princip spuštění externího programu se tady už také probíral).
[Link Popup Menu]
Submenu, "save to...", savetol
Item, 50216 = Copy link
Item, bmark this = Go to page,"http://bookamark.xxx/?action=add&uri=%l"
--------------------1
Item, "Open in Firefox 2" = Execute program, "firefox-2","%l"
Item, "Open in Firefox 3" = Execute program, "firefox","%l"
Item, "Open in IE6" = Execute program, "/home/starenka/bin/ie6","%l"
Item, "Open in IE7" = Execute program, "/home/starenka/bin/ie7","%l"
Item, "Open in Konqueror" = Execute program, "konqueror","%l"
--------------------2
;Item, 67389 = Open link
Item, 53018 = Open link in new page
Item, 53019 = Open link in background page
;--------------------2
;Item, 54020 = Open link in new window
;Item, 67633 = Open link in background window
--------------------3
;Item, 70463 = Add link to bookmarks
Item, 50761 = Save link
Item, 581357748 = Download url
;--------------------4
;Submenu, 22235, Document Popup Menu
[savetol]
Item, /down = Execute program, "konsole","--noframe --notoolbar --nomenubar --vt_sz 90x10 -e wget %l --directory-prefix=/down"
Item, /junk = Execute program, "konsole","--noframe --notoolbar --nomenubar --vt_sz 90x10 -e wget %l --directory-prefix=/junk"
Item, /mp3/new = Execute program, "konsole","--noframe --notoolbar --nomenubar --vt_sz 90x10 -e wget %l --directory-prefix=/mp3/000_new"
Dnešní řádění ke stažení tady.
Popularity: 17% [?]
May 26th, 2008
V minulém díle jsme se naučili pozvolna vytvářet vlastní kontextová menu a lehce jsme rozšířili Operu o možnost převádět měny na koruny. Dneska budeme manipulovat s obrázky.
Obrázky
Osobně dost často obrázky z webu buďto stahuju k archivaci, nebo je ukladám do “bordel složky”, kde s nimi různě manipuluji a nebo je potřebuju narychlo zmenšit a uložit. Všechny tyto činnosti se dají dost zpříjemnit.
Nejdříve vytvoříme příkaz, který nám otevře obrázek v (alespoň mnou) oblíbeném IrfanView. Základ je logicky pro obě platformy stejný, odlišnosti jsou pak pouze ve způsobu volání Irfanu. Jen pro pořádek - příkaz Copy image zkopíruje obrázek do schránky a Execute program spustí příkaz i s vlastními parametry (poslední úvozovky).
Windows:
Item, Open in IrfanView = Copy image & Execute program, "C:\Program Files\IrfanView\i_view32.exe", "/clippaste"
Linux:
Tady je situace, trošku komplikovanější, protože je třeba Irfan zpouštět přes wine, ale pomocí tohoto šikovného skriptíku, to nebude o moc složitější než v předchozím případě:
Item, Open in IrfanView = Copy image & Execute program, "/home/starenka/.scripts/irfanview.sh", "/clippaste"
Jak už jste jistě odhadli, parametr /clippaste říká IrfanView, že má vytvořit nový obrázek z obsahu schránky.
Ukládání obrázků
K uložení obrázku rovnou do přednastavených složek mě vedla lenost vždy dohledávat v ukládacím dialogu cestu, kam zrovna daný obrázek chci uložit. Vyřešit se to dá celkem jednoduše. Protože takových složek používám vícero a kontextové menu není uplně nafukovací, vytvořil jsem si takové nenásilné “podmenu”. Pro ilustraci raději vložím kód celého kontextového menu…
[Image Popup Menu]
Item, Open in IrfanView = Copy image & Execute program, "/home/starenka/.scripts/irfanview.sh", "/clippaste"
;zde je nadefinovano submenu
Submenu, "save to...", saveto
Item, 50419 = Copy image address
--------------------1
Item, 67651 = Open image
Item, 70486 = Load image
--------------------2
Item, 50262 = Save image
Item, 70466 = Copy image
Platform Windows-Mac-QNX, Item, 70467 = Use image as desktop background
--------------------3
Item, 56064 = Show image properties
;--------------------3
;Submenu, 22235, Document Popup Menu
;samotne polozky submenu
[saveto]
Item, Save to /pix = Copy image address & Execute program, "konsole","--noframe --notoolbar --nomenubar --vt_sz 90x10 -e wget %c --directory-prefix=/pix"
Item, Save to /junk = Copy image address & Execute program, "konsole","--noframe --notoolbar --nomenubar --vt_sz 90x10 -e wget %c --directory-prefix=/junk"
A jak tedy obrázky stáhnout? Funkce Copy image address zkopíruje adresu obrázku, kterou posléze pošleme wgetu (%c), který nám ho stáhne do zadané složky. Abychom viděli průběh stahování (tedy aby wget nebyl jen spuštěn na pozadí), používám jemný trik se spuštěním konzole.
Windows: Wget se dá pořídit i pro Windows a to zde. Volání se pak obejde bez nastavení konzole tedy asi nějak takto:
Item, Save to /junk = Copy image address & Execute program, "C:\Program Files\GnuWin32\bin\wget.exe","%c --directory-prefix=c:\junk"
Fantazii se meze nekladou, takže si můžete volání “poštělovat” pro Váš oblíbený stahovací program. Pokud všechno dopadlo dobře, menu by pak mohlo vypadat nějak takhle:

PS. Pokud touží po kousku INI souboru, který jsme dneska udělali, nechť se obslouží.
Popularity: 27% [?]
May 22nd, 2008
Když se podívám na statistiky nejpoužívanějších programů na WAKOOPě, tak mezi pěti nejpoužívanějšími jsou čtyři prohlížeče. A pročpato vlastně…aha Opera. Logicky tedy, když nějaký program používám tak často, budu si ho chtít asi tak trochu upravit. Vzpomínáte na modelínu? Tak o tom bude řeč.
Úpravená menu jsou velice návyková věc, která mimochodem šetří spoustu času. Pro začátek asi ukážu pár věcí, které dost používám, abych vůbec někoho navnadil….

V dnešním dílu lehce naťuknem princip konfiguračních souborů a vytvoříme novou položku kontextového menu, čímž lehce rozšíříme Operu o možnost převodu měn na české koruny. Další fíčurky budou následovat v dalších dílech.
Úprava menu.ini
Systém je jednoduchý. Veškerá nastavení si Opera ukládá do INI souborů. Pokud tedy chceme upravit například kontextová menu je třeba upravit odpovídající soubor. Ještě než začnu chrlit cesty, je třeba vyjasnit jednu věc. Jelikož používám jak Linux tak Windows, bude tento návod tak nějak “podobojí”. Rozdíly mezi platformami budou vyznačeny.
Zatímco defaultní INI soubory si Opera drží ve svém adresáři, upravené soubory se potom ukládají do adresáře profilu. INI soubory jsou členěny do sekcí uvozených []. Více na toto téma, včetně seznamu sekcí a použitelných příkazů se můžete dočíst na OperaWIki. Pro účel tohohle minitutoriálku bude stačit vytvořit nový INI soubor (nebo použít ten můj) a to pouze se změnenými sekcemi - ty nezměněné si Opera vezme z defautního nastavení.
Jak už jsem zmínil, defaultní konfigurační soubory jsou v adresáři, kde je Opera nainstalována:
Linux: typicky /usr/share/opera/ini
Windows: typicky c:\Program Files\Opera
a konkrétně kontextová menu se ukládají do adresáře menu v adresáři uživatelského profilu:
Linux: typicky ~/.opera/menu
Windows: typicky c:\Documents and Settings\[vas_profil]\Application Data\profile\menu
Konverze měn
Vytvoříme nový tedy jednoduchý konfigurační soubor a přidáme položku do kontextového menu, které se zobrazí při pravém kliku na označený text.
[Version]
File Version=2
[Info]
Name=starenkovo
Description=convert,prohlizece,bbcode,html,xss,sql..atd
Author=starenka
Version=1.1
hlavička není nic moc zajímavého takže rovnou k úpravě menu:
[Hotclick Popup Menu]
Item, Convert to CZK = Go to page,"http://www.google.com/search?q=%t to CZK"
--------------------1
Item, 50872 = Copy
Item, 67652 = Copy to note
Platform Win2000-Unix-Mac, Feature Voice, Item, 70494 = Speak selection
--------------------2
Item, 65184 = Hotclick search, 200
;Submenu, 291920, Search with menu
Submenu, 291920, Internal Search With
Item, 65187 = Hotclick search, 50
Item, 65188 = Hotclick search, 51
--------------------3
Submenu, 291960, Translate menu
;Item, 65186 = Hotclick search, 52
--------------------4
Item, 67394 = Go to page, "%t"
Item, 65218 = Send text in mail
Menu je třeba vždy vypsat celé a ne pouze přidané položky, takže to jediné co přidáme do standartního menu je pravě druhý řádek. Každá položka je uvozena klíčovým slovem Item za ním následuje popis položky a za rovnítkem už příkaz. (pro ty zvídavější: seznam všech příkazů najdete tady). Jak je tedy vidět veškeré kouzlo převodu měny tkví v poslání označeného textu (%t) do Googlu se suffixem “to CZK”, který nám právě zařídí převod na české koruny.
Soubor si uložíme s příponou INI a nakopírujeme do adresáře menu v svém opera-profilu. Vlastní menu se aktivují přes Preferences (ctrl+f12) -> záložka Advanced -> Toolbars -> Menu setup (omlouvám se, ale nechci střílet české ekvivalenty od boku, českou verzi nepoužívám)
A to by bylo pro dnešek asi vše. Soubor s dnešním výpotkem je ke stažení tady.
Popularity: 13% [?]
May 2nd, 2008
Have you ever came across a kool image set on Flickr and wanted to download all those pics in the “large” size? Yes, there are thousand ways how to skin the cat… I wrote a very simple “spider” [dl here] in Python to do all the clicking for me. Once i have all image links I run wget to retrieve them.
Let’s make function to fetch given uri first:
#!/usr/bin/env python
import sys,re,string
import urllib,urllib2
def readFile(uri):
request = urllib2.Request(uri)
try:
response = urllib2.urlopen(request)
except urllib2.HTTPError, e:
print ‘ERR: (’+str(e.code)+‘) Error occured. Current URI:’+uri
except urllib2.URLError, e:
print ‘ERR: Failed to reach the URI (’+str(e.reason[0])+‘:’+e.reason[1]+‘)’
else:
return response.read()
Then two simple functions to search for appropriate hrefs and images. getThumbs extracts all links to “image detail” pages and send those to getImages function. getImages jumps to “Available sizes” page and prints the image uri.
def getThumbs (data ):
global thumb_match
for match in re. finditer(thumb_match,data ):
getImages (match. group(1))
def getImages(uri):
global set_id,big_match
pos = uri.find(‘in/set-’+set_id)
uri = uri[0:pos-1]+‘/sizes/o/’+uri[pos:]
data = readFile(‘http://www.flickr.com’+uri)
for match in re.finditer(big_match,data):
print match.group(1)
The last section just parses given parameters, compiles regular expressions and starts harvesting links:
if(len(sys. argv)> 1):
uri = sys. argv[1]
if(uri. find(‘?page=’) > 0):
pos = uri. find(‘?page=’)
page = uri [pos: ]
uri = uri [0:pos -1]
set_id = uri [uri. rfind(‘/’)+1: ]
uri = uri+ ‘/’+page
else:
if(uri [len(uri )-1: ] == ‘/’):
uri = uri [0: -1]
set_id = uri [uri. rfind(‘/’)+1: ]
thumb_match = re. compile(r ‘.*?<a.*?href="(.*?set-’+set_id+ ‘/)".*?>.*?’, re. IGNORECASE)
big_match = re. compile(r ‘.*?<p><img.*?src="(.*?static.flickr.com.*?)".*? /></p>.*?’, re. IGNORECASE)
getThumbs (readFile (uri ))
else:
print ‘lack of params’
Now i just run the script on all gallery pages and let it save the links into a file:
python herrflick.py http://www.flickr.com/photos/pinkponk/sets/72157600267969060/ >> /down/adverts.txt
python herrflick.py http://www.flickr.com/photos/pinkponk/sets/72157600267969060/?page=2 >> /down/adverts.txt
python herrflick.py http://www.flickr.com/photos/pinkponk/sets/72157600267969060/?page=3 >> /down/adverts.txt
and let wget download the images:
wget -i /down/adverts.txt
PS. More comfy is to make the script executable (linux only):
- rename the script to “herrflick”
- copy it to /usr/bin
- make it executable (chmod +x /usr/bin/herrflick)
and run it:
herrflick http://www.flickr.com/photos/pinkponk/sets/72157600267969060/ | wget -i /dev/stdin
Popularity: 10% [?]
|
| |
 | |  |
|
|
|