Skip to content

Commit 20247f1

Browse files
committed
Install framebuffer and direct gateway out to it
1 parent abc8934 commit 20247f1

File tree

3 files changed

+90
-33
lines changed

3 files changed

+90
-33
lines changed

lxdguiprofile.txt

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
--2021-03-13 08:51:42-- https://blog.simos.info/wp-content/uploads/2018/06/lxdguiprofile.txt
2+
Auflösen des Hostnamens blog.simos.info (blog.simos.info) … 163.172.159.205
3+
Verbindungsaufbau zu blog.simos.info (blog.simos.info)|163.172.159.205|:443 … verbunden.
4+
HTTP-Anforderung gesendet, auf Antwort wird gewartet … 200 OK
5+
Länge: 614 [text/plain]
6+
Wird in »lxdguiprofile.txt.1« gespeichert.
7+
8+
0K 100% 68,2M=0s
9+
10+
2021-03-13 08:51:43 (68,2 MB/s) - »lxdguiprofile.txt.1« gespeichert [614/614]
11+

setup.sh

Lines changed: 69 additions & 33 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,15 @@
2424
export DEBIAN_FRONTEND=noninteractive
2525
source config.sh
2626

27+
print_status(){
28+
echo "[+] $*"
29+
}
30+
print_error() {
31+
echo "[!] $*"
32+
}
33+
print_question() {
34+
echo "[?] $*"
35+
}
2736

2837
if [ -f $logfile ] ; then rm $logfile ; fi
2938
touch $logfile
@@ -32,27 +41,27 @@ SILENT=$logfile
3241
if test -n "${1}"; then
3342
CONTAINER=${1}
3443
elif test -z $CONTAINER ; then
35-
read -p "Name des Containers: " CONTAINER
44+
read -p "[?] Name des Containers: " CONTAINER
3645
fi
3746
if test -z $CONTAINER ; then
38-
echo "Es muss eine Bezeichnung für den Container angegeben werden!"
47+
print_error "Es muss eine Bezeichnung für den Container angegeben werden!"
3948
exit 255
4049
fi
4150

4251
if test -n "${2}"; then
4352
LOGIN=${2}
4453
elif test -z "$LOGIN" ; then
45-
read -p "Interactive Brokers Account Login: " LOGIN
54+
read -p "[?] Interactive Brokers Account Login: " LOGIN
4655
fi
4756

4857
if test -n "${3}"; then
4958
PASS=${3}
5059
elif test -z "$PASS" ; then
51-
read -ps "Interactive Brokers Account Password: " PASS
60+
read -ps "[?] Interactive Brokers Account Password: " PASS
5261
fi
5362

5463
if test -z $DEMOACCOUNT ; then
55-
read -p "Demoaccount? [y|N]:"
64+
read -p "[?] Demoaccount? [y|N]:"
5665
if [ ! $REPLY = 'y' ] && [ ! $REPLY = 'j' ] ; then
5766
DEMOACCOUNT=0
5867
else
@@ -63,7 +72,7 @@ fi
6372
if test -n "${5}" ; then
6473
SSH_MIDDLEMAN_SERVER=${5}
6574
elif test -z "$SSH_MIDDLEMAN_SERVER" ; then
66-
read -p "Bezeichnung oder IP des Endpunkts des SSH-Tunnels [return=keinen Tunnel verwenden]: " SSH_MIDDLEMAN_SERVER
75+
read -p "[?] Bezeichnung oder IP des Endpunkts des SSH-Tunnels [return=keinen Tunnel verwenden]: " SSH_MIDDLEMAN_SERVER
6776
fi
6877

