Skip Ribbon Commands
Skip to main content

Ondrej Sevecek's Blog

:

Engineering and troubleshooting by Directory Master!
Ondrej Sevecek's Blog > Posts > Uf tak tohle je regex na ADSI cestu
září 16
Uf tak tohle je regex na ADSI cestu

Ok. Trvalo to slabých 7 hodin práce, ale je to konečně tu! Luxusní regex na čekování LDAP ADSI cesty:

\A(LDAP|GC)://(?:(?:((?:[a-zA-Z0-9-]+\.)*[a-zA-Z0-9-]+)(?::(\d+)|())|()())()\Z|((?:[a-zA-Z0-9-]+\.)*[a-zA-Z0-9-]+)(?::(\d+)|())/(RootDSE|(?:[a-zA-Z]+=(?:\w|[`~!@%&_:' \-\.\$\^\{\}\[\]\(\|\)\*\?]|[\x80-\xFF]|\\#|\\\+|\\=|\\"|\\;|\\<|\\>|\\,|\\/|\\\\)+(?:,|\Z))+|)\Z|()()(RootDSE|(?:[a-zA-Z]+=(?:\w|[`~!@%&_:' \-\.\$\^\{\}\[\]\(\|\)\*\?]|[\x80-\xFF]|\\#|\\\+|\\=|\\"|\\;|\\<|\\>|\\,|\\/|\\\\)+(?:,|\Z))+|)\Z)

Pokud by to někomu snad připadalo poněkud nepřehledné tak zde je to trošku dekomponované:

$rxDns = '(?:[a-zA-Z0-9-]+\.)*[a-zA-Z0-9-]+'
$rxPort = '(?::(\d+)|())'
$rxFqdn = "($rxDns)$rxPort"

$oneDnPart = '[a-zA-Z]+=(?:\w|[`~!@%&_:'' \-\.\$\^\{\}\[\]\(\|\)\*\?]|[\x80-\xFF]|\\#|\\\+|\\=|\\"|\\;|\\<|\\>|\\,|\\/|\\\\)+'
$fullDn = "(?:$oneDnPart(?:,|\Z))+"
$dn = "(RootDSE|$fullDn|)"

$normalAdsiMatch = "\A(LDAP|GC)://(?:(?:$rxFqdn|()())()\Z|$rxFqdn/$dn\Z|()()$dn\Z)"

... zvalidováno na třech forestech, dohromady cca 70 000 objektů přes více kontinentů, tak to snad bude ok :-)

Comments

Re: Uf tak tohle je regex na ADSI cestu

Že ty se nudíš? :)
Borek on 17.9.2013 19:18

Add Comment

Title


Pole Title nemusíte vyplňovat, doplní se to samo na stejnou hodnotu jako je nadpis článku.

Author *


Pole Author nesmí být stejné jako pole Title! Mám to tu jako ochranu proti spamu. Roboti to nevyplní dobře :-)

Body *


Type number two as digit *


Semhle vyplňte číslici dvě. Předchozí antispemové pole nefunguje úplně dokonale, zdá se, že jsou i spamery, které pochopily, že je občas potřeba vyplnit autora :-)

Email


Emailová adresa, pokud na ni chcete ode mě dostat odpověď. Nikdo jiný než já vaši emailovou adresu neuvidí.

Attachments