<?xml version="1.0"?>
<!DOCTYPE project [
<!--

    Copyright (c) 2017, 2018 Oracle and/or its affiliates. All rights reserved.

    This program and the accompanying materials are made available under the
    terms of the Eclipse Public License v. 2.0, which is available at
    http://www.eclipse.org/legal/epl-2.0.

    This Source Code may also be made available under the following Secondary
    Licenses when the conditions for such availability set forth in the
    Eclipse Public License v. 2.0 are satisfied: GNU General Public License,
    version 2 with the GNU Classpath Exception, which is available at
    https://www.gnu.org/software/classpath/license.html.

    SPDX-License-Identifier: EPL-2.0 OR GPL-2.0 WITH Classpath-exception-2.0

-->

<!ENTITY commonSetup SYSTEM "file:./../../../config/properties.xml">
<!ENTITY commonBuild SYSTEM "file:./../../../config/common.xml">
<!ENTITY commonRun SYSTEM "file:./../../../config/run.xml">
<!ENTITY commonSecurity SYSTEM "file:./../common.xml">
<!ENTITY testProperties SYSTEM "./build.properties">
]>


<project name="cert-realm-custom-loginmodule" basedir="." default="usage">

    &commonSetup;
    &commonBuild;
    &commonRun;
    &commonSecurity;
    &testProperties;

    <target name="all" depends="build, setup, deploy, run, undeploy, unsetup"/>
    <target name="clean" depends="init-common">
        <delete dir="${build.classes.dir}"/>
        <delete dir="${assemble.dir}"/>
    </target>

    <target name="compile" depends="clean">
        <mkdir dir="build"/>
        <javac srcdir="." destdir="./build" classpath="${env.APS_HOME}/lib/reporter.jar"
            includes="WebSSLClient.java"/>
    </target>

    <target name="build" depends="compile">
        <property name="hasWebclient" value="yes"/>
        <antcall target="webclient-war-common">
            <param name="hasWebclient" value="yes" />
        </antcall>
        <antcall target="compile-common">
            <param name="src" value="src"/>
        </antcall>
        <mkdir dir="${assemble.dir}"/>
        <jar jarfile="${assemble.dir}/test-${appname}.jar" excludes="tmp/**">
            <fileset dir="${build.classes.dir}"/>
        </jar>
    </target>

    <target name="build-publish-war" depends="build, publish-war-common" />

    <target name="deploy" depends="init-common,build">
        <antcall target="deploy-war-common"/>
    </target>

    <target name="re-deploy" depends="init-common,build">
        <antcall target="deploy-war-common"/>
    </target>

    <target name="run" depends="init-common,init-security-util">
        <java classname="devtests.security.WebSSLClient">
            <sysproperty key="javax.net.debug1" value="ssl,handshake,data,trustmanager"   />
            <sysproperty key="sun.security.ssl.allowUnsafeRenegotiation" value="true"   />
            <arg value="${s1asCN}"/>
            <arg value="${https.port}"/>
            <arg value="${contextroot}"/>
            <arg value="${mykeystore.db.file}"/>
            <arg value="${mytruststore.db.file}"/>
            <arg value="${ssl.password}"/>
            <classpath>
                <pathelement location="${env.APS_HOME}/lib/reporter.jar"/>
                <pathelement location="./build"/>
            </classpath>
        </java>
    </target>

    <target name="undeploy" depends="init-common">
        <antcall target="undeploy-war-common"/>
    </target>

    <target name="usage">
        <antcall target="usage-common"/>
    </target>

    <target name="setup" depends="init-common,prepare-store-common">
        <antcall target="env-check" />
        <copy file="${assemble.dir}/test-${appname}.jar"
            todir="${env.S1AS_HOME}/lib"/>
        <copy file="${admin.domain.dir}/${admin.domain}/config/login.conf"
            tofile="${admin.domain.dir}/${admin.domain}/config/login.conf.ORIG"/>
        <concat destfile="${admin.domain.dir}/${admin.domain}/config/login.conf" append="true"><![CDATA[certRealm {
        com.sun.s1asdev.security.certrealm.lm.CertificateLM required;
};]]>
        </concat>
        <antcall target="restart-server-instance-common"/>
        <antcall target="asadmin-common">
            <param name="admin.command"
                   value="set" />
            <param name="as.props" value="${as.props}"/>
            <param name="operand.props"
                   value="configs.config.server-config.security-service.auth-realm.certificate.property.jaas-context=certRealm" />
        </antcall>
    </target>

    <target name="unsetup">
        <antcall target="restore"/>
    </target>

    <target name="restore" depends="init-common" >
        <antcall target="asadmin-common-ignore-fail">
            <param name="admin.command"
                   value="set" />
            <param name="as.props" value="${as.props}"/>
            <param name="operand.props"
                   value="configs.config.server-config.security-service.auth-realm.certificate.property.jaas-context=" />
        </antcall>
        <antcall target="remove-store-common"/>
        <move file="${admin.domain.dir}/${admin.domain}/config/login.conf.ORIG"
            tofile="${admin.domain.dir}/${admin.domain}/config/login.conf"/>
        <delete file="${env.S1AS_HOME}/lib/test-${appname}.jar" failonerror="false"/>
        <antcall target="restart-server-instance-common"/>
    </target>

</project>
