Skip to content

Commit f975264

Browse files
committed
save
1 parent c438008 commit f975264

File tree

16 files changed

+379
-83
lines changed

16 files changed

+379
-83
lines changed

.env

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
CAS_HOSTNAME=http://127.0.0.1:8080
2+
LDAP_HOSTNAME=ldap://10.242.242.15:389
3+
LDAP_SEARCH_FILTER="(&(uid={user})(objectclass=sogxuser))"
4+
LDAP_BASE=dc=lyon,dc=archi,dc=fr
5+
LDAP_ATTRIBUTES_LIST=cn,givenName,mail,sn,uid,uid:username
6+
LDAP_BIND_DN=CN=wifi wifi,CN=internal,DC=lyon,DC=archi,DC=fr
7+
LDAP_BIND_CREDENTIAL=wifi340
8+

.gitignore

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1,2 @@
1-
.idea/
1+
.idea/
2+
.DS_Store

Dockerfile

Lines changed: 35 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
ARG BASE_IMAGE="eclipse-temurin:11-jdk"
2+
ARG PROD_IMAGE="tomcat:9-jdk11"
23
ARG EXT_BUILD_COMMANDS=""
34
ARG EXT_BUILD_OPTIONS=""
45

@@ -14,29 +15,48 @@ WORKDIR /tmp/cas-overlay
1415

1516
COPY src/ /tmp/cas-overlay/
1617

18+
RUN ./gradlew createTheme -Ptheme=custom
19+
1720
RUN ./gradlew clean build $EXT_BUILD_COMMANDS --parallel --no-daemon $EXT_BUILD_OPTIONS
1821

1922
RUN ls -la /tmp/cas-overlay/build/libs/cas.war
2023

