2424export DEBIAN_FRONTEND=noninteractive
2525source config.sh
2626
27+ print_status (){
28+ echo " [+] $* "
29+ }
30+ print_error () {
31+ echo " [!] $* "
32+ }
33+ print_question () {
34+ echo " [?] $* "
35+ }
2736
2837if [ -f $logfile ] ; then rm $logfile ; fi
2938touch $logfile
@@ -32,27 +41,27 @@ SILENT=$logfile
3241if test -n " ${1} " ; then
3342 CONTAINER=${1}
3443elif test -z $CONTAINER ; then
35- read -p " Name des Containers: " CONTAINER
44+ read -p " [?] Name des Containers: " CONTAINER
3645fi
3746if 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
4049fi
4150
4251if test -n " ${2} " ; then
4352 LOGIN=${2}
4453elif test -z " $LOGIN " ; then
45- read -p " Interactive Brokers Account Login: " LOGIN
54+ read -p " [?] Interactive Brokers Account Login: " LOGIN
4655fi
4756
4857if test -n " ${3} " ; then
4958 PASS=${3}
5059elif test -z " $PASS " ; then
51- read -ps " Interactive Brokers Account Password: " PASS
60+ read -ps " [?] Interactive Brokers Account Password: " PASS
5261fi
5362
5463if 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
6372if test -n " ${5} " ; then
6473 SSH_MIDDLEMAN_SERVER=${5}
6574elif 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
6776fi
6877
6978if test -z $SSH_MIDDLEMAN_SERVER ; then
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
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
94103fi
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 ` "
103112if [ $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 "
108117else
109- echo " SSH-Tunnel wird nicht installiert "
110- echo " ......................................"
118+ print_status " SSH-Tunnel wird nicht installiert "
119+ print_status " ......................................"
111120fi
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
113129if [[ -n $cont || $cont == ' n' ]] ; then
114130 exit 255
115131fi
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
204214download_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+
258284apply_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
466500print_status " +++++++++++++++++++++++++++++++++++++++ "
467501print_status " Container ${CONTAINER} ist angelegt "
468502
503+ setup_xvfb
504+ print_status " Framebuffer device eingerichtet "
469505if [ $SETUP_AUTOSSH -eq 1 ] ; then
470506 setup_reverse_tunnel
471507 print_status " Reverse Tunnel ist aufgebaut "
472508fi
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
0 commit comments