SoftwareNico Schotteliushttps://www.nico.schottelius.org//software/Nico Schotteliusikiwiki2020-05-14T12:52:54ZHtedhttps://www.nico.schottelius.org//software/Hted/2016-02-25T13:34:26Z2015-02-03T14:47:44Z
<p>Hted is a very simple "HTML editor" written in Java in 1998.</p>
<h2>Getting it</h2>
<h3>Via git</h3>
<p>You can get the latest version via git:</p>
<pre><code>git clone git://git.schottelius.org/Hted
</code></pre>
<p>There is also the usual <a href="http://git.schottelius.org/?p=Hted">gitweb</a>
interface available.</p>
<h3>Archives</h3>
<ul>
<li><a href="https://www.nico.schottelius.org//software/Hted/Hted-1.0.tar">Hted-1.0.tar</a></li>
</ul>
ccollecthttps://www.nico.schottelius.org//software/ccollect/2016-02-25T13:34:26Z2015-02-03T14:47:44Z
<h2>ccollect - (pseudo) incremental backup with different exclude lists using hardlinks and rsync</h2>
<p><p align="center">
<a href="https://www.nico.schottelius.org//software/screenshots/">
<img src="https://www.nico.schottelius.org//software/screenshots/ccollect-0.8-screenshot-20091007.png" title="Example output of ccollect" alt="ccollect-0.8" />
</a>
<p>ccollect backups data from local and remote hosts to your local harddisk.
Although ccollect creates full backups, it requires very less space on the
backup medium, because ccollect uses hardlinks to create an initial copy of
the last backup. Only the inodes used by the hardlinks and the changed files
need additional space.</p>
<p>ccollect uses <a href="http://www.samba.org/rsync/">rsync</a> for synchronisation.
Since ccollect-0.2 there is <a href="http://www.methods.co.nz/asciidoc/">asciidoc</a>
based documentation included in the distribution (see below).
You should also be able to configure ccollect with the help of the example
configuration in conf/.</p>
<ul>
<li><a href="https://www.nico.schottelius.org//software/ccollect/download/">download</a></li>
<li><a href="https://www.nico.schottelius.org//software/ccollect/portability/">portability</a></li>
<li><a href="https://www.nico.schottelius.org//software/ccollect/documentation/">documentation</a></li>
<li><a href="https://www.nico.schottelius.org//software/ccollect/quotes/">quotes</a></li>
<li><a href="https://www.nico.schottelius.org//software/ccollect/support/">support</a></li>
<li><a href="https://www.nico.schottelius.org//software/ccollect/related/">related websites</a></li>
</ul>
cconfhttps://www.nico.schottelius.org//software/cconf/2016-02-25T13:34:26Z2015-02-03T14:47:44Z
<p>cconf is a small and smart build assistant.
cconf aims to be a very lightweight and easy to use build assistant
(like auto*, but with fun).</p>
<h2>how to get it?</h2>
<h3>git</h3>
<ul>
<li>git-clone http://unix.schottelius.org/git/cLinux/cconf</li>
<li><a href="http://git.schottelius.org/?p=cLinux/cconf;a=summary">gitweb</a></li>
</ul>
<h3>releases</h3>
<ul>
<li>cconf-0.0.2: <a href="https://www.nico.schottelius.org//software/cconf/cconf-0.0.2.tar.lzma">cconf-0.0.2.tar.lzma</a> <a href="https://www.nico.schottelius.org//software/cconf/cconf-0.0.2.tar.bz2">cconf-0.0.2.tar.bz2</a> <a href="https://www.nico.schottelius.org//software/cconf/cconf-0.0.2.tar.gz">cconf-0.0.2.tar.gz</a></li>
<li>cconf-0.0.1: <a href="https://www.nico.schottelius.org//software/cconf/cconf-0.0.1.tar.lzma">cconf-0.0.1.tar.lzma</a> <a href="https://www.nico.schottelius.org//software/cconf/cconf-0.0.1.tar.bz2">cconf-0.0.1.tar.bz2</a> <a href="https://www.nico.schottelius.org//software/cconf/cconf-0.0.1.tar.gz">cconf-0.0.1.tar.gz</a></li>
</ul>
<h2>support</h2>
<h3>IRC</h3>
<p>You can join #cLinux on irc.freenode.org.</p>
cdist - usable configuration management - moved to https://www.cdi.st on 2019-05-05https://www.nico.schottelius.org//software/cdist/2019-05-04T22:55:29Z2015-02-03T14:47:44Z
<p>cdist website moved to <a href="https://www.cdi.st">www.cdi.st</a> on 2019-05-05.</p>
ceofhttps://www.nico.schottelius.org//software/ceof/2016-02-25T13:34:26Z2015-02-03T14:47:45Z
<h2>Introduction</h2>
<p>ceof is the implementation and documentation
of <strong><em>EOF</em></strong> (Eris Onion Forwarding),
the secure, peer-to-peer (p2p), decentralised anonymous chat network.</p>
<p>You can read the
<a href="http://git.schottelius.org/?p=ceof;a=blob;f=doc/thesis.pdf">bachelor thesis</a>,
which describes the motivation and goals or you
can view <a href="http://git.schottelius.org/?p=ceof;a=blob;f=doc/appendix/poster.pdf">the poster that was used on the presentation</a>.</p>
<h2>Dependencies</h2>
<ul>
<li>python3</li>
<li>python-gnupg (the package python3-gnupg exists for Debian)</li>
<li>virtualenv (optional, if isolating the environment for ceof)</li>
</ul>
<h2>Installation</h2>
<ul>
<li><p>Clone the git repo</p>
<p> git clone git://git.schottelius.org/ceof</p></li>
</ul>
<p>It is mirrored on github: git@github.com:telmich/ceof.git</p>
<h3>When the distro does not ship a Package for python3-gnupg</h3>
<ul>
<li><p>Create an isolated python environment</p>
<p>virtualenv -p /usr/bin/python3 python-env</p></li>
<li><p>Activate the python environment and install gnupg</p>
<p>. ./python-env/bin/activate
pip install python-gnupg</p></li>
</ul>
<h2>Usage preparation</h2>
<h3>Create public/private key pair</h3>
<p>This may take some time, try to keep your computer busy so you can gather
more entropy.</p>
<pre><code>cd ceof
./src/bin/ceof crypto -g --name "Nico@Tee" --email-address nico-ceof@tee.schottelius.org
</code></pre>
<p>Verify that everything worked fine:</p>
<pre><code>./src/bin/ceof crypto --show
</code></pre>
<h3>Prepare a peer to chat with</h3>
<p>Do the following commands on your host and tell your friend
to do the same vice versa:</p>
<p>Show the fingerprint of your PGP key</p>
<pre><code>./src/bin/ceof crypto --fingerprint
</code></pre>
<p>Show your public key for export</p>
<pre><code>./src/bin/ceof crypto --export
</code></pre>
<p>Once you have retrieved the public key, import it</p>
<pre><code>./src/bin/ceof crypto -i < public-key-file
</code></pre>
<p>Create your friend as a peer using a name and its fingerprint</p>
<pre><code>./src/bin/ceof peer --add yourfriend --fingerprint CF7F9EE965AFA1B5A4D1D4D1385D23177A80B7B0
</code></pre>
<p>Add an address of your peer:</p>
<pre><code>./src/bin/ceof peer apic --add-address tcp://192.168.90.251:42342
</code></pre>
<p><strong><em>Warning</em></strong> You need at least 6 peers for ceof to work.
6 peers is the minimum number of peers required by the protocol to function
safely.</p>
<h3>Prepare noise</h3>
<p>ceof sends regulary noise to prevent people from recognising when you
send messages. To do so, ceof requires input for noise. You can use any kind
files, but for debugging purpose text files are recommened.</p>
<p>For example, you could use the content of /usr/share/doc as a base:</p>
<pre><code>mkdir -p ~/.ceof/noise
find /usr/share/doc -name \*.gz -exec zcat {} \; > ~/.ceof/noise/usr-share-doc
</code></pre>
<p>(abort after a minute or so)</p>
<p>Test that ceof can use the noise:</p>
<pre><code>./src/bin/ceof noise
</code></pre>
<h3>Prepare addresses to listen on</h3>
<p>Add one tcp address to listen on</p>
<pre><code>./src/bin/ceof listener --add tcp://0.0.0.0:42342
</code></pre>
<p>Show enabled listeners:</p>
<pre><code>./src/bin/ceof listener --list
</code></pre>
<h3>Start the server</h3>
<pre><code>./src/bin/ceof server
</code></pre>
<h2>Support</h2>
<p>There are two IRC (!) channels, in which development takes places:</p>
<ul>
<li><a href="irc://IRCNet/!eof">!eof</a> - German</li>
<li><a href="irc://irc.freenode.org/#cstar">#cstar</a> - Multi language (German/English)</li>
</ul>
<p>You can subscribe to the
<a href="http://l.schottelius.org/mailman/listinfo/eof">!eof mailinglist</a>.
You can also <a href="https://www.nico.schottelius.org//about/">contact me directly</a>.</p>
cinithttps://www.nico.schottelius.org//software/cinit/2016-02-25T13:34:26Z2015-02-03T14:47:45Z
<p>cinit is a fast, small and simple init with support for profiles</p>
<h2>Introduction</h2>
<p>cinit is a fast init system with dependency features and
profile support. It was orientated on the design of
Richard Goochs
<a href="http://www.atnf.csiro.au/people/rgooch/linux/boot-scripts/">need concept</a>
and Felix von Leitners
<a href="http://www.fefe.de/minit/">minit</a>.
Minit does not support real dependencies (you don't know whether the
service you depend on really started) and the need concept is somehow
slow (as seen in gentoo).
In addition, minit needs libowfat and dietlibc, which may not be found
on every Unix system.</p>
<h3>Cinit main features</h3>
<ul>
<li>portability: it should run on every Unix</li>
<li>true dependencies (soft and hard!)</li>
<li>parallel execution</li>
<li>highly customisable (see conf/*)</li>
<li>profile support (specify what services to start depending on the profile)</li>
</ul>
<h3>Why should I use cinit?</h3>
<ul>
<li>To significantly speedup the startup process</li>
<li>To use highest level of parallelisation at startup</li>
<li>To benefit from real dependencies (so called <strong><em>needs</em></strong> and <strong><em>wants</em></strong>)</li>
<li>To easily create profiles that can be chosen at startup (even <strong>before</strong> init is started!)</li>
</ul>
<h3>How does cinit work?</h3>
<p>Cinit creates a dependency tree at startup and executes the services.
A service can have two type of dependencies:</p>
<ul>
<li><strong><em>wants</em></strong> describe soft dependencies (i.e. it's not fatal if the wanted service fails to start)</li>
<li><strong><em>needs</em></strong> describe hard dependencies (if the needed service fails, the depending won't be started)</li>
</ul>
<p>Let's have a look at an example:</p>
<pre><code> A
(wants)
/ \
|------> B \ C
| / \ / \
^ (needs) (needs) (wants)
| D E F
| |
|------<------(needs)----|
</code></pre>
<p>Or in words:</p>
<ul>
<li>B and C do not have dependencies</li>
<li>They will be started at the beginning</li>
<li>A wants B and C
<ul>
<li>A waits until B and C are executed and started afterwards,
independently of the success of B and C</li>
<li>A will also be started, if B and C fail to start.</li>
</ul>
</li>
<li>D needs B</li>
<li>D will only be started, if B is successfully started</li>
<li>E needs B and C</li>
<li>E will only be started, if both B and C are successfully started</li>
<li>F wants C and needs B</li>
<li>F will only be started, if B is successfully started</li>
<li>F waits until C is started and is started afterwards</li>
</ul>
<h2>Getting cinit</h2>
<h3>Development versions</h3>
<p>You can get the latest (development) version via git:</p>
<pre><code>git clone git://git.schottelius.org/cLinux/cinit.git
</code></pre>
<p>Additionally, the following other git ressources are available:</p>
<ul>
<li><a href="http://git.schottelius.org/?p=cLinux/cinit.git;a=summary">Gitweb</a>.</li>
<li><a href="http://github.com/telmich/cinit">Mirror at github</a></li>
<li><a href="http://gitorious.org/cinit">Mirror at gitorious</a></li>
</ul>
<h3>Archives</h3>
<p>Have a look at the <a href="https://www.nico.schottelius.org//software/archives">archives</a>.</p>
<h2>Documentation</h2>
<p>The documentation is currently spread all over the <strong><em>doc/</em></strong> directory
within the tarball and is being cleaned up. Additionally there
are two presentations available:</p>
<ul>
<li><a href="https://www.nico.schottelius.org//software/cinit/speeches/2005-10-22/">2005-10-22: (German) speech at Technophil</a></li>
<li><a href="https://www.nico.schottelius.org//software/cinit/speeches/2005-08-06/">2005-08-06: (German) online speech</a></li>
</ul>
<h3>Pre-Configuring</h3>
<p>If you want to fine tune cinit parameters, add different path names,
change the DESTDIR, ... have a look at conf/*.</p>
<h3>Installing cinit</h3>
<p>You can install cinit parallel to any other init-system, it won't
kill other init's config nor /sbin/init, if it exists:</p>
<pre><code># make all install
</code></pre>
<p>This will create /sbin/cinit.
If /sbin/init does not exist, it will be linked to /sbin/cinit.</p>
<h3>Configuring cinit</h3>
<p>You'll have to configure cinit in /etc/cinit and add services,
before you can use it.</p>
<p>Please read doc/configuring.cinit for details.
Please read doc/FAO if there are still questions open.</p>
<p>There are some testing examples below doc/examples/, to be used
as a starting point.</p>
<p>There are currently no tools to merge your existing init-system
to cinit (like sysvinit-merge, bsd-merge or minit-merge) available,
but they are in the making (see various bugs in ditz).</p>
<h3>Configuring the OS / Kernel</h3>
<p>After configuring cinit you need to tell your kernel to boot cinit instead
of your current init system. How to do that depends on your system:</p>
<ul>
<li>Linux/LILO and Linux/yaboot (ppc):</li>
<li>append="init=/sbin/cinit"</li>
<li>grub1 and grub2:</li>
<li>kernel init=/sbin/cinit</li>
</ul>
<h2>Support</h2>
<h3>IRC</h3>
<p>You can join the development <strong><em>IRC channel</em></strong>
<a href="irc://irc.freenode.org/#cstar">#cstar on irc.freenode.org</a>.</p>
<h3>Mailing list</h3>
<p>Bug reports, questions, patches, etc. should be send to the
<a href="http://l.schottelius.org/mailman/listinfo/cinit">cinit mailing list</a>.</p>
<h2>Related websites</h2>
<ul>
<li><a href="http://www.nico.schottelius.org/software/cinit/">cinit</a></li>
<li><a href="http://l.schottelius.org/mailman/listinfo/cinit">cinit mailing list</a></li>
<li>BSD init systems (same codebase):</li>
<li><a href="http://www.freebsd.org/cgi/cvsweb.cgi/src/sbin/init/">FreeBSDs init</a></li>
<li><a href="http://cvsweb.netbsd.org/bsdweb.cgi/src/sbin/init/">NetBSDs init</a></li>
<li><a href="http://www.openbsd.org/cgi-bin/cvsweb/src/sbin/init/">OpenBSDs init</a></li>
<li><a href="http://www.initng.org/">initng</a></li>
<li><a href="http://www.fefe.de/minit/">minit</a></li>
<li><a href="http://smarden.org/runit/">runit</a></li>
<li><a href="http://www.atnf.csiro.au/~rgooch/linux/boot-scripts/">need/simpleinit</a></li>
<li><a href="ftp://ftp.cistron.nl/pub/people/miquels/sysvinit/">sys-v-init</a></li>
<li><a href="http://www.netsplit.com/blog/work/canonical/upstart.html">upstart</a></li>
</ul>
cinv - the Swiss Army Knife for inventory managementhttps://www.nico.schottelius.org//software/cinv/2016-02-25T13:34:26Z2015-02-03T14:47:49Z
<h2>Preamble</h2>
<p>Cinv was formerly known under name the of <strong>sexy</strong>.</p>
<h2>Introduction</h2>
<p>Cinv is the Swiss Army Knife for inventory management.
It allows you to manage hosts and network with a simple command
line interface.</p>
<p>Cinv stores inventory information in a <strong>cconfig database</strong> and
adapts to your environment by supporting custom backends.</p>
<p>In short, cinv can create and remove hosts and configure networks -
depending on your backend this means:</p>
<ul>
<li>cinv manages Virtual Machines</li>
<li>cinv generates IPv4 address allocation (DHCP)</li>
<li>cinv sets up your domain name system (DNS)</li>
</ul>
<h2>Status</h2>
<p>The release process for cinv version 2.0 has started and is planned
to happen in November 2012.</p>
<h2>Installation</h2>
<p>Download cinv from git (<a href="http://git.schottelius.org/?p=cinv;a=summary">gitweb</a>):</p>
<pre><code>% git clone git://git.schottelius.org/cinv
</code></pre>
<p>Afterwards ensure that the <strong>bin</strong> directory is in your PATH and that you have python3
installed:</p>
<pre><code>% which python3
/usr/bin/python3
% cd cinv
% export PATH=$PATH:$(pwd -P)/bin
</code></pre>
<p>Now you should be able to display the current cinv version:</p>
<pre><code>% cinv -V
cinv 1.9.11-1-g837532c
</code></pre>
<h3>Mirrors</h3>
<ul>
<li>git://github.com/telmich/cinv.git (<a href="https://github.com/telmich/cinv">github</a>)</li>
</ul>
<h2>Support</h2>
<h3>IRC</h3>
<p>You can join the development <strong><em>IRC channel</em></strong>
<a href="irc://irc.freenode.org/#cstar">#cstar on irc.freenode.net</a>.</p>
creaturehttps://www.nico.schottelius.org//software/creature/2016-02-25T13:34:26Z2015-02-03T14:47:49Z
<p>creature - manage virtual machines</p>
<h2>What's creature?</h2>
<p>Easy virtual machine management with support for machines, pools, storages and supervisors.
It is intended to be a frontend for different supervisors, but the focus for the initial
release is on qemu/kvm.</p>
<h2>Requirements</h2>
<ul>
<li>posix shell</li>
<li>the used supervisor</li>
</ul>
<h2>Download</h2>
<h3>Via git</h3>
<p>Clone it via</p>
<pre><code>git clone git://github.com/telmich/creature.git
</code></pre>
<p>Or browse on <a href="http://github.com/telmich/creature">github</a></p>
<h2>See also</h2>
<ul>
<li><a href="http://code.google.com/p/ganeti/">ganeti</a></li>
<li><a href="http://libvirt.org/">libvirt</a></li>
</ul>
ctt - time tracking for geekshttps://www.nico.schottelius.org//software/ctt/2020-05-14T12:52:54Z2015-02-03T14:47:49Z
<h2>Introduction</h2>
<p>Ever wondered how much you work compared to what you should?
Are you in the need to record working time for a customer?
Do you want something that is very simple, geek compatible
and runs on the command line? Then you may have found the right
software.</p>
<h2>Installation</h2>
<p>Get ctt via git:</p>
<pre><code>git clone https://code.ungleich.ch/ungleich-public/ctt.git
</code></pre>
<h2>Examples</h2>
<pre><code># Track some time
% ctt track test
Comment: Did some cool work
# Track for a given time range
% ctt track --sd 2013-04-29-1000 --ed 2013-05-29-1200 test
Comment: Long working period
# Track (keep running), but specify different start date
% ctt track --sd 2013-04-29-0800 test
Comment: Started early today
# Track without prompting for a comment
% ctt track -n test
# List available projects
% ctt listprojects
[...]
# List all entries of this month for project test
% ctt report test
[...]
# List all entries from January
% ctt report --sd 2013-01-01 --ed 2013-01-31 test
# List all entries from January matching either rails ruby or cdist
% ctt report --sd 2013-01-29 --ed 2013-04-29 -e "(rails|ruby|cdist)" test
# The same, but case insensitive
% ctt report --sd 2013-01-29 --ed 2013-04-29 -e "(rails|ruby|cdist)" -i test
</code></pre>
<h2>Support</h2>
<p>You can find us on matrix, we
<a href="https://chat.with.ungleich.ch">chat.with.ungleich.ch</a>.</p>
<p>Issues can be opened on https://code.ungleich.ch/ungleich-public/ctt.</p>
cuc - manage a UNIX companyhttps://www.nico.schottelius.org//software/cuc/2016-02-25T13:34:26Z2015-02-03T14:47:49Z
<h2>Introduction</h2>
<p>cuc is a shell orientated management tool for Unix gurus running
geeky Unix companies. It is intented to be run by geeks and requires
<strong>git</strong> and <strong>shell</strong>.</p>
<h3>Documentation</h3>
<p>Use <strong>uc help me</strong>.</p>
<h3>OS support</h3>
<p>cdist should run on any Posix alike OS.</p>
<h2>Getting cuc</h2>
<pre><code>git clone git://git.schottelius.org/cuc
cd cuc
export PATH=$PATH:$(pwd -P)/bin
</code></pre>
<h3>Update</h3>
<p>To upgrade in the current branch use</p>
<pre><code>git pull
</code></pre>
<h2>Support</h2>
cunihttps://www.nico.schottelius.org//software/cuni/2016-02-25T13:34:29Z2015-02-03T14:47:49Z
<h2>About</h2>
<p>Cuni installs unix network installers. The aim of cuni is to
be able to install any unix from any unix via network:</p>
<ul>
<li>cuni creates a structure usable for PXE-networkbooting and installing</li>
</ul>
<p>To make use of what cuni provides, you need to run a tftp server
to be able to install clients over the network.</p>
<p>Cuni is a very basic infrastructure tool and helps you to setup
and upgrade install servers.</p>
<h2>Using cuni</h2>
<p>Type <strong><em>cuni</em></strong> and read the usage description.</p>
<h3>Getting cuni</h3>
<pre><code>git clone git://git.schottelius.org/cuni
</code></pre>
<h2>Using the unix installers</h2>
<p>Most unix installers have different semantics for execution.
Some of them are able to do automatic installations, some of
them even need a hint on what to boot from where.</p>
<p>It is planned to make this information available directly in
cuni, but until then, examples on how to use them are provided
here:</p>
<h3>Debian/Ubuntu</h3>
<ul>
<li>Can be automated using Preseed</li>
</ul>
<p>Syslinux sample code:</p>
<pre><code>LABEL debian_lenny_amd64
MENU LABEL Debian Lenny amd64
KERNEL syslinux/pxechain.com
APPEND ::debian/amd64/lenny/pxelinux.0
</code></pre>
<h3>OpenBSD</h3>
<p>Syslinux sample code:</p>
<pre><code># works, needs "openbsd/bsd.rd"
LABEL openbesdtest
MENU LABEL OpenBSD
KERNEL syslinux/pxechain.com
APPEND ::openbsd/pxeboot
</code></pre>
<h2>Adding a new OS installer</h2>
<p>Assume, you want to add support for the installer of OS "kroet", which requires
the arguments "version" and "arch".</p>
<pre><code>* Define arguments needed
kroet_args="version arch"
# Add code here, that is executed in the destination directory
cuni_kroet()
{
# MUST Define ddir: subdirectory which contains the actual installer
ddir="${arch}/${version}"
# MUST Define bootfile: file that should be booted
bootfile="$ddir/pxelinux.0"
# create os specific directory structure
# get os specific installer
}
</code></pre>
<h2>Testing a new OS installer</h2>
<p>You can test the new installation with qemu for example:</p>
<pre><code>qemu-kvm -boot n -net nic -net user,hostname=cunitest,tftp=/home/services/tftp/root,bootfile=/pxelinux.0
</code></pre>
fuihttps://www.nico.schottelius.org//software/fui/2016-02-25T13:34:26Z2015-02-03T14:47:49Z
<p>fui - fancy user interface</p>
<p><img src="https://www.nico.schottelius.org//software/screenshots/intro-cursor-correct-screenshot-20100304.png" title="fui intro screen" alt="fui" /></p>
<h2>What's fui?</h2>
<p>Fui is a decentralised crypted chat program user interface.
It is the first user interface for <span class="createlink">ceofhack</span>.</p>
<h2>Requirements</h2>
<ul>
<li>ruby</li>
<li>ncurses-ruby</li>
<li>ceofhack</li>
</ul>
<h2>Download</h2>
<h3>Via git</h3>
<p>Clone it via</p>
<pre><code>git clone git://git.schottelius.org/fui
</code></pre>
<p>Or browse <a href="http://git.schottelius.org/?p=fui">gitweb</a>.</p>
<h3>Releases</h3>
<ul>
<li><a href="https://www.nico.schottelius.org//software/fui/fui-0.3.tar">fui-0.3.tar</a></li>
<li><a href="https://www.nico.schottelius.org//software/fui/fui-0.2.tar">fui-0.2.tar</a></li>
<li><a href="https://www.nico.schottelius.org//software/fui/fui-0.1.tar">fui-0.1.tar</a></li>
</ul>
<h2>Documentation</h2>
<h3>Usage</h3>
<pre><code>ruby main.rb
</code></pre>
<h3>Commands</h3>
<ul>
<li><em>text</em>: print text to message window</li>
<li>/quit: exit fui</li>
</ul>
<h2>See also</h2>
<ul>
<li><a href="http://invisible-island.net/ncurses/ncurses-intro.html">Ncurses intro</a></li>
<li><a href="http://web.cs.mun.ca/~rod/ncurses/ncurses.html">Writing Programs with NCURSES</a></li>
<li><a href="http://ncurses-ruby.berlios.de/">ncurses-ruby</a></li>
<li><a href="irc://irc.freenode.net/#cstar">IRC</a></li>
</ul>
gpm - general purpose mousehttps://www.nico.schottelius.org//software/gpm/2016-02-25T13:34:26Z2015-02-03T14:47:49Z
<h2>How to get gpm?</h2>
<p>You can browse the <a href="https://www.nico.schottelius.org//software/archives">static archives</a> or use git:</p>
<pre><code>git clone git://git.schottelius.org/gpm
</code></pre>
<p>The archives are mirrored at
<a href="http://www.ar.linux.it/pub/gpm/">ar.linux.it</a>,
the git repository is mirrored at
<a href="https://github.com/telmich/gpm">github</a>.</p>
<h2>Support</h2>
<p>There is the irc channel <a href="https://www.nico.schottelius.org//software/irc.freenode.org/#gpm">#gpm</a> on irc.freenode.org.</p>
<p>The mailing list devoted to gpm is "gpm@lists.linux.it".
In order to subscribe to the mailing list, visit
<a href="http://lists.linux.it/listinfo/gpm">lists.linux.it</a>
or send a message with "subscribe" in its body to gpm-request@lists.linux.it.
For example:</p>
<pre><code>echo subscribe | mail gpm-request@lists.linux.it
</code></pre>
<p>Or you can browse the
<a href="http://lists.linux.it/pipermail/gpm/">mailing list archive</a>.</p>
gpm2https://www.nico.schottelius.org//software/gpm2/2016-02-25T13:34:29Z2015-02-03T14:48:08Z
<p>You know, <a href="https://www.nico.schottelius.org//software/gpm/">gpm</a> is a hack.</p>
<p>The idea of gpm2 is to be a nicer hack:</p>
<ul>
<li>Support multiple mice</li>
<li>Do not draw stuff, but write gpm2 client to do so (os/terminal specific stuff)</li>
<li>Usable under different OS</li>
<li>Modular design, easy way to add new mice protocols</li>
<li>Allow hotplugging of mice (i.e. gpm2d can run without any mice at startup)</li>
</ul>
<h2>Trying out gpm2</h2>
<p>gpm2 is in its early design stage, but can so far display movement of a
ps/2 compatible mouse.</p>
<pre><code>git clone git://git.schottelius.org/gpm2
cd gpm2
./gpm2hack.sh /dev/input/mice
# move the mouse
# press enter key to end demonstration
</code></pre>
<p>If you do not see mouse movement deltas, either your mouse in connected
to a different device or you probably do not have permissions to communicate
with it.</p>
<h2>Development</h2>
<h3>Names</h3>
<ul>
<li>gpm2_*: Stuff that may appear in a library</li>
<li>*: Stuff that will only be used in the gpm2 main process</li>
</ul>
<h2>Mouse protocols</h2>
<p>Protocols in gpm2 are <em>not</em> part of the main system. Instead,
each protocol is implemented in its own binary, which is called
from gpm2d.</p>
<p>This prevents to create just another ugly "static" struct array
or the need to dlopen() and friends.</p>
<h3>Implementing a protocol</h3>
<p>If you want to implement a mouse protocol, there are some things
to take care of:</p>
<ul>
<li>You have a free choice of the programming language</li>
<li>gpm2d will exec() gpm2- from its path,</li>
<li>gpm2d will connect stdin stdout of gpm2- to the device file</li>
<li>gpm2d will connect stderr to gpm2d, so gpm2- can send messages</li>
<li>gpm2d can drop priviliges to a specific, non-root user</li>
<li>gpm2d will send SIGTERM to gpm2- to signal normal termination</li>
<li>gpm2- should close the file and exit</li>
<li>gpm2- reports about events via stderr</li>
</ul>
<h3>Reading options from gpm2d</h3>
<p>If at some point gpm2d needs to pass protocol options to the protocol
handler, they can be found in GPM2_PROTO_OPTS.</p>
<h2>Support</h2>
<h3>IRC</h3>
<p>You can join #gpm on irc.freenode.org.</p>
<h2>WARNING</h2>
<p>Everything below this line are just random thoughts.</p>
<h2>Events</h2>
<p>Events are produced by the mice handlers and forwarded to gpm2d.</p>
<h3>Format</h3>
<p>As gpm2 can be used independently of the programming language, no
binary data is exchanged. An event always consists of one line
(terminated with \n), which contains up to GPM2_LINE_MAX characters
(including \n).</p>
<h2>Client channel</h2>
<p>Clients for gpm2 do not need to be c programs, but can be of any kind.
The communication is a simple ASCII stream.</p>
<h3>Client connection to gpm2d</h3>
<p>Clients need to open /var/run/gpm2/gpm2d.sock to connect to gpm2d.</p>
<h3>Event: mouse_event</h3>
<pre><code>mouseid ev-type ... (more to follow)
</code></pre>
<h3>Event: mouse_added </h3>
<h3>Event: mouse_removed </h3>
<h2>Control channel</h2>
<p>The control channel can be used to change things in gpm2, whereas
the client channel is read-only.</p>
<h3>Control connection to gpm2d</h3>
<p>If you want to control gpm2d, you need to open /var/run/gpm2/gpm2d-control.sock.</p>
<h3>Command: mouse_add </h3>
<h3>Command: mouse_remove </h3>
Machine Booking System (mbs)https://www.nico.schottelius.org//software/mbs/2016-02-25T13:34:26Z2015-02-03T14:48:08Z
<p>The machine booking system allows users of the ETH Zurich to book machines.
It could be easily adjusted to support other institutions, with or without
LDAP authentication.</p>
<h2>Screenshots!</h2>
<ul>
<li><a href="https://www.nico.schottelius.org//software/screenshots/booking-overview-screenshot-20101002.png" title="Overview of bookings">booking overview</a></li>
<li><a href="https://www.nico.schottelius.org//software/screenshots/booking-successful-screenshot-20101002.png" title="Booking successful">booking successful</a></li>
<li><a href="https://www.nico.schottelius.org//software/screenshots/booking-error-screenshot-20101002.png" title="Booking error">booking error</a></li>
<li><a href="https://www.nico.schottelius.org//software/screenshots/free-machines-screenshot-20101002.png" title="Free machines">free machines</a></li>
<li><a href="https://www.nico.schottelius.org//software/screenshots/used-machines-screenshot-20101002.png" title="Used machines">used machines</a></li>
<li><a href="https://www.nico.schottelius.org//software/screenshots/admin-screenshot-20101002.png" title="Admin view">admin view</a></li>
</ul>
<h2>Installation</h2>
<h3>Get mbs</h3>
<pre><code>git clone git://git.schottelius.org/mbs
</code></pre>
<p>Mirrors (all should be up-to-date):</p>
<ul>
<li> git://github.com/telmich/mbs.git</li>
<li> git://git.sans.ethz.ch/mbs</li>
</ul>
<h3>Requirements</h3>
<p>To get mbs up and running, you need ruby and rails and the gems specified
in the Gemfile. You may use <a href="http://rvm.beginrescueend.com/">rvm</a>
to assist you, like the following commandline:</p>
<pre><code>rvm install ruby-1.8.7
rvm ruby-1.8.7
rvm gemset create mbs
rvm ruby-1.8.7@mbs
gem install bundler
cd mbs/
bundle install
</code></pre>
<h3>Initialise Database</h3>
<pre><code>cd mbs
rake db:setup
</code></pre>
<p>You can also use</p>
<pre><code>rake bootstrap
</code></pre>
<p>to add some example data.</p>
<h2>Setup</h2>
<p>After mbs is up and running, you need to setup some basic data, before
you can actually use it.</p>
<h3>Authentication</h3>
<p>The authentication part is defined in
<strong>app/controllers/application_controller.rb</strong> and currently bound to
Nethz-LDAP-Authentication, but can easily be adopted to other
systems.</p>
<p>The nethz method uses the input username and password and binds to
<strong>ldaps02.ethz.ch</strong> (most reliable). If that succeeds, the username
is copied into the database, to create an id.</p>
<h3>Machines types</h3>
<p>mbs is heavily focussed on machine types. So the first thing is to
select <strong><em>admin => machine types => new machine type</em></strong> and create
a new machine type with a number of associated machines.</p>
<h2>Usage</h2>
<p>Now you are ready to use mbs!</p>
<h3>Bookings</h3>
<p>After you are authenticated, you can create bookings,
select <strong>new booking</strong>.</p>
<h3>Admin</h3>
<p>The admin area is accessable for everybody, because everybody
authenticated is trusted. It is reachable below <strong>/admin</strong>,
but not linked, because it may confuse users.</p>
mini-lpdhttps://www.nico.schottelius.org//software/mini-lpd/2016-02-25T13:34:29Z2015-02-03T14:48:08Z
<p>A small non-queuing lpd</p>
<h2>Introduction</h2>
<p>mini-lpd is a small lpd. It does not care about the control file sent, nor
does it honour any lpd specific commands, though it will acknowlegde them.
It takes a document and puts it on the printer. The client will have
to wait until it is printed, as mini-lpd does not have any queue (well, it has,
but only to queue tcp/ip connections ;-).
mini-lpd should run and compile on every UNIX (Linux, BSD, SunOS, ...)
(as of version 0.4).</p>
<h2>download</h2>
<ul>
<li><a href="https://www.nico.schottelius.org//software/mini-lpd/mini-lpd-0.4.tar.bz2">mini-lpd-0.4.tar.bz2</a> - using poll instead of sigio makes mini-lpd portable</li>
<li><a href="https://www.nico.schottelius.org//software/mini-lpd/mini-lpd-0.3.tar.bz2">mini-lpd-0.3.tar.bz2</a> - less debug, some cleanups</li>
<li><a href="https://www.nico.schottelius.org//software/mini-lpd/mini-lpd-0.2.tar">mini-lpd-0.2.tar</a> - first working version</li>
<li><a href="https://www.nico.schottelius.org//software/mini-lpd/mini-lpd-0.1.tar">mini-lpd-0.1.tar</a> - initial (broken) release</li>
</ul>
Sexy has been renamed to cinvhttps://www.nico.schottelius.org//software/sexy/2016-02-25T13:34:29Z2015-02-03T14:48:08Z
<p>Sexy has been renamed to
<strong><a href="https://www.nico.schottelius.org//software/cinv/">cinv</a></strong>.</p>
smtp loggerhttps://www.nico.schottelius.org//software/smtp_logger/2016-02-25T13:34:26Z2015-02-03T14:48:08Z
<h2>Introduction</h2>
<p>smtp_logger is a logging smtp proxy. It is designed to aid mail server
administrators debugging their smtp connections.</p>
<h2>How does it work?</h2>
<pre><code> ------------------
| SMTP Client(s) |
------------------
|
| want to connect to smtp-real.example.org
|
------------------
| Router/firewall|
------------------
|
| redirects data to loghost
|
------------------
| loghost |
------------------
|
| Saves connection data and forwards them
|
------------------
| smtp-real | processes the mail
------------------
</code></pre>
<p>Have a look at the README file for further instructions.</p>
<h2>How to get smtp_logger</h2>
<h3>Releases</h3>
<ul>
<li><strong>smtp_logger-0.1</strong>: the first public release
(<a href="https://www.nico.schottelius.org//software/smtp_logger/smtp_logger-0.1.tar">tar</a>
<a href="https://www.nico.schottelius.org//software/smtp_logger/smtp_logger-0.1.tar.lzma">lzma</a>
<a href="https://www.nico.schottelius.org//software/smtp_logger/smtp_logger-0.1.tar.gz">gz</a>
<a href="https://www.nico.schottelius.org//software/smtp_logger/smtp_logger-0.1.tar.bz2">bz2</a>)</li>
</ul>
<h3>Development</h3>
<p>The latest development code can be found in git.
You can view latest changes in
<a href="http://git.schottelius.org/?p=smtp_logger">gitweb</a>
or clone the latest sources using</p>
<pre><code>git clone git://git.schottelius.org/smtp_logger
</code></pre>
<p>To submit changes, simply follow the instructions
on <a href="http://book.git-scm.com/4_setting_up_a_public_repository.html">how to setup a public git repo</a>.</p>
<p>There are also some
<a href="http://cia.vc/stats/project/smtp_logger">CIA bot statistics</a> available.</p>
<h2>Support</h2>
<h3>IRC</h3>
<ul>
<li><a href="irc://irc.freenode.org/#cstar">#cstar</a> - Multi language (German/English)</li>
</ul>
<h3>Mail</h3>
<p>You can also <a href="https://www.nico.schottelius.org//about/">contact me directly</a>.</p>