#!/bin/bash
#Script zum Kompilieren und Einrichten eines Pearl-Displays für Oscam
#V 0.02
#
#
# © Al-x83, IPC-PEBKAC
#
#
#Installieren der nötigen Pakete:
echo "==============================================================================="
echo ""
echo -n "Installieren der nötigen Pakete.."
echo ""
echo ""
echo "==============================================================================="
echo ""
#Linux Version? (Debian/Ubuntu)
if [ -f /usr/bin/lsb_release ]; then
LSB=$(/usr/bin/lsb_release -d)
_LINUX=$(echo $LSB|cut -d":" -f2|awk {'print $1'})
if [ "$_LINUX" = "Debian" ]; then
LINUXVERSION=$(echo $LSB|cut -d":" -f2|awk {'print $3'})
elif [ "$_LINUX" = "Ubuntu" ]; then
LINUXVERSION=$(echo $LSB|cut -d":" -f2|awk {'print $2'})
fi
fi
if [ -z "$LINUXVERSION" ]; then
[ -f /etc/debian_version ] && LINUXVERSION=$(cat /etc/debian_version)
fi
#Debian Squeeze
if [ -n "$LINUXVERSION" ]&&[ "$(echo $LINUXVERSION|cut -c1)" != 6 ]; then
apt-get update
apt-get install cc1111 libtool automake1.10 autoconf zlib1g-dev libssl-dev python-dev libc6 libusb-dev libibus-1.0-dev subversion libgd2-noxpm-dev libgd2-noxpm -y
else
#Sonstige Debian Distibutionen
echo "==============================================================================="
echo ""
echo -n "Debian 6 (Squeeze) wird leider aufgrund fehlender Pakete nicht unterstützt"
echo ""
echo ""
echo "==============================================================================="
echo ""
exit 0
fi
#Laden und installieren des Display-Hacks:
echo "==============================================================================="
echo ""
echo -n "Laden und installieren des Display-Hacks.."
echo ""
echo ""
echo "==============================================================================="
echo ""
wget http://tech.section5.ch/files/dpfhack-0.1alpha.tgz
tar -xvzf dpfhack-0.1alpha.tgz
cd dpf/src
make
#Laden und entpacken von LCD4LINUX:
echo "==============================================================================="
echo ""
echo -n "Laden und entpacken von LCD4LINUX.."
echo ""
echo ""
echo "==============================================================================="
echo ""
cd ..
cd ..
wget http://tech.section5.ch/files/dpf-lcd4linux.tgz
tar -xvzf dpf-lcd4linux.tgz
cd dpf
#Anpassen von build-dpf-lcd4linux.sh:
echo "s./configure --with-drivers=DPF./configure --with-drivers='DPF' --with-plugins='all,!dbus,!mpris_dbus'.g" > ~/.sedfile
cp build-dpf-lcd4linux.sh build-dpf-lcd4linux.sh.bak
sed -f ~/.sedfile build-dpf-lcd4linux.sh.bak > build-dpf-lcd4linux.sh
rm build-dpf-lcd4linux.sh.bak
rm ~/.sedfile
#Kompilieren von LCD4LINUX
echo "==============================================================================="
echo ""
echo -n "Kompilieren von LCD4LINUX.."
echo ""
echo ""
echo "==============================================================================="
echo ""
./build-dpf-lcd4linux.sh ../src/dpflib/
cd lcd4linux
sudo make install
#Config Datei erstellen:
echo "==============================================================================="
echo ""
echo -n "/etc/lcd4linux.conf erstellen.."
echo ""
echo ""
echo "==============================================================================="
echo ""
cat << EOF > /etc/lcd4linux.conf
Display 'DPF'
Layout 'mylayout'
Variables {
time_minute 60000
time_second 1000
time_tick second
time_faster 0.5
color_black '000000'
color_white 'ffffff'
color_blue '0000FF'
color_green '008000'
color_red '800000'
color_transparent 'ffffff00'
color_lighter 'ffffff80'
color_darker '00000080'
color_fg 'ffffff'
color_bg '00000044'
color_bar_fg 'ffffff'
color_bar_bg '00000044'
color_bar1 '5f5fff'
color_bar2 'ff5f5f'
width_quarter 12
width_full 53
width_half 24
width_idle 22
width_logo 39
tablestart 6
}
Display dpf {
driver 'DPF'
port 'dev/sg0'
font '6x8'
foreground color_white
background color_blue
basecolor color_black
}
Display dpf {
driver 'DPF'
port 'dev/sg0'
font '6x8'
foreground color_white
background color_blue
basecolor color_black
}
Widget OVersion {
class 'Text'
expression file::readline('/tmp/.oscam/oscam.lcd', 1)
width width_full
align 'L'
update time_minute
style bold
background color_blue
}
Widget ORevision{
class 'Text'
expression file::readline('/tmp/.oscam/oscam.lcd', 2)
width width_full
align 'L'
update time_minute
style bold
background color_blue
}
Widget CLOCK {
class 'Text'
expression strftime ('%H:%M:%S', time())
prefix ' '
width width_full
align 'L'
update time_second
style bold
background color_green
foreground color_white
}
Widget DATE {
class 'Text'
expression strftime ('%d.%m.%Y', time())
width width_full
align 'L'
update time_second
style bold
background color_red
foreground color_white
}
Widget RAM {
class 'Text'
expression (floor(meminfo('MemFree')*10/1024)/10).' / '.(floor(meminfo('MemTotal')*10/1024)/10)
prefix 'RAM'
postfix ' MB'
width width_half
#precision 0
align 'R'
update time_second
Background color_transparent
Foreground color_fg
}
Widget DF {
class 'Text'
expression statfs('/root', 'bavail')*statfs('/root', 'bsize')/1024/1024/1024
prefix 'USBStick '
postfix ' GB frei'
precision 2
width width_half
align 'R'
update time_second * 10
Background color_transparent
Foreground color_fg
}
Widget Busy {
class 'Text'
expression proc_stat::cpu('busy', 500)
prefix 'Busy'
postfix '%'
width width_half
precision 1
align 'R'
update time_second
Background color_transparent
Foreground color_fg
}
Widget BusyBar {
class 'Bar'
expression proc_stat::cpu('busy', 500)
expression2 proc_stat::cpu('system', 500)
length width_half
direction 'E'
update time_second * time_faster
Background color_transparent
Foreground color_bar_fg
BarColor0 color_bar1
BarColor1 color_bar2
}
Widget Load {
class 'Text'
expression loadavg(1)
prefix 'Load'
postfix loadavg(1)>1.0?'!':' '
width width_half
precision 1
align 'R'
update time_second
Background color_transparent
Foreground color_fg
}
Widget LoadBar {
class 'Bar'
expression loadavg(1)
max 5.0
length width_half
direction 'E'
update time_second * time_faster
Background color_transparent
Foreground color_bar_fg
BarColor0 color_bar1
BarColor1 color_bar2
}
Widget Eth0 {
class 'Text'
expression (netdev('eth0', 'Rx_bytes', 500)+netdev('eth0', 'Tx_bytes', 500))/1024/1024
prefix 'eth0'
postfix ' MB/s'
width width_half
precision 3
align 'R'
update time_second
Background color_transparent
Foreground color_fg
}
Widget Eth0Bar {
class 'Bar'
expression netdev('eth0', 'Rx_bytes', 500)
expression2 netdev('eth0', 'Tx_bytes', 500)
length width_half
direction 'E'
update time_second * time_faster
Background color_transparent
Foreground color_bar_fg
BarColor0 color_bar1
BarColor1 color_bar2
}
Widget Eth0Trf {
class 'Text'
expression (netdev('eth0', 'Rx_bytes', 0)+netdev('eth0', 'Tx_bytes', 0))/1024/1024
prefix 'Traffic eth0'
postfix ' MB'
width width_half
precision 3
align 'R'
update tick
Background color_transparent
#Background color_bg
Foreground color_fg
}
Widget OTotals {
class 'Text'
expression file::readline('/tmp/.oscam/oscam.lcd', 4)
prefix ' Server Totals: '
width width_full
align 'L'
update time_minute
style 'bold'
Background color_red
Foreground color_white
}
Widget Ouptime {
class 'Text'
expression file::readline('/tmp/.oscam/oscam.lcd', 3)
prefix 'Oscam '
width width_full
align 'L'
update 10000
foreground color_white
background color_transparent
}
####################### Oscam Table #####################
Widget OscamRow00 {
class 'Text'
expression file::readline('/tmp/.oscam/oscam.lcd', tablestart)
width width_full
align 'L'
update 10000
Background strstr(file::readline('/tmp/.oscam/oscam.lcd', tablestart),'T') == 0 ? color_blue : color_transparent
}
Widget OscamRow01 {
class 'Text'
expression file::readline('/tmp/.oscam/oscam.lcd', tablestart + 1)
width width_full
align 'L'
update 10000
Background strstr(file::readline('/tmp/.oscam/oscam.lcd', tablestart + 1),'T') == 0 ? color_blue : color_transparent
}
Widget OscamRow02 {
class 'Text'
expression file::readline('/tmp/.oscam/oscam.lcd', tablestart + 2)
width width_full
align 'L'
update 10000
Background strstr(file::readline('/tmp/.oscam/oscam.lcd', tablestart + 2),'T') == 0 ? color_blue : color_transparent
}
Widget OscamRow03 {
class 'Text'
expression file::readline('/tmp/.oscam/oscam.lcd', tablestart + 3)
width width_full
align 'L'
update 10000
Background strstr(file::readline('/tmp/.oscam/oscam.lcd', tablestart + 3),'T') == 0 ? color_blue : color_transparent
}
Widget OscamRow04 {
class 'Text'
expression file::readline('/tmp/.oscam/oscam.lcd', tablestart + 4)
width width_full
align 'L'
update 10000
Background strstr(file::readline('/tmp/.oscam/oscam.lcd', tablestart + 4),'T') == 0 ? color_blue : color_transparent
}
Widget OscamRow05 {
class 'Text'
expression file::readline('/tmp/.oscam/oscam.lcd', tablestart + 5)
width width_full
align 'L'
update 10000
Background strstr(file::readline('/tmp/.oscam/oscam.lcd', tablestart + 5),'T') == 0 ? color_blue : color_transparent
}
Widget OscamRow06 {
class 'Text'
expression file::readline('/tmp/.oscam/oscam.lcd', tablestart + 6)
width width_full
align 'L'
update 10000
Background strstr(file::readline('/tmp/.oscam/oscam.lcd', tablestart + 6),'T') == 0 ? color_blue : color_transparent
}
Widget OscamRow07 {
class 'Text'
expression file::readline('/tmp/.oscam/oscam.lcd', tablestart + 7)
width width_full
align 'L'
update 10000
Background strstr(file::readline('/tmp/.oscam/oscam.lcd', tablestart + 7),'T') == 0 ? color_blue : color_transparent
}
Widget OscamRow08 {
class 'Text'
expression file::readline('/tmp/.oscam/oscam.lcd', tablestart + 8)
width width_full
align 'L'
update 10000
Background strstr(file::readline('/tmp/.oscam/oscam.lcd', tablestart + 8),'T') == 0 ? color_blue : color_transparent
}
Widget OscamRow09 {
class 'Text'
expression file::readline('/tmp/.oscam/oscam.lcd', tablestart + 9)
width width_full
align 'L'
update 10000
Background strstr(file::readline('/tmp/.oscam/oscam.lcd', tablestart + 9),'T') == 0 ? color_blue : color_transparent
}
Widget OscamRow10 {
class 'Text'
expression file::readline('/tmp/.oscam/oscam.lcd', tablestart + 10)
width width_full
align 'L'
update 10000
Background strstr(file::readline('/tmp/.oscam/oscam.lcd', tablestart + 10),'T') == 0 ? color_blue : color_transparent
}
Widget OscamRow11 {
class 'Text'
expression file::readline('/tmp/.oscam/oscam.lcd', tablestart + 11)
width width_full
align 'L'
update 10000
Background strstr(file::readline('/tmp/.oscam/oscam.lcd', tablestart + 11),'T') == 0 ? color_blue : color_transparent
}
Widget OscamRow12 {
class 'Text'
expression file::readline('/tmp/.oscam/oscam.lcd', tablestart + 12)
width width_full
align 'L'
update 10000
Background strstr(file::readline('/tmp/.oscam/oscam.lcd', tablestart + 12),'T') == 0 ? color_blue : color_transparent
}
Widget OscamRow13 {
class 'Text'
expression file::readline('/tmp/.oscam/oscam.lcd', tablestart + 13)
width width_full
align 'L'
update 10000
Background strstr(file::readline('/tmp/.oscam/oscam.lcd', tablestart + 13),'T') == 0 ? color_blue : color_transparent
}
Widget OscamRow14 {
class 'Text'
expression file::readline('/tmp/.oscam/oscam.lcd', tablestart + 14)
width width_full
align 'L'
update 10000
Background strstr(file::readline('/tmp/.oscam/oscam.lcd', tablestart + 14),'T') == 0 ? color_blue : color_transparent
}
Widget OscamRow15 {
class 'Text'
expression file::readline('/tmp/.oscam/oscam.lcd', tablestart + 15)
width width_full
align 'L'
update 10000
Background strstr(file::readline('/tmp/.oscam/oscam.lcd', tablestart + 15),'T') == 0 ? color_blue : color_transparent
}
Widget OscamRow16 {
class 'Text'
expression file::readline('/tmp/.oscam/oscam.lcd', tablestart + 16)
width width_full
align 'L'
update 10000
Background strstr(file::readline('/tmp/.oscam/oscam.lcd', tablestart + 16),'T') == 0 ? color_blue : color_transparent
}
Widget OscamRow17 {
class 'Text'
expression file::readline('/tmp/.oscam/oscam.lcd', tablestart + 17)
width width_full
align 'L'
update 10000
Background strstr(file::readline('/tmp/.oscam/oscam.lcd', tablestart + 17),'T') == 0 ? color_blue : color_transparent
}
Widget OscamRow18 {
class 'Text'
expression file::readline('/tmp/.oscam/oscam.lcd', tablestart + 18)
width width_full
align 'L'
update 10000
Background strstr(file::readline('/tmp/.oscam/oscam.lcd', tablestart + 18),'T') == 0 ? color_blue : color_transparent
}
Widget OscamRow19 {
class 'Text'
expression file::readline('/tmp/.oscam/oscam.lcd', tablestart + 19)
width width_full
align 'L'
update 10000
Background strstr(file::readline('/tmp/.oscam/oscam.lcd', tablestart + 19),'T') == 0 ? color_blue : color_transparent
}
Widget OscamRow20 {
class 'Text'
expression file::readline('/tmp/.oscam/oscam.lcd', tablestart + 20)
width width_full
align 'L'
update 10000
Background strstr(file::readline('/tmp/.oscam/oscam.lcd', tablestart + 20),'T') == 0 ? color_blue : color_transparent
}
Layout mylayout {
#----------------------------------------<start topline
Row01.Col01 'OVersion'
Row01.Col29 'ORevision'
Row01.Col44 'CLOCK'
#----------------------------------------<end topline
#----------------------------------------<start header
Row03.Col02 'RAM'
Row03.Col29 'DF'
Row04.Col02 'Busy'
Row05.Col02 'BusyBar'
Row06.Col02 'Load'
Row07.Col02 'LoadBar'
Row04.Col29 'Eth0'
Row05.Col29 'Eth0Bar'
Row06.Col29 'Eth0Trf'
Row07.Col29 'Ouptime'
#----------------------------------------<end header
ROW09.Col01 'OscamRow00'
ROW10.Col01 'OscamRow01'
ROW11.Col01 'OscamRow02'
ROW12.Col01 'OscamRow03'
ROW13.Col01 'OscamRow04'
ROW14.Col01 'OscamRow05'
ROW15.Col01 'OscamRow06'
ROW16.Col01 'OscamRow07'
ROW17.Col01 'OscamRow08'
ROW18.Col01 'OscamRow09'
ROW19.Col01 'OscamRow10'
ROW20.Col01 'OscamRow11'
ROW21.Col01 'OscamRow12'
ROW22.Col01 'OscamRow13'
ROW23.Col01 'OscamRow14'
ROW24.Col01 'OscamRow15'
ROW25.Col01 'OscamRow16'
ROW26.Col01 'OscamRow17'
ROW27.Col01 'OscamRow18'
ROW28.Col01 'OscamRow19'
ROW29.Col01 'OscamRow20'
#----------------------------------------<start lastline
ROW30.Col01 'OTotals'
ROW30.Col43 'DATE'
#----------------------------------------<end lastline
Layer 2 {
X1.Y1 'IMAGE'
}
}
Widget IMAGE2 {
class 'Image'
file '/home/vpn/box.png'
update 10000
reload 1
visible 1
inverted 0
}
EOF
#Rechte setzen:
chown root:root /etc/lcd4linux.conf
chmod 700 /etc/lcd4linux.conf
exit 0