[Erp5-report] r6338 - /erp5/trunk/products/CMFActivity/ActivityTool.py
nobody at svn.erp5.org
nobody at svn.erp5.org
Wed Mar 29 19:03:40 CEST 2006
Author: jerome
Date: Wed Mar 29 19:03:37 2006
New Revision: 6338
URL: http://svn.erp5.org?rev=6338&view=rev
Log:
make sure we have been provided a good ip:port node reference before adding it
Modified:
erp5/trunk/products/CMFActivity/ActivityTool.py
Modified: erp5/trunk/products/CMFActivity/ActivityTool.py
URL: http://svn.erp5.org/erp5/trunk/products/CMFActivity/ActivityTool.py?rev=6338&r1=6337&r2=6338&view=diff
==============================================================================
--- erp5/trunk/products/CMFActivity/ActivityTool.py (original)
+++ erp5/trunk/products/CMFActivity/ActivityTool.py Wed Mar 29 19:03:37 2006
@@ -46,6 +46,7 @@
from ZODB.POSException import ConflictError
from OFS.Traversable import NotFound
from types import TupleType, StringType
+import re
from zLOG import LOG, INFO, WARNING
@@ -54,6 +55,9 @@
except ImportError:
def getTimerService(self):
pass
+
+# minimal IP:Port regexp
+NODE_RE = re.compile('\d+\.\d+\.\d+\.\d:\d+')
# Using a RAM property (not a property of an instance) allows
# to prevent from storing a state in the ZODB (and allows to restart...)
@@ -372,24 +376,44 @@
""" Return the distributingNode """
return self.distributingNode
- security.declarePublic('getNodeList')
+ security.declarePublic('getNodeList getNodes')
def getNodes(self):
""" Return all nodes """
return self._nodes
-
+ getNodeList = getNodes
+
+ def _isValidNodeName(self, node_name) :
+ """Check we have been provided a good node name"""
+ return isinstance(node_name, str) and NODE_RE.match(node_name)
+
security.declarePublic('manage_setDistributingNode')
def manage_setDistributingNode(self, distributingNode, REQUEST=None):
- """ set the distributing node """
- self.distributingNode = distributingNode
- if REQUEST is not None:
- REQUEST.RESPONSE.redirect(
- REQUEST.URL1 +
- '/manageLoadBalancing?manage_tabs_message=' +
- urllib.quote("Distributing Node successfully changed."))
-
+ """ set the distributing node """
+ if self._isValidNodeName(distributingNode):
+ self.distributingNode = distributingNode
+ if REQUEST is not None:
+ REQUEST.RESPONSE.redirect(
+ REQUEST.URL1 +
+ '/manageLoadBalancing?manage_tabs_message=' +
+ urllib.quote("Distributing Node successfully changed."))
+ else :
+ if REQUEST is not None:
+ REQUEST.RESPONSE.redirect(
+ REQUEST.URL1 +
+ '/manageLoadBalancing?manage_tabs_message=' +
+ urllib.quote("Malformed Distributing Node."))
+
security.declarePublic('manage_addNode')
def manage_addNode(self, node, REQUEST=None):
""" add a node """
+ if not self._isValidNodeName(node) :
+ if REQUEST is not None:
+ REQUEST.RESPONSE.redirect(
+ REQUEST.URL1 +
+ '/manageLoadBalancing?manage_tabs_message=' +
+ urllib.quote("Malformed node."))
+ return
+
if node in self._nodes:
if REQUEST is not None:
REQUEST.RESPONSE.redirect(
More information about the Erp5-report
mailing list