From e95bc9423fe1de8ce5d83901d5b1fe8e69752ab2 Mon Sep 17 00:00:00 2001
From: boli <boli@localhost>
Date: Thu, 03 Jan 2008 17:51:53 +0000
Subject: [PATCH] Fixed the config change listeners for all log publishers so they will prevent changing the log file permissions to an invalid value. The listeners will now reject changes that will prevent OpenDS from writing to the log files.
---
opends/src/server/org/opends/server/loggers/TextAccessLogPublisher.java | 41 ++++++++++++++++++++++++-----------------
1 files changed, 24 insertions(+), 17 deletions(-)
diff --git a/opends/src/server/org/opends/server/loggers/TextAccessLogPublisher.java b/opends/src/server/org/opends/server/loggers/TextAccessLogPublisher.java
index 8ab5c89..37b810e 100644
--- a/opends/src/server/org/opends/server/loggers/TextAccessLogPublisher.java
+++ b/opends/src/server/org/opends/server/loggers/TextAccessLogPublisher.java
@@ -22,7 +22,7 @@
* CDDL HEADER END
*
*
- * Portions Copyright 2006-2007 Sun Microsystems, Inc.
+ * Portions Copyright 2006-2008 Sun Microsystems, Inc.
*/
package org.opends.server.loggers;
import org.opends.messages.Message;
@@ -34,6 +34,7 @@
import org.opends.server.admin.server.ConfigurationChangeListener;
import org.opends.server.admin.std.server.FileBasedAccessLogPublisherCfg;
+import org.opends.server.admin.std.server.AccessLogPublisherCfg;
import org.opends.server.api.*;
import org.opends.server.config.ConfigException;
import org.opends.server.core.AbandonOperation;
@@ -96,6 +97,17 @@
/**
* {@inheritDoc}
*/
+ public boolean isConfigurationAcceptable(AccessLogPublisherCfg configuration,
+ List<Message> unacceptableReasons)
+ {
+ FileBasedAccessLogPublisherCfg config =
+ (FileBasedAccessLogPublisherCfg) configuration;
+ return isConfigurationChangeAcceptable(config, unacceptableReasons);
+ }
+
+ /**
+ * {@inheritDoc}
+ */
public void initializeAccessLogPublisher(
FileBasedAccessLogPublisherCfg config)
throws ConfigException, InitializationException
@@ -184,30 +196,25 @@
// Make sure the permission is valid.
try
{
- if(!currentConfig.getLogFilePermissions().equalsIgnoreCase(
- config.getLogFilePermissions()))
+ FilePermission filePerm =
+ FilePermission.decodeUNIXMode(config.getLogFilePermissions());
+ if(!filePerm.isOwnerWritable())
{
- FilePermission.decodeUNIXMode(config.getLogFilePermissions());
- }
- if(!currentConfig.getLogFile().equalsIgnoreCase(config.getLogFile()))
- {
- File logFile = getFileForPath(config.getLogFile());
- if(logFile.createNewFile())
- {
- logFile.delete();
- }
+ Message message = ERR_CONFIG_LOGGING_INSANE_MODE.get(
+ config.getLogFilePermissions());
+ unacceptableReasons.add(message);
+ return false;
}
}
- catch(Exception e)
+ catch(DirectoryException e)
{
- Message message = ERR_CONFIG_LOGGING_CANNOT_CREATE_WRITER.get(
- config.dn().toString(),
- stackTraceToSingleLineString(e));
+ Message message = ERR_CONFIG_LOGGING_MODE_INVALID.get(
+ config.getLogFilePermissions(), String.valueOf(e));
unacceptableReasons.add(message);
return false;
}
- return isConfigurationAcceptable(config, unacceptableReasons);
+ return true;
}
/**
--
Gitblit v1.10.0