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/debug/TextDebugLogPublisher.java |   43 +++++++++++++++++++++++++++----------------
 1 files changed, 27 insertions(+), 16 deletions(-)

diff --git a/opends/src/server/org/opends/server/loggers/debug/TextDebugLogPublisher.java b/opends/src/server/org/opends/server/loggers/debug/TextDebugLogPublisher.java
index ecf600e..7b669e9 100644
--- a/opends/src/server/org/opends/server/loggers/debug/TextDebugLogPublisher.java
+++ b/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