#!/bin/bash

. /etc/sysconfig/schoolserver
. /etc/profile.d/profile.sh

#Create a session for local services
TOKEN=$( grep de.openschoolserver.api.auth.localhost= /opt/oss-java/conf/oss-api.properties | sed 's/de.openschoolserver.api.auth.localhost=//' )
SQLUSER=$( grep javax.persistence.jdbc.user= /opt/oss-java/conf/oss-api.properties | sed 's/javax.persistence.jdbc.user=//' )
SQLPW=$( grep javax.persistence.jdbc.password= /opt/oss-java/conf/oss-api.properties | sed 's/javax.persistence.jdbc.password=//' )
LOCAL_TOKEN=$( echo "SELECT COUNT(*) FROM Sessions WHERE token='$TOKEN'" | mysql OSS -u $SQLUSER -p${SQLPW} | tail -n 1 )
if [  "${LOCAL_TOKEN}" = 0 -o "${SCHOOL_RESET_REGISTER_PASSWORD}" = "yes" ]; then
	grep -q de.openschoolserver.api.auth.localhost= /opt/oss-java/conf/oss-api.properties || echo de.openschoolserver.api.auth.localhost=TOKEN >> /opt/oss-java/conf/oss-api.properties
	TOKEN="localhost_"$(uuidgen)
	sed -i s/de.openschoolserver.api.auth.localhost=.*/de.openschoolserver.api.auth.localhost=$TOKEN/ /opt/oss-java/conf/oss-api.properties
	chmod 600            /opt/oss-java/conf/oss-api.properties
	echo "DELETE FROM Sessions WHERE IP='127.0.0.1'" | mysql -u $SQLUSER -p${SQLPW} OSS
	echo "INSERT INTO Sessions VALUES(NULL,1,NULL,NULL,NOW(),'127.0.0.1','$TOKEN')" | mysql -u $SQLUSER -p${SQLPW} OSS
fi
#Create recreate the printer driver files if neccesarry
if [ -e /usr/share/oss/templates/printers.txt -a -e /usr/share/oss/templates/drivers.txt ]; then
        NEWER=$( find /usr/share/cups -name '*ppd.gz' -newer /usr/share/oss/templates/printers.txt )
        if [ "$NEWER" ]; then
                /usr/share/oss/tools/CreatePrinterPpd.pl
        fi
else
        /usr/share/oss/tools/CreatePrinterPpd.pl
fi

#Register the server if not already done
if [ ! -e /etc/zypp/repos.d/OSS.repo -o ! -e /srv/salt/repos.d/salt-packages.repo ]; then
        /usr/share/oss/tools/register.sh
fi

#Create lock dir if not exists
if [ -d /run/lock/oss-api ]; then
        mkdir -p /run/lock/oss-api
fi

#Java path
APP_HOME="/opt/oss-java"

