Hello Graeme,

In order to make this work you have to use file:/myfilesystem (only
one slash after the scheme) instead of file://myfilesystem for the
content location. The reason for this is that java.io.File (which is
used internally by Fedora to pull the content) doesn't permit an
authority component[1], denoted by // in the URI[2].

Consequently, the regex in the policy is also defined with one slash only.

Regards,
Kai

[1] 
http://java.sun.com/javase/6/docs/api/java/io/File.html#File%28java.net.URI%29
[2] http://tools.ietf.org/html/rfc3986#section-3.2


2010/6/16 West, Graeme <[email protected]>:
> Hello all,
> I'm trying to get Fedora (SVN trunk revision 8643) to accept file:// URLs as 
> part of an ingest, and am running into odd problems.
>
> The error I get is this:
>
>> # fedora-ingest.sh f ~/filetemp.xml info:fedora/fedora-system:FOXML-1.1 
>> localhost:8080 fedoraAdmin [my password here] http
>> Error  : org.fcrepo.server.errors.HttpServiceNotFoundException: 
>> [DefaultExternalContentManager] returned an error.  The underlying error was 
>> a org.fcrepo.server.errors.HttpServiceNotFoundException  The message was  
>> "[FileExternalContentManager] returned an error.  The underlying error was a 
>> java.lang.IllegalArgumentException  The message was  "URI has an authority 
>> component"  .  "  .
>
> The relevant part of my FoXML looks like this:
>
>> <foxml:datastream CONTROL_GROUP="M" ID="AUDIODOWNLOAD" STATE="A" 
>> VERSIONABLE="true">
>>                                 <foxml:datastreamVersion LABEL="MP3" 
>> ID="AUDIODOWNLOAD.0" MIMETYPE="audio/mpeg" SIZE="0">
>>                                         <foxml:contentDigest TYPE="SHA-512"/>
>>                                         <foxml:contentLocation 
>> REF="file://myfilesystem/something.mp3" TYPE="URL" />
>>                                 </foxml:datastreamVersion>
>>                         </foxml:datastream>
>
>
> I have modified the XACML policy deny-unallowed-file-resolution.xml as 
> suggested in its internal notes and at [1]. It's copied in at the bottom of 
> the email, along with a diff comparing my version to the distribution 
> version. I did wonder if perhaps the regex contained a typo of a missing 
> slash ( ^file:/ as opposed to ^file:// ), but I've tried it with and without 
> the slash to no avail.
>
> Fedora has the appropriate privileges to access the filesystem. The full 
> file:// URLs used in the ingest don't involve symlinks, and I've been 
> restarting Tomcat in between attempts. I'm running Fedora on Debian Lenny 
> with the Sun JDK 1.6.0_12.
>
> I'd appreciate any pointers on how to overcome this issue, as it'd speed up 
> my ingest considerably.
>
> Regards,
>
> Graeme
>
>
> Graeme West
> Digital Repository Developer
> Information Services
> Glasgow Caledonian University
> [email protected]
>
> [1] 
> http://fedora-commons.org/confluence/display/FCR30/Ingest+with+the+file+URI+scheme
>
>
> deny-unallowed-file-resolution.xml:
>
>> <?xml version="1.0" encoding="UTF-8"?>
>> <Policy xmlns="urn:oasis:names:tc:xacml:1.0:policy"
>>         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance";
>>         PolicyId="deny-file-resolve-if-not-allowed-dir"
>>         
>> RuleCombiningAlgId="urn:oasis:names:tc:xacml:1.0:rule-combining-algorithm:first-applicable">
>>   <Description>deny any file datastream resolution if not in allowed file 
>> patterns</Description>
>>   <Target>
>>     <Subjects>
>>         <AnySubject/>
>>     </Subjects>
>>     <Resources>
>>       <AnyResource/>
>>     </Resources>
>>     <Actions>
>>       <Action>
>>         <ActionMatch 
>> MatchId="urn:oasis:names:tc:xacml:1.0:function:string-equal">
>>           <AttributeValue 
>> DataType="http://www.w3.org/2001/XMLSchema#string";>urn:fedora:names:fedora:2.1:action:id-retrieveFile</AttributeValue>
>>           <ActionAttributeDesignator 
>> DataType="http://www.w3.org/2001/XMLSchema#string"; 
>> AttributeId="urn:fedora:names:fedora:2.1:action:id"/>
>>         </ActionMatch>
>>       </Action>
>>     </Actions>
>>   </Target>
>>   <!-- uncomment (and change the deny rule id) if access via the file 
>> protocol is desired.
>>    The regular expression determines the locations and files allowed for 
>> retrieval; it must match the canonical file URI for a resource.
>>    Restricting access to administrators will allow datastreams in control 
>> group 'M' to be ingested from the file system.
>>    Restricting access by URI only will allow datastreams in control group 
>> 'E' to be located on the file system.
>>   -->
>>
>>   <Rule RuleId="1" Effect="Permit">
>>     <Condition FunctionId="urn:oasis:names:tc:xacml:1.0:function:and">
>>       <Apply 
>> FunctionId="urn:oasis:names:tc:xacml:1.0:function:regexp-string-match">
>>         <AttributeValue 
>> DataType="http://www.w3.org/2001/XMLSchema#string";>^file://myfilesystem/*$</AttributeValue>
>>         <Apply 
>> FunctionId="urn:oasis:names:tc:xacml:1.0:function:string-one-and-only">
>>           <ResourceAttributeDesignator 
>> AttributeId="urn:fedora:names:fedora:2.1:resource:datastream:fileUri"
>>             DataType="http://www.w3.org/2001/XMLSchema#string"/>
>>         </Apply>
>>       </Apply>
>>       <Apply FunctionId="urn:oasis:names:tc:xacml:1.0:function:string-is-in">
>>         <AttributeValue 
>> DataType="http://www.w3.org/2001/XMLSchema#string";>administrator</AttributeValue>
>>         <SubjectAttributeDesignator AttributeId="fedoraRole" 
>> DataType="http://www.w3.org/2001/XMLSchema#string"/>
>>       </Apply>
>>     </Condition>
>>   </Rule>
>>
>>   <Rule RuleId="2" Effect="Deny">
>>   </Rule>
>> </Policy>
>
> Diff from distribution version of deny-unallowed-file-resolution.xml:
>
> 28c28
> <
> ---
>> <!--
> 32c32
> <         <AttributeValue 
> DataType="http://www.w3.org/2001/XMLSchema#string";>^file://ouachita/*$</AttributeValue>
> ---
>>         <AttributeValue 
>> DataType="http://www.w3.org/2001/XMLSchema#string";>^file:/allowed/.*$</AttributeValue>
> 41c41
> <       </Apply>
> ---
>>       </Apply>
> 44,45c44,45
> <
> <   <Rule RuleId="2" Effect="Deny">
> ---
>>   -->
>>   <Rule RuleId="1" Effect="Deny">
>
> Glasgow Caledonian University is a registered Scottish charity, number 
> SC021474
>
> Winner: Times Higher Education's Widening Participation Initiative of the 
> Year 2009 and Herald Society's Education Initiative of the Year 2009
> http://www.gcu.ac.uk/newsevents/news/bycategory/theuniversity/1/name,6219,en.html
>
> ------------------------------------------------------------------------------
> ThinkGeek and WIRED's GeekDad team up for the Ultimate
> GeekDad Father's Day Giveaway. ONE MASSIVE PRIZE to the
> lucky parental unit.  See the prize list and enter to win:
> http://p.sf.net/sfu/thinkgeek-promo
> _______________________________________________
> Fedora-commons-users mailing list
> [email protected]
> https://lists.sourceforge.net/lists/listinfo/fedora-commons-users
>

------------------------------------------------------------------------------
ThinkGeek and WIRED's GeekDad team up for the Ultimate 
GeekDad Father's Day Giveaway. ONE MASSIVE PRIZE to the 
lucky parental unit.  See the prize list and enter to win: 
http://p.sf.net/sfu/thinkgeek-promo
_______________________________________________
Fedora-commons-users mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/fedora-commons-users

Reply via email to