From 7f2ba639f89f5502119b722696261b97c1c38319 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.

---
 opendj-sdk/opends/src/server/org/opends/server/loggers/debug/TextDebugLogPublisher.java |   43 +++++++++++++++++++++++++++----------------
 1 files changed, 27 insertions(+), 16 deletions(-)

diff --git a/opendj-sdk/opends/src/server/org/opends/server/loggers/debug/TextDebugLogPublisher.java b/opendj-sdk/opends/src/server/org/opends/server/loggers/debug/TextDebugLogPublisher.java
index ecf600e..7b669e9 100644
--- a/opendj-sdk/opends/src/server/org/opends/server/loggers/debug/TextDebugLogPublisher.java
+++ b/opendj-sdk/opends/src/server/org/opends/server/loggers/debug/TextDebugLogPublisher.java
@@ -38,6 +38,7 @@
 import static org.opends.server.util.ServerConstants.PROPERTY_DEBUG_TARGET;
 import org.opends.server.admin.std.server.DebugTargetCfg;
 import org.opends.server.admin.std.server.FileBasedDebugLogPublisherCfg;
+import org.opends.server.admin.std.server.DebugLogPublisherCfg;
 import org.opends.server.admin.std.meta.DebugLogPublisherCfgDefn;
 import org.opends.server.admin.server.ConfigurationChangeListener;
 import org.opends.server.admin.server.ConfigurationDeleteListener;
@@ -48,6 +49,10 @@
     ERR_CONFIG_LOGGING_CANNOT_CREATE_WRITER;
 import static org.opends.messages.ConfigMessages.
    ERR_CONFIG_LOGGING_CANNOT_OPEN_FILE;
+import static org.opends.messages.ConfigMessages.
+    ERR_CONFIG_LOGGING_INSANE_MODE;
+import static org.opends.messages.ConfigMessages.
+    ERR_CONFIG_LOGGING_MODE_INVALID;
 
 
 import java.util.*;
@@ -120,6 +125,17 @@
   /**
    * {@inheritDoc}
    */
+  public boolean isConfigurationAcceptable(DebugLogPublisherCfg configuration,
+                                           List<Message> unacceptableReasons)
+  {
+    FileBasedDebugLogPublisherCfg config =
+        (FileBasedDebugLogPublisherCfg) configuration;
+    return isConfigurationChangeAcceptable(config, unacceptableReasons);
+  }
+
+  /**
+   * {@inheritDoc}
+   */
   public void initializeDebugLogPublisher(FileBasedDebugLogPublisherCfg config)
       throws ConfigException, InitializationException
   {
@@ -237,30 +253,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