Revision: 2599 http://archive-access.svn.sourceforge.net/archive-access/?rev=2599&view=rev Author: bradtofel Date: 2008-10-09 23:39:15 +0000 (Thu, 09 Oct 2008) Log Message: ----------- INITIAL REV: experimental archival URL query specification for proxy replay mode. Added Paths: ----------- trunk/archive-access/projects/wayback/wayback-core/src/main/java/org/archive/wayback/proxy/ProxyArchivalRequestParser.java Added: trunk/archive-access/projects/wayback/wayback-core/src/main/java/org/archive/wayback/proxy/ProxyArchivalRequestParser.java =================================================================== --- trunk/archive-access/projects/wayback/wayback-core/src/main/java/org/archive/wayback/proxy/ProxyArchivalRequestParser.java (rev 0) +++ trunk/archive-access/projects/wayback/wayback-core/src/main/java/org/archive/wayback/proxy/ProxyArchivalRequestParser.java 2008-10-09 23:39:15 UTC (rev 2599) @@ -0,0 +1,34 @@ +package org.archive.wayback.proxy; + +import java.util.List; + +import org.archive.wayback.RequestParser; +import org.archive.wayback.archivalurl.requestparser.PathDatePrefixQueryRequestParser; +import org.archive.wayback.archivalurl.requestparser.PathDateRangeQueryRequestParser; +import org.archive.wayback.archivalurl.requestparser.PathPrefixDatePrefixQueryRequestParser; +import org.archive.wayback.archivalurl.requestparser.PathPrefixDateRangeQueryRequestParser; +import org.archive.wayback.requestparser.FormRequestParser; +import org.archive.wayback.requestparser.OpenSearchRequestParser; + +public class ProxyArchivalRequestParser extends ProxyRequestParser { + private ProxyReplayRequestParser prrp = new ProxyReplayRequestParser(); + protected RequestParser[] getRequestParsers() { + prrp.init(); + RequestParser[] theParsers = { + prrp, + new PathDatePrefixQueryRequestParser(), + new PathDateRangeQueryRequestParser(), + new PathPrefixDatePrefixQueryRequestParser(), + new PathPrefixDateRangeQueryRequestParser(), + new OpenSearchRequestParser(), + new FormRequestParser() + }; + return theParsers; + } + public List<String> getLocalhostNames() { + return prrp.getLocalhostNames(); + } + public void setLocalhostNames(List<String> localhostNames) { + prrp.setLocalhostNames(localhostNames); + } +} This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
Revision: 2723 http://archive-access.svn.sourceforge.net/archive-access/?rev=2723&view=rev Author: bradtofel Date: 2009-05-20 02:33:36 +0000 (Wed, 20 May 2009) Log Message: ----------- REFACTOR: now inherits from WrappedRequestParser, so inherits configuration access methods from the delegate. Modified Paths: -------------- trunk/archive-access/projects/wayback/wayback-core/src/main/java/org/archive/wayback/proxy/ProxyArchivalRequestParser.java Modified: trunk/archive-access/projects/wayback/wayback-core/src/main/java/org/archive/wayback/proxy/ProxyArchivalRequestParser.java =================================================================== --- trunk/archive-access/projects/wayback/wayback-core/src/main/java/org/archive/wayback/proxy/ProxyArchivalRequestParser.java 2009-05-20 02:30:31 UTC (rev 2722) +++ trunk/archive-access/projects/wayback/wayback-core/src/main/java/org/archive/wayback/proxy/ProxyArchivalRequestParser.java 2009-05-20 02:33:36 UTC (rev 2723) @@ -11,17 +11,17 @@ import org.archive.wayback.requestparser.OpenSearchRequestParser; public class ProxyArchivalRequestParser extends ProxyRequestParser { - private ProxyReplayRequestParser prrp = new ProxyReplayRequestParser(); + private ProxyReplayRequestParser prrp = new ProxyReplayRequestParser(this); protected RequestParser[] getRequestParsers() { prrp.init(); RequestParser[] theParsers = { prrp, - new PathDatePrefixQueryRequestParser(), - new PathDateRangeQueryRequestParser(), - new PathPrefixDatePrefixQueryRequestParser(), - new PathPrefixDateRangeQueryRequestParser(), - new OpenSearchRequestParser(), - new FormRequestParser() + new PathDatePrefixQueryRequestParser(this), + new PathDateRangeQueryRequestParser(this), + new PathPrefixDatePrefixQueryRequestParser(this), + new PathPrefixDateRangeQueryRequestParser(this), + new OpenSearchRequestParser(this), + new FormRequestParser(this) }; return theParsers; } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
Revision: 2849 http://archive-access.svn.sourceforge.net/archive-access/?rev=2849&view=rev Author: bradtofel Date: 2009-10-28 00:06:30 +0000 (Wed, 28 Oct 2009) Log Message: ----------- FEATURE: Added parsing of ArchivalURL requests within proxy mode, with the main benefit of being able to include a date in the incoming requests. Modified Paths: -------------- trunk/archive-access/projects/wayback/wayback-core/src/main/java/org/archive/wayback/proxy/ProxyArchivalRequestParser.java Modified: trunk/archive-access/projects/wayback/wayback-core/src/main/java/org/archive/wayback/proxy/ProxyArchivalRequestParser.java =================================================================== --- trunk/archive-access/projects/wayback/wayback-core/src/main/java/org/archive/wayback/proxy/ProxyArchivalRequestParser.java 2009-10-28 00:04:43 UTC (rev 2848) +++ trunk/archive-access/projects/wayback/wayback-core/src/main/java/org/archive/wayback/proxy/ProxyArchivalRequestParser.java 2009-10-28 00:06:30 UTC (rev 2849) @@ -1,3 +1,27 @@ +/* ProxyArchivalRequestParser + * + * $Id$ + * + * Created on 4:01:04 PM Apr 6, 2009. + * + * Copyright (C) 2009 Internet Archive. + * + * This file is part of wayback. + * + * wayback is free software; you can redistribute it and/or modify + * it under the terms of the GNU Lesser Public License as published by + * the Free Software Foundation; either version 2.1 of the License, or + * any later version. + * + * wayback is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser Public License for more details. + * + * You should have received a copy of the GNU Lesser Public License + * along with wayback; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ package org.archive.wayback.proxy; import java.util.List; @@ -2,2 +26,4 @@ +import javax.servlet.http.HttpServletRequest; + import org.archive.wayback.RequestParser; @@ -7,10 +33,24 @@ import org.archive.wayback.archivalurl.requestparser.PathDateRangeQueryRequestParser; import org.archive.wayback.archivalurl.requestparser.PathPrefixDatePrefixQueryRequestParser; import org.archive.wayback.archivalurl.requestparser.PathPrefixDateRangeQueryRequestParser; +import org.archive.wayback.archivalurl.requestparser.ReplayRequestParser; +import org.archive.wayback.core.WaybackRequest; +import org.archive.wayback.exception.BadQueryException; +import org.archive.wayback.exception.BetterRequestException; +import org.archive.wayback.requestparser.CompositeRequestParser; import org.archive.wayback.requestparser.FormRequestParser; import org.archive.wayback.requestparser.OpenSearchRequestParser; +import org.archive.wayback.util.bdb.BDBMap; +import org.archive.wayback.webapp.AccessPoint; -public class ProxyArchivalRequestParser extends ProxyRequestParser { +/** + * + * + * @author brad + * @version $Date$, $Revision$ + */ + +public class ProxyArchivalRequestParser extends CompositeRequestParser { private ProxyReplayRequestParser prrp = new ProxyReplayRequestParser(this); protected RequestParser[] getRequestParsers() { prrp.init(); @@ -20,6 +60,7 @@ new PathDateRangeQueryRequestParser(this), new PathPrefixDatePrefixQueryRequestParser(this), new PathPrefixDateRangeQueryRequestParser(this), + new ReplayRequestParser(this), new OpenSearchRequestParser(this), new FormRequestParser(this) }; @@ -31,4 +72,37 @@ public void setLocalhostNames(List<String> localhostNames) { prrp.setLocalhostNames(localhostNames); } + + public WaybackRequest parse(HttpServletRequest httpRequest, + AccessPoint wbContext) throws BadQueryException, BetterRequestException { + + WaybackRequest wbRequest = super.parse(httpRequest, wbContext); + if (wbRequest != null) { + String id = httpRequest.getHeader("Proxy-Id"); + if (id == null) + id = httpRequest.getRemoteAddr(); + + // Get the id from the request. + // If no id, use the ip-address instead. + // Check if the parser parsed a replay request and found a + // timestamp. If so, then we need to store the timestamp and + // redirect, which is done with a BetterRequestException: + if(wbRequest.isReplayRequest()) { + String replayTimestamp = wbRequest.getReplayTimestamp(); + if(replayTimestamp != null) { + BDBMap.addTimestampForId(httpRequest.getContextPath(), + id, replayTimestamp); + } + throw new BetterRequestException(wbRequest.getRequestUrl()); + } + + // Then get the timestamp (or rather datestr) matching this id. + // TODO: This is hacky - need generic way to store session data + String replayDateStr = BDBMap.getTimestampForId( + httpRequest.getContextPath(), id); + wbRequest.setReplayTimestamp(replayDateStr); + wbRequest.setAnchorTimestamp(replayDateStr); + } + return wbRequest; + } } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
Revision: 3101 http://archive-access.svn.sourceforge.net/archive-access/?rev=3101&view=rev Author: bradtofel Date: 2010-05-17 19:52:24 +0000 (Mon, 17 May 2010) Log Message: ----------- FEATURE: exposed addDefaults() to internal ProxyReplayRequestParser, to enable/disable the possibly slow getLocalHostnames lookup Modified Paths: -------------- trunk/archive-access/projects/wayback/wayback-core/src/main/java/org/archive/wayback/proxy/ProxyArchivalRequestParser.java Modified: trunk/archive-access/projects/wayback/wayback-core/src/main/java/org/archive/wayback/proxy/ProxyArchivalRequestParser.java =================================================================== --- trunk/archive-access/projects/wayback/wayback-core/src/main/java/org/archive/wayback/proxy/ProxyArchivalRequestParser.java 2010-05-17 19:50:11 UTC (rev 3100) +++ trunk/archive-access/projects/wayback/wayback-core/src/main/java/org/archive/wayback/proxy/ProxyArchivalRequestParser.java 2010-05-17 19:52:24 UTC (rev 3101) @@ -105,4 +105,17 @@ } return wbRequest; } + /** + * @return the addDefaults + */ + public boolean isAddDefaults() { + return prrp.isAddDefaults(); + } + + /** + * @param addDefaults the addDefaults to set + */ + public void setAddDefaults(boolean addDefaults) { + prrp.setAddDefaults(addDefaults); + } } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
Revision: 3365 http://archive-access.svn.sourceforge.net/archive-access/?rev=3365&view=rev Author: bradtofel Date: 2011-01-03 21:40:21 +0000 (Mon, 03 Jan 2011) Log Message: ----------- BUGFIX (unreported) fixed redirect loop bug when trying to replay pages Modified Paths: -------------- trunk/archive-access/projects/wayback/wayback-core/src/main/java/org/archive/wayback/proxy/ProxyArchivalRequestParser.java Modified: trunk/archive-access/projects/wayback/wayback-core/src/main/java/org/archive/wayback/proxy/ProxyArchivalRequestParser.java =================================================================== --- trunk/archive-access/projects/wayback/wayback-core/src/main/java/org/archive/wayback/proxy/ProxyArchivalRequestParser.java 2010-12-31 01:51:51 UTC (rev 3364) +++ trunk/archive-access/projects/wayback/wayback-core/src/main/java/org/archive/wayback/proxy/ProxyArchivalRequestParser.java 2011-01-03 21:40:21 UTC (rev 3365) @@ -87,8 +87,9 @@ if(replayTimestamp != null) { BDBMap.addTimestampForId(httpRequest.getContextPath(), id, replayTimestamp); + throw new BetterRequestException(wbRequest.getRequestUrl()); } - throw new BetterRequestException(wbRequest.getRequestUrl()); + } // Then get the timestamp (or rather datestr) matching this id. This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |