Differences between revisions 2 and 3
Revision 2 as of 2006-09-26 11:49:54
Size: 17869
Comment:
Revision 3 as of 2006-09-26 11:53:05
Size: 17818
Comment:
Deletions are marked like this. Additions are marked like this.
Line 44: Line 44:
["Image:OxCLIC Workflow.jpg"] attachment:OxCLIC_Workflow.jpg
Line 82: Line 82:
The headers should be made MySQL-safe by removing / \ and . from the column names and limiting the length to 64 characters. The whole file should be made XML safe by converting < > & to &lt; &gt; and &amp; respectively. The headers should be made MySQL-safe by removing / \ and . from the column names and limiting the length to 64 characters. The whole file should be made XML safe by converting < > & to < > and & respectively.
Line 88: Line 88:
   </column>
   <column>
    . <name>Description</name> <content>Textual description &amp; information</content> # & converted to &amp;
   </column>
   <column identifier="Y"> # use an attribute to show that this is the Identifier field?
   </column> <column>
    . <name>Description</name> <content>Textual description & information</content> # & converted to &
   </column> <column identifier="Y"> # use an attribute to show that this is the Identifier field?
Line 94: Line 92:
   </column>
  
<column resource="Y"> # use an attribute to show that this is the resource field?
   </column> <column resource="Y"> # use an attribute to show that this is the resource field?
Line 97: Line 94:
   </column>
  
<column>
    . <name>DC:Date_created&lt;/name&gt; # . converted to _ <content>Not &gt; 50 years ago</content>
   </column>
  
<column>
   </column> <column>
    . <name>DC:Date_created&lt;/name&gt; # . converted to _ <content>Not > 50 years ago</content>
   </column> <column>
Line 103: Line 98:
   </column>
  
<column>
   </column> <column>
Line 179: Line 173:
 1. Obtain and install MONO for your platform I used the Mac OS X Framework installer, and it worked very nicely, and includes xsp, so you don't need to worry about installing that. 
 1. Install mod_mono into your current apache setup. This was essentially a case of download, ./configure make and make install, I just had to point it to the appropriate apxs ( /opt/apache2/bin/apxs under OSX ) and apr-config (/opt/apache2/bin/apr-config) and tell it where to install ( /opt/apache2 ) 
 1. Obtain and install MONO for your platform I used the Mac OS X Framework installer, and it worked very nicely, and includes xsp, so you don't need to worry about installing that.
 1. Install mod_mono into your current apache setup. This was essentially a case of download, ./configure make and make install, I just had to point it to the appropriate apxs ( /opt/apache2/bin/apxs under OSX ) and apr-config (/opt/apache2/bin/apr-config) and tell it where to install ( /opt/apache2 )
Line 183: Line 177:
 . The current runtime framework 'mono-2.0' is not correctly configured in the NAnt configuration file.:  1. The current runtime framework 'mono-2.0' is not correctly configured in the NAnt configuration file.:
