Release notes

Full listing of changes and bug fixes are not available prior to release 1.2.0 and between release 1.6.0 and OpeWayback 2.0.0 BETA 1 release.

OpenWayback 2.2.0 Release

Features

  • WatchedCDXSource now monitors directories for new CDX files. #181
  • System environment variables can be used to override some basic configurations without chaging the XML. #220 and #217
  • Minor fixes to replace hardcoded port numbers aun URL prefixes with placeholders. #223
  • Require Java 7.#178
  • Enable use of standard proxy servers (e.g. Squid) #250
  • WatchedCDXSource now optionally recurses and filters on filenames. #219
  • Support for Internationalized Domain Name (IDN) #27
  • UI localization.#46

Bug Fixes

  • Removed duplicate accessPointPath property in proxy replay section of wayback.xml #229
  • Failing test: testPadDateStr(org.archive.wayback.util.TimestampTest) #231
  • Replace current (IA) favicon with one matching OpenWayback logo. #247
  • Fixed ARCRecordingProxy times out. #116
  • Moved 'SWFReplayRenderer' to external file; imported to maintain functionality. #176

OpenWayback 2.1.0 Release

Features

  • Synchronised with latest changes from the Internet Archive fork. #195
  • URL-decode timestamp segment of replay URL. #195, internetarchive#23
  • Revisits can be resolved with excluded capture #195, internetarchive#65
  • Added rudimentary mime-type sniffing (work in progress). #195, internetarchive#46
  • Timestamp-collapsing can be configured to return the last best capture in eacho collapse group. #195, internetarchive#64
  • UIResults now has makePlainCaptureQueryUrl() method for generating clean, short URL for capture query links. #195, internetarchive#60
  • MultipleRegexReplaceStringTransformer may also be used as RewriteRule. #195, internetarchive#54
  • Allow for using different collapseTime for replay and capture search #195, internetarchive#49
  • Make collection-dependent exclusion configurable. #195, internetarchive#48
  • Removed CustomUserResourceIndex class, which does not appear to have broad utility. #195
  • Performance information in response header can now be in JSON format. #195, internetarchive#69
  • FastArchivalUrlReplayParseEventHandler no longer rewrite relative URLs for better replay quality. #195
  • Made start date configurable (defaults to old value of 1996), end date dynamic to current year.#51

Bug Fixes

  • Fixed issue #196 to allow running under Tomcat 8. #198
  • Fixed incorrect Content-Type in replay of resource record with JWATFlexResource #195, internetarchive#68
  • Fixed ClassCastException when JWATFlexResourceStore is in use #195, internetarchive#67
  • Pass-through Content-Range header field for audio playback to work #195, internetarchive#66
  • Fixed undesirable rewrite of in-page (fragment-only) links. #195, internetarchive#63
  • Fixed XHTML parse error due to banner insert before XML declaration. #195, internetarchive#61
  • Fixed PrivTokenAuthChecker resetting ignoreRobots. #195, internetarchive#51
  • Made CharsetDetector adher to WHAT-NG recommendation. #195, internetarchive#47
  • Fixed building with JDK 8. #141
  • NullPointerException for RemoteResourceIndex #193
  • Removed direct references to Unix specific TMP paths /tmp and /var/tmp. #172
  • Initial thread-safety fix for Memento from Luda. #180
  • Fixed xml-markup in Toolbar.jsp which caused probelsm on some sites. #171, #60
  • Fixed some @import url's in <style> section of html are not rewritten. #131
  • Fixed issue #48 jQuery getting stomped on.
  • Support for loading resources from S3 buckets. #189
  • Refactored CDX Server into a war and jar module. #164

OpenWayback 2.0.0 Release

Features

  • Fixed URL resolution in ServerRelativeArchivalRedirect in non-ROOT context. #92
  • Deprecated use of bean name in spring to provide configuration. #94
  • Updated and improved documentation. #125 #121 #133
  • Reviewed and updated mailing lists. #126 #127
  • Added Java cross-reference and updated site generation with dependencies. #128 #30
  • Fixed Javadoc output in Java8. #136
  • Updated 'developers' and 'contributors' lists in POM. #137
  • Cleaned up the Memento configuration. #150
  • Added new logos to project. #100
  • Cleaned up default config file. #144
  • Updated and improved documentation.
  • Updated dependency on Webarchive-commons 1.1.4. #157
  • Added 'accessPointPath' to default proxy config. #158

