# HG changeset patch # User Christopher Rogers # Date 1298499398 0 # Node ID 33479b294b317f62f2041d0990d2c9d83c29acac # Parent 5dbbf86c3bc07efd0c9aa409f527ad3200b46b25 Add tank/web folder. diff -r 5dbbf86c3bc0 -r 33479b294b31 tank/web/bin/makegraphs --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/tank/web/bin/makegraphs Wed Feb 23 22:16:38 2011 +0000 @@ -0,0 +1,318 @@ +#!/bin/sh +#*/5 * * * * /home/slitaz/www/tank/bin/makegraphs >/dev/null + +# RRD database directory +rrdlog="/home/slitaz/www/tank/rrd" + +# Images directory +rrdgraph="/home/slitaz/www/tank/pics/rrd" + +# Colors +rrdcolors="--color SHADEA#FFFFFF --color SHADEB#FFFFFF --color BACK#FFFFFF" +rrdgraphargs="-aPNG -i -z --alt-y-grid -w 600 -h 100 -r $rrdcolors" + +[ -d $rrdlog ] || mkdir -p $rrdlog +[ -d $rrdgraph ] || mkdir -p $rrdgraph + +updatecpudata() { + [ -e "$rrdlog/cpu.rrd" ] || rrdtool create $rrdlog/cpu.rrd --step=300 \ + DS:user:COUNTER:600:0:500000000 \ + DS:system:COUNTER:600:0:500000000 \ + DS:idle:COUNTER:600:0:500000000 \ + RRA:AVERAGE:0.5:1:576 RRA:AVERAGE:0.5:6:672 \ + RRA:AVERAGE:0.5:24:732 RRA:AVERAGE:0.5:144:1460 + grep '^cpu' /proc/stat | while read cpu user nice system idle misc; do + rrdtool update $rrdlog/cpu.rrd -t user:system:idle \ + N:$(( $user + $nice )):$system:$idle + break + done + + [ -e "$rrdlog/cpu2.rrd" ] && + grep '^cpu' /proc/stat | while read cpu user nice system idle misc; do + rrdtool update $rrdlog/cpu2.rrd -t nice:user:system:idle \ + N:$nice:$user:$system:$idle + break + done +} + +updatecpugraph() { + period=$1 + info="$(grep '^model name' /proc/cpuinfo | cut -d: -f2 \ + | sed 's/ * / /g' | awk ' +{ s=$0 ; n++ } +END { if (n > 1) printf " %dx",n; print s }')" + rrdtool graph "$rrdgraph/cpu-$period.png" --start -1$period \ + $rrdgraphargs -l 0 -u 100 -t "cpu usage per $period [$info ]" \ + DEF:user=$rrdlog/cpu.rrd:user:AVERAGE \ + DEF:system=$rrdlog/cpu.rrd:system:AVERAGE \ + DEF:idle=$rrdlog/cpu.rrd:idle:AVERAGE \ + 'CDEF:total=user,system,idle,+,+' \ + 'CDEF:userpct=100,user,total,/,*' \ + 'CDEF:systempct=100,system,total,/,*' \ + 'CDEF:idlepct=100,idle,total,/,*' \ + 'AREA:userpct#0000FF:user cpu usage' \ + 'STACK:systempct#FF0000:system cpu usage' \ + 'STACK:idlepct#00FF00:idle cpu usage\j' +} + +updatememgraph() { + period=$1 + info="$(free | awk '\ +{ \ + if (/Mem:/) { \ + if ($2 < 10000) printf "%d KB",$2; \ + else if ($2 < 10000000) printf "%d MB",$2/1024; \ + else printf "%d GB",$2/1024/1024; \ + } \ +}')" + info2="$(free | awk '\ +{ \ + if (/Swap:/) { \ + if ($2 < 10000) printf "%d KB",$2; \ + else if ($2 < 10000000) printf "%d MB",$2/1024; \ + else printf "%d GB",$2/1024/1024; \ + } \ +}')" + rrdtool graph "$rrdgraph/memory-$period.png" --start -1$period \ + $rrdgraphargs -l 0 -u 100 \ + -t "memory usage per $period [ $info + $info2 swap ]" \ + DEF:used=$rrdlog/mem.rrd:memused:AVERAGE \ + DEF:free=$rrdlog/mem.rrd:memfree:AVERAGE \ + DEF:shared=$rrdlog/mem.rrd:memshared:AVERAGE \ + DEF:buffer=$rrdlog/mem.rrd:membuffers:AVERAGE \ + DEF:cache=$rrdlog/mem.rrd:memcache:AVERAGE \ + DEF:swused=$rrdlog/mem.rrd:swapused:AVERAGE \ + DEF:swfree=$rrdlog/mem.rrd:swapfree:AVERAGE \ + 'CDEF:total=used,free,+' \ + 'CDEF:used2=used,buffer,cache,shared,+,+,-' \ + 'CDEF:usedpct=100,used2,total,/,*' \ + 'CDEF:sharedpct=100,shared,total,/,*' \ + 'CDEF:bufferpct=100,buffer,total,/,*' \ + 'CDEF:cachepct=100,cache,total,/,*' \ + 'CDEF:freepct=100,free,total,/,*' \ + 'CDEF:swtotal=swused,swfree,+' \ + 'CDEF:swusedpct=100,swused,swtotal,/,*' \ + 'AREA:usedpct#0000FF:used memory' \ + 'STACK:sharedpct#FF7F00:shared memory' \ + 'STACK:bufferpct#FF00FF:buffered memory' \ + 'STACK:cachepct#FFFF00:cached memory' \ + 'STACK:freepct#00FF00:free memory' \ + 'LINE2:swusedpct#FF0000:used swap\j' +} + +updatememdata () { + [ -e "$rrdlog/mem.rrd" ] || + rrdtool create "$rrdlog/mem.rrd" --step=300 \ + DS:memused:ABSOLUTE:600:0:5000000000 \ + DS:memfree:ABSOLUTE:600:0:5000000000 \ + DS:memshared:ABSOLUTE:600:0:5000000000 \ + DS:membuffers:ABSOLUTE:600:0:5000000000 \ + DS:memcache:ABSOLUTE:600:0:5000000000 \ + DS:swapused:ABSOLUTE:600:0:5000000000 \ + DS:swapfree:ABSOLUTE:600:0:5000000000 \ + RRA:AVERAGE:0.5:1:576 RRA:AVERAGE:0.5:6:672 \ + RRA:AVERAGE:0.5:24:732 RRA:AVERAGE:0.5:144:1460 + + while read tag count unit; do + case "$tag" in + MemTotal:) memtotal=$(($count * 1024));; + MemFree:) memfree=$(($count * 1024)) + memused=$(($memtotal - $memfree)) + memshared=0;; + MemShared:) memshared=$(($count * 1024));; + Buffers:) membuffers=$(($count * 1024));; + Cached:) memcache=$(($count * 1024));; + SwapTotal:) swaptotal=$(($count * 1024));; + SwapFree:) swapfree=$(($count * 1024)) + swapused=$(( $swaptotal - $swapfree));; + esac + done < /proc/meminfo + + rrdtool update "$rrdlog/mem.rrd" \ + -t memused:memfree:memshared:membuffers:memcache:swapused:swapfree \ + "N:$memused:$memfree:$memshared:$membuffers:$memcache:$swapused:$swapfree" +} + +getmax() { + rrdtool fetch $rrdlog/$1.rrd AVERAGE | awk '\ +BEGIN {max=0} \ +/^[0-9]/ { \ + if ($2 != "nan" && $2 > max) max=$2; \ + if ($3 != "nan" && $3 > max) max=$3; \ +} \ +END { print max }' | sed 's/,/./' +} + +updatediskgraph() { + period=$1 + [ "$period" == "day" ] && maxdisk="$(getmax disk)" + info="" + [ -r $2 ] && + info="[ $(fdisk -l 2> /dev/null | grep "^Disk $2:" | \ + sed "s|Disk $2: \(.*\), .*|\1|") ]" + if [ -e /sys/block/${2#/dev/}/device/iodone_cnt ]; then + err=$(printf "%d\n" $(cat /sys/block/${2#/dev/}/device/ioerr_cnt) ) + done=$(printf "%d\n" $(cat /sys/block/${2#/dev/}/device/iodone_cnt) ) + rate=$(echo | awk "BEGIN { printf \"%.0e\\n\",$err/$done }") + [ $err -eq 0 ] && rate="0" +# --right-axis-label "I/O state %" + rrdtool graph "$rrdgraph/disk-$period.png" --start -1$period \ + $rrdgraphargs -t "disk access per $period $info" \ + --logarithmic --lower-limit 1 -v "Sectors/second" --units=si \ + DEF:read=$rrdlog/disk.rrd:readsect:AVERAGE \ + DEF:write=$rrdlog/disk.rrd:writesect:AVERAGE \ + DEF:req=$rrdlog/iodisk.rrd:req:AVERAGE \ + DEF:done=$rrdlog/iodisk.rrd:done:AVERAGE \ + DEF:err=$rrdlog/iodisk.rrd:err:AVERAGE \ + "CDEF:readpct=100,read,$maxdisk,/,*" \ + "CDEF:writepct=100,write,$maxdisk,/,*" \ + "CDEF:errpct=100,err,req,/,*" \ + "CDEF:donepct=100,done,req,/,*" \ + "CDEF:errrate=err,done,/" \ + 'AREA:readpct#0000FF:sectors read from disk' \ + "COMMENT:I/O error rate $rate" \ + 'STACK:writepct#00FF00:sectors written to disk' \ + 'LINE2:donepct#FFFF00:% I/O complete' \ + 'LINE2:errpct#FF0000:% I/O error\j' + else + rrdtool graph "$rrdgraph/disk-$period.png" --start -1$period \ + $rrdgraphargs -t "disk access per $period $info" \ + --logarithmic --lower-limit 1 -v "Sectors/second" --units=si \ + DEF:read=$rrdlog/disk.rrd:readsect:AVERAGE \ + DEF:write=$rrdlog/disk.rrd:writesect:AVERAGE \ + "CDEF:readpct=100,read,$maxdisk,/,*" \ + "CDEF:writepct=100,write,$maxdisk,/,*" \ + 'AREA:readpct#0000FF:sectors read from disk' \ + 'STACK:writepct#00FF00:sectors written to disk' + fi +} + +updatediskdata() { + dev=$1 + [ -e "$rrdlog/disk.rrd" ] || + rrdtool create "$rrdlog/disk.rrd" --step=300 \ + DS:readsect:COUNTER:600:0:5000000000 \ + DS:writesect:COUNTER:600:0:5000000000 \ + RRA:AVERAGE:0.5:1:576 RRA:AVERAGE:0.5:6:672 \ + RRA:AVERAGE:0.5:24:732 RRA:AVERAGE:0.5:144:1460 + [ -e "$rrdlog/iodisk.rrd" ] || + rrdtool create "$rrdlog/iodisk.rrd" --step=300 \ + DS:done:GAUGE:600:0:U DS:err:GAUGE:600:0:U \ + DS:req:GAUGE:600:0:U \ + RRA:AVERAGE:0.5:1:576 RRA:AVERAGE:0.5:6:672 \ + RRA:AVERAGE:0.5:24:732 RRA:AVERAGE:0.5:144:1460 + + while read major minor name readreq readsect writereq writesect misc; do + [ $major = $(( 0x$(stat -c %t $dev) )) ] || continue + [ $minor = $(( 0x$(stat -c %T $dev) )) ] || continue + rrdtool update "$rrdlog/disk.rrd" -t readsect:writesect \ + N:$readsect:$writesect + done < /proc/diskstats + disk=${dev:0:8} + dir=/sys/block/${disk#/dev/}/device + done=$(printf "%d\n" $(cat $dir/iodone_cnt 2> /dev/null) ) + err=$(printf "%d\n" $(cat $dir/ioerr_cnt 2> /dev/null) ) + req=$(printf "%d\n" $(cat $dir/iorequest_cnt 2> /dev/null) ) + rrdtool update "$rrdlog/iodisk.rrd" -t done:err:req N:$done:$err:$req +} + +updateifgraph() { + interface=$1 + period=$2 + rrdtool graph "$rrdgraph/$interface-$period.png" --start -1$period \ + $rrdgraphargs -t "traffic on $interface graph per $period" \ + --logarithmic -A -v "Bytes/second" --units=si \ + DEF:incoming=$rrdlog/$interface.rrd:incoming:AVERAGE \ + DEF:outgoing=$rrdlog/$interface.rrd:outgoing:AVERAGE \ + 'AREA:incoming#00FF00:incoming traffic' \ + 'GPRINT:outgoing:MAX:max output%8.3lf %sBps' \ + 'LINE1:outgoing#0000FF:outgoing traffic\j' +} + +netframes() { +ifconfig $1 | grep "$2 packets" | sed -re "s/.*$3:([0-9]+).*/\1/g" +} + +netstats() { +ifconfig $1 | grep bytes | sed -re "s/.*$2 bytes:([0-9]+).*/\1/g" +} + +updateifdata() { + interface=$1 + [ -e "$rrdlog/$interface.rrd" ] || + rrdtool create "$rrdlog/$interface.rrd" --step=300 \ + DS:incoming:COUNTER:600:0:U \ + DS:outgoing:COUNTER:600:0:U \ + RRA:AVERAGE:0.5:1:576 RRA:AVERAGE:0.5:6:672 \ + RRA:AVERAGE:0.5:24:732 RRA:AVERAGE:0.5:144:1460 + [ -e "$rrdlog/packets-$interface.rrd" ] || + rrdtool create "$rrdlog/packets-$interface.rrd" --step=300 \ + DS:in:COUNTER:600:0:U DS:out:COUNTER:600:0:U \ + DS:inerr:COUNTER:600:0:U DS:outerr:COUNTER:600:0:U \ + DS:indrop:COUNTER:600:0:U DS:outdrop:COUNTER:600:0:U \ + DS:inov:COUNTER:600:0:U DS:outov:COUNTER:600:0:U \ + DS:frame:COUNTER:600:0:U DS:carrier:COUNTER:600:0:U \ + RRA:AVERAGE:0.5:1:576 RRA:AVERAGE:0.5:6:672 \ + RRA:AVERAGE:0.5:24:732 RRA:AVERAGE:0.5:144:1460 + rx=$(netstats $interface RX) + tx=$(netstats $interface TX) + rrdtool update "$rrdlog/$interface.rrd" -t incoming:outgoing \ + N:${rx:-U}:${tx:-U} + rx=$(netframes $interface RX packets) + tx=$(netframes $interface TX packets) + rxerr=$(netframes $interface RX errors) + txerr=$(netframes $interface TX errors) + rxdrop=$(netframes $interface RX dropped) + txdrop=$(netframes $interface TX dropped) + rxov=$(netframes $interface RX overruns) + txov=$(netframes $interface TX overruns) + frame=$(netframes $interface RX frame) + carrier=$(netframes $interface TX carrier) + rrdtool update "$rrdlog/packets-$interface.rrd" \ + -t in:out:inerr:outerr:indrop:outdrop:inov:outov:frame:carrier \ + N:${rx:-U}:${tx:-U}:${rxerr:-U}:${txerr:-U}:${rxdrop:-U}:${txdrop:-U}:${rxov:-U}:${txov:-U}:${frame:-U}:${carrier:-U} +} + +getdisk() +{ + local d + local i + d=$(stat -c %04D $1) + for i in /dev/* ; do + [ $(stat -c "%02t%02T" $i) == $d ] || continue + echo $i + break + done +} + +### +### System graphs +### + +updatecpudata +updatecpugraph day +updatecpugraph week +updatecpugraph month +updatecpugraph year + +updatememdata +updatememgraph day +updatememgraph week +updatememgraph month +updatememgraph year + +if [ -e /proc/diskstats ]; then + disk=$(getdisk $0) + updatediskdata $disk + updatediskgraph day ${disk:0:8} + updatediskgraph week ${disk:0:8} + updatediskgraph month ${disk:0:8} + updatediskgraph year ${disk:0:8} +fi + +iface=$(/sbin/route -n | awk '{ if (/^0.0.0.0/) print $8 }') +updateifdata $iface +updateifgraph $iface day +updateifgraph $iface week +updateifgraph $iface month +updateifgraph $iface year diff -r 5dbbf86c3bc0 -r 33479b294b31 tank/web/favicon.ico Binary file tank/web/favicon.ico has changed diff -r 5dbbf86c3bc0 -r 33479b294b31 tank/web/graphs.php --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/tank/web/graphs.php Wed Feb 23 22:16:38 2011 +0000 @@ -0,0 +1,125 @@ + + + + Tank RRD stats + + + + + + + + + + + + + +
+ + +
+ + + +
+

