netfrag.org . Pad . Joko-2002-09


SyncingOutlookContacts
A) use Win32::OLE to read contacts from Outlook and Net::LDAP to write them to an LDAP server (win32 only)
     problem: Net::LDAP might not work natively on win32.
     solution: transfer data from win32-system to "remote hub" first
B) - implement RPC server (daemon, listener) to recieve data via network (TCP Sockets)
    - use Win32::OLE to read contacts, but an RPC mechanism (SOAP::Lite, XMLRPC, PIRPC) to send data to the remote daemon
    - example hack implemented ( syncOutlookContacts.pl, (Bundle::)Torus) ...
       ... see /home/amo/chronology/2002-07-30 janosch - outlook2ldap - SyncingOutlookContacts
C) handle data-transfer via files (write - transfer - read) e.g. via Net::SCP or Net::SFTP instead of using an RPC mechanism

Data::Storage
We have DBI (Databases -> Tables -> Rows -> Columns).
We have Tangram (Databases -> ObjectSets -> Objects -> Properties AND (true) Relations).
We have Filesystems (Directories -> Files).
We have Files (Lines -> Seperators, Lines -> FieldLengths; but also (maybe): structured and unstructured, row-based or not).
We have some more stuff to store data to.
What about having one single convenient access to them? (just access! no internals! we can't make unpossible things possible!)

Writing COM Components with Perl?

SyncingOutlookContacts
D) "the other way round" or "turning inside out"
     - access Outlook via COM, don't use Win32::OLE directly but a wrapper to call to COM objects from a remote host
     - do RPC call *to windows*, not *from windows* (via IIS)
        - if IIS is not acceptable, code in .vbs-scripts to execute locally (win32-native!)
      1) 4S4C aka Simon's SOAP Server Services For COM
          http://www.4s4c.com/4s4c/
          This is a COM component that will invoke methods on COM objects (via any automation compatible interface), 
          from a SOAP request message, and return the results as a SOAP response message.
      2) Passing Recordsets via HTTP [...]  (ability to access a DCOM server over HTTP)
          http://www.avdf.com/oct98/art_vb001.html
     => problem(s):
            client exposes data; often not possible; if possible: high risk!; 
            else: security mechanism needed => complex; maybe good for "peer-to-peer-office"
            more specific:
              1. needs 3rd-party component
              2. requires modification to registry to be able to expose via IIS
