*Free. *Saturday, October 24, 2009... 10am to 4pm at the
University of Advancing Technology in Phoenix (Baseline Rd. just west
of I-10).
A full day of presentations and participation on free software.
More info: http://www.ableconf.com/
Update: A good time and a good place to meet like-minded folks and get
up to speed on new technology, and even a few "Aha!" moments on how to
do things better. See you next year!
For printing multiple pages, mpage
comes in handy. It produces 2-up or 4-up Postscript from plain text
files. (Debian package: mpage) Curiously, "mpage --help" or any of
the standard pleas for help don't work; use: mpage -x
Example
use:
mpage -H -f myfile.txt
Which enables headers (-H) and line folding (-f).
If you like this, please consider donating to fund further
development.
After years of
frustration waiting for the Mozilla Thunderbird folks to add the
ability to edit LDAP address-books, and years of frustration with the
pigheadedness and brain-damagedness of LDAP server software, I decided
to write my own little pseudo-LDAP server.
This is a proof of concept only and not meant for production use yet.
Here it is, in Perl: generic-ldap-0.1
It merely reads in
a Thunderbird address book using a module from CPAN
or an LDIF file, using another module from CPAN
or anything else you care to write a plugin for (put it in the
Plugins/ subdirectory)... there's a start on a Wordpress module, or
you could write one for OSCommerce, or... the sky's the limit
and shares that out via the LDAP protocol, using the Net::LDAP::Server
module. Writing this meant seeing what the various email clients
(Thunderbird, Evolution, KMail) actually wanted to see.
The nastiest, most brain-damaged part of LDAP is the non-standard field
(attribute) names. None of these programs agree on what to call "home
street address" versus "work street address," for example. What a
nightmare. My little server tries to remedy this by copying what it can
suss out, into every possible field that your email client might be
looking for.
What needs to be done yet?
Better (or any) support for Outlook and Outlook Express, both
reading their address-books and talking what they want to hear in
terms of LDAP
Security. Right now there isn't much, beyond plaintext password
authentication for each resource. You probably want to run this
behind a firewall until there is support for TLS or SSL or
something else. Perhaps another set of Plugins.
Support for reading IMAP address books, vCards, etc.
Support for more complex queries. Right now it only understands
"OR" queries. Again, possibly as another set of Plugins.
This is written as an extensible system with Plugins. At the moment it
fills my internal needs -- specifically, sharing a single Thunderbird
address-book inside an office.
Please contact me if you would like help adding features or additional
development.
William Lindley, wlindley.com, 480.947.6100
Here's a little script you can add to your crontab, to
periodically email the administrators of each mailman mailing list both
the list of current members and the mailing-list's full configuration.
This gives you both an audit trail of membership and the ability to
restore mailing lists from the backup files in case your webhost goes
awry.
mailman-reminder
(Perl script)
Edit root's crontab with the command
# **
crontab -e**
and add something like this:
0 3 1 * * perl /root/mailman-reminder.pl
Which will run the script at 03:00 on the first day of each month.
Dear Mr. Ranellucci,
I am writing an LDAP server using this module and have found that
Evolution -- at least version 2.26.1 on Ubuntu -- transmits an
abandonRequest after each searchRequest. Because there is no defined
return value for an abandonRequest, the Perl module closes the socket
and Evolution fails thereafter to communicate with the server.
The following patch resolves the bug, by properly checking whether the
request -- NOT the response type -- is defined, and only hanging up
in the event of an undefined request. The patch also only sends a
response for defined response types -- of which abandonRequest has
none.
With this patch, a server created with the Net::LDAP::Server module
functions properly with Evolution.
I hope you will agree to incorporate this into the module and update
CPAN accordingly.
Sincerely,
\/ William Lindley http://www.wlindley.com +1 480.947.6100
Patch follows. On my system, the appropriate file is:
/usr/local/share/perl/5.10.0/Net/LDAP/Server.pm
---begin--- ` 82,83c82,85 < my $respType = $respTypes{$reqType} < or
return 1; # if no response type is present hangup the connection --- >
if (!defined $reqType) { > return 1; # unknown request type - hangup
connection > } > my $respType = $respTypes{$reqType}; 141,142c143,146 <
and now send the result to the client < print $socket
&encoderesult($mid, $respType, $result); --- > # and now send the
result, if any, to the client > if (length($respType)) { > print
$socket &encoderesult($mid, $respType, $result); > }`
---end---