myserver-commit
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[myserver-commit] [SCM] GNU MyServer branch, master, updated. v0.9.2-274


From: Giuseppe Scrivano
Subject: [myserver-commit] [SCM] GNU MyServer branch, master, updated. v0.9.2-274-g4465064
Date: Wed, 04 Aug 2010 23:11:34 +0000

This is an automated email from the git hooks/post-receive script. It was
generated because a ref change was pushed to the repository containing
the project "GNU MyServer".

The branch, master has been updated
       via  4465064d83e08af1358e15a3679a125bc4ea99c6 (commit)
      from  8b416844de280703dd1e583efdab9633ae038afe (commit)

Those revisions listed above that are new to this repository have
not appeared on any other notification email; so we list those
revisions in full, below.

- Log -----------------------------------------------------------------


commit 4465064d83e08af1358e15a3679a125bc4ea99c6
Author: Giuseppe Scrivano <address@hidden>
Date:   Thu Aug 5 01:11:06 2010 +0200

    Notify if an extension is used more than once.

diff --git a/myserver/include/conf/mime/mime_manager.h 
b/myserver/include/conf/mime/mime_manager.h
index 72fa38d..9e0a962 100644
--- a/myserver/include/conf/mime/mime_manager.h
+++ b/myserver/include/conf/mime/mime_manager.h
@@ -50,6 +50,7 @@
 # include <list>
 
 using namespace std;
+class ServerLogger;
 
 struct MimeRecord
 {
@@ -81,6 +82,19 @@ public:
   virtual MimeRecord* getMIME (string const &file)
   {return getMIME (file.c_str ());}
   virtual u_long reload (){return 0;}
+
+  ServerLogger *getLogger ()
+  {
+    return logger;
+  }
+
+  void setLogger (ServerLogger *sl)
+  {
+    logger = sl;
+  }
+
+protected:
+  ServerLogger *logger;
 };
 
 
@@ -106,6 +120,19 @@ public:
   void registerBuilder (string &name, MAKE_HANDLER builder);
   MimeManagerHandler *buildHandler (string &name);
 
+  ServerLogger *getLogger ()
+  {
+    return logger;
+  }
+
+  void setLogger (ServerLogger *sl)
+  {
+    logger = sl;
+  }
+
+protected:
+  ServerLogger *logger;
+
 private:
   HashMap<string, MAKE_HANDLER> builders;
   MimeManagerHandler *defHandler;
diff --git a/myserver/include/server/server.h b/myserver/include/server/server.h
index 1663545..e9a7038 100644
--- a/myserver/include/server/server.h
+++ b/myserver/include/server/server.h
@@ -63,7 +63,17 @@ using namespace std;
 
 class XmlValidator;
 