E) integrate directly!
    - build COM component and plug in to Outlook which speaks directly to a LDAP-server
    - (originally the first idea, but we thought "integration sucks" 
            (and in fact it does - the flexibility through (perl-)scripting would be lost))
          but: a) maybe better when independent of perl and b) problem solved:
    - problem: no free ldap-library / component for win32
      - This was the problem... first. 
      - Finally worked out solution via Microsoft Active Directory client libraries (activeds.tlb) and ADO (msado15.dll).
    - see cvs@netfrag.org:/nfo/vb/ActiveDirectory/*

How to move/migrate (Sub-)Trees to another location inside a master cvs-repository?
How to move/migrate (Sub-)Trees to another location inside a local cvs-tree?

Use ActiveDirectory as common LDAP server?
(expand Schemas, etc.)

Syntax for calling outlook.exe (in C:\Programme\Microsoft Office\Office)
  - see Registry: HKEY_LOCAL_MACHINE\SOFTWARE\Clients
  - jumps to the Calendar
      OUTLOOK.EXE Outlook:Calendar
  - composes Email
      OUTLOOK.EXE -c IPM.Note /m "%1"
  
Active Directory
  see Registry: HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\ADs
  
see Registry: 
  - HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\DataAccess\RootBinder
  - HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Exchange
  
netsh

iptables.pl for win32 via netsh?

rundll32.exe %SystemRoot%\System32\mshtml.dll,PrintHTML "%1"

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\W3SVC

sshd on win32?

C:\Programme\Adobe\Acrobat 5.0\Reader\JavaScripts

HKEY_CLASSES_ROOT\Drive\shell
HKEY_CLASSES_ROOT\Drive\shellex

Rsync Here:
HKCR,Directory\Shell\RsyncHere
HKCR,Drive\Shell\RsyncHere

- gpl-clone of Component Software RCS Document Explorer (WinRCS)

- gpl-clone of sync2nas

- Linux - show users with open files
  
- arch: mirror (& notify) ftp://regexps.com/pub/src/

- subversion: http://subversion.tigris.org/

- xdelta: http://www.cs.berkeley.edu/~jmacd/xdelta.html

- prcs: http://prcs.sourceforge.net/
   merging: http://prcs.sourceforge.net/merge.html

- bitkeeper: http://www.bitkeeper.com/index.html

- STONE -> shape ( http://swt.cs.tu-berlin.de/~shape/ )

- revision control / configuration management:
   rcs  ->  cvs  ->  xyz  
                                    -> subversion
                                    -> prcs
                                    -> opencm
                                    -> arch

- LDAP Proxy ?
   - from: http://www.winntmag.com/Articles/Index.cfm?ArticleID=7281&pg=2
   - ILPS (Innosoft LDAP Proxy Server)
     - vendor: Innosoft
     - url: http://www.innosoft.com/press/ilps-press.html
   - MLPS (MaXware LDAP Proxy Server)
     - vendor: MaXware Benelux
     - url: http://www.maxware.no/ ???
     - VBScript capabilities
   - DBA (Directory Boundary Agent)
     - vendor: NEXOR
     - url: http://www.nexor.com/
     - more info: http://www.software-aus.com.au/pdf/dba.pdf

- write & publish: adsi & slapd interop

- distributed queries, heterogeneous joins

- Tangram: +(Unified Modeling Language) => Schema2UML, UML2Schema

- BetSlip -> AbstractContainer

- http-analyzer:
  - trace-mode
  - filters:
    - GETs & GET-Destinations
    - POSTs & POST-Destinations
    - 
  - trail-mode
  - dump-mode
  
- CMS 3000:
   - ease and features of TWiki
   - concepts (embedding code) and features (output formats!) of 
      - XPC http://xpc.4arrow.com/   ( ECM in a CMF )    Xpc stands for eXtensible Page Creation
        see http://dev.4arrow.com/documentation/index.xpc?op=view_doc&docid=2&group_id=1
      - PHPortal http://www.advogato.org/proj/PHPortal/    ( http://dev.4arrow.com/ )
      
- definitely collect all features and gui markups of many different intranet systems, 
  try to combine the best and under-layer it with mysql -> perl -> tangram -> whatever
  
- alerts via rss -> FeedReader !!!
- alerts via sms/pager

- write browser like metabrowser, but more generic rss focused, ie4 / mozilla embedded => perl Tk ;)

- document firewall/accounting setup/configuration on h1.service.netfrag.org

- write WWW::Search - modules

- extend Infobot

- tools for filesystem abstraction
  - coda - CODA advanced distributed filesystem: http://www.coda.cs.cmu.edu/
  - perlfs:
  - intermezzo: http://www.inter-mezzo.org/
  - sqlfs: http://no.spam.ee/~tonu/index.php
  - lufs - Userland Filesystem: http://lufs.sourceforge.net/
  - LinFS/SQLFS: http://www.relex.ru/~yarick/
  - Userfs: http://www.goop.org/~jeremy/userfs/
  - orbit: http://orbit-resource.sourceforge.net/
  - perlfs: http://dd-sh.assurdo.com/perlfs/
  - HTTPFS: 
  - HTTP-VFS - HTTP Virtual File System: http://okmij.org/ftp/HTTP-VFS.html
  - HTTPFS in about 200 lines of C: http://rpmfind.net/linux/httpfs/messages/msg00018.html
  - davfs - WEB-DAV Linux File System(davfs): http://dav.sourceforge.net/
  - podfuk - POrtable Dodgy Filesystems in Userland (hacK) version 2: http://atrey.karlin.mff.cuni.cz/~pavel/podfuk/podfuk.html
  - AVFS - A Virtual File System: http://www.inf.bme.hu/~mszeredi/avfs/
  - Hostfs: http://user-mode-linux.sourceforge.net/hostfs.html
  - arla: http://www.stacken.kth.se/projekt/arla/
  
- debian news ( http://www.debian.org/News/2001/ ) to RSS

- netfrag.org - announce:
  - legolas
    - LAMP
    - obs3rv3r
  - hetzner1
    - FreeVsd
    - h1.service.netfrag.org
    - UML
    - infobot
    - lufs
  
- build visual designer for Tangram-config-file

- Perl::SSL in pure perl (Perl::SSLPP)

- Java:
  - J2EE
  - Enterprise JavaBeans
  - opensource EJB Server
    jBoss: http://www.jboss.org/x
    OpenEJB: http://openejb.sourceforge.net/
  - misc
    - http://castor.exolab.org/
    - struts: http://jakarta.apache.org/struts/
    
- research into ORBs! OpenORB or stuff

- check out unsharp: http://sourceforge.net/project/showfiles.php?group_id=62435&release_id=110903

- check out davfs2: http://dav.sourceforge.net/

- Tangram::ACL

- gui editor (vb?) for dada.perl.it

- finish WWW::SMS::GsmboxDE

- monitor startup- and shutdown-phases of virtual hosts to provide tighter notification about errors/success
  for now, notification is only triggered by netsaint-check, 
  wrapped out to /home/service/bin/notify/hostalert via "notify-by-sms-host-global"-command
  
- umltools:
  - mungle config out to /etc/umltools or something like that
  - throttle host
  - better split up between "prepare patches" and "apply patches" (which requires mounting)
  - do "chown -R service.service quepasa/" after building
  - patch twiki-configs and content! ("test.helonet.org"!)
  - patch webalizer config ("Default-UML woody-stable")
  - delete webalizer data
  - change mrtg-settings, delete data
  - change home-dir of "bd" from "/dev/null" to "/root"
  - change default-group of "bd" from "<empty>" to "root"
  - change root-password from "root" to something weird
  - is it possible to even "unset" root's password? yes! by deleting pass in "/etc/shadow", 
    build as option "--close-root" or stlt
  - setup: configure paths to programs set in UML/Control.pm
  - make username "bd" configurable
  - implement notification and alerting
  - new proposal for replacing "askCmd($usermessage, $command)"
     ask $command, $usermessage, $result;
  - inject ssh-key for user "service" to remote user's ("bd") ~/.ssh-directory
  - "ip-only" configuration
  - implement gui!!! (http/html?)
  - automatic-restart: check if host is already "up-and-running" only start if it's dead
  
  
  
- tripwire!!!

- SAML 1.0
  XML-Based Security Services TC (SSTC) Security Assertion Markup Language 
  http://www.oasis-open.org/committees/security/
  
- SSTC:
  TC = Transport Container?
  
- using DBI / Tangram / anything with SAML 1.0

- setup nagios: http://www.nagios.org/

- WWW::SMS::WebDE

- mirror psl.no-ip.com to netfrag.org/~rabit/psl/

- h1.service.netfrag.org: add joko's number to alerting (via WWW::SMS::WebDE)

- php-db-library for orthogonal persistency

- introduce naming, specs and *handles* to netfrag.org, so we have real names, nick names and handles

- (internal) project: inventur (inventory?) and information distribution

- intranet gui (developer):
  - create project
     - technical documentation (DocBook)
     - slideshow (SlideML)
  - write article (DocBook)

- implement generic system -> user feedback (via TWiki-Notify-Page, email, ...)

- TWiki & Xopus

- h1.service.netfrag.org: alerts & notifications via RSS

- linux: grsecurity http://www.grsecurity.net/

- implement generic ClassBuilder with UML-support

- build ci (html-frame (easy! simple!) and stuff for netfrag.org / joko@netfrag.org

- web service: http://books.agmweb.ca/

- get into UserLand!

- tune vbox3 (& perhaps raccess4vbox3) to achieve david-functionality ( http://www.malte-wetz.de/ )

- win32: generic gui-automation (entering license information)

- glimpse, eglimpse!

- Syndicated Content (syndicate.netfrag.org)

- sql -> csv Layer for PHP

- Revisioning for Tangram: "Track Changes/Modifications"

- home2web - basics
   - repository (anything is a repository)
   - items need metadata
   - metadata (shows up before / after content): 
      e.g. before: title, description, author, date
      e.g. after: permissions (acls), revisions, <actions>
   - scanner (reads metadata/content)
   - trailer (finds semantic information from metadata *and* trailrecorder, 
   - publisher (writes abc to xyz)
   - trailrecorder (logs user-interactions)
   
- "The most syndicated site."?

- datavision ( http://datavision.sourceforge.net/ )
  - Import from Crystal Reports
  - german translation
  
- SandStorm

- mir

- RSS.Aggregator in Perl

- Das StahInetz stülpt sich Über uns (Enzensberger)

- Der SCHOCKWELLENNREITER" von John Brunner
- John Brunner's novel "The Shockwave Rider"

- IMC - IndyMediaCenter
  - IMCslash
  - active
  - sandstorm
  - mir
  
- integrate web.archive.org to Revisioning/History: "Look at the past"

- pivot ( http://www.mijnkopthee.nl/pivot/ )

- supervise suite: http://www.ailis.de/~k/debian/

- mailing lists: scientific, computing, politics, (net-)culture and ...

- handwriting the web with Adobe SVG

- win32: print to postscript => pop up ghostview/win32 and show document
  => after - print - preview (proof)
  
- workflow - recording, break down to
  - who?
  - when?
  "a human can do only one thing at once":  filename: "<user>-<timestamp-by-ms>"
  
- sasl for auth
- tls for transport
- ldap for acls

- rss / rdf for disabled?

- DAV
  1. maus-klick-zugriff, win32-anwendungen
      ok. geht. wahrscheinlich frontpage-client-api
  2. programmatischer zugriff, kommendozeile (copy)
     shell-wrapper um frontpage-client-api (HTTP PUT)
  3. für alle (alten) windows-programme
     echte, gscheite win32-filesystem implementierung (mount)
     evtl. schon mit cygwin möglich?

*.chm for pasamuf

Directory Servers / LDAP Server Products
- OpenLDAP
- Netscape Enterprise Server
- Sun ONE Directory Server 5.1 (formerly AOL iPlanet)

- autoadmin

- fax2pdf

- fax-solution(s)
  - PHPFax ( http://phpfax.sourceforge.net/ )
    project description:
      PHP Fax is intended to be a cross-platform group fax application.  
      The system conists of a back-end server and client software.  
      The back-end consists of PHP and Apache which provides the cross-platform user interface.  
      A PHP shell script drives E-Fax, which is a rather simple command-line fax application for *nix.  
      PostgreSQL is used for the fax que.  The whole system really just "ties" other 
      open-source software together to create a more complete system. 
    short, but detailed:
      - local executed javascript (WSH, Windows Scripting) copies file directly to hylafax queue via samba-share
      - printer integration with redmon
  - w2hfax ( http://w2hfax.sourceforge.net/ )
    project description:
      W2hfax is a windows client for hylafax.
      The client is based on a active-x library that is written in python. 
      The active-x library can also be used to send fax in word or excel, 
      or to integrate the functions in your project. 
      The windows client itself is written in visual basic.
    short, but detailed:
      - COM-object (written in python) communicates with hylafax-server via tcp-socket
      - printer integration with redmon

- modifications to w2hfax

- "David for Linux" ein Stück näher?

- xmlrpc-api for hylafax & vbox3
  - apache-access and other features!
  - callbacks?
  - extend or replace?
  
- mod_dav on Apache2 on win32
  - "/dav"-ie-issue
  
- LinuxWare: provide NetWare-like installation for Linux

- COM-server in Perl?

- "Interacting with COM-objects" (on win32 and linux)

- screen -d -m ./donkey -

- fax2pdf! (like web.de)

- php (annoying): "One Space and you're lost."

- tail here

- RPC::XML::StatINC

- Verteiltes System:
  - Storage-Backend mit abstrakt-spezifischer Datenbankschnittstelle
  - Einstellbare Synchronizität für Transaktionen (synchron/asynchron)
  - Einigermassen modularer Aufbau
  - Kein Transaktionsmonitor oder "ähnliche Dinge" (vorerst)
  - Programmierbare Methodik der Transaktionen/Messages
    - rpc: transmit message via ORB or XML (SOAP, XMLRPC, WDDX)
    - sqldb-table: enqueue message: writer -> sqldb ("message-queue") -> reader
  - Client-Schnittstelle ist immer rpc-artig, sei es direkt ($obj->method) oder indirekt ($rpc->call("method"))
    - der zugrunde liegende MessageQueuer sollte mindestens folgende Metadaten liefern:
       - capabilities:
         - synchronizity(?): synchron/asynchron/both
       - settings:
         - synchronizity(?): synchron/asynchron
         - timeout: seconds, milliseconds?, nanoseconds?
    - MessageQueuerSession sollte - falls möglich - über den Fortschritt der Transaktion Auskunft geben können
  - Abgestufter Timeout für Transaktionen: 
     - erster Timeout heisst möglicherweise nur, dass das System aussergewöhnlich unter Last steht
     - Indikator für nötiges Hardware-Upgrade: Häufigkeit dieses ( ^^^ ) Zustandes innerhalb eines Zeitraums
  - Soll beliebigen Nachrichten-Austausch zwischen Sprachen ermöglichen (lightweight - heavyweight)
  
- TWiki:
  - mods:
    - LittleProject
    - LargeProject
    - IntroSite
    - BigSite
  - funcs:
    - PrintToTWiki
    
- Master-Database / Repository
  - Metadata (Ablage-Informationen)
    - various Categories (Trove, etc.)
    - see also, references
  - Collections (Sammlungen)
 
- Repository - Registry
  - repository provides metadata (public)
    - name
    - description
    - logical (base) location
    - physical (base) location (filesystem-path, database-dsn)  (protected)                 -> use Data::Locator?
    - access-method
      - search-methods (fulltext, option-specific, semantic)
      - search-options for fulltext search (deepness-level, follow)
      - search-options for option-specific search (search-fields and their descriptions)    -> get from database-schema?
      - all other method-capabilities (CRUD)
  - make repositories "migratable" - at least by location (protected)
  
- public info (e.g. info.netfrag.org)
  - lowlevel
    - domains (domain-level)
    - sites (site-level)
  - highlevel (entry points)
    - important pages below site-level
    - certain users from user-level ("/~username")
    - configured/registered repositories
      - repository = public accessible larger information space
      - information space = content (e.g. netfrag.org-site) or media (e.g. software-collection)
      - e.g. different TWikis per site, per user
      - 
  
- publishing system
  - auto-linker, link-suggestor (TWiki "mark possible WikiWords as links?")
  - outline source-code or other special text with blocks or vertical bars (different colors)
  - outline "freshness" with vertical bars (different colors)
  
- PEAR::DB::Tangram (for php)
  - sync mysql's native
  - orthogonal inheritance in php
  - no messaging/encapsulation needed any more
  
- distributed/failover (needs)
  - pull the plug!
  - frontend must not break when backend goes down completely
    - frontend must be able to deny actions the backend is needed for or it may queue these requests if acceptable for end-user (ask!)
    - frontend does not have to recognize, but if it can do, it may notify end-user and pause connection-attempts to backend
    - backend has to announce if it comes up again so frontend can resume sending requests
  - data must not break when frontend crashes
    - backend must be able to rebuild frontend
    
- From Frontend to Backend ...

- repository for "not otherwise categorized words/phrases"
    -> google for it
    -> categorize it
  
- home2web
   -> home-content to web, web-technology to home
   
- php templating
  - general
    - http://www.php.lt/benchmark/
  - implementations
    - PEAR::HTML::IT
    - PEAR::HTML::ITX
    - smarty: 
        - home: http://smarty.php.net/
        - about: 
          - http://www.webmasterbase.com/article/837
          - http://www.phpinsider.com/benchmarks/
      Smarty is a PHP template engine written by Monte Ohrt and Andrei Zmievski. 
      Yet another template engine you say? The authors (and I too) would disagree. 
      Smarty is different from the rest of the pack. What differentiates Smarty from 
      other template engines like FastTemplate and patTemplate is that Smarty compiles 
      your templates into PHP scripts, eliminating the overhead incurred in parsing 
      the templates every time they're accessed. This makes Smarty very scalable 
      for large applications and high-traffic Websites 
      ...and if that didn't make any sense to you, just take it that Smarty is very fast and 
      would work well in stressful and high-traffic conditions! 
    - FastTemplate: http://www.thewebmasters.net/php/FastTemplate.phtml
    - patTemplate
    - phemplate: http://pukomuko.esu.lt/phemplate/
    - XTemplate: http://sourceforge.net/projects/xtpl/
    - PHP Base Library (phplib): http://phplib.sourceforge.net/
    - TemplatePower: http://templatepower.codocad.com/
  
- php accelerators (php bytecode compiling/caching)
  - ionCube PHP Accelerator: http://www.php-accelerator.co.uk/
  - ionCube PHP Encoder: http://www.ioncube.com/encoder/
  - PHP Accelerator (Nick Lindridge) (freeware): http://www.php-accelerator.co.uk/
  - Alternative PHP Cache (Community Connect) (freeware): http://apc.communityconnect.com/
  - AfterBurner (Bware Technologies) (freeware): http://afterburner.bware.it/
  - Zend Accelerator (Zend) (commercial): http://www.zend.com/

- "touching html not any more (templating)" is not always possible to the extent
    - see e.g. http://wetter.msn.de
    - make compromises!

At a time when the number of venture-backed IPOs dropped dramatically — from 226 in 2000 to 37 in 2001, 
according to the National Venture Capital Association — one VC-backed company's IPO stands out. 
Verisity Ltd., a Mountain View, Calif.-based provider ...

dittohead wrote: 
and pros don't like newbies. 

- from: http://www.elysiun.com/viewtopic.php?t=5411&highlight=download
  dittohead wrote: 
  and pros don't like newbies. 
  SGT Squeaks writes:
  Not all pros dislike noobs, most pros I know try and help them. Its the wannabe pros that rag on the newbies.

----- Revision r1.1 - 26 Nov 2004 - 02:37 - Main.joko