Bug Fixes

  • Fixed the date locale issue. Creations of java.text.SimpleDateFormat now independent of local setting. #157 #148 #154
  • Fixed support for uncompressed ARCs files #101

OpenWayback 2.0.0 BETA 2 release

Features

  • Added PrefixFieldCollapser and RegexFieldMatcher to CDX server. #7
  • Added support for WARC metadata records. #23
  • Added support for WARC resource records. #24
  • Removed Internet Archive defaults and branding. #45
  • Integrated JWAT ResorceStore. #54
  • Provided an OpenWayback Sample Overlay.
  • Carried out and documented manual testing. #80
  • Updated and improved documentation (as on the wiki.
  • Renamed artefacts and repositories “webarchive-commons” and updated POMs. #90

Bug Fixes

  • Query string being stripped from Memento queries. #106
  • Support for uncompressed ARC files. #101

OpenWayback 2.0.0 BETA 1 Release

Features

  • Added livewebPrefix to wayback.xml. #3
  • Removed dependencies on Internet Archive’s Maven artefacts, enabling Tarvis CI builds and clean releases. #10
  • Moved critical code for OpenWayback from the heritrix-commons codebase into webarchive-commons. #4

Bug Fixes

  • Dependency on heritrix-commons SNAPSHOT release. #11

The following releases of the Open Source Wayback Machine (OSWM) were made by the Internet Archive. The on-going development of Wayback was handed over to the International Internet Preservation Consortium (IIPC) in October 2013. For more details please see General overview.

release 1.8.0

Features

  • Introduced the wayback-cdx-server.

No further release notes available.

Release 1.7.0

Release notes not available.

Release 1.6.0

Major Features

  • Memento integration.
  • Improved live-web fetching, enabling simpler external caching of robots.txt documents, or other arbitrary content used to improve function of a replay session.
  • Customizable logging, via a logging.properties configuration file.
  • Vastly improved Server-side HTML rewriting capabilities, including customizable rewriting of specific tags and attributes, rewriting of (some easily recognizable) URLs within JavaScript and CSS.
  • Snazzy embedded toolbar with "sparkline" indicating the distribution of captures for a given HTML page, control elements enabling navigation between various versions of the current page, and a search box to navigate to other URLs directly from a replay session.
  • Improved hadoop CDX generation capabilities for large scale indexes.
  • SWF (Flash) rewriting, to contextualize absolute URLs embedded within flash content.
  • ArchivalUrl mode now accepts identity ("id_") flag to indicate transparent replaying of original content.
  • NotInArchive can now optionally trigger an attempt to fill in content from the live web, on the fly.
  • Updated license to Apache 2.

Major Bug Fixes

  • More robust handling of chunk encoded resources.
  • Fixed problem with improperly resolving path-relative URLs found in HTML, CSS, Javascript, SWF content.
  • Fixed problem with improperly escaping URLs within HTML when rewriting them.
  • Fixed problem where a misconfigured or missing administrative exclusion file was allowing results to be returned, instead of returning and appropriate error.
  • No longer extracts resources from the ResourceStore before redirecting to the closest version, which was a major inefficiency.

Minor Features

  • Now provide closeMatches list of search results which were not applicable given the users request, but that may be useful for followup requests.
  • Archival Url mode now allows rotating through several character encoding detection schemes.
  • Proxy Replay mode now accepts ArchivalURL format requests, allowing dates to be explicitly requested via proxy mode.
  • AccessPoints can be now configured to optional require strict host matching for queries and replay requests.
  • Now filters URLs which contain user-info (USER:PASSWORD@example.com) from the ResourceIndex
  • ArchivalURL mode requests without a datespec are now interpreted as a request for the most recent capture of the URL.
  • Improvements in mapping incoming requests to AccessPoints, to allow virtual hosts to target specific AccessPoints.
  • ResourceNotAvailable exceptions now include other close search results, allowing the UI to offer other versions which may be available.
  • ArchivalURL mode now forwards request flags (cs_, js_, im_, etc) when redirecting to a closer date.
  • ResourceStore implementation now allows retrying when confronted with possibly-transient HTTP 502 errors.

Minor Bug Fixes

  • cdx-indexer (replacement for arc-indexer and warc-indexer) tool now returns accurate error code on failure.
  • No longer sets JVM-wide default timezone to GMT - now it is set appropriately on Calendars when needed.
  • Hostname comparison is now case-insensitive.
  • Server-relative archival url redirects now include query arguments when redirecting.
  • Server-relative archival url redirects now include a Vary HTTP header, to fix problems when a cache is used between clients and the Wayback service.
  • Fixed problem with robots.txt caching within a single request, which caused serious inefficiency.
  • Fixed problem with resources redirecting to alternate HTTP/HTTPS version of themselves.
  • Fixed problem with accurately converting 14-digit Timestamps into Date objects for later comparison.
  • Automatically remaps the oft-misused charset "iso-8859-1" to the superset "cp1252".

Release 1.4.2

Features

  • Added exactSchemeOnly configuration to AccessPoint, allowing explicit distinction between http:// and https://(ACC-32)
  • Now times out requests to a slow/non-responsive RemoteResourceIndex and remote(HTTP 1.1) ResourceStore nodes.(ACC-38)
  • experimental OpenSearchQuery .jsp implementations(ACC-56)
  • FileProxyServlet now accepts /OFFSET trailing path in addition to Content-Range HTTP header.(ACC-74)
  • warc-indexer now has -all option to produce a CDX line for ALL records, not just captures and revisits(ACC-75)
  • now includes file+offset for all records, keying off mime-time of warc/revist to determine revisits at query time.(ACC-76)
  • Allow prefixing of original HTTP headers with a fixed string. (ACC-77)
  • Now Wayback rewrites Content-Base HTTP headers.(ACC-78)
  • Timeline.jsp improvements which prevent Timeline from being severely distorted on some pages.
  • Improvement to ArchivalUrl client-rewrite.js to preserve link text, working around a bug in Internet Explorer.

Bug Fixes

  • Now all mime-types are escaped to prevent spaces from getting into the CDX files.(ACC-45)
  • Some CSS URLs were being rewritten twice. (ACC-53)
  • No longer writing original pages Content-Length HTTP header to output, which caused original pages with Lower-Case "L" in "Content-length" to return wrong length, truncating replayed documents. This caused some replayed pages to not have embedded disclaimers, nor javascript rewriting of links and images. (ACC-60)
  • Fixed severe problem with live web robots.txt retrieval where wrong offset was being writting into the live web ResourceIndex. (ACC-62)
  • Charset extraction from HTTP headers is now case-insensitive. (ACC-63)
  • No longer adding content to HTML pages with FrameSet tags, as they were being broken.(ACC-65)
  • No longer set GMT as default timezone for entire JVM.(ACC-70)

Release 1.4.1

Features

  • Index filter which allows including/excluding records based on HTTP response code field.(ACC-43)
  • Outputs log message instead of stack dump when failing to access a Resource.

Bug Fixes

  • Some redirect records were not being located in index due to bad logic in Duplicate record filter.(ACC-30)
  • Wayback was not throwing a NotInArchiveException when Self-Redirect replay filter removes all records. (unreported)
  • Location HTTP header values were not being escaped before placing in CDX, causing some records to have too many columns. (ACC-31)
  • Search Result summary counts were incorrect in Url Prefix searches.(ACC-33)
  • Implemented NoCache.jsp, a replay insert which adds a Cache-Control: no-cache HTTP header to all replayed documents.(ACC-34)
  • Timeline.jsp was using Request Date, not Capture date, which caused Proxy Mode Timeline to show the wrong date. (ACC-36)
  • Advanced Search reference implementation .jsp was broken. (ACC-37)
  • AnchorDate and AnchorWindow functionality is now disabled by default, and can be enabled via configuration on an AccessPoint. (ACC-46)

Release 1.4.0

Features

  • @ Completely new implementation of ResourceStore classes, including recursive local directory scanning, scanning multiple local directories, an experimental remote directory scanning capability, and groundwork for future support of both non ARC/WARC file formats and large scale automatic indexing.
  • @ Complete overhaul of the Replay system, allowing jspInserts within ArchivalUrl, DomainPrefix, and Proxy replay modes. Also includes groundwork for future fine-grained mime-type and url-based Replay customizations.
  • Added capability to explicitly set Locale to use for an AccessPoint, overriding the default behavior of using the user agents specified preferred language.
  • New flat file implementation of FileLocationDB. See CDXCollection.xml within the .war file for and example usage.
  • AnchorDate feature, tracking the date with which a user begins a replay session. During this session, wayback will always attempt to remain near this date, preventing time-drift within a replay session.
  • AnchorWindow feature, which allows users to specify a maximum time window in either direction of the AnchorDate that they wish to view replayed content. When a user has set this option, Wayback will not display captures outside the specified window.
  • New command line tool location-db to create a location DB offline, populating with lines read from STDIN.
  • Added new AccessControlSettingOperation authentication control component, allowing the configuration of the appropriate Exclusion system per-request, as defined by arbitrary BooleanOperators. See ComplexAccessPoint.xml within the .war file for an example usage.
  • Added .asx archival URL replay, which rewrites links inside archived .asx files, attempting to make them point back into the Wayback service.
  • Now accept "http:/" as identical to "http://" in the beginning of a URL, working around a browser bug which stripped multiple "/"s in URL paths.
  • @ Refactoring of ResourceIndex interfaces, to allow for future update-able ResourceIndex implementations beyond BDBIndex based ResourceIndexes.
  • * Major internal refactoring of WaybackRequest object, providing more stable get/set methods for accessing the standard internal fields with type-safety.
  • * Major internal refactoring of SearchResults into CaptureSearchResults and UrlSearchResults, which was previously under-specified and often confusing. These new classes provide more stable get/set methods for accessing the standard internal fields with type-safety.
  • * Changed locations of replay, query, and exception .jsp files within .war file to underneath WEB-INF, so they are not directly accessible via HTTP.
  • German translation of default Wayback UI. Thanks Andreas!
  • Czech translation of default Wayback UI. Thanks Lukáš Matějka! (<< ACC-29)
  • All threads now notified of shut downs, allowing resources to be released cleanly.
  • *Refactor of all Request and Result related constants from WaybackConstants to WaybackRequest and the *SearchResult(s) classes.
  • * Refactor of the various UI*Results classes, which are used by Query, Replay, and Exception .jsp files to access context information into the single class, UIResults, which has a more stable interface.
  • New AccessPoint.urlRoot optional configuration, enabling explicit control over URLs generated for the UI.

Bug Fixes

  • (ACC-24) Fixed bug in Proxy mode which prevented the correct number of results from being returned from the index during Replay.
  • (ACC-21) fixed bug where some CSS import declarations where not being correctly rewritten.
  • (ACC-26) fixed rare String OOB exception when marking up pages with some forms of Javascript generated HTML.
  • (ACC-28) verifies that detected encoding is supported in local JVM before attempting to decode a resource into a String.
  • (unreported) fixed declared page encoding of help, advanced search and index page to UTF-8.
  • Explicitly set character encoding on returned documents, instead of relying on Tomcat to return the correct encoding.

Migration notes to 1.4.0 from 1.2.X

Wayback 1.4.0 includes substantial code changes aimed at extending current capabilities, enabling planned future features, and stabilizing interfaces used in .jsp customizations. Since these changes would already require a significant update of existing customizations made to .jsp files, many non-vital cleanups to the source tree were included. The goal of implementing all of these features within this single release is to minimize future required updates.

Below is a somewhat inclusive list of changes that will be required when upgrading to Wayback 1.4.0 from 1.2.X, divided into two main categories: changes required to Spring configuration, and changes required for .jsp customizations. Depending on the scope of the existing customizations in your installations, it may be simpler to modify your existing customizations to conform to new interfaces and packages, and in other cases, it may be simpler to begin with the new reference implementations and modify them to meet your needs.

If there are changes not addressed here, or if you have questions regarding specific issues when upgrading, please direct these questions to the archive-access-discuss forum.

Spring upgrade information

New features with the @ mark indicate features that will directly impact Spring XML configuration files used with 1.2.X.

  • org.archive.wayback.resourcestore.http.FileLocationDB now: org.archive.wayback.resourcestore.locationdb.BDBResourceFileLocationDB
  • org.archive.wayback.resourcestore.http.FileLocationDBServlet now: org.archive.wayback.resourcestore.locationdb.ResourceFileLocationDBServlet
  • org.archive.wayback.resourcestore.http.ArcProxyServlet now: org.archive.wayback.resourcestore.locationdb.FileProxyServlet
  • All ReplayUI implementations changed completely, now located in: ArchivalUrlReplay.xml, DomainPrefixReplay.xml, ProxyReplay.xml. Customizations to jspInserts should be straightforward on inspecting these files.
  • org.archive.wayback.resourcestore.Http11ResourceStore now: org.archive.wayback.resourcestore.SimpleResourceStore. See RemoteCollection.xml for configuration example.
  • The new automatic indexing is most simply upgraded by modifying the new example in BDBCollection.xml with your custom paths.

.jsp upgrade information

New features with the * mark indicate features that will directly impact customizations made to .jsp files used with 1.2.X. The bulk of the changes fit three categories:

  • class name and package changes requiring import tag updates. Please see .jsps in new distribution for updated packages.
  • .jsp path changes due to webapp directory tree cleanup. Again, please see the current locations in the new distribution.
  • Java changes within .jsp files due to UIResults refactoring. Previously each type of response page had a unique class used to marshal context information to the .jsp files. These have all been refactored into a single class, org.archive.wayback.core.UIResults which has methods to access the appropriate data in each case. Additionally, many convenience methods that were present on the various UI*Results classes have been removed, since convenience methods are now available on the core classes:

    • WaybackRequest
    • CaptureSearchResult
    • CaptureSearchResults
    • UrlSearchResult
    • UrlSearchResults

    As an example, the Timestamp class is no longer used in the .jsp files, since all time information uses the Date class for localization. All of the above classes now have methods to directly return Dates.

    For specific examples, please see the reference .jsp files included with the new distribution.

Release 1.2.1

Features

  • Now explicitly sets the charset component of replayed HTML page Content-Type HTTP headers in Archival URL mode. This overrides Tomcat's default behavior of explicitly setting this value to Tomcat's default encoding character set, if a document does not set it explicitly. The original Content-Type HTTP header value is now returned as HTTP header X-Wayback-Orig-Content-Type.

Bug Fixes

  • added getter/setter for replay image, css, javascript, and html error handling .jsps
  • now returns "closest" indicator on XML query results, fixing problem with WAXToolbar/Proxy mode.(ACC-11)
  • auto-indexer now closes ARC/WARC files after indexing, fixing out-of-filehandle problem(ACC-12)
  • location-client now syncs .warc and .warc.gz files with locationDB, in addition to .arc and .arc.gz files.(ACC-13)
  • fixed problem which prevented captures archived after webapp was deployed from being returned. Now captures up to the current moment are returned. (ACC-14)
  • changed all .jsp files to return UTF-8(ACC-18)
  • now sending correct end Date to remote NutchWAX index. (ACC-20)
  • fixed String OOB exception when attempting to rewrite some CSS text (ACC-17)
  • now updates CSS "import 'URL';" and 'import "URL";' content. Previously only updated "import url(URL);" content.
  • fixed Replay redirect loop when using RemoteResourceIndex (ACC-15)

Release 1.2.0

Features

  • now supports compressed and uncompressed ARC and WARC files.
  • initial revision of "deduplicated" WARC record handling, which returns the last version that was actually stored when subsequent captures are not saved because they have not changed.
  • now filters (literal) duplicate records from the ResourceIndex, in case the same capture (url + date) appears twice, or in two CDX files.
  • UrlCanonicalizer is now pluggable, current functionality is now implemented in AggressiveUrlCanonicalizer. Added IdentityUrlCanonicalizer, which performs no canonicalization.
  • bin-search command line tool now outputs a single stream of sorted results from multiple files, instead of returning matches from each file sequentially.
  • extracted several replay features into separate jspInserts that can now be mixed and matched.
  • now handles most text/css URL rewriting, both inside HTML pages, and in externally linked .css files.
  • externalized comment embedded inside replayed HTML pages into jspInsert: ArchiveComment.jsp.
  • non-javascript Archival URL replay mode, where all URL rewriting occurs on the server. This includes a non-javascript Timeline jspInsert.
  • added two-month timeline partition.
  • root page of webapp now lists access points, when users make a request that does not specify one. Also, now access point "slash-pages" are available "without the slash".

Bug Fixes

  • Now rewrite Location and Content-Base HTTP headers in non-HTML Archival URL replayed documents.
  • now rewrites all background attributes found in returned pages (archival URL mode only) instead of just on BODY tags.
  • now rewrites src attributes on INPUT tags.
  • command line tools now allow whitespace arguments, important for tools accepting delimiter arguments.
  • replay URLs in query results now include non-standard ports, if needed.
  • Timezone is now explicitly set to GMT/UTC, fixing a Calendar result partitioning problem.
  • uncaught character-encoding exceptions now handled, plus slightly improved detection of correct character encoding by removing internal whitespace in declared encoding names.
  • archival URL parsing of query end-date now assumes latest possible date given a partial end-date, instead of earliest possible date.
  • re-implemented lost "closest" indicator for XML results.
  • now supports multiple auto index threads, one per ResourceStore, and also multiple auto index merge threads, one per BDB ResourceIndex.
  • fixed hard-coded maximum year issue.
  • reimplemented NotInArchive logging, which was lost in 1.0.0.