diff options
author | root <root@filebitch> | 2011-08-28 18:28:51 +0200 |
---|---|---|
committer | root <root@filebitch> | 2011-08-28 18:28:51 +0200 |
commit | fe1a8c2eb90fecabada32a15572e019a7da8fdd9 (patch) | |
tree | a4f5e63eb41b0143c60ad5d2fab7afec363e06ba | |
parent | 99bdbc04f2be1f0d27c4a4dde692e8a5b6eb8a7e (diff) | |
parent | 7bf33493aa27a4462841eb8aa42eda5b974010b7 (diff) |
Merge branch 'master' of https://github.com/krebscode/painload
-rw-r--r-- | .gitignore | 5 | ||||
-rw-r--r-- | cholerab/bling/krebs-v2_320x240.png | bin | 0 -> 1210 bytes | |||
-rw-r--r-- | cholerab/bling/krebs_inverse_r0ket.gif | bin | 0 -> 508 bytes | |||
-rw-r--r-- | cholerab/bling/krebs_plain_r0ket.gif | bin | 0 -> 508 bytes | |||
-rw-r--r-- | cholerab/install_stories/debian_squeeze_minimal | 23 | ||||
-rw-r--r-- | cholerab/kasten/doku | 7 | ||||
-rwxr-xr-x | cholerab/knut/index.js | 4 | ||||
-rw-r--r-- | cholerab/news/Candidate | 49 | ||||
-rw-r--r-- | cholerab/news/Issue#0 | 32 | ||||
-rw-r--r-- | cholerab/news/Issue#1 | 62 | ||||
-rw-r--r-- | cholerab/shirts/bestellliste | 55 | ||||
-rw-r--r-- | cholerab/thesauron | 11 | ||||
-rw-r--r-- | claws/.gitignore | 1 | ||||
-rw-r--r-- | claws/Makefile | 18 | ||||
-rw-r--r-- | claws/communication.h | 25 | ||||
-rw-r--r-- | claws/rcontrol.c | 479 | ||||
-rw-r--r-- | evan/satz-liste | 1 | ||||
-rw-r--r-- | filebitch/README | 8 | ||||
-rwxr-xr-x | filebitch/connect_narf.pl | 2 | ||||
-rwxr-xr-x | filebitch/disconnect_narf.pl | 15 | ||||
-rwxr-xr-x | god/licht | 20 | ||||
-rw-r--r-- | gold/Makefile | 3 | ||||
-rw-r--r-- | gold/btcguild/index.js (renamed from btc/btcguild/index.js) | 0 | ||||
-rwxr-xr-x | gold/json/render/ticker | 7 | ||||
-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-x | gold/mining/bin/archlinux-cruise-control (renamed from btc/mining/bin/archlinux-cruise-control) | 0 | ||||
-rwxr-xr-x | gold/mining/bin/ati_temper (renamed from btc/mining/bin/ati_temper) | 0 | ||||
-rwxr-xr-x | gold/mining/bin/cleanup_tmp (renamed from btc/mining/bin/cleanup_tmp) | 0 | ||||
-rwxr-xr-x | gold/mining/bin/ensure-router (renamed from btc/mining/bin/ensure-router) | 0 | ||||
-rwxr-xr-x | gold/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-x | gold/mining/user/startup.sh (renamed from btc/mining/user/startup.sh) | 0 | ||||
-rwxr-xr-x | gold/mtgox/mtgox.getDepth (renamed from btc/mtgox/mtgox.getDepth) | 0 | ||||
-rwxr-xr-x | gold/mtgox/mtgox.getTrades (renamed from btc/mtgox/mtgox.getTrades) | 0 | ||||
-rwxr-xr-x | gold/mtgox/mtgox.ticker (renamed from btc/mtgox/mtgox.ticker) | 0 | ||||
-rwxr-xr-x | gold/mtgox/ticker_text.sh | 4 | ||||
-rwxr-xr-x | gold/scex/ticker | 2 | ||||
-rwxr-xr-x | gold/scex/ticker_text.sh | 4 | ||||
-rw-r--r-- | gold/scex/tracer/index.js | 89 | ||||
-rw-r--r-- | gold/scex/tracer/slurp.js | 38 | ||||
-rw-r--r-- | kachelmann/Makefile | 11 | ||||
-rw-r--r-- | kachelmann/changes | 24 | ||||
-rwxr-xr-x | kachelmann/wetter (renamed from kachelmann/conditions) | 2 | ||||
-rw-r--r-- | morse/Makefile | 3 | ||||
l--------- | noise/modules/licht | 1 | ||||
-rw-r--r-- | oncology/Makefile | 23 | ||||
-rwxr-xr-x | oncology/bin/krebshostup | 2 | ||||
-rw-r--r-- | oncology/lcd4linux.conf | 572 | ||||
-rw-r--r-- | ovh/README | 20 | ||||
-rw-r--r-- | ovh/soapi/Makefile | 25 | ||||
-rw-r--r-- | ovh/soapi/README | 1 | ||||
-rwxr-xr-x | ovh/soapi/domainCapabilities | 28 | ||||
-rwxr-xr-x | ovh/soapi/domainInfo | 28 | ||||
-rwxr-xr-x | ovh/soapi/domainList | 28 | ||||
-rw-r--r-- | ovh/soapi/soapi-re-1.24.wsdl | 20105 | ||||
-rwxr-xr-x | ovh/soapi/zoneEntryAdd | 33 | ||||
-rwxr-xr-x | ovh/soapi/zoneEntryDel | 33 | ||||
-rwxr-xr-x | ovh/soapi/zoneEntryList | 28 | ||||
-rwxr-xr-x | ovh/soapi/zoneExport | 28 | ||||
-rwxr-xr-x | ovh/soapi/zoneImport | 32 | ||||
-rw-r--r-- | retiolum/hosts/EUcancER | 11 | ||||
-rw-r--r-- | streams/stream.db | 1 |
67 files changed, 21936 insertions, 67 deletions
@@ -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 Binary files differnew file mode 100644 index 00000000..cae1e835 --- /dev/null +++ b/cholerab/bling/krebs-v2_320x240.png diff --git a/cholerab/bling/krebs_inverse_r0ket.gif b/cholerab/bling/krebs_inverse_r0ket.gif Binary files differnew file mode 100644 index 00000000..58c753e7 --- /dev/null +++ b/cholerab/bling/krebs_inverse_r0ket.gif diff --git a/cholerab/bling/krebs_plain_r0ket.gif b/cholerab/bling/krebs_plain_r0ket.gif Binary files differnew file mode 100644 index 00000000..d246d0c7 --- /dev/null +++ b/cholerab/bling/krebs_plain_r0ket.gif 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; + |