You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@roller.apache.org by sn...@apache.org on 2005/10/11 21:53:25 UTC

svn commit: r312945 - in /incubator/roller/branches/roller_2.0: src/org/roller/presentation/weblog/actions/WeblogEntryFormAction.java web/WEB-INF/classes/ApplicationResources.properties web/WEB-INF/classes/roller.properties

Author: snoopdave
Date: Tue Oct 11 12:53:21 2005
New Revision: 312945

URL: http://svn.apache.org/viewcvs?rev=312945&view=rev
Log:
Improvement ROL-839 'Allow configuration of list of allowable trackbacks (for internal corporate blogs)'

Modified:
    incubator/roller/branches/roller_2.0/src/org/roller/presentation/weblog/actions/WeblogEntryFormAction.java
    incubator/roller/branches/roller_2.0/web/WEB-INF/classes/ApplicationResources.properties
    incubator/roller/branches/roller_2.0/web/WEB-INF/classes/roller.properties

Modified: incubator/roller/branches/roller_2.0/src/org/roller/presentation/weblog/actions/WeblogEntryFormAction.java
URL: http://svn.apache.org/viewcvs/incubator/roller/branches/roller_2.0/src/org/roller/presentation/weblog/actions/WeblogEntryFormAction.java?rev=312945&r1=312944&r2=312945&view=diff
==============================================================================
--- incubator/roller/branches/roller_2.0/src/org/roller/presentation/weblog/actions/WeblogEntryFormAction.java (original)
+++ incubator/roller/branches/roller_2.0/src/org/roller/presentation/weblog/actions/WeblogEntryFormAction.java Tue Oct 11 12:53:21 2005
@@ -19,6 +19,8 @@
 import java.util.List;
 import java.util.ListIterator;
 import java.util.ResourceBundle;
+import java.util.regex.Matcher;
+import java.util.regex.Pattern;
 
 import javax.mail.MessagingException;
 import javax.mail.Session;
@@ -43,6 +45,7 @@
 import org.apache.struts.util.RequestUtils;
 import org.roller.RollerException;
 import org.roller.RollerPermissionsException;
+import org.roller.config.RollerConfig;
 import org.roller.model.IndexManager;
 import org.roller.model.Roller;
 import org.roller.model.RollerFactory;