6978
if test -z $SSH_MIDDLEMAN_SERVER ; then
@@ -73,9 +82,9 @@ else
7382
if test -n "${4}" ; then
7483
SSH_PORT_NUMBER=${4}
7584
elif test -z "$SSH_PORT_NUMBER" ; then
76-
echo "Erzeuge zufällige Ports ..."
85+
print_status "Erzeuge zufällige Ports ..."
7786
SSH_PORT_NUMBER=$[ ( $RANDOM % 10000 ) + 10000 ]
78-
read -p "Port für SSH-Tunnel [$SSH_PORT_NUMBER]: " port
87+
read -p "[?] Port für SSH-Tunnel [$SSH_PORT_NUMBER]: " port
7988
if [ -n $port ] ; then
8089
SSH_PORT_NUMBER=$port
8190
fi
@@ -86,42 +95,43 @@ else
8695
SSH_MIDDLEMAN_USER=${6}
8796
elif test -z "$SSH_MIDDLEMAN_USER" ; then
8897
user=`whoami`
89-
read -p "Benutzer auf dem Endpunkt des SSH-Tunnels: $SSH_MIDDLEMAN_SERVER:[$user] " SSH_MIDDLEMAN_USER
98+
read -p "[?] Benutzer auf dem Endpunkt des SSH-Tunnels: $SSH_MIDDLEMAN_SERVER:[$user] " SSH_MIDDLEMAN_USER
9099
if [[ -z $SSH_MIDDLEMAN_USER ]]; then
91100
SSH_MIDDLEMAN_USER=$user
92101
fi
93102
fi
94103
fi
95104

96105

97-
echo "-------------------------"
98-
echo "Containter: $CONTAINER"
99-
echo "Login: $LOGIN"
100-
echo "Password: **** " # $PASS"
101-
echo "Demoaccount: `if [ $DEMOACCOUNT -eq 1 ] ; then echo "ja" ; else echo "nein"; fi ` "
102-
echo "Gateway/TWS: `if [ "$PRODUCT" = tws ] ; then echo "$INSTANCE" ; else echo "Gateway" ; fi `"
106+
print_status "-------------------------"
107+
print_status "Containter: $CONTAINER"
108+
print_status "Login: $LOGIN"
109+
print_status "Password: **** " # $PASS"
110+
print_tatus "Demoaccount: `if [ $DEMOACCOUNT -eq 1 ] ; then echo "ja" ; else echo "nein"; fi ` "
111+
print_status "Gateway/TWS: `if [ "$PRODUCT" = tws ] ; then echo "$INSTANCE" ; else echo "Gateway" ; fi `"
103112
if [ $SETUP_AUTOSSH -eq 1 ] ; then
104-
echo "PORT: $SSH_PORT_NUMBER"
105-
echo "Backport: $SSH_MONITORING_PORT_NUMBER"
106-
echo "Middleman: $SSH_MIDDLEMAN_SERVER"
107-
echo "Middleman User: $SSH_MIDDLEMAN_USER"
113+
print_status "PORT: $SSH_PORT_NUMBER"
114+
print_status "Backport: $SSH_MONITORING_PORT_NUMBER"
115+
print_status "Middleman: $SSH_MIDDLEMAN_SERVER"
116+
print_status "Middleman User: $SSH_MIDDLEMAN_USER"
108117
else
109-
echo "SSH-Tunnel wird nicht installiert "
110-
echo "......................................"
118+
print_status "SSH-Tunnel wird nicht installiert "
119+
print_status "......................................"
111120
fi
112-
read -p "Installieren? [Y/n]:" cont
121+
read -p "[?] Gateway Ausgabe in Framebuffer umleiten? [Y/n]:" cont
122+
if [[ -n $cont || $cont == 'n' ]] ; then
123+
TWS_DISPLAY=:99
124+
else
125+
TWS_DISPLAY=:0
126+
fi
127+
print_status "Ausgabe für Gateway: $TWS_DISPLAY "
128+
read -p "[?] Installieren? [Y/n]:" cont
113129
if [[ -n $cont || $cont == 'n' ]] ; then
114130
exit 255
115131
fi
116132

117133

118134

119-
print_status(){
120-
echo "[+] $*"
121-
}
122-
print_error() {
123-
echo "[!] $*"
124-
}
125135

126136

127137

