Files
ldapsm/__pycache__/main.cpython-313.pyc

55 lines
11 KiB
Plaintext
Raw Normal View History

2025-06-27 16:10:49 +02:00
<EFBFBD>
ť^h<><00><00>z<00>SrSSKrSSKJr SSKrSSKrSSKrS\S\4SjrS\ S\ 4Sjr
Sr \ S :Xa\ "5 gg)
u<EFBFBD>
manage_schema.py — Create or update OpenLDAP schema snippets under cn=schema,cn=config.
Usage example:
./manage_schema.py -s ldapi:/// -D "" -W "" -n nextcloud -a "( 1.3.6.1.4.1.99999.1 NAME 'nextcloudQuota' DESC 'Quota for Nextcloud' EQUALITY integerMatch ORDERING integerOrderingMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.27 SINGLE-VALUE )" -c "( 1.3.6.1.4.1.99999.2 NAME 'nextcloudUser' DESC 'Auxiliary class for Nextcloud attributes' AUXILIARY MAY ( nextcloudQuota ) )"
<EFBFBD>N<>def_str<74>returnc<00>N<00>[R"SSUR55$)z<>
Collapse all whitespace (Spaces, Newlines, Tabs) to single spaces,
strip leading/trailing whitespace, for reliable byte-wise comparisons.
s\s+<2B> )<03>re<72>sub<75>strip)rs <20>a/home/kevinveenbirkenbach/Repositories/github.com/kevinveenbirkenbach/ldap-schema-manager/main.py<70> normalizer s<00><00>
<0E>6<EFBFBD>6<EFBFBD>'<27>4<EFBFBD><17><1D><1D><1F> 1<>1<><00>ldifc<00>d<00>[R"SU5nU(aURS5$S$)Nz\(\s*([\d\.]+)<29><00>)r<00>search<63>group)r <00>matchs r
<00> extract_oidrs(<00><00> <0E>I<EFBFBD>I<EFBFBD>'<27><14> .<2E>E<EFBFBD>"<22>5<EFBFBD>;<3B>;<3B>q<EFBFBD>><3E>*<2A><02>*r c<00><>^<1C>[R"SS9nURSSSSS9 URSS S
S S9 URS S S
SS9 URSSSSS9 URSSS/SS9 URSSS/SS9 URSSS9 URSS S9 UR5nUR(aA[ UR5nUR RS!U55 SSS5 UR(aA[ UR5nURRS%U55 SSS5 UR (d?UR(d.[S'[RS#9 [R"S$5 [R "UR"5nUR%UR&UR(5 S)nWR-U[R.S*S+/5n[0R2"S-5n/nSn WHnup<>UR5U
5n U (dM[7U R9S$55n U R9S.5nUR;U 5 X<>R<:XdMlU n Mp U bU n [S/U S0UR<35 O<>U(a[?U5S$-OS1n S2U S03nS3UUR<S4U3nS5S6/UUR<3RA5/S7.nWRCU[RDRGU55 [S8U35 S2U S03nS3UUR<S4U3nUR GHinURA5nWR-U[RHS9/S:9nUS1S$RKS9/5nUVs/sHn[MU5PM nn[MU5n[OU5mUU;aC[S;U35 URQU[RRS9U/4/5 [S<U35 M<>[UU4S=jU55(aG[S>TS?U35 URQU[RRS9U/4/5 [S@U35 GM([SAU35 URQU[RVS9U/4/5 [SBU35 GMl URH<>nURA5nWR-U[RHSE/S:9nUS1S$RKSE/5nUU;aY[SFU35 [RXSEU/4[RVSEU/4/nURQUU5 [SGU35 M<>URQU[RVSEU/4/5 [SIU35 M<> WR[5 g!,(df  GN<>=f![a<n[S"U3[RS#9 [R"S$5 SnAGN6SnAff=f!,(df  GN<>=f![a<n[S&U3[RS#9 [R"S$5 SnAGN?SnAff=f![R*a<n[S(U3[RS#9 [R"S$5 SnAGN<>SnAff=f![R*a<n[S,U3[RS#9 [R"S$5 SnAGN(SnAff=fs snf![R*a@n[SCUSDU3[RS#9 [R"S$5 SnAGMSnAff=f![R*a3n[SHUSDU35 [R"S.5 SnAGM<>SnAff=f![R*a@n[SJUSDU3[RS#9 [R"SK5 SnAGMDSnAff=f)LNz8Create or update OpenLDAP schema entries under cn=config)<01> descriptionz-sz --server-uriz ldapi:///z$LDAP server URI (default: ldapi:///))<02>default<6C>helpz-Dz --bind-dnrz!Bind DN (empty for SASL EXTERNAL)z-Wz --bind-pwz Bind passwordz-nz --schema-nameTz$Schema snippet name (e.g. nextcloud))<02>requiredrz-az--attribute-type<70>appendzEAttributeType definition in LDIF syntax (can be given multiple times))<03>actionrrz-cz--object-classzCObjectClass definition in LDIF syntax (can be given multiple times)z --attrs-filez7File containing AttributeType definitions, one per line)rz --objs-filez5File containing ObjectClass definitions, one per linec3<00>n# <00>UH+oR5(dMUR5v<00> M- g7f<01>N<>r <00><02>.0<EFBFBD>lines r
<00> <genexpr><3E>main.<locals>.<genexpr>Ss#<00><00><00>+<12>-.<2E>T<EFBFBD>*<2A>*<2A>,<2C>L<EFBFBD>D<EFBFBD>J<EFBFBD>J<EFBFBD>L<EFBFBD>L<EFBFBD>Q<EFBFBD><51><00>5<01>5zError reading attrs file: )<01>filerc3<00>n# <00>UH+oR5(dMUR5v<00> M- g7frrrs r
r"r#\s#<00><00><00>)<12>-.<2E>T<EFBFBD>*<2A>*<2A>,<2C>L<EFBFBD>D<EFBFBD>J<EFBFBD>J<EFBFBD>L<EFBFBD>L<EFBFBD>Q<EFBFBD>r$zError reading objs file: z5No attributeType or objectClass definitions provided.zLDAP bind failed: zcn=schema,cn=configz(objectClass=olcSchemaConfig)<29>dnz#Failed to search schema container: z\{(\d+)\}([^,]+)<29>u'✔️ Using existing schema snippet {<7B>}r<00>{zcn=<3D>,stopsolcSchemaConfig)<02> objectClass<73>cnu ✅ Created new schema snippet: <20>olcAttributeTypes)<01>attrlistu* AttributeType exists → REPLACE: u🔄 Replaced AttributeType: c3<00>J># <00>UHnTUR5;v<00> M g7fr)<01>decode)r <00>entry<72>oids <20>r
r"r#<00>s<00><><00><00>A<><08>u<EFBFBD>S<EFBFBD>E<EFBFBD>L<EFBFBD>L<EFBFBD>N<EFBFBD>*<2A><08>s<00> #u%⚠️ AttributeType with same OID (u) exists → REPLACE: u)🔄 Replaced AttributeType (OID match): u! AttributeType fehlt → ADD: u Added AttributeType: u"❌ LDAP error for AttributeType 'z': <20>olcObjectClassesu> ObjectClass already exists, replacing (DELETE + ADD): u🔄 Replaced ObjectClass: u&❌ LDAP error replacing ObjectClass 'u Added ObjectClass: u!❌ LDAP error for ObjectClass '<27>).<2E>argparse<73>ArgumentParser<65> add_argument<6E>
parse_args<EFBFBD>
attrs_file<EFBFBD>open<65>attribute_type<70>extend<6E> Exception<6F>print<6E>sys<79>stderr<72>exit<69> objs_file<6C> object_class<73>ldap<61>
initialize<EFBFBD>
server_uri<EFBFBD> simple_bind_s<5F>bind_dn<64>bind_pw<70> LDAPError<6F>search_s<5F>SCOPE_ONELEVELr<00>compiler<00>intrr<00> schema_name<6D>max<61>encode<64>add_s<5F>modlist<73>
addModlist<EFBFBD>
SCOPE_BASE<EFBFBD>getr r<00>modify_s<5F> MOD_REPLACE<43>any<6E>MOD_ADD<44>
MOD_DELETE<EFBFBD>unbind_s)<1D>parser<65>args<67>f<>e<>conn<6E>base_dn<64>entries<65>idx_re<72>indices<65> existing_idxr'<00>_<>m<>idx<64>name<6D>prefix<69>new_dn<64> entry_attrs<72> schema_dn<64>atdef<65>encoded<65>result<6C>existing<6E>v<> norm_existing<6E> norm_encoded<65>ocdef<65>modsr3s @r
<00>mainry!s<><00><><00> <15> $<24> $<24>N<><06>F<EFBFBD> <0B><17><17> <0C>n<EFBFBD><1B> 3<><18><06>
 <0B><17><17> <0C>k<EFBFBD><12> 0<><18><06>
 <0B><17><17> <0C>k<EFBFBD><12> <1C><18><06>
 <0B><17><17> <0C>o<EFBFBD><15> 3<><18><06>
 <0B><17><17> <0C> <20><17><12> T<> <18><06>  <0B><17><17> <0C><1E><17><12> R<> <18><06>  <0B><17><17><16> F<><18><06> <0B><17><17><15> D<><18><06> <12> <1C> <1C> <1E>D<EFBFBD> <0C><EFBFBD><EFBFBD> <18><15>d<EFBFBD>o<EFBFBD>o<EFBFBD>&<26>!<21><14>#<23>#<23>*<2A>*<2A>+<12>-.<2E>+<12><12>'<27> <0C>~<7E>~<7E> <18><15>d<EFBFBD>n<EFBFBD>n<EFBFBD>%<25><11><14>!<21>!<21>(<28>(<28>)<12>-.<2E>)<12><12>&<26> <10> <1E> <1E>t<EFBFBD>'8<>'8<> <0A>E<>C<EFBFBD>J<EFBFBD>J<EFBFBD>W<> <0B><08><08><11> <0B><14><13><EFBFBD><EFBFBD>t<EFBFBD><EFBFBD><EFBFBD>/<2F><04> <0C><1A><1A>4<EFBFBD><<3C><<3C><14><1C><1C>6<>
$<24>G<EFBFBD> <14><16>-<2D>-<2D> <13> <10> <1F> <1F> +<2B> <11>F<EFBFBD> 
<EFBFBD><07><10>Z<EFBFBD>Z<EFBFBD>+<2B> ,<2C>F<EFBFBD><10>G<EFBFBD><17>L<EFBFBD><18><05><02> <12>M<EFBFBD>M<EFBFBD>"<22> <1D><01><10> <14><11>!<21>'<27>'<27>!<21>*<2A>o<EFBFBD><03><10>w<EFBFBD>w<EFBFBD>q<EFBFBD>z<EFBFBD><04><0F><0E><0E>s<EFBFBD><1B> <0F>#<23>#<23> #<23><1E>L<EFBFBD><19><14><1F><1A><03> <0A>8<><13><05>R<EFBFBD><04>@P<>@P<>?Q<>R<>S<>")<29>c<EFBFBD>'<27>l<EFBFBD>Q<EFBFBD><1E>q<EFBFBD><03><15>c<EFBFBD>U<EFBFBD>"<22><1C><06><16>v<EFBFBD>h<EFBFBD>t<EFBFBD>/<2F>/<2F>0<><01>'<27><19>;<3B><06>"<22>$6<>7<><1C>X<EFBFBD>d<EFBFBD>.<2E>.<2E>/<2F>0<>7<>7<>9<>:<3A>
<EFBFBD> <0B> <0A>
<EFBFBD>
<EFBFBD>6<EFBFBD>4<EFBFBD><<3C><<3C>2<>2<>;<3B>?<3F>@<40> <0A>0<><16><08>9<>:<3A><12>#<23><15>b<EFBFBD>\<5C>F<EFBFBD><15>f<EFBFBD>X<EFBFBD>d<EFBFBD>.<2E>.<2E>/<2F>q<EFBFBD><17> <09>:<3A>I<EFBFBD><16>$<24>$<24><05><17>,<2C>,<2C>.<2E><07> <18><19>]<5D>]<5D>9<EFBFBD>d<EFBFBD>o<EFBFBD>o<EFBFBD>-@<40>,A<>#<23>C<01>F<EFBFBD><1D>a<EFBFBD>y<EFBFBD><11>|<7C>'<27>'<27>(;<3B>R<EFBFBD>@<40>H<EFBFBD>3;<3B><<3C>8<EFBFBD>a<EFBFBD>Y<EFBFBD>q<EFBFBD>\<5C>8<EFBFBD>M<EFBFBD><<3C>%<25>g<EFBFBD>.<2E>L<EFBFBD><1D>e<EFBFBD>$<24>C<EFBFBD><1C>}<7D>,<2C><15>B<>5<EFBFBD>'<27>J<>K<><14> <0A> <0A>i<EFBFBD><19>%<25>%<25>':<3A>W<EFBFBD>I<EFBFBD>F<>*<12><13><16>5<>e<EFBFBD>W<EFBFBD>=<3D>><3E><14>A<><08>A<>A<>A<><15>=<3D>c<EFBFBD>U<EFBFBD>BX<42>Y^<5E>X_<58>`<60>a<><14> <0A> <0A>i<EFBFBD><19>%<25>%<25>':<3A>W<EFBFBD>I<EFBFBD>F<>*<12><13><16>A<>%<25><17>I<>J<><15>9<>%<25><17>A<>B<><14> <0A> <0A>i<EFBFBD><19>\<5C>\<5C>#6<><17> <09>B<>*<12><13><16>1<>%<25><17>9<>:<3A>=%<25>L<16>"<22>"<22><05><17>,<2C>,<2C>.<2E><07> <18><19>]<5D>]<5D>9<EFBFBD>d<EFBFBD>o<EFBFBD>o<EFBFBD>-?<3F>,@<40>#<23>B<01>F<EFBFBD><1D>a<EFBFBD>y<EFBFBD><11>|<7C>'<27>'<27>(:<3A>B<EFBFBD>?<3F>H<EFBFBD><16>(<28>"<22><15>V<>W\<5C>V]<5D>^<5E>_<><15><1F><1F>"4<>w<EFBFBD>i<EFBFBD>@<40><15><1C><1C>"4<>w<EFBFBD>i<EFBFBD>@<40><12><04> <20><18>M<EFBFBD>M<EFBFBD>)<29>T<EFBFBD>2<><19>7<><05>w<EFBFBD>?<3F>@<40>
<15> <0A> <0A>i<EFBFBD><19>\<5C>\<5C>#5<><07>y<EFBFBD>A<>*<12><13><16>/<2F><05>w<EFBFBD>7<>8<>-#<23>6 <09>M<EFBFBD>M<EFBFBD>O<EFBFBD>]'<27>&<26><><19> <18> <11>.<2E>q<EFBFBD>c<EFBFBD>2<><13><1A><1A> D<> <0F>H<EFBFBD>H<EFBFBD>Q<EFBFBD>K<EFBFBD>K<EFBFBD><4B> <18><>
&<26>%<25><><19> <18> <11>-<2D>a<EFBFBD>S<EFBFBD>1<><03>
<EFBFBD>
<EFBFBD> C<> <0F>H<EFBFBD>H<EFBFBD>Q<EFBFBD>K<EFBFBD>K<EFBFBD><4B> <18><> <10>><3E>><3E><14> <0A>"<22>1<EFBFBD>#<23>&<26>S<EFBFBD>Z<EFBFBD>Z<EFBFBD>8<> <0B><08><08><11> <0B> <0B><><14><> <10>><3E>><3E><14> <0A>3<>A<EFBFBD>3<EFBFBD>7<>c<EFBFBD>j<EFBFBD>j<EFBFBD>I<> <0B><08><08><11> <0B> <0B><><14><>\=<3D><>2<14>~<7E>~<7E> <18> <11>6<>u<EFBFBD>g<EFBFBD>S<EFBFBD><11><03>D<>3<EFBFBD>:<3A>:<3A> V<> <0F>H<EFBFBD>H<EFBFBD>Q<EFBFBD>K<EFBFBD>K<EFBFBD><4B> <18><>(<1C>~<7E>~<7E> <20><19>B<>5<EFBFBD>'<27><13>Q<EFBFBD>C<EFBFBD>P<>Q<><17>H<EFBFBD>H<EFBFBD>Q<EFBFBD>K<EFBFBD>K<EFBFBD><4B> <20><><14>~<7E>~<7E> <18> <11>5<>e<EFBFBD>W<EFBFBD>C<EFBFBD><01>s<EFBFBD>C<>#<23>*<2A>*<2A> U<> <0F>H<EFBFBD>H<EFBFBD>Q<EFBFBD>K<EFBFBD>K<EFBFBD><4B> <18>s<00>W;<00>#W)<03>>W;<00>Y<00>-#Y<03>Y<00>)AZ<00>2#[2<00><]
<02> ]<06>"A]
<02>A]
<02>$A]
<02>
A4_+<02>? ^!<02>!3_+<02>)
W8<07>3W;<00>8W;<00>;
Y<03>1X<<03><Y<03>
Y<07>Y<00>Y<00>
Z<03> 1Z<03>Z<03>[/<03>31[*<03>*[/<03>2]<03>1\=<03>=]<03>]
<02>
^<05>4^<05>^<05>!_(<05>5'_#<05>_+<02>#_(<05>(_+<02>+`?<05>?4`:<05>:`?<05>__main__) <0A>__doc__rE<00> ldap.modlistrTr6rr@<00>bytesr <00>strrry<00>__name__<5F>r r
<00><module>r<>s\<00><01> <04> <0C><1E><0F> <09>
<EFBFBD>2<>u<EFBFBD>2<><15>2<>+<2B>c<EFBFBD>+<2B>c<EFBFBD>+<2B><14>B <0C>z<EFBFBD><19><08>F<EFBFBD>r