diff options
| author | makefu <root@pigstarter.de> | 2013-02-08 10:11:01 +0000 | 
|---|---|---|
| committer | makefu <root@pigstarter.de> | 2013-02-08 10:11:01 +0000 | 
| commit | 194e1622b0b901780ceea40ea9c453c573b69995 (patch) | |
| tree | dc6a3c82a744733d5ce926759b7d9f0a40473d29 | |
| parent | 59ccc0fd871c4bbd12066f2f6aacf835a839885d (diff) | |
| parent | dd6ad821a5a5bcb633b28a6d35e5e612d1f59094 (diff) | |
Merge branch 'master' of https://github.com/krebscode/painload
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": "*" +  } +} | 
