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('' + exn.stack + ''); + }; + 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 = '' + price + '' + } + if (x.price < last_price) { + price = '' + price + '' + } + last_price = x.price; + + var c = ({ buy: '', sell: '' })[x.type]; + var m = ''; + m += x.id + m += ' ' + JSON.parse(JSON.stringify(x.date)) + m += ' ' + price + m += ' ' + c + x.amount + '' + 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('' + exn.stack + ''); - }; - 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 = '' + price + '' - } - if (x.price < last_price) { - price = '' + price + '' - } - last_price = x.price; - - var c = ({ buy: '', sell: '' })[x.type]; - var m = ''; - m += x.id - m += ' ' + JSON.parse(JSON.stringify(x.date)) - m += ' ' + price - m += ' ' + c + x.amount + '' - 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('' + exn.stack + ''); + }; + 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 = '' + price + '' + } + if (x.price < last_price) { + price = '' + price + '' + } + last_price = x.price; + + var c = ({ buy: '', sell: '' })[x.type]; + var m = ''; + m += x.id + m += ' ' + JSON.parse(JSON.stringify(x.date)) + m += ' ' + price + m += ' ' + c + x.amount + '' + 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('' + exn.stack + ''); }; - 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 = '' + price + '' - } - if (x.price < last_price) { - price = '' + price + '' - } - last_price = x.price; - - var c = ({ buy: '', sell: '' })[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: '', sell: '' })[x.type]; + var m = ''; + m += x.id + m += ' ' + JSON.parse(JSON.stringify(x.date)) + m += ' ' + price + m += ' ' + c + x.amount + '' + 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 + '' 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 = '' + rendered_price + '' + }; + if (price < last_price) { + rendered_price = '' + rendered_price + '' + }; + }; + 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/