From befe04dcd3276c0c51bc9d79e4d327ed5dceb3c0 Mon Sep 17 00:00:00 2001 From: euer Date: Sun, 23 Dec 2012 22:37:34 +0100 Subject: //morse -> //util/morse --- infest/skel/etc/rc.local | 2 +- morse/COPYING | 14 ---- morse/Makefile | 3 - morse/README | 32 --------- morse/morse.sh | 160 --------------------------------------------- roboctl/index.js | 18 ----- roboctl/lib/irc.js | 67 ------------------- sandbox/roboctl/index.js | 18 +++++ sandbox/roboctl/lib/irc.js | 67 +++++++++++++++++++ util/morse/COPYING | 14 ++++ util/morse/Makefile | 3 + util/morse/README | 32 +++++++++ util/morse/morse.sh | 160 +++++++++++++++++++++++++++++++++++++++++++++ 13 files changed, 295 insertions(+), 295 deletions(-) delete mode 100644 morse/COPYING delete mode 100644 morse/Makefile delete mode 100644 morse/README delete mode 100755 morse/morse.sh delete mode 100644 roboctl/index.js delete mode 100644 roboctl/lib/irc.js create mode 100644 sandbox/roboctl/index.js create mode 100644 sandbox/roboctl/lib/irc.js create mode 100644 util/morse/COPYING create mode 100644 util/morse/Makefile create mode 100644 util/morse/README create mode 100755 util/morse/morse.sh diff --git a/infest/skel/etc/rc.local b/infest/skel/etc/rc.local index f224f9e4..7cf99aeb 100755 --- a/infest/skel/etc/rc.local +++ b/infest/skel/etc/rc.local @@ -1,7 +1,7 @@ #! /bin/sh -e morse() { - /krebs/morse/morse.sh "$@" + /krebs/util/morse/morse.sh "$@" } morse -l 42 -f 4000 `hostname` diff --git a/morse/COPYING b/morse/COPYING deleted file mode 100644 index d28e4178..00000000 --- a/morse/COPYING +++ /dev/null @@ -1,14 +0,0 @@ - DO WHAT THE FUCK YOU WANT TO PUBLIC LICENSE - Version 23, December 1984 - - Copyright (C) 2011 tv@shackspace - - Everyone is permitted to copy and distribute verbatim or modified - copies of this license document, and changing it is allowed as long - as the name is changed. - - DO WHAT THE FUCK YOU WANT TO PUBLIC LICENSE - TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION - - 0. You just DO WHAT THE FUCK YOU WANT TO. - diff --git a/morse/Makefile b/morse/Makefile deleted file mode 100644 index 2afa845e..00000000 --- a/morse/Makefile +++ /dev/null @@ -1,3 +0,0 @@ -.phony: all -all: - ln -fs $$PWD/morse.sh ../bin/morse diff --git a/morse/README b/morse/README deleted file mode 100644 index 67951c00..00000000 --- a/morse/README +++ /dev/null @@ -1,32 +0,0 @@ -MORSE(1) MORSE(1) - -NAME - morse.sh - morse code generator - -SYNOPSIS - morse [-l N] [-f N] [-c|-x] [text...] - -DESCRIPTION - Generate visible or audible from text or stdin. - -OPTIONS - -l N use N milliseconds as length of dit. Default: 60 ms - - -f N beep at N Hz. Default: 2000 Hz - - -c compile only. Morse will output morse-executable morse code. - - -x execute only. Interpret text as morse code, i.e. do not try - to convert text or stdin. - -BUGS - None.^_^ - -REPORTING BUGS - Please use Github's issue tracking system. - -AUTHOR - This program was written by tv@shackspace and is distributed under the - Do What The Fuck You Want To Public License. - - April 2011 MORSE(1) diff --git a/morse/morse.sh b/morse/morse.sh deleted file mode 100755 index c84538ca..00000000 --- a/morse/morse.sh +++ /dev/null @@ -1,160 +0,0 @@ -#! /bin/sh -set -euf - -freq=2000 -dit=60 -mode=compile+execute - -## plain stupid options "parser" -while test $# -gt 0; do - case "$1" in - (-l) dit=$2; shift 2;; - (-f) freq=$2; shift 2;; - (-c) mode=compile; shift 1;; - (-x) mode=execute; shift 1;; - (*) break 2;; - esac -done - -# Ein Dah ist dreimal so lang wie ein Dit. -dah=`echo "$dit * 3" | bc` - -## Convert a character to the corresponting morse code. -## Note: any unknown characters are left unaltered. -char2morse() { -tr [a-z] [A-Z] | -sed ' - # Die Pause zwischen Wörtern beträgt sieben Dits. (1/2) - s:[[:space:]]\+::g - - # Zwischen Buchstaben in einem Wort wird eine Pause von Dah eingeschoben. - s:[^ ]:& :g - - # Die Pause zwischen Wörtern beträgt sieben Dits. (2/2) - s: : :g -' | -sed ' - # Lateinische Buchstaben - # Die Pause zwischen zwei gesendeten Symbolen ist ein Dit lang. - s:A:· −:g - s:B:− · · ·:g - s:C:− · − ·:g - s:D:− · ·:g - s:E:·:g - s:F:· · − ·:g - s:G:− − ·:g - s:H:· · · ·:g - s:I:· ·:g - s:J:· − − −:g - s:K:− · −:g - s:L:· − · ·:g - s:M:− −:g - s:N:− ·:g - s:O:− − −:g - s:P:· − − ·:g - s:Q:− − · −:g - s:R:· − ·:g - s:S:· · ·:g - s:T:−:g - s:U:· · −:g - s:V:· · · −:g - s:W:· − −:g - s:X:− · · −:g - s:Y:− · − −:g - s:Z:− − · ·:g -' | -sed ' - # Ziffern - # Die Pause zwischen zwei gesendeten Symbolen ist ein Dit lang. - s:0:− − − − −:g - s:1:· − − − −:g - s:2:· · − − −:g - s:3:· · · − −:g - s:4:· · · · −:g - s:5:· · · · ·:g - s:6:− · · · ·:g - s:7:− − · · ·:g - s:8:− − − · ·:g - s:9:− − − − ·:g -' | -sed ' - # TODO Sonder- und Satzzeichen - #s:À, Å:· − − · − - #s:Ä:· − · − - #s:È:· − · · − - #s:É:· · − · · - #s:Ö:− − − · - #s:Ü:· · − − - #s:ß:· · · − − · · - #s:CH:− − − − - #s:Ñ:− − · − − - #s:. (AAA) · − · − · − - #s:, (MIM) − − · · − − - #s:: − − − · · · - #s:; − · − · − · - #s:? (IMI) · · − − · · - #s:- − · · · · − - #s:_ · · − − · − - #s:( − · − − · - #s:) − · − − · − - #s:'\'' · − − − − · - #s:= − · · · − - #s:+ · − · − · - #s:/ − · · − · - #s:@ (AC) · − − · − · -' | -sed ' - # TODO Signale - # KA - # (Spruchanfang) − · − · − - # BT - # (Pause) − · · · − - # AR - # (Spruchende) · − · − · - # VE - # (verstanden) · · · − · - # SK - # (Verkehrsende) · · · − · − - # SOS - # (internationaler - # (See-)Notruf) · · · − − − · · · - # HH - # (Fehler; Irrung; - # Wiederholung - # ab letztem - # vollständigen Wort) · · · · · · · · -' -} - -## Convert morse code to beep(1) arguments. -morse2beeparg() { -sed " - s: : -n -f 1 -l $dit:g - s:·: -n -f $freq -l $dit:g - s:−: -n -f $freq -l $dah:g -" | - sed ' - 1s:^:beep -f 1 -l 1: -' -} - -compile() { - char2morse -} - -execute() { - `morse2beeparg` -} - -## main - process either [any non-option] arguments or stdin. -if test $# -gt 0; then - echo "$*" -else - cat -fi | -case "$mode" in - (compile) compile;; - (execute) execute;; - (compile+execute) compile | execute;; - (*) echo bad mode: $mode >&2; exit 23;; -esac diff --git a/roboctl/index.js b/roboctl/index.js deleted file mode 100644 index ac92c969..00000000 --- a/roboctl/index.js +++ /dev/null @@ -1,18 +0,0 @@ - -nick = /(^|\n) *Name *= *(\S*) *($|\n)/ - .exec(require('fs').readFileSync('/etc/tinc/retiolum/tinc.conf'))[2]; - -var config = { - "nick": nick + '-krebs', - "server": "irc.freenode.net", - "port": 6667, - "channel": "#tincspasm" -}; - -irc = require('./lib/irc').createClient(config); - -// TODO call back when joined -irc.connect(function () { - console.log('like a boss: ' + nick); - //irc.write(); -}); diff --git a/roboctl/lib/irc.js b/roboctl/lib/irc.js deleted file mode 100644 index 5f904a74..00000000 --- a/roboctl/lib/irc.js +++ /dev/null @@ -1,67 +0,0 @@ - -var Client = function (config) { - var client = this; - var net = require('net'); - var sys = require('sys'); - var log = function (x) { - sys.puts('TCP server: ' + x); - }; - - client.connect = function (callback) { - var stream = net.createConnection(config.port, config.server); - stream.on('connect', function () { - stream.write( - 'NICK ' + config.nick + '\n' + - 'USER ' + config.nick + ' 0 *:Karl Koch\n' + - 'JOIN ' + config.channel + '\n' - ); - //client.write = function (text) { - // stream.write('PRIVMSG ' + config.channel + ' :' + text); - //}; - client.write = msg_start_send; - callback(); - }); - //stream.on('secure', function () { - //}); - - var msg = []; - - var msg_start_send = function (x) { - client.write = msg_append; - setTimeout(function () { - var x = msg.join('\n') + '\n'; - msg = []; - client.write = msg_start_send; - stream.write('PRIVMSG ' + config.channel + ' :' + x); - }, 1000); - }; - - var msg_append = function (x) { - msg[msg.length] = x; - }; - - - stream.on('data', function (data) { - data = String(data); - log('' + data + ''); - if (data.substring(0,4) === 'PING') { - log('PONG!'); - stream.write('PONG ' + data.substring(4)); - } - }); - //stream.on('end', function () { - //}); - //stream.on('timeout', function () { - //}); - //stream.on('drain', function () { - //}); - //stream.on('error', function (exception) { - //}); - //stream.on('clonse', function (exception) { - //}); - }; -}; - -exports.createClient = function (config) { - return new Client(config); -}; diff --git a/sandbox/roboctl/index.js b/sandbox/roboctl/index.js new file mode 100644 index 00000000..ac92c969 --- /dev/null +++ b/sandbox/roboctl/index.js @@ -0,0 +1,18 @@ + +nick = /(^|\n) *Name *= *(\S*) *($|\n)/ + .exec(require('fs').readFileSync('/etc/tinc/retiolum/tinc.conf'))[2]; + +var config = { + "nick": nick + '-krebs', + "server": "irc.freenode.net", + "port": 6667, + "channel": "#tincspasm" +}; + +irc = require('./lib/irc').createClient(config); + +// TODO call back when joined +irc.connect(function () { + console.log('like a boss: ' + nick); + //irc.write(); +}); diff --git a/sandbox/roboctl/lib/irc.js b/sandbox/roboctl/lib/irc.js new file mode 100644 index 00000000..5f904a74 --- /dev/null +++ b/sandbox/roboctl/lib/irc.js @@ -0,0 +1,67 @@ + +var Client = function (config) { + var client = this; + var net = require('net'); + var sys = require('sys'); + var log = function (x) { + sys.puts('TCP server: ' + x); + }; + + client.connect = function (callback) { + var stream = net.createConnection(config.port, config.server); + stream.on('connect', function () { + stream.write( + 'NICK ' + config.nick + '\n' + + 'USER ' + config.nick + ' 0 *:Karl Koch\n' + + 'JOIN ' + config.channel + '\n' + ); + //client.write = function (text) { + // stream.write('PRIVMSG ' + config.channel + ' :' + text); + //}; + client.write = msg_start_send; + callback(); + }); + //stream.on('secure', function () { + //}); + + var msg = []; + + var msg_start_send = function (x) { + client.write = msg_append; + setTimeout(function () { + var x = msg.join('\n') + '\n'; + msg = []; + client.write = msg_start_send; + stream.write('PRIVMSG ' + config.channel + ' :' + x); + }, 1000); + }; + + var msg_append = function (x) { + msg[msg.length] = x; + }; + + + stream.on('data', function (data) { + data = String(data); + log('' + data + ''); + if (data.substring(0,4) === 'PING') { + log('PONG!'); + stream.write('PONG ' + data.substring(4)); + } + }); + //stream.on('end', function () { + //}); + //stream.on('timeout', function () { + //}); + //stream.on('drain', function () { + //}); + //stream.on('error', function (exception) { + //}); + //stream.on('clonse', function (exception) { + //}); + }; +}; + +exports.createClient = function (config) { + return new Client(config); +}; diff --git a/util/morse/COPYING b/util/morse/COPYING new file mode 100644 index 00000000..d28e4178 --- /dev/null +++ b/util/morse/COPYING @@ -0,0 +1,14 @@ + DO WHAT THE FUCK YOU WANT TO PUBLIC LICENSE + Version 23, December 1984 + + Copyright (C) 2011 tv@shackspace + + Everyone is permitted to copy and distribute verbatim or modified + copies of this license document, and changing it is allowed as long + as the name is changed. + + DO WHAT THE FUCK YOU WANT TO PUBLIC LICENSE + TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION + + 0. You just DO WHAT THE FUCK YOU WANT TO. + diff --git a/util/morse/Makefile b/util/morse/Makefile new file mode 100644 index 00000000..2afa845e --- /dev/null +++ b/util/morse/Makefile @@ -0,0 +1,3 @@ +.phony: all +all: + ln -fs $$PWD/morse.sh ../bin/morse diff --git a/util/morse/README b/util/morse/README new file mode 100644 index 00000000..67951c00 --- /dev/null +++ b/util/morse/README @@ -0,0 +1,32 @@ +MORSE(1) MORSE(1) + +NAME + morse.sh - morse code generator + +SYNOPSIS + morse [-l N] [-f N] [-c|-x] [text...] + +DESCRIPTION + Generate visible or audible from text or stdin. + +OPTIONS + -l N use N milliseconds as length of dit. Default: 60 ms + + -f N beep at N Hz. Default: 2000 Hz + + -c compile only. Morse will output morse-executable morse code. + + -x execute only. Interpret text as morse code, i.e. do not try + to convert text or stdin. + +BUGS + None.^_^ + +REPORTING BUGS + Please use Github's issue tracking system. + +AUTHOR + This program was written by tv@shackspace and is distributed under the + Do What The Fuck You Want To Public License. + + April 2011 MORSE(1) diff --git a/util/morse/morse.sh b/util/morse/morse.sh new file mode 100755 index 00000000..c84538ca --- /dev/null +++ b/util/morse/morse.sh @@ -0,0 +1,160 @@ +#! /bin/sh +set -euf + +freq=2000 +dit=60 +mode=compile+execute + +## plain stupid options "parser" +while test $# -gt 0; do + case "$1" in + (-l) dit=$2; shift 2;; + (-f) freq=$2; shift 2;; + (-c) mode=compile; shift 1;; + (-x) mode=execute; shift 1;; + (*) break 2;; + esac +done + +# Ein Dah ist dreimal so lang wie ein Dit. +dah=`echo "$dit * 3" | bc` + +## Convert a character to the corresponting morse code. +## Note: any unknown characters are left unaltered. +char2morse() { +tr [a-z] [A-Z] | +sed ' + # Die Pause zwischen Wörtern beträgt sieben Dits. (1/2) + s:[[:space:]]\+::g + + # Zwischen Buchstaben in einem Wort wird eine Pause von Dah eingeschoben. + s:[^ ]:& :g + + # Die Pause zwischen Wörtern beträgt sieben Dits. (2/2) + s: : :g +' | +sed ' + # Lateinische Buchstaben + # Die Pause zwischen zwei gesendeten Symbolen ist ein Dit lang. + s:A:· −:g + s:B:− · · ·:g + s:C:− · − ·:g + s:D:− · ·:g + s:E:·:g + s:F:· · − ·:g + s:G:− − ·:g + s:H:· · · ·:g + s:I:· ·:g + s:J:· − − −:g + s:K:− · −:g + s:L:· − · ·:g + s:M:− −:g + s:N:− ·:g + s:O:− − −:g + s:P:· − − ·:g + s:Q:− − · −:g + s:R:· − ·:g + s:S:· · ·:g + s:T:−:g + s:U:· · −:g + s:V:· · · −:g + s:W:· − −:g + s:X:− · · −:g + s:Y:− · − −:g + s:Z:− − · ·:g +' | +sed ' + # Ziffern + # Die Pause zwischen zwei gesendeten Symbolen ist ein Dit lang. + s:0:− − − − −:g + s:1:· − − − −:g + s:2:· · − − −:g + s:3:· · · − −:g + s:4:· · · · −:g + s:5:· · · · ·:g + s:6:− · · · ·:g + s:7:− − · · ·:g + s:8:− − − · ·:g + s:9:− − − − ·:g +' | +sed ' + # TODO Sonder- und Satzzeichen + #s:À, Å:· − − · − + #s:Ä:· − · − + #s:È:· − · · − + #s:É:· · − · · + #s:Ö:− − − · + #s:Ü:· · − − + #s:ß:· · · − − · · + #s:CH:− − − − + #s:Ñ:− − · − − + #s:. (AAA) · − · − · − + #s:, (MIM) − − · · − − + #s:: − − − · · · + #s:; − · − · − · + #s:? (IMI) · · − − · · + #s:- − · · · · − + #s:_ · · − − · − + #s:( − · − − · + #s:) − · − − · − + #s:'\'' · − − − − · + #s:= − · · · − + #s:+ · − · − · + #s:/ − · · − · + #s:@ (AC) · − − · − · +' | +sed ' + # TODO Signale + # KA + # (Spruchanfang) − · − · − + # BT + # (Pause) − · · · − + # AR + # (Spruchende) · − · − · + # VE + # (verstanden) · · · − · + # SK + # (Verkehrsende) · · · − · − + # SOS + # (internationaler + # (See-)Notruf) · · · − − − · · · + # HH + # (Fehler; Irrung; + # Wiederholung + # ab letztem + # vollständigen Wort) · · · · · · · · +' +} + +## Convert morse code to beep(1) arguments. +morse2beeparg() { +sed " + s: : -n -f 1 -l $dit:g + s:·: -n -f $freq -l $dit:g + s:−: -n -f $freq -l $dah:g +" | + sed ' + 1s:^:beep -f 1 -l 1: +' +} + +compile() { + char2morse +} + +execute() { + `morse2beeparg` +} + +## main - process either [any non-option] arguments or stdin. +if test $# -gt 0; then + echo "$*" +else + cat +fi | +case "$mode" in + (compile) compile;; + (execute) execute;; + (compile+execute) compile | execute;; + (*) echo bad mode: $mode >&2; exit 23;; +esac -- cgit v1.2.3