summaryrefslogtreecommitdiffstats
path: root/oncology
diff options
context:
space:
mode:
Diffstat (limited to 'oncology')
-rw-r--r--oncology/Makefile23
-rwxr-xr-xoncology/bin/krebshostup2
-rw-r--r--oncology/lcd4linux.conf572
3 files changed, 597 insertions, 0 deletions
diff --git a/oncology/Makefile b/oncology/Makefile
new file mode 100644
index 00000000..05d5c422
--- /dev/null
+++ b/oncology/Makefile
@@ -0,0 +1,23 @@
+build-deps:
+ #punani -Ei libtool automake autoconf zlib1g-dev libssl-dev python-dev libc6 libusb-dev libibus-dev subversion libgd2-noxpm-dev libgd2-noxpm lcd4linux
+
+/usr/bin/lcd4linux: build-deps
+ #punani -Ei lcd4linux
+ sed -i 's/usr\/sbin\/lcd4linux/usr\/bin\/lcd4linux/g' /etc/init.d/lcd4linux
+ dpfhack_display/build-dpf-lcd4linux.sh
+ make -C dpfhack_display/lcd4linux/ install
+
+lcd4linux_autostart:
+ # service lcd4linux start
+ # update-rc.d lcd4linux
+
+install: /usr/bin/lcd4linux /etc/lcd4linux.conf lcd4linux_autostart
+ # TODO this is debian only
+
+update: /etc/lcd4linux.conf
+ service lcd4linux force-reload
+
+/etc/lcd4linux.conf: lcd4linux.conf
+ chown krebs:krebs lcd4linux.conf
+ chmod 600 lcd4linux.conf
+ cp -a lcd4linux.conf /etc/lcd4linux.conf
diff --git a/oncology/bin/krebshostup b/oncology/bin/krebshostup
new file mode 100755
index 00000000..65ccae12
--- /dev/null
+++ b/oncology/bin/krebshostup
@@ -0,0 +1,2 @@
+#!/bin/sh
+nmap -sP 42.0.0.0/8 -T5| grep "Host is up" | wc -l
diff --git a/oncology/lcd4linux.conf b/oncology/lcd4linux.conf
new file mode 100644
index 00000000..be16629d
--- /dev/null
+++ b/oncology/lcd4linux.conf
@@ -0,0 +1,572 @@
+Layout 'Krebs'
+Display 'DPF'
+
+Variables {
+ # Ticks:
+ second 1000
+ minute 60 * second
+
+ # Standard Dimensions:
+ linesize 53 # max line length, for status lines etc.
+ width100 51 # full width after padding (border)
+ width050 24 # 1/2 of full width
+ width033 17 # 1/3 of full width
+ width025 12 # 1/4 of full width
+ width010 5 # 1/10 of full width
+
+ # Colors:
+ # ToDo: Alphakanal ausnutzen
+ black '000000'
+ white 'ffffff'
+ red 'ff0000'
+ darkblue '000066'
+ lightgray 'b2b2b2'
+ darkgray '191919'
+ barcolor0 '5f5fff'
+ barcolor1 'ff5f5c'
+
+ # To be set later by timers:
+ FileMsg 'Dummy'
+}
+
+Display dpf {
+ Driver 'DPF'
+ Port 'usb0'
+ Font '6x8'
+ Foreground white
+ Background darkblue
+ Basecolor darkblue
+}
+
+Widget System {
+ class 'Text'
+ expression '*** ' . uname('nodename') . ' '. netinfo::ipaddr('eth0') . ' ***'
+ width linesize
+ align 'C'
+ update 0
+ Background lightgray
+ Foreground darkgray
+}
+
+Widget Time {
+ class 'Text'
+ expression strftime('%a, %d.%m.%Y %H:%M:%S', time()) . ' Up: ' . uptime('%d days %H:%M:%S')
+ width linesize
+ align 'C'
+ update 1 * second
+ Background lightgray
+ Foreground darkgray
+}
+
+Widget Busy {
+ class 'Text'
+ expression proc_stat::cpu('busy', 0.5 * second)
+ prefix 'Busy'
+ postfix '%'
+ width width050
+ precision 1
+ align 'R'
+ update 0.5 * second
+}
+
+Widget BusyBar {
+ class 'Bar'
+ expression proc_stat::cpu('busy', 0.5 * second)
+ expression2 proc_stat::cpu('system', 0.5 * second)
+ length width050
+ direction 'E'
+ update 0.5 * second
+ Background darkgray
+ BarColor0 barcolor0
+ BarColor1 barcolor1
+}
+
+Widget Load {
+ class 'Text'
+ expression loadavg(1)
+ prefix 'Load'
+ postfix loadavg(1) > 1.0 ? '!' : ' '
+ width width050
+ precision 1
+ align 'R'
+ update 0.5 * second
+# Foreground loadavg(1) > 1.0 ? red : white
+}
+
+Widget LoadBar {
+ class 'Bar'
+ expression loadavg(1)
+ max 4.0
+ length width050
+ direction 'E'
+ update 0.5 * second
+ Background darkgray
+ BarColor0 barcolor0
+ BarColor1 barcolor1
+}
+
+Widget Disk {
+ class 'Text'
+ # disk.[rw]blk return blocks, we assume a blocksize of 512
+ # to get the number in kB/s we would do blk*512/1024, which is blk/2
+ # expression (proc_stat::disk('.*', 'rblk', 0.5 * second)+proc_stat::disk('.*', 'wblk', 0.5 * second))/2
+ # with kernel 2.6, disk_io disappeared from /proc/stat but moved to /proc/diskstat
+ # therefore you have to use another function called 'diskstats':
+ expression (diskstats('sd[a-z]$', 'read_sectors', 0.5 * second) + diskstats('sd[a-z]$', 'write_sectors', 0.5 * second)) / 2 / 1024
+ prefix 'Disk'
+ postfix ' MB/s'
+ width width050
+ precision 1
+ align 'R'
+ update 0.5 * second
+}
+
+Widget DiskBar {
+ class 'Bar'
+ #expression proc_stat::disk('.*', 'rblk', 0.5 * second)
+ #expression2 proc_stat::disk('.*', 'wblk', 0.5 * second)
+ # for kernel 2.6:
+ expression diskstats('sd[a-z]$', 'read_sectors', 0.5 * second) / 2 / 1024
+ expression2 diskstats('sd[a-z]$', 'write_sectors', 0.5 * second) / 2 / 1024
+ length width050
+ direction 'E'
+ update 0.5 * second
+ Background darkgray
+ BarColor0 barcolor0
+ BarColor1 barcolor1
+}
+
+Widget Eth0 {
+ class 'Text'
+ expression (netdev('eth0', 'Rx_bytes', 0.5 * second) + netdev('eth0', 'Tx_bytes', 0.5 * second)) / 1024
+ prefix 'eth0'
+ postfix ' KB/s'
+ width width050
+ precision 1
+ align 'R'
+ update 0.5 * second
+}
+
+Widget Eth0Bar {
+ class 'Bar'
+ expression netdev('eth0', 'Rx_bytes', 0.5 * second) / 1024
+ expression2 netdev('eth0', 'Tx_bytes', 0.5 * second) / 1024
+ length width050
+ direction 'E'
+ update 0.5 * second
+ Background darkgray
+ BarColor0 barcolor0
+ BarColor1 barcolor1
+}
+
+Widget Eth0Traffic {
+ class 'Text'
+ expression (netdev('eth0', 'Rx_bytes', 0)+netdev('eth0', 'Tx_bytes', 0))/1024/1024/1024
+ prefix 'Traffic:'
+ postfix ' GB'
+ width 21
+ precision 3
+ align 'R'
+ update 10 * second
+}
+
+Widget MemoryTitle {
+ class 'Text'
+ expression 'Memory/Swap'
+ width width050
+ align 'L'
+ update 0
+}
+
+Widget MemoryTotal {
+ class 'Text'
+ expression meminfo('MemTotal') / 1024
+ prefix 'Memory Total '
+ postfix ' MB'
+ width width050
+ precision 0
+ align 'R'
+ update 0
+}
+
+Widget MemoryFree {
+ class 'Text'
+ expression (meminfo('MemFree') + meminfo('Cached')) / 1024
+ prefix 'Memory Free '
+ postfix ' MB'
+ width width050
+ precision 0
+ align 'R'
+ update 1 * second
+}
+
+Widget MemorySwappedTotal {
+ class 'Text'
+ expression (meminfo('SwapTotal')) / 1024
+ prefix 'Swap Total '
+ postfix ' MB'
+ width width050
+ precision 0
+ align 'R'
+ update 1 * second
+}
+
+Widget MemorySwappedFree {
+ class 'Text'
+ expression (meminfo('SwapTotal') - meminfo('SwapUsed')) / 1024
+ prefix 'Swap Free''
+ postfix ' MB'
+ width width050
+ precision 0
+ align 'R'
+ update 1 * second
+}
+
+Widget MemorySwappedUsed {
+ class 'Text'
+ expression (meminfo('SwapTotal') - meminfo('SwapFree')) / 1024
+ prefix 'Swap Used '
+ postfix ' MB'
+ width width050
+ precision 0
+ align 'R'
+ update 1 * second
+}
+
+Widget LoggedInTitle {
+ class 'Text'
+ expression 'Hosts in Krebs Darknet'
+ width width050
+ align 'L'
+ update 0
+}
+
+Widget LoggedIn {
+ class 'Text'
+ expression exec('/krebs/oncology/bin/krebshostup')
+ width width050
+ align 'L'
+ update 300 * second
+}
+
+Widget FSSpaceTitle {
+ class 'Text'
+ expression 'Disk Space available'
+ width width050
+ align 'L'
+ update 0
+}
+
+Widget FSSpace1 {
+ class 'Text'
+ expression statfs('/', 'bavail') * statfs('/', 'bsize') / 1024 / 1024 / 1024
+ prefix '/ (Root FS)'
+ postfix ' GB'
+ width width050
+ precision 2
+ align 'R'
+ update 10 * second
+}
+
+Widget HDDTempTitle {
+ class 'Text'
+ expression 'Disk Temperature°C'
+ width width050
+ align 'L'
+ update 0
+}
+
+Widget HDDTemp1 {
+ class 'Text'
+ expression hddtemp('/dev/sda')
+ width width010
+ precision 1
+ align 'R'
+ update 10 * second
+}
+
+Widget HDDTemp2 {
+ class 'Text'
+ expression hddtemp('/dev/sdb')
+ width width010
+ precision 1
+ align 'R'
+ update 10 * second
+}
+
+Widget HDDTemp3 {
+ class 'Text'
+ expression hddtemp('/dev/sdc')
+ width width010
+ precision 1
+ align 'R'
+ update 10 * second
+}
+
+Widget ServicesTitle {
+ class 'Text'
+ expression 'Services'
+ width width100
+ align 'C'
+ Background lightgray
+ Foreground darkgray
+}
+
+Widget ApacheStatus {
+ class 'Text'
+ expression 'Apache '
+ width width050
+ postfix strstr(exec('/etc/init.d/apache2 status', 10 * second), 'running') > 0 ? 'up' : 'down!'
+ update 10 * second
+}
+
+Widget BindDNSStatus {
+ class 'Text'
+ expression 'Bind DNS '
+ width width050
+ postfix strstr(exec('/etc/init.d/bind9 status', 10 * second), 'running') > 0 ? 'up' : 'down!'
+ update 10 * second
+}
+
+Widget MuninStatus {
+ class 'Text'
+ expression 'Monitoring '
+ width width050
+ postfix strstr(exec('/etc/init.d/munin-node status', 10 * second), 'running') > 0 ? 'up' : 'down!'
+ update 10 * second
+}
+
+Widget MiniDLNAStatus {
+ class 'Text'
+ expression 'MiniDLNA '
+ width width050
+ postfix strstr(exec('/etc/init.d/minidlna status', 10 * second), 'running') > 0 ? 'up' : 'down!'
+ update 10 * second
+}
+
+Widget MySQLStatus {
+ class 'Text'
+ expression 'MySQL '
+ width width050
+ postfix strstr(exec('/sbin/status mysql', 10 * second), 'running') > 0 ? 'up' : 'down!'
+ update 10 * second
+}
+
+Widget MythTVStatus {
+ class 'Text'
+ expression 'MythTV Backend '
+ width width050
+ postfix strstr(exec('/sbin/status mythtv-backend', 10 * second), 'running') > 0 ? 'up' : 'down!'
+ update 10 * second
+}
+
+Widget PostfixStatus {
+ class 'Text'
+ expression 'Postfix '
+ width width050
+ postfix strstr(exec('/etc/init.d/postfix status', 10 * second), 'not running') > 0 ? 'down!' : 'up'
+ update 10 * second
+}
+
+Widget ProFTPStatus {
+ class 'Text'
+ expression 'ProFTP '
+ width width050
+ postfix strstr(exec('/etc/init.d/proftpd status', 10 * second), 'not running') > 0 ? 'down!' : 'up'
+ update 10 * second
+}
+
+Widget SambaStatus {
+ class 'Text'
+ expression 'Samba '
+ width width050
+ postfix strstr(exec('/sbin/status smbd', 10 * second), 'running') > 0 ? 'up' : 'down!'
+ update 10 * second
+}
+
+Widget SambaStatusDS {
+ class 'Text'
+ expression 'Samba '
+ width width050
+ postfix strstr(exec('/etc/init.d/samba status', 10 * second), 'running') > 0 ? 'up' : 'down!'
+ update 10 * second
+}
+
+Widget SSHStatus {
+ class 'Text'
+ expression 'SSH '
+ width width050
+ postfix strstr(exec('/sbin/status ssh', 10 * second), 'running') > 0 ? 'up' : 'down!'
+ update 10 * second
+}
+
+Widget SSHStatusDS {
+ class 'Text'
+ expression 'SSH '
+ width width050
+ postfix strstr(exec('/etc/init.d/ssh status', 10 * second), 'running') > 0 ? 'up' : 'down!'
+ update 10 * second
+}
+
+Widget SWRAIDStatus {
+ class 'Text'
+ expression 'SW RAID '
+ width width050
+ postfix strstr(exec('cat /proc/mdstat', 10 * second), '[UUU]') > 0 ? 'up' : 'attention!'
+ update 10 * second
+}
+
+Widget TwonkyStatus {
+ class 'Text'
+ expression 'Twonkymedia '
+ width width050
+ postfix strstr(exec('/sbin/status twonkymedia', 10 * second), 'running') > 0 ? 'up' : 'down!'
+ update 10 * second
+}
+
+Widget FileTitle {
+ class 'Text'
+ expression 'Syslog'
+ width width100
+ align 'C'
+ Background lightgray
+ Foreground darkgray
+}
+
+Widget SetFileMsg {
+ class 'Timer'
+ expression FileMsg = exec('tail -n 1 /var/log/syslog', 2 * second)
+ active 1
+ update 2 * second
+}
+
+Widget File1 {
+ class 'Text'
+ expression substr(FileMsg, 0 * width100, width100)
+ width width100
+ align 'L'
+ Background darkgray
+ update 2 * second
+}
+
+Widget File2 {
+ class 'Text'
+ expression substr(FileMsg, 1 * width100, width100)
+ width width100
+ align 'L'
+ Background darkgray
+ update 2 * second
+}
+
+Widget File3 {
+ class 'Text'
+ expression substr(FileMsg, 2 * width100, width100)
+ width width100
+ align 'L'
+ Background darkgray
+ update 2 * second
+}
+
+Widget Weather1 {
+ class 'Text'
+ expression exec('/krebs/kachelmann/wetter', 10 * second)
+ prefix 'Wetter:'
+ width width100
+ align 'L'
+ Background darkgray
+ update 10 * second
+}
+Widget Bitcoin {
+ class 'Text'
+ expression exec('/krebs/btc/mtgox/ticker_text.sh', 10 * second)
+ prefix 'BTC: '
+ width width100
+ align 'L'
+ Background darkgray
+ update 30 * second
+}
+
+Widget Stream {
+ class 'Text'
+ expression exec('/krebs/streams/streams status', 10 * second)
+ #prefix 'Stream:'
+ width width100
+ align 'L'
+ Background darkgray
+ update 10 * second
+}
+
+Widget Debug {
+ class 'Text'
+ expression 'Serverdisplay - Krebs'
+ width linesize
+ align 'C'
+ Foreground lightgray
+}
+
+Widget na {
+ class 'Text'
+ expression 'n/a'
+ width 3
+ align 'L'
+}
+
+Widget Bgnd {
+ class 'Image'
+ file '/krebs/cholerab/bling/krebs-v2_320x240.png'
+ reload 0
+ update 0
+ inverted 0
+ visible 1
+}
+
+Layout Krebs {
+ Row01.Col01 'System'
+ Row02.Col01 'Time'
+ Row04.Col02 'Busy'
+ Row05.Col02 'BusyBar'
+ Row07.Col02 'Load'
+ Row08.Col02 'LoadBar'
+ Row10.Col02 'Disk'
+ Row11.Col02 'DiskBar'
+ Row13.Col02 'Eth0'
+ Row14.Col02 'Eth0Bar'
+ Row15.Col02 'Eth0Traffic'
+
+ Row04.Col28 'MemoryTitle'
+ Row05.Col29 'MemoryTotal'
+ Row06.Col29 'MemoryFree'
+ Row07.Col29 'MemorySwappedTotal'
+ Row08.Col29 'MemorySwappedUsed'
+ Row10.Col28 'LoggedInTitle'
+ Row11.Col29 'LoggedIn'
+ Row13.Col28 'FSSpaceTitle'
+ Row14.Col29 'FSSpace1'
+
+ Row17.Col02 'ServicesTitle'
+ #Row18.Col02 'BindDNSStatus'
+ #Row19.Col02 'MuninStatus'
+ Row18.Col02 'ApacheStatus'
+ #Row21.Col02 'MiniDLNAStatus'
+ #Row18.Col29 'PostfixStatus'
+ #Row19.Col29 'ProFTPStatus'
+ #Row20.Col29 'SambaStatusDS'
+ Row18.Col29 'SSHStatusDS'
+
+ Row19.Col02 'Weather1'
+ Row21.Col02 'Bitcoin'
+ Row23.Col02 'Stream'
+
+ Row25.Col02 'FileTitle'
+ Row26.Col02 'File1'
+ Row27.Col02 'File2'
+ Row28.Col02 'File3'
+
+ Row30.Col01 'Debug'
+
+ Timer1 'SetFileMsg'
+
+ Layer 2 {
+ X1.Y1 'Bgnd'
+ }
+}