summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorroot <root@filebitch>2011-08-28 18:28:51 +0200
committerroot <root@filebitch>2011-08-28 18:28:51 +0200
commitfe1a8c2eb90fecabada32a15572e019a7da8fdd9 (patch)
treea4f5e63eb41b0143c60ad5d2fab7afec363e06ba
parent99bdbc04f2be1f0d27c4a4dde692e8a5b6eb8a7e (diff)
parent7bf33493aa27a4462841eb8aa42eda5b974010b7 (diff)
Merge branch 'master' of https://github.com/krebscode/painload
-rw-r--r--.gitignore5
-rw-r--r--cholerab/bling/krebs-v2_320x240.pngbin0 -> 1210 bytes
-rw-r--r--cholerab/bling/krebs_inverse_r0ket.gifbin0 -> 508 bytes
-rw-r--r--cholerab/bling/krebs_plain_r0ket.gifbin0 -> 508 bytes
-rw-r--r--cholerab/install_stories/debian_squeeze_minimal23
-rw-r--r--cholerab/kasten/doku7
-rwxr-xr-xcholerab/knut/index.js4
-rw-r--r--cholerab/news/Candidate49
-rw-r--r--cholerab/news/Issue#032
-rw-r--r--cholerab/news/Issue#162
-rw-r--r--cholerab/shirts/bestellliste55
-rw-r--r--cholerab/thesauron11
-rw-r--r--claws/.gitignore1
-rw-r--r--claws/Makefile18
-rw-r--r--claws/communication.h25
-rw-r--r--claws/rcontrol.c479
-rw-r--r--evan/satz-liste1
-rw-r--r--filebitch/README8
-rwxr-xr-xfilebitch/connect_narf.pl2
-rwxr-xr-xfilebitch/disconnect_narf.pl15
-rwxr-xr-xgod/licht20
-rw-r--r--gold/Makefile3
-rw-r--r--gold/btcguild/index.js (renamed from btc/btcguild/index.js)0
-rwxr-xr-xgold/json/render/ticker7
-rw-r--r--gold/mining/CONFIGURE (renamed from btc/mining/CONFIGURE)0
-rw-r--r--gold/mining/Makefile (renamed from btc/mining/Makefile)0
-rw-r--r--gold/mining/README (renamed from btc/mining/README)0
-rw-r--r--gold/mining/TODO (renamed from btc/mining/TODO)0
-rwxr-xr-xgold/mining/bin/archlinux-cruise-control (renamed from btc/mining/bin/archlinux-cruise-control)0
-rwxr-xr-xgold/mining/bin/ati_temper (renamed from btc/mining/bin/ati_temper)0
-rwxr-xr-xgold/mining/bin/cleanup_tmp (renamed from btc/mining/bin/cleanup_tmp)0
-rwxr-xr-xgold/mining/bin/ensure-router (renamed from btc/mining/bin/ensure-router)0
-rwxr-xr-xgold/mining/bin/ensure-wlan0 (renamed from btc/mining/bin/ensure-wlan0)0
-rw-r--r--gold/mining/poll_btcguild (renamed from btc/mining/poll_btcguild)0
-rw-r--r--gold/mining/user/.config/autostart/startup.desktop (renamed from btc/mining/user/.config/autostart/startup.desktop)0
-rw-r--r--gold/mining/user/mining.ovdr (renamed from btc/mining/user/mining.ovdr)0
-rwxr-xr-xgold/mining/user/startup.sh (renamed from btc/mining/user/startup.sh)0
-rwxr-xr-xgold/mtgox/mtgox.getDepth (renamed from btc/mtgox/mtgox.getDepth)0
-rwxr-xr-xgold/mtgox/mtgox.getTrades (renamed from btc/mtgox/mtgox.getTrades)0
-rwxr-xr-xgold/mtgox/mtgox.ticker (renamed from btc/mtgox/mtgox.ticker)0
-rwxr-xr-xgold/mtgox/ticker_text.sh4
-rwxr-xr-xgold/scex/ticker2
-rwxr-xr-xgold/scex/ticker_text.sh4
-rw-r--r--gold/scex/tracer/index.js89
-rw-r--r--gold/scex/tracer/slurp.js38
-rw-r--r--kachelmann/Makefile11
-rw-r--r--kachelmann/changes24
-rwxr-xr-xkachelmann/wetter (renamed from kachelmann/conditions)2
-rw-r--r--morse/Makefile3
l---------noise/modules/licht1
-rw-r--r--oncology/Makefile23
-rwxr-xr-xoncology/bin/krebshostup2
-rw-r--r--oncology/lcd4linux.conf572
-rw-r--r--ovh/README20
-rw-r--r--ovh/soapi/Makefile25
-rw-r--r--ovh/soapi/README1
-rwxr-xr-xovh/soapi/domainCapabilities28
-rwxr-xr-xovh/soapi/domainInfo28
-rwxr-xr-xovh/soapi/domainList28
-rw-r--r--ovh/soapi/soapi-re-1.24.wsdl20105
-rwxr-xr-xovh/soapi/zoneEntryAdd33
-rwxr-xr-xovh/soapi/zoneEntryDel33
-rwxr-xr-xovh/soapi/zoneEntryList28
-rwxr-xr-xovh/soapi/zoneExport28
-rwxr-xr-xovh/soapi/zoneImport32
-rw-r--r--retiolum/hosts/EUcancER11
-rw-r--r--streams/stream.db1
67 files changed, 21936 insertions, 67 deletions
diff --git a/.gitignore b/.gitignore
index 290de6b0..ee908b65 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1,5 +1,10 @@
a.out
*.pyc
+*.o
+*.a
+.svn/
/bin/
/node/src
/node/out
+/ovh/soapi/src
+/ovh/soapi/SOAPpy
diff --git a/cholerab/bling/krebs-v2_320x240.png b/cholerab/bling/krebs-v2_320x240.png
new file mode 100644
index 00000000..cae1e835
--- /dev/null
+++ b/cholerab/bling/krebs-v2_320x240.png
Binary files differ
diff --git a/cholerab/bling/krebs_inverse_r0ket.gif b/cholerab/bling/krebs_inverse_r0ket.gif
new file mode 100644
index 00000000..58c753e7
--- /dev/null
+++ b/cholerab/bling/krebs_inverse_r0ket.gif
Binary files differ
diff --git a/cholerab/bling/krebs_plain_r0ket.gif b/cholerab/bling/krebs_plain_r0ket.gif
new file mode 100644
index 00000000..d246d0c7
--- /dev/null
+++ b/cholerab/bling/krebs_plain_r0ket.gif
Binary files differ
diff --git a/cholerab/install_stories/debian_squeeze_minimal b/cholerab/install_stories/debian_squeeze_minimal
new file mode 100644
index 00000000..0d5e64b2
--- /dev/null
+++ b/cholerab/install_stories/debian_squeeze_minimal
@@ -0,0 +1,23 @@
+apt-get update
+apt-get upgrade
+apt-get install curl git-core vim make
+curl https://raw.github.com/krebscode/painload/master/util/auto/krebs
+
+KREBSDIR=${1-/krebs}
+[ ! -e $KREBSDIR ] && git clone https://github.com/krebscode/painload ${KREBSDIR}|| printf "painload already deployed\n"
+cp /krebs/infest/skel/etc/profile /etc/profile
+# not copying rc.local
+cp /krebs/infest/skel/home /root
+# not copying .ssh
+cp /krebs/infest/skel/etc/motd.tail /etc/motd.tail
+cp /krebs/infest/skel/etc/motd.tail /etc/motd
+
+# retiolum
+apt-get install python
+# fix matcher script
+# fix makefile
+
+# fix fuer vhosts die tun haben aber noch nicht eingerichtet
+mkdir /dev/net
+mknod /dev/net/tun c 10 200
+mknod /dev/tap0 c 36 16
diff --git a/cholerab/kasten/doku b/cholerab/kasten/doku
new file mode 100644
index 00000000..8246c80f
--- /dev/null
+++ b/cholerab/kasten/doku
@@ -0,0 +1,7 @@
+[23:08:57] makefu> tv\d: wir haben ein neuen status in krebs. die Cancer Knights. Sie arbeiten fuer uns und fuehlen sich besser weil sie ueber den crab people sind. Sie stellen hardware und
+ arbeitskraft bereit, haben aber keine rechte
+[23:09:49] momorient> die cancer knights punchen dann auch für uns wenn wir zu faul sind oder?
+[23:10:22] makefu> infin wird der erste cancer knight
+[23:11:46] makefu> jo, solange das noch nicht implementiert ist haben wir cancer knights
+[23:12:26] makefu> sobald 3 cancer knights zusammen sind koennen sie krebsminister werden und dann zum punchen aufgefordert werden
+
diff --git a/cholerab/knut/index.js b/cholerab/knut/index.js
index e7278678..9c536006 100755
--- a/cholerab/knut/index.js
+++ b/cholerab/knut/index.js
@@ -1,7 +1,7 @@
#! /usr/bin/env node
-var host = '0.0.0.0';
-var port = 42101;
+var host = process.env.host || '127.0.0.1';
+var port = Number(process.env.port) || 42101;
var pipe = '/tmp/krebscode.painload.cholerab.ttycnser.' + process.env.LOGNAME;
diff --git a/cholerab/news/Candidate b/cholerab/news/Candidate
new file mode 100644
index 00000000..8abc0b00
--- /dev/null
+++ b/cholerab/news/Candidate
@@ -0,0 +1,49 @@
+# Krebs News Issue #1 (2011-08-24)
+## Ante Scriptum
+Wer noch kein Krebs hat kann es ganz einfach mit git aus github[-1.1]
+auschecken.
+
+Alle Pfade in den Krebs News beginnend mit `//` bezeichnen das root
+verzeichnis des ausgecheckten krebs ordners ( optimaler weise in `/krebs`).
+
+## 0. godmode im shack
+Der Urkrebs steuert ab heute die Photonenwerfer im shack.
+[`//god/licht`][0.1] ist hierfür verantwortlich.
+
+Um das Licht anzumachen einfach per Telnet auf krebs.shack:
+
+ $ rlwrap nc krebs.shack 23
+
+und dort mit `/licht <Lampe> <0/1>` das licht an/ausschalten.
+Die Lampen sind von Fensterseite richtung Innenhof durchnummeriert(0-3).
+
+Das MoC bedankt sich sehr herzlich bei Ulrich, der auf anfrage die
+Lichsteuerung mit Ethernet ausgestattet und sie fuer die Benutzung zur
+verfuegung gestellt hat.
+
+[0.1]: https://github.com/krebscode/painload/tree/master/god
+
+## 1. Tinc Retiolum updates
+Das retiolum Darknet ueber tinc als vermaschtes VPN ist ein integraler
+Bestandteil der Krebs Infrastruktur. Umso wichtiger ist es, dass die
+installation ueberall imer genau das richtige macht.
+
+KM Pfleidi hat sich gestern (26.08.2011) Retiolum angenommen um es
+sauber auf OSX (und ggf. weiteren Unixartigen OSen) zum laufen zu
+bringen. Ziel ist es die Installation auf ein einfaches
+ $ make -C //retiolum install
+zu beschraenken.
+
+Die Host-Dateien, welche von tinc verwendet werden koennen mit
+ $ make -C //retiolum update
+geupdatet werden. Alle update skripte muessen auf das neue updateverfahren
+ggf. umgestellt werden.
+
+In diesem Kontext sind unter anderem Skript fuer das erraten des richtigen
+Tinc-Konfigurationsordners [1.1] entstanden. Eine aehnliche funktionalitaet
+kann nun fuer verschiedenste weitere module, welche Plattformunabhaengigkeit
+gewaehrleisten sollen verwendet werden.
+
+[1.1] : https://github.com/krebscode/painload/tree/master/retiolum/bin/get-tinc-dir
+
+## 2. KNUT - Die Krebs Notification Utility Toolchain
diff --git a/cholerab/news/Issue#0 b/cholerab/news/Issue#0
new file mode 100644
index 00000000..532c5c3b
--- /dev/null
+++ b/cholerab/news/Issue#0
@@ -0,0 +1,32 @@
+Krebs News 2011-08-24
+======================
+0. urkrebs hat ein usb-relais
+-----------------------
+
+in /krebs/claws ist der code um das relais anzusteuern, "make install"
+sollte das richtige tun, danach steht ein tool names "rcontrol" im
+/krebs/bin ordner zur verfuegung.
+
+1. neuer supernode
+------------------
+seit heut eingerichtet ist ein neuer Supernode fuers Tinc : EUcancER
+
+auch das updaten wurde vereinfacht!
+cd /krebs
+git pull
+make -C retiolum update
+
+und danach in /etc/tinc/retiolum/tinc.conf:
+ConnectTo = EUcancER
+
+die kisten von EUserv sind wohl serioes und recht stable
+
+fuer interessenten:
+http://hoohead.hoohost.org/2011/08/kostenloser-vserver/
+
+ich hab uebrigens die kiste schon seit 2 jahren (und seit dem total
+vergessen), ist genauso eine beta kiste.
+
+Gruesse,
+
+Felix
diff --git a/cholerab/news/Issue#1 b/cholerab/news/Issue#1
new file mode 100644
index 00000000..e5fd78df
--- /dev/null
+++ b/cholerab/news/Issue#1
@@ -0,0 +1,62 @@
+# Krebs News Issue #1 (2011-08-24)
+## 0. krebsco.de & ovh soapi
+
+Krebs hat jetzt ein offizielles Zuhause im Internet. Das Ministerium
+dankt KM momo, dass er die Domain geclaimt und das erste Jahr gesponsort
+hat!
+
+Die Zone kann momentan wie in [`//ovh/README`][0.1] beschrieben bearbeitet
+werden. Wenn ihr das nicht koennt oder wollt, aber dennoch eine Maschine unter
+`krebsco.de` erreichbar haben moechtet, dann schickt eine Bewerbung an uns und
+es wird, wie immer, das Richtige passieren.
+
+Niob: Sehr relevante und awesome [`Graphen`][0.2].
+
+[0.1]: https://github.com/krebscode/painload/tree/master/ovh
+[0.2]: http://euer.krebsco.de/graphs
+
+## 1. SC ist das neue BTC
+
+Zumindest sind chinaman und bergwerk umgestiegen und bringen nun ueber
+100% mehr Gewinn ein, wenn unsere Prognosen stimmen sollten...`^_-`
+
+Die passenden Ticker und Tracer sind unter [`//gold/scex`][1.1] zu
+finden:
+
+ $ //gold/scex/ticker_text.sh # bzw.
+ $ node //gold/scex/tracer
+
+Installer kommen ASAP oder auch nicht.`^_^`
+
+[1.1]: https://github.com/krebscode/painload/tree/master/gold/scex
+
+## 2. Knights
+
+Eine neue Kaste ist entstanden: die Cancer Knights. Sie arbeiten fuer
+uns und fuehlen sich besser, weil sie ueber den Crab People stehen. Sie
+stellen Ressourcen wie Hardware und Arbeitskraft bereit, haben keine
+Rechte. Sobald drei Cancer Knights zusammen kommen haben sie die Chance
+Krebsminister werden. Bevor dies geschieht muessen sie geschossen zu drei
+Krebsministern in der Realen Welt gehen und werden dann in einem noch zu
+definierenden Ritual zu Krebsministern ernannt. Ab dann koennen sie zum
+punchen aufgefordern werden bzw.automatisch punchen bzw. autopunchen.
+
+Infin aus Hannover wird der erste Cancer Knight. Er hat die
+Krebsanimation sowie den 3D-Krebs auf dem CCCAMP11 gemacht.
+Danke Infin, du verdienst den Titel, trage ihn mit Wuerde!
+
+## 3. Thesauron
+
+Wie allgemein gueltig unterliegen alle Sprachen dem staetigen Wandel.
+Um spaeter zu wissen woher wir kamen und die Linguisten unter uns zu
+befriedigen wurde der Grundstein zur Dokumentation der Relevanten
+Sprache, ihrer Entwicklung, etc. gelegt.
+
+Die ersten Schritte sind in [`//cholerab/thesauron`][3.1] zu finden und
+auch _du_ fuehlst dich angesprochen diese zu erweitern! Entweder direkt
+via GitHub's fork & pull request, durch eine formlose Mail an [die Krebs
+Mailingliste][3.2] oder auf einem der anderen, zahllosen Wege, auf dem
+ihr uns errreichen koennt.
+
+[3.1]: https://github.com/krebscode/painload/tree/master/gold/scex
+[3.2]: mailto:krebs@syntax-fehler.de
diff --git a/cholerab/shirts/bestellliste b/cholerab/shirts/bestellliste
index d097ff7d..f775514e 100644
--- a/cholerab/shirts/bestellliste
+++ b/cholerab/shirts/bestellliste
@@ -1,23 +1,32 @@
-tv: 2 M
- 1 S
-ulrich: 1 M
-felix: 2 M
- 1 S
-Lassulus: 2 M
-Pfleidi: 1 L
-Tensai: 1 L
-Momo: 1 XXL
-hadez: 1 L
- 1 M
-Phil: 1 S
-Lukas: 1 M
-Jan: 1 2XL
-Ronny: 1 M
-Marc: 1 L
-Lotho: 1 XL
-Sascha: 1 XL
-Moritz: 1 M
-RIPE: 1 XL
-kh: 1 L
-miefda: 1 L
- 1 XL
+ # S G∃ Feedback
+tv 2 M j-
+ 1 S j-
+ulrich 1 M ?j gut
+felix 2 M jj super qualitaet, sogar nach dem waschen kein bisschen ausgebleicht
+ 1 S jj
+Lassulus 2 M jj
+Pfleidi 1 L -j
+Tensai 1 L jj
+Momo 1 2 jj Der Siebdruck sieht echt gut aus, kein bisschen verschmiert.
+hadez 1 L jj
+ 1 M jj
+Phil 1 S jj
+Lukas 1 M ?j
+Jan 1 2 jj /* bezahlt an makefu */ Zitrone waere leckerer gewesen
+Ronny 1 M jj /* bezahlt an pfleidi */
+Marc 1 L --
+Lotho 1 X --
+Sascha 1 X --
+Moritz 1 M --
+RIPE 1 X --
+kh 1 L jj gute Verarbeitung, guter Gesamteindruck, passt wie angegossen
+miefda 1 L jj
+ 1 X jj
+
+G = Gezahlt ∈ { -, j, ? }
+∃ = Erhalten ∈ { -, j, ? }
+j = ja
+- = nein
+? = vielleicht
+S = Größe ∈ { S, M, L, X = XL, 2 = XXL, ... }
+# = Anzahl
diff --git a/cholerab/thesauron b/cholerab/thesauron
new file mode 100644
index 00000000..07e274f5
--- /dev/null
+++ b/cholerab/thesauron
@@ -0,0 +1,11 @@
+Cholerab n.
+- Kunstwort aus Kollaboration und Cholera. Beschreibt den Zustand, dass
+ Zusammenarbeit niemals gut, einfach und ohne Schmerzen funktioniert.
+- Teamwork-Plattform für Krebscode.
+
+Nahziel n.
+- Ziel mit höchst möglicher Priorität.
+
+Nahzielerfahrung n.
+- das Erlebnis der (endgültigen) Nichterreichung eines Nahziels (obwohl
+ nur noch wenig ((quasi-) infinitesimal viel) nötig gewesen wäre).
diff --git a/claws/.gitignore b/claws/.gitignore
new file mode 100644
index 00000000..5da5924f
--- /dev/null
+++ b/claws/.gitignore
@@ -0,0 +1 @@
+rcontrol
diff --git a/claws/Makefile b/claws/Makefile
new file mode 100644
index 00000000..abfae5eb
--- /dev/null
+++ b/claws/Makefile
@@ -0,0 +1,18 @@
+# Makefile for the rcontrol program
+# We set a setuid bit as this tools needs root privilleges to open the FT232 device.
+
+BINARY=./rcontrol
+
+install: all
+ ln -snf $$PWD/$(BINARY) ../bin/
+
+all:$(BINARY)
+ chown root.root $(BINARY)
+ chmod +s $(BINARY)
+
+$(BINARY): rcontrol.c
+ #punani install libftdi1 libftdi-dev
+ gcc -Wall -lusb -lftdi rcontrol.c -o $(BINARY)
+
+clean:
+ rm -f $(BINARY)
diff --git a/claws/communication.h b/claws/communication.h
new file mode 100644
index 00000000..db4b2c36
--- /dev/null
+++ b/claws/communication.h
@@ -0,0 +1,25 @@
+/* These are the command codes of the relay card. If you change something here you must
+ * recompile the firmware and the control tool. */
+#ifndef _COMMUNICATION_H
+#define _COMMUNICATION_H
+
+#define COMMAND_RELAY_ON 0x01
+#define COMMAND_RELAY_OFF 0x02
+#define COMMAND_RELAY_TOGGLE 0x04
+#define COMMAND_RELAY_SET 0x08
+#define COMMAND_RELAY_TIME_ON 0x10
+#define COMMAND_RELAY_TIME_OFF 0x20
+#define COMMAND_RELAY_TIME_CYCLIC 0x40
+#define COMMAND_GET_STATUS 0x80
+#define COMMAND_DEL_TIMERS 0x81
+#define COMMAND_SETUP_REMOTE 0x82
+
+
+#define RESPONSE_OK 0xff
+#define RESPONSE_INVALID_COMMAND 0xfe
+#define RESPONSE_INVALID_ARGUMENT 0xfd
+#define RESPONSE_TRANSMISSION_ERROR 0xfc
+
+#define COMMANDO_LENGTH 4
+
+#endif
diff --git a/claws/rcontrol.c b/claws/rcontrol.c
new file mode 100644
index 00000000..972c97d0
--- /dev/null
+++ b/claws/rcontrol.c
@@ -0,0 +1,479 @@
+/* +----------------------------------------------------------------------+
+ * | relay control program |
+ * | by mgr, 2007 |
+ * | last change: 2009-01-05 |
+ * | |
+ * | This program is used to control the relay card version 1.0. For more |
+ * | information have a look at the project homepage. |
+ * | You will need libftdi in order to compile this tool. |
+ * | |
+ * | NOTE: For some reason the -l option causes a program crash if I |
+ * | compile this program with -O2. On top of that this code seems to |
+ * | be quite optimal, the program size gets a little larger with -O2, |
+ * | so I suggest you just compile it without optimization. |
+ * +----------------------------------------------------------------------+
+ */
+
+#include <stdio.h>
+#include <stdlib.h>
+#include <unistd.h>
+#include <string.h>
+#include <getopt.h>
+#include <ctype.h>
+#include <time.h>
+#include <ftdi.h> // libftdi
+
+/* Notice that if you experiment with the baud rate, you will have to adapt
+ * the firmware, too. Also I do not recommend it, as 9600 Bauds are completely
+ * sufficient for this application. */
+#define BAUD 9600
+
+/* If you are using more than one FT232-based pieces of hardware at once,
+ * we need a way to uniquely address any given one. This is done by the
+ * serial of the specific device which you can pass to this tool or specify
+ * here. If no serial is specified (NULL), the first found device is opened. */
+#define DEFAULT_FT_SERIAL "A6TMRSS6"
+
+#define VERSION "1.0"
+
+#define OPTION_ADDRESS 0x01
+#define OPTION_INTERVAL 0x04
+#define OPTION_CYCLIC 0x08
+#define OPTION_ON 0x10
+#define OPTION_OFF 0x20
+#define OPTION_TOGGLE 0x40
+#define OPTION_DEL_TIMERS 0x80
+#define OPTION_LIST_DEVICES 0x200
+
+#define EXIT_CODE_OK 0
+#define EXIT_CODE_FAILURE 1
+
+#include "communication.h"
+
+/* function prototypes */
+void usage(char* name);
+void version(void);
+const char* card_strerror(int error);
+int valid_argument(const char* str);
+void exit_gracefully(struct ftdi_context* ftdic, char exit_code);
+
+
+int main(int argc, char **argv)
+{
+ int ret=0, int_argument=0, option_flags=0, long_index=0, i=0, num_ops=0;
+ char c=0;
+ unsigned char buf[COMMANDO_LENGTH], char_argument=0, operation=0;
+ const char* ft_serial=DEFAULT_FT_SERIAL;
+ double double_argument;
+ char buf0[64], buf1[64], buf2[64];
+ time_t start_time;
+
+ //struct ftdi_eeprom eeprom;
+
+ struct ftdi_context ftdic;
+ struct ftdi_device_list *devlist=NULL, *curdev=NULL;
+
+ static struct option long_options[] =
+ {
+ {"help", 0, 0, '?'},
+ {"version", 0, 0, 'V'},
+ {"on", 1, 0, 'o'},
+ {"off", 1, 0, 'f'},
+ {"toggle", 1, 0, 't'},
+ {"set", 1, 0, 's'},
+ {"status", 0, 0, 'S'},
+ {"interval", 1, 0, 'v'},
+ {"cyclic", 0, 0, 'c'},
+ {"address", 1, 0, 'a'},
+ {"delete-timers", 0, 0, 'd'},
+ {"list-devices", 0, 0, 'l'},
+ {0, 0, 0, 0 }
+ };
+
+ /* fetch the command line options */
+ while ((c = getopt_long_only(argc, argv, "?Vo:f:t:s:Sv:ca:dl", long_options,
+ &long_index)) != -1)
+ {
+ switch (c)
+ {
+ case 'o': case 'f': case 't':
+ int_argument = atoi(optarg);
+
+ if (int_argument > 6 || int_argument < 1 || !valid_argument(optarg))
+ {
+ fprintf(stderr, "%s: -s: invalid value `%s' (1-6 is valid)\n",
+ *argv, optarg);
+ return EXIT_CODE_FAILURE;
+ }
+
+ char_argument = (unsigned char)int_argument;
+
+ if (c == 't')
+ {
+ operation = COMMAND_RELAY_TOGGLE;
+ option_flags |= OPTION_TOGGLE;
+ } else if (c == 'o')
+ {
+ operation = COMMAND_RELAY_ON;
+ option_flags |= OPTION_ON;
+ } else
+ {
+ operation = COMMAND_RELAY_OFF;
+ option_flags |= OPTION_OFF;
+ }
+
+ num_ops++;
+
+ break;
+
+ case 's':
+ int_argument = atoi(optarg);
+
+ if (int_argument > (1 << 6)-1 || int_argument < 0 || !valid_argument(optarg))
+ {
+ fprintf(stderr, "%s: -s: invalid value `%s'\n", *argv, optarg);
+ return EXIT_CODE_FAILURE;
+ }
+
+ char_argument = (unsigned char)int_argument;
+ operation = COMMAND_RELAY_SET;
+ num_ops++;
+ break;
+
+ case 'S':
+ operation = COMMAND_GET_STATUS;
+ num_ops++;
+ break;
+
+ case 'v':
+ double_argument = atof(optarg);
+ int_argument = (int)(double_argument*60) /10;
+
+ if (int_argument < 1 || int_argument > (1 << 16)-1)
+ {
+ fprintf(stderr, "%s: -i: invalid interval `%s'\n", *argv, optarg);
+ return EXIT_CODE_FAILURE;
+ }
+
+ option_flags |= OPTION_INTERVAL;
+ break;
+