Skip to content

Commit 191be03

Browse files
Add safe checks and make sure log4j configuration has log4j2 format
1 parent f0a0936 commit 191be03

File tree

2 files changed

+37
-0
lines changed

2 files changed

+37
-0
lines changed

debian/cloudstack-management.postinst

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -59,6 +59,33 @@ if [ "$1" = configure ]; then
5959
chown -R cloud:cloud /usr/share/cloudstack-management/templates
6060
find /usr/share/cloudstack-management/templates -type d -exec chmod 0770 {} \;
6161

62+
LOGFILE="${CONFDIR}/log4j-cloud.xml"
63+
64+
# Detect if current file is old Log4j1 format
65+
if grep -q "<log4j:configuration" "$LOGFILE" 2>/dev/null; then
66+
echo "Old Log4j1 format detected in $LOGFILE"
67+
68+
BACKUP_SUFFIXES=".rpmnew .dpkg-new .dpkg-dist"
69+
for sfx in $BACKUP_SUFFIXES; do
70+
NEWFILE="${LOGFILE}${sfx}"
71+
if [ -f "$NEWFILE" ]; then
72+
echo "Found new version candidate: $NEWFILE"
73+
74+
# Verify that the candidate actually has Log4j2 syntax
75+
if grep -q "<Configuration" "$NEWFILE" 2>/dev/null; then
76+
echo "Verified Log4j2 format in $NEWFILE — applying update."
77+
cp -f "$NEWFILE" "$LOGFILE"
78+
mv "$NEWFILE" "${NEWFILE}.bak.$(date +%F_%H-%M-%S)"
79+
echo "Replaced old Log4j1 config with Log4j2 version."
80+
break
81+
else
82+
echo "WARNING: $NEWFILE does not appear to be Log4j2 format — skipping."
83+
fi
84+
fi
85+
done
86+
else
87+
echo "Log4j2 format already present — no action needed."
88+
fi
6289
ln -sf ${CONFDIR}/log4j-cloud.xml ${CONFDIR}/log4j2.xml
6390

6491
# Add jdbc MySQL driver settings to db.properties if not present

debian/cloudstack-management.preinst

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -29,4 +29,14 @@ if [ "$1" = upgrade ]; then
2929
rm -f /usr/share/cloudstack-management/work
3030
rm -f /etc/default/cloudstack-management
3131
fi
32+
33+
if [ -L "/etc/cloudstack/management/log4j.xml" ]; then
34+
echo "Removing existing /etc/cloudstack/management/log4j.xml, symlink will again be created during post install"
35+
rm -f /etc/cloudstack/management/log4j.xml
36+
fi
37+
38+
if [ -L "/etc/cloudstack/management/log4j2.xml" ]; then
39+
echo "Removing existing /etc/cloudstack/management/log4j2.xml, symlink will again be created during post install"
40+
rm -f /etc/cloudstack/management/log4j2.xml
41+
fi
3242
fi

0 commit comments

Comments
 (0)