ViewVC Help
View File | Revision Log | Show Annotations | Download File
/cvs/cvsroot/schmorpforge/genpage
Revision: 1.32
Committed: Mon Aug 4 07:18:28 2008 UTC (15 years, 11 months ago) by root
Branch: MAIN
Changes since 1.31: +91 -6 lines
Log Message:
*** empty log message ***

File Contents

# User Rev Content
1 elmex 1.1 #!/usr/bin/perl
2    
3     umask 022;
4    
5     mkdir "software.schmorp.de", 0755;
6     mkdir "software.schmorp.de/pkg", 0755;
7     mkdir "software.schmorp.de/img", 0755;
8     system "rsync -av *.jpg software.schmorp.de/img/";
9    
10     sub hdr($$) {
11     print <<EOF;
12     <?xml version='1.0' encoding='utf-8'?>
13     <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
14     <html xmlns='http://www.w3.org/1999/xhtml' xml:lang='en'>
15     <head>
16     <title>$_[0]</title>
17     <style type='text/css'>
18     body {
19     background: white;
20     color: black;
21     font-family: Arial, Helvetica, sans-serif;
22     font-size: 12pt;
23     }
24    
25     .bg-ede { background: url(/img/ede.jpg) no-repeat; padding: 20px; width: 100%; height: 82px; }
26     .bg-perl { background: url(/img/perl.jpg) no-repeat; padding: 20px; width: 100%; height: 194px; }
27     .bg-bluete { background: url(/img/bluete.jpg) no-repeat; padding: 20px; width: 100%; height: 148px; }
28    
29     a:link { color: #00f; }
30     a:visited { color: #008; }
31     a:hover { color: #800; }
32     a:active { color: #f00; }
33    
34     img { display: block; }
35    
36     tt { font-family: "Andale Mono", "Lettergothic", monospace; }
37    
38     th { border-top: 1px dashed #aaa; vertical-align: top; text-align: left; padding: 0.2ex; }
39     td { border-top: 1px dashed #aaa; vertical-align: top; text-align: left; padding: 0.2ex; }
40    
41     hr.footer { display: none; }
42     .footer { font-size: 8pt; border-top: 1px solid red; }
43     </style>
44     </head>
45     <body>
46 root 1.9 <p class='back'><a href='/'>Schmorpforge Ta-Sa Software Repository</a></p>
47 elmex 1.1 <h1 class="$_[1]">$_[0]</h1>
48     <div style="text-align: center; float: right; margin-left: 1em; margin-bottom: 1em">
49     <a href="http://www.deliantra.net/">
50     <img src="http://www.deliantra.net/images/deliantra.png" border="0" alt="Deliantra Free MMORPG" style="display: inline"/>
51     <br />
52     The free as in beer, liberal, code &amp; content retro-style graphical MMORPG :)
53     </a>
54     </div>
55     EOF
56     }
57    
58     sub ftr {
59     print <<EOF;
60     <hr class='footer'/>
61     <p class='footer'>
62     Contact for this page: <a href="mailto:schmorpforge\@schmorp.de">Marc Lehmann &lt;schmorpforge\@schmorp.de&gt;</a>.
63     </p>
64     </body>
65     </html>
66     EOF
67     }
68    
69     $_ = <DATA>;
70     for (;defined $_;) {
71     my ($name, @args) = split /\s+/;
72    
73     next unless $name;
74    
75     my $desc = "";
76     $desc .= $_ while (defined ($_ = <DATA>) and !/^\S/);
77     $desc =~ s/^(.*?)\n\s*\n//s
78     or die "malformed desc in $name: $desc";
79    
80     my $short = $1;
81    
82     $index{$name} = "<tr><th id='$name'><a href='pkg/$name.html'>$name</a></th><td>$short</td></tr>";
83    
84     open STDOUT, ">", "software.schmorp.de/pkg/$name.html"
85     or die "software.schmorp.de/pkg/$name.html: $!";
86    
87     if (grep /cpan/, @args) {
88     hdr $name, "bg-perl";
89     } else {
90     hdr $name, "bg-ede";
91     }
92    
93     print <<EOF;
94     <p class='short-desc'>$short</p>
95    
96     <h2>Blurb</h2>
97     <p class='blurb'>$desc</p>
98     <h2>Availability</h2>
99     <ul>
100     EOF
101 elmex 1.5 if (grep /git/, @args) {
102     print <<EOF;
103     <li><a href='http://git.ta-sa.org/?p=$name.git;a=summary'>Browse GIT repository '$name'</a></li>
104     <li>Read-only GIT checkout:<br />
105     <tt>&#160;git-clone http://git.ta-sa.org/$name.git</tt>
106     </li>
107     EOF
108     } else {
109     my $modules = $name;
110     $modules = "$1" if grep /modules\((.*)\)/, @args;
111 elmex 1.1
112 elmex 1.5 print <<EOF;
113     <li><a href='http://cvs.schmorp.de/$name'>Browse CVS module '$name'</a></li>
114 elmex 1.1 <li>Anonymous CVS checkout:<br />
115     <tt>&#160;cvs -z3 -d :pserver:anonymous\@cvs.schmorp.de/schmorpforge co $modules</tt><p />
116    
117     <small>
118    
119 root 1.30 <!--
120 elmex 1.1 <p>The warning
121     <b>cvs checkout: warning: cannot write to history file /schmorpforge/CVSROOT/history: Permission denied</b>
122     is expected and harmless, just ignore it. It simply means you have no write access to the repository.
123     </p>
124 root 1.30 -->
125 elmex 1.1
126     <p>The CVS server moved again on 2008-02-21, you can use the following
127     (untested) snippet to update your CVS checkout. Run it in the top level
128     checked out directory:</ br>
129    
130     <pre>
131     find . -name CVS | xargs -I% find % -name Root |
132     xargs perl -i -pe 's%:pserver:anonymous\\\@cvs.schmorp.de:636/schmorpforge%:pserver:anonymous\\\@cvs.schmorp.de:/schmorpforge%'</pre>
133     </p>
134    
135     </small>
136    
137     </li>
138     EOF
139 elmex 1.5 }
140 elmex 1.1
141     print "<li><a href='http://dist.schmorp.de/$name/'>File Releases</a></li>\n"
142     if grep /dist/, @args;
143     print "<li><a href='http://www.cpan.org/modules/by-authors/Marc_Lehmann/'>File Releases (CPAN)</a></li>\n"
144 elmex 1.5 if grep /cpan$/, @args;
145     print "<li><a href='http://www.cpan.org/modules/by-authors/id/E/EL/ELMEX/'>File Releases (CPAN)</a></li>\n"
146     if grep /cpan-elmex/, @args;
147 elmex 1.1 for (@args) {
148     print "<li><a href='http://lists.schmorp.de/mailman/listinfo/" . ($1 || $name) . "'>Mailing List '" . ($1 || $name) . "'</a></li>\n"
149     if /list\((.*)\)/;
150     }
151    
152     print "</ul>";
153    
154 elmex 1.4 if (my @files = grep $_, map /(cvs-co|cvs-pod|git-pod|git-co)\((\S+)\)/ && [$1, $2], @args) {
155 elmex 1.1 print "<h2>Additional Documents</h2><ul>";
156    
157     for (@files) {
158     my ($type, $arg) = @$_;
159    
160     if ($type eq "cvs-co") {
161     print "<li><a href='http://cvs.schmorp.de/$name/$arg'>$arg</a></li>";
162 elmex 1.4
163 elmex 1.1 } elsif ($type eq "cvs-pod") {
164     my ($file, $desc) = $arg =~ /(.*),(.*)/ ? ($1, $2) : ($arg, $arg);
165     $desc ||= "<b>Main Manual Page</b>";
166     print "<li><a href='http://pod.tst.eu/http://cvs.schmorp.de/$name/$file'>$desc</a></li>";
167 elmex 1.4
168 elmex 1.3 } elsif ($type eq 'git-co') {
169 elmex 1.4 print "<li><a href='http://git.ta-sa.org/$name/$arg'>$arg</a></li>";
170 elmex 1.5
171 elmex 1.4 } elsif ($type eq "git-pod") {
172     my ($file, $desc) = $arg =~ /(.*),(.*)/ ? ($1, $2) : ($arg, $arg);
173     $desc ||= "<b>Main Manual Page</b>";
174     print "<li><a href='http://pod.tst.eu/http://git.ta-sa.org/$name/$file'>$desc</a></li>";
175    
176 elmex 1.1 }
177     }
178    
179     print "</ul>";
180     }
181    
182     ftr;
183     }
184    
185     open STDOUT, ">software.schmorp.de/index.html";
186    
187     hdr "Package Index", "bg-bluete";
188    
189     print <<EOF;
190    
191 root 1.9 <p>This page briefly documents the Schmorpforge Ta-Sa Software Repository and
192 elmex 1.1 lists all projects available here.</p>
193    
194     <ul>
195     <li>All CVS Repositories can be found <a href="http://cvs.schmorp.de/">here</a>.</li>
196 root 1.9 <li>All GIT Repositories can be found <a href="http://git.ta-sa.org/">here</a>.</li>
197     <li>File Releases can be found <a href="http://dist.schmorp.de/">here</a> or on CPAN (for Perl modules).</li>
198 elmex 1.1 <li>All Mailinglists can be found <a href="http://lists.schmorp.de/mailman/listinfo">here</a>.</li>
199 elmex 1.11 <li>The Wiki can be found <a href="http://wiki.schmorp.de/">here</a>.</li>
200 elmex 1.1 </ul>
201     <p>Projects listed on this page:</p>
202     <table>
203     EOF
204    
205     print $index{$_} for sort { (lc $a) cmp (lc $b) } keys %index;
206    
207     print "</table>";
208     ftr;
209    
210     __DATA__
211     rxvt-unicode dist list(rxvt-unicode) cvs-pod(doc/rxvt.1.pod,) cvs-pod(doc/rxvt.7.pod,FAQ) cvs-pod(src/urxvt.pm,Perl) cvs-co(Changes)
212     rxvt-unicode is a clone of the well known terminal emulator rxvt.
213    
214     <p>If you have a problem, please have a look at the
215     <a href="http://cvs.schmorp.de/rxvt-unicode/doc/rxvt.7.html">FAQ</a>
216     <em>first</em>.</p>
217    
218     Its main features (many of them unique) over rxvt are:
219    
220     <ul>
221     <li>Stores text in Unicode (either UCS-2 or UCS-4).</li>
222     <li>Uses locale-correct input, output and width: as long as your system supports the locale,
223     rxvt-unicode will display correctly.</li>
224     <li>Daemon mode: one daemon can open multiple windows on multiple displays, which
225     improves memory usage and startup time considerably.</li>
226     <li>Embedded perl, for endless customization and improvement opportunities, such as:
227     <ul>
228     <li>Tabbed terminal support.</li>
229     <li>Regex-driven customisable selection that can properly select shell arguments, urls etc.</li>
230     <li>Selection-transformation and option popup menus.</li>
231     <li>Automatically transforming the selection once made.</li>
232     <li>Incremental scrollback buffer search.</li>
233     <li>Automatic URL-underlining and launching.</li>
234     <li>Remote pastebin, digital clock, block graphics to ascii filter and
235     whatever you like to implement for yourself.</li>
236     </ul>
237     </li>
238     <li>Crash-free. At least I try, but rxvt-unicode certainly crashes much less often than
239     rxvt and its many clones, and reproducible bugs get fixed immediately.</li>
240     <li>Completely flicker-free.</li>
241     <li>Re-wraps long lines instead of splitting or cutting them on resizes.</li>
242     <li>Full combining character support (unlike xterm :).</li>
243     <li>Multiple fonts supported at the same time: No need to choose between
244     nice japanese and ugly latin, or no japanese and nice latin characters :).</li>
245     <li>Supports Xft and core fonts in any combination.</li>
246     <li>Can easily be embedded into other applications.</li>
247     <li>All documentation accessible through manpages.</li>
248     <li>Locale-independent XIM support.</li>
249     <li>Many small improvements, such as improved and corrected terminfo, improved secondary screen modes,
250     italic and bold font support, tinting and shading.</li>
251     <li>Encapsulation of privileged operations in a separate process (improves security).</li>
252     <li>Optimised for local <i>and</i> remote connections.</li>
253     </ul>
254    
255     <br />
256     And its main <em>missing</em> features (which users request but are not (yet?) implemented) are:
257    
258     <ul>
259     <li>Complex script support, such as arabic or tibetian - more info is needed. (use mlterm)</li>
260     <li>Right-to-Left rendering - more info is needed. (use mlterm)</li>
261     <li>IIIMF (Intranet/Internet Input Method Framework) support. (use scim)</li>
262     </ul>
263    
264     <br />
265    
266     There is an IRC channel for discussion on <a
267     href='irc://irc.freenode.net/rxvt-unicode'><tt>irc.freenode.net
268     #rxvt-unicode</tt></a>.
269    
270     libptytty dist list(rxvt-unicode) cvs-pod(doc/libptytty.3.pod) cvs-co(Changes)
271     libptytty is an offspring of rxvt-unicode that handles pty/tty/utmp/wtmp/lastlog handling
272     in mostly OS-independent ways, so it's less of a hassle for you :)
273    
274     Mailing list and contacts are the same as for rxvt-unicode, above.
275    
276     gtkbfc cvs-co(README)
277     Gtk+ bash file chooser replacement.
278    
279     <b>gtkbfc</b> is a hack that replaces the dreaded, slow and hard-to-use GTK+
280     file chooser by a rxvt-unicode window with a little script that lets you use
281     readline tab-completion to enter filenames.
282    
283     Again, its a dire hack and will not work with all programs. It does work
284     for gimp, firefox, gedit at least, though.
285    
286     CV cpan cvs-pod(bin/cv,) cvs-co(Changes)
287     Gtk2::CV is a perl module that implements an image viewer.
288    
289     It comes with its own demo app, named <tt>cv</tt>, which is loosely
290     modeled after the classic <tt>xv</tt>, although it displays images much
291     faster than the great original. Stable releases are also found on CPAN.
292    
293     kgsueme cpan list(kgsueme) cvs-co(Changes)
294     This perl module is about reverse engineering the
295     <a href="http://cvs.schmorp.de/kgsueme/doc/protocol.html">protocol</a>
296     (<a href="http://cvs.schmorp.de/kgsueme/doc/protocol.xml">xml source</a>)
297     of the popular <a href="http://kgs.kiseido.com">Kiseido Go Server</a>.
298    
299     It features a sample Gtk+2 client (<a
300     href="http://kgsueme.schmorp.de/screenshot.jpg">screenshot</a>), a gtp
301     and a igs interface. It mostly focuses on documenting the protocol and
302     delivering a stable reference implementation which makes it easy to write
303     your own clients, bots and so on. It also contains Gtk2 modules for
304     KGS-independent rendering of beautiful Go boards. For a introduction to
305     the game of go, look <a href="http://playgo.to/interactive/">here</a>.
306    
307     Net-Knuddels cvs-pod(Net/Knuddels.pm,)
308     This perl module provides an API for group communications using the
309     <a href="http://www.knuddels.de/">www.knuddels.de</a> protocol. It is outdated
310     and only provided as reference.
311    
312     This module implements the knuddels.de chat protocol. Since it was created
313     the protocol changed in unknown ways, so this module no longer works. It is
314     provided as reference, though, in case the protocol didn't change much,
315     so one can learn about the protocol.
316     It could be used to write Knuddels clients, bots and even servers
317     (although the latter doesn't make much sense, the protocol is rather
318     ugly. If you want to implement your own group communication server, use
319     IRC instead).
320    
321 elmex 1.5 Net-IRC3 cpan-elmex cvs-pod(lib/Net/IRC3.pm,) cvs-co(Changes) cvs-co(samples/netirc3cl) cvs-co(samples/netirc3)
322 elmex 1.1 This module provides an alternative to the Net-IRC and Net-IRC2
323     modules. Its design rationale is offfering a 100% non-blocking
324     callback-based interface, RFC-compliant parsing and a lightweight
325     approach to modularity and reusability.
326    
327     Net-IRC-Server cvs-pod(Net/IRC/Server.pm,)
328     This module provides a simple API for handling the IRC Protocol
329     aiming at implementing lightweight IRC-Servers.
330    
331     PApp-SQL cpan cvs-pod(SQL.pm,)
332     Absolutely easy yet fast and powerful SQL access.
333    
334     This module wraps the DBI prepare/bind/execute calls into a single "sql_exec" call,
335     complete with statement caching, so you get the efficiency of prepare, the safety
336     of using placeholders and the speed of bound result values in a simple call.
337    
338     Example:
339    
340     <pre>
341     my $st = sql_exec \my ($id, $name),
342     "select id, name from db where name like %",
343     "pfx%";
344     while ($st->fetch) {
345     print "$id $name\n";
346     }
347     </pre>
348    
349     libcoro cvs-co(README) cvs-co(coro.h)
350     This C-library implements coroutines (cooperative multitasking) in a
351     portable fashion.
352    
353     As long as your system implements the <tt>ucontext</tt> (Unix) or the
354     older <tt>sigaltstack</tt> interfaces it should work out of the box, with
355     minimal configuration (it consists of only a single <tt>.h</tt> and a
356     single <tt>.c</tt> file). It is known to run on a wide variety of unix
357     systems (SunOS, IRIX, GNU/Linux, HP-UX) and also on Windows, does not use
358     any assembly language and is architecture-independent.
359    
360 root 1.13 deliantra/server cvs-co(README) cvs-co(Changes) cvs-co(COPYING.Affero)
361 elmex 1.1 The <a href="http://www.deliantra.net/">Deliantra</a> game server.
362    
363     Follow the link to <a href="http://www.deliantra.net/">Deliantra</a> for background info.
364    
365 root 1.13 deliantra/maps cvs-co(Changes) cvs-co(COPYING.Affero)
366 elmex 1.1 The <a href="http://www.deliantra.net/">Deliantra</a> game maps.
367    
368     Follow the link to <a href="http://www.deliantra.net/">Deliantra</a> for background info.
369    
370 root 1.13 deliantra/arch cvs-co(Changes) cvs-co(COPYING.Affero)
371 elmex 1.1 The <a href="http://www.deliantra.net/">Deliantra</a> game resources.
372    
373     Follow the link to <a href="http://www.deliantra.net/">Deliantra</a> for background info.
374    
375 root 1.13 deliantra/Deliantra-Client cvs-pod(bin/deliantra,) cvs-co(Changes)
376 elmex 1.1 A modern, fullscreen client for <a href="http://www.deliantra.net/">Deliantra</a>, written using Perl
377     and leveraging only OpenGL for display and thus being easily portable.
378     See its <a href="http://www.deliantra.net/client.html">homepage</a>.
379    
380     To install it, you need <a href="http://www.libsdl.org">SDL</a>, <a href="http://www.libsdl.org/projects/SDL_mixer/">SDL_mixer</a>,
381     <a href="http://www.libsdl.org/projects/SDL_image/">SDL_image</a>, <a href="http://www.pango.org">PanGo</a> (with freetype2 and
382     cairo backends at the moment), and the BDB, AnyEvent, Pod::POM, EV and
383 root 1.13 <a href="http://software.schmorp.de/pkg/deliantra/Deliantra.html">Deliantra</a> perl modules.
384 elmex 1.1
385 root 1.13 deliantra/Deliantra
386 elmex 1.1 Perl module family for the <a href="http://www.deliantra.net/">Deliantra</a> game.
387    
388     They can be used to read/write/cache archetypes, image packs and map files.
389     Follow the link to <a href="http://www.deliantra.net/">Deliantra</a> for background info.
390    
391 root 1.13 deliantra/gcrossedit cvs-pod(bin/gde,)
392 elmex 1.1 The <a href="http://www.deliantra.net/">Deliantra</a> editor, written in Perl + Gtk2.
393    
394     The editor for the game Deliantra, written in Perl.
395     Follow the link to <a href="http://www.deliantra.net/">Deliantra</a> for background info.
396    
397 root 1.13 deliantra
398 elmex 1.1 <a href="http://www.deliantra.net/">Deliantra</a> server, archetypes, maps,
399     editor, client and support modules distribution.
400    
401     Follow the link to <a href="http://www.deliantra.net/">Deliantra</a> for background info.
402    
403     cfmaps
404     This is a collection of scripts that I use to create the <a
405     href="http://www.deliantra.net/">Deliantra</a> maps at <a
406     href="http://maps.deliantra.net/">maps.deliantra.net</a>.
407    
408     They are not documented and somewhat specialised, but the scripts might
409     be of some use.
410    
411     Faster cpan cvs-pod(Faster.pm,)
412     A perl module that makes perl run, well, faster, using a very primitive just in time compiler.
413    
414     As the name implies, using this module makes your perl program run
415     faster. Actually, much slower initially, as it compiles every function
416     to C and later to a shared object, but then you can expect a performance
417     increase by 10-50%, depending on what your program does.
418    
419     liblzf cvs-co(README) cvs-co(lzf.h)
420     LibLZF is a very small data compression library.
421    
422     It consists of only two .c and two .h files and is very easy to
423     incorporate into your own programs. The compression algorithm is very,
424     very fast, yet still written in portable C. More info and the latest
425     release can be found at the <a href="http://liblzf.plan9.de">LibLZF
426     Homepage</a>.
427    
428     root-tail cvs-co(README) cvs-co(Changes)
429     Full-featured program to print text directly to the X11 root window.
430    
431     More info, screenshots, documentation and current releases can be found
432     at the <a href="http://root-tail.plan9.de">root-tail homepage</a>.
433    
434     xcb cvs-co(README) cvs-co(Changes)
435     A fork of the unmaintained xcb (x cut buffers) program implementing better i18n.
436    
437     lmainit cvs-co(NEWS)
438     A sysvinit replacement that can even be configured to be sysvinit-compliant.
439    
440     See <a href="http://www.goof.com/pcg/marc/lmainit.html">its homepage</a> for more info.
441    
442     Algorithm-FEC cpan cvs-pod(FEC.pm,) cvs-co(README.fec) cvs-co(Changes)
443     Perl module implementing forward error correction using Vandermonde matrices
444    
445 root 1.27 AnyEvent cpan cvs-pod(lib/AnyEvent.pm,) cvs-pod(lib/AnyEvent/Intro.pod,Introduction/Tutorial) cvs-co(Changes) cvs-pod(lib/AnyEvent/Util.pm,AnyEvent::Util) cvs-pod(lib/AnyEvent/Handle.pm,AnyEvent::Handle) cvs-pod(lib/AnyEvent/Socket.pm,AnyEvent::Socket) cvs-pod(lib/AnyEvent/DNS.pm,AnyEvent::DNS) cvs-pod(lib/AnyEvent/Impl/EV.pm,AnyEvent::Impl::EV) cvs-pod(lib/AnyEvent/Impl/Event.pm,AnyEvent::Impl::Event) cvs-pod(lib/AnyEvent/Impl/Glib.pm,AnyEvent::Impl::Glib) cvs-pod(lib/AnyEvent/Impl/Tk.pm,AnyEvent::Impl::Tk) cvs-pod(lib/AnyEvent/Impl/Perl.pm,AnyEvent::Impl::Perl) cvs-pod(lib/AnyEvent/Impl/Qt.pm,AnyEvent::Impl::Qt) cvs-pod(lib/AnyEvent/Impl/EventLib.pm,AnyEvent::Impl::EventLib) cvs-pod(lib/AnyEvent/Impl/POE.pm,AnyEvent::Impl::POE)
446 elmex 1.1 This module offers a simple API for I/O, timer, signal, child process
447     and completion events, independent of a specific event loop.
448    
449 root 1.26 <p>This module allows module authors to use those events internally without
450 elmex 1.1 forcing users of the module to use a specific event loop, without adding
451 root 1.14 noticable overhead. Currently supported event loops are EV, Event,
452     Glib/Gtk2, Tk, Qt, Event::Lib and POE (and thus also WxWidgets and
453     Prima). It contains a very fast (see benchmarks in the main manual page)
454     Pure Perl event loop and doesn't rely on XS, which ensures that your
455 root 1.26 program will always run even when no C-based event loop is available.</p>
456 elmex 1.1
457 root 1.26 <p>In addition to the event core (which might be all you need), AnyEvent
458 root 1.25 comes with an optional, fully asynchronous, pure-perl DNS resolver
459     library supporting UDP, TCP and EDNS0, with many utility functions to
460     "just resolve" stuff without having to instantiate even a resolver object
461 root 1.26 (and including an equivalent of C<getaddrinfo>).</p>
462 root 1.25
463 root 1.26 <p>The AnyEvent::Socket offers utility functions to make handling TCP
464 root 1.25 connections (100% non-blocking, including DNS resolution, with both IPv4
465     and IPv6) and addresses as easy as possible, to the point of making IPv6
466 root 1.26 completely transparent.</p>
467 root 1.25
468 root 1.26 <p>Lastly, AnyEvent::Handle offers a powerful framework for asynchronous and
469 root 1.25 buffered protocol handling. You can push multiple read event handlers
470     to parse your protocol and start TLS/SSL negotiation transparently (and
471 root 1.26 fully non-blocking) at any time, in both server and client mode.</p>
472 root 1.25
473 elmex 1.1 AnyEvent-FastPing cpan cvs-pod(FastPing.pm,)
474     This module implements a very fast and relatively flexible
475     ping (ping as in icmp echo request).
476    
477     This module allows you to quickly send ipv4 and ipv6 pings at a defined
478     rate to whole address ranges. It is fully event-driven (doesn't block
479     the perl interpreter) and can easily generate hundreds of thousands of
480     pings per second. Target specification is done by specifying one or
481     more address ranges, to which pings will be distributed according to a
482     least-load principle.
483    
484     A command line utility (<tt>fastping</tt>) is included.
485    
486 root 1.31 AnyEvent-HTTP cpan cvs-pod(HTTP.pm,) cvs-co(Changes)
487     A simple and plain event based http and https client.
488    
489     This module implements a simple, stateless and non-blocking HTTP
490     client. It supports GET, POST and other request methods, cookies and more,
491     all on a very low level. It can follow redirects supports proxies and
492     automatically limits the number of connections to the values specified in
493     the RFC.
494    
495     It should generally be a "good client" that is enough for most HTTP
496     tasks. Simple tasks should be simple, but complex tasks should still be
497     possible as the user retains control over request and response headers.
498    
499     The caller is responsible for authentication management, cookies (if
500     the simplistic implementation in this module doesn't suffice), referer
501     and other high-level protocol details for which this module offers only
502     limited support.
503    
504     AnyEvent-DBI cpan cvs-pod(DBI.pm,) cvs-co(Changes)
505     A relatively simple wrapper around DBI to make asynchronous
506     SQL requests.
507    
508     This module implements asynchronous DBI access my forking or executing
509     separate "DBI-Server" processes and sending them requests.
510    
511     It means that you can run DBI requests in parallel to other tasks.
512    
513     AnyEvent-HTTPD cpan-elmex git-pod(lib/AnyEvent/HTTPD.pm,) git-co(Changes)
514     A simple and plain event based http web application server Perl module.
515    
516     This is a very basic HTTP server that allows the user/programmer to install
517     hooks for URL paths to generate the output. It uses AnyEvent to be easily
518     embeddable into other applications. The main objective was to make it
519     easier to make simple HTTP frontends in Perl for Perl programs and Perl modules.
520    
521     AnyEvent-IGS cpan-elmex git-pod(lib/AnyEvent/IGS.pm,) git-co(Changes)
522     A Perl module that interfaces to the International Go Server.
523    
524     This module is an Anyevent-based interface to the International Go Server
525     protocol.
526    
527     AnyEvent-EditText cpan-elmex git-pod(lib/AnyEvent/EditText.pm,) git-co(Changes)
528     A Perl module which allows editing any text via an editor in a seperate process.
529    
530     A utility Perl module that will start a terminal/editor for you and will
531     wait non-blocking for you to finish editing that file. Very useful to embed
532     content edititing in event based programs that have a AnyEvent compatible
533     event loop.
534    
535 elmex 1.1 Audio-Play-MPG123 cpan cvs-pod(MPG123.pm,) cvs-co(Changes)
536     A Perl module implementing an interface to mpg123.
537    
538     Compress-LZV1 cpan cvs-pod(LZV1.pm,) cvs-co(Changes)
539     A Perl module implementing the LZV1 compression algorithm. See
540     <tt>Compress::LZF</tt> for a better algorithm and module.
541    
542     Convert-CD cvs-pod(lib/Convert/CD.pm,) cvs-pod(bin/cvtiso,cvtiso) cvs-co(doc/) cvs-co(Changes)
543     Unfinished Perl project implementing CD image formats. Extracting ISO images
544     already works.
545    
546     Convert-Scalar cpan cvs-pod(Scalar.pm,) cvs-co(Changes)
547     Perl module to convert between different representations of Perl scalars.
548    
549     Convert-UUlib cpan cvs-pod(UUlib.pm,) cvs-co(Changes)
550     Perl interface to the uulib library (a.k.a. uudeview/uuenview), which
551     allows easy decoding of multipart mime, uuencode and a whole lot of
552     differently encoded messages. You basically throw files at it, and
553     it extracts the files in them. This module is used by the popular <a
554     href="www.amavis.org">amavis virus scanner</a>.
555    
556 root 1.16 Coro cpan cvs-co(Changes) cvs-pod(Coro.pm,) cvs-pod(Coro/AIO.pm,Coro::AIO) cvs-pod(Coro/AnyEvent.pm,Coro::AnyEvent) cvs-pod(Coro/BDB.pm,Coro::BDB) cvs-pod(Coro/Channel.pm,Coro::Channel) cvs-pod(Coro/Debug.pm,Coro::Debug) cvs-pod(Coro/EV.pm,Coro::EV) cvs-pod(Coro/Event.pm,Coro::Event) cvs-pod(Coro/Handle.pm,Coro::Handle) cvs-pod(Coro/LWP.pm,Coro::LWP) cvs-pod(Coro/MakeMaker.pm,Coro::MakeMaker) cvs-pod(Coro/RWLock.pm,Coro::RWLock) cvs-pod(Coro/Select.pm,Coro::Select) cvs-pod(Coro/Semaphore.pm,Coro::Semaphore) cvs-pod(Coro/SemaphoreSet.pm,Coro::SemaphoreSet) cvs-pod(Coro/Signal.pm,Coro::Signal) cvs-pod(Coro/Socket.pm,Coro::Socket) cvs-pod(Coro/Specific.pm,Coro::Specific) cvs-pod(Coro/State.pm,Coro::State) cvs-pod(Coro/Storable.pm,Coro::Storable) cvs-pod(Coro/Timer.pm,Coro::Timer) cvs-pod(Coro/Util.pm,Coro::Util)
557 elmex 1.1 A large Perl module family that implements cooperative multitasking in
558     Perl. It supports filehandle and event abstraction and also implements
559     continuations as well as the necessary directives to implement a slightly
560     limited call/cc in Perl.
561    
562     Crypt-Twofish2 cpan cvs-pod(Twofish2.pm,) cvs-co(Changes)
563     A Perl module implementing the twofish encryption algorithm in Perl. It has
564     mostly been superceded by the Crypt::Twofish module. However, it supports
565     an easy and fast CBC mode natively.
566    
567     Digest-Hashcash cpan cvs-pod(Hashcash.pm,) cvs-co(Changes)
568     Perl module to generate and parse <a href="http://www.hashcash.org">hashcashes</a>.
569     Follow the link to learn more. This module is currently faster than
570     the hashcash reference library.
571    
572     EV cpan cvs-pod(EV.pm,) cvs-pod(../libev/ev.pod,libev-documentation) cvs-pod(EV/MakeMaker.pm) cvs-co(Changes)
573     A thin wrapper around <a href="/pkg/libev.html">libev</a>,
574     a high-performance event loop. Intended as a faster and less
575     buggy replacement for the Event perl module. Efficiently supports
576     very high number of timers, scalable operating system APIs such as
577     epoll, kqueue, solaris's ports, inotify, child/pid watchers and
578     much more.
579    
580     A <a href="http://lists.schmorp.de/mailman/listinfo/libev">mailing
581     list</a> for discussion and support is now available.
582    
583     EV-ADNS cpan cvs-pod(ADNS.pm,) cvs-co(Changes)
584     An asynchronous stub resolver that integrates efficiently into
585     the EV event loop. Uses adns/libadns as backend.
586    
587     Net-SNMP-EV cpan cvs-pod(EV.pm,) cvs-co(Changes)
588     An adaptor that integrates the Net-SNMP Perl module into the EV event loop.
589     Loading it suffices to make background requests in EV programs.
590    
591     libev cvs-co(README) cvs-pod(ev.pod) dist
592     A full-featured and high-performance (<a
593     href="http://libev.schmorp.de/bench.html">see benchmark</a>) event loop that
594     is loosely modelled after libevent, but without its limitations and bugs. It is
595     used, among others, in the <a href="http://savannah.gnu.org/projects/gvpe">GNU Virtual Private Ethernet</a> and
596     <a href="http://software.schmorp.de/pkg/rxvt-unicode.html">rxvt-unicode</a> packages, and in
597     the Deliantra MORPG Server and Client.
598    
599     Features include child/pid watchers, periodic timers based on
600     wallclock (absolute) time (in addition to timers using relative
601     timeouts), as well as epoll/kqueue/event ports/inotify (for file watchers) support,
602     fast timer management, time jump detection and correction, and ease-of-use.
603     <p />
604     It can be used as a libevent replacement using its emulation API or
605     directly embedded into your programs without the need for complex
606     configuration support. A full-featured and well-documented
607     <a href="EV.html">perl interface</a> is also available.
608     <p />
609     A <a href="http://lists.schmorp.de/mailman/listinfo/libev">mailing
610     list</a> for discussion and support is now available.
611    
612 root 1.22 libeio dist cvs-pod(eio.pod,) cvs-co(eio.h) cvs-co(demo.c) cvs-co(Changes)
613 root 1.17 Event-based fully asynchronous I/O library for C (used by IO::AIO).
614 root 1.20 Currently in BETA!
615 root 1.17
616 root 1.18 <p>Libeio is a full-featured asynchronous I/O library
617 root 1.17 for C, modelled in similar style and spirit as <a
618     href="http://software.schmorp.de/pkg/libev.html">libev</a>. Features
619     include: asynchronous read, write, open, close, stat, unlink, fdatasync,
620     mknod, readdir etc. (basically the full POSIX API). sendfile (native on
621 root 1.20 solaris, linux, hp-ux, freebsd, emulated everywehere else), readahead
622 root 1.17 (emulated where not available).</p>
623    
624     <p>It is fully event-library agnostic and can easily be integrated into any
625     event-library (or used standalone, even in polling mode). It is very
626     portable and relies only on POSIX threads.</p>
627    
628 root 1.21 <p>Its code, documentation, integration and portability quality is
629     currently below that of libev, but should soon be ready for use in
630     production environments.</p>
631    
632 elmex 1.1 libspf cvs-co(README)
633     Libspf is a C library that implements the <a
634     href="http://en.wikipedia.org/wiki/Sender_Policy_Framework"> Sender
635     Policy Framework</a>. It allows software to identify and reject forged
636     envelope-from addresses, a typical nuisance in e-mail spam. SPF is
637     defined in Experimental RFC 4408.
638    
639     This is not the original home of libspf, but its author (apparently)
640     has vanished for a few years now, and this place took over as a central
641     place to collect patches and possibly make releases.
642     <p />
643     James Couzens, if you read this and want to take over, feel free to
644     contact <a href="mailto:libspf@schmorp.de">me</a>, I'd be thrilled :)
645    
646     File-Rdiff cpan cvs-pod(Rdiff.pm,) cvs-co(Changes)
647     A Perl module that generates remote signatures and patches files using
648     librsync: basically your interface to librsync.
649    
650     EV-Glib cpan cvs-pod(Glib.pm,) cvs-co(Changes)
651     This perl module embeds the default Glib mainloop into the EV event loop. This makes it
652     possible to use callbacks or modules using the Glib module (e.g. Gtk2 programs) within EV programs. Just
653     loading it suffices. See the <a href="/pkg/Glib-EV.html">Glib::EV</a> module for the reverse approach.
654    
655     Glib-EV cpan cvs-pod(EV.pm,) cvs-co(Changes)
656     This perl module patches the default libglib main loop context to use the EV module. This makes
657     it possible to use callbacks or modules using the EV module within Glib and Gtk2 programs. Just
658     loading it suffices. See the <a href="/pkg/EV-Glib.html">EV::Glib</a> module for the reverse approach.
659    
660     Glib-Event cpan cvs-pod(Event.pm,) cvs-co(Changes)
661     This perl module patches the default libglib main loop context to use the Event module. This makes
662     it possible to use callbacks or modules using the Event module within Glib and Gtk2 programs. Just
663     loading it suffices.
664    
665     GPS
666     Undocumented, unreleased and unfinished-but-working interface to some GPS
667     devices in Perl.
668    
669     Linux-DVB cpan cvs-pod(DVB.pm,) cvs-co(Changes)
670     A perl module that implements a very direct interface to the Linux DVB
671     API. Also contains utility functions to decode SI data.
672    
673     Devel-FindRef cpan cvs-pod(FindRef.pm,) cvs-co(Changes)
674     A Perl module that tries to track down references to perl values. Can
675     be a great aid in debugging leak problems by showing where a value
676     is still being referenced.
677    
678     BDB cpan cvs-pod(BDB.pm,) cvs-co(Changes)
679     A Perl module implementing an interface to BerkeleyDB versions 4.4 and later.
680     Unlike the BerkeleyDB and DB_File modules, this module has a much more
681     C-like interface exposing all the features of the underlying library
682     and also executes all database changes asynchronously using a thread pool.
683    
684     IO-AIO cpan cvs-pod(AIO.pm,) cvs-co(Changes)
685     A Perl module that implements asynchronous I/O using pthreads. Apart
686     from AIO reading and writing, this module also allows asynchronous
687     <tt>stat</tt>, <tt>open</tt>, <tt>unlink</tt> (and more) calls,
688     which often are a substantial blocking problem. See also its (outdated)
689     brother <tt>Linux-AIO</tt>.
690    
691     JSON-XS cpan cvs-pod(XS.pm,) cvs-co(Changes)
692     JSON::XS implements JSON (http://www.json.org) for Perl. Unlike other
693     modules, its primary goal is to encode to syntactically correct JSON and
694     flag invalid JSON while decoding. It ensures round-trip integrity of
695     datatypes while being intuitive to use. Currently being the fastest of the
696     JSON encoders available for Perl, it supports a variety of format options,
697     such as single-line, ASCII-only or pretty-printed and can be tuned for
698     speed or memory usage. It comes with a wealth of documentation describing
699     usage and implementation details.
700    
701 root 1.31 Games-Go-SimpleBoard cpan cvs-pod(SimpleBoard.pm,) cvs-co(Changes)
702     A Perl module representing a go board.
703    
704     This Perl module represents a Go game. It can check for valid moves,
705     capture stones, stores move history and can represent a variety of
706     additional annotations (circles, labels, grayed-out stones etc.).
707    
708     Gtk2-GoBoard cpan cvs-pod(GoBoard.pm,) cvs-co(Changes)
709     A Perl module implementing a go board widget.
710    
711     This Perl module implements a beautiful go board (see <a
712     href="http://data.plan9.de/kgsuemel.jpg">example</a>), implemented as a
713     Gtk2 widget.
714    
715 elmex 1.1 Linux-AIO cpan cvs-pod(AIO.pm,) cvs-co(Changes)
716     A Perl module that implements asynchronous I/O using <tt>clone</tt>
717     on Linux. Apart from AIO reading and writing, this module also allows
718     asynchronous <tt>stat</tt>, <tt>open</tt> and <tt>close</tt> (and more)
719     calls, which often are a substantial problem. See also its (newer) brother
720     <tt>IO-AIO</tt>.
721    
722     Linux-Inotify2 cpan cvs-pod(Inotify2.pm,) cvs-co(Changes)
723     A better/less buggy/more portable interface to the Linux Inotify
724     subsystem then what Linux::Inotify has to offer. Inotify lets you receive
725     file change, create, move etc. events for directories in files in a more
726     scalable fashion than dnotify, the older mechanism.
727    
728     Linux-NBD cpan cvs-pod(lib/Linux/NBD.pm) cvs-pod(lib/Linux/NBD/Client.pm) cvs-pod(lib/Linux/NBD/Server.pm) cvs-co(Changes)
729     A Perl module that helps implementing netblock block device servers and
730     set up NBD instances. A sample application allowing you to mount most CD
731     images is included.
732    
733     Mozilla-Plugin
734     Undocumented, unreleased and unfinished-but-somewhat-working Perl plug-in
735     for Mozilla (Netscape, Opera, IE...), that allows embedding Tk, Gtk etc.
736     plugins directly in the browser.
737    
738     Net-FCP cpan cvs-pod(FCP.pm,) cvs-co(Changes)
739     Perl module implementing the <a href="http://www.freenetproject.org">Freenet</a>
740     client protocol, including client-side Metadata handling and CHK Key generation.
741     Includes a mass downloader (similar to fuqid) as sample application.
742    
743     Net-Whois-IP
744     Undocumented, unreleased and unfinished-but-somewhat-working Perl module
745     that tries to find the corresponding whois entry for a given IP, by querying
746     various registries.
747    
748     OpenSSL
749     Undocumented, unreleased and unfinished-but-somewhat-working Perl module
750     interfacing to libssl.
751    
752     PDL-Audio cpan cvs-pod(audio.pd,) cvs-co(Changes)
753     Perl module extending PDL with all sorts of audio functions for generating, analyzing,
754     loading and saving sounds. Ever so popular is the "birds" demo script :)
755    
756     Tree-M cpan
757     Perl interface to the broken M-Tree library by these italian guys...
758    
759     Video-Capture-V4l cpan cvs-co(README) cvs-co(Changes)
760     Full-featured interface to Video for Linux, including real-time grabbing
761     and jpeg compression, VPS etc. decoding and many sample scripts that
762     facilitate automatica sender search and detection, EPG decoding and
763     viewing and video grabbing.
764    
765     XML-DB
766     Undocumented, unreleased and unfinished Perl module implementing an "XML
767     database", i.e. a tree-based database, on top of a conventional SQL
768     database.
769    
770     basex
771     Very old, very portable ANSI-C program that implements something
772     that is similar to yencode. yencode is more "standard", so don't use this.
773    
774     dinfo
775     Undocumented and working tools to extract the data from the D-Info CD.
776    
777     syncmail
778     Unfinished, undocumented and not working.
779    
780     thttpd
781     A personally hacked version of thttpd, suitable for lots of file
782     transfers (normal thttpd has problems with this).
783    
784     wvsniff
785     Undocumented but nicely working wavelan sniffer that I wrote for use
786     with my cisco aironet card. If you get it working, praise yourself.
787    
788     ermyth cvs-pod(doc/poddoc/documentation.pod) cvs-co(Changes)
789     This is a fork of Atheme IRC Services.
790    
791     Ermyth IRC Services is a set of Services for IRC networks that allows
792     users to manage their channels in a secure and efficient way and
793     allows operators to manage various things about their networks.
794     Ermyth has been ported to C++ and goes its way using modern concepts
795     and the object oriented paradigm.
796    
797     dhcpping cvs-pod(dhcping.pod,)
798     A version of dhcpping enhanced by <a href="mailto:marco@nethype.de">Marco Maisenhelder</a>
799     to support passing dhcp options. Intended to test dhcp server implementations.
800    
801 elmex 1.5 Object-Event cpan-elmex git-pod(lib/Object/Event.pm,) git-co(Changes)
802 elmex 1.2 A simple event callback API for Perl.
803    
804     This is just a very simple event callback registration and call API
805     which new Perl classes can inherit. It's mainly used by Net::XMPP2.
806    
807     psycpp
808     A project that was aimed to implement a PSYC server in C++.
809    
810     This is a mostly abandoned project at the moment, however, the repository
811     contains interesting C++ code that might be useful to someone, especially
812     the C++ JSON implementation might be of interest. The project is mostly
813     dead at the moment though...
814 elmex 1.12
815     gtm git-co(README)
816 root 1.32 GT.M Database
817    
818     <a href="http://sourceforge.net/projects/fis-gtm/">GT.M</a>
819     is a a vetted, industrial strength, transaction
820     processing application platform consisting of a
821     database engine optimized for high TP throughput and
822     a compiler for the M (aka MUMPS) programming language.
823    
824     fcrackzip cvs-co(fcrackzip.html)
825     <b>fcrackzip</b> is a zip password cracker, similar to fzc, zipcrack and others.
826    
827     <h3>Why, the hell, another zip cracker?</h3>
828    
829     Naturally, programs are born out of an actual need. The situation with
830     fcrackzip was no different... I'm not using zip very much, but recently
831     I needed a password cracker. "Sure", I thought, "there are hundreds of
832     them out there, I'll just gonna get one!". This wasn't so easy, in fact,
833     none of the zipcrackers I found were able to find the passwords, either
834     they didn't accept more than one zipfile, were awfully slow, or didn't do
835     brute force attacks (which I needed). The worst thing was: no source!.
836    
837     <h3>Why is <i>no source</i> such a bad thing?</h3>
838    
839     [insert big chapter about the free software spirit here ;)], anyway
840     people will never learn... You will find reasons why it's much better to
841     provide source to your programs here, at opensource.org, and here, at the
842     Free Software Foundation. Now, what are the features of fcrackzip?
843    
844     <ul><li>
845     <p>FREE</p>
846    
847     <p>It doesn't cost anything, it will run on many architectures, and
848     the source is freely available, so you can customise it to your
849     needs. If you make improvements, don't hesitate to mail them to me,
850     and I will include them in fcrackzip!</p>
851    
852     <p>One goal of fcrackzip was to provide a free but still fast
853     zipcracker, so that other people can improve and contribute it
854     further, in an open developement style.</p>
855    
856     <p>Other programs, like fzc, come not only without source, but the
857     executable is even encrypted, so improving it or customizing it is
858     difficult at best. (Maybe the programmers of other crackers don't
859     want that people see how crappy their code actually is? Nobody
860     knows for sure, but I see no other reason for this strange, but
861     common, behaviour)</p>
862    
863     </li><li>
864     <p>FAST</p>
865    
866     <p>On my old machine (a pentium-90), the portable C version is 12%
867     slower than fzc, the fastest cracker I could find. Small parts of
868     fcrackzip have been converted to x86 assembly, so it performs a bit
869     faster (around 4%) than fzc now, on the same hardware (note: this
870     is highly os/compiler dependent). Since the author of fzc claims
871     that it is written fully in assembler, further improvements might
872     well be possible. Incidently, on my new P-II machine, fcrackzip is
873     almost twice as fast as fzc ;)</p>
874    
875     </li><li>
876     <p>PORTABLE</p>
877    
878     <p>fcrackzip was written in ISO-C, and should run on most platforms,
879     even 64 bit ones (maybe after some tweaking). I'll be glad to hear
880     about portability problems so I can fix them.</p>
881    
882     </li><li>
883     <p>FEATUREFUL</p>
884    
885     <p>fcrackzip will, at some later stage at least, support many more
886     useful operation modes than other crackers. It already supports
887     multiple zip files with multiple files. Remember that the code is
888     only a few hours old!</p>
889    
890     <p>However, since version 0.2.0 fcrackzip also includes a mode to
891     brute force cpmask'ed images, something no other program (that I
892     know of) can do, so at least there is one feature other crackers
893     don't have.</p>
894    
895     <p>And you can always implement your own modes.</p>
896    
897     </li></ul>
898    
899     <h3>Caveat, Imperator!</h3>
900    
901     <p>Naturally, there are also some drawbacks. At the moment, fcrackzip
902     is a bit slower than necessary, and lacks some important (or nice)
903     features, like automatic unzip-testing and others. On the other hand,
904     fcrackzip-0.0.1 was hacked together in under ten hours, and you can
905     always modify the source (and send me patches!!!) (I hope I've made it
906     clear now ;)</p>
907 elmex 1.12