@@ -909,64 +912,89 @@
 
                if (form.getTrackbackUrl() != null)
                {
-                   try
-                   {
-                       // Construct data
-
-                       String data = URLEncoder.encode("title", "UTF-8")
-                           +"="+URLEncoder.encode(title, "UTF-8");
-
-                       data += ("&" + URLEncoder.encode("excerpt", "UTF-8")
-                                 +"="+URLEncoder.encode(excerpt,"UTF-8"));
-
-                       data += ("&" + URLEncoder.encode("url", "UTF-8")
-                                 +"="+URLEncoder.encode(url,"UTF-8"));
-
-                       data += ("&" + URLEncoder.encode("blog_name", "UTF-8")
-                                 +"="+URLEncoder.encode(blog_name,"UTF-8"));
-
-                       // Send data
-                       URL tburl = new URL(form.getTrackbackUrl());
-                       URLConnection conn = tburl.openConnection();
-                       conn.setDoOutput(true);
+            	   // by default let all trackbacks to be sent
+            	   boolean allowTrackback = true;
 
-                       OutputStreamWriter wr =
-                           new OutputStreamWriter(conn.getOutputStream());
-                       BufferedReader rd = null;
-                       try
-                       {
-                           wr.write(data);
-                           wr.flush();
-    
-                           // Get the response
-                           rd = new BufferedReader(new InputStreamReader(
-                               conn.getInputStream()));
-    
-                           String line;
-                           StringBuffer resultBuff = new StringBuffer();
-                           while ((line = rd.readLine()) != null)
-                           {
-                               resultBuff.append(
-                                   Utilities.escapeHTML(line, true));
-                               resultBuff.append("<br />");
-                           }
-                           
-                           ActionMessages resultMsg = new ActionMessages();
-                           resultMsg.add(ActionMessages.GLOBAL_MESSAGE,
-                               new ActionMessage("weblogEdit.trackbackResults", 
-                               resultBuff));
-                           saveMessages(request, resultMsg);
-                       }
-                       finally
+            	   String allowedURLs = RollerConfig.getProperty("trackback.allowedURLs");
+                   if (allowedURLs != null)
+                   {
+                	   // in the case that the administrator has enabled trackbacks
+                	   // for only specific URLs, set it to false by default
+                	   allowTrackback = false;
+                       String[] splitURLs = allowedURLs.split("\\|\\|");
+                       for (int i=0; i<splitURLs.length; i++)
                        {
-                           wr.close();
-                           rd.close();
+                    	   Matcher m = Pattern.compile(splitURLs[i]).matcher(form.getTrackbackUrl());
+                    	   if (m.matches()) {
+                    		   allowTrackback = true;
+                    		   break;
+                    	   }
                        }
                    }
-                   catch (IOException e)
-                   {
-                       errors.add(ActionErrors.GLOBAL_ERROR,
-                           new ActionError("error.trackback",e));
+                   
+                   if(!allowTrackback) {
+              	     errors.add(ActionErrors.GLOBAL_ERROR,
+	                           new ActionError("error.trackbackNotAllowed"));
+                   } else {
+	                   try
+	                   {
+	                       // Construct data
+	
+	                       String data = URLEncoder.encode("title", "UTF-8")
+	                           +"="+URLEncoder.encode(title, "UTF-8");
+	
+	                       data += ("&" + URLEncoder.encode("excerpt", "UTF-8")
+	                                 +"="+URLEncoder.encode(excerpt,"UTF-8"));
+	
+	                       data += ("&" + URLEncoder.encode("url", "UTF-8")
+	                                 +"="+URLEncoder.encode(url,"UTF-8"));
+	
+	                       data += ("&" + URLEncoder.encode("blog_name", "UTF-8")
+	                                 +"="+URLEncoder.encode(blog_name,"UTF-8"));
+	
+	                       // Send data
+	                       URL tburl = new URL(form.getTrackbackUrl());
+	                       URLConnection conn = tburl.openConnection();
+	                       conn.setDoOutput(true);
+	
+	                       OutputStreamWriter wr =
+	                           new OutputStreamWriter(conn.getOutputStream());
+	                       BufferedReader rd = null;
+	                       try
+	                       {
+	                           wr.write(data);
+	                           wr.flush();
+	    
+	                           // Get the response
+	                           rd = new BufferedReader(new InputStreamReader(
+	                               conn.getInputStream()));
+	    
+	                           String line;
+	                           StringBuffer resultBuff = new StringBuffer();
+	                           while ((line = rd.readLine()) != null)
+	                           {
+	                               resultBuff.append(
+	                                   Utilities.escapeHTML(line, true));
+	                               resultBuff.append("<br />");
+	                           }
+	                           
+	                           ActionMessages resultMsg = new ActionMessages();
+	                           resultMsg.add(ActionMessages.GLOBAL_MESSAGE,
+	                               new ActionMessage("weblogEdit.trackbackResults", 
+	                               resultBuff));
+	                           saveMessages(request, resultMsg);
+	                       }
+	                       finally
+	                       {
+	                           wr.close();
+	                           rd.close();
+	                       }
+	                   }
+	                   catch (IOException e)
+	                   {
+	                       errors.add(ActionErrors.GLOBAL_ERROR,
+	                           new ActionError("error.trackback",e));
+	                   }
                    }
                }
                else

Modified: incubator/roller/branches/roller_2.0/web/WEB-INF/classes/ApplicationResources.properties
URL: http://svn.apache.org/viewcvs/incubator/roller/branches/roller_2.0/web/WEB-INF/classes/ApplicationResources.properties?rev=312945&r1=312944&r2=312945&view=diff
==============================================================================
--- incubator/roller/branches/roller_2.0/web/WEB-INF/classes/ApplicationResources.properties (original)
+++ incubator/roller/branches/roller_2.0/web/WEB-INF/classes/ApplicationResources.properties Tue Oct 11 12:53:21 2005
@@ -352,6 +352,8 @@
 
 error.trackback=Error sending trackback. Possible cause: incorrect \
 trackback URL. {0}
+error.trackbackNotAllowed=Error sending trackback. The site administrator \
+has disabled sending tracbacks to the URL you specified.
 
 errorPage.title=Unexpected Exception
 errorPage.message=Roller has encountered and logged an unexpected exception.

Modified: incubator/roller/branches/roller_2.0/web/WEB-INF/classes/roller.properties
URL: http://svn.apache.org/viewcvs/incubator/roller/branches/roller_2.0/web/WEB-INF/classes/roller.properties?rev=312945&r1=312944&r2=312945&view=diff
==============================================================================
--- incubator/roller/branches/roller_2.0/web/WEB-INF/classes/roller.properties (original)
+++ incubator/roller/branches/roller_2.0/web/WEB-INF/classes/roller.properties Tue Oct 11 12:53:21 2005
@@ -256,6 +256,10 @@
 General,Status,Java,Music,Politics,Music
 
 #----------------------------------
+# trackback protection
+trackback.allowedURLs=http://w3.ibm.com/.*||http://another.example.com/.*
+
+#----------------------------------
 # misc settings
 
 loginfilter.rememberme.enabled=true