21-
RUN apt-get clean && \
22-
rm -rf /var/lib/apt/lists/* /var/tmp/*
24+
RUN ./gradlew unzipWAR
25+
26+
RUN ./gradlew unzip
2327

24-
FROM $BASE_IMAGE as cas
28+
RUN ./gradlew exportConfigMetadata
2529

26-
RUN mkdir -p /etc/cas && \
27-
cd /etc/cas && \
28-
keytool -genkey -noprompt -keystore thekeystore -storepass changeit -keypass changeit -validity 3650 \
29-
-keysize 2048 -keyalg RSA -dname "CN=localhost, OU=LT, O=Libertech, L=Somewhere, S=LT, C=FR"
30-
RUN if [ -r /etc/cas/config/certificate.pem ]; then \
31-
keytool -noprompt -importcert -keystore /etc/ssl/certs/java/cacerts -storepass changeit \
32-
-file /etc/cas/config/certificate.pem -alias "casclient"; \
33-
fi
30+
RUN mkdir /tmp/tomcat
3431

35-
WORKDIR /data
32+
RUN ls /tmp/cas-overlay/build/app
33+
RUN mv /tmp/cas-overlay/build/app /tmp/tomcat/cas
3634

37-
COPY --from=overlay /tmp/cas-overlay/build/libs/cas.war .
35+
36+
37+
RUN apt-get clean && \
38+
rm -rf /var/lib/apt/lists/* /var/tmp/*
39+
40+
FROM $PROD_IMAGE as cas
41+
42+
RUN apt-get update && \
43+
apt-get install -y gettext-base
44+
RUN apt-get clean && \
45+
rm -rf /var/lib/apt/lists/* /var/tmp/*
46+
RUN mkdir -p /data/logs
47+
WORKDIR /data/logs
48+
RUN mkdir -p /etc/cas/docs
49+
COPY --from=overlay /tmp/tomcat /usr/local/tomcat/webapps
50+
COPY --from=overlay /tmp/cas-overlay/build/cas-resources/static/css/cas.css /usr/local/tomcat/webapps/cas/WEB-INF/classes/static/themes/custom/css/
51+
COPY --from=overlay /tmp/cas-overlay/build/cas-resources/static/js/cas.js /usr/local/tomcat/webapps/cas/WEB-INF/classes/static/themes/custom/js/
52+
COPY --from=overlay /tmp/cas-overlay/build/cas-resources/static/favicon.ico /usr/local/tomcat/webapps/cas/WEB-INF/classes/static/themes/custom/images/
53+
COPY --from=overlay /tmp/cas-overlay/build/cas-resources/static/images/cas-logo.png /usr/local/tomcat/webapps/cas/WEB-INF/classes/static/themes/custom/images/mylogo.png
54+
COPY --from=overlay /tmp/cas-overlay/config-metadata.properties /etc/cas/docs
55+
RUN mkdir /data/templates
56+
COPY --from=overlay /tmp/cas-overlay/build/cas-resources/templates/ /data/templates
57+
58+
COPY /data/templates/ /usr/local/tomcat/webapps/cas/WEB-INF/classes//templates/custom
3859
COPY rootfs /
3960

40-
EXPOSE 8080 8443
61+
ENTRYPOINT "/entrypoint.sh"
4162

42-
ENTRYPOINT ["java", "-server", "-noverify", "-Xmx2048M", "-jar", "cas.war"]

docker-compose.yml

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
version: "3"
2+
services:
3+
dc:
4+
container_name: dc
5+
build: .
6+
ports:
7+
- "8080:8080"
8+
volumes:
9+
- "./CAS:/etc/cas"
10+
env_file: .env

rootfs/data/etc/cas.properties

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
cas.server.name=${CAS_HOSTNAME}
2+
cas.server.prefix=${cas.server.name}/cas
3+
logging.config: file:/etc/cas/config/log4j2.xml
4+
5+
cas.authn.accept.users=
6+
cas.view.template-prefixes=classpath:templates,file:/etc/cas/templates/
7+
spring.thymeleaf.cache=false
8+
cas.service-registry.json.location=file:/etc/cas/services
9+
cas.theme.default-theme-name=custom
10+
cas.authn.oidc.core.issuer=${cas.server.name}/cas/oidc
11+
12+
#LDAP settings
13+
cas.authn.ldap\[0\].providerClass=org.ldaptive.provider.unboundid.UnboundIDProvider
14+
cas.authn.ldap\[0\].type=AUTHENTICATED
15+
cas.authn.ldap\[0\].useSsl=false
16+
cas.authn.ldap\[0\].ldapUrl=${LDAP_HOSTNAME}
17+
cas.authn.ldap\[0\].baseDn=${LDAP_BASE}
18+
cas.authn.ldap\[0\].subtreeSearch=true
19+
cas.authn.ldap\[0\].searchFilter=${LDAP_SEARCH_FILTER}
20+
cas.authn.ldap\[0\].principalAttributeList=${LDAP_ATTRIBUTES_LIST}
21+
cas.authn.ldap\[0\].bindDn=${LDAP_BIND_DN}
22+
cas.authn.ldap\[0\].bindCredential=${LDAP_BIND_CREDENTIAL}
23+

rootfs/data/etc/log4j2.xml

Lines changed: 163 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,163 @@
1+
<?xml version="1.0" encoding="UTF-8" ?>
2+
<!--
3+
All loggers are asynchronous because of log42.component.properties in cas-server-core-logging-api.
4+
Set -Dlog4j2.contextSelector=org.apache.logging.log4j.core.selector.BasicContextSelector or override log42.component.properties to turn off async
5+
-->
6+
<!-- Specify the refresh internal in seconds. -->
7+
<Configuration monitorInterval="5" packages="org.apereo.cas.logging">
8+
<Properties>
9+
<Property name="baseDir">/data/logs/cas</Property>
10+
<Property name="cas.log.level">info</Property>
11+
<Property name="spring.webflow.log.level">warn</Property>
12+
<Property name="spring.security.log.level">info</Property>
13+
<Property name="spring.cloud.log.level">warn</Property>
14+
<Property name="spring.web.log.level">warn</Property>
15+
<Property name="spring.boot.log.level">warn</Property>
16+
<Property name="ldap.log.level">warn</Property>
17+
<Property name="pac4j.log.level">warn</Property>
18+
<Property name="opensaml.log.level">warn</Property>
19+
<Property name="hazelcast.log.level">warn</Property>
20+
<Property name="log.console.stacktraces">true</Property>
21+
<Property name="log.file.stacktraces">false</Property>
22+
<!-- -Dlog.stacktraceappender=null to disable stacktrace log -->
23+
<Property name="log.stacktraceappender">casStackTraceFile</Property>
24+
<Property name="log.include.location">false</Property>
25+
</Properties>
26+
<Appenders>
27+
<Null name="null" />
28+
29+
<Console name="console" target="SYSTEM_OUT">
30+
<PatternLayout pattern="%highlight{%d %p [%c] - &lt;%m&gt;}%n" alwaysWriteExceptions="${sys:log.console.stacktraces}"/>
31+
</Console>
32+
33+
<RollingFile name="file" fileName="${baseDir}/cas.log" append="true"
34+
filePattern="${baseDir}/cas-%d{yyyy-MM-dd-HH}-%i.log.gz"
35+
immediateFlush="false">
36+
<PatternLayout pattern="%highlight{%d %p [%c] - &lt;%m&gt;%n}"
37+
alwaysWriteExceptions="${sys:log.file.stacktraces}" />
38+
<Policies>
39+
<OnStartupTriggeringPolicy />
40+
<SizeBasedTriggeringPolicy size="10 MB"/>
41+
<TimeBasedTriggeringPolicy />
42+
</Policies>
43+
<DefaultRolloverStrategy max="5" compressionLevel="9">
44+
<Delete basePath="${baseDir}" maxDepth="2">
45+
<IfFileName glob="*/*.log.gz" />
46+
<IfLastModified age="7d" />
47+
</Delete>
48+
</DefaultRolloverStrategy>
49+
</RollingFile>
50+
51+
<RollingFile name="stacktracefile" fileName="${baseDir}/cas_stacktrace.log" append="true"
52+
filePattern="${baseDir}/cas_stacktrace-%d{yyyy-MM-dd-HH}-%i.log.gz"
53+
immediateFlush="false">
54+
<PatternLayout pattern="%highlight{%d %p [%c] - &lt;%m&gt;%n}" />
55+
<Policies>
56+
<OnStartupTriggeringPolicy />
57+
<SizeBasedTriggeringPolicy size="10 MB"/>
58+
<TimeBasedTriggeringPolicy />
59+
</Policies>
60+
<DefaultRolloverStrategy max="5" compressionLevel="9">
61+
<Delete basePath="${baseDir}" maxDepth="2">
62+
<IfFileName glob="*/*.log.gz" />
63+
<IfLastModified age="7d" />
64+
</Delete>
65+
</DefaultRolloverStrategy>
66+
</RollingFile>
67+
68+
<RollingFile name="auditlogfile" fileName="${baseDir}/cas_audit.log" append="true"
69+
filePattern="${baseDir}/cas_audit-%d{yyyy-MM-dd-HH}-%i.log.gz"
70+
immediateFlush="false">
71+
<PatternLayout pattern="%highlight{%d %p [%c] - %m%n}" />
72+
<Policies>
73+
<OnStartupTriggeringPolicy />
74+
<SizeBasedTriggeringPolicy size="10 MB"/>
75+
<TimeBasedTriggeringPolicy />
76+
</Policies>
77+
<DefaultRolloverStrategy max="5" compressionLevel="9">
78+
<Delete basePath="${baseDir}" maxDepth="2">
79+
<IfFileName glob="*/*.log.gz" />
80+
<IfLastModified age="7d" />
81+
</Delete>
82+
</DefaultRolloverStrategy>
83+
</RollingFile>
84+
85+
<CasAppender name="casAudit">
86+
<AppenderRef ref="auditlogfile" />
87+
</CasAppender>
88+
<CasAppender name="casFile">
89+
<AppenderRef ref="file" />
90+
</CasAppender>
91+
<CasAppender name="casStackTraceFile">
92+
<AppenderRef ref="stacktracefile" />
93+
<ExceptionOnlyFilter/>
94+
</CasAppender>
95+
<CasAppender name="casConsole">
96+
<AppenderRef ref="console" />
97+
</CasAppender>
98+
</Appenders>
99+
<Loggers>
100+
<Logger name="org.apereo.cas" level="${sys:cas.log.level}" />
101+
<Logger name="org.apereo.cas.services" level="${sys:cas.log.level}" />
102+
<Logger name="org.apereo.spring" level="${sys:cas.log.level}" />
103+
<Logger name="org.apereo.services.persondir" level="${sys:cas.log.level}" />
104+
<Logger name="org.apereo.cas.web.flow" level="${sys:cas.log.level}" />
105+
<Logger name="org.apereo.cas.web.CasWebApplication" level="${sys:cas.log.level}"/>
106+
107+
<Logger name="org.apereo.inspektr.audit.support" additivity="false" level="info">
108+
<AppenderRef ref="casConsole"/>
109+
<AppenderRef ref="casFile"/>
110+
<AppenderRef ref="casAudit"/>
111+
</Logger>
112+
113+
<Logger name="org.springframework.boot" level="${sys:spring.boot.log.level}" />
114+
<Logger name="org.springframework.boot.context.embedded" level="info" />
115+
<Logger name="org.springframework.boot.autoconfigure.security.servlet.UserDetailsServiceAutoConfiguration" level="${sys:spring.security.log.level}" />
116+
<Logger name="org.springframework.boot.autoconfigure.security" level="${sys:spring.security.log.level}" />
117+
<Logger name="org.springframework.boot.devtools" level="debug" />
118+
119+
<Logger name="org.springframework" level="warn" />
120+
<Logger name="org.springframework.webflow" level="${sys:spring.webflow.log.level}"/>
121+
<Logger name="org.springframework.aop" level="warn" />
122+
<Logger name="org.springframework.session" level="warn"/>
123+
<Logger name="org.springframework.scheduling" level="info"/>
124+
<Logger name="org.springframework.cloud.vault" level="warn" />
125+
<Logger name="org.springframework.web.client" level="warn" />
126+
<Logger name="org.springframework.security" level="${sys:spring.security.log.level}"/>
127+
<Logger name="org.springframework.security.config.annotation.web.builders" level="error" />
128+
<Logger name="org.springframework.cloud" level="${sys:spring.cloud.log.level}"/>
129+
<Logger name="org.springframework.amqp" level="error" />
130+
<Logger name="org.springframework.integration" level="warn"/>
131+
<Logger name="org.springframework.messaging" level="warn"/>
132+
<Logger name="org.springframework.web" level="${sys:spring.web.log.level}"/>
133+
<Logger name="org.springframework.orm.jpa" level="warn"/>
134+
<Logger name="org.springframework.scheduling" level="warn"/>
135+
<Logger name="org.springframework.context.annotation" level="off"/>
136+
<Logger name="org.springframework.web.socket" level="warn"/>
137+
<Logger name="org.springframework.boot.diagnostics.LoggingFailureAnalysisReporter" level="trace"/>
138+
139+
<Logger name="com.couchbase" level="warn" />
140+
<Logger name="org.apache" level="error"/>
141+
<Logger name="com.netflix" level="warn"/>
142+
<Logger name="org.quartz" level="warn"/>
143+
<Logger name="org.thymeleaf" level="warn"/>
144+
<Logger name="org.pac4j" level="${sys:pac4j.log.level}"/>
145+
146+
<Logger name="org.opensaml" level="${sys:opensaml.log.level}"/>
147+
<Logger name="PROTOCOL_MESSAGE" level="${sys:opensaml.log.level}" />
148+
149+
<Logger name="net.sf.ehcache" level="warn"/>
150+
<Logger name="net.jradius" level="warn"/>
151+
<Logger name="org.ldaptive" level="${sys:ldap.log.level}"/>
152+
<Logger name="com.hazelcast" level="${sys:hazelcast.log.level}" />
153+
<Logger name="org.jasig.spring" level="warn" />
154+
<Logger name="org.apache.cxf" level="warn" />
155+
<Logger name="org.apache.http" level="warn" />
156+
157+
<Root level="warn" includeLocation="${sys:log.include.location}">
158+
<AppenderRef ref="casFile"/>
159+
<AppenderRef ref="casConsole"/>
160+
<AppenderRef ref="${sys:log.stacktraceappender}"/>
161+
</Root>
162+
</Loggers>
163+
</Configuration>