@@ -202,7 +212,7 @@ launch_image(){
202212

203213

204214
download_ib_software(){
205-
if [ -f $IB_PROGRAM ] ; then
215+
istf [ -f $IB_PROGRAM ] ; then
206216
:
207217
else
208218
print_status "Hole $PRODUCT vom offiziellen Server"
@@ -238,6 +248,7 @@ init_container(){
238248

239249
print_status "Installiere Java Das dauert einige Minuten ..."
240250
$access_container sudo apt-get update >> $SILENT
251+
241252
$access_container sudo apt-get install -y openjdk-14-jre >> $SILENT
242253

243254
# testen, ob java installiert ist:
@@ -255,6 +266,21 @@ init_container(){
255266
fi
256267
}
257268

269+
270+
setup_xvfb(){
271+
local access_container="lxc exec $CONTAINER -- sudo --login --user ubuntu --"
272+
$access_container sudo apt-get install -y xvfb >> $SILENT
273+
lxc file push xvfb.service $CONTAINER/home/ubuntu/
274+
$access_container sudo mv /home/ubuntu/xvfb.service /lib/systemd/system/xvfb.service
275+
$access_container sudo chmod +x /lib/systemd/system/xvfb.service
276+
$access_container sudo systemctl enable /lib/systemd/system/xvfb.service
277+
$access_container sudo systemctl start xvfb.service
278+
# autostart xvfb
279+
$access_container sudo systemctl enable xvfb
280+
# $access_container export DISPLAY=:99
281+
282+
}
283+
258284
apply_ibc(){
259285
# Download der IBC-Software
260286
# Kopieren in Container
@@ -288,10 +314,10 @@ apply_ibc(){
288314
if [ $DEMOACCOUNT -eq 1 ] ; then
289315
$access_container sed -in ' 143 s/=live/=paper/ ' /home/ubuntu/ibc/config.ini
290316
# AcceptNonBrokerageAccountWarning=no
291-
$access_container sed -in ' 321 s/=no/=yes/ ' /home/ubuntu/ibc/config.ini
317+
$access_container sed -in ' 322 s/=no/=yes/ ' /home/ubuntu/ibc/config.ini
292318
fi
293319
# MinimizeMainWindow=no
294-
$access_container sed -in ' 206 s/=no/=yes/ ' /home/ubuntu/ibc/config.ini
320+
# $access_container sed -in ' 207 s/=no/=yes/ ' /home/ubuntu/ibc/config.ini
295321
if [ "$PRODUCT" = "tws" ] ; then
296322
$access_container sed -in ' 21 s/978/981/ ' /home/ubuntu/ibc/twsstart.sh
297323
# $access_container sed -in ' 23 s/=/=paper/ ' /home/ubuntu/ibc/twsstart.sh
@@ -304,6 +330,14 @@ apply_ibc(){
304330
$access_container sed -in ' 25 s/\/opt/\~/ ' /home/ubuntu/ibc/gatewaystart.sh
305331
touch ibc_cronfile
306332
local lxd_display=`$access_container echo $DISPLAY`
333+
# set display , if no DISPLAY setting is found, use :99 (xvfb)
334+
if [ $lxd_display ] ; then
335+
:
336+
else
337+
$access_container export DISPLAY=:99
338+
local lxd_display=`$access_container echo $DISPLAY`
339+
fi
340+
307341
echo 'START_TIME * * 1-5 export DISPLAY=ibc-display && /bin/bash /home/ubuntu/ibc/gatewaystart.sh -inline' > ibc_cronfile
308342
sed -e " 1 s/ibc-display/$lxd_display/ " -e " 1 s/START_TIME/$START_TIME/ " ibc_cronfile > t_c
309343
if [ $INSTANCE = "tws" ] ; then
@@ -466,17 +500,19 @@ init_container
466500
print_status " +++++++++++++++++++++++++++++++++++++++ "
467501
print_status " Container ${CONTAINER} ist angelegt "
468502

503+
setup_xvfb
504+
print_status " Framebuffer device eingerichtet "
469505
if [ $SETUP_AUTOSSH -eq 1 ] ; then
470506
setup_reverse_tunnel
471507
print_status " Reverse Tunnel ist aufgebaut "
472508
fi
473509

474510

475511

476-
print_status "Installiere IBC "
512+
print_status " Installiere IBC "
477513
apply_ibc
478514

479-
print_status "Installiere simple-monitor "
515+
print_status " Installiere simple-monitor "
480516
install_simple_monitor
481517

482518
run_ats

xvfb.service

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
[Unit]
2+
Description=X Virtual Frame Buffer Service
3+
After=network.target
4+
5+
[Service]
6+
User=root
7+
ExecStart=/usr/bin/Xvfb :99 -screen 0 1024x768x24
8+
9+
[Install]
10+
WantedBy=multi-user.target

0 commit comments

Comments
 (0)