/[cvs]/nfo/perl/scripts/outlook2ldap/libs/Torus/Core.pm
ViewVC logotype

Annotation of /nfo/perl/scripts/outlook2ldap/libs/Torus/Core.pm

Parent Directory Parent Directory | Revision Log Revision Log


Revision 1.3 - (hide annotations)
Sun Jan 19 03:35:25 2003 UTC (21 years, 5 months ago) by joko
Branch: MAIN
Changes since 1.2: +49 -37 lines
+ added cvs-header

1 joko 1.3 ## ------------------------------------------------------------------------
2     ## $Id: Files.pm,v 1.2 2003/01/19 02:14:11 joko Exp $
3     ## ------------------------------------------------------------------------
4     ## $Log: Files.pm,v $
5     ## ------------------------------------------------------------------------
6    
7    
8 joko 1.1 package Torus::Core;
9    
10 joko 1.2 use base qw(
11     DesignPattern::Object
12     DesignPattern::Object::Logger
13     );
14 joko 1.1
15     use strict;
16     use warnings;
17    
18 joko 1.3 use Data::Dumper;
19    
20 joko 1.1 use loadConfig;
21 joko 1.3 use Data::Storage;
22     use Data::Storage::Locator;
23 joko 1.2 use Data::Transfer::Sync;
24    
25     my $logger = Log::Dispatch::Config->instance;
26    
27 joko 1.1
28     my $DEBUGLEVEL = $config->get("debug_level");
29     my $TRACELEVEL = $config->get("trace_level");
30     my $bool_started;
31    
32    
33     sub addItem {
34    
35     my $torusObjectType = shift;
36     my $mapiEntry = shift;
37     my $basedn = shift;
38     my $ldapEntry;
39    
40     if (!$bool_started) {
41     Torus::Driver::ldap::connectStore();
42     }
43    
44     $bool_started = 1;
45    
46     if ($DEBUGLEVEL > 3) {
47     print STDOUT "=" x 3, " ", __PACKAGE__, " ", "=" x 30, "\n";
48     print STDOUT "recieved torus-object (type=$torusObjectType)", "\n";
49     print STDOUT "trying to write to (basedn='$basedn')", "\n";
50     }
51    
52     if ($torusObjectType eq 'MapiContact') {
53     $basedn = Torus::Driver::ldap::createOuSafe($basedn);
54     my $entry = Torus::Driver::ldap::prepareEntry($basedn, $mapiEntry);
55     if (my $result = Torus::Driver::ldap::addEntry($entry)) {
56     #my $error = 0;
57     #$error = 1 if $result->code >= 0;
58     #Torus::Driver::ldap::traceEntry($mapiEntry, $entry, { error => $error, prefix => $result->error }) if $TRACELEVEL >= 2;
59     #undef $result;
60     Torus::Driver::ldap::processResult($entry->{identifier}, $result);
61     }
62     }
63 joko 1.2
64     }
65    
66     sub startSync {
67    
68     my $self = shift;
69     my $opts = shift;
70    
71 joko 1.3 #print Dumper($opts);
72     #exit;
73    
74     my $host = $config->get("ldapserver_host");
75     my $binddn = $config->get("ldapserver_binddn");
76     my $pass = $config->get("ldapserver_pass");
77     my $basedn = $config->get("ldapserver_basedn");
78    
79     my $dsn = "ldap:host=$host;binddn='$binddn';pass=$pass";
80     $logger->info(__PACKAGE__ . "->startSync: using dsn: $dsn");
81    
82 joko 1.2 my $ldapLocator = Data::Storage::Locator->new(
83     ldap => {
84     type => "NetLDAP",
85     # dsn => "ldap:host=192.168.1.56;binddn='cn=root, dc=labnet, dc=de';pass=Geheim",
86 joko 1.3 # dsn => "ldap:host=192.168.10.150;binddn='cn=root, o=netfrag.org, c=de';pass=secret",
87     dsn => $dsn,
88     # basedn => "o=netfrag.org, c=de",
89     basedn => $basedn,
90 joko 1.2 #schema => 'BizWorks::BackendDbSchema',
91     #classnames => [qw( SystemEvent LangText )],
92     #classnames => [qw( SystemEvent Person Address LangText )],
93     #test_availability => 1,
94     #test_integrity => 1,
95     #test_emptyness => 1,
96     # TODO: re-enable this! (multiple-target-logging!)
97     #logger => 1,
98     want_transactions => 0,
99     syncable => 1,
100     },
101     );
102     my $ldapStorage = Data::Storage->new($ldapLocator);
103     $ldapStorage->connect();
104    
105     my $mapiStorage;
106    
107    
108     # create a new synchronization object
109     my $sync = Data::Transfer::Sync->new();
110    
111 joko 1.3 # read, mungle & check the options
112     $sync->prepareOptionsV2($opts);
113 joko 1.2
114 joko 1.3 if (!$sync->checkOptionsV2()) {
115     $logger->critical( __PACKAGE__ . "->startSync: 'Data::Transfer::Sync::checkOptions' failed.");
116     return;
117     }
118 joko 1.2
119     #print Dumper($opts);
120    
121    
122 joko 1.3 =pod
123 joko 1.2 # branch to execution path for special targets
124     # detect for option 'handler' which could be a CODEref
125     if ($opts->{handler} && ref $opts->{handler} eq 'CODE') {
126     $logger->info( __PACKAGE__ . "->startSync: Running (special handler code - no generic sync!) on '$opts->{target}' with MODE $opts->{mode}, NODE $opts->{target_node}");
127     $opts->{handler}->($self, $opts);
128     return;
129     }
130 joko 1.3 =cut
131 joko 1.2
132     # configure synchronization-object
133 joko 1.3 $sync->configureV2(
134 joko 1.2 #L => $self->{bizWorks}->{$opts->{source}},
135 joko 1.3 source => {
136     storage => {
137     handle => $mapiStorage,
138     writeProtected => 1,
139     },
140     },
141     #R => $self->{bizWorks}->{$opts->{target}},
142     target => {
143     storage => {
144     handle => $ldapStorage,
145     idAuthority => 1,
146     checksumAuthority => 1,
147     writeProtected => 0,
148     },
149 joko 1.2 },
150     verbose => 1,
151     );
152    
153     # patch options
154     $opts->{source} = "L:$opts->{source_node}" if $opts->{source_node};
155     $opts->{target} = "R:$opts->{target_node}" if $opts->{target_node};
156    
157     #print Dumper($opts);
158    
159     $sync->syncNodes($opts);
160 joko 1.1
161     }
162    
163     1;

MailToCvsAdmin">MailToCvsAdmin
ViewVC Help
Powered by ViewVC 1.1.26 RSS 2.0 feed