Re: Parse x.500 DN and change order displayed
- From: "szr" <szrRE@xxxxxxxxxxxxxxx>
- Date: Mon, 31 Mar 2008 09:42:03 -0700
Hallvard B Furuseth wrote:
SecureIT writes:
I am trying to change this
"cn=Bob Smith+serialNumber=CR013120080827,o=ICM,c=US"
to this:
"serialNumber=CR013120080827+cn=Bob Smith,o=ICM,c=US"
Without escape sequences like "\," and "\+" in the DNs (if that's
allowed anyway, I don't remember the details of X.500 Dn syntax), this
moves serialNumber first in each RDN:
s/(^|,)([^,]*)\+(serialNumber=[^+,]*)(?=[+,])/$1$3+$2/gi;
die "didn't catch all 'foo+serialNumber's" if /\+serialNumber=/i;
Using this regex will take care of \, and \+ escapes:
s/(^|(?<!\\),)((?:[^,]|\\,)*)\+(serialNumber=(?:[^+,]|\\[+,])*)(?=(?<!\\)[+,])/$1$3+$2/gi;
Matches:
my $dn = "cn=Bob Smith+serialNumber=CR013120080827,o=ICM,c=US";
$dn =~ s/
(^|(?<!\\),) ((?:[^,]|\\,)*) \+
(serialNumber = (?:[^+,] | \\[+,])*)
(?=(?<!\\)[+,])
/$1$3+$2/gix;
print $dn;
__OUTPUT__
serialNumber=CR013120080827+cn=Bob Smith,o=ICM,c=US
And:
my $dn = "cn=Smith\\, Bob+serialNumber=CR01312\\+0080827,o=ICM,c=US";
$dn =~ s/
(^|(?<!\\),) ((?:[^,]|\\,)*) \+
(serialNumber = (?:[^+,] | \\[+,])*)
(?=(?<!\\)[+,])
/$1$3+$2/gix;
print $dn;
__OUTPUT__
serialNumber=CR01312\+0080827+cn=Smith\, Bob,o=ICM,c=US
Hope this helps.
--
szr
.
- References:
- Parse x.500 DN and change order displayed
- From: SecureIT
- Re: Parse x.500 DN and change order displayed
- From: Hallvard B Furuseth
- Parse x.500 DN and change order displayed
- Prev by Date: Re: Parse x.500 DN and change order displayed
- Next by Date: Re: Sharing a DBI::Mysql database connection with your children
- Previous by thread: Re: Parse x.500 DN and change order displayed
- Next by thread: FAQ 8.5 How do I read just one key without waiting for a return key?
- Index(es):
Relevant Pages
|