{"action":"closed","issue":{"url":"https://api.github.com/repos/iipc/openwayback/issues/259","labels_url":"https://api.github.com/repos/iipc/openwayback/issues/259/labels{/name}","comments_url":"https://api.github.com/repos/iipc/openwayback/issues/259/comments","events_url":"https://api.github.com/repos/iipc/openwayback/issues/259/events","html_url":"https://github.com/iipc/openwayback/issues/259","id":78116615,"number":259,"title":"StaticMapExclusionFilterFactory and StaticListExclusionFilterFactory will not work via AccessControlSettingOperation.factory","user":{"login":"pardery","id":6485320,"avatar_url":"https://avatars.githubusercontent.com/u/6485320?v=3","gravatar_id":"","url":"https://api.github.com/users/pardery","html_url":"https://github.com/pardery","followers_url":"https://api.github.com/users/pardery/followers","following_url":"https://api.github.com/users/pardery/following{/other_user}","gists_url":"https://api.github.com/users/pardery/gists{/gist_id}","starred_url":"https://api.github.com/users/pardery/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/pardery/subscriptions","organizations_url":"https://api.github.com/users/pardery/orgs","repos_url":"https://api.github.com/users/pardery/repos","events_url":"https://api.github.com/users/pardery/events{/privacy}","received_events_url":"https://api.github.com/users/pardery/received_events","type":"User","site_admin":false},"labels":[{"url":"https://api.github.com/repos/iipc/openwayback/labels/bug","name":"bug","color":"fc2929"}],"state":"closed","locked":false,"assignee":{"login":"kris-sigur","id":1148196,"avatar_url":"https://avatars.githubusercontent.com/u/1148196?v=3","gravatar_id":"","url":"https://api.github.com/users/kris-sigur","html_url":"https://github.com/kris-sigur","followers_url":"https://api.github.com/users/kris-sigur/followers","following_url":"https://api.github.com/users/kris-sigur/following{/other_user}","gists_url":"https://api.github.com/users/kris-sigur/gists{/gist_id}","starred_url":"https://api.github.com/users/kris-sigur/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/kris-sigur/subscriptions","organizations_url":"https://api.github.com/users/kris-sigur/orgs","repos_url":"https://api.github.com/users/kris-sigur/repos","events_url":"https://api.github.com/users/kris-sigur/events{/privacy}","received_events_url":"https://api.github.com/users/kris-sigur/received_events","type":"User","site_admin":false},"milestone":{"url":"https://api.github.com/repos/iipc/openwayback/milestones/6","html_url":"https://github.com/iipc/openwayback/milestones/2.3.0%20Minor%20Release","labels_url":"https://api.github.com/repos/iipc/openwayback/milestones/6/labels","id":1100392,"number":6,"title":"2.3.0 Minor Release","description":"","creator":{"login":"kris-sigur","id":1148196,"avatar_url":"https://avatars.githubusercontent.com/u/1148196?v=3","gravatar_id":"","url":"https://api.github.com/users/kris-sigur","html_url":"https://github.com/kris-sigur","followers_url":"https://api.github.com/users/kris-sigur/followers","following_url":"https://api.github.com/users/kris-sigur/following{/other_user}","gists_url":"https://api.github.com/users/kris-sigur/gists{/gist_id}","starred_url":"https://api.github.com/users/kris-sigur/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/kris-sigur/subscriptions","organizations_url":"https://api.github.com/users/kris-sigur/orgs","repos_url":"https://api.github.com/users/kris-sigur/repos","events_url":"https://api.github.com/users/kris-sigur/events{/privacy}","received_events_url":"https://api.github.com/users/kris-sigur/received_events","type":"User","site_admin":false},"open_issues":13,"closed_issues":11,"state":"open","created_at":"2015-05-07T15:25:22Z","updated_at":"2015-09-30T10:05:47Z","due_on":null,"closed_at":null},"comments":19,"created_at":"2015-05-19T14:41:29Z","updated_at":"2015-09-30T10:05:47Z","closed_at":"2015-09-30T10:05:47Z","body":"ComplexAccessPoint.xml lists an example of how to apply an exclusion access control to requests made from outside a specified IP range:  https://github.com/iipc/openwayback/blob/master/wayback-webapp/src/main/webapp/WEB-INF/ComplexAccessPoint.xml#L65-88\r\n\r\nHistorically, we have used something very similar at the Library of Congress, but instead of using OracleExclusionFilterFactory, we use StaticMapExclusionFilterFactory, and follow the exact format outlined in the example that I linked above.  So, our code might look like:\r\n\r\n```xml\r\n<property name=\"authentication\">\r\n    <bean class=\"org.archive.wayback.authenticationcontrol.AccessControlSettingOperation\">\r\n        <property name=\"operator\">\r\n            <bean class=\"org.archive.wayback.util.operator.NotBooleanOperator\">\r\n                <property name=\"operand\">\r\n                    <bean class=\"org.archive.wayback.authenticationcontrol.IPMatchesBooleanOperator\">\r\n                        <property name=\"allowedRanges\">\r\n                            <list>\r\n                                <value>192.168.1.16/24</value>\r\n                           </list>\r\n                       </property> \r\n                    </bean>\r\n                </property>\r\n            </bean>\r\n        </property>\r\n        <property name=\"factory\">\r\n            <bean class=\"org.archive.wayback.accesscontrol.staticmap.StaticMapExclusionFilterFactory\" init-method=\"init\">\r\n                <property name=\"file\" value=\"${wayback.basedir}/exclude.txt\" />\r\n                <property name=\"checkInterval\" value=\"600\" />\r\n            </bean>\r\n        </property>\r\n    </bean>\r\n</property>\r\n```\r\n\r\nThis works for us in Wayback 1.6 and 1.8.  However, on the Openwayback 2.1.0 instance that we just installed, this same logic does not work.  Using the StaticMapExclusionFilterFactory as the exclusionFactory property of the AccessPoint itself works, something like:\r\n\r\n```xml\r\n<bean name=\"8080:accesspoint\" class=\"org.archive.wayback.webapp.AccessPoint\">\r\n    ...\r\n    <property name=\"exclusionFactory\">\r\n        <bean class=\"org.archive.wayback.accesscontrol.staticmap.StaticListExclusionFilterFactory\" init-method=\"init\">\r\n            <property name=\"file\" value=\"${wayback.basedir}/exclude.txt\" />\r\n            <property name=\"checkInterval\" value=\"600\" />\r\n        </bean>\r\n    </property>\r\n</bean>\r\n```\r\n\r\nLikewise, using the StaticListExclusionFilterFactory as the AccessPoint's exclusionFactory property works.  Tomcat is able to restart without errors when using StaticMapExclusionFilterFactory / StaticListExclusionFilterFactory with AccessControllSetting.factory, but the application does not exclude URLs provided in the defined exclude.txt file.\r\n\r\nI've reviewed some of the recent-ish commits to the code involved in this process, and nothing is jumping out to me as an immediate red flag.  After that, and doing loads of testing to no avail, I'm left scratching my head on this one.  I could definitely be overlooking something more obvious to the folks familiar with this code base, so if that is the case, please let me know. \r\n\r\nI am not seeing any helpful information in my Tomcat logs, but if I can provide any further environmental/testing info to assist in the investigation of this issue, just let me know.\r\n\r\nThanks in advance for the assistance.\r\nPhil / pard@loc.gov\r\n\r\nEDIT: I believe Gina brought up this same issue in 2014 in the following google group exhange:  https://groups.google.com/forum/#!topic/openwayback-dev/2nANsg14QJE"}}