1 |
joko |
1.1 |
<HTML> |
2 |
|
|
<HEAD> |
3 |
|
|
<TITLE>Torus</TITLE> |
4 |
|
|
<LINK REV="made" HREF="mailto:"> |
5 |
|
|
</HEAD> |
6 |
|
|
|
7 |
|
|
<BODY> |
8 |
|
|
|
9 |
|
|
<A NAME="__index__"></A> |
10 |
|
|
<!-- INDEX BEGIN --> |
11 |
|
|
|
12 |
|
|
<UL> |
13 |
|
|
|
14 |
|
|
<LI><A HREF="#name">NAME</A></LI> |
15 |
|
|
<LI><A HREF="#description">DESCRIPTION</A></LI> |
16 |
|
|
<LI><A HREF="#news">NEWS</A></LI> |
17 |
|
|
<UL> |
18 |
|
|
|
19 |
|
|
<UL> |
20 |
|
|
|
21 |
|
|
<UL> |
22 |
|
|
|
23 |
|
|
<LI><A HREF="#20030118 initial checkin">2003-01-18 - initial check-in</A></LI> |
24 |
|
|
</UL> |
25 |
|
|
|
26 |
|
|
</UL> |
27 |
|
|
|
28 |
|
|
</UL> |
29 |
|
|
|
30 |
|
|
<LI><A HREF="#requirements">REQUIREMENTS</A></LI> |
31 |
|
|
<LI><A HREF="#authors / copyright">AUTHORS / COPYRIGHT</A></LI> |
32 |
|
|
<LI><A HREF="#contributors">CONTRIBUTORS</A></LI> |
33 |
|
|
<LI><A HREF="#support / warranty">SUPPORT / WARRANTY</A></LI> |
34 |
|
|
<LI><A HREF="#bugs">BUGS</A></LI> |
35 |
|
|
<LI><A HREF="#todo">TODO</A></LI> |
36 |
|
|
<LI><A HREF="#ideas">IDEAS</A></LI> |
37 |
|
|
</UL> |
38 |
|
|
<!-- INDEX END --> |
39 |
|
|
|
40 |
|
|
<HR> |
41 |
|
|
<P> |
42 |
|
|
<HR> |
43 |
|
|
<H1><A NAME="name">NAME</A></H1> |
44 |
|
|
<P>Torus</P> |
45 |
|
|
<P> |
46 |
|
|
<HR> |
47 |
|
|
<H1><A NAME="description">DESCRIPTION</A></H1> |
48 |
|
|
<PRE> |
49 |
|
|
Torus is a module to ease migration from Outlook.</PRE> |
50 |
|
|
<PRE> |
51 |
|
|
Torus uses CPAN's Win32::OLE to access Microsoft's MAPI locally and |
52 |
|
|
CPAN's Net::LDAP to connect to a remote OpenLDAP-server (slapd).</PRE> |
53 |
|
|
<PRE> |
54 |
|
|
Access to these storage-implementations is wrapped via Data::Storage. |
55 |
|
|
Core functionality of Torus is currently provided from Data::Transfer::Sync.</PRE> |
56 |
|
|
<PRE> |
57 |
|
|
We are starting with Contacts/Adresses, will go along with Messages, |
58 |
|
|
Calendar-Items and Journaling-Features. |
59 |
|
|
The "rest" should be able to be modeled and implemented on top of this.</PRE> |
60 |
|
|
<PRE> |
61 |
|
|
This is more a reference implementation than anything actually useful. ;-) |
62 |
|
|
You'll also like to take a look at: |
63 |
|
|
- Kroupware Project: <A HREF="http://kroupware.kde.org">http://kroupware.kde.org</A> |
64 |
|
|
- Outlook Connector Project: <A HREF="http://otlkcon.sourceforge.net">http://otlkcon.sourceforge.net</A> |
65 |
|
|
- bynari InsightConnector: <A HREF="http://bynari.net/index.php?id=7">http://bynari.net/index.php?id=7</A></PRE> |
66 |
|
|
<P> |
67 |
|
|
<HR> |
68 |
|
|
<H1><A NAME="news">NEWS</A></H1> |
69 |
|
|
<P> |
70 |
|
|
<H4><A NAME="20030118 initial checkin">2003-01-18 - initial check-in</A></H4> |
71 |
|
|
<P> |
72 |
|
|
<HR> |
73 |
|
|
<H1><A NAME="requirements">REQUIREMENTS</A></H1> |
74 |
|
|
<PRE> |
75 |
|
|
Win32::OLE |
76 |
|
|
Net::LDAP |
77 |
|
|
Data::Storage |
78 |
|
|
Data::Transfer::Sync |
79 |
|
|
... and all their dependencies</PRE> |
80 |
|
|
<P> |
81 |
|
|
<HR> |
82 |
|
|
<H1><A NAME="authors / copyright">AUTHORS / COPYRIGHT</A></H1> |
83 |
|
|
<PRE> |
84 |
|
|
The Data::Storage module is Copyright (c) 2002 Andreas Motl. |
85 |
|
|
All rights reserved.</PRE> |
86 |
|
|
<PRE> |
87 |
|
|
You may distribute it under the terms of either the GNU General Public |
88 |
|
|
License or the Artistic License, as specified in the Perl README file.</PRE> |
89 |
|
|
<P> |
90 |
|
|
<HR> |
91 |
|
|
<H1><A NAME="contributors">CONTRIBUTORS</A></H1> |
92 |
|
|
<PRE> |
93 |
|
|
Jan Hoffmann <jan@romain-volk.com> |
94 |
|
|
Sebastian Utz <s.utz@tunemedia.de></PRE> |
95 |
|
|
<P> |
96 |
|
|
<HR> |
97 |
|
|
<H1><A NAME="support / warranty">SUPPORT / WARRANTY</A></H1> |
98 |
|
|
<PRE> |
99 |
|
|
Data::Storage is free software. IT COMES WITHOUT WARRANTY OF ANY KIND.</PRE> |
100 |
|
|
<P> |
101 |
|
|
<HR> |
102 |
|
|
<H1><A NAME="bugs">BUGS</A></H1> |
103 |
|
|
<P> |
104 |
|
|
<HR> |
105 |
|
|
<H1><A NAME="todo">TODO</A></H1> |
106 |
|
|
<PRE> |
107 |
|
|
- outlook2ldap - essential modules: |
108 |
|
|
- Net::LDAP |
109 |
|
|
- Convert::ASN1 / BER1 |
110 |
|
|
- Unicode::String |
111 |
|
|
- MIME::Base64 |
112 |
|
|
o use setup.pm with autoinstall, use ExtUtils::MakeMaker and/or h2xs |
113 |
|
|
o enhance mapping through expressions |
114 |
|
|
o provide multiple use of same fields |
115 |
|
|
o provide mechanism to concatenate fields |
116 |
|
|
--> see etc/_future! |
117 |
|
|
o make integrated setup |
118 |
|
|
o provide gui(s) |
119 |
|
|
o development (create mappings and stuff (testing, ...)) |
120 |
|
|
o productive use (control sync-processing at a central console) |
121 |
|
|
o little hotsync-button (iconbar bottom-right) which provides some actions and some configuration-settings (put ACLs on these settings?) |
122 |
|
|
o move libs/Torus to nfo-modules, exclude various metadata needed to actually sync with ldap and mappings (csv-files) |
123 |
|
|
o provide example to sync with mysql/Tangram/mbox/... |
124 |
|
|
o integrate genSchema.pl |
125 |
|
|
o regeln: |
126 |
|
|
o 3.spalte in outlook_ole_fields.csv: für "genSchema.pl" |
127 |
|
|
o wenn 2.spalte und/oder 3. leer, dann wird kein mapping gemacht (genSchema sowieso nicht) |
128 |
|
|
--> see etc/_future! |
129 |
|
|
o daten "rückwärts" übertragen! |
130 |
|
|
o mapping aufbohren (csv -> xml) - integrate "schema"-property _per-field_!!! |
131 |
|
|
o have the engine use this |
132 |
|
|
o maybe provide cross-checks |
133 |
|
|
--> see etc/_future! |
134 |
|
|
o transfer statistics |
135 |
joko |
1.2 |
o zugriff auf outlook (2002) ohne rückfrage gewähren? |
136 |
joko |
1.1 |
o v.a. wichtig, wenn integrierter zugriff (z.b. durch outlook-plugin) stattfindet |
137 |
|
|
+ verwenden _aller_ attribute, die mit einem address-eintrag assoziiert sein können? |
138 |
|
|
+ mileage (reisekilometer) kommt! |
139 |
|
|
+ bis dato unbekannte mapi-felder sollten nun auch verwendet werden können |
140 |
|
|
o declare folder-mapping inside xml-file |
141 |
|
|
o check-before-delete doesn't seem to work (again!) |
142 |
|
|
o make basedn configurable |
143 |
|
|
o introduce host-to-basedn-mapping |
144 |
|
|
o provide additional fallback basedn |
145 |
|
|
o maybe additional permissions for folder-autocreation |
146 |
|
|
o rework regexes in Torus::Driver::ldap |
147 |
|
|
o spaces in ou's? |
148 |
|
|
o utf8-encoding for dn's in ou's |
149 |
|
|
o also in other property-names (besides the attributes)?! |
150 |
|
|
o ä, ö, ü |
151 |
|
|
o Insight: |
152 |
|
|
o cclient.dll |
153 |
|
|
o InsightConnector.dll |
154 |
|
|
o folder-mapping |
155 |
|
|
o leerzeichen (non-word-chars) do not work inside foldernames |
156 |
|
|
o regex fails: |
157 |
|
|
o introduce some "highlevel-splitting" of ldap-addresses |
158 |
|
|
o fix problems occoured 2003-01-06/07 @barschwaechter: rules, access to mapi, etc. (see email) |
159 |
|
|
o do a _true_ sync! (no delete/add) |
160 |
|
|
o handle folder-mapping/-creation completely _before_ continuing with single entries |
161 |
|
|
o create non-existant and stuff.... |
162 |
|
|
o timestamp log-entries |
163 |
|
|
o add fieldname-context to ldap_errors.log |
164 |
|
|
o regeln für cn/dn - build |
165 |
|
|
o wenn "sn" gesetzt, dann nimm "sn" als "cn" |
166 |
|
|
o wenn "givenname" gesetzt, dann füge zu "cn" hinzu (bisheriger "build"-Vorgang) |
167 |
|
|
o wenn "sn" leer, dann nimm stattdessen "FileAs" als "cn" und ab [Debug Level=1]info |
168 |
|
|
o wenn "FileAs" leer, dann nimm stattdessen "FirstName" und ab [Debug Level=1]info |
169 |
|
|
o wenn "FirstName" leer, dann nimm stattdessen "CompanyName" und ab [Debug Level=1]info |
170 |
|
|
else ab [Debug Level=1] Warn: |
171 |
|
|
"Couldn't build DN/CN cause neighter SN/FileAs/FirstName/CompanyName does exist." (Should not happen). |
172 |
|
|
o collision checks!!! |
173 |
|
|
o convert date-fields |
174 |
|
|
o detect must-not-have characters in dn: |
175 |
|
|
+ replace "+" through "&" |
176 |
|
|
o replace "," through "" [Kill] |
177 |
|
|
o replace "ô" through "" [to UTF8] |
178 |
|
|
o enhance mechanisms to talk to OLE: |
179 |
|
|
o use "->EnumAllObjects" |
180 |
|
|
o use "->FreeUnusedLibraries" |
181 |
|
|
o use "->LastError" |
182 |
|
|
o encode "dn" with utf8 |
183 |
|
|
o "member" is empty!!! |
184 |
|
|
o free resources while processing |
185 |
|
|
o Outlook (OLE) |
186 |
|
|
o Perl (Variables, Objects) |
187 |
|
|
o LDAP-Server (Handle) |
188 |
|
|
</PRE> |
189 |
|
|
<PRE> |
190 |
|
|
|
191 |
|
|
o for Horde: |
192 |
|
|
o helper: some kinda "genSchema.pl" |
193 |
|
|
o app: LDAP-Browser</PRE> |
194 |
joko |
1.2 |
<PRE> |
195 |
|
|
o split 'syncOutlookContacts.ini' into 'torus.ini' and 'outlook2ldap.ini' |
196 |
|
|
o 'syncOutlookContacts.pl' reads 'outlook2ldap.ini' and runs 'feed.pl'</PRE> |
197 |
joko |
1.1 |
<P> |
198 |
|
|
<HR> |
199 |
|
|
<H1><A NAME="ideas">IDEAS</A></H1> |
200 |
|
|
<PRE> |
201 |
|
|
o acl based permissions (use Data::ACL?) |
202 |
|
|
o combine Torus::Xyz with Device::Xyz somehow? |
203 |
|
|
o assure published stuff contains no client-specific informations (HMI, ...) |
204 |
|
|
o CPAN's AppConfig is still needed for now (could this be changed? e.g. using App::Config?) |
205 |
|
|
o if not, just include it below "libs" or install "nmake" (through integrated setup) before configuring CPAN |
206 |
|
|
(if you already have, do "perl -MCPAN -eshell" and "o conf init" to redo configuration) |
207 |
|
|
o rework folder-mapping to use xml |
208 |
|
|
o rework field-mapping to use xml (Data::Transfer::Sync!) |
209 |
|
|
o rework declaration of while-transfer-rules and after-transfer-patches to xml |
210 |
|
|
o example of a "while-transfer-rule" |
211 |
|
|
o build "dn" from "cn/sn" |
212 |
|
|
o must have "sn" |
213 |
|
|
o if no "sn" given, just use "Vorname" |
214 |
|
|
o don't allow some special characters inside "dn": '+' seems to get translated to '&' at somewhere in code |
215 |
|
|
o example of a "after-transfer-patch-rule" |
216 |
|
|
o copy contents of field "x" to field "y" to nivelate(?) access from ldap-query-engines we don't have access to! (the source!) |
217 |
|
|
(e.g. query-/search-engines in commercial products like "MS Outlook 2000|2002|Express", |
218 |
|
|
which also don't have _any_ mechanism to parametrize them) |
219 |
|
|
o write papers about networking (computers _and_ small/embedded/electronic devices (atmel, c-control)) |
220 |
|
|
o janosch: how to control arbitrary devices via personal computers _and_ standalone circuits in parallel! |
221 |
|
|
(using Device::SerialPort and Conrad C-Control together) |
222 |
|
|
o implement infrastructure(s) |
223 |
|
|
o actually handle folders (check, autocreation) completely _before_ starting to sync/process items/entries! |
224 |
|
|
o provide easy-to-access shell-interface to LDAP (e.g. via Xyz::Xyz or (maybe later) "oedit.pl") |
225 |
|
|
o this removes the need for the currently used Java-based Ldap-Client (which will stay more comfortable - of course) |
226 |
|
|
o navigate via "cd" through containers, show items/entries via (e.g.) "dump"(?) and stuff... |
227 |
|
|
... the interactive feeling/behaviour is similar to navigating in a filesystem via a commandline-interface (CLI) |
228 |
|
|
o sum up "must-have" features of known synchronization-tools for (e.g.) ... |
229 |
|
|
o s25@once |
230 |
|
|
o siemens custom sync (S45Sync.exe?) |
231 |
|
|
o Nokia Communicator |
232 |
|
|
o SyncML (it's not a device from a manufacturer, it's actually a XML-standard) -> sync4j@sourceforge |
233 |
|
|
o use news (the nntp-protocol) for journalling-functionality |
234 |
|
|
o have mapping stored inside ldap as well</PRE> |
235 |
|
|
|
236 |
|
|
</BODY> |
237 |
|
|
|
238 |
|
|
</HTML> |