1#!/usr/bin/perl
2# Copyright (c) 2010-2011 Sampo Kellomaki (sampo@iki.fi), All Rights Reserved.
3# This is confidential unpublished proprietary source code of the author.
4# NO WARRANTY, not even implied warranties. Contains trade secrets.
5# Distribution prohibited unless authorized in writing.
6# Licensed under Apache License 2.0, see file COPYING.
7# $Id$
8#
9# 9.2.2011, adapted from zximport-htpasswd.pl --Sampo
10#
11# Commandline for importing .htpasswd file to /var/zxid/idpuid
12
13$usage = <<USAGE;
14Commandline for importing LDIF file to /var/zxid/idpuid
15Usage: ./zximport-ldif.pl <foo.ldif
16USAGE
17    ;
18die $USAGE if $ARGV[0] =~ /^-[Hh?]/;
19
20#$dir = '/tmp/idpuid';
21$dir = '/var/zxid/idpuid';
22
23$uidn = 1;
24
25use Data::Dumper;
26
27sub writeall {
28    my ($f,$d) = @_;
29    open F, ">$f" or die "Cant write($f): $!";
30    binmode F;
31    flock F, 2;    # Exclusive
32    print F $d;
33    flock F, 8;
34    close F;
35}
36
37sub mkuser {
38    my ($uid, $pw, $at) = @_;
39    chomp $crypt;
40    mkdir "$dir/$uid" or die "Cant mkdir $dir/$uid: $!";
41    mkdir "$dir/$uid/.bs" or die "Cant mkdir $dir/$uid/.bs: $!";
42    mkdir "$dir/$uid/.ykspent" or die "Cant mkdir $dir/$uid/.ykspent: $!";
43    writeall("$dir/$uid/.pw", $pw);
44    writeall("$dir/$uid/.bs/.at", $at);
45}
46
47
48undef $/;
49$x = <STDIN>;
50@recs = split /\r?\n\r?\n/, $x;
51for $rec (@recs) {
52    next if $rec =~ /^\s*$/;
53    warn "REC1($rec)";
54    $idpnid = $uid = $pw = '';
55    $rec =~ s/^dn: .*?\r?\n//m;
56    ($idpnid) = $rec =~ /^idpnid: (.*?)$/m;
57    $rec =~ s/^idpnid: .*?\r?\n//m;
58    ($uid) = $rec =~ /^uid: (.*?)$/m;
59    $rec =~ s/^uid: .*?\r?\n//m;
60    ($pw) = $rec =~ /^password: (.*?)$/m;
61    $rec =~ s/^password: .*?\r?\n//m;
62    ($cn) = $rec =~ /^cn: (.*?)$/m;
63    $rec =~ s/^cn: .*?\r?\n//m;
64    $rec =~ s/^urn:oasis:names:tc:xacml:1.0:subject:subject-id: .*?\r?\n//m;
65    warn "REC2($rec) idpnid($idpnid) uid($uid) pw($pw) cn($cn)";
66    #$uid ||= "user".$uidn++;
67    $uid ||= "testUserReview2011-".$uidn++;
68    $pw  ||= "tas123";
69    $cn  ||= "Mr. $uid";
70    warn "REC3($rec) idpnid($idpnid) uid($uid) pw($pw) cn($cn)";
71    mkuser($uid, $pw, "cn: $cn\n$rec\n");
72    # if ($idpnid) *** too complicated as this depends on SP as well
73}
74
75__END__
76
77https://portal.tas3.eu/trac/ticket/495
78
79RequestNOTScenario_1.ldif
80RequestNOTScenario_2.ldif
81RequestNOTScenario_3.ldif
82RequestNOTScenario_4.ldif
83RequestNOTScenario_5.ldif
84RequestNOTScenario_6.ldif
85RequestNOTScenario_7.ldif
86RequestNOTScenario_8.ldif
87RequestNOTScenario_9.ldif
88RequestNOTScenario_10.ldif
89RequestNOTScenario_11.ldif
90RequestNOTScenario_12.ldif
91RequestNOTScenario_13.ldif
92RequestNOTScenario_14.ldif
93RequestNOTScenario_15.ldif
94RequestNOTScenario_16.ldif
95RequestNOTScenario_17.ldif
96RequestNOTScenario_18.ldif
97RequestNOTScenario_19.ldif
98RequestNOTScenario_20.ldif
99RequestNOTScenario_21.ldif
100RequestNOTScenario_22.ldif
101RequestNOTScenario_23.ldif
102RequestNOTScenario_24.ldif
103RequestNOTScenario_25.ldif
104RequestNOTScenario_26.ldif
105RequestNOTScenario_27.ldif
106RequestNOTScenario_28.ldif
107RequestNOTScenario_29.ldif
108RequestNOTScenario_30.ldif
109RequestNOTScenario_31.ldif
110RequestNOTScenario_32.ldif
111RequestNOTScenario_33.ldif
112RequestNOTScenario_34.ldif
113RequestNOTScenario_35.ldif
114RequestNOTScenario_36.ldif
115RequestNOTScenario_37.ldif
116RequestNOTScenario_38.ldif
117RequestNOTScenario_39.ldif
118RequestNOTScenario_40.ldif
119RequestNOTScenario_41.ldif
120RequestNOTScenario_42.ldif
121RequestNOTScenario_43.ldif
122RequestNOTScenario_44.ldif
123RequestNOTScenario_45.ldif
124RequestNOTScenario_46.ldif
125RequestNOTScenario_47.ldif
126RequestNOTScenario_48.ldif
127RequestNOTScenario_49.ldif
128RequestNOTScenario_50.ldif
129