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