Line 191: Line 185:
  . [csc] Starting '/Library/Frameworks/Mono.framework/Versions/1.1.13.8/bin/mono ("/Library/Frameworks/Mono.framework/Versions/1.1.13.8/lib/mono/2.0/gmcs.exe" @"/var/tmp/tmp4b361d76.tmp")' in '/Library/WebServer/ASP/MDID/lib/packages' [csc] /Library/WebServer/ASP/MDID/lib/packages/seclib-1.0/seclib/Security/Ssl/Tls1/ExpansionDeriveBytes.cs(116,11): error CS0104: {{{HMAC' is an ambiguous reference between }}}System.Security.Cryptography.HMAC' and `Org.Mentalis.Security.Cryptography.HMAC' [csc] Compilation failed: 1 error(s), 0 warnings BUILD FAILED - 0 non-fatal error(s), 1 warning(s)
 
/Library/WebServer/ASP/MDID/lib/packages/default.build(89,4): External Program Failed: /Library/Frameworks/Mono.framework/Versions/1.1.13.8/lib/mono/2.0/gmcs.exe (return code was 1): NAnt.Core.BuildException: /Library/WebServer/ASP/MDID/lib/packages/default.build(89,4): External Program Failed: /Library/Frameworks/Mono.framework/Versions/1.1.13.8/lib/mono/2.0/gmcs.exe (return code was 1) in <0x00454> NAnt.Core.Tasks.ExternalProgramBase:ExecuteTask ()
  . [csc] Starting '/Library/Frameworks/Mono.framework/Versions/1.1.13.8/bin/mono ("/Library/Frameworks/Mono.framework/Versions/1.1.13.8/lib/mono/2.0/gmcs.exe" @"/var/tmp/tmp4b361d76.tmp")' in '/Library/WebServer/ASP/MDID/lib/packages' [csc] /Library/WebServer/ASP/MDID/lib/packages/seclib-1.0/seclib/Security/Ssl/Tls1/ExpansionDeriveBytes.cs(116,11): error CS0104: {{{HMAC' is an ambiguous reference between }}}System.Security.Cryptography.HMAC' and `Org.Mentalis.Security.Cryptography.HMAC' [csc] Compilation failed: 1 error(s), 0 warnings BUILD FAILED - 0 non-fatal error(s), 1 warning(s) /Library/WebServer/ASP/MDID/lib/packages/default.build(89,4): External Program Failed: /Library/Frameworks/Mono.framework/Versions/1.1.13.8/lib/mono/2.0/gmcs.exe (return code was 1): NAnt.Core.BuildException: /Library/WebServer/ASP/MDID/lib/packages/default.build(89,4): External Program Failed: /Library/Frameworks/Mono.framework/Versions/1.1.13.8/lib/mono/2.0/gmcs.exe (return code was 1) in <0x00454> NAnt.Core.Tasks.ExternalProgramBase:ExecuteTask ()
Line 209: Line 202:
 

OxCLIC_MDID

TableOfContents([2])

Overview

MDID is a web application designed to deliver digital images for Teaching and Learning. It was designed and developed at James Madison University and has been continually refined since 1998. It is used by around 80 colleges and made available under an open source GPL license.

From the MDID site http://mdid.org/

"The Madison Digital Image Database is an online image database and multimedia instructional system designed to create and show Internet-based lectures using digitized images. The system permits instructors to remotely generate "slideshows", which can be annotated, placed online for student study, or archived for testing or future use. Though many image databases provide flexible faculty and student access to online images, those systems generally do not provide a tool via which faculty can teach and student can learn. MDID brings the digital image and data library into the teaching and learning process, in and outside the classroom."

  • Remote Collections
  • Personal Images
  • IPTC Injection
  • ImageViewer:classroom application

  • Integration with RLG CAMIO
  • Image Moderation
  • Support for multiple collections
  • Custom catalog data structures
  • Search and browse functions
  • Cross-collection searching
  • Personal collections in "My Images"
  • Slideshow light table
  • Tools for managing slideshows
  • User image notes and annotations
  • Web-based slideshow viewer
  • Packaged slideshows for offline presentation
  • Printable flashcards
  • Tools for managing user accounts and authentication
  • Data exchange through XML

OxCLIC MDID resources

Setting up MDID on the server [" server"] An overview of importing material catalogued in Portfolio into MDID - ["importing"] Customising MDID look and feel - ["OxCLIC customising MDID"]

Further References

The Curator Workshop manual

The Curator Workshop manual available for the MDID web site is a key guide for importing, administrating and maintaining collections in MDID.It covers the step by step process of converting and moving a .csv metadata catalogue (e.g. Exported from Portfolio) and the associated images into MDID.

The process of importing a catalogued collection in Portfolio is also covered in the OxCLIC Importing document, ["importing"]

An visual overview of how image material can be added to MDID

attachment:OxCLIC_Workflow.jpg

Suggestions for work by OxCLIC to improve MDID

Work for ACDT

There is a fair amount of IIS and ASP work that could be done locally.

Investigate running MDID under WebAuth, probably using the new IIS module rather than the proxy solution http://www.oucs.ox.ac.uk/webauth/index.xml.ID=body.1_div.3 WebAuth. This requires that we:

  • Purchase a blade server with a large hard drive
  • Install a windows server on it.
  • Install MDID onto the server
  • Configure and test WebAuth under IIS

  • Modify MDID such that it utilises WebAuth (login page accessed by https, remaining pages accessible by standard http as per WebLearn - I have no idea whether this is remotely possible under IIS or ASP )

  • Determine whether there is any point in drawing on the oxford LDAP information, and if so implementing this ( I have no idea whether the LDAP info contains anything useful to us, nor whether we can make this information available to departments outside OUCS)
  • User testing of the MDID interface to determine its useability and accessibility. This should probably be the first task undertaken, to see how well end users are able to comprehend MDID.
  • Perhaps rework the search interface to be a bit more friendly to end users rather than cataloguers.
  • Add in thumbnails to search/browse results. This should be a quick and easy task.
  • Add a 'browse by thumbnail' option.
  • Investigate the feasibility of guest access to the collection by default, offering unregistered users access to items in catalogues based upon each item's Rights field. This will be tied in with the first item above, WebAuthing the server.

  • Produce a wizard for publishing a slideshow/collection from the private sphere to the public sphere, based upon a Rights field within the collection metadata as above.

Work for MDID Developers?

rewrite the import script to generate better XML files.

MySQL database, table and column names have certain restrictions:

max Length 64 characters May not end with a space, and may not contain the characters: ‘/’, ‘\’, ‘.’

The utility currently converts field names from the CSV file into XML element names. XML element names have a different set of restrictions:

  • Names can contain letters, numbers, and other characters
  • Names must not start with a number or punctuation character
  • Names must not start with the letters xml (or XML, or Xml, etc)
  • Names cannot contain spaces
  • Names cannot contain the : (colon) character as this has a special meaning.

This means that it is inappropriate to convert column names that could contain spaces and other characters into XML entity names. Rather the solution would be to do the following

CSV file: Title,Description,ID,File Name,DC:Date.created,Author/Creator,Catalogued By, etc.

The headers should be made MySQL-safe by removing / \ and . from the column names and limiting the length to 64 characters. The whole file should be made XML safe by converting < > & to < > and & respectively.

  • <data>

    • <row>

      • <column>

        • <name>Title</name> <content>The Christmas Album</content>

        </column> <column>

        • <name>Description</name> <content>Textual description & information</content> # & converted to &

        </column> <column identifier="Y"> # use an attribute to show that this is the Identifier field?

        • <name>ID</name> <content>ARTH_aa9999</content>

        </column> <column resource="Y"> # use an attribute to show that this is the resource field?

        • <name>File Name</name> # spaces are allowed in MySQL column names. <content>ARTH_aa9999.jpg</content>

        </column> <column>

        • <name>DC:Date_created&lt;/name&gt; # . converted to _ <content>Not > 50 years ago</content>

        </column> <column>

        • <name>Author_Creator</name> # / converted to _ <content>Nana Mouskouri</content>

        </column> <column>

        • <name>Catalogued By</name> # spaces are allowed in MySQL column names. <content>Jonathan's Mum</content>

        </column>

      </row>

    </data>

MDID Work Packages

Work Packages for ACDT

  • Installing it on a new OUCS server
  • Authentication
  • Authorisation
  • Customisation
  • External work by the US MDID developers

MDID under WebAuth

Any authentication work needs to be designed and documented in a way that the goal is a department or division can install MDID and the Authentication work as a complete package.

Thoughts on authentication and WebAuth

We need to work out the best practical solution to getting the system working under Oxford Authentication in a manner that is sustainable and could be recreated with a departmental installation. Authorisation information is harder to achieve in a devolved manner as there is no access to lookups of the LDAP from outside of the OUCS domain.

Installation on a high end server.

It would be sensible to buy and install a new server, possibly a Blade for all this new work. There is plenty of money in the OxCLIC budget for this and the initial idea was that we'd replicate the work on another departmental server too.

Authentication

Method a) Using WebAuth proxy server. As MDID needs to run under Windows IIS server which doesn't support the normal WebAuth Apache module then the workaround is to use a "proxy server" that passes the username in the URL. See

This might mean two stages,

  • setting up with the SysDev team the proxy server

  • writing as piece of code to pull in the webauth username variable. Karl Harrison and Robin McCleary have both done this IIS hack on their web databases.

Method b) MDID has a way of using what it calls "SSO" but is really configuring it to expect the username in a URL with a security token from a customised php script that is under say a WebAuth server. See attached my attached graphic. .pdf

  • MDID Authentication documentation

<http://mdid.org/mdidwiki/index.php?title=Authentication_section>

  • MDID Single Sign-ON mechanism

<http://mdid.org/mdidwiki/index.php?title=Single_Sign-on_Integration>

Method c) IIS WebAuth solution