CLASSPATH=$APP_HOME/lib/de.openschoolserver.api-1.0-SNAPSHOT.jar:$APP_HOME/lib/de.openschoolserver.dao-1.0-SNAPSHOT.jar:$APP_HOME/lib/dropwizard-core-1.0.6.jar:$APP_HOME/lib/dropwizard-auth-1.0.6.jar:$APP_HOME/lib/dropwizard-client-1.0.6.jar:$APP_HOME/lib/dropwizard-swagger-1.0.6-1.jar:$APP_HOME/lib/XPluginLib-1.0.1-SNAPSHOT.jar:$APP_HOME/lib/claxssimportlib-1.0.2.jar:$APP_HOME/lib/maven-shade-plugin-2.4.3.jar:$APP_HOME/lib/guava-19.0.jar:$APP_HOME/lib/gson-2.4.jar:$APP_HOME/lib/eclipselink-2.6.0.jar:$APP_HOME/lib/mysql-connector-java-5.1.21.jar:$APP_HOME/lib/ClaXssCoreLib-1.0.2.jar:$APP_HOME/lib/httpclient-4.5.2.jar:$APP_HOME/lib/validation-api-1.1.0.Final.jar:$APP_HOME/lib/fluent-hc-4.5.2.jar:$APP_HOME/lib/dropwizard-util-1.0.6.jar:$APP_HOME/lib/dropwizard-jackson-1.0.6.jar:$APP_HOME/lib/dropwizard-validation-1.0.6.jar:$APP_HOME/lib/dropwizard-configuration-1.0.6.jar:$APP_HOME/lib/dropwizard-logging-1.0.6.jar:$APP_HOME/lib/dropwizard-metrics-1.0.6.jar:$APP_HOME/lib/dropwizard-jersey-1.0.6.jar:$APP_HOME/lib/dropwizard-servlets-1.0.6.jar:$APP_HOME/lib/dropwizard-jetty-1.0.6.jar:$APP_HOME/lib/dropwizard-lifecycle-1.0.6.jar:$APP_HOME/lib/metrics-core-3.1.2.jar:$APP_HOME/lib/metrics-jvm-3.1.2.jar:$APP_HOME/lib/metrics-servlets-3.1.2.jar:$APP_HOME/lib/metrics-healthchecks-3.1.2.jar:$APP_HOME/lib/dropwizard-request-logging-1.0.6.jar:$APP_HOME/lib/argparse4j-0.7.0.jar:$APP_HOME/lib/jetty-setuid-java-1.0.3.jar:$APP_HOME/lib/jersey-client-2.23.2.jar:$APP_HOME/lib/metrics-httpclient-3.1.2.jar:$APP_HOME/lib/jersey-apache-connector-2.23.2.jar:$APP_HOME/lib/dropwizard-assets-1.0.6.jar:$APP_HOME/lib/dropwizard-views-1.0.6.jar:$APP_HOME/lib/dropwizard-views-freemarker-1.0.6.jar:$APP_HOME/lib/jersey-media-multipart-2.23.2.jar:$APP_HOME/lib/swagger-jersey2-jaxrs-1.5.12.jar:$APP_HOME/lib/zip4j-1.3.2.jar:$APP_HOME/lib/opencsv-2.4.jar:$APP_HOME/lib/maven-plugin-api-3.0.jar:$APP_HOME/lib/maven-model-3.0.jar:$APP_HOME/lib/maven-core-3.0.jar:$APP_HOME/lib/maven-compat-3.0.jar:$APP_HOME/lib/maven-artifact-3.0.jar:$APP_HOME/lib/plexus-utils-3.0.22.jar:$APP_HOME/lib/jdom-1.1.jar:$APP_HOME/lib/maven-dependency-tree-2.2.jar:$APP_HOME/lib/commons-io-2.2.jar:$APP_HOME/lib/jdependency-1.1.jar:$APP_HOME/lib/javax.persistence-2.1.0.jar:$APP_HOME/lib/commonj.sdo-2.1.1.jar:$APP_HOME/lib/javax.json-1.0.4.jar:$APP_HOME/lib/javax.mail-api-1.5.6.jar:$APP_HOME/lib/httpcore-4.4.4.jar:$APP_HOME/lib/commons-logging-1.2.jar:$APP_HOME/lib/commons-codec-1.9.jar:$APP_HOME/lib/jsr305-3.0.1.jar:$APP_HOME/lib/joda-time-2.9.4.jar:$APP_HOME/lib/jackson-datatype-guava-2.7.8.jar:$APP_HOME/lib/jackson-datatype-jsr310-2.7.8.jar:$APP_HOME/lib/jackson-datatype-jdk8-2.7.8.jar:$APP_HOME/lib/jackson-module-afterburner-2.7.8.jar:$APP_HOME/lib/jackson-datatype-joda-2.7.8.jar:$APP_HOME/lib/logback-classic-1.1.7.jar:$APP_HOME/lib/hibernate-validator-5.2.4.Final.jar:$APP_HOME/lib/javax.el-3.0.0.jar:$APP_HOME/lib/commons-lang3-3.4.jar:$APP_HOME/lib/metrics-logback-3.1.2.jar:$APP_HOME/lib/jul-to-slf4j-1.7.21.jar:$APP_HOME/lib/logback-core-1.1.7.jar:$APP_HOME/lib/log4j-over-slf4j-1.7.21.jar:$APP_HOME/lib/jcl-over-slf4j-1.7.21.jar:$APP_HOME/lib/jetty-util-9.3.9.v20160517.jar:$APP_HOME/lib/jersey-server-2.23.2.jar:$APP_HOME/lib/jersey-metainf-services-2.23.2.jar:$APP_HOME/lib/jersey-bean-validation-2.23.2.jar:$APP_HOME/lib/metrics-jersey2-3.1.2.jar:$APP_HOME/lib/jackson-jaxrs-json-provider-2.7.8.jar:$APP_HOME/lib/jersey-container-servlet-2.23.2.jar:$APP_HOME/lib/jetty-server-9.3.9.v20160517.jar:$APP_HOME/lib/jetty-webapp-9.3.9.v20160517.jar:$APP_HOME/lib/jetty-continuation-9.3.9.v20160517.jar:$APP_HOME/lib/metrics-annotation-3.1.2.jar:$APP_HOME/lib/metrics-jetty9-3.1.2.jar:$APP_HOME/lib/jetty-servlet-9.3.9.v20160517.jar:$APP_HOME/lib/jetty-servlets-9.3.9.v20160517.jar:$APP_HOME/lib/jetty-http-9.3.9.v20160517.jar:$APP_HOME/lib/metrics-json-3.1.2.jar:$APP_HOME/lib/logback-access-1.1.7.jar:$APP_HOME/lib/javax.ws.rs-api-2.0.1.jar:$APP_HOME/lib/jersey-common-2.23.2.jar:$APP_HOME/lib/hk2-api-2.5.0-b05.jar:$APP_HOME/lib/javax.inject-2.5.0-b05.jar:$APP_HOME/lib/hk2-locator-2.5.0-b05.jar:$APP_HOME/lib/freemarker-2.3.23.jar:$APP_HOME/lib/mimepull-1.9.6.jar:$APP_HOME/lib/swagger-jaxrs-1.5.12.jar:$APP_HOME/lib/sisu-inject-plexus-1.4.2.jar:$APP_HOME/lib/maven-settings-3.0.jar:$APP_HOME/lib/maven-settings-builder-3.0.jar:$APP_HOME/lib/maven-repository-metadata-3.0.jar:$APP_HOME/lib/maven-model-builder-3.0.jar:$APP_HOME/lib/maven-aether-provider-3.0.jar:$APP_HOME/lib/aether-impl-1.7.jar:$APP_HOME/lib/aether-api-1.7.jar:$APP_HOME/lib/aether-util-1.7.jar:$APP_HOME/lib/plexus-interpolation-1.14.jar:$APP_HOME/lib/plexus-classworlds-2.2.3.jar:$APP_HOME/lib/plexus-component-annotations-1.5.5.jar:$APP_HOME/lib/plexus-sec-dispatcher-1.3.jar:$APP_HOME/lib/wagon-provider-api-1.0-beta-6.jar:$APP_HOME/lib/aether-util-0.9.0.M2.jar:$APP_HOME/lib/asm-analysis-5.0.4.jar:$APP_HOME/lib/asm-util-5.0.4.jar:$APP_HOME/lib/jboss-logging-3.2.1.Final.jar:$APP_HOME/lib/classmate-1.1.0.jar:$APP_HOME/lib/snakeyaml-1.15.jar:$APP_HOME/lib/jersey-media-jaxb-2.23.2.jar:$APP_HOME/lib/javax.annotation-api-1.2.jar:$APP_HOME/lib/jackson-jaxrs-base-2.7.8.jar:$APP_HOME/lib/jackson-module-jaxb-annotations-2.7.8.jar:$APP_HOME/lib/javax.servlet-api-3.1.0.jar:$APP_HOME/lib/jetty-io-9.3.9.v20160517.jar:$APP_HOME/lib/jetty-xml-9.3.9.v20160517.jar:$APP_HOME/lib/jetty-security-9.3.9.v20160517.jar:$APP_HOME/lib/jersey-guava-2.23.2.jar:$APP_HOME/lib/osgi-resource-locator-1.0.1.jar:$APP_HOME/lib/hk2-utils-2.5.0-b05.jar:$APP_HOME/lib/aopalliance-repackaged-2.5.0-b05.jar:$APP_HOME/lib/javassist-3.20.0-GA.jar:$APP_HOME/lib/swagger-core-1.5.12.jar:$APP_HOME/lib/reflections-0.9.10.jar:$APP_HOME/lib/sisu-inject-bean-1.4.2.jar:$APP_HOME/lib/aether-spi-1.7.jar:$APP_HOME/lib/plexus-cipher-1.4.jar:$APP_HOME/lib/javax.inject-1.jar:$APP_HOME/lib/swagger-models-1.5.12.jar:$APP_HOME/lib/annotations-2.0.1.jar:$APP_HOME/lib/sisu-guice-2.1.7-noaop.jar:$APP_HOME/lib/swagger-annotations-1.5.12.jar:$APP_HOME/lib/slf4j-api-1.7.21.jar:$APP_HOME/lib/asm-5.0.4.jar:$APP_HOME/lib/asm-commons-5.0.4.jar:$APP_HOME/lib/asm-tree-5.0.4.jar:$APP_HOME/lib/jackson-annotations-2.8.4.jar:$APP_HOME/lib/jersey-container-servlet-core-2.23.2.jar:$APP_HOME/lib/jackson-databind-2.8.4.jar:$APP_HOME/lib/jackson-dataformat-yaml-2.8.4.jar:$APP_HOME/lib/jackson-core-2.8.4.jar
touch /var/log/oss-api.log
chmod 600 /var/log/oss-api.log
exec java -Dfile.encoding=UTF-8 -Duser.country=US -Duser.language=en -Duser.variant -cp $CLASSPATH de.openschoolserver.api.ServerApplication server /opt/oss-java/conf/config.yml >> /var/log/oss-api.log 2>&1

