Commit b2d10a6d authored by Atte's avatar Atte

Added a Dockerfile to create a container for running

the webserver cgi-scripts for VR conversions
parent 2d50d5d9
FROM bitnami/apache:2.4
COPY ./webserver/htdocs/NOMAD/ /opt/bitnami/apache/htdocs/NOMAD/
COPY ./webserver/cgi-bin/NOMAD/ /opt/bitnami/apache/cgi-bin/NOMAD/
...@@ -43,6 +43,15 @@ Subdirectories: ...@@ -43,6 +43,15 @@ Subdirectories:
htdocs: Web pages containing the VR software and documentation. htdocs: Web pages containing the VR software and documentation.
cgi-bin: cgi scripts to create suitable config files from a material number. cgi-bin: cgi scripts to create suitable config files from a material number.
Docker container running the VR webservices
# install docker
# add your NOMAD username and password in webserver/pass
# build container
sudo docker build -t nomadvr .
# run container
sudo docker run -d -p 8080:8080 nomadvr
# Test e.g. with you.rip.add.res:8080/cgi-bin/NOMAD/material?109702
RemoteVisualization: NOMAD2xyz app RemoteVisualization: NOMAD2xyz app
Transforms a json from encyclopedia or archive into an XYZ file Transforms a json from encyclopedia or archive into an XYZ file
Useful for the remote visualization infrastructure Useful for the remote visualization infrastructure
...@@ -54,6 +63,7 @@ Subdirectories: ...@@ -54,6 +63,7 @@ Subdirectories:
MD-Driver/SimpleMove and MD-Driver/PeriodicTable: see MD-Driver/Readme MD-Driver/SimpleMove and MD-Driver/PeriodicTable: see MD-Driver/Readme
Support for atom drag-and-drop functionality in OpenVR NOMAD VR. Support for atom drag-and-drop functionality in OpenVR NOMAD VR.
More platforms will be added in the future. More platforms will be added in the future.
The code is distributed under the Apache 2.0 License (See LICENSE file). The code is distributed under the Apache 2.0 License (See LICENSE file).
......
# note, copy this file to VR-demos folder first
FROM bitnami/apache:2.4
# copy NOMAD webservices
COPY ./webserver/htdocs/NOMAD/ /opt/bitnami/apache/htdocs/NOMAD/
COPY ./webserver/cgi-bin/NOMAD/ /opt/bitnami/apache/cgi-bin/NOMAD/
COPY ./webserver/pass /opt/bitnami/apache/
# allow cgi-bin
RUN sed -i 's%#LoadModule cgid_module modules/mod_cgid.so%LoadModule cgid_module modules/mod_cgid.so%' /opt/bitnami/apache/conf/httpd.conf
# add wget. gzip, curl, tar are there by default
USER root
RUN apt-get update \
&& apt-get install -y wget \
&& apt-get install -y zip \
&& rm -rf /var/lib/apt/lists/*
Docker file to build a container to perform the VR conversion webservices
* copy the Dockerfile to .. (VR-demos -folder)
* install docker
* add your NOMAD username and password in webserver/pass
* build container
sudo docker build -t nomadvr .
* run container
sudo docker run -d -p 8080:8080 nomadvr
* Test e.g. with you.rip.add.res:8080/cgi-bin/NOMAD/material?109702
* stop container
sudo docker stop <container-name>
File mode changed from 100644 to 100755
File mode changed from 100644 to 100755
#!/bin/bash #!/bin/bash
# Copyright 2016-2018 Ruben Jesus Garcia Hernandez # Copyright 2016-2018 Ruben Jesus Garcia Hernandez
# #
# Licensed under the Apache License, Version 2.0 (the "License"); # Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License. # you may not use this file except in compliance with the License.
# You may obtain a copy of the License at # You may obtain a copy of the License at
# #
# http://www.apache.org/licenses/LICENSE-2.0 # http://www.apache.org/licenses/LICENSE-2.0
# #
# Unless required by applicable law or agreed to in writing, software # Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS, # distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and # See the License for the specific language governing permissions and
# limitations under the License. # limitations under the License.
source ../../pass source ../../pass
if [[ "$QUERY_STRING" = "" ]] if [[ "$QUERY_STRING" = "" ]]
then then
#echo Location: /NOMAD/ #echo Location: /NOMAD/
echo Location:https://www.nomad-coe.eu/the-project/graphics/VR-prototype echo Location:https://www.nomad-coe.eu/the-project/graphics/VR-prototype
echo '' echo ''
else else
#rgh: text/plain works in pc but android chrome saves it as .txt, removing the extension #rgh: text/plain works in pc but android chrome saves it as .txt, removing the extension
# export TOKEN=`cat t.b64` # export TOKEN=`cat t.b64`
export MAT=$QUERY_STRING export MAT=$QUERY_STRING
export RAND=$RANDOM export RAND=$RANDOM
#rgh: before end of september 2017, use /var/tmp, after, use /tmp (apache update) #rgh: before end of september 2017, use /var/tmp, after, use /tmp (apache update)
cd /tmp cd /tmp
/usr/bin/mkdir $RAND /usr/bin/mkdir $RAND
cd $RAND cd $RAND
#pre 2018: http://encyclopedia-api.nomad-coe.eu/v1.0/saml/ #pre 2018: http://encyclopedia-api.nomad-coe.eu/v1.0/saml/
#post 2018: #post 2018:
SAMLURL=https://encyclopedia.nomad-coe.eu/api/v1.0/saml/ SAMLURL=https://encyclopedia.nomad-coe.eu/api/v1.0/saml/
wget --save-cookies cookies.txt \ wget --save-cookies cookies.txt \
--keep-session-cookies \ --keep-session-cookies \
--no-check-certificate $SAMLURL -O login.html >/dev/null 2>&1 --no-check-certificate $SAMLURL -O login.html >/dev/null 2>&1
URL=`grep "form action" login.html |cut -f 2 -d \" |head -n 1` URL=`grep "form action" login.html |cut -f 2 -d \" |head -n 1`
wget --save-cookies cookies2.txt --keep-session-cookies --load-cookies cookies.txt --no-check-certificate \ wget --save-cookies cookies2.txt --keep-session-cookies --load-cookies cookies.txt --no-check-certificate \
"https://idp.nomad-coe.eu$URL&j_username=$USER&j_password=$PASS&_eventId_proceed" -O a.html >/dev/null 2>&1 "https://idp.nomad-coe.eu$URL&j_username=$USER&j_password=$PASS&_eventId_proceed" -O a.html >/dev/null 2>&1
URL=`grep "form action" a.html |cut -f 2 -d \" |head -n 1` URL=`grep "form action" a.html |cut -f 2 -d \" |head -n 1`
wget --save-cookies cookies3.txt --keep-session-cookies --load-cookies cookies2.txt --no-check-certificate \ wget --save-cookies cookies3.txt --keep-session-cookies --load-cookies cookies2.txt --no-check-certificate \
"https://idp.nomad-coe.eu$URL&_shib_idp_consentOptions=_shib_idp_globalConsent&_eventId_proceed" \ "https://idp.nomad-coe.eu$URL&_shib_idp_consentOptions=_shib_idp_globalConsent&_eventId_proceed" \
-O b.html >/dev/null 2>&1 -O b.html >/dev/null 2>&1
#now continue, as we don't support javascript :o) #now continue, as we don't support javascript :o)
URL2=`echo $URL |cut -f 1 -d \?` URL2=`echo $URL |cut -f 1 -d \?`
DEST=`grep action b.html |cut -f 2 -d \"` DEST=`grep action b.html |cut -f 2 -d \"`
RELAY=`grep RelayState b.html |cut -f6 -d \"` RELAY=`grep RelayState b.html |cut -f6 -d \"`
SAML=`grep SAMLResponse b.html |cut -f6 -d \"` SAML=`grep SAMLResponse b.html |cut -f6 -d \"`
#rgh: since 25-09-2017, this line gives "invalid url" (possibly curl update) #rgh: since 25-09-2017, this line gives "invalid url" (possibly curl update)
#RELAY="https%3A%2F%2Fencyclopedia-api.nomad-coe.eu%2Fv1.0%2Fsaml%2F" #RELAY="https%3A%2F%2Fencyclopedia-api.nomad-coe.eu%2Fv1.0%2Fsaml%2F"
#pre-2018 #pre-2018
#RELAY="https://encyclopedia-api.nomad-coe.eu/v1.0/saml/" #RELAY="https://encyclopedia-api.nomad-coe.eu/v1.0/saml/"
RELAY=$SAMLURL RELAY=$SAMLURL
#echo relay is $RELAY #echo relay is $RELAY
MATERIALSURL=https://encyclopedia.nomad-coe.eu/api/v1.0/materials MATERIALSURL=https://encyclopedia.nomad-coe.eu/api/v1.0/materials
curl -L -c cookies3.txt -X GET -F "RelayState=$RELAY" -F "SAMLResponse=$SAML" "$SAMLURL?acs" -o resp.json >/dev/null 2>&1 curl -L -c cookies3.txt -X GET -F "RelayState=$RELAY" -F "SAMLResponse=$SAML" "$SAMLURL?acs" -o resp.json >/dev/null 2>&1
TOKEN=`grep data resp.json |cut -f 4 -d \"` TOKEN=`grep data resp.json |cut -f 4 -d \"`
mkdir $MAT mkdir $MAT
cd $MAT cd $MAT
wget --no-check-certificate --user "$TOKEN" --password "" $MATERIALSURL/$MAT/cells?pagination=off -O material_cells.json >/dev/null 2>&1 wget --no-check-certificate --user "$TOKEN" --password "" $MATERIALSURL/$MAT/cells?pagination=off -O material_cells.json >/dev/null 2>&1
wget --no-check-certificate --user "$TOKEN" --password "" $MATERIALSURL/$MAT/elements?pagination=off -O material_elements.json >/dev/null 2>&1 wget --no-check-certificate --user "$TOKEN" --password "" $MATERIALSURL/$MAT/elements?pagination=off -O material_elements.json >/dev/null 2>&1
echo \# Material $QUERY_STRING >> $MAT.ncfg echo \# Material $QUERY_STRING >> $MAT.ncfg
echo background 0 0 0 >> $MAT.ncfg echo background 0 0 0 >> $MAT.ncfg
echo atomscaling 0.5 >> $MAT.ncfg echo atomscaling 0.5 >> $MAT.ncfg
echo json material >> $MAT.ncfg echo json material >> $MAT.ncfg
echo displaybonds >> $MAT.ncfg echo displaybonds >> $MAT.ncfg
echo displayunitcell >> $MAT.ncfg echo displayunitcell >> $MAT.ncfg
echo showcontrollers >> $MAT.ncfg echo showcontrollers >> $MAT.ncfg
cd .. cd ..
if grep html $MAT/material_cells.json > /dev/null ; then if grep html $MAT/material_cells.json > /dev/null ; then
echo "CGI backend for NOMAD VR: Encyclopedia API issue. Material $MAT" | echo "CGI backend for NOMAD VR: Encyclopedia API issue. Material $MAT" |
mailx -s 'CGI backend for NOMAD VR: Encyclopedia API issue' $EMAIL mailx -s 'CGI backend for NOMAD VR: Encyclopedia API issue' $EMAIL
echo "Content-type: text/html" echo "Content-type: text/html"
echo '' echo ''
echo "<html><head><title>" echo "<html><head><title>"
echo "VR backend currently being updated" echo "VR backend currently being updated"
echo "</title></head><body>" echo "</title></head><body>"
echo "VR backend currently being updated." echo "VR backend currently being updated."
echo "Please <a href=\"https://www.nomad-coe.eu/the-project/graphics/contact-2\">contact us</a> if the problem persists." echo "Please <a href=\"https://www.nomad-coe.eu/the-project/graphics/contact-2\">contact us</a> if the problem persists."
echo "</body></html>" echo "</body></html>"
else else
zip -r $MAT $MAT >/dev/null 2>&1 zip -r $MAT $MAT >/dev/null 2>&1
echo "Content-type: application/octet-stream" echo "Content-type: application/octet-stream"
echo "Content-disposition: attachment; filename=${QUERY_STRING}.zip" echo "Content-disposition: attachment; filename=${QUERY_STRING}.zip"
echo '' echo ''
cat $MAT.zip cat $MAT.zip
fi fi
cd .. cd ..
\rm -r $RAND # \rm -r $RAND
fi fi
File mode changed from 100644 to 100755
...@@ -3,5 +3,5 @@ export USER= ...@@ -3,5 +3,5 @@ export USER=
export PASS= export PASS=
#Notification email #Notification email
export EMAIL= export EMAIL
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment