named pipe
XMMS InfoPipe 1.3
XMMS InfoPipe is a plugin that reports XMMS status via named pipe. more>>
While theres a possibility of setting up programs to be executed by XMMS when changing songs, XMMS InfoPipe provides better introspection: You can get information on song position, song length, playlist position, status (stopped/playing/paused), song title as displayed by XMMS, and file name. The information is reported in easily parseable textual format.
The possibilities for information use are limitless. So far, here are some of the things people have been using InfoPipe for:
Showing information of XMMS on home page, webcam page, or something related (script included)
Showing player information on IRC (spotted one script for Irssi)
Using any speech synthetizer to say the song information, reducing the need for external displays, and helping listening to unfamiliar music in bed when all you have is a remote control =) (script included).
Yeah, LIRC plugin seems to support this already, but it only supports ViaVoice - this allows you to use any speech synth... or any other types of output. Just an example of flexibility - I created the script to do that at 4 oclock in the morning, and even got 99% of Perl recommendations of good coding right, even when I wasnt fully awake.
mod_auth_pipe 1.0
mod-auth-pipe is a module of authentication written for Apache 1 (it hasnt been tested with Apache 2, but it may work). more>>
Actually, this module is just mod-auth-shadow with a few modifications in order to accept any program as a pipe, letting this one validate both users andr groups.
mod_auth_pipe contents the module itself and an example pipe.
mod-auth-pipe can be configured independantly for whole server, for any VirtualHost or just per Location/Directory. It has very few configuration variables and its format is very simple. In order to configure apache to authenticate, for example, access to the administrative interface of oscommerce you can type this on your httpd.conf:
< Directory /var/www/oscommerce/catalog/admin >
AuthType Basic
AuthName osCommerce admin site
AuthPipe on
AuthPipeProgram /usr/local/bin/auth-pipe
require group oscommerce-admins
< /Location >
This way, and with a well-made auth-pipe program you can be sure that only those within the group oscommerce-admins could enter that section of your web.
Workspace Name Applet 0.0.2
Workspace Name Applet is a Gnome panel applet to display and edit the name of the current workspace. more>>
xmms-pipe 0.5.5
xmmspipe is a plugin for XMMS that enables it to be controlled by sending strings to a named pipe (FIFO). more>>
echo play_pause > ~/.xmms/inpipe
will cause XMMS to pause or play.
Since version 0.5.0, it is possible to setup an output pipe, and query XMMS for information. For example, sending "report title" to the input pipe will cause the current songs title to be printed on the output pipe.
Included is a demo program called "fade", that shows how to use the plugin to fade the current song and advance to the next one. It requires the output pipe to be be enabled (via the Config window).
The Infopipe plugin does output pipes a little differently.
When I first wrote this plugin, I didnt know about other programs that I couldve used to control XMMS with shell scripts, such as xmmsctrl or xmms-shell. However, Ive kept xmmspipe alive because pipes may be preferable in some situations:
The pipe automatically inherits the security features of the underlying filesystem (e.g. you could change its permissions so that only users of a particular group can control XMMS).
In many programming languages, writing to a pipe is easier than executing programs, making it easier to build programs to control XMMS.
The plugin can call internal XMMS functions which means it can have more functionality than programs relying on the xmms_remote_* functions alone. For example, XMMSPipe can load/save playlists.
Sometimes I think XMMS itself should just be an MP3-playing daemon that interfaces with the outside world exclusively through pipes (one for input, at least one for output). This would allow a lot more flexibility, e.g. the GUI could be arbitrary and playlists could be managed by an external program. (It would work in the same way gkrellm works with files in /proc.) Also, the code would be simpler because it only has to worry about reading various audio formats and playing them. It wouldnt have to deal with window managers, X, etc.
Enhancements:
- Added playlist_move command due to Graeme Yeo
Simple UDP proxy/pipe 0.3
Simple UDP proxy/pipe is an advanced UDP proxy/datapipe/packets forwarder and modifier with multiple functions. more>>
Multiple clients allowed (you can connect many clients you want to this proxy), creation of ACP files (tcpdump capture files, just like a sniffer), packets forwarding (chat style, each packet is forwarded to all the other clients and server connected), packets injection (the tool opens a specific UDP port where you can send your customized packets which will be sent to the server), hexadecimal visualization and plugins support for the modification and visualization of the packets with some example plugins already included (Zdaemon huffman, Doom huffman, Half-life decoding and one for the replacement of the text strings).
Plugins (which work on both Windows and Linux) are very basic to create and use, just take a look at example_sudp.c for more informations.
Pipe-Sem 1.0
This is a pipe based semaphore implementation for developing ASYNC applications. more>>
Pipe-Sem 1.0 is a good utility which might help you a lot in developing ASYNC applications. Many synchronization primitives are available for Unix systems, but any of them expose a pollable interface to the user. In these cases, if the caller execute a down operation on a blocking semaphore, the application will sleep and whole ASYNC loop will starve because of the wait.
To cope with this problem in ASYNC software, the publisher developed a pipe based semaphore implementation, called Pipe-Sem. The implementation is trivially simple and it uses the pipe internal mechanisms to expose a pollable wait interface.
Besides the standard semaphore operations, the function psem_down_fd() can be used to retrieve a files descriptor that can be dropped inside a Unix pollable API like select(2), poll(2) or epoll(2). The caller will have to wait for input events (POLLIN), and when receiving the event itself, the caller should invoke the psem_try_down() function to try to acquire the semaphore.
Please note that receiving an event from the pollable interface, does not mean that we acquired to semaphore, and the function psem_try_down() will have to be called (and tested for zero return code) to correctly complete the down operation.
<<lessSnd 9.2
Snd is a freeware sound editor modelled loosely after Emacs. more>>
It can accommodate any number of sounds, each with any number of channels. It can be customized and extended using Guile or Ruby.
mod_tee
mod_tee serves to clone an document as it is served. more>>
The current status is "works for us", but it is not of release quality. It is less-than-complete in several respects. Its probably not a good idea to use it operationally unless youre prepared to get your hands dirty fixing any problems, or pay for support.
Configuration
TeeType FILE|PIPE|SMTP [Destination]
Where to send the cloned output:
FILE - save to a destination file. For testing only!
PIPE - pipes output to a destination program with popen.
SMTP - sends cloned output directly to email at a destination mailserver. Implements SMTP handshake with no error checking - so its a dangerous option!
TeeCondition query|cookie|path|header|env|true|false [key] [val]
Defines a condition for mod_tee to be activated for a request. Values true and false are unconditional, while the others define a QUERY_STRING key, a Cookie, a PATH_INFO component, a request header or an environment variable to trigger the tee. Conditional values require a key. If val is defined then key must match it; otherwise any value of key will activate the tee.
TeeHeader key value
Defines an RFC822-style header to be inserted in front of the body of the page.
pipebench 0.40
pipebench is a utility that shows the status and a benchmark of piped commands. more>>
Pipebench measures the speed of a pipe, by sitting in the middle passing the data along to the next process. Works on at least Linux, OpenBSD, NetBSD, Solaris and x86, Alpha, HPPA, Sparc and Sparc64.
Compiling
Just type make to compile.
Type make install to have pipebench be installed in /usr/local/bin
JXTA P2P 2.5.1
JXTA platform is an open network computing platform designed for peer-to-peer (P2P) computing. more>>
- Discover other peers
- Advertise Peer resources (Peer, PeerGroup, Service and Pipe Advertisements)
- Communicate with each other (Pipes)
- Cooperate with each other to form secure peer groups (group membership)
The Platform project is a Java Standard Edition reference implementation of the JXTA protocols.
The Platform project was the original JXTA implementation and was built in Java, because Java enabled us to rapidly prototype and test new ideas and develop a more robust implementation.
Java is available on most client platforms (Unix, Windows, MacOS X, etc.) and allows us to reach the maximum number of potential users.
Alvis::Pipeline 0.11
Alvis::Pipeline is a Perl extension for passing XML documents along the Alvis pipeline. more>>
SYNOPSIS
use Alvis::Pipeline;
$in = new Alvis::Pipeline::Read(host => "harvester.alvis.info",
port => 16716,
spooldir => "/home/alvis/spool");
$out = new Alvis::Pipeline::Write(port => 29168);
while ($xml = $in->read(1)) {
$transformed = process($xml);
$out->write($transformed);
}
This module provides a simple means for components in the Alvis pipeline to pass documents between themselves without needing to know about the underlying transfer protocol. Pipe objects may be created either for reading or writing; components in the middle of the pipeline will create one of each. Pipes support exactly one method, which is either read() or write() depending on the type of the pipe. The granularity of reading and writing is the XML document; neither smaller fragments nor larger aggregates can be transferred.
The documents expected to pass through this pipeline are those representing documents acquired for, and being analysed by, Alvis. These documents are expressed as XML contructed according to the specifications described in the Metadata Format for Enriched Documents. However, while this is the motivating example pipeline that led to the creation of this module, there is no reason why other kinds of documents should not also be passed through pipeline using this software.
The pipeline protocol is described below, to facilitate the development of indepedent implementations in other languages.
Pipepanic 0.1.3
Pipepanic is a pipe connecting game using libSDL. more>>
Comes with built-in help, is primarily mouse/stylus driven and can be played in different resolutions and orientations.
Class::Accessor::Named 0.005
Class::Accessor::Named is a great way to automate the tedious task of generating accessors and mutators. more>>
That entry contains all your accessors, which can be a real pain if youre attempting to figure out _ w_ h_ i_ c_ h of your accessors is being called six billion times.
This module is a development aid which uses Hook::LexWrap and Sub::Name to talk your accessors into identifying themselves. While it shouldnt add much additional runtime overhead (as it acts only Class::Accessors generator functions), it has not been designed for production deployment.
MIME::Head 5.420
MIME::Head is a MIME message header (a subclass of Mail::Header). more>>
SYNOPSIS
Before reading further, you should see MIME::Tools to make sure that you understand where this module fits into the grand scheme of things. Go on, do it now. Ill wait.
Ready? Ok...
Construction
### Create a new, empty header, and populate it manually:
$head = MIME::Head->new;
$head->replace(content-type, text/plain; charset=US-ASCII);
$head->replace(content-length, $len);
### Parse a new header from a filehandle:
$head = MIME::Head->read(*STDIN);
### Parse a new header from a file, or a readable pipe:
$testhead = MIME::Head->from_file("/tmp/test.hdr");
$a_b_head = MIME::Head->from_file("cat a.hdr b.hdr |");
Output
### Output to filehandle:
$head->print(*STDOUT);
### Output as string:
print STDOUT $head->as_string;
print STDOUT $head->stringify;
Getting field contents
### Is this a reply?
$is_reply = 1 if ($head->get(Subject) =~ /^Re: /);
### Get receipt information:
print "Last received from: ", $head->get(Received, 0), "n";
@all_received = $head->get(Received);
### Print the subject, or the empty string if none:
print "Subject: ", $head->get(Subject,0), "n";
### Too many hops? Count em and see!
if ($head->count(Received) > 5) { ...
### Test whether a given field exists
warn "missing subject!" if (! $head->count(subject));
Setting field contents
### Declare this to be an HTML header:
$head->replace(Content-type, text/html);
Manipulating field contents
### Get rid of internal newlines in fields:
$head->unfold;
### Decode any Q- or B-encoded-text in fields (DEPRECATED):
$head->decode;
Getting high-level MIME information
### Get/set a given MIME attribute:
unless ($charset = $head->mime_attr(content-type.charset)) {
$head->mime_attr("content-type.charset" => "US-ASCII");
}
### The content type (e.g., "text/html"):
$mime_type = $head->mime_type;
### The content transfer encoding (e.g., "quoted-printable"):
$mime_encoding = $head->mime_encoding;
### The recommended name when extracted:
$file_name = $head->recommended_filename;
### The boundary text, for multipart messages:
$boundary = $head->multipart_boundary;
Unimaginatively-named Calendar 3.7.0
Unimaginatively-named Calendar produces useful, printable calendars on a Web site. more>>
The first version of this software was written in ASP (VBScript) and ran on IIS 4.0 or higher with a database on SQL Server 7.0 or higher. It has since been completely rewritten in Java to run on Tomcat 5.5 or higher with a database on MySQL 3.3 or higher. The feature set is largely the same, though the two versions have no code in common.
Main features:
- The entire calendar is rendered in HTML -- no Flash or Java is used.
- Single-day, multi-day and occassional events are all supported. "Occasional" events are those events that occur multiple times but dont necessarily follow a regular pattern.
- Repeating events are supported and can repeat on a daily, weekly, monthly or yearly basis.
- Events may be categorized for easy administration.
- Nearly everything about the display is themable -- colors, fonts, border styles, first day of the week, weekday column widths, categories, etc.
- A calendar may be setup as a "private" calendar, so the user must be logged in to see it.
- Apple iCal and Mozilla Sunbird users can subscribe to the calendar with one click.
- NEW! The admin tool is password protected!