-class Server : public MulticastRegistry<string, void*, int>
+
+class ServerLogger
+{
+public:
+  virtual int log (LoggingLevel level, const char *fmt, ...) = 0;
+  virtual int log (char const*, LoggingLevel level = MYSERVER_LOG_MSG_INFO) = 
0;
+  virtual int log (string const &str) = 0;
+};
+
+
+class Server : public MulticastRegistry<string, void*, int>, ServerLogger
 {
 public:
 
@@ -127,9 +137,9 @@ public:
   void stop ();
   void finalCleanup ();
   int terminate ();
-  int log (LoggingLevel level, const char *fmt, ...);
-  int log (char const*, LoggingLevel level = MYSERVER_LOG_MSG_INFO);
-  int log (string const &str)
+  virtual int log (LoggingLevel level, const char *fmt, ...);
+  virtual int log (char const*, LoggingLevel level = MYSERVER_LOG_MSG_INFO);
+  virtual int log (string const &str)
   {return log (str.c_str ());};
   int setLogLocation (string);
   u_long getBuffersize ();
diff --git a/myserver/src/conf/mime/mime_manager.cpp 
b/myserver/src/conf/mime/mime_manager.cpp
index e3908e7..1660b4f 100644
--- a/myserver/src/conf/mime/mime_manager.cpp
+++ b/myserver/src/conf/mime/mime_manager.cpp
@@ -53,18 +53,18 @@ MimeRecord::~MimeRecord ()
 /*!
   Add a filter to the list of filters to apply on this MIME type.
   Return zero if the filters was not added.
- */
+*/
 int MimeRecord::addFilter (const char* n, bool acceptDuplicate)
 {
   if (!acceptDuplicate)
-  {
-    list<string>::iterator i = filters.begin ();
-    for (; i != filters.end (); i++)
     {
-      if (!stringcmpi (*i, n))
-        return 0;
+      list<string>::iterator i = filters.begin ();
+      for (; i != filters.end (); i++)
+        {
+          if (!stringcmpi (*i, n))
+            return 0;
+        }
     }
-  }
 
   filters.push_back (n);
   return 1;
@@ -80,18 +80,14 @@ MimeRecord::MimeRecord (MimeRecord& m)
   filters.clear ();
 
   for ( ; i != m.filters.end (); i++)
-  {
     filters.push_back (*i);
-  }
 
   i = m.extensions.begin ();
 
   extensions.clear ();
 
   for ( ; i != m.extensions.end (); i++)
-  {
     filters.push_back (*i);
-  }
 
   selfExecuted = m.selfExecuted;
   mimeType.assign (m.mimeType);
@@ -111,15 +107,13 @@ void MimeRecord::clear ()
   cgiManager.assign ("");
 
   for (list<Regex*>::iterator it = pathRegex.begin ();
-       it != pathRegex.end ();
-       it++)
-  {
+       it != pathRegex.end (); it++)
     delete *it;
-  }
 
   HashMap<string, NodeTree<string>*>::Iterator it = hashedData.begin ();
   for (;it != hashedData.end (); it++)
     delete (*it);
+
   hashedData.clear ();
 
   pathRegex.clear ();
@@ -205,6 +199,7 @@ MimeRecord *MimeManager::getMIME (const char *filename, 
const char *handler)
 void MimeManager::registerHandler (string &name, MimeManagerHandler *handler)
 {
   MimeManagerHandler *old = handlers.put (name, handler);
+  handler->setLogger (getLogger ());
   if (old)
     delete old;
 }
diff --git a/myserver/src/conf/mime/xml_mime_handler.cpp 
b/myserver/src/conf/mime/xml_mime_handler.cpp
index a93348b..eb686e3 100644
--- a/myserver/src/conf/mime/xml_mime_handler.cpp
+++ b/myserver/src/conf/mime/xml_mime_handler.cpp
@@ -46,7 +46,7 @@ void XmlMimeHandler::registerBuilder (MimeManager& manager)
 
 /*!
   Get the name of the used file.
- */
+*/
 const char *XmlMimeHandler::getFilename ()
 {
   return filename.c_str ();
@@ -54,7 +54,7 @@ const char *XmlMimeHandler::getFilename ()
 
 /*!
   Read a MIME record from a XML node.
- */
+*/
 MimeRecord *XmlMimeHandler::readRecord (xmlNodePtr node)
 {
   xmlNodePtr lcur = node->children;
@@ -63,102 +63,102 @@ MimeRecord *XmlMimeHandler::readRecord (xmlNodePtr node)
   MimeRecord *rc = new MimeRecord;
 
   for (attrs = node->properties; attrs; attrs = attrs->next)
-  {
-    if (!xmlStrcmp (attrs->name, (const xmlChar *)"handler") &&
-        attrs->children && attrs->children->content)
-      rc->cmdName.assign ((const char*)attrs->children->content);
-
-    if (!xmlStrcmp (attrs->name, (const xmlChar *)"self") &&
-        attrs->children && attrs->children->content)
-      rc->selfExecuted = xmlStrcmp (attrs->children->content,
-                                    (const xmlChar *)"YES");
-
-    if (!xmlStrcmp (attrs->name, (const xmlChar *)"mime") &&
-        attrs->children && attrs->children->content)
-      rc->mimeType.assign ((const char*)attrs->children->content);
-
-    if (!xmlStrcmp (attrs->name, (const xmlChar *)"param") &&
-        attrs->children && attrs->children->content)
-      rc->cgiManager.assign ((const char*)attrs->children->content);
-  }
+    {
+      if (!xmlStrcmp (attrs->name, (const xmlChar *)"handler") &&
+          attrs->children && attrs->children->content)
+        rc->cmdName.assign ((const char*)attrs->children->content);
+
+      if (!xmlStrcmp (attrs->name, (const xmlChar *)"self") &&
+          attrs->children && attrs->children->content)
+        rc->selfExecuted = xmlStrcmp (attrs->children->content,
+                                      (const xmlChar *)"YES");
+
+      if (!xmlStrcmp (attrs->name, (const xmlChar *)"mime") &&
+          attrs->children && attrs->children->content)
+        rc->mimeType.assign ((const char*)attrs->children->content);
+
+      if (!xmlStrcmp (attrs->name, (const xmlChar *)"param") &&
+          attrs->children && attrs->children->content)
+        rc->cgiManager.assign ((const char*)attrs->children->content);
+    }
 
   for ( ;lcur; lcur = lcur->next)
-  {
-    if (lcur->name && !xmlStrcmp (lcur->name, (const xmlChar *)"EXTENSION"))
     {
-      for (attrs = lcur->properties; attrs; attrs = attrs->next)
-      {
-        if (!xmlStrcmp (attrs->name, (const xmlChar *)"value") &&
-            attrs->children && attrs->children->content)
+      if (lcur->name && !xmlStrcmp (lcur->name, (const xmlChar *)"EXTENSION"))
         {
-          string ext ((const char*)attrs->children->content);
-          rc->extensions.push_back (ext);
+          for (attrs = lcur->properties; attrs; attrs = attrs->next)
+            {
+              if (!xmlStrcmp (attrs->name, (const xmlChar *)"value") &&
+                  attrs->children && attrs->children->content)
+                {
+                  string ext ((const char*)attrs->children->content);
+                  rc->extensions.push_back (ext);
+                }
+            }
         }
-      }
-    }
-
-    if (lcur->name && !xmlStrcmp (lcur->name, (const xmlChar *)"DEFINE"))
-    {
-      const char *name = NULL;
-      const char *value = NULL;
-
-      for (attrs = lcur->properties; attrs; attrs = attrs->next)
-      {
-        if (!xmlStrcmp (attrs->name, (const xmlChar *)"name") &&
-            attrs->children && attrs->children->content)
-          name = (const char*)attrs->children->content;
-
-        if (!xmlStrcmp (attrs->name, (const xmlChar *)"value") &&
-            attrs->children && attrs->children->content)
-          value = (const char*)attrs->children->content;
-      }
-
-      if (name && value)
-      {
-        string key (name);
-        string val (value);
-        NodeTree<string> *nt = new NodeTree<string> (val);
-        rc->hashedData.put (key, nt);
-      }
-    }
 
-    if (lcur->name && !xmlStrcmp (lcur->name, (const xmlChar *)"PATH"))
-    {
-      for (attrs = lcur->properties; attrs; attrs = attrs->next)
-      {
-        if (!xmlStrcmp (attrs->name, (const xmlChar *)"regex") &&
-            attrs->children && attrs->children->content)
+      if (lcur->name && !xmlStrcmp (lcur->name, (const xmlChar *)"DEFINE"))
         {
-          Regex *r = new Regex;
+          const char *name = NULL;
+          const char *value = NULL;
 
-          if (r->compile ((const char*)attrs->children->content, 0))
+          for (attrs = lcur->properties; attrs; attrs = attrs->next)
             {
-              delete r;
-              return NULL;
+              if (!xmlStrcmp (attrs->name, (const xmlChar *)"name") &&
+                  attrs->children && attrs->children->content)
+                name = (const char*)attrs->children->content;
+
+              if (!xmlStrcmp (attrs->name, (const xmlChar *)"value") &&
+                  attrs->children && attrs->children->content)
+                value = (const char*)attrs->children->content;
             }
 
-          rc->pathRegex.push_back (r);
+          if (name && value)
+            {
+              string key (name);
+              string val (value);
+              NodeTree<string> *nt = new NodeTree<string> (val);
+              rc->hashedData.put (key, nt);
+            }
         }
-      }
-    }
 
-    if (lcur->name && !xmlStrcmp (lcur->name, (const xmlChar *)"FILTER"))
-    {
-      for (attrs = lcur->properties; attrs; attrs = attrs->next)
-      {
-        if (!xmlStrcmp (attrs->name, (const xmlChar *)"value") &&
-            attrs->children && attrs->children->content)
-          rc->addFilter ((const char*)attrs->children->content);
-      }
+      if (lcur->name && !xmlStrcmp (lcur->name, (const xmlChar *)"PATH"))
+        {
+          for (attrs = lcur->properties; attrs; attrs = attrs->next)
+            {
+              if (!xmlStrcmp (attrs->name, (const xmlChar *)"regex") &&
+                  attrs->children && attrs->children->content)
+                {
+                  Regex *r = new Regex;
+
+                  if (r->compile ((const char*)attrs->children->content, 0))
+                    {
+                      delete r;
+                      return NULL;
+                    }
+
+                  rc->pathRegex.push_back (r);
+                }
+            }
+        }
+
+      if (lcur->name && !xmlStrcmp (lcur->name, (const xmlChar *)"FILTER"))
+        {
+          for (attrs = lcur->properties; attrs; attrs = attrs->next)
+            {
+              if (!xmlStrcmp (attrs->name, (const xmlChar *)"value") &&
+                  attrs->children && attrs->children->content)
+                rc->addFilter ((const char*)attrs->children->content);
+            }
+        }
     }
-  }
 
   return rc;
 }
 
 /*!
   Reload using the same configuration file.
- */
+*/
 u_long XmlMimeHandler::reload ()
 {
   if (!filename.length ())
@@ -170,7 +170,7 @@ u_long XmlMimeHandler::reload ()
 /*!
   Load the MIME types from a XML file. Returns the number of
   MIME types loaded successfully.
- */
+*/
 u_long XmlMimeHandler::load (const char *fn)
 {
   XmlParser parser;
@@ -191,7 +191,7 @@ u_long XmlMimeHandler::load (const char *fn)
 /*!
   Load the MIME types from a XML parser object. Returns the number
   of MIME types loaded successfully.
- */
+*/
 u_long XmlMimeHandler::load (XmlParser* parser)
 {
   xmlNodePtr node;
@@ -203,15 +203,14 @@ u_long XmlMimeHandler::load (XmlParser* parser)
   node = doc->children->children;
 
   for (; node; node = node->next)
-  {
-    if (xmlStrcmp (node->name, (const xmlChar *)"MIME"))
-      continue;
-
-    MimeRecord *rc = readRecord (node);
+    {
+      if (xmlStrcmp (node->name, (const xmlChar *) "MIME"))
+        continue;
 
-    if (rc)
-      addRecord (rc);
-  }
+      MimeRecord *rc = readRecord (node);
+      if (rc)
+        addRecord (rc);
+    }
 
   /*! Store the loaded status. */
   loaded = true;
@@ -221,7 +220,7 @@ u_long XmlMimeHandler::load (XmlParser* parser)
 
 /*!
   Destroy the object.
- */
+*/
 XmlMimeHandler::~XmlMimeHandler ()
 {
   clean ();
@@ -229,29 +228,30 @@ XmlMimeHandler::~XmlMimeHandler ()
 
 /*!
   Clean the memory allocated by the structure.
- */
+*/
 void XmlMimeHandler::clean ()
 {
   if (loaded)
-  {
-    loaded = false;
-    filename = "";
-    clearRecords ();
-  }
+    {
+      loaded = false;
+      filename = "";
+      clearRecords ();
+    }
 }
 
 /*!
   Constructor of the class.
- */
+*/
 XmlMimeHandler::XmlMimeHandler ()
 {
+  logger = NULL;
   loaded = false;
 }
 
 /*!
   Add a new record.
   \return Return the position for the new record.
- */
+*/
 int XmlMimeHandler::addRecord (MimeRecord *mr)
 {
   u_long position = records.size ();
@@ -266,7 +266,14 @@ int XmlMimeHandler::addRecord (MimeRecord *mr)
 #ifdef MIME_LOWER_CASE
       transform (ext.begin (), ext.end (), ext.begin (), ::tolower);
 #endif
-      extIndex.put (ext, position);
+      if (extIndex.put (ext, position))
+        {
+          ServerLogger *sl = getLogger ();
+        if (sl)
+          sl->log (MYSERVER_LOG_MSG_WARNING,
+                   _("XmlMimeHandler: Duplicate extension: %s"), ext.c_str ());
+        }
+
     }
 
   for (list<Regex*>::iterator it = mr->pathRegex.begin ();
@@ -284,7 +291,7 @@ int XmlMimeHandler::addRecord (MimeRecord *mr)
 
 /*!
   Remove all the stored records.
- */
+*/
 void XmlMimeHandler::clearRecords ()
 {
   vector <MimeRecord*>::iterator i = records.begin ();
@@ -315,7 +322,7 @@ void XmlMimeHandler::clearRecords ()
   \param filename Find the MIME type for this file.
   \param handler If specified, indicate an external handler to use
   if the mime cannot be found locally.
- */
+*/
 MimeRecord *XmlMimeHandler::getMIME (const char *filename)
 {
   string ext;
@@ -324,16 +331,16 @@ MimeRecord *XmlMimeHandler::getMIME (const char *filename)
   for (list<PathRegex*>::iterator it = pathRegex.begin ();
        it != pathRegex.end ();
        it++)
-  {
-    PathRegex *pr = *it;
-    regmatch_t pm;
-
-    if (pr->regex->exec (filename, 1, &pm, 0) == 0)
     {
-      pos = pr->record;
-      break;
+      PathRegex *pr = *it;
+      regmatch_t pm;
+
+      if (pr->regex->exec (filename, 1, &pm, 0) == 0)
+        {
+          pos = pr->record;
+          break;
+        }
     }
-  }
 
   if (pos == 0)
     {
@@ -349,7 +356,7 @@ MimeRecord *XmlMimeHandler::getMIME (const char *filename)
 
 /*!
   Returns the number of MIME types loaded.
- */
+*/
 u_long XmlMimeHandler::getNumMIMELoaded ()
 {
   return records.size () -1;
diff --git a/myserver/src/server/server.cpp b/myserver/src/server/server.cpp
index 312a80e..da254f0 100644
--- a/myserver/src/server/server.cpp
+++ b/myserver/src/server/server.cpp
@@ -389,6 +389,7 @@ void Server::loadStaticComponents ()
 {
   string xml ("xml");
 
+  mimeManager.setLogger (this);
   mimeManager.registerHandler (xml, new XmlMimeHandler ());
 
   XmlVhostHandler::registerBuilder (vhostManager);

-----------------------------------------------------------------------

Summary of changes:
 myserver/include/conf/mime/mime_manager.h   |   27 ++++
 myserver/include/server/server.h            |   18 ++-
 myserver/src/conf/mime/mime_manager.cpp     |   25 ++--
 myserver/src/conf/mime/xml_mime_handler.cpp |  225 ++++++++++++++-------------
 myserver/src/server/server.cpp              |    1 +
 5 files changed, 168 insertions(+), 128 deletions(-)


hooks/post-receive
-- 
GNU MyServer



reply via email to

[Prev in Thread] Current Thread [Next in Thread]