Stanford may have a IIS WebAuth solution. It didn't work as of 2005 on the Tip project but things may have changed.

Authorisation

LDAP work

Some work could be done on pulling in LDAP user ID information after gaining the WebAuth username for the test system.

Is there a way that we could pass any group or attribute details from the LDAP from within OUCS or if the server is located outside of OUCS. Yes, perhaps using the single sign-on method built into MDID. This trusts another server to be the authentication stage and to pass to it the username and IT attributes such as roles. If this trusted server was in the OUCS domain then it could have access to the LDAP details. The mechanism suggests that this trusted MDID auth server would be able to support multiple instances of MDID. this federated set-up might just be to difficult to support in terms of resources and expertise and the central model might win out.

MDID has an LDAP authentication configuration script where you specify the IP address of the LDAP server but at first glance it looks like it uses LDAP to cover both authentication and authorisation. Can we decouple it presuming the authentication is done elsewhere, could this be built in as a config script for the application.

Customisation

a) Notes and Annotations / Browsing and Searching

Gathering user requirements might discover some needs here especially for the non-HOA users. They may wish to template out the search display in some way. Although I believe each individual collection has different fields displayed depending on the preferencess for those fields.

b) Video and multimedia support

We need to gather some Oxford requirements for video and audio and see how they map to the new features in this area coming shortly within MDID

