summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rwxr-xr-xircbot/bot.py71
-rw-r--r--ircbot/feeds2
-rwxr-xr-xminikrebs/profiles/instacam_yuv/custom_make3
-rw-r--r--minikrebs/profiles/instacam_yuv/customfiles/etc/config/mjpg-streamer7
-rw-r--r--minikrebs/profiles/instacam_yuv/customfiles/etc/config/network9
l---------minikrebs/profiles/instacam_yuv/customfiles/etc/dropbear/authorized_keys1
-rw-r--r--minikrebs/profiles/instacam_yuv/customfiles/etc/init.d/mjpeg-streamer58
-rw-r--r--minikrebs/profiles/instacam_yuv/customfiles/etc/rc.local1
-rw-r--r--minikrebs/profiles/instacam_yuv/customfiles/etc/shadow5
-rw-r--r--minikrebs/profiles/instacam_yuv/doc/README.md5
-rwxr-xr-xminikrebs/profiles/usb_ext/custom_make3
-rw-r--r--minikrebs/profiles/usb_ext/customfiles/etc/config/fstab19
-rw-r--r--minikrebs/profiles/usb_ext/customfiles/etc/config/network13
-rw-r--r--minikrebs/profiles/usb_ext/customfiles/etc/config/system8
l---------minikrebs/profiles/usb_ext/customfiles/etc/dropbear/authorized_keys1
-rw-r--r--minikrebs/profiles/usb_ext/customfiles/etc/shadow5
-rwxr-xr-xretiolum/bin/list-known-public-addresses38
-rw-r--r--retiolum/hosts/Discordius11
-rw-r--r--retiolum/hosts/nomic210
-rw-r--r--util/lib/geo/Makefile15
-rw-r--r--util/lib/geo/index.js48
-rw-r--r--util/lib/geo/package.json7
22 files changed, 340 insertions, 0 deletions
diff --git a/ircbot/bot.py b/ircbot/bot.py
new file mode 100755
index 00000000..607e65c7
--- /dev/null
+++ b/ircbot/bot.py
@@ -0,0 +1,71 @@
+#!/usr/bin/python
+import irc.bot
+import feedparser
+import _thread
+import math
+from time import sleep
+
+class TestBot(irc.bot.SingleServerIRCBot):
+ def __init__(self, rss, name, server='10.243.231.66', port=6667, chan='#news', timeout=60):
+ irc.bot.SingleServerIRCBot.__init__(self, [(server, port)], name, name)
+ self.url = rss
+ self.feed = feedparser.parse(self.url)
+ self.name = name
+ self.server = server
+ self.port = port
+ self.chan = chan
+ self.to = timeout
+ self.oldnews = []
+ self.sendqueue = []
+ for entry in self.feed.entries:
+ self.sendqueue.append(entry.title + " " + entry.link)
+ self.oldnews.append(entry.link)
+
+ def start(self):
+ self.upd_thread = _thread.start_new_thread(self.updateloop, ())
+ self.bot = _thread.start_new_thread(irc.bot.SingleServerIRCBot.start, (self,))
+
+
+ def updateloop(self):
+ while True:
+ sleep(self.to)
+ self.feed = feedparser.parse(self.url)
+ for entry in self.feed.entries:
+ if not entry.link in self.oldnews:
+ self.send(entry.title + " " + entry.link)
+ self.oldnews.append(entry.link)
+
+ def sendall(self):
+ while len(self.sendqueue) > 0:
+ sleep(1)
+ self.send(self.sendqueue.pop())
+
+ def send(self, string):
+ if len(string) < 450:
+ self.connection.privmsg(self.chan, string)
+ else:
+ for x in range(math.ceil(len(string)/450)):
+ self.connection.privmsg(self.chan, string[x*450:(x+1)*450])
+ sleep(1)
+
+
+ def on_welcome(self, connection, event):
+ connection.join(self.chan)
+
+# def on_privmsg(self, connection, event):
+# print event.source().split('!')[0], event.arguments()
+
+F = open("feeds", "r")
+lines = F.readlines()
+F.close()
+
+botarray = []
+for line in lines:
+ lineArray = line.split('|')
+ bot = TestBot(lineArray[1], lineArray[0])
+ #bot.start()
+ botarray.append(bot)
+
+def startall():
+ for bot in botarray:
+ bot.start()
diff --git a/ircbot/feeds b/ircbot/feeds
new file mode 100644
index 00000000..50fe0667
--- /dev/null
+++ b/ircbot/feeds
@@ -0,0 +1,2 @@
+HN|http://news.ycombinator.com/rss
+Fefe|http://blog.fefe.de/rss.xml
diff --git a/minikrebs/profiles/instacam_yuv/custom_make b/minikrebs/profiles/instacam_yuv/custom_make
new file mode 100755
index 00000000..c1750da4
--- /dev/null
+++ b/minikrebs/profiles/instacam_yuv/custom_make
@@ -0,0 +1,3 @@
+#!/bin/sh
+
+make image PROFILE=TLWR703 PACKAGES="ip kmod-fs-ext4 wireless-tools block-mount kmod-usb-core kmod-usb2 kmod-video-uvc mjpg-streamer -kmod-ppp -kmod-pppoe -kmod-pppox -ppp -ppp-mod-pppoe -dnsmasq -radvd " FILES=customfiles/
diff --git a/minikrebs/profiles/instacam_yuv/customfiles/etc/config/mjpg-streamer b/minikrebs/profiles/instacam_yuv/customfiles/etc/config/mjpg-streamer
new file mode 100644
index 00000000..6feb6165
--- /dev/null
+++ b/minikrebs/profiles/instacam_yuv/customfiles/etc/config/mjpg-streamer
@@ -0,0 +1,7 @@
+config mjpg-streamer core
+ option enabled "1"
+ option device "/dev/video0"
+ option resolution "640x480"
+ option fps "10"
+ option www "/www/webcam"
+ option port "80"
diff --git a/minikrebs/profiles/instacam_yuv/customfiles/etc/config/network b/minikrebs/profiles/instacam_yuv/customfiles/etc/config/network
new file mode 100644
index 00000000..c459c4e0
--- /dev/null
+++ b/minikrebs/profiles/instacam_yuv/customfiles/etc/config/network
@@ -0,0 +1,9 @@
+config interface 'loopback'
+ option ifname 'lo'
+ option proto 'static'
+ option ipaddr '127.0.0.1'
+ option netmask '255.0.0.0'
+
+config interface 'lan'
+ option ifname 'eth0'
+ option proto 'dhcp'
diff --git a/minikrebs/profiles/instacam_yuv/customfiles/etc/dropbear/authorized_keys b/minikrebs/profiles/instacam_yuv/customfiles/etc/dropbear/authorized_keys
new file mode 120000
index 00000000..9c87fc52
--- /dev/null
+++ b/minikrebs/profiles/instacam_yuv/customfiles/etc/dropbear/authorized_keys
@@ -0,0 +1 @@
+/root/.ssh/authorized_keys \ No newline at end of file
diff --git a/minikrebs/profiles/instacam_yuv/customfiles/etc/init.d/mjpeg-streamer b/minikrebs/profiles/instacam_yuv/customfiles/etc/init.d/mjpeg-streamer
new file mode 100644
index 00000000..aef12489
--- /dev/null
+++ b/minikrebs/profiles/instacam_yuv/customfiles/etc/init.d/mjpeg-streamer
@@ -0,0 +1,58 @@
+#!/bin/sh /etc/rc.common
+# Copyright (C) 2009-2012 OpenWrt.org
+
+START=50
+
+SERVICE_DAEMONIZE=1
+SERVICE_WRITE_PID=1
+
+PROG=/usr/bin/mjpg_streamer
+
+error() {
+ echo "${initscript}:" "$@" 1>&2
+}
+
+section_enabled() {
+ config_get_bool enabled "$1" 'enabled' 0
+ [ $enabled -gt 0 ]
+}
+
+start_instance() {
+ local s="$1"
+
+ section_enabled "$s" || return 1
+
+ config_get device "$s" 'device'
+ config_get resolution "$s" 'resolution'
+ config_get fps "$s" 'fps'
+ config_get www "$s" 'www'
+ config_get port "$s" 'port'
+
+ [ -c "$device" ] || {
+ error "device '$device' does not exist"
+ return 1
+ }
+
+ # run in yuv (legacy) mode, impacts performance but at least something is happening
+ service_start /usr/bin/mjpg_streamer --input "input_uvc.so \
+ --device $device --fps $fps --resolution $resolution -yuv" \
+ --output "output_http.so --www $www --port $port"
+}
+
+stop_instance() {
+ local s="$1"
+
+ section_enabled "$s" || return 1
+
+ service_stop /usr/bin/mjpg_streamer
+}
+
+start() {
+ config_load 'mjpg-streamer'
+ config_foreach start_instance 'mjpg-streamer'
+}
+
+stop() {
+ config_load 'mjpg-streamer'
+ config_foreach stop_instance 'mjpg-streamer'
+}
diff --git a/minikrebs/profiles/instacam_yuv/customfiles/etc/rc.local b/minikrebs/profiles/instacam_yuv/customfiles/etc/rc.local
new file mode 100644
index 00000000..3e91b57c
--- /dev/null
+++ b/minikrebs/profiles/instacam_yuv/customfiles/etc/rc.local
@@ -0,0 +1 @@
+insmod uvcvideo
diff --git a/minikrebs/profiles/instacam_yuv/customfiles/etc/shadow b/minikrebs/profiles/instacam_yuv/customfiles/etc/shadow
new file mode 100644
index 00000000..9cc800dd
--- /dev/null
+++ b/minikrebs/profiles/instacam_yuv/customfiles/etc/shadow
@@ -0,0 +1,5 @@
+root:$1$WFDw.yoc$MuPQ4h/nu3WMpHmte5Yrp/:15719:0:99999:7:::
+daemon:*:0:0:99999:7:::
+ftp:*:0:0:99999:7:::
+network:*:0:0:99999:7:::
+nobody:*:0:0:99999:7:::
diff --git a/minikrebs/profiles/instacam_yuv/doc/README.md b/minikrebs/profiles/instacam_yuv/doc/README.md
new file mode 100644
index 00000000..63b3a5a2
--- /dev/null
+++ b/minikrebs/profiles/instacam_yuv/doc/README.md
@@ -0,0 +1,5 @@
+# Instacam China
+
+Support for a cheapo webcam which supports only yuv mode on a low resolution.
+
+Copy-paste fork of instacam
diff --git a/minikrebs/profiles/usb_ext/custom_make b/minikrebs/profiles/usb_ext/custom_make
new file mode 100755
index 00000000..5dea0cc7
--- /dev/null
+++ b/minikrebs/profiles/usb_ext/custom_make
@@ -0,0 +1,3 @@
+#!/bin/sh
+
+make image PROFILE=TLWR703 PACKAGES="wireless-tools block-mount kmod-usb-core kmod-usb2 kmod-usb-storage kmod-fs-ext4 -radvd -kmod-ppp -kmod-pppoe -kmod-pppox -ppp -ppp-mod-pppoe" FILES=customfiles/
diff --git a/minikrebs/profiles/usb_ext/customfiles/etc/config/fstab b/minikrebs/profiles/usb_ext/customfiles/etc/config/fstab
new file mode 100644
index 00000000..b1e678dc
--- /dev/null
+++ b/minikrebs/profiles/usb_ext/customfiles/etc/config/fstab
@@ -0,0 +1,19 @@
+config global automount
+ option from_fstab 1
+ option anon_mount 1
+
+config global autoswap
+ option from_fstab 1
+ option anon_swap 0
+
+config mount
+ option target /overlay
+ option device /dev/sda1
+ option fstype ext4
+ option options rw,sync
+ option enabled 1
+ option enabled_fsck 0
+
+config swap
+ option device /dev/sda2
+ option enabled 1
diff --git a/minikrebs/profiles/usb_ext/customfiles/etc/config/network b/minikrebs/profiles/usb_ext/customfiles/etc/config/network
new file mode 100644
index 00000000..e6a96379
--- /dev/null
+++ b/minikrebs/profiles/usb_ext/customfiles/etc/config/network
@@ -0,0 +1,13 @@
+config interface 'loopback'
+ option ifname 'lo'
+ option proto 'static'
+ option ipaddr '127.0.0.1'
+ option netmask '255.0.0.0'
+
+config interface 'lan'
+ option ifname 'eth0'
+ option proto 'dhcp'
+
+config interface 'wan'
+ option ifname 'wlan0'
+ option proto 'dhcp'
diff --git a/minikrebs/profiles/usb_ext/customfiles/etc/config/system b/minikrebs/profiles/usb_ext/customfiles/etc/config/system
new file mode 100644
index 00000000..3c5a6935
--- /dev/null
+++ b/minikrebs/profiles/usb_ext/customfiles/etc/config/system
@@ -0,0 +1,8 @@
+config system
+ option hostname bare
+ option timezone UTC
+
+config 'led' 'lan_led'
+ option 'name' 'blue-led'
+ option 'sysfs' 'tp-link:blue:system'
+ option 'trigger' 'default-on'
diff --git a/minikrebs/profiles/usb_ext/customfiles/etc/dropbear/authorized_keys b/minikrebs/profiles/usb_ext/customfiles/etc/dropbear/authorized_keys
new file mode 120000
index 00000000..9c87fc52
--- /dev/null
+++ b/minikrebs/profiles/usb_ext/customfiles/etc/dropbear/authorized_keys
@@ -0,0 +1 @@
+/root/.ssh/authorized_keys \ No newline at end of file
diff --git a/minikrebs/profiles/usb_ext/customfiles/etc/shadow b/minikrebs/profiles/usb_ext/customfiles/etc/shadow
new file mode 100644
index 00000000..9cc800dd
--- /dev/null
+++ b/minikrebs/profiles/usb_ext/customfiles/etc/shadow
@@ -0,0 +1,5 @@
+root:$1$WFDw.yoc$MuPQ4h/nu3WMpHmte5Yrp/:15719:0:99999:7:::
+daemon:*:0:0:99999:7:::
+ftp:*:0:0:99999:7:::
+network:*:0:0:99999:7:::
+nobody:*:0:0:99999:7:::
diff --git a/retiolum/bin/list-known-public-addresses b/retiolum/bin/list-known-public-addresses
new file mode 100755
index 00000000..21b1c389
--- /dev/null
+++ b/retiolum/bin/list-known-public-addresses
@@ -0,0 +1,38 @@
+#! /bin/sh
+#
+# printf '%s %s\n' hostname IP-address for each known public retiolum address
+#
+set -eu
+
+_list_hostname_address() {
+ cd /etc/tinc/retiolum/hosts
+ grep --with-filename '^Address' * |
+ sed -n '
+ s/: */ /
+ s/ *= */ /
+ s/ Address \([a-zA-Z0-9.:_]*\) \?.*/ \1/p'
+}
+_lookup_address() {
+ sed '
+ /:/!{/ [0-9.]*$/!{s/ / `dig +short /;s/$/` \&/}}
+ s/^/echo /
+ $s/$/\nwait/
+ ' | sh
+}
+_filter_public() {
+ sed '
+ # drop private IPv4 addresses
+ / 10\./d
+ / 172\.\(1[6-9]\|2[0-9]\|3[01]\)\./d
+ / 192\.168\./d
+ # TODO drop private IPv6 addresses
+ '
+}
+_filter_online() {
+ awk '
+ {print"nc -zw 2 "$2" 655 2>/dev/null && echo "$1" "$2" &"}
+ END {print"wait"}
+ ' | sh
+}
+
+_list_hostname_address | _lookup_address | _filter_public
diff --git a/retiolum/hosts/Discordius b/retiolum/hosts/Discordius
new file mode 100644
index 00000000..561b28ca
--- /dev/null
+++ b/retiolum/hosts/Discordius
@@ -0,0 +1,11 @@
+Subnet = 10.243.144.246
+Subnet = 42:017a:4584:17e1:685a:3991:6533:067b
+
+-----BEGIN RSA PUBLIC KEY-----
+MIIBCgKCAQEAsOoWkyydyfW9ml7SBV8d+qXU8E1c4l0vEpdBnmOouZozo1bzzkH3
+bLn2DkZaOLCqVUC1twbeGi2a7tXHh4dLvkIcT38V3XbEwxHhMn7enpKr79GO/VFf
+Lu8t5dLbmPFFTOEeC54ke8X4MdlMrUMuXiGspnl/vc1NBSJIVECl6zdqvZt/UTWA
+vI7evk3F+Tf5dPATqSMdxE5506i2y/W6obwYwaXdPbyBsAQkgdTjfVUe2u0GKfld
+/THprmZYTwlBEZ3YAf12OdfO1aRsDpbogpZs/rcnebScDj7myzh7FkLHdH9nIfxg
+dfGxSBV7kRMwQmgfKjp/yETPjvRz0OMZoQIDAQAB
+-----END RSA PUBLIC KEY-----
diff --git a/retiolum/hosts/nomic2 b/retiolum/hosts/nomic2
new file mode 100644
index 00000000..63d83ff5
--- /dev/null
+++ b/retiolum/hosts/nomic2
@@ -0,0 +1,10 @@
+Subnet = 10.243.0.111/32
+Subnet = 42:02d5:733f:d6da:c0f5:2bb7:2b18:09ed/128
+-----BEGIN RSA PUBLIC KEY-----
+MIIBCgKCAQEA4RATrMG+MJyNq77+qUqoXkBIpUeytIvUNXT5OdvU5v91Xo2eGI23
+NXiFtILDb1nEPB+L4vVWkUKRuPAy+ThgqgTH1vyugT6jRoRhWWmGmSn2GjaF+UxK
+edTfGJqO0Iwn0kZsIFxXUibkmG5iRbJBoPXXz33VtNxOv2gZZ6klfv/pYWnrxmLm
+RZXkE1H3Y0U2ulQEXvpexzVscfYmlAw7h0Ew4aaY2LK4spLLPjx9RdDgfwZOZdS+
+gi5cmi/qM71/o67/4XippR9+7GQ8YecbeoR4bcZpDNoDy1ri7HPPu/t6CiqsYVyg
+jYGBm+IGbwI9hxGel2bXCVBGLE7gpN51TwIDAQAB
+-----END RSA PUBLIC KEY-----
diff --git a/util/lib/geo/Makefile b/util/lib/geo/Makefile
new file mode 100644
index 00000000..d13cd471
--- /dev/null
+++ b/util/lib/geo/Makefile
@@ -0,0 +1,15 @@
+all: node_modules GeoLiteCity.dat
+
+node_modules: package.json
+ npm install
+ @touch -r $< $@
+
+GeoLiteCity.dat:
+ @test -e GeoLiteCity.dat && ln -s GeoLiteCity.dat $@ || { \
+ echo 'No GeoIP City database found.'; \
+ echo 'You can get one from http://dev.maxmind.com/geoip/geolite:'; \
+ echo ' wget -N http://geolite.maxmind.com/download/geoip/database/GeoLiteCity.dat.gz'; \
+ echo ' gunzip GeoLiteCity.dat.gz'; \
+ exit 23; \
+ }
+
diff --git a/util/lib/geo/index.js b/util/lib/geo/index.js
new file mode 100644
index 00000000..0763b1a4
--- /dev/null
+++ b/util/lib/geo/index.js
@@ -0,0 +1,48 @@
+function slurp (stream, callback) {
+ var data = []
+ stream.on('data', function (chunk) {
+ data.push(chunk)
+ })
+ stream.on('end', function () {
+ callback(null, Buffer.concat(data))
+ })
+ stream.resume()
+}
+
+
+var path = require('path')
+var city_dat = path.join(__dirname, 'GeoLiteCity.dat')
+
+var geoip = require('geoip')
+var city = new geoip.City(city_dat)
+
+slurp(process.stdin, function (err, data) {
+ var lines = data.toString().split('\n')
+ // remove last, empty element (caused by the [mandatory] final \n)
+ if (lines.length > 1 && lines[lines.length - 1] === '') {
+ lines.pop()
+ }
+ var name = 0, addr = 1
+ lines
+ .map(function (line) { return line.split(' ') })
+ .forEach(function (host) {
+ //city.lookup(host[addr], function (err, loc) {
+ // if (err) {
+ // console.error('#', host[name], err.message)
+ // } else {
+ // console.log(host[name] + ': ' + loc.longitude + ',' + loc.latitude)
+ // }
+ //})
+ var loc = city.lookupSync(host[addr])
+ //if (!loc) { console.error('#', host[name]) }
+ if (loc) {
+ var a = loc.latitude
+ var b = loc.longitude
+ //var c = loc.altitude
+ //var geo = 'geo:' + [a,b,c].join(',')
+ var geo = 'geo:' + [a,b].join(',')
+
+ console.log(host[name], geo)
+ }
+ })
+})
diff --git a/util/lib/geo/package.json b/util/lib/geo/package.json
new file mode 100644
index 00000000..ad449a62
--- /dev/null
+++ b/util/lib/geo/package.json
@@ -0,0 +1,7 @@
+{
+ "name": "geo",
+ "version": "0.0.0",
+ "dependencies": {
+ "geoip": "*"
+ }
+}