slitaz-forge rev 12

Add tank/web folder.
author Christopher Rogers <slaxemulator@gmail.com>
date Wed Feb 23 22:16:38 2011 +0000 (2011-02-23)
parents 5dbbf86c3bc0
children 89ae537ae823
files tank/web/bin/makegraphs tank/web/favicon.ico tank/web/graphs.php tank/web/index.php tank/web/pics/website/development.png tank/web/pics/website/header-img.png tank/web/pics/website/logo.png tank/web/pics/website/monitor.png tank/web/pics/website/slitaz-awstats.png tank/web/pics/website/vhosts.png tank/web/pics/website/xhtml10.png tank/web/slitaz.css
line diff
     1.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
     1.2 +++ b/tank/web/bin/makegraphs	Wed Feb 23 22:16:38 2011 +0000
     1.3 @@ -0,0 +1,318 @@
     1.4 +#!/bin/sh
     1.5 +#*/5  * * * * /home/slitaz/www/tank/bin/makegraphs >/dev/null
     1.6 +
     1.7 +# RRD database directory
     1.8 +rrdlog="/home/slitaz/www/tank/rrd"
     1.9 +
    1.10 +# Images directory
    1.11 +rrdgraph="/home/slitaz/www/tank/pics/rrd"
    1.12 +
    1.13 +# Colors
    1.14 +rrdcolors="--color SHADEA#FFFFFF --color SHADEB#FFFFFF --color BACK#FFFFFF" 
    1.15 +rrdgraphargs="-aPNG -i -z --alt-y-grid -w 600 -h 100 -r $rrdcolors"
    1.16 +
    1.17 +[ -d $rrdlog ] || mkdir -p $rrdlog
    1.18 +[ -d $rrdgraph ] || mkdir -p $rrdgraph
    1.19 +
    1.20 +updatecpudata() {
    1.21 +	[ -e "$rrdlog/cpu.rrd" ] || rrdtool create $rrdlog/cpu.rrd --step=300 \
    1.22 +			DS:user:COUNTER:600:0:500000000 \
    1.23 +			DS:system:COUNTER:600:0:500000000 \
    1.24 +			DS:idle:COUNTER:600:0:500000000 \
    1.25 +			RRA:AVERAGE:0.5:1:576  RRA:AVERAGE:0.5:6:672 \
    1.26 +			RRA:AVERAGE:0.5:24:732 RRA:AVERAGE:0.5:144:1460
    1.27 +	grep '^cpu' /proc/stat | while read cpu user nice system idle misc; do
    1.28 +		rrdtool update $rrdlog/cpu.rrd -t user:system:idle \
    1.29 +			N:$(( $user + $nice )):$system:$idle
    1.30 +		break
    1.31 +	done
    1.32 +
    1.33 +	[ -e "$rrdlog/cpu2.rrd" ] &&
    1.34 +	grep '^cpu' /proc/stat | while read cpu user nice system idle misc; do
    1.35 +		rrdtool update $rrdlog/cpu2.rrd -t nice:user:system:idle \
    1.36 +			N:$nice:$user:$system:$idle
    1.37 +		break
    1.38 +	done
    1.39 +}
    1.40 +
    1.41 +updatecpugraph() {
    1.42 +	period=$1
    1.43 +	info="$(grep '^model name' /proc/cpuinfo | cut -d: -f2 \
    1.44 +		| sed 's/ * / /g' | awk '
    1.45 +{ s=$0 ; n++ }                    
    1.46 +END { if (n > 1) printf " %dx",n; print s }')"
    1.47 +	rrdtool graph "$rrdgraph/cpu-$period.png" --start -1$period \
    1.48 +		$rrdgraphargs -l 0 -u 100 -t "cpu usage per $period [$info ]" \
    1.49 +		DEF:user=$rrdlog/cpu.rrd:user:AVERAGE \
    1.50 +		DEF:system=$rrdlog/cpu.rrd:system:AVERAGE \
    1.51 +		DEF:idle=$rrdlog/cpu.rrd:idle:AVERAGE \
    1.52 +		'CDEF:total=user,system,idle,+,+' \
    1.53 +		'CDEF:userpct=100,user,total,/,*' \
    1.54 +		'CDEF:systempct=100,system,total,/,*' \
    1.55 +		'CDEF:idlepct=100,idle,total,/,*' \
    1.56 +		'AREA:userpct#0000FF:user cpu usage' \
    1.57 +		'STACK:systempct#FF0000:system cpu usage' \
    1.58 +		'STACK:idlepct#00FF00:idle cpu usage\j'
    1.59 +}
    1.60 +
    1.61 +updatememgraph() {
    1.62 +	period=$1
    1.63 +	info="$(free | awk '\
    1.64 +{ \
    1.65 +  if (/Mem:/) { \
    1.66 +	if ($2 < 10000) printf "%d KB",$2; \
    1.67 +	else if ($2 < 10000000) printf "%d MB",$2/1024; \
    1.68 +	else printf "%d GB",$2/1024/1024; \
    1.69 +  } \
    1.70 +}')"
    1.71 +	info2="$(free | awk '\
    1.72 +{ \
    1.73 +  if (/Swap:/) { \
    1.74 +	if ($2 < 10000) printf "%d KB",$2; \
    1.75 +	else if ($2 < 10000000) printf "%d MB",$2/1024; \
    1.76 +	else printf "%d GB",$2/1024/1024; \
    1.77 +  } \
    1.78 +}')"
    1.79 +	rrdtool graph "$rrdgraph/memory-$period.png" --start -1$period \
    1.80 +		$rrdgraphargs -l 0 -u 100 \
    1.81 +		-t "memory usage per $period [ $info + $info2 swap ]" \
    1.82 +		DEF:used=$rrdlog/mem.rrd:memused:AVERAGE \
    1.83 +		DEF:free=$rrdlog/mem.rrd:memfree:AVERAGE \
    1.84 +		DEF:shared=$rrdlog/mem.rrd:memshared:AVERAGE \
    1.85 +		DEF:buffer=$rrdlog/mem.rrd:membuffers:AVERAGE \
    1.86 +		DEF:cache=$rrdlog/mem.rrd:memcache:AVERAGE \
    1.87 +		DEF:swused=$rrdlog/mem.rrd:swapused:AVERAGE \
    1.88 +		DEF:swfree=$rrdlog/mem.rrd:swapfree:AVERAGE \
    1.89 +		'CDEF:total=used,free,+' \
    1.90 +		'CDEF:used2=used,buffer,cache,shared,+,+,-' \
    1.91 +		'CDEF:usedpct=100,used2,total,/,*' \
    1.92 +		'CDEF:sharedpct=100,shared,total,/,*' \
    1.93 +		'CDEF:bufferpct=100,buffer,total,/,*' \
    1.94 +		'CDEF:cachepct=100,cache,total,/,*' \
    1.95 +		'CDEF:freepct=100,free,total,/,*' \
    1.96 +		'CDEF:swtotal=swused,swfree,+' \
    1.97 +		'CDEF:swusedpct=100,swused,swtotal,/,*' \
    1.98 +		'AREA:usedpct#0000FF:used memory' \
    1.99 +		'STACK:sharedpct#FF7F00:shared memory' \
   1.100 +		'STACK:bufferpct#FF00FF:buffered memory' \
   1.101 +		'STACK:cachepct#FFFF00:cached memory' \
   1.102 +		'STACK:freepct#00FF00:free memory' \
   1.103 +		'LINE2:swusedpct#FF0000:used swap\j'
   1.104 +}
   1.105 +
   1.106 +updatememdata () {
   1.107 +	[ -e "$rrdlog/mem.rrd" ] ||
   1.108 +		rrdtool create "$rrdlog/mem.rrd" --step=300 \
   1.109 +			DS:memused:ABSOLUTE:600:0:5000000000 \
   1.110 +			DS:memfree:ABSOLUTE:600:0:5000000000 \
   1.111 +			DS:memshared:ABSOLUTE:600:0:5000000000 \
   1.112 +			DS:membuffers:ABSOLUTE:600:0:5000000000 \
   1.113 +			DS:memcache:ABSOLUTE:600:0:5000000000 \
   1.114 +			DS:swapused:ABSOLUTE:600:0:5000000000 \
   1.115 +			DS:swapfree:ABSOLUTE:600:0:5000000000 \
   1.116 +			RRA:AVERAGE:0.5:1:576  RRA:AVERAGE:0.5:6:672 \
   1.117 +			RRA:AVERAGE:0.5:24:732 RRA:AVERAGE:0.5:144:1460
   1.118 +
   1.119 +	while read tag count unit; do
   1.120 +		case "$tag" in
   1.121 +		MemTotal:)  memtotal=$(($count * 1024));;
   1.122 +		MemFree:)   memfree=$(($count * 1024))
   1.123 +			    memused=$(($memtotal - $memfree))
   1.124 +			    memshared=0;;
   1.125 +		MemShared:) memshared=$(($count * 1024));;
   1.126 +		Buffers:)   membuffers=$(($count * 1024));;
   1.127 +		Cached:)    memcache=$(($count * 1024));;
   1.128 +		SwapTotal:) swaptotal=$(($count * 1024));;
   1.129 +		SwapFree:)  swapfree=$(($count * 1024))
   1.130 +			    swapused=$(( $swaptotal - $swapfree));;
   1.131 +		esac
   1.132 +	done < /proc/meminfo
   1.133 +
   1.134 +	rrdtool update "$rrdlog/mem.rrd" \
   1.135 +		-t memused:memfree:memshared:membuffers:memcache:swapused:swapfree \
   1.136 +		"N:$memused:$memfree:$memshared:$membuffers:$memcache:$swapused:$swapfree"
   1.137 +}
   1.138 +
   1.139 +getmax() {
   1.140 +	rrdtool fetch $rrdlog/$1.rrd AVERAGE | awk '\
   1.141 +BEGIN {max=0} \
   1.142 +/^[0-9]/ { \
   1.143 +   if ($2 != "nan" && $2 > max) max=$2; \
   1.144 +   if ($3 != "nan" && $3 > max) max=$3; \
   1.145 +} \
   1.146 +END { print max }' | sed 's/,/./'
   1.147 +}
   1.148 +
   1.149 +updatediskgraph() {
   1.150 +	period=$1
   1.151 +	[ "$period" == "day" ] && maxdisk="$(getmax disk)"
   1.152 +	info=""
   1.153 +	[ -r $2 ] &&
   1.154 +	info="[ $(fdisk -l 2> /dev/null | grep "^Disk $2:" | \
   1.155 +		  sed "s|Disk $2: \(.*\), .*|\1|") ]"
   1.156 +	if [ -e /sys/block/${2#/dev/}/device/iodone_cnt ]; then
   1.157 +	err=$(printf "%d\n" $(cat /sys/block/${2#/dev/}/device/ioerr_cnt) )
   1.158 +	done=$(printf "%d\n" $(cat /sys/block/${2#/dev/}/device/iodone_cnt) )
   1.159 +	rate=$(echo | awk "BEGIN { printf \"%.0e\\n\",$err/$done }")
   1.160 +	[ $err -eq 0 ] &&  rate="0"
   1.161 +#		--right-axis-label "I/O state %"
   1.162 +	rrdtool graph "$rrdgraph/disk-$period.png" --start -1$period \
   1.163 +		$rrdgraphargs -t "disk access per $period $info" \
   1.164 +		--logarithmic --lower-limit 1 -v "Sectors/second" --units=si \
   1.165 +		DEF:read=$rrdlog/disk.rrd:readsect:AVERAGE \
   1.166 +		DEF:write=$rrdlog/disk.rrd:writesect:AVERAGE \
   1.167 +		DEF:req=$rrdlog/iodisk.rrd:req:AVERAGE \
   1.168 +		DEF:done=$rrdlog/iodisk.rrd:done:AVERAGE \
   1.169 +		DEF:err=$rrdlog/iodisk.rrd:err:AVERAGE \
   1.170 +		"CDEF:readpct=100,read,$maxdisk,/,*" \
   1.171 +		"CDEF:writepct=100,write,$maxdisk,/,*" \
   1.172 +		"CDEF:errpct=100,err,req,/,*" \
   1.173 +		"CDEF:donepct=100,done,req,/,*" \
   1.174 +		"CDEF:errrate=err,done,/" \
   1.175 +		'AREA:readpct#0000FF:sectors read from disk' \
   1.176 +		"COMMENT:I/O error rate $rate" \
   1.177 +		'STACK:writepct#00FF00:sectors written to disk' \
   1.178 +		'LINE2:donepct#FFFF00:% I/O complete' \
   1.179 +		'LINE2:errpct#FF0000:% I/O error\j'
   1.180 +	else
   1.181 +	rrdtool graph "$rrdgraph/disk-$period.png" --start -1$period \
   1.182 +		$rrdgraphargs -t "disk access per $period $info" \
   1.183 +		--logarithmic --lower-limit 1 -v "Sectors/second" --units=si \
   1.184 +		DEF:read=$rrdlog/disk.rrd:readsect:AVERAGE \
   1.185 +		DEF:write=$rrdlog/disk.rrd:writesect:AVERAGE \
   1.186 +		"CDEF:readpct=100,read,$maxdisk,/,*" \
   1.187 +		"CDEF:writepct=100,write,$maxdisk,/,*" \
   1.188 +		'AREA:readpct#0000FF:sectors read from disk' \
   1.189 +		'STACK:writepct#00FF00:sectors written to disk'
   1.190 +	fi
   1.191 +}
   1.192 +
   1.193 +updatediskdata() {
   1.194 +	dev=$1
   1.195 +	[ -e "$rrdlog/disk.rrd" ] ||
   1.196 +		rrdtool create "$rrdlog/disk.rrd" --step=300 \
   1.197 +			DS:readsect:COUNTER:600:0:5000000000 \
   1.198 +			DS:writesect:COUNTER:600:0:5000000000 \
   1.199 +			RRA:AVERAGE:0.5:1:576  RRA:AVERAGE:0.5:6:672 \
   1.200 +			RRA:AVERAGE:0.5:24:732 RRA:AVERAGE:0.5:144:1460
   1.201 +	[ -e "$rrdlog/iodisk.rrd" ] ||
   1.202 +		rrdtool create "$rrdlog/iodisk.rrd" --step=300 \
   1.203 +			DS:done:GAUGE:600:0:U  DS:err:GAUGE:600:0:U \
   1.204 +			DS:req:GAUGE:600:0:U \
   1.205 +			RRA:AVERAGE:0.5:1:576  RRA:AVERAGE:0.5:6:672 \
   1.206 +			RRA:AVERAGE:0.5:24:732 RRA:AVERAGE:0.5:144:1460
   1.207 +
   1.208 +	while read major minor name readreq readsect writereq writesect misc; do
   1.209 +		[ $major = $(( 0x$(stat -c %t $dev) )) ] || continue
   1.210 +		[ $minor = $(( 0x$(stat -c %T $dev) )) ] || continue
   1.211 +		rrdtool update "$rrdlog/disk.rrd" -t readsect:writesect \
   1.212 +			N:$readsect:$writesect
   1.213 +	done < /proc/diskstats
   1.214 +	disk=${dev:0:8}
   1.215 +	dir=/sys/block/${disk#/dev/}/device
   1.216 +	done=$(printf "%d\n" $(cat $dir/iodone_cnt 2> /dev/null) )
   1.217 +	err=$(printf "%d\n" $(cat $dir/ioerr_cnt 2> /dev/null) )
   1.218 +	req=$(printf "%d\n" $(cat $dir/iorequest_cnt 2> /dev/null) )
   1.219 +	rrdtool update "$rrdlog/iodisk.rrd" -t done:err:req N:$done:$err:$req
   1.220 +}
   1.221 +
   1.222 +updateifgraph() {
   1.223 +	interface=$1
   1.224 +	period=$2
   1.225 +	rrdtool graph "$rrdgraph/$interface-$period.png" --start -1$period \
   1.226 +		$rrdgraphargs -t "traffic on $interface graph per $period" \
   1.227 +		--logarithmic -A -v "Bytes/second" --units=si \
   1.228 +		DEF:incoming=$rrdlog/$interface.rrd:incoming:AVERAGE \
   1.229 +		DEF:outgoing=$rrdlog/$interface.rrd:outgoing:AVERAGE \
   1.230 +		'AREA:incoming#00FF00:incoming traffic' \
   1.231 +		'GPRINT:outgoing:MAX:max output%8.3lf %sBps' \
   1.232 +		'LINE1:outgoing#0000FF:outgoing traffic\j'
   1.233 +}
   1.234 +
   1.235 +netframes() {
   1.236 +ifconfig $1 | grep "$2 packets" | sed -re "s/.*$3:([0-9]+).*/\1/g"
   1.237 +}
   1.238 +
   1.239 +netstats() {
   1.240 +ifconfig $1 | grep bytes | sed -re "s/.*$2 bytes:([0-9]+).*/\1/g"
   1.241 +}
   1.242 +
   1.243 +updateifdata() {
   1.244 +	interface=$1
   1.245 +	[ -e "$rrdlog/$interface.rrd" ] ||
   1.246 +		rrdtool create "$rrdlog/$interface.rrd" --step=300 \
   1.247 +			DS:incoming:COUNTER:600:0:U \
   1.248 +			DS:outgoing:COUNTER:600:0:U \
   1.249 +			RRA:AVERAGE:0.5:1:576  RRA:AVERAGE:0.5:6:672 \
   1.250 +			RRA:AVERAGE:0.5:24:732 RRA:AVERAGE:0.5:144:1460
   1.251 +	[ -e "$rrdlog/packets-$interface.rrd" ] ||
   1.252 +		rrdtool create "$rrdlog/packets-$interface.rrd" --step=300 \
   1.253 +			DS:in:COUNTER:600:0:U      DS:out:COUNTER:600:0:U \
   1.254 +			DS:inerr:COUNTER:600:0:U   DS:outerr:COUNTER:600:0:U \
   1.255 +			DS:indrop:COUNTER:600:0:U  DS:outdrop:COUNTER:600:0:U \
   1.256 +			DS:inov:COUNTER:600:0:U    DS:outov:COUNTER:600:0:U \
   1.257 +			DS:frame:COUNTER:600:0:U   DS:carrier:COUNTER:600:0:U \
   1.258 +			RRA:AVERAGE:0.5:1:576  RRA:AVERAGE:0.5:6:672 \
   1.259 +			RRA:AVERAGE:0.5:24:732 RRA:AVERAGE:0.5:144:1460
   1.260 +	rx=$(netstats $interface RX)
   1.261 +	tx=$(netstats $interface TX)
   1.262 +	rrdtool update "$rrdlog/$interface.rrd" -t incoming:outgoing \
   1.263 +		N:${rx:-U}:${tx:-U}
   1.264 +	rx=$(netframes $interface RX packets)
   1.265 +	tx=$(netframes $interface TX packets)
   1.266 +	rxerr=$(netframes $interface RX errors)
   1.267 +	txerr=$(netframes $interface TX errors)
   1.268 +	rxdrop=$(netframes $interface RX dropped)
   1.269 +	txdrop=$(netframes $interface TX dropped)
   1.270 +	rxov=$(netframes $interface RX overruns)
   1.271 +	txov=$(netframes $interface TX overruns)
   1.272 +	frame=$(netframes $interface RX frame)
   1.273 +	carrier=$(netframes $interface TX carrier)
   1.274 +	rrdtool update "$rrdlog/packets-$interface.rrd" \
   1.275 +		-t in:out:inerr:outerr:indrop:outdrop:inov:outov:frame:carrier \
   1.276 +		N:${rx:-U}:${tx:-U}:${rxerr:-U}:${txerr:-U}:${rxdrop:-U}:${txdrop:-U}:${rxov:-U}:${txov:-U}:${frame:-U}:${carrier:-U}
   1.277 +}
   1.278 +
   1.279 +getdisk()
   1.280 +{
   1.281 +	local d
   1.282 +	local i
   1.283 +	d=$(stat -c %04D $1)
   1.284 +	for i in /dev/* ; do 
   1.285 +		[ $(stat -c "%02t%02T" $i) == $d ] || continue
   1.286 +		echo $i
   1.287 +		break
   1.288 +	done
   1.289 +}
   1.290 +
   1.291 +###
   1.292 +### System graphs
   1.293 +###
   1.294 +
   1.295 +updatecpudata
   1.296 +updatecpugraph day
   1.297 +updatecpugraph week
   1.298 +updatecpugraph month
   1.299 +updatecpugraph year
   1.300 +
   1.301 +updatememdata
   1.302 +updatememgraph day
   1.303 +updatememgraph week
   1.304 +updatememgraph month
   1.305 +updatememgraph year
   1.306 +
   1.307 +if [ -e /proc/diskstats ]; then
   1.308 +	disk=$(getdisk $0)
   1.309 +	updatediskdata $disk
   1.310 +	updatediskgraph day ${disk:0:8}
   1.311 +	updatediskgraph week ${disk:0:8}
   1.312 +	updatediskgraph month ${disk:0:8}
   1.313 +	updatediskgraph year ${disk:0:8}
   1.314 +fi
   1.315 +
   1.316 +iface=$(/sbin/route -n | awk '{ if (/^0.0.0.0/) print $8 }')
   1.317 +updateifdata $iface
   1.318 +updateifgraph $iface day
   1.319 +updateifgraph $iface week
   1.320 +updateifgraph $iface month
   1.321 +updateifgraph $iface year
     2.1 Binary file tank/web/favicon.ico has changed
     3.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
     3.2 +++ b/tank/web/graphs.php	Wed Feb 23 22:16:38 2011 +0000
     3.3 @@ -0,0 +1,125 @@
     3.4 +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
     3.5 +    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
     3.6 +<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
     3.7 +<head>
     3.8 +	<title>Tank RRD stats</title>
     3.9 +	<meta http-equiv="content-type" content="text/html; charset=ISO-8859-1" />
    3.10 +	<meta name="description" content="slitaz tank rrdtool graphs" />
    3.11 +	<meta name="robots" content="noindex" />
    3.12 +	<meta name="author" content="SliTaz Contributors" />
    3.13 +	<link rel="shortcut icon" href="favicon.ico" />
    3.14 +	<link rel="stylesheet" type="text/css" href="slitaz.css" />
    3.15 +</head>
    3.16 +<body>
    3.17 +
    3.18 +<!-- Header -->
    3.19 +<div id="header">
    3.20 +    <a href="http://tank.slitaz.org/"><img id="logo"
    3.21 +		src="pics/website/logo.png" 
    3.22 +		title="tank.slitaz.org" alt="tank.slitaz.org" /></a>
    3.23 +    <p id="titre">#!/Tank</p>
    3.24 +</div>
    3.25 +
    3.26 +<!-- Content -->
    3.27 +<div id="content-full">
    3.28 +
    3.29 +<!-- Block begin -->
    3.30 +<div class="block">
    3.31 +	<!-- Nav block begin -->
    3.32 +	<div id="block_nav">
    3.33 +		<h3><img src="pics/website/development.png" alt="png" />Devel corner</h3>
    3.34 +		<ul>
    3.35 +			<li><a href="http://www.slitaz.org/en/devel/">Website/devel</a></li>
    3.36 +			<li><a href="http://labs.slitaz.org/">Laboratories</a></li>
    3.37 +			<li><a href="http://hg.slitaz.org/">Mercurial Repos</a></li>
    3.38 +			<li><a href="http://bb.slitaz.org/">Build Bot</a></li>
    3.39 +			<li><a href="http://scn.slitaz.org/">Community Network</a></li>
    3.40 +			<li><a href="http://people.slitaz.org/">SliTaz People</a></li>
    3.41 +		</ul>
    3.42 +	<!-- Nav block end -->
    3.43 +	</div>
    3.44 +	<!-- Top block begin -->
    3.45 +	<div id="block_top">
    3.46 +		<h1>Tank RRD stats</h1>
    3.47 +		<p>
    3.48 +			This is the SliTaz GNU/Linux main server and build host. The server runs
    3.49 +			naturally SliTaz (stable) and provides some services to all contributors
    3.50 +			such as: secure access, disk space, a public directory, cron jobs and the
    3.51 +			<a href="http://bb.slitaz.org/">Build Bot</a>.
    3.52 +		</p>
    3.53 +	<!-- Top block end -->
    3.54 +	</div>
    3.55 +<!-- Block end -->
    3.56 +</div>
    3.57 +
    3.58 +<?php
    3.59 +
    3.60 +$myurl="http://".$_SERVER['SERVER_NAME'].$_SERVER['SCRIPT_NAME'];
    3.61 +
    3.62 +function one_graphic($img,$name)
    3.63 +{
    3.64 +	echo '<img src="pics/rrd/'.$img.'" title="'.
    3.65 +		$name.'" alt="'.$name.'" />'."\n";
    3.66 +}
    3.67 +
    3.68 +function graphic($res, $img='')
    3.69 +{
    3.70 +	global $myurl;
    3.71 +	if (!$img) $img=$res;
    3.72 +	echo "<a name=\"".$res."\"></a>";
    3.73 +	echo "<a href=\"".$myurl."?stats=".$res."#".$res."\">\n";
    3.74 +	one_graphic($img."-day.png",$res." daily");
    3.75 +	echo "</a>";
    3.76 +	if ($_GET['stats'] == $res) {
    3.77 +		one_graphic($img."-week.png",$res." weekly");
    3.78 +		one_graphic($img."-month.png",$res." monthly");
    3.79 +		one_graphic($img."-year.png",$res." yearly");
    3.80 +	}
    3.81 +}
    3.82 +
    3.83 +echo "<h2>CPU</h2>\n";
    3.84 +graphic("cpu");
    3.85 +echo "<h2>Memory</h2>\n";
    3.86 +graphic("memory");
    3.87 +echo "<h2>Disk</h2>\n";
    3.88 +graphic("disk");
    3.89 +echo "<h2>Network</h2>\n";
    3.90 +$eth = array();
    3.91 +exec("/sbin/route -n | awk '{ if (/^0.0.0.0/) print $8 }'", $eth);
    3.92 +graphic("net",$eth[0]);
    3.93 +
    3.94 +?>
    3.95 +
    3.96 +<!-- End of content -->
    3.97 +</div>
    3.98 +
    3.99 +<!-- Footer -->
   3.100 +<div id="footer">
   3.101 +	<div class="right_box">
   3.102 +	<h4>SliTaz Network</h4>
   3.103 +		<ul>
   3.104 +			<li><a href="http://doc.slitaz.org/">Documentation</a></li>
   3.105 +			<li><a href="http://forum.slitaz.org/">Support Forum</a></li>
   3.106 +			<li><a href="http://scn.slitaz.org/">Community Network</a></li>
   3.107 +			<li><a href="http://labs.slitaz.org/">Laboratories</a></li>
   3.108 +			<li><a href="http://twitter.com/slitaz">SliTaz on Twitter</a></li>
   3.109 +			<li><a href="http://distrowatch.com/slitaz">SliTaz on DistroWatch</a></li>
   3.110 +		</ul>
   3.111 +	</div>
   3.112 +	<h4>SliTaz Website</h4>
   3.113 +	<ul>
   3.114 +		<li><a href="#header">Top of the page</a></li>
   3.115 +		<li>Copyright &copy; <?php echo date('Y'); ?>
   3.116 +			<a href="http://www.slitaz.org/">SliTaz</a></li>
   3.117 +		<li><a href="http://www.slitaz.org/en/about/">About the project</a></li>
   3.118 +		<li><a href="http://www.slitaz.org/netmap.php">Network Map</a></li>
   3.119 +		<li>Page modified the <?php echo (date( "d M Y", getlastmod())); ?></li>
   3.120 +		<li><a href="http://validator.w3.org/check?uri=referer"><img
   3.121 +		src="pics/website/xhtml10.png" alt="Valid XHTML 1.0"
   3.122 +		title="Code validé XHTML 1.0"
   3.123 +		style="width: 80px; height: 15px; vertical-align: middle;" /></a></li>
   3.124 +	</ul>
   3.125 +</div>
   3.126 +
   3.127 +</body>
   3.128 +</html>
     4.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
     4.2 +++ b/tank/web/index.php	Wed Feb 23 22:16:38 2011 +0000
     4.3 @@ -0,0 +1,188 @@
     4.4 +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
     4.5 +    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
     4.6 +<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
     4.7 +<head>
     4.8 +	<title>SliTaz Tank</title>
     4.9 +	<meta http-equiv="content-type" content="text/html; charset=ISO-8859-1" />
    4.10 +	<meta name="description" content="slitaz tank server" />
    4.11 +	<meta name="robots" content="index, nofollow" />
    4.12 +	<meta name="author" content="SliTaz Contributors" />
    4.13 +	<link rel="shortcut icon" href="favicon.ico" />
    4.14 +	<link rel="stylesheet" type="text/css" href="slitaz.css" />
    4.15 +</head>
    4.16 +<body>
    4.17 +
    4.18 +<!-- Header -->
    4.19 +<div id="header">
    4.20 +    <a href="http://tank.slitaz.org/"><img id="logo"
    4.21 +		src="pics/website/logo.png" 
    4.22 +		title="tank.slitaz.org" alt="tank.slitaz.org" /></a>
    4.23 +    <p id="titre">#!/Tank</p>
    4.24 +</div>
    4.25 +
    4.26 +<!-- Content -->
    4.27 +<div id="content-full">
    4.28 +
    4.29 +<!-- Block begin -->
    4.30 +<div class="block">
    4.31 +	<!-- Nav block begin -->
    4.32 +	<div id="block_nav">
    4.33 +		<h3><img src="pics/website/development.png" alt="png" />Devel corner</h3>
    4.34 +		<ul>
    4.35 +			<li><a href="http://www.slitaz.org/en/devel/">Website/devel</a></li>
    4.36 +			<li><a href="http://labs.slitaz.org/">Laboratories</a></li>
    4.37 +			<li><a href="http://hg.slitaz.org/">Mercurial Repos</a></li>
    4.38 +			<li><a href="http://bb.slitaz.org/">Build Bot</a></li>
    4.39 +			<li><a href="http://scn.slitaz.org/">Community Network</a></li>
    4.40 +			<li><a href="http://people.slitaz.org/">SliTaz People</a></li>
    4.41 +		</ul>
    4.42 +	<!-- Nav block end -->
    4.43 +	</div>
    4.44 +	<!-- Top block begin -->
    4.45 +	<div id="block_top">
    4.46 +		<h1>Codename: tank</h1>
    4.47 +		<p>
    4.48 +			This is the SliTaz GNU/Linux main server and build host. The server runs
    4.49 +			naturally SliTaz (stable) and provides some services to all contributors
    4.50 +			such as: secure access, disk space, a public directory, cron jobs and the
    4.51 +			<a href="http://bb.slitaz.org/">Build Bot</a>.
    4.52 +		</p>
    4.53 +		<p>
    4.54 +			Tank CPU is a AMD Dual Core 2 GHz - 2GB RAM - Located next to Lausanne,
    4.55 +			Switzerland and offered by Thomas Hinterberger and hosted by Christophe
    4.56 +			Lincoln. Tank is also monitored by RRDtool which provides 
    4.57 +			<a href="graphs.php">graphical stats</a>.
    4.58 +		</p>
    4.59 +	<!-- Top block end -->
    4.60 +	</div>
    4.61 +<!-- Block end -->
    4.62 +</div>
    4.63 +
    4.64 +<h2><a href="graphs.php"><img 
    4.65 +	style="vertical-align: middle; padding: 0 4px 0 0;"
    4.66 +	title="Tank RRDtool graphs" alt="graphs"
    4.67 +    src="pics/website/monitor.png" /></a>System stats</h2>
    4.68 +
    4.69 +<h4>Uptime</h4>
    4.70 +
    4.71 +<pre class="package">
    4.72 +<?php
    4.73 +system("uptime | sed 's/^\s*//'");
    4.74 +?>
    4.75 +</pre>
    4.76 +
    4.77 +<h4>Disk usage</h4>
    4.78 +<pre class="package">
    4.79 +<?php
    4.80 +system("df -h | sed '/^rootfs/d' | grep  '\(^/dev\|Filesystem\)'");
    4.81 +?>
    4.82 +</pre>
    4.83 +
    4.84 +<h4>Network</h4>
    4.85 +<pre class="package">
    4.86 +<?php
    4.87 +system("ifconfig eth0 | awk '{ if (/X packet/ || /X byte/) print }' | sed 's/^\s*//'");
    4.88 +?>
    4.89 +</pre>
    4.90 +
    4.91 +<h2><a href="/stats/awstats.pl?config=www.slitaz.org"><img
    4.92 +	style="vertical-align: middle; padding: 0 4px 0 0;"
    4.93 +	title="Tank Virtual hosts" alt="vhosts"
    4.94 +    src="pics/website/vhosts.png" /></a>Virtual hosts</h2>
    4.95 +
    4.96 +<ul>
    4.97 +	<li><a href="http://www.slitaz.org/">www.slitaz.org</a> - SliTaz Website.
    4.98 +	(<a href="/stats/awstats.pl?config=www.slitaz.org">stats</a>)</li>
    4.99 +	<li><a href="http://doc.slitaz.org/">doc.slitaz.org</a> - Documentation platform.</li>
   4.100 +	<li><a href="http://pkgs.slitaz.org/">pkgs.slitaz.org</a> - Packages Web interface.</li>
   4.101 +	<li><a href="http://boot.slitaz.org/">boot.slitaz.org</a> - gPXE Web boot.</li>
   4.102 +	<li><a href="http://hg.slitaz.org/">hg.slitaz.org</a> - Mercurial repositories.</li>
   4.103 +	<li><a href="http://bb.slitaz.org/">bb.slitaz.org</a> - SliTaz Build Bot.</li>
   4.104 +	<li><a href="http://people.slitaz.org/">people.slitaz.org</a> - SliTaz People stuff.</li>
   4.105 +	<li><a href="http://pro.slitaz.org/">pro.slitaz.org</a> - SliTaz Professional services.</li>
   4.106 +</ul>
   4.107 +
   4.108 +<h2><img
   4.109 +	style="vertical-align: middle; padding: 0 4px 0 0;"
   4.110 +	title="Erjo Virtual hosts" alt="vhosts"
   4.111 +    src="pics/website/vhosts.png" />Other hosts</h2>
   4.112 +
   4.113 +<p>
   4.114 +	These services are hosted by some individual sponsors who gracefully offer
   4.115 +	resources to the SliTaz project.
   4.116 +</p>
   4.117 +<ul>
   4.118 +	<li><a href="http://forum.slitaz.org/">forum.slitaz.org</a> - SliTaz support forum.</li>
   4.119 +	<li><a href="http://labs.slitaz.org/">labs.slitaz.org</a> - SliTaz Laboratories.</li>
   4.120 +	<li><a href="http://mirror.slitaz.org/">mirror.slitaz.org</a> - SliTaz main mirror and replicas.
   4.121 +		(<a href="http://mirror.slitaz.org/info/">more...</a>)</li>
   4.122 +	<li><a href="http://scn.slitaz.org/">scn.slitaz.org</a> - Community platform.</li>
   4.123 +	<li><a href="http://pizza.slitaz.org/">pizza.slitaz.org</a> - SliTaz flavor builder.</li>
   4.124 +</ul>
   4.125 +    
   4.126 +<h2><a href="http://mirror.slitaz.org/info/"> <img
   4.127 +	style="vertical-align: middle; padding: 0 4px 0 0;"
   4.128 +	src="pics/website/vhosts.png"
   4.129 +	title="Secondary mirrors" alt="mirrors" /></a>Mirrors</h2>
   4.130 +<p>
   4.131 +	These mirrors are updated using the url <b>rsync://mirror.slitaz.org/slitaz/</b>
   4.132 +	(<a href="http://mirror.slitaz.org/awstats.pl?config=rsync">stats</a>)
   4.133 +</p>
   4.134 +<ul>
   4.135 +	<li><a href="http://mirror.switch.ch/ftp/mirror/slitaz/">
   4.136 +		http://mirror.switch.ch/ftp/mirror/slitaz/</a> or
   4.137 +		<a href="ftp://mirror.switch.ch/mirror/slitaz/">
   4.138 +		ftp://mirror.switch.ch/mirror/slitaz/</a></li>
   4.139 +	<li><a href="http://download.tuxfamily.org/slitaz/">
   4.140 +		http://download.tuxfamily.org/slitaz/</a></li>
   4.141 +	<li><a href="http://www.linuxembarque.com/slitaz/mirror/">
   4.142 +		http://www.linuxembarque.com/slitaz/mirror/</a></li>
   4.143 +	<li><a href="http://mirror.lupaworld.com/slitaz/">
   4.144 +		http://mirror.lupaworld.com/slitaz/</a></li>
   4.145 +	<li><a href="http://slitaz.c3sl.ufpr.br/">
   4.146 +		http://slitaz.c3sl.ufpr.br/</a> or
   4.147 +		<a href="ftp://slitaz.c3sl.ufpr.br/slitaz/">
   4.148 +		ftp://slitaz.c3sl.ufpr.br/slitaz/</a></li>
   4.149 +	<li><a href="http://slitaz.mirror.garr.it/mirrors/slitaz/">
   4.150 +		http://slitaz.mirror.garr.it/mirrors/slitaz/</a></li>
   4.151 +	<li><a href="http://www.gtlib.gatech.edu/pub/slitaz/">
   4.152 +		http://www.gtlib.gatech.edu/pub/slitaz/</a> or
   4.153 +		<a href="ftp://ftp.gtlib.gatech.edu/pub/slitaz/">
   4.154 +		ftp://ftp.gtlib.gatech.edu/pub/slitaz/</a></li>
   4.155 +		<li><a href="ftp://ftp.pina.si/slitaz/">
   4.156 +		ftp://ftp.pina.si/slitaz/</a></li>
   4.157 +</ul>
   4.158 +
   4.159 +<!-- End of content -->
   4.160 +</div>
   4.161 +
   4.162 +<!-- Footer -->
   4.163 +<div id="footer">
   4.164 +	<div class="right_box">
   4.165 +	<h4>SliTaz Network</h4>
   4.166 +		<ul>
   4.167 +			<li><a href="http://doc.slitaz.org/">Documentation</a></li>
   4.168 +			<li><a href="http://forum.slitaz.org/">Support Forum</a></li>
   4.169 +			<li><a href="http://scn.slitaz.org/">Community Network</a></li>
   4.170 +			<li><a href="http://labs.slitaz.org/">Laboratories</a></li>
   4.171 +			<li><a href="http://twitter.com/slitaz">SliTaz on Twitter</a></li>
   4.172 +			<li><a href="http://distrowatch.com/slitaz">SliTaz on DistroWatch</a></li>
   4.173 +		</ul>
   4.174 +	</div>
   4.175 +	<h4>SliTaz Website</h4>
   4.176 +	<ul>
   4.177 +		<li><a href="#header">Top of the page</a></li>
   4.178 +		<li>Copyright &copy; <?php echo date('Y'); ?>
   4.179 +			<a href="http://www.slitaz.org/">SliTaz</a></li>
   4.180 +		<li><a href="http://www.slitaz.org/en/about/">About the project</a></li>
   4.181 +		<li><a href="http://www.slitaz.org/netmap.php">Network Map</a></li>
   4.182 +		<li>Page modified the <?php echo (date( "d M Y", getlastmod())); ?></li>
   4.183 +		<li><a href="http://validator.w3.org/check?uri=referer"><img
   4.184 +		src="pics/website/xhtml10.png" alt="Valid XHTML 1.0"
   4.185 +		title="Code validé XHTML 1.0"
   4.186 +		style="width: 80px; height: 15px; vertical-align: middle;" /></a></li>
   4.187 +	</ul>
   4.188 +</div>
   4.189 +
   4.190 +</body>
   4.191 +</html>
     5.1 Binary file tank/web/pics/website/development.png has changed
     6.1 Binary file tank/web/pics/website/header-img.png has changed
     7.1 Binary file tank/web/pics/website/logo.png has changed
     8.1 Binary file tank/web/pics/website/monitor.png has changed
     9.1 Binary file tank/web/pics/website/slitaz-awstats.png has changed
    10.1 Binary file tank/web/pics/website/vhosts.png has changed
    11.1 Binary file tank/web/pics/website/xhtml10.png has changed
    12.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
    12.2 +++ b/tank/web/slitaz.css	Wed Feb 23 22:16:38 2011 +0000
    12.3 @@ -0,0 +1,587 @@
    12.4 +/*
    12.5 +	CSS style for SliTaz GNU/Linux website
    12.6 +	www.slitaz.org - (c) 2011 Pankso
    12.7 +*/
    12.8 +
    12.9 +html {
   12.10 +	min-height:  102%;
   12.11 +}
   12.12 +
   12.13 +body {
   12.14 +	background: #ffffff;
   12.15 +	color: black;
   12.16 +	font: 13px sans-serif, vernada, arial;
   12.17 +	margin: 0;
   12.18 +	border-top: 34px solid #f1f1f1;
   12.19 +}
   12.20 +
   12.21 +/* Accessibility */
   12.22 +
   12.23 +#access {
   12.24 +	position: absolute;
   12.25 +	top: 4px;
   12.26 +	right: 0px;
   12.27 +	text-align: right;
   12.28 +	width: auto;
   12.29 +	margin: 0;
   12.30 +	padding: 4px 4px 4px 20px;
   12.31 +	font-size: 11px;
   12.32 +	font-weight: bold;
   12.33 +}
   12.34 +
   12.35 +#access a {
   12.36 +	background: transparent;
   12.37 +	color: #0F314E;
   12.38 +	text-decoration: none;
   12.39 +}
   12.40 +
   12.41 +#access a:hover {
   12.42 +	background: inherit;
   12.43 +	color: #b64b22;
   12.44 +}
   12.45 +
   12.46 +#access img {
   12.47 +	vertical-align: middle;
   12.48 +}
   12.49 +
   12.50 +/* Header and title */
   12.51 +
   12.52 +#header {
   12.53 +	/*background: #f0ba08 url(pics/website/header.png) repeat-x top;*/
   12.54 +	background: #351a0a url(pics/website/header-img.png) no-repeat top right;
   12.55 +	color: black;
   12.56 +	width: 100%;
   12.57 +	height: 42px;
   12.58 +	border-top: 1px solid black;
   12.59 +	border-bottom: 1px solid #999;
   12.60 +	margin-bottom: 33px;
   12.61 +}
   12.62 +
   12.63 +#titre {
   12.64 +	position: absolute;
   12.65 +	font-size: 14px;
   12.66 +	font-weight: bolder ;
   12.67 +	left: 180px;
   12.68 +	top: 4px;
   12.69 +}
   12.70 +
   12.71 +#logo {
   12.72 +	position: absolute;
   12.73 +	float: left;
   12.74 +	left: 16px;
   12.75 +	top: -10px;
   12.76 +	width: 200px;
   12.77 +	height: 74px;
   12.78 +}
   12.79 +
   12.80 +/* Side bar Navigation */
   12.81 +
   12.82 +#nav {
   12.83 +	position: absolute;
   12.84 +	top: 102px;
   12.85 +	right: 80px;
   12.86 +	color: #555555;
   12.87 +	float: right;
   12.88 +	width: 250px;
   12.89 +	line-height: 1.5em;
   12.90 +	text-align: left;
   12.91 +	font-size: 12px;
   12.92 +}
   12.93 +
   12.94 +#nav .nav_box ul {
   12.95 +	list-style-type: none;
   12.96 +	margin: 0;
   12.97 +	padding: 10px 24px 10px 0px;
   12.98 +	background-color: inherit;
   12.99 +}
  12.100 +
  12.101 +#nav li {
  12.102 +	display: inline;
  12.103 +}
  12.104 +
  12.105 +#nav h4 {
  12.106 +	font-size: 120%;
  12.107 +	color: #666666;
  12.108 +	font-weight: bold;
  12.109 +	margin: 0;
  12.110 +	padding: 0 0 1px 0;
  12.111 +	border-bottom: 1px solid #cecece;
  12.112 +}
  12.113 +
  12.114 +#nav a {
  12.115 +	color: #0F314E;
  12.116 +	background: inherit;
  12.117 +	display: block;
  12.118 +	text-decoration: none;
  12.119 +	font-weight: bold;
  12.120 +}
  12.121 +
  12.122 +#nav a:hover {
  12.123 +	color: #b64b22;
  12.124 +	text-decoration: none;
  12.125 +	display: block;
  12.126 +}
  12.127 +
  12.128 +#nav ul {
  12.129 +	-moz-border-radius: 8px;
  12.130 +	-webkit-border-radius: 8px;
  12.131 +	border-radius: 8px;
  12.132 +	list-style-type: none;
  12.133 +	margin: 10px 0;
  12.134 +	padding: 10px 24px 10px 24px;
  12.135 +	background-color: #eaeaea;
  12.136 +}
  12.137 +
  12.138 +.nav_box {
  12.139 +	margin: 10px 0;
  12.140 +	padding: 10px 24px 10px 24px;
  12.141 +	background-color: #eaeaea;
  12.142 +	text-align: justify;
  12.143 +	-moz-border-radius: 8px;
  12.144 +	-webkit-border-radius: 8px;
  12.145 +	border-radius: 8px;
  12.146 +	-moz-box-shadow: 0 1px 3px #666;
  12.147 +	-webkit-box-shadow: 0 1px 3px #666;
  12.148 +	box-shadow: 0 1px 3px #666;
  12.149 +	/* CSS3 transition */
  12.150 +	-webkit-transition-property: background-color;
  12.151 +	-webkit-transition-duration: 2s;
  12.152 +	-moz-transition-property: background-color;
  12.153 +	-moz-transition-duration: 2s;
  12.154 +	transition-property: background-color;
  12.155 +	transition-duration: 2s;
  12.156 +}
  12.157 +
  12.158 +.nav_box:hover { background-color: #f8f8f8; }
  12.159 +
  12.160 +#nav .nav_box p {
  12.161 +	line-height: 1.3em;
  12.162 +}
  12.163 +
  12.164 +#nav .nav_box p a {
  12.165 +	display: inline;
  12.166 +	font-weight: normal;
  12.167 +	text-decoration: underline;
  12.168 +}
  12.169 +
  12.170 +#nav .nav_box p a:hover {
  12.171 +	text-decoration: none;
  12.172 +	color: blue;
  12.173 +	background: inherit;
  12.174 +}
  12.175 +
  12.176 +/* Page content */
  12.177 +
  12.178 +#content {
  12.179 +	background: white;
  12.180 +	color: black;
  12.181 +	text-align: justify;
  12.182 +	height: auto;
  12.183 +	margin: 6px 320px 0px 0px;
  12.184 +	padding: 0px 40px 60px 80px;
  12.185 +}
  12.186 +
  12.187 +#content-full {
  12.188 +	background: white;
  12.189 +	color: black;
  12.190 +	text-align: justify;
  12.191 +	height: auto;
  12.192 +	margin: 0;
  12.193 +	padding: 0px 80px 40px 80px;
  12.194 +}
  12.195 +
  12.196 +#content li, #content-full li {
  12.197 +	line-height: 1.5em;
  12.198 +	text-align: left;
  12.199 +}
  12.200 +
  12.201 +#news li {
  12.202 +	list-style-type: square;
  12.203 +	border-bottom: 1px dotted #BEBEBE;
  12.204 +	margin-left: -25px;
  12.205 +	padding: 4px 0px 4px 0px;
  12.206 +}
  12.207 +
  12.208 +#news a {
  12.209 +	text-decoration: none;
  12.210 +}
  12.211 +
  12.212 +#gallery {
  12.213 +	text-align: center;
  12.214 +}
  12.215 +
  12.216 +/* Box and block. */
  12.217 +
  12.218 +.infobox {
  12.219 +	margin: 20px 60px;
  12.220 +	padding: 12px;
  12.221 +	background: #f8f8f8;
  12.222 +}
  12.223 +
  12.224 +.infobox img { vertical-align: middle; }
  12.225 +/* .infobox:hover { background-color: #f2b21d; } */
  12.226 +.infobox:hover { background-color: #FBFBFB; }
  12.227 +
  12.228 +.block {
  12.229 +	/*padding-bottom: 35%;*/
  12.230 +	color: black;
  12.231 +	min-height: 200px;
  12.232 +	margin-bottom: 40px;
  12.233 +}
  12.234 +
  12.235 +.block ul {
  12.236 +	list-style-type: none;
  12.237 +	margin: 0;
  12.238 +	padding: 0 20px;
  12.239 +}
  12.240 +
  12.241 +.block_left {
  12.242 +	width: 46%;
  12.243 +	float: left;
  12.244 +	background-color: #eaeaea;
  12.245 +	margin: 4px 2px;
  12.246 +	padding: 0 10px 10px 10px;
  12.247 +}
  12.248 +
  12.249 +.block_right {
  12.250 +	width: 46%;
  12.251 +	float: right;
  12.252 +	background-color: #eaeaea;
  12.253 +	margin: 4px 2px;
  12.254 +	padding: 0 10px 10px 10px;
  12.255 +}
  12.256 +
  12.257 +#block_top {
  12.258 +	color: black;
  12.259 +	background-color: #eaeaea;
  12.260 +	min-height: 180px;
  12.261 +	margin-bottom: 40px;
  12.262 +	margin-right: 340px;
  12.263 +	padding: 0 10px;
  12.264 +}
  12.265 +
  12.266 +#block_nav {
  12.267 +	width: 300px;
  12.268 +	min-height: 180px;
  12.269 +	float: right;
  12.270 +	background-color: #eaeaea;
  12.271 +	margin: 0;
  12.272 +	padding: 0 10px;
  12.273 +}
  12.274 +
  12.275 +.infobox, .block_left, .block_right, #block_top, #block_nav, #footer {
  12.276 +	-moz-border-radius: 8px;
  12.277 +	-webkit-border-radius: 8px;
  12.278 +	border-radius: 8px;
  12.279 +	-moz-box-shadow: 0 1px 3px #666;
  12.280 +	-webkit-box-shadow: 0 1px 3px #666;
  12.281 +	box-shadow: 0 1px 3px #666;
  12.282 +	/* CSS3 transition */
  12.283 +	-webkit-transition-property: background-color;
  12.284 +	-webkit-transition-duration: 2s;
  12.285 +	-moz-transition-property: background-color;
  12.286 +	-moz-transition-duration: 2s;
  12.287 +	transition-property: background-color;
  12.288 +	transition-duration: 2s;
  12.289 +}
  12.290 +
  12.291 +#block_nav {
  12.292 +	font-weight: bold;
  12.293 +}
  12.294 +
  12.295 +#block_nav a {
  12.296 +	text-decoration: none;
  12.297 +}
  12.298 +
  12.299 +#block_nav li a:hover {
  12.300 +	color: #b64b22;
  12.301 +}
  12.302 +
  12.303 +#block_nav ul {
  12.304 +	margin: 0;
  12.305 +	list-style-type: none;
  12.306 +}
  12.307 +
  12.308 +#block_nav h3 {
  12.309 +	font-size: 110%;
  12.310 +}
  12.311 +
  12.312 +.block_left:hover, .block_right:hover, #block_top:hover,
  12.313 +#block_nav:hover, #footer:hover { 
  12.314 +	background-color: #f8f8f8;
  12.315 +}
  12.316 +
  12.317 +.right_box {
  12.318 +	width: 50%;
  12.319 +	float: right;
  12.320 +}
  12.321 +
  12.322 +.floor {
  12.323 +	color: #999999;
  12.324 +	font-size: 20px;
  12.325 +	-webkit-transform: rotate(-45deg) skew(15deg, 15deg);
  12.326 +	-moz-transform: rotate(-45deg) skew(15deg, 15deg);
  12.327 +	-o-transform: rotate(-45deg) skew(15deg, 15deg);
  12.328 +	-ms-transform: rotate(-45deg) skew(15deg, 15deg);
  12.329 +	transform: rotate(-45deg) skew(15deg, 15deg);
  12.330 +}
  12.331 +	
  12.332 +/* Button */
  12.333 +
  12.334 +.button { margin-left: 20px; }
  12.335 +
  12.336 +.button a { 
  12.337 +	background-color: #b64b22;
  12.338 +	color: #ffffff;
  12.339 +	margin-right: 6px;
  12.340 +	padding: 6px 10px;
  12.341 +	font-size: 14px;
  12.342 +	-moz-border-radius: 4px;
  12.343 +	-webkit-border-radius: 4px;
  12.344 +	border-radius: 4px;
  12.345 +	-moz-box-shadow: 0 1px 3px #666;
  12.346 +	-webkit-box-shadow: 0 1px 3px #666;
  12.347 +	box-shadow: 0 1px 3px #666;
  12.348 +}
  12.349 +
  12.350 +.button a:hover, input[type=submit]:hover { 
  12.351 +	background-color: #a3431f;
  12.352 +	color: #ffffff;
  12.353 +}
  12.354 +
  12.355 +input[type=submit] {
  12.356 +	border: 1px solid #b64b22;
  12.357 +	background-color: #b64b22;
  12.358 +	color: white;
  12.359 +	font-weight: bold;
  12.360 +	cursor: pointer;
  12.361 +	padding: 2px 10px;
  12.362 +	font-size: 14px;
  12.363 +	-moz-border-radius: 2px;
  12.364 +	-webkit-border-radius: 2px;
  12.365 +	border-radius: 2px;
  12.366 +	-moz-box-shadow: 0 0 5px #666;
  12.367 +	-webkit-box-shadow: 0 0 5px#666;
  12.368 +	box-shadow: 0 0 5px #666;
  12.369 +}
  12.370 +
  12.371 +input[type=text] {
  12.372 +	border: 1px solid #333333;
  12.373 +	padding: 3px;
  12.374 +	width: 100%;
  12.375 +	max-width: 500px;
  12.376 +}
  12.377 +
  12.378 +/* Clouds */
  12.379 +
  12.380 +#cloud {
  12.381 +	padding: 10px 0px;
  12.382 +	line-height: 3em;
  12.383 +	text-align: center;
  12.384 +}
  12.385 +#cloud a { padding: 0 2px; color: #956411; }
  12.386 +#cloud a.tag1 { font-size: 0.7em; font-weight: 100; }
  12.387 +#cloud a.tag2 { font-size: 0.8em; font-weight: 200; }
  12.388 +#cloud a.tag3 { font-size: 0.9em; font-weight: 300; }
  12.389 +#cloud a.tag4 { font-size: 1.0em; font-weight: 400; }
  12.390 +#cloud a.tag5 { font-size: 1.2em; font-weight: 500; }
  12.391 +#cloud a.tag6 { font-size: 1.4em; font-weight: 600; }
  12.392 +#cloud a.tag7 { font-size: 1.6em; font-weight: 700; }
  12.393 +#cloud a.tag8 { font-size: 1.8em; font-weight: 800; }
  12.394 +#cloud a.tag9 { font-size: 2.2em; font-weight: 900; }
  12.395 +#cloud a.tag10 { font-size: 2.5em; font-weight: 900; }
  12.396 +
  12.397 +/* Slideshow. */
  12.398 +
  12.399 +#slideshow
  12.400 +{
  12.401 +	overflow: hidden;
  12.402 +	margin: 10px auto 10px;
  12.403 +	position: relative;
  12.404 +	width: 260px;
  12.405 +	height: 163px;
  12.406 +}
  12.407 +
  12.408 +#slideshow img
  12.409 +{
  12.410 +	border: 0;
  12.411 +	width: 260px;
  12.412 +	height: 163px;
  12.413 +}
  12.414 +
  12.415 +#twitter {
  12.416 +	margin-top: 20px;
  12.417 +	-moz-border-radius: 8px;
  12.418 +	-webkit-border-radius: 8px;
  12.419 +	border-radius: 8px;
  12.420 +	-moz-box-shadow: 0 1px 3px #666;
  12.421 +	-webkit-box-shadow: 0 1px 3px #666;
  12.422 +	box-shadow: 0 1px 3px #666;
  12.423 +}
  12.424 +
  12.425 +/* HTML styles */
  12.426 +
  12.427 +h1 {
  12.428 +	color: #444444;
  12.429 +	background: transparent;
  12.430 +	text-align: left;
  12.431 +	margin: 0px 0px 4px 0px;
  12.432 +	font-size: 150%;
  12.433 +	font-weight: bold;
  12.434 +	padding: 5px 0 0 10px;
  12.435 +}
  12.436 +
  12.437 +h2 {
  12.438 +	color: #b64b22;
  12.439 +	padding: 0;
  12.440 +	margin: 20px 0 0 0;
  12.441 +	font-size: 130%;
  12.442 +	font-weight: bold;
  12.443 +}
  12.444 +
  12.445 +h3 {
  12.446 +	font-weight: bold;
  12.447 +	color: #666666;
  12.448 +	background: transparent;
  12.449 +}
  12.450 +	
  12.451 +h3 img { 
  12.452 +	vertical-align: middle;
  12.453 +	width: 20px;
  12.454 +	height: 20px;
  12.455 +	padding-right: 4px; 
  12.456 +}
  12.457 +
  12.458 +a {
  12.459 +	text-decoration: underline;
  12.460 +	color: #103A5E;
  12.461 +	background: inherit;
  12.462 +}
  12.463 +
  12.464 +a:hover {
  12.465 +	text-decoration: none;
  12.466 +	color: blue;
  12.467 +	background: inherit;
  12.468 +}
  12.469 +
  12.470 +code {
  12.471 +	font-size: 12px;
  12.472 +	color: #669900;
  12.473 +	background: inherit;
  12.474 +}
  12.475 +
  12.476 +tt {
  12.477 +	color: #15EE15;
  12.478 +	background: inherit;
  12.479 +}
  12.480 +
  12.481 +img {
  12.482 +	border: 0pt none;
  12.483 +}
  12.484 +
  12.485 +fieldset {
  12.486 +	background: #E2ECf6;
  12.487 +	color: black;
  12.488 +	margin-top: 25px;
  12.489 +	border: 1px solid black;
  12.490 +}
  12.491 +
  12.492 +legend {
  12.493 +	border: 1px solid black;
  12.494 +	color: #6c0023;
  12.495 +	background: #eaeaea;
  12.496 +	font-weight: bold;
  12.497 +}
  12.498 +
  12.499 +pre {
  12.500 +	padding: 5px;
  12.501 +	color: black;
  12.502 +	background: #E1E0B0;
  12.503 +}
  12.504 +
  12.505 +pre.script {
  12.506 +	padding: 10px;
  12.507 +	color: black;
  12.508 +	background: #E8E8E8;
  12.509 +	border: 1px inset #606060;
  12.510 +}
  12.511 +
  12.512 +textarea {
  12.513 +	background: #E5E5E5;
  12.514 +	margin-top: 12px;
  12.515 +}
  12.516 +
  12.517 +/* Packages pages */
  12.518 +
  12.519 +.pkg_nav {
  12.520 +	border-top: 1px solid black;
  12.521 +	margin-top: 10px;
  12.522 +	padding-top: 10px;
  12.523 +}
  12.524 +
  12.525 +pre.package {
  12.526 +	padding: 0px;
  12.527 +	color: black;
  12.528 +	background: white;
  12.529 +}
  12.530 +
  12.531 +p.get {
  12.532 +	text-align: center;
  12.533 +	padding: 10px;
  12.534 +	color: black;
  12.535 +	background: #F3F3F3;
  12.536 +	border: 1px solid #DEDEDE;
  12.537 +	border-radius: 4px;
  12.538 +	-moz-border-radius: 4px;
  12.539 +	-webkit-border-radius: 4px;
  12.540 +}
  12.541 +
  12.542 +p.get a {
  12.543 +	font-weight: bold;
  12.544 +	text-decoration: none;
  12.545 +}
  12.546 +
  12.547 +.pkgs-search { 
  12.548 +	text-align: center; 
  12.549 +	padding: 40px 20px 80px 20px;
  12.550 +}
  12.551 +
  12.552 +.year:after {
  12.553 +	/* content: "2007-2011"; */
  12.554 +	content: "2011";
  12.555 +}
  12.556 +
  12.557 +/* Footer */
  12.558 +
  12.559 +#footer {
  12.560 +	margin: 0px 80px 80px 80px;
  12.561 +	padding: 10px;
  12.562 +	background: #eaeaea;
  12.563 +	color: #666666;
  12.564 +	height: 180px;
  12.565 +	clear: both;
  12.566 +	border-radius: 8px;
  12.567 +	-moz-border-radius: 8px;
  12.568 +	-webkit-border-radius: 8px;
  12.569 +	-moz-box-shadow: 0 1px 3px #666;
  12.570 +	-webkit-box-shadow: 0 1px 3px #666;
  12.571 +	box-shadow: 0 1px 3px #666;
  12.572 +}
  12.573 +#footer a {
  12.574 +	background: inherit;
  12.575 +	color: #666666;
  12.576 +}
  12.577 +#footer a:hover {
  12.578 +	background: inherit;
  12.579 +	color: #333333;
  12.580 +}
  12.581 +#footer ul {
  12.582 +	list-style-type: none;
  12.583 +}
  12.584 +#footer li {
  12.585 +	padding: 2px;
  12.586 +}
  12.587 +#footer h4 {
  12.588 +	margin: 0 20px;
  12.589 +	font-size: 125%;
  12.590 +}