From 60bb54649d64208facc2d22478413e3fd1a7227f Mon Sep 17 00:00:00 2001
From: tv
Date: Wed, 24 Aug 2011 16:45:00 +0200
Subject: {btc -> gold} SC & co., we're ready
---
gold/btcguild/index.js | 20 +++++++
gold/mining/CONFIGURE | 8 +++
gold/mining/Makefile | 20 +++++++
gold/mining/README | 9 +++
gold/mining/TODO | 2 +
gold/mining/bin/archlinux-cruise-control | 70 ++++++++++++++++++++++
gold/mining/bin/ati_temper | 5 ++
gold/mining/bin/cleanup_tmp | 4 ++
gold/mining/bin/ensure-router | 36 +++++++++++
gold/mining/bin/ensure-wlan0 | 41 +++++++++++++
gold/mining/poll_btcguild | 2 +
gold/mining/user/.config/autostart/startup.desktop | 6 ++
gold/mining/user/mining.ovdr | 16 +++++
gold/mining/user/startup.sh | 13 ++++
gold/mtgox/json_ticker_helper.py | 7 +++
gold/mtgox/mtgox.getDepth | 3 +
gold/mtgox/mtgox.getTrades | 3 +
gold/mtgox/mtgox.ticker | 4 ++
gold/mtgox/ticker_text.sh | 3 +
19 files changed, 272 insertions(+)
create mode 100644 gold/btcguild/index.js
create mode 100644 gold/mining/CONFIGURE
create mode 100644 gold/mining/Makefile
create mode 100644 gold/mining/README
create mode 100644 gold/mining/TODO
create mode 100755 gold/mining/bin/archlinux-cruise-control
create mode 100755 gold/mining/bin/ati_temper
create mode 100755 gold/mining/bin/cleanup_tmp
create mode 100755 gold/mining/bin/ensure-router
create mode 100755 gold/mining/bin/ensure-wlan0
create mode 100644 gold/mining/poll_btcguild
create mode 100644 gold/mining/user/.config/autostart/startup.desktop
create mode 100644 gold/mining/user/mining.ovdr
create mode 100755 gold/mining/user/startup.sh
create mode 100755 gold/mtgox/json_ticker_helper.py
create mode 100755 gold/mtgox/mtgox.getDepth
create mode 100755 gold/mtgox/mtgox.getTrades
create mode 100755 gold/mtgox/mtgox.ticker
create mode 100755 gold/mtgox/ticker_text.sh
(limited to 'gold')
diff --git a/gold/btcguild/index.js b/gold/btcguild/index.js
new file mode 100644
index 00000000..1f33db06
--- /dev/null
+++ b/gold/btcguild/index.js
@@ -0,0 +1,20 @@
+api_key = process.env.api_key;
+
+var options = {
+ host: 'www.btcguild.com',
+ port: 80,
+ path: '/api.php?api_key=' + api_key
+};
+
+http = require('http');
+http.get(options, function(res) {
+ var data = '';
+ res.on('data', function (chunk) {
+ data += chunk;
+ });
+ res.on('end', function () {
+ console.log(JSON.parse(data));
+ });
+}).on('error', function(e) {
+ console.error('Error: ' + e.message);
+});
diff --git a/gold/mining/CONFIGURE b/gold/mining/CONFIGURE
new file mode 100644
index 00000000..299cbd53
--- /dev/null
+++ b/gold/mining/CONFIGURE
@@ -0,0 +1,8 @@
+How to Configure
+===============
+
+1. change the mining-url in ~/startup.sh
+2. in KDE - 'AMDOverdriveCtrl - configure profile
+3. in KDE-Autostart - activate the startup script
+2. sudo /etc/init.d/gdm restart
+
diff --git a/gold/mining/Makefile b/gold/mining/Makefile
new file mode 100644
index 00000000..8701920f
--- /dev/null
+++ b/gold/mining/Makefile
@@ -0,0 +1,20 @@
+.PHONY: all format install configure
+select-target:
+ @echo "You are made of stupid!"
+ echo "look here"
+ @cat Makefile
+format:
+ cat README
+fix-linucCoin: configure
+ apt-get install --yes lm-sensors tmux
+ echo '#!/bin/bash' > /usr/bin/ati_license
+ echo '#!/bin/sh' > /etc/init.d/live-boot
+ echo 'wall "going down"' >> /etc/init.d/live-boot
+ chmod 755 /etc/init.d/live-boot
+ echo 'sudo tar xvf /opt/AMD-APP-SDK-v2.4-lnx64/icd-registration.tgz -C /' >> /usr/bin/ati_license
+ cp -r user /home
+configure:
+ yes '' | sensors-detect
+ @cat CONFIGURE
+archlinux:
+ bin/archlinux-cruise-control
diff --git a/gold/mining/README b/gold/mining/README
new file mode 100644
index 00000000..ad8c3468
--- /dev/null
+++ b/gold/mining/README
@@ -0,0 +1,9 @@
+What to do:
+format the usb-stick:
+Device Boot Start End Blocks Id System
+/dev/sda1 * 1 254 976345 c W95 FAT32 (LBA)
+/dev/sda2 255 1017 2932972 83 Linux
+
+1. install coinlinux live system on sda1.
+2. mkfs.ext3 /dev/sda2 -L live-rw
+3. install grub on /dev/sda
diff --git a/gold/mining/TODO b/gold/mining/TODO
new file mode 100644
index 00000000..bafaa72a
--- /dev/null
+++ b/gold/mining/TODO
@@ -0,0 +1,2 @@
+- fix the sed script in "make archlinux" to replace only the first occurrence
+- test the amdoverdrive stuff from the home dir (user)
diff --git a/gold/mining/bin/archlinux-cruise-control b/gold/mining/bin/archlinux-cruise-control
new file mode 100755
index 00000000..de5a0fa4
--- /dev/null
+++ b/gold/mining/bin/archlinux-cruise-control
@@ -0,0 +1,70 @@
+#!/bin/bash
+set -euf
+export EDITOR=vim
+echo "!! ARCHLINUX Cruise Control Mining installer !!"
+echo "** adding main network profile"
+cp /etc/network.d/examples/ethernet-dhcp /etc/network.d/main
+echo 'POST_UP="sed -i \"1i nameserver 8.8.8.8\" /etc/resolv.conf"' >> /etc/network.d/main
+echo "** adding worker account"
+grep -q worker /etc/passwd || adduser worker
+gpasswd -a worker wheel
+gpasswd -a worker tty
+gpasswd -a worker audio
+gpasswd -a worker video
+gpasswd -a worker network
+gpasswd -a worker power
+
+echo "** adding archlinuxfr to pacman.conf"
+grep -q archlinuxfr /etc/pacman.conf || echo "[archlinuxfr]" >> /etc/pacman.conf && echo "Server = http://repo.archlinux.fr/x86_64" >> /etc/pacman.conf
+echo "** installing all the required parts"
+pacman --needed --noconfirm -Syu rsync git openssh yajl sudo tmux lm_sensors vim yaourt kernel26-headers beep
+echo "** doing some tweaks"
+rm /usr/bin/python -f
+ln -s /usr/bin/python2 /usr/bin/python
+echo "syntax on" > /home/worker/.vimrc
+echo "syntax on" > /root/.vimrc
+echo "** installing tinc"
+[ "`yaourt -Q tinc`" ] || yaourt -S --noconfirm tinc
+sed -i -e 's/.*\%wheel.*/%wheel ALL=(ALL) NOPASSWD: ALL/1' /etc/sudoers
+echo "** Installing ATI drivers"
+[ "`yaourt -Q catalyst-utils`" ] || yaourt -S --noconfirm catalyst-utils
+[ "`yaourt -Q catalyst-hook`" ] || yaourt -S --noconfirm catalyst-hook
+[ "`yaourt -Q amdstream`" ] || yaourt -S --noconfirm amdstream
+echo "** installing X"
+pacman --needed -S --noconfirm xorg-server xorg-apps xorg-appres xorg-xinit xautolock xlockmore xorg-fonts xorg-xhost xorg-xauth xterm rxvt-unicode fluxbox slim
+echo "** editing slim configuration"
+sed -i 's/.*default_user.*/default_user worker/' /etc/slim.conf
+sed -i 's/.*auto_login.*/auto_login yes/' /etc/slim.conf
+echo "** Installing mining tools and overclocking stuff"
+[ "`yaourt -Q phoenix-miner-svn`" ] || yaourt -S --noconfirm phoenix-miner-svn
+echo "!! warning, you might need to adjust the version number of AMDOverdriveCTRL !!"
+[ "`yaourt -Q amdoverdrivectrl`" ] || yaourt -S amdoverdrivectrl
+echo "** copying bin folder"
+cp -r $(readlink -f `dirname $0`)/ /home/worker
+echo "** creating new .Xauthority for worker"
+sudo -u worker /home/worker/bin/newkey.sh
+mkdir -p /home/worker/.fluxbox
+cp /krebs/mining/user/startup.sh /home/worker/startup.sh
+chmod a+x /home/worker/startup.sh
+cp /krebs/mining/user/startup.sh /home/worker/.fluxbox/startup
+chmod a+x /home/worker/.fluxbox/startup
+cp /krebs/mining/user/mining.ovdr /home/worker/
+chown -R worker:users /home/worker
+echo "configuring X"
+echo "!! ACTION REQUIRED, write down the first number of your ATI Graphics Adapter."
+echo "!! i will open /etc/X11/xorg.conf for you, change the BusID of every Device to the numbers you see here"
+echo "!! press enter to continue"
+lspci|grep VGA
+read
+aticonfig --initial=dual-head
+vim /etc/X11/xorg.conf
+echo "** creating xinitrc and start x"
+echo 'setxkbmap -option terminate:ctrl_alt_bksp' > /home/worker/.xinitrc
+echo 'xautolock -corners +-+- -locker "xlock -mode blank"&' >> /home/worker/.xinitrc
+echo '/home/worker/startup.sh &' >> /home/worker/.xinitrc
+echo 'xterm &' >> /home/worker/.xinitrc
+echo 'exec fluxbox' >> /home/worker/.xinitrc
+echo '!! start x with `xinit `'
+echo 'add "x:5:respawn:/usr/bin/slim >/dev/null 2>&1" to /etc/inittab to start slim"
+
+
diff --git a/gold/mining/bin/ati_temper b/gold/mining/bin/ati_temper
new file mode 100755
index 00000000..283a6024
--- /dev/null
+++ b/gold/mining/bin/ati_temper
@@ -0,0 +1,5 @@
+#displays: CARD1TEMP CARD2TEMP CPUTEMP OUTSIDE
+echo -n "`DISPLAY=:0 aticonfig --adapter=1 --od-gettemperature | grep Temperature | sed -n 's/.*Temperature - \([0-9.]*\) C/\1/;p'` "
+echo -n "`DISPLAY=:0 aticonfig --adapter=2 --od-gettemperature | grep Temperature | sed -n 's/.*Temperature - \([0-9.]*\) C/\1/;p'` "
+echo -n "`sensors | grep temp1 | sed -e 's/temp1: *+\([0-9.]*\).*/\1/'` "
+echo "`temper`"
diff --git a/gold/mining/bin/cleanup_tmp b/gold/mining/bin/cleanup_tmp
new file mode 100755
index 00000000..e1395b19
--- /dev/null
+++ b/gold/mining/bin/cleanup_tmp
@@ -0,0 +1,4 @@
+#! /bin/sh
+ls -lAtr /tmp/ | sed -rn '
+ /\.so$/{$!{s/.* ([A-Za-z0-9]+\.so)$/rm -v \/tmp\/\1/p}}
+' | sudo sh
diff --git a/gold/mining/bin/ensure-router b/gold/mining/bin/ensure-router
new file mode 100755
index 00000000..5eedabc9
--- /dev/null
+++ b/gold/mining/bin/ensure-router
@@ -0,0 +1,36 @@
+#! /bin/sh
+
+if test "${nosudo-false}" != true -a `id -u` != 0; then
+ echo "we're going sudo..." >&2
+ exec sudo "$0" "$@"
+ exit 23 # go to hell
+fi
+
+if=eth2
+
+rc() {
+ for x in /etc/init.d/$1 /etc/rc.d/$1; do
+ if test -x $x; then
+ $x restart
+ break
+ fi
+ done
+}
+
+if ! ifconfig $if | grep -q 'inet addr'; then
+ beep -l 50 -f 2500; ifconfig $if 0.0.0.0 down || :
+ beep -l 50 -f 2500; ifconfig $if 23.0.0.1/8 up || :
+ beep -l 50 -f 2500; rc dnsmasq restart
+ beep -l 50 -f 2500; iptables -t nat -A POSTROUTING -o wlan0 -j MASQUERADE
+ beep -l 50 -f 2500; iptables -t nat -A POSTROUTING -o eth2 -j MASQUERADE
+ if ifconfig $if | grep -q 'inet addr'; then
+ beep -l 50 -f 2500 -n -l 100 -f 3000
+ else
+ beep -l 50 -f 2500 -n -l 100 -f 1000
+ fi
+else
+ case "${1-}" in
+ (--quiet) : ;;
+ (*) beep -l 50 -f 2500 -n -l 100 -f 2500 ;;
+ esac
+fi
diff --git a/gold/mining/bin/ensure-wlan0 b/gold/mining/bin/ensure-wlan0
new file mode 100755
index 00000000..fa92c4f5
--- /dev/null
+++ b/gold/mining/bin/ensure-wlan0
@@ -0,0 +1,41 @@
+#! /bin/sh
+
+if test "${nosudo-false}" != true -a `id -u` != 0; then
+ echo "we're going sudo..." >&2
+ exec sudo -E "$0" "$@"
+ exit 23 # go to hell
+fi
+
+has_internet() {
+ curl -sS google.com >/dev/null
+}
+
+if test "${force-false}" = true || ! has_internet; then
+
+ ## get rid of the fuckers
+ for fucker in NetworkManager nm-applet; do
+ pkill -9 $fucker
+ (IFS=:; for dir in $PATH; do rm -vf $dir/$fucker; done)
+ done
+
+ beep -l 50 -f 2000; pkill wpa
+ beep -l 50 -f 2000; rm -vf /var/run/wpa_supplicant/*
+ beep -l 50 -f 2000; wpa_supplicant -i wlan0 -c /etc/wpa_supplicant/wpa_supplicant.conf &
+ while ! wpa_cli status | grep -q wpa_state=COMPLETED; do
+ beep -l 50 -f 2000 -D 50 -n -l 50 -f 2000
+ sleep 1
+ done
+ beep -l 50 -f 2000; dhcpcd -x wlan0
+ beep -l 50 -f 2000; dhcpcd wlan0
+ #echo nameserver 8.8.8.8 >/etc/resolv.conf
+ if has_internet; then
+ beep -l 50 -f 2000 -n -l 100 -f 3000
+ else
+ beep -l 50 -f 2000 -n -l 100 -f 1000
+ fi
+else
+ case "${1-}" in
+ (--quiet) : ;;
+ (*) beep -l 50 -f 2000 -n -l 100 -f 2000 ;;
+ esac
+fi
diff --git a/gold/mining/poll_btcguild b/gold/mining/poll_btcguild
new file mode 100644
index 00000000..92a02657
--- /dev/null
+++ b/gold/mining/poll_btcguild
@@ -0,0 +1,2 @@
+API_KEY=
+curl http://www.btcguild.com/api.php\?api_key\=${API_KEY} | python -mjson.tool
diff --git a/gold/mining/user/.config/autostart/startup.desktop b/gold/mining/user/.config/autostart/startup.desktop
new file mode 100644
index 00000000..67c35ef8
--- /dev/null
+++ b/gold/mining/user/.config/autostart/startup.desktop
@@ -0,0 +1,6 @@
+[Desktop Entry]
+Name=LXDE Autostart
+Exec=/home/user/startup.sh
+Terminal=true
+Type=Application
+Categories=Configuration
diff --git a/gold/mining/user/mining.ovdr b/gold/mining/user/mining.ovdr
new file mode 100644
index 00000000..d6cf6fec
--- /dev/null
+++ b/gold/mining/user/mining.ovdr
@@ -0,0 +1,16 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/gold/mining/user/startup.sh b/gold/mining/user/startup.sh
new file mode 100755
index 00000000..6274a892
--- /dev/null
+++ b/gold/mining/user/startup.sh
@@ -0,0 +1,13 @@
+sudo pkill tmux
+sleep 5
+source ~/.profile
+export DISPLAY=:0
+export URL="${URL-http://txgen_chinaman:lolwut@uk.btcguild.com:8332}"
+#export URL="http://txgen:qJrXefWX@bitcoinpool.com:8334"
+tmux start-server
+tmux new-session -d -s mining -n mining
+tmux new-window -t mining:1 'cd ~;AMDOverdriveCtrl -i 0 mining.ovdr'
+tmux new-window -t mining:2 'cd ~;AMDOverdriveCtrl -i 3 mining.ovdr'
+sleep 5
+tmux new-window -t mining:3 "cd /usr/src/phoenix-miner/; while sleep 1; do sudo ./phoenix.py -u $URL -k phatk DEVICE=0 VECTORS BFI_INT WORKSIZE=256 AGGRESSION=12 FASTLOOPS=false;done"
+tmux new-window -t mining:4 "cd /usr/src/phoenix-miner/; while sleep 1; do sudo ./phoenix.py -u $URL -k phatk DEVICE=1 VECTORS BFI_INT WORKSIZE=256 AGGRESSION=12 FASTLOOPS=false;done"
diff --git a/gold/mtgox/json_ticker_helper.py b/gold/mtgox/json_ticker_helper.py
new file mode 100755
index 00000000..727dd594
--- /dev/null
+++ b/gold/mtgox/json_ticker_helper.py
@@ -0,0 +1,7 @@
+#!/usr/bin/python
+
+import json,sys
+
+result = json.load(sys.stdin)
+
+print "High: " + str(result["ticker"]["high"]) + " Low: " + str(result["ticker"]["low"]) + " Last: " + str(result["ticker"]["last"])
diff --git a/gold/mtgox/mtgox.getDepth b/gold/mtgox/mtgox.getDepth
new file mode 100755
index 00000000..9a607979
--- /dev/null
+++ b/gold/mtgox/mtgox.getDepth
@@ -0,0 +1,3 @@
+#! /bin/sh
+# get mtgox market depth
+$ curl -ksS https://mtgox.com/code/data/getDepth.php
diff --git a/gold/mtgox/mtgox.getTrades b/gold/mtgox/mtgox.getTrades
new file mode 100755
index 00000000..73e5a68d
--- /dev/null
+++ b/gold/mtgox/mtgox.getTrades
@@ -0,0 +1,3 @@
+#! /bin/sh
+# get mtgox last trades
+$ curl -ksS https://mtgox.com/code/data/getTrades.phl
diff --git a/gold/mtgox/mtgox.ticker b/gold/mtgox/mtgox.ticker
new file mode 100755
index 00000000..b24dfb35
--- /dev/null
+++ b/gold/mtgox/mtgox.ticker
@@ -0,0 +1,4 @@
+#! /bin/sh
+# get mtgox ticker data
+set -euf
+curl -ksS https://mtgox.com/code/data/ticker.php
diff --git a/gold/mtgox/ticker_text.sh b/gold/mtgox/ticker_text.sh
new file mode 100755
index 00000000..2bcac134
--- /dev/null
+++ b/gold/mtgox/ticker_text.sh
@@ -0,0 +1,3 @@
+#!/bin/sh
+dirname=`dirname $(readlink -f $0)`
+$dirname/mtgox.ticker | python $dirname/json_ticker_helper.py
--
cgit v1.2.3
From 77b129d0f8958149bb2a876c574b1d3d9c671bc8 Mon Sep 17 00:00:00 2001
From: tv
Date: Wed, 24 Aug 2011 16:50:00 +0200
Subject: gold scex: initial commit
---
gold/scex/index.js | 58 ++++++++++++++++++++++++++++++++++++++++++++++++++++++
gold/scex/slurp.js | 38 +++++++++++++++++++++++++++++++++++
2 files changed, 96 insertions(+)
create mode 100644 gold/scex/index.js
create mode 100644 gold/scex/slurp.js
(limited to 'gold')
diff --git a/gold/scex/index.js b/gold/scex/index.js
new file mode 100644
index 00000000..e0c706e7
--- /dev/null
+++ b/gold/scex/index.js
@@ -0,0 +1,58 @@
+var http = require('http');
+var slurp = require('./slurp');
+
+var options = {
+ host: 'scexchange.bitparking.com',
+ port: 8080,
+ path: '/api/t2'
+};
+
+var last_id = 0;
+var last_price = 0;
+function t2 () {
+ http.get(options, function(res) {
+ slurp(res, function (data) {
+ try {
+ data = JSON.parse(data);
+ } catch (exn) {
+ return console.error('[1;31m' + exn.stack + '[m');
+ };
+ data
+ .sort(function (a, b) {
+ return a.id - b.id;
+ })
+ .forEach(function (x) {
+ if (x.id > last_id) {
+ last_id = x.id;
+
+ x.date = new Date(Number(x.date) * 1000);
+
+ var price = x.price.toString();
+ while (price.length < 'x.xxxxxxxx'.length) {
+ price += 0;
+ }
+ if (x.price > last_price) {
+ price = '[32m' + price + '[m'
+ }
+ if (x.price < last_price) {
+ price = '[31m' + price + '[m'
+ }
+ last_price = x.price;
+
+ var c = ({ buy: '[32m', sell: '[31m' })[x.type];
+ var m = '';
+ m += x.id
+ m += ' ' + JSON.parse(JSON.stringify(x.date))
+ m += ' ' + price
+ m += ' ' + c + x.amount + '[m'
+ console.log(m);
+
+ };
+ });
+ });
+ }).on('error', function(e) {
+ console.log("Got error: " + e.message);
+ });
+};
+
+setInterval(t2, 1000);
diff --git a/gold/scex/slurp.js b/gold/scex/slurp.js
new file mode 100644
index 00000000..70319743
--- /dev/null
+++ b/gold/scex/slurp.js
@@ -0,0 +1,38 @@
+module.exports = (function () {
+
+ function join_buffers (buffers, length) {
+ var buffer = new Buffer(length);
+ var targetStart = 0;
+ buffers.forEach(function (x) {
+ x.copy(buffer, targetStart);
+ targetStart += x.length;
+ });
+ return buffer;
+ };
+
+ function finish_it (req, buffers, length, callback) {
+ req.content = join_buffers(buffers, length);
+ return callback(req.content);
+ };
+
+ function nop () {};
+
+ return function (req, callback) {
+ if (req.hasOwnProperty('content')) {
+ return callback(req.content);
+ };
+ var content = [];
+ var length = 0;
+ var end_handler = finish_it;
+ req.on('data', function (data) {
+ content.push(data);
+ length += data.length;
+ });
+ [ 'end', 'close' ].forEach(function (event) {
+ req.on(event, function () {
+ finish_it(req, content, length, callback);
+ end_handler = nop;
+ });
+ });
+ };
+})();
--
cgit v1.2.3
From 28fbd9a5f090c52766d0e4ef1014f3356e188656 Mon Sep 17 00:00:00 2001
From: tv
Date: Wed, 24 Aug 2011 17:01:38 +0200
Subject: gold: add scex ticker_text.sh
---
gold/json/render/ticker | 7 +++++++
gold/mtgox/json_ticker_helper.py | 7 -------
gold/mtgox/ticker_text.sh | 7 ++++---
gold/scex/ticker | 2 ++
gold/scex/ticker_text.sh | 4 ++++
5 files changed, 17 insertions(+), 10 deletions(-)
create mode 100755 gold/json/render/ticker
delete mode 100755 gold/mtgox/json_ticker_helper.py
create mode 100755 gold/scex/ticker
create mode 100755 gold/scex/ticker_text.sh
(limited to 'gold')
diff --git a/gold/json/render/ticker b/gold/json/render/ticker
new file mode 100755
index 00000000..727dd594
--- /dev/null
+++ b/gold/json/render/ticker
@@ -0,0 +1,7 @@
+#!/usr/bin/python
+
+import json,sys
+
+result = json.load(sys.stdin)
+
+print "High: " + str(result["ticker"]["high"]) + " Low: " + str(result["ticker"]["low"]) + " Last: " + str(result["ticker"]["last"])
diff --git a/gold/mtgox/json_ticker_helper.py b/gold/mtgox/json_ticker_helper.py
deleted file mode 100755
index 727dd594..00000000
--- a/gold/mtgox/json_ticker_helper.py
+++ /dev/null
@@ -1,7 +0,0 @@
-#!/usr/bin/python
-
-import json,sys
-
-result = json.load(sys.stdin)
-
-print "High: " + str(result["ticker"]["high"]) + " Low: " + str(result["ticker"]["low"]) + " Last: " + str(result["ticker"]["last"])
diff --git a/gold/mtgox/ticker_text.sh b/gold/mtgox/ticker_text.sh
index 2bcac134..f585ffea 100755
--- a/gold/mtgox/ticker_text.sh
+++ b/gold/mtgox/ticker_text.sh
@@ -1,3 +1,4 @@
-#!/bin/sh
-dirname=`dirname $(readlink -f $0)`
-$dirname/mtgox.ticker | python $dirname/json_ticker_helper.py
+#! /bin/sh
+set -euf
+cd $(dirname `readlink -f $0`)
+./mtgox.ticker | ../json/render/ticker
diff --git a/gold/scex/ticker b/gold/scex/ticker
new file mode 100755
index 00000000..a95d5910
--- /dev/null
+++ b/gold/scex/ticker
@@ -0,0 +1,2 @@
+#! /bin/sh
+exec curl -ksS http://scexchange.bitparking.com:8080/api/ticker
diff --git a/gold/scex/ticker_text.sh b/gold/scex/ticker_text.sh
new file mode 100755
index 00000000..fbaff55b
--- /dev/null
+++ b/gold/scex/ticker_text.sh
@@ -0,0 +1,4 @@
+#! /bin/sh
+set -euf
+cd $(dirname `readlink -f $0`)
+./ticker | ../json/render/ticker
--
cgit v1.2.3
From c66cb75478976f4bbafb7eb6ecbfda502a4bbef2 Mon Sep 17 00:00:00 2001
From: tv
Date: Wed, 24 Aug 2011 17:05:23 +0200
Subject: gold: move tracer to own subdir
---
gold/scex/index.js | 58 -----------------------------------------------
gold/scex/slurp.js | 38 -------------------------------
gold/scex/tracer/index.js | 58 +++++++++++++++++++++++++++++++++++++++++++++++
gold/scex/tracer/slurp.js | 38 +++++++++++++++++++++++++++++++
4 files changed, 96 insertions(+), 96 deletions(-)
delete mode 100644 gold/scex/index.js
delete mode 100644 gold/scex/slurp.js
create mode 100644 gold/scex/tracer/index.js
create mode 100644 gold/scex/tracer/slurp.js
(limited to 'gold')
diff --git a/gold/scex/index.js b/gold/scex/index.js
deleted file mode 100644
index e0c706e7..00000000
--- a/gold/scex/index.js
+++ /dev/null
@@ -1,58 +0,0 @@
-var http = require('http');
-var slurp = require('./slurp');
-
-var options = {
- host: 'scexchange.bitparking.com',
- port: 8080,
- path: '/api/t2'
-};
-
-var last_id = 0;
-var last_price = 0;
-function t2 () {
- http.get(options, function(res) {
- slurp(res, function (data) {
- try {
- data = JSON.parse(data);
- } catch (exn) {
- return console.error('[1;31m' + exn.stack + '[m');
- };
- data
- .sort(function (a, b) {
- return a.id - b.id;
- })
- .forEach(function (x) {
- if (x.id > last_id) {
- last_id = x.id;
-
- x.date = new Date(Number(x.date) * 1000);
-
- var price = x.price.toString();
- while (price.length < 'x.xxxxxxxx'.length) {
- price += 0;
- }
- if (x.price > last_price) {
- price = '[32m' + price + '[m'
- }
- if (x.price < last_price) {
- price = '[31m' + price + '[m'
- }
- last_price = x.price;
-
- var c = ({ buy: '[32m', sell: '[31m' })[x.type];
- var m = '';
- m += x.id
- m += ' ' + JSON.parse(JSON.stringify(x.date))
- m += ' ' + price
- m += ' ' + c + x.amount + '[m'
- console.log(m);
-
- };
- });
- });
- }).on('error', function(e) {
- console.log("Got error: " + e.message);
- });
-};
-
-setInterval(t2, 1000);
diff --git a/gold/scex/slurp.js b/gold/scex/slurp.js
deleted file mode 100644
index 70319743..00000000
--- a/gold/scex/slurp.js
+++ /dev/null
@@ -1,38 +0,0 @@
-module.exports = (function () {
-
- function join_buffers (buffers, length) {
- var buffer = new Buffer(length);
- var targetStart = 0;
- buffers.forEach(function (x) {
- x.copy(buffer, targetStart);
- targetStart += x.length;
- });
- return buffer;
- };
-
- function finish_it (req, buffers, length, callback) {
- req.content = join_buffers(buffers, length);
- return callback(req.content);
- };
-
- function nop () {};
-
- return function (req, callback) {
- if (req.hasOwnProperty('content')) {
- return callback(req.content);
- };
- var content = [];
- var length = 0;
- var end_handler = finish_it;
- req.on('data', function (data) {
- content.push(data);
- length += data.length;
- });
- [ 'end', 'close' ].forEach(function (event) {
- req.on(event, function () {
- finish_it(req, content, length, callback);
- end_handler = nop;
- });
- });
- };
-})();
diff --git a/gold/scex/tracer/index.js b/gold/scex/tracer/index.js
new file mode 100644
index 00000000..e0c706e7
--- /dev/null
+++ b/gold/scex/tracer/index.js
@@ -0,0 +1,58 @@
+var http = require('http');
+var slurp = require('./slurp');
+
+var options = {
+ host: 'scexchange.bitparking.com',
+ port: 8080,
+ path: '/api/t2'
+};
+
+var last_id = 0;
+var last_price = 0;
+function t2 () {
+ http.get(options, function(res) {
+ slurp(res, function (data) {
+ try {
+ data = JSON.parse(data);
+ } catch (exn) {
+ return console.error('[1;31m' + exn.stack + '[m');
+ };
+ data
+ .sort(function (a, b) {
+ return a.id - b.id;
+ })
+ .forEach(function (x) {
+ if (x.id > last_id) {
+ last_id = x.id;
+
+ x.date = new Date(Number(x.date) * 1000);
+
+ var price = x.price.toString();
+ while (price.length < 'x.xxxxxxxx'.length) {
+ price += 0;
+ }
+ if (x.price > last_price) {
+ price = '[32m' + price + '[m'
+ }
+ if (x.price < last_price) {
+ price = '[31m' + price + '[m'
+ }
+ last_price = x.price;
+
+ var c = ({ buy: '[32m', sell: '[31m' })[x.type];
+ var m = '';
+ m += x.id
+ m += ' ' + JSON.parse(JSON.stringify(x.date))
+ m += ' ' + price
+ m += ' ' + c + x.amount + '[m'
+ console.log(m);
+
+ };
+ });
+ });
+ }).on('error', function(e) {
+ console.log("Got error: " + e.message);
+ });
+};
+
+setInterval(t2, 1000);
diff --git a/gold/scex/tracer/slurp.js b/gold/scex/tracer/slurp.js
new file mode 100644
index 00000000..70319743
--- /dev/null
+++ b/gold/scex/tracer/slurp.js
@@ -0,0 +1,38 @@
+module.exports = (function () {
+
+ function join_buffers (buffers, length) {
+ var buffer = new Buffer(length);
+ var targetStart = 0;
+ buffers.forEach(function (x) {
+ x.copy(buffer, targetStart);
+ targetStart += x.length;
+ });
+ return buffer;
+ };
+
+ function finish_it (req, buffers, length, callback) {
+ req.content = join_buffers(buffers, length);
+ return callback(req.content);
+ };
+
+ function nop () {};
+
+ return function (req, callback) {
+ if (req.hasOwnProperty('content')) {
+ return callback(req.content);
+ };
+ var content = [];
+ var length = 0;
+ var end_handler = finish_it;
+ req.on('data', function (data) {
+ content.push(data);
+ length += data.length;
+ });
+ [ 'end', 'close' ].forEach(function (event) {
+ req.on(event, function () {
+ finish_it(req, content, length, callback);
+ end_handler = nop;
+ });
+ });
+ };
+})();
--
cgit v1.2.3
From 2d0a805696d80a6bb5216c7dc2ae2cd3fb170b8b Mon Sep 17 00:00:00 2001
From: tv
Date: Wed, 24 Aug 2011 17:52:58 +0200
Subject: scex tracer: add idle_mark support
---
gold/scex/tracer/index.js | 91 +++++++++++++++++++++++++++++++----------------
1 file changed, 61 insertions(+), 30 deletions(-)
(limited to 'gold')
diff --git a/gold/scex/tracer/index.js b/gold/scex/tracer/index.js
index e0c706e7..7ee6de1b 100644
--- a/gold/scex/tracer/index.js
+++ b/gold/scex/tracer/index.js
@@ -1,3 +1,10 @@
+#! /usr/bin/env node
+//
+// usage: [idle_mark=N] tracer
+//
+// Where the optional idle_mark tells the tracer to output idle marks every N
+// seconds.
+//
var http = require('http');
var slurp = require('./slurp');
@@ -7,9 +14,14 @@ var options = {
path: '/api/t2'
};
+var interval = 1000;
+var idle_mark = Number(process.env.idle_mark) * interval;
+
var last_id = 0;
var last_price = 0;
+var last_output = new Date(0);
function t2 () {
+ var now = new Date()
http.get(options, function(res) {
slurp(res, function (data) {
try {
@@ -17,42 +29,61 @@ function t2 () {
} catch (exn) {
return console.error('[1;31m' + exn.stack + '[m');
};
- data
- .sort(function (a, b) {
- return a.id - b.id;
- })
- .forEach(function (x) {
- if (x.id > last_id) {
- last_id = x.id;
-
- x.date = new Date(Number(x.date) * 1000);
-
- var price = x.price.toString();
- while (price.length < 'x.xxxxxxxx'.length) {
- price += 0;
- }
- if (x.price > last_price) {
- price = '[32m' + price + '[m'
- }
- if (x.price < last_price) {
- price = '[31m' + price + '[m'
- }
- last_price = x.price;
-
- var c = ({ buy: '[32m', sell: '[31m' })[x.type];
- var m = '';
- m += x.id
- m += ' ' + JSON.parse(JSON.stringify(x.date))
+ data = data.sort(function (a, b) {
+ return a.id - b.id;
+ }).filter(function (x) {
+ return x.id > last_id;
+ });
+ if (data.length > 0) {
+ data.forEach(function (x) {
+ last_id = x.id;
+
+ x.date = new Date(Number(x.date) * 1000);
+
+ var price = render_price(x.price, last_price);
+ last_price = x.price;
+
+ var c = ({ buy: '[32m', sell: '[31m' })[x.type];
+ var m = '';
+ m += x.id
+ m += ' ' + JSON.parse(JSON.stringify(x.date))
+ m += ' ' + price
+ m += ' ' + c + x.amount + '[m'
+ console.log(m);
+ last_output = now;
+ });
+ } else {
+ if (idle_mark) {
+ if (now - last_output >= idle_mark) {
+ var price = render_price(last_price);
+ var m = last_id
+ m += ' ' + JSON.parse(JSON.stringify(now));
m += ' ' + price
- m += ' ' + c + x.amount + '[m'
console.log(m);
-
+ last_output = now;
};
- });
+ };
+ };
});
}).on('error', function(e) {
console.log("Got error: " + e.message);
});
};
-setInterval(t2, 1000);
+function render_price(price, last_price) {
+ var rendered_price = price.toString();
+ while (rendered_price.length < 'x.xxxxxxxx'.length) {
+ rendered_price += 0;
+ };
+ if (last_price) {
+ if (price > last_price) {
+ rendered_price = '[32m' + rendered_price + '[m'
+ };
+ if (price < last_price) {
+ rendered_price = '[31m' + rendered_price + '[m'
+ };
+ };
+ return rendered_price;
+};
+
+setInterval(t2, interval);
--
cgit v1.2.3
From 561f37e4a24061bd70113ebc7951175e0d3e116f Mon Sep 17 00:00:00 2001
From: makefu
Date: Thu, 25 Aug 2011 10:38:42 +0200
Subject: gold: add Makefile
make install creates symlinks of the mtgox and the scex to //bin:
- mtgox_ticker
- scex_ticker
---
gold/Makefile | 3 +++
1 file changed, 3 insertions(+)
create mode 100644 gold/Makefile
(limited to 'gold')
diff --git a/gold/Makefile b/gold/Makefile
new file mode 100644
index 00000000..ff553def
--- /dev/null
+++ b/gold/Makefile
@@ -0,0 +1,3 @@
+install:
+ ln -snf $$PWD/mtgox/ticker_text.sh ../bin/mtgox_ticker
+ ln -snf $$PWD/scex/ticker_text.sh ../bin/scex_ticker
--
cgit v1.2.3
From f5aa2b134fc44d3b64851de596bdff1ffd1601d5 Mon Sep 17 00:00:00 2001
From: EUcancER
Date: Wed, 31 Aug 2011 13:31:18 +0200
Subject: gold/scoreboard: initial commit
Add a copy/paste branch of the original btc_logger. I couldn't import
the whole repo as it contains tons of passwords and keys (which is not a
good thing as these are somewhat special for me :)
scoreboard contains a number of modules which do a number of things:
ati_temper: log temperature data of an ati_temper enabled host :
see //gold/miner/bin/ati_temper
solidcoin : graph solidcoin informations
bitcoin : s.a.
In addition to that live stats are generated by the script
//gold/scoreboard/profile contains all the important paths and variables
which are sourced by the modules. In a new installation this file needs
to be customized.
//gold/scoreboard/util/schedule_logger is the scheduler for generating
the graphs every 5 minutes.
you will need to run /modules/available/$MODULE/init before using the
scoreboard as a whole.
the modules directory is still a bit cluttered, sorry about that.
---
gold/scoreboard/.gitignore | 3 +
gold/scoreboard/README | 15 ++
gold/scoreboard/modules/active/bitcoin | 1 +
gold/scoreboard/modules/active/chinaman_temper | 1 +
gold/scoreboard/modules/active/solidcoin | 1 +
.../scoreboard/modules/available/ati_temper/gather | 14 ++
gold/scoreboard/modules/available/ati_temper/index | 4 +
gold/scoreboard/modules/available/ati_temper/init | 25 +++
gold/scoreboard/modules/available/ati_temper/plot | 10 ++
gold/scoreboard/modules/available/bitcoin/gather | 12 ++
gold/scoreboard/modules/available/bitcoin/index | 4 +
gold/scoreboard/modules/available/bitcoin/init | 47 +++++
gold/scoreboard/modules/available/bitcoin/plot | 11 ++
gold/scoreboard/modules/available/bitcoin/render | 10 ++
.../available/bitcoinpool/bitcoinpool_stats | 11 ++
.../modules/available/bitcoinslc/bitcoinslc_live | 8 +
.../modules/available/bitcoinslc/bitcoinslc_stats | 18 ++
.../modules/available/btcguild/btcguild_stats | 22 +++
.../modules/available/btcguild/btcguild_stats_self | 15 ++
gold/scoreboard/modules/available/create_gnuplot | 196 +++++++++++++++++++++
gold/scoreboard/modules/available/solidcoin/gather | 12 ++
gold/scoreboard/modules/available/solidcoin/index | 4 +
gold/scoreboard/modules/available/solidcoin/init | 47 +++++
gold/scoreboard/modules/available/solidcoin/plot | 11 ++
gold/scoreboard/modules/available/solidcoin/render | 10 ++
gold/scoreboard/modules/available/static/init | 32 ++++
gold/scoreboard/profile | 26 +++
gold/scoreboard/util/run-folder | 6 +
gold/scoreboard/util/schedule_logger | 13 ++
29 files changed, 589 insertions(+)
create mode 100644 gold/scoreboard/.gitignore
create mode 100644 gold/scoreboard/README
create mode 120000 gold/scoreboard/modules/active/bitcoin
create mode 120000 gold/scoreboard/modules/active/chinaman_temper
create mode 120000 gold/scoreboard/modules/active/solidcoin
create mode 100755 gold/scoreboard/modules/available/ati_temper/gather
create mode 100755 gold/scoreboard/modules/available/ati_temper/index
create mode 100755 gold/scoreboard/modules/available/ati_temper/init
create mode 100755 gold/scoreboard/modules/available/ati_temper/plot
create mode 100755 gold/scoreboard/modules/available/bitcoin/gather
create mode 100755 gold/scoreboard/modules/available/bitcoin/index
create mode 100755 gold/scoreboard/modules/available/bitcoin/init
create mode 100755 gold/scoreboard/modules/available/bitcoin/plot
create mode 100644 gold/scoreboard/modules/available/bitcoin/render
create mode 100755 gold/scoreboard/modules/available/bitcoinpool/bitcoinpool_stats
create mode 100755 gold/scoreboard/modules/available/bitcoinslc/bitcoinslc_live
create mode 100755 gold/scoreboard/modules/available/bitcoinslc/bitcoinslc_stats
create mode 100755 gold/scoreboard/modules/available/btcguild/btcguild_stats
create mode 100755 gold/scoreboard/modules/available/btcguild/btcguild_stats_self
create mode 100755 gold/scoreboard/modules/available/create_gnuplot
create mode 100755 gold/scoreboard/modules/available/solidcoin/gather
create mode 100755 gold/scoreboard/modules/available/solidcoin/index
create mode 100755 gold/scoreboard/modules/available/solidcoin/init
create mode 100755 gold/scoreboard/modules/available/solidcoin/plot
create mode 100644 gold/scoreboard/modules/available/solidcoin/render
create mode 100755 gold/scoreboard/modules/available/static/init
create mode 100644 gold/scoreboard/profile
create mode 100755 gold/scoreboard/util/run-folder
create mode 100755 gold/scoreboard/util/schedule_logger
(limited to 'gold')
diff --git a/gold/scoreboard/.gitignore b/gold/scoreboard/.gitignore
new file mode 100644
index 00000000..657e895d
--- /dev/null
+++ b/gold/scoreboard/.gitignore
@@ -0,0 +1,3 @@
+/plot/
+/profile
+/archive/
diff --git a/gold/scoreboard/README b/gold/scoreboard/README
new file mode 100644
index 00000000..180cbd0d
--- /dev/null
+++ b/gold/scoreboard/README
@@ -0,0 +1,15 @@
+Scoreboard
+==========
+a non-interactive gold logger/plotter
+
+Install
+======
+* install lighttpd
+* configure the profile template file accordingly
+* [currently] do:
+ cd modules/available/ ati_temper; $EDITOR gather # change the host
+ * add the host key file to keys/
+* [currently] run:
+ modules/available/{ati_temper,bitcoin,solidcoin,static}/init
+* run:
+ util/schedule_logger
diff --git a/gold/scoreboard/modules/active/bitcoin b/gold/scoreboard/modules/active/bitcoin
new file mode 120000
index 00000000..86564edb
--- /dev/null
+++ b/gold/scoreboard/modules/active/bitcoin
@@ -0,0 +1 @@
+/root/btc_logger/modules/available/bitcoin/index
\ No newline at end of file
diff --git a/gold/scoreboard/modules/active/chinaman_temper b/gold/scoreboard/modules/active/chinaman_temper
new file mode 120000
index 00000000..31935833
--- /dev/null
+++ b/gold/scoreboard/modules/active/chinaman_temper
@@ -0,0 +1 @@
+/root/btc_logger/modules/available/ati_temper/index
\ No newline at end of file
diff --git a/gold/scoreboard/modules/active/solidcoin b/gold/scoreboard/modules/active/solidcoin
new file mode 120000
index 00000000..0062d804
--- /dev/null
+++ b/gold/scoreboard/modules/active/solidcoin
@@ -0,0 +1 @@
+/root/btc_logger/modules/available/solidcoin/index
\ No newline at end of file
diff --git a/gold/scoreboard/modules/available/ati_temper/gather b/gold/scoreboard/modules/available/ati_temper/gather
new file mode 100755
index 00000000..15f0b4f2
--- /dev/null
+++ b/gold/scoreboard/modules/available/ati_temper/gather
@@ -0,0 +1,14 @@
+#!/bin/sh
+HERE=$(dirname $(readlink -f $0))
+. $HERE/../../../profile
+
+# machine to check for
+MACHINE=chinaman
+MACHINE_KEY=$MDIR/keys/$MACHINE
+LF=${MACHINE}_ati_temper
+mkdir -p $ADIR
+mkdir -p $LDIR
+
+# write into live directory and archive
+[ ! -e $MACHINE_KEY ] && echo "No Key for $MACHINE" && exit 1
+echo "$(date +%Y-%m-%dT%H:%M:%S) $(ssh -i $MACHINE_KEY worker@$MACHINE '~/bin/ati_temper')" | tee $LDIR/$LF >> $ADIR/$LF
diff --git a/gold/scoreboard/modules/available/ati_temper/index b/gold/scoreboard/modules/available/ati_temper/index
new file mode 100755
index 00000000..19c21825
--- /dev/null
+++ b/gold/scoreboard/modules/available/ati_temper/index
@@ -0,0 +1,4 @@
+#!/bin/sh
+HERE=$(dirname $(readlink -f $0))
+$HERE/gather
+$HERE/plot
diff --git a/gold/scoreboard/modules/available/ati_temper/init b/gold/scoreboard/modules/available/ati_temper/init
new file mode 100755
index 00000000..88a0ed10
--- /dev/null
+++ b/gold/scoreboard/modules/available/ati_temper/init
@@ -0,0 +1,25 @@
+#!/bin/sh
+#set -x
+HERE=$(dirname $(readlink -f $0))
+. $HERE/../../../profile
+mkdir -p $PDIR
+cat > $PDIR/chinaman.conf <$PDIR/chinaman_last_day.conf
diff --git a/gold/scoreboard/modules/available/ati_temper/plot b/gold/scoreboard/modules/available/ati_temper/plot
new file mode 100755
index 00000000..06f20c24
--- /dev/null
+++ b/gold/scoreboard/modules/available/ati_temper/plot
@@ -0,0 +1,10 @@
+#!/bin/sh
+#set -x
+HERE=$(dirname $(readlink -f $0))
+. $HERE/../../../profile
+umask 000
+export GDFONTPATH=/usr/share/fonts/truetype/msttcorefonts
+mkdir -p $GDIR
+gnuplot $PDIR/chinaman.conf> $GDIR/chinaman_overall.png
+tail -n288 $ADIR/chinaman_ati_temper > $ADIR/chinaman_last_day
+gnuplot $PDIR/chinaman_last_day.conf > $GDIR/chinaman_24h.png
diff --git a/gold/scoreboard/modules/available/bitcoin/gather b/gold/scoreboard/modules/available/bitcoin/gather
new file mode 100755
index 00000000..8b996428
--- /dev/null
+++ b/gold/scoreboard/modules/available/bitcoin/gather
@@ -0,0 +1,12 @@
+#!/bin/sh
+HERE=$(dirname $(readlink -f $0))
+. $HERE/../../../profile
+LF=bitcoin
+mkdir -p $ADIR
+mkdir -p $LDIR
+
+
+# write into live directory and archive
+$BITCOIND_PATH getinfo | python $HERE/render | tee $LDIR/$LF >> $ADIR/$LF
+
+echo `date +"%Y-%m-%dT%H:%M:%S"` `$KREBSDIR/bin/mtgox_ticker` | sed -e 's/High: //' -e 's/Low: //' -e 's/Last: //' | tee $LDIR/ticker_${LF}>> $ADIR/ticker_${LF}
diff --git a/gold/scoreboard/modules/available/bitcoin/index b/gold/scoreboard/modules/available/bitcoin/index
new file mode 100755
index 00000000..19c21825
--- /dev/null
+++ b/gold/scoreboard/modules/available/bitcoin/index
@@ -0,0 +1,4 @@
+#!/bin/sh
+HERE=$(dirname $(readlink -f $0))
+$HERE/gather
+$HERE/plot
diff --git a/gold/scoreboard/modules/available/bitcoin/init b/gold/scoreboard/modules/available/bitcoin/init
new file mode 100755
index 00000000..c4ddf32f
--- /dev/null
+++ b/gold/scoreboard/modules/available/bitcoin/init
@@ -0,0 +1,47 @@
+#!/bin/sh
+#set -x
+HERE=$(dirname $(readlink -f $0))
+. $HERE/../../../profile
+mkdir -p $PDIR
+cat > $PDIR/bitcoin.conf <$PDIR/bitcoin_last_day.conf
diff --git a/gold/scoreboard/modules/available/bitcoin/plot b/gold/scoreboard/modules/available/bitcoin/plot
new file mode 100755
index 00000000..209f662c
--- /dev/null
+++ b/gold/scoreboard/modules/available/bitcoin/plot
@@ -0,0 +1,11 @@
+#!/bin/sh
+#set -x
+HERE=$(dirname $(readlink -f $0))
+. $HERE/../../../profile
+umask 000
+export GDFONTPATH=/usr/share/fonts/truetype/msttcorefonts
+mkdir -p $GDIR
+gnuplot $PDIR/bitcoin.conf> $GDIR/bitcoin.png
+tail -n288 $ADIR/bitcoin > $ADIR/bitcoin_last_day
+tail -n288 $ADIR/ticker_bitcoin > $ADIR/ticker_bitcoin_last_day
+gnuplot $PDIR/bitcoin_last_day.conf > $GDIR/bitcoin_24h.png
diff --git a/gold/scoreboard/modules/available/bitcoin/render b/gold/scoreboard/modules/available/bitcoin/render
new file mode 100644
index 00000000..19545b21
--- /dev/null
+++ b/gold/scoreboard/modules/available/bitcoin/render
@@ -0,0 +1,10 @@
+#!/usr/bin/python
+import json,urllib,datetime,sys
+today = datetime.datetime.now()
+
+result = json.load(sys.stdin)
+print today.strftime("%Y-%m-%dT%H:%M:%S"),
+print '%s' % result["blocks"],
+print '%s' % result["difficulty"],
+print '%s' % result["keypoololdest"],
+print '%s' % result["keypoolsize"]
diff --git a/gold/scoreboard/modules/available/bitcoinpool/bitcoinpool_stats b/gold/scoreboard/modules/available/bitcoinpool/bitcoinpool_stats
new file mode 100755
index 00000000..599ef9ff
--- /dev/null
+++ b/gold/scoreboard/modules/available/bitcoinpool/bitcoinpool_stats
@@ -0,0 +1,11 @@
+#!/usr/bin/python2
+import simplejson,urllib,datetime
+url="http://bitcoinpool.com/pooljson.php"
+f = open('/home/makefu/log/bitcoinpool_stats',mode='a')
+today = datetime.datetime.now()
+
+result = simplejson.load(urllib.urlopen(url))
+print >>f, today.strftime("%Y-%m-%dT%H:%M:%S"),
+for k,v in result.iteritems():
+ print >>f ,'%s' % v,
+print >>f
diff --git a/gold/scoreboard/modules/available/bitcoinslc/bitcoinslc_live b/gold/scoreboard/modules/available/bitcoinslc/bitcoinslc_live
new file mode 100755
index 00000000..9fcbc6af
--- /dev/null
+++ b/gold/scoreboard/modules/available/bitcoinslc/bitcoinslc_live
@@ -0,0 +1,8 @@
+#!/bin/sh
+LF=`basename $0`
+token=`curl -A 'Mozilla/5.0 (X11; Linux x86_64; rv:5.0) Gecko/20100101 Firefox/5.0' http://www.bitcoins.lc -c cookiejar 2>/dev/null | grep -E '_csrf_token' | tail -n 1 | sed -n 's/.*value="\([0-9a-f]*\)".*/\1/p'`
+
+curl --keepalive -v -A 'Mozilla/5.0 (X11; Linux x86_64; rv:5.0) Gecko/20100101 Firefox/5.0' -e http://www.bitcoins.lc/ -d "_csrf_token=$token" -d "action=login" -d "email=$BITCOINSLC_MAIL" -d "password=$BITCOINSLC_PASS" -d "login=Proceed" -b cookiejar -c cookiejar https://www.bitcoins.lc/ -k 2>/dev/null
+#Your current total hashrate
765.94 Mhash/s
+mkdir -p $LDIR
+echo $(date +%Y-%m-%dT%H:%M:%S) `curl -b cookiejar -A 'Mozilla/5.0 (X11; Linux x86_64; rv:5.0) Gecko/20100101 Firefox/5.0' https://www.bitcoins.lc/stats --keepalive 2>/dev/null| sed -n 's/.*Your current total hashrate<\/strong>
\([0-9.]*\).*/\1/p'` > $ADIR/chinaman_$LF
diff --git a/gold/scoreboard/modules/available/bitcoinslc/bitcoinslc_stats b/gold/scoreboard/modules/available/bitcoinslc/bitcoinslc_stats
new file mode 100755
index 00000000..29508486
--- /dev/null
+++ b/gold/scoreboard/modules/available/bitcoinslc/bitcoinslc_stats
@@ -0,0 +1,18 @@
+#!/usr/bin/python2
+import simplejson,urllib,datetime,sys
+url="https://www.bitcoins.lc/stats.json"
+f = open(sys.env['ADIR']+'/bitcoinslc_stats',mode='a')
+today = datetime.datetime.now()
+
+result = simplejson.load(urllib.urlopen(url))
+print >>f, today.strftime("%Y-%m-%dT%H:%M:%S"),
+# hash_rate current_block active_workers total_workers total_users round_shares valid_round_shares total_shares
+print >>f , ("%s" % result['hash_rate'] ),
+print >>f , ("%s" % result['current_block'] ),
+print >>f , ("%s" % result['active_workers'] ),
+print >>f , ("%s" % result['total_workers'] ),
+print >>f , ("%s" % result['total_users'] ),
+print >>f , ("%s" % result['round_shares'] ),
+print >>f , ("%s" % result['valid_round_shares'] ),
+print >>f , ("%s" % result['total_shares'] ),
+print >>f
diff --git a/gold/scoreboard/modules/available/btcguild/btcguild_stats b/gold/scoreboard/modules/available/btcguild/btcguild_stats
new file mode 100755
index 00000000..58d72f75
--- /dev/null
+++ b/gold/scoreboard/modules/available/btcguild/btcguild_stats
@@ -0,0 +1,22 @@
+#!/usr/bin/python2
+import simplejson,urllib,datetime
+url="http://www.btcguild.com/pool_stats.php"
+f = open('/home/makefu/log/btcguild_stats',mode='a')
+today = datetime.datetime.now()
+
+result = simplejson.load(urllib.urlopen(url))
+try:
+ print >>f, today.strftime("%Y-%m-%dT%H:%M:%S"),
+ # uk_speed round_time round_shares active_workers useast_speed uscentral_speed uswest_speed hash_rate nl_speed
+ print >>f , ("%s" % '0' ).replace('.',''),
+ print >>f , ("%s" % result['round_time'] ).replace('.',''),
+ print >>f , ("%s" % result['round_shares'] ).replace('.',''),
+ print >>f , ("%s" % result['active_workers'] ).replace('.',''),
+ print >>f , ("%s" % result['useast_speed'] ).replace('.',''),
+ print >>f , ("%s" % result['uscentral_speed'] ).replace('.',''),
+ print >>f , ("%s" % result['uswest_speed'] ).replace('.',''),
+ print >>f , ("%s" % result['hash_rate'] ).replace('.',''),
+ print >>f , ("%s" % 0 ).replace('.',''),
+ print >>f
+except:
+ pass
diff --git a/gold/scoreboard/modules/available/btcguild/btcguild_stats_self b/gold/scoreboard/modules/available/btcguild/btcguild_stats_self
new file mode 100755
index 00000000..9cb65590
--- /dev/null
+++ b/gold/scoreboard/modules/available/btcguild/btcguild_stats_self
@@ -0,0 +1,15 @@
+#!/usr/bin/python2
+import simplejson,urllib,datetime,sys
+url="http://www.btcguild.com/api.php?api_key="+sys.env['BTCGUILD_APIKEY']
+f = open('/home/makefu/log/btcguild_stats_self',mode='a')
+today = datetime.datetime.now()
+
+#result = simplejson.load(urllib.urlopen(url))
+#print >>f, today.strftime("%Y-%m-%dT%H:%M:%S"),
+
+# TODO do the right thing with the data (aka this loop is wrong, fixme
+#for k,v in result.iteritems():
+# data = '%s' % v
+# data = data.replace('.','')
+# print >>f ,data,
+#print >>f
diff --git a/gold/scoreboard/modules/available/create_gnuplot b/gold/scoreboard/modules/available/create_gnuplot
new file mode 100755
index 00000000..95a6d170
--- /dev/null
+++ b/gold/scoreboard/modules/available/create_gnuplot
@@ -0,0 +1,196 @@
+#!/bin/sh
+#set -x
+umask 000
+MDIR=/home/makefu/log
+DDIR=/srv/http/tmp
+mkdir -p $DDIR/graphs
+cat > $DDIR/.htaccess << EOF
+order allow,deny
+allow from all
+EOF
+
+#
+# chinaman
+#
+cat > $MDIR/plot/chinaman.conf <$MDIR/plot/chinaman_last_day.conf
+
+cat $MDIR/plot/chinaman.conf | gnuplot > $DDIR/graphs/chinaman_overall.png
+tail -n288 $MDIR/chinaman_ati_temper > $MDIR/chinaman_last_day
+cat $MDIR/plot/chinaman_last_day.conf | gnuplot > $DDIR/graphs/chinaman_24h.png
+rm $MDIR/chinaman_last_day
+
+#
+#bitcoinpool
+#
+cat > $MDIR/plot/bitcoinpool.conf <$MDIR/plot/bitcoinpool_last_day.conf
+
+cat $MDIR/plot/bitcoinpool.conf | gnuplot > $DDIR/graphs/bitcoinpool.png
+tail -n288 $MDIR/bitcoinpool_stats > $MDIR/bitcoinpool_last_day
+cat $MDIR/plot/bitcoinpool_last_day.conf | gnuplot > $DDIR/graphs/bitcoinpool_24h.png
+rm $MDIR/bitcoinpool_last_day
+
+# uk_speed round_time round_shares active_workers useast_speed uscentral_speed uswest_speed hash_rate nl_speed
+cat > $MDIR/plot/btcguild.conf <$MDIR/plot/btcguild_last_day.conf
+
+gnuplot $MDIR/plot/btcguild.conf > $DDIR/graphs/btcguild.png
+tail -n288 $MDIR/btcguild_stats > $MDIR/btcguild_last_day
+gnuplot $MDIR/plot/btcguild_last_day.conf > $DDIR/graphs/btcguild_24h.png
+rm $MDIR/btcguild_last_day
+
+#
+#bitcoinslc
+#
+cat > $MDIR/plot/bitcoinslc.conf <$MDIR/plot/bitcoinslc_last_day.conf
+
+cat $MDIR/plot/bitcoinslc.conf | gnuplot > $DDIR/graphs/bitcoinslc.png
+tail -n288 $MDIR/bitcoinslc_stats > $MDIR/bitcoinslc_last_day
+cat $MDIR/plot/bitcoinslc_last_day.conf | gnuplot > $DDIR/graphs/bitcoinslc_24h.png
+rm $MDIR/bitcoinslc_last_day
diff --git a/gold/scoreboard/modules/available/solidcoin/gather b/gold/scoreboard/modules/available/solidcoin/gather
new file mode 100755
index 00000000..b4fe81f2
--- /dev/null
+++ b/gold/scoreboard/modules/available/solidcoin/gather
@@ -0,0 +1,12 @@
+#!/bin/sh
+HERE=$(dirname $(readlink -f $0))
+. $HERE/../../../profile
+LF=solidcoin
+mkdir -p $ADIR
+mkdir -p $LDIR
+
+
+# write into live directory and archive
+$SOLIDCOIND_PATH sc_getinfo | python $HERE/render | tee $LDIR/$LF >> $ADIR/$LF
+
+echo `date +"%Y-%m-%dT%H:%M:%S"` `$KREBSDIR/bin/scex_ticker` | sed -e 's/High: //' -e 's/Low: //' -e 's/Last: //' | tee $LDIR/ticker_${LF}>> $ADIR/ticker_${LF}
diff --git a/gold/scoreboard/modules/available/solidcoin/index b/gold/scoreboard/modules/available/solidcoin/index
new file mode 100755
index 00000000..19c21825
--- /dev/null
+++ b/gold/scoreboard/modules/available/solidcoin/index
@@ -0,0 +1,4 @@
+#!/bin/sh
+HERE=$(dirname $(readlink -f $0))
+$HERE/gather
+$HERE/plot
diff --git a/gold/scoreboard/modules/available/solidcoin/init b/gold/scoreboard/modules/available/solidcoin/init
new file mode 100755
index 00000000..c12a6586
--- /dev/null
+++ b/gold/scoreboard/modules/available/solidcoin/init
@@ -0,0 +1,47 @@
+#!/bin/sh
+#set -x
+HERE=$(dirname $(readlink -f $0))
+. $HERE/../../../profile
+mkdir -p $PDIR
+cat > $PDIR/solidcoin.conf <$PDIR/solidcoin_last_day.conf
diff --git a/gold/scoreboard/modules/available/solidcoin/plot b/gold/scoreboard/modules/available/solidcoin/plot
new file mode 100755
index 00000000..d1feae88
--- /dev/null
+++ b/gold/scoreboard/modules/available/solidcoin/plot
@@ -0,0 +1,11 @@
+#!/bin/sh
+#set -x
+HERE=$(dirname $(readlink -f $0))
+. $HERE/../../../profile
+umask 000
+export GDFONTPATH=/usr/share/fonts/truetype/msttcorefonts
+mkdir -p $GDIR
+gnuplot $PDIR/solidcoin.conf> $GDIR/solidcoin.png
+tail -n288 $ADIR/solidcoin > $ADIR/solidcoin_last_day
+tail -n288 $ADIR/ticker_solidcoin > $ADIR/ticker_solidcoin_last_day
+gnuplot $PDIR/solidcoin_last_day.conf > $GDIR/solidcoin_24h.png
diff --git a/gold/scoreboard/modules/available/solidcoin/render b/gold/scoreboard/modules/available/solidcoin/render
new file mode 100644
index 00000000..19545b21
--- /dev/null
+++ b/gold/scoreboard/modules/available/solidcoin/render
@@ -0,0 +1,10 @@
+#!/usr/bin/python
+import json,urllib,datetime,sys
+today = datetime.datetime.now()
+
+result = json.load(sys.stdin)
+print today.strftime("%Y-%m-%dT%H:%M:%S"),
+print '%s' % result["blocks"],
+print '%s' % result["difficulty"],
+print '%s' % result["keypoololdest"],
+print '%s' % result["keypoolsize"]
diff --git a/gold/scoreboard/modules/available/static/init b/gold/scoreboard/modules/available/static/init
new file mode 100755
index 00000000..a7dc8859
--- /dev/null
+++ b/gold/scoreboard/modules/available/static/init
@@ -0,0 +1,32 @@
+#!/bin/sh
+# TODO use active modules to find out which to build
+HERE=$(dirname $(readlink -f $0))
+. $HERE/../../../profile
+cat <$GDIR/index.html
+
+
+ Stats
+
+
+
+
+ Chinaman
+