The developer has indicated that there is a draft version with support for media player on the website for pulling in Podcasts from another server.

c) Linking to Weblearn

Is there any work to be done here? SSO obviously helps, simple links between the two would help. What would be a standard use case for this.

d) The ability to have a public open version a collection would appeal to research projects who want a quick fix for getting visual material such as research collections or digitisation projects on the net with open access and with a search interface. At the moment you can do this with MDID as guest access to the collection but there isn't a thumbnail display view once you are in, just a Search and/or Browse view.

External work by the MDID developers

a) Adding authentication config script to the bundled version of MDID that tells it to check the WebAuth usernname session variable to see if someone is login in. i.e when they click login it uses a different script for checking credentials. (LDAP look up is difficult here in a federated model.)

MDID under Linux/Mac OS X: Fun and Games

It is apparently possible to run MDID under Linux by making use of the http://www.mono-project.com/ MONO software. MONO is a port of ASP to Linux, and includes an apache module mod_mono that will allow ASP pages to be run under apache httpd.

The basic process should be as follows:

  1. Obtain and install MONO for your platform I used the Mac OS X Framework installer, and it worked very nicely, and includes xsp, so you don't need to worry about installing that.
  2. Install mod_mono into your current apache setup. This was essentially a case of download, ./configure make and make install, I just had to point it to the appropriate apxs ( /opt/apache2/bin/apxs under OSX ) and apr-config (/opt/apache2/bin/apr-config) and tell it where to install ( /opt/apache2 )
  3. Install nant on your system (requires pkg-config to be installed, and that you set PKG_CONFIG_PATH=/path/to/your/mono/installation/pkgconfig/directory and export $PKG_CONFIG_PATH before running make
  4. The current runtime framework 'mono-2.0' is not correctly configured in the NAnt configuration file.:

    NAnt.Core.BuildException: The current runtime framework 'mono-2.0' is not correctly configured in the NAnt configuration file. ---> Unable to locate 'mono' module using pkg-config. Download the Mono development packages from http://www.mono-project.com/downloads/.: NAnt.Core.BuildException: Unable to locate 'mono' module using pkg-config. Download the Mono development packages from http://www.mono-project.com/downloads/.

I also had to edit the nant Makefile:

  • install: bootstrap # $(NANT) -f:NAnt.build install -D:install.prefix="$(prefix)" $(NANT) -f:NAnt.build install -D:install.prefix="/usr/local"
  • unpack MDID under your apache setup
  • set config.xml <database><upgradeable>true</upgradeable></database>

  • use the 'nant' tool to compile MDID into the necessary dll files by running 'nant go' in the MDID directory. I am currently trying to sort out the following error:
    • [csc] Starting '/Library/Frameworks/Mono.framework/Versions/1.1.13.8/bin/mono ("/Library/Frameworks/Mono.framework/Versions/1.1.13.8/lib/mono/2.0/gmcs.exe" @"/var/tmp/tmp4b361d76.tmp")' in '/Library/WebServer/ASP/MDID/lib/packages' [csc] /Library/WebServer/ASP/MDID/lib/packages/seclib-1.0/seclib/Security/Ssl/Tls1/ExpansionDeriveBytes.cs(116,11): error CS0104: HMAC' is an ambiguous reference between System.Security.Cryptography.HMAC' and `Org.Mentalis.Security.Cryptography.HMAC' [csc] Compilation failed: 1 error(s), 0 warnings BUILD FAILED - 0 non-fatal error(s), 1 warning(s) /Library/WebServer/ASP/MDID/lib/packages/default.build(89,4): External Program Failed: /Library/Frameworks/Mono.framework/Versions/1.1.13.8/lib/mono/2.0/gmcs.exe (return code was 1): NAnt.Core.BuildException: /Library/WebServer/ASP/MDID/lib/packages/default.build(89,4): External Program Failed: /Library/Frameworks/Mono.framework/Versions/1.1.13.8/lib/mono/2.0/gmcs.exe (return code was 1) in <0x00454> NAnt.Core.Tasks.ExternalProgramBase:ExecuteTask ()

This appears to be because nant is building against the mono 2.0 framework, rather than the 1.0 framework. The only way that I can see to alter this setting is by editing Nant.exe.conf and changing <platform name="unix" default="auto"> to <platform name="unix" default="mono-1.0"> and then running "nant go' again - all seemed to work.

  • use apache or mono's xsp webserver to configure the database via a web browser... unfortunately after entering the username and password Apache hengs, or returns a 500 Error, and trying the same thing under xsp also gives a hang or a 500 error, and the following output
    • ancalagon:/Library/WebServer/ASP/MDID/wwwroot jmiller$ xsp xsp Listening on port: 8080 (non-secure) Listening on address: 0.0.0.0 Root directory: /Library/WebServer/ASP/MDID/wwwroot Hit Return to stop the server.
    • * (/Library/Frameworks/Mono.framework/Versions/1.1.13.8/lib/xsp/1.0/xsp.exe:4226): WARNING **: _wapi_handle_unref: Attempting to unref unused handle 0x51
    • * (/Library/Frameworks/Mono.framework/Versions/1.1.13.8/lib/xsp/1.0/xsp.exe:4226): WARNING **: _wapi_handle_unref: Attempting to unref unused handle 0x50
    • * (/Library/Frameworks/Mono.framework/Versions/1.1.13.8/lib/xsp/1.0/xsp.exe:4226): WARNING **: _wapi_handle_unref: Attempting to unref unused handle 0x50
    • * (/Library/Frameworks/Mono.framework/Versions/1.1.13.8/lib/xsp/1.0/xsp.exe:4226): WARNING **: _wapi_handle_unref: Attempting to unref unused handle 0x51
    • * (/Library/Frameworks/Mono.framework/Versions/1.1.13.8/lib/xsp/1.0/xsp.exe:4226): WARNING **: _wapi_handle_unref: Attempting to unref unused handle 0x51
    • * (/Library/Frameworks/Mono.framework/Versions/1.1.13.8/lib/xsp/1.0/xsp.exe:4226): WARNING **: _wapi_handle_unref: Attempting to unref unused handle 0x51
    • * (/Library/Frameworks/Mono.framework/Versions/1.1.13.8/lib/xsp/1.0/xsp.exe:4226): WARNING **: _wapi_handle_unref: Attempting to unref unused handle 0x51

      System.Threading.ThreadAbortException: Thread was being aborted in <0x001d8> System.Web.UI.Page:ProcessRequest (System.Web.HttpContext context) in <0x00000> <unknown method>

    in (wrapper xdomain-dispatch) Mono.WebServer.XSPApplicationHost:ProcessRequest (object,byte[]&,byte[]&,int,long,int,long,int,string,string,string,string,byte[],string)

    • in (wrapper xdomain-invoke) Mono.WebServer.XSPApplicationHost:ProcessRequest (int,long,int,long,int,string,string,string,string,byte[],string,intptr,Mono.WebServer.SslInformations) in (wrapper remoting-invoke-with-check) Mono.WebServer.XSPApplicationHost:ProcessRequest (int,long,int,long,int,string,string,string,string,byte[],string,intptr,Mono.WebServer.SslInformations) in <0x006f4> Mono.WebServer.XSPWorker:InnerRun (System.Object state) in <0x0003c> Mono.WebServer.XSPWorker:Run (System.Object state)

  • reset config.xml <database><upgradeable>false</upgradeable></database>

  • make use of MDID under your apache setup (I wish :( )