rootfs/entrypoint.sh

Lines changed: 41 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,41 @@
1+
#!/bin/bash
2+
echo "-----setup--------"
3+
echo "directories creation"
4+
mkdir -p /etc/cas/config 2>/dev/null
5+
mkdir -p /etc/cas/themes 2>/dev/null
6+
mkdir -p /etc/cas/saml 2>/dev/null
7+
mkdir -p /etc/cas/services 2>/dev/null
8+
if [ ! -f /etc/cas/config/cas.properties ] ; then
9+
echo "create cas.properties"
10+
cat /data/etc/cas.properties|envsubst >/etc/cas/config/cas.properties
11+
fi
12+
if [ ! -f /etc/cas/config/log4j2.xml ]; then
13+
cp data/etc/log4j2.xml /etc/cas/config/log4j2.xml
14+
fi
15+
if [ ! -f /etc/cas/thekeystore ] ; then
16+
echo "generate keystore"
17+
cd /etc/cas
18+
CN=`echo -n $CAS_HOSTNAME|md5sum|cut -f1 -d " "`
19+
keytool -genkey -noprompt -keystore thekeystore -storepass changeit -keypass changeit -validity 3650 -keysize 2048 -keyalg RSA -dname "CN=$CN, OU=CERT, O=CAS, C=ORG"
20+
fi
21+
if [ -r /etc/cas/config/certificate.pem ]; then
22+
keytool -noprompt -importcert -keystore /etc/ssl/certs/java/cacerts -storepass changeit -file /etc/cas/config/certificate.pem -alias "casclient"
23+
fi
24+
25+
if [ ! -d /etc/cas/templates/custom ] ; then
26+
mkdir -p /etc/cas/templates/custom 2>/dev/null
27+
cp -r /data/templates/* /etc/cas/templates/custom
28+
fi
29+
30+
if [ ! -d /etc/cas/themes/css ] ; then
31+
echo "Creation themes"
32+
mkdir /etc/cas/themes
33+
cp -r /usr/local/tomcat/webapps/cas/WEB-INF/classes/static/themes/custom/* /etc/cas/themes
34+
else
35+
echo "Update themes"
36+
cp -r /etc/cas/themes/* /usr/local/tomcat/webapps/cas/WEB-INF/classes/static/themes/custom
37+
fi
38+
39+
40+
41+
. /usr/local/tomcat/bin/catalina.sh run

rootfs/etc/cas/config/application.yml

Lines changed: 0 additions & 2 deletions
This file was deleted.

rootfs/etc/cas/config/cas.properties

Lines changed: 0 additions & 57 deletions
This file was deleted.

0 commit comments

Comments
 (0)