+ Solidcoin
+

+ Bitcoin
+

+
+
+
+
+EOF
diff --git a/gold/scoreboard/profile b/gold/scoreboard/profile
new file mode 100644
index 00000000..ccd7c2b5
--- /dev/null
+++ b/gold/scoreboard/profile
@@ -0,0 +1,26 @@
+# the webpage directory
+WDIR=/srv/http/tmp
+LDIR=$WDIR/live
+GDIR=$WDIR/graphs/gold
+
+# the root directory
+KREBSDIR=/krebs
+MDIR=$KREBSDIR/gold/scoreboard
+
+# folder where plot configs are written into
+PDIR=$MDIR/plot
+# the archive directory
+ADIR=$MDIR/archive
+
+TEMPDIR=/tmp
+
+# bitcoinslc login/password
+BITCOINSLC_MAIL=
+BITCOINSLC_PASS=
+
+# binaries
+SOLIDCOIND_PATH=/root/bin/solidcoind
+BITCOIND_PATH=/root/bin/bitcoind
+
+# BTCGUILD
+BTCGUILD_APIKEY=
diff --git a/gold/scoreboard/util/run-folder b/gold/scoreboard/util/run-folder
new file mode 100755
index 00000000..ae5c96ac
--- /dev/null
+++ b/gold/scoreboard/util/run-folder
@@ -0,0 +1,6 @@
+#!/bin/sh
+ls -1 $1 | while read script; do
+ echo "Running $script"
+ $1/$script &
+done
+
diff --git a/gold/scoreboard/util/schedule_logger b/gold/scoreboard/util/schedule_logger
new file mode 100755
index 00000000..6d071ba9
--- /dev/null
+++ b/gold/scoreboard/util/schedule_logger
@@ -0,0 +1,13 @@
+#!/bin/sh
+HERE=$(dirname $(readlink -f $0))
+. $HERE/../profile
+RUN_PARTS=$HERE/run-folder
+echo "adding getlogs to crontab"
+
+crontab -l 2>/dev/null | grep -v "$MDIR/modules/active" > $TEMPDIR/currcron
+echo "*/5 * * * * /bin/date >>$TEMPDIR/debug_log && $RUN_PARTS $MDIR/modules/active >>$TEMPDIR/btc_logger_debug_log 2>&1" >> $TEMPDIR/currcron
+
+cat $TEMPDIR/currcron
+
+crontab $TEMPDIR/currcron
+rm $TEMPDIR/currcron
--
cgit v1.2.3
From d88d17941f4b2f249747fd90ac5c40349d8f2392 Mon Sep 17 00:00:00 2001
From: EUcancER
Date: Wed, 31 Aug 2011 14:02:09 +0200
Subject: scoreboard: generalization of modules
symlinks to active will be created when calling init in the modules
ati_temper/init script is more general (holds hostname variable)
update README with last commit message.
---
gold/scoreboard/README | 14 ++++++++++++++
gold/scoreboard/modules/active/.placeholder | 0
gold/scoreboard/modules/active/bitcoin | 1 -
gold/scoreboard/modules/active/chinaman_temper | 1 -
gold/scoreboard/modules/active/solidcoin | 1 -
gold/scoreboard/modules/available/ati_temper/init | 21 ++++++++++++---------
gold/scoreboard/modules/available/bitcoin/init | 1 +
gold/scoreboard/modules/available/bitcoin/render | 2 +-
gold/scoreboard/modules/available/solidcoin/init | 1 +
9 files changed, 29 insertions(+), 13 deletions(-)
create mode 100644 gold/scoreboard/modules/active/.placeholder
delete mode 120000 gold/scoreboard/modules/active/bitcoin
delete mode 120000 gold/scoreboard/modules/active/chinaman_temper
delete mode 120000 gold/scoreboard/modules/active/solidcoin
(limited to 'gold')
diff --git a/gold/scoreboard/README b/gold/scoreboard/README
index 180cbd0d..8e59ab03 100644
--- a/gold/scoreboard/README
+++ b/gold/scoreboard/README
@@ -2,6 +2,20 @@ Scoreboard
==========
a non-interactive gold logger/plotter
+scoreboard contains a number of modules which do a number of things:
+ati_temper: log temperature data of an ati_temper enabled host :
+ see //gold/miner/bin/ati_temper
+solidcoin : graph solidcoin informations
+bitcoin : s.a.
+
+//gold/scoreboard/profile contains all the important paths and variables
+which are sourced by the modules. In a new installation this file needs
+to be customized.
+
+//gold/scoreboard/util/schedule_logger is the scheduler for generating
+the graphs every 5 minutes.
+
+
Install
======
* install lighttpd
diff --git a/gold/scoreboard/modules/active/.placeholder b/gold/scoreboard/modules/active/.placeholder
new file mode 100644
index 00000000..e69de29b
diff --git a/gold/scoreboard/modules/active/bitcoin b/gold/scoreboard/