Tank RRD stats

+

+ This is the SliTaz GNU/Linux main server and build host. The server runs + naturally SliTaz (stable) and provides some services to all contributors + such as: secure access, disk space, a public directory, cron jobs and the + Build Bot. +

+ +
+ +
+ +'."\n"; +} + +function graphic($res, $img='') +{ + global $myurl; + if (!$img) $img=$res; + echo ""; + echo "\n"; + one_graphic($img."-day.png",$res." daily"); + echo ""; + if ($_GET['stats'] == $res) { + one_graphic($img."-week.png",$res." weekly"); + one_graphic($img."-month.png",$res." monthly"); + one_graphic($img."-year.png",$res." yearly"); + } +} + +echo "

CPU

\n"; +graphic("cpu"); +echo "

Memory

\n"; +graphic("memory"); +echo "

Disk

\n"; +graphic("disk"); +echo "

Network

\n"; +$eth = array(); +exec("/sbin/route -n | awk '{ if (/^0.0.0.0/) print $8 }'", $eth); +graphic("net",$eth[0]); + +?> + + +
+ + + + + + diff -r 5dbbf86c3bc0 -r 33479b294b31 tank/web/index.php --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/tank/web/index.php Wed Feb 23 22:16:38 2011 +0000 @@ -0,0 +1,188 @@ + + + + SliTaz Tank + + + + + + + + + + + + + +
+ + +
+ + + +
+

Codename: tank

+

+ This is the SliTaz GNU/Linux main server and build host. The server runs + naturally SliTaz (stable) and provides some services to all contributors + such as: secure access, disk space, a public directory, cron jobs and the + Build Bot. +

+

+ Tank CPU is a AMD Dual Core 2 GHz - 2GB RAM - Located next to Lausanne, + Switzerland and offered by Thomas Hinterberger and hosted by Christophe + Lincoln. Tank is also monitored by RRDtool which provides + graphical stats. +

+ +
+ +
+ +

graphsSystem stats

+ +

Uptime

+ +
+
+
+ +

Disk usage

+
+
+
+ +

Network

+
+
+
+ +

vhostsVirtual hosts

+ + + +

vhostsOther hosts

+ +

+ These services are hosted by some individual sponsors who gracefully offer + resources to the SliTaz project. +

+ + +

mirrorsMirrors

+

+ These mirrors are updated using the url rsync://mirror.slitaz.org/slitaz/ + (stats) +

+ + + +
+ + + + + + diff -r 5dbbf86c3bc0 -r 33479b294b31 tank/web/pics/website/development.png Binary file tank/web/pics/website/development.png has changed diff -r 5dbbf86c3bc0 -r 33479b294b31 tank/web/pics/website/header-img.png Binary file tank/web/pics/website/header-img.png has changed diff -r 5dbbf86c3bc0 -r 33479b294b31 tank/web/pics/website/logo.png Binary file tank/web/pics/website/logo.png has changed diff -r 5dbbf86c3bc0 -r 33479b294b31 tank/web/pics/website/monitor.png Binary file tank/web/pics/website/monitor.png has changed diff -r 5dbbf86c3bc0 -r 33479b294b31 tank/web/pics/website/slitaz-awstats.png Binary file tank/web/pics/website/slitaz-awstats.png has changed diff -r 5dbbf86c3bc0 -r 33479b294b31 tank/web/pics/website/vhosts.png Binary file tank/web/pics/website/vhosts.png has changed diff -r 5dbbf86c3bc0 -r 33479b294b31 tank/web/pics/website/xhtml10.png Binary file tank/web/pics/website/xhtml10.png has changed diff -r 5dbbf86c3bc0 -r 33479b294b31 tank/web/slitaz.css --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/tank/web/slitaz.css Wed Feb 23 22:16:38 2011 +0000 @@ -0,0 +1,587 @@ +/* + CSS style for SliTaz GNU/Linux website + www.slitaz.org - (c) 2011 Pankso +*/ + +html { + min-height: 102%; +} + +body { + background: #ffffff; + color: black; + font: 13px sans-serif, vernada, arial; + margin: 0; + border-top: 34px solid #f1f1f1; +} + +/* Accessibility */ + +#access { + position: absolute; + top: 4px; + right: 0px; + text-align: right; + width: auto; + margin: 0; + padding: 4px 4px 4px 20px; + font-size: 11px; + font-weight: bold; +} + +#access a { + background: transparent; + color: #0F314E; + text-decoration: none; +} + +#access a:hover { + background: inherit; + color: #b64b22; +} + +#access img { + vertical-align: middle; +} + +/* Header and title */ + +#header { + /*background: #f0ba08 url(pics/website/header.png) repeat-x top;*/ + background: #351a0a url(pics/website/header-img.png) no-repeat top right; + color: black; + width: 100%; + height: 42px; + border-top: 1px solid black; + border-bottom: 1px solid #999; + margin-bottom: 33px; +} + +#titre { + position: absolute; + font-size: 14px; + font-weight: bolder ; + left: 180px; + top: 4px; +} + +#logo { + position: absolute; + float: left; + left: 16px; + top: -10px; + width: 200px; + height: 74px; +} + +/* Side bar Navigation */ + +#nav { + position: absolute; + top: 102px; + right: 80px; + color: #555555; + float: right; + width: 250px; + line-height: 1.5em; + text-align: left; + font-size: 12px; +} + +#nav .nav_box ul { + list-style-type: none; + margin: 0; + padding: 10px 24px 10px 0px; + background-color: inherit; +} + +#nav li { + display: inline; +} + +#nav h4 { + font-size: 120%; + color: #666666; + font-weight: bold; + margin: 0; + padding: 0 0 1px 0; + border-bottom: 1px solid #cecece; +} + +#nav a { + color: #0F314E; + background: inherit; + display: block; + text-decoration: none; + font-weight: bold; +} + +#nav a:hover { + color: #b64b22; + text-decoration: none; + display: block; +} + +#nav ul { + -moz-border-radius: 8px; + -webkit-border-radius: 8px; + border-radius: 8px; + list-style-type: none; + margin: 10px 0; + padding: 10px 24px 10px 24px; + background-color: #eaeaea; +} + +.nav_box { + margin: 10px 0; + padding: 10px 24px 10px 24px; + background-color: #eaeaea; + text-align: justify; + -moz-border-radius: 8px; + -webkit-border-radius: 8px; + border-radius: 8px; + -moz-box-shadow: 0 1px 3px #666; + -webkit-box-shadow: 0 1px 3px #666; + box-shadow: 0 1px 3px #666; + /* CSS3 transition */ + -webkit-transition-property: background-color; + -webkit-transition-duration: 2s; + -moz-transition-property: background-color; + -moz-transition-duration: 2s; + transition-property: background-color; + transition-duration: 2s; +} + +.nav_box:hover { background-color: #f8f8f8; } + +#nav .nav_box p { + line-height: 1.3em; +} + +#nav .nav_box p a { + display: inline; + font-weight: normal; + text-decoration: underline; +} + +#nav .nav_box p a:hover { + text-decoration: none; + color: blue; + background: inherit; +} + +/* Page content */ + +#content { + background: white; + color: black; + text-align: justify; + height: auto; + margin: 6px 320px 0px 0px; + padding: 0px 40px 60px 80px; +} + +#content-full { + background: white; + color: black; + text-align: justify; + height: auto; + margin: 0; + padding: 0px 80px 40px 80px; +} + +#content li, #content-full li { + line-height: 1.5em; + text-align: left; +} + +#news li { + list-style-type: square; + border-bottom: 1px dotted #BEBEBE; + margin-left: -25px; + padding: 4px 0px 4px 0px; +} + +#news a { + text-decoration: none; +} + +#gallery { + text-align: center; +} + +/* Box and block. */ + +.infobox { + margin: 20px 60px; + padding: 12px; + background: #f8f8f8; +} + +.infobox img { vertical-align: middle; } +/* .infobox:hover { background-color: #f2b21d; } */ +.infobox:hover { background-color: #FBFBFB; } + +.block { + /*padding-bottom: 35%;*/ + color: black; + min-height: 200px; + margin-bottom: 40px; +} + +.block ul { + list-style-type: none; + margin: 0; + padding: 0 20px; +} + +.block_left { + width: 46%; + float: left; + background-color: #eaeaea; + margin: 4px 2px; + padding: 0 10px 10px 10px; +} + +.block_right { + width: 46%; + float: right; + background-color: #eaeaea; + margin: 4px 2px; + padding: 0 10px 10px 10px; +} + +#block_top { + color: black; + background-color: #eaeaea; + min-height: 180px; + margin-bottom: 40px; + margin-right: 340px; + padding: 0 10px; +} + +#block_nav { + width: 300px; + min-height: 180px; + float: right; + background-color: #eaeaea; + margin: 0; + padding: 0 10px; +} + +.infobox, .block_left, .block_right, #block_top, #block_nav, #footer { + -moz-border-radius: 8px; + -webkit-border-radius: 8px; + border-radius: 8px; + -moz-box-shadow: 0 1px 3px #666; + -webkit-box-shadow: 0 1px 3px #666; + box-shadow: 0 1px 3px #666; + /* CSS3 transition */ + -webkit-transition-property: background-color; + -webkit-transition-duration: 2s; + -moz-transition-property: background-color; + -moz-transition-duration: 2s; + transition-property: background-color; + transition-duration: 2s; +} + +#block_nav { + font-weight: bold; +} + +#block_nav a { + text-decoration: none; +} + +#block_nav li a:hover { + color: #b64b22; +} + +#block_nav ul { + margin: 0; + list-style-type: none; +} + +#block_nav h3 { + font-size: 110%; +} + +.block_left:hover, .block_right:hover, #block_top:hover, +#block_nav:hover, #footer:hover { + background-color: #f8f8f8; +} + +.right_box { + width: 50%; + float: right; +} + +.floor { + color: #999999; + font-size: 20px; + -webkit-transform: rotate(-45deg) skew(15deg, 15deg); + -moz-transform: rotate(-45deg) skew(15deg, 15deg); + -o-transform: rotate(-45deg) skew(15deg, 15deg); + -ms-transform: rotate(-45deg) skew(15deg, 15deg); + transform: rotate(-45deg) skew(15deg, 15deg); +} + +/* Button */ + +.button { margin-left: 20px; } + +.button a { + background-color: #b64b22; + color: #ffffff; + margin-right: 6px; + padding: 6px 10px; + font-size: 14px; + -moz-border-radius: 4px; + -webkit-border-radius: 4px; + border-radius: 4px; + -moz-box-shadow: 0 1px 3px #666; + -webkit-box-shadow: 0 1px 3px #666; + box-shadow: 0 1px 3px #666; +} + +.button a:hover, input[type=submit]:hover { + background-color: #a3431f; + color: #ffffff; +} + +input[type=submit] { + border: 1px solid #b64b22; + background-color: #b64b22; + color: white; + font-weight: bold; + cursor: pointer; + padding: 2px 10px; + font-size: 14px; + -moz-border-radius: 2px; + -webkit-border-radius: 2px; + border-radius: 2px; + -moz-box-shadow: 0 0 5px #666; + -webkit-box-shadow: 0 0 5px#666; + box-shadow: 0 0 5px #666; +} + +input[type=text] { + border: 1px solid #333333; + padding: 3px; + width: 100%; + max-width: 500px; +} + +/* Clouds */ + +#cloud { + padding: 10px 0px; + line-height: 3em; + text-align: center; +} +#cloud a { padding: 0 2px; color: #956411; } +#cloud a.tag1 { font-size: 0.7em; font-weight: 100; } +#cloud a.tag2 { font-size: 0.8em; font-weight: 200; } +#cloud a.tag3 { font-size: 0.9em; font-weight: 300; } +#cloud a.tag4 { font-size: 1.0em; font-weight: 400; } +#cloud a.tag5 { font-size: 1.2em; font-weight: 500; } +#cloud a.tag6 { font-size: 1.4em; font-weight: 600; } +#cloud a.tag7 { font-size: 1.6em; font-weight: 700; } +#cloud a.tag8 { font-size: 1.8em; font-weight: 800; } +#cloud a.tag9 { font-size: 2.2em; font-weight: 900; } +#cloud a.tag10 { font-size: 2.5em; font-weight: 900; } + +/* Slideshow. */ + +#slideshow +{ + overflow: hidden; + margin: 10px auto 10px; + position: relative; + width: 260px; + height: 163px; +} + +#slideshow img +{ + border: 0; + width: 260px; + height: 163px; +} + +#twitter { + margin-top: 20px; + -moz-border-radius: 8px; + -webkit-border-radius: 8px; + border-radius: 8px; + -moz-box-shadow: 0 1px 3px #666; + -webkit-box-shadow: 0 1px 3px #666; + box-shadow: 0 1px 3px #666; +} + +/* HTML styles */ + +h1 { + color: #444444; + background: transparent; + text-align: left; + margin: 0px 0px 4px 0px; + font-size: 150%; + font-weight: bold; + padding: 5px 0 0 10px; +} + +h2 { + color: #b64b22; + padding: 0; + margin: 20px 0 0 0; + font-size: 130%; + font-weight: bold; +} + +h3 { + font-weight: bold; + color: #666666; + background: transparent; +} + +h3 img { + vertical-align: middle; + width: 20px; + height: 20px; + padding-right: 4px; +} + +a { + text-decoration: underline; + color: #103A5E; + background: inherit; +} + +a:hover { + text-decoration: none; + color: blue; + background: inherit; +} + +code { + font-size: 12px; + color: #669900; + background: inherit; +} + +tt { + color: #15EE15; + background: inherit; +} + +img { + border: 0pt none; +} + +fieldset { + background: #E2ECf6; + color: black; + margin-top: 25px; + border: 1px solid black; +} + +legend { + border: 1px solid black; + color: #6c0023; + background: #eaeaea; + font-weight: bold; +} + +pre { + padding: 5px; + color: black; + background: #E1E0B0; +} + +pre.script { + padding: 10px; + color: black; + background: #E8E8E8; + border: 1px inset #606060; +} + +textarea { + background: #E5E5E5; + margin-top: 12px; +} + +/* Packages pages */ + +.pkg_nav { + border-top: 1px solid black; + margin-top: 10px; + padding-top: 10px; +} + +pre.package { + padding: 0px; + color: black; + background: white; +} + +p.get { + text-align: center; + padding: 10px; + color: black; + background: #F3F3F3; + border: 1px solid #DEDEDE; + border-radius: 4px; + -moz-border-radius: 4px; + -webkit-border-radius: 4px; +} + +p.get a { + font-weight: bold; + text-decoration: none; +} + +.pkgs-search { + text-align: center; + padding: 40px 20px 80px 20px; +} + +.year:after { + /* content: "2007-2011"; */ + content: "2011"; +} + +/* Footer */ + +#footer { + margin: 0px 80px 80px 80px; + padding: 10px; + background: #eaeaea; + color: #666666; + height: 180px; + clear: both; + border-radius: 8px; + -moz-border-radius: 8px; + -webkit-border-radius: 8px; + -moz-box-shadow: 0 1px 3px #666; + -webkit-box-shadow: 0 1px 3px #666; + box-shadow: 0 1px 3px #666; +} +#footer a { + background: inherit; + color: #666666; +} +#footer a:hover { + background: inherit; + color: #333333; +} +#footer ul { + list-style-type: none; +} +#footer li { + padding: 2px; +} +#footer h4 { + margin: 0 20px; + font-size: 125%; +}