Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.
Info
titleAbout the Drupal Filter

The Drupal Filter is a library package that gets installed in the in the Fedora Web-App on the Tomcat Application Server. It is the Fedora side of the communication between Islandora's Tuque library and the Fedora repository system.

 

1. Download the Latest Version of the Islandora Drupal Filter

Download the appropriate Drupal Filter file, and copy it to $FEDORA_HOME/tomcat/webapps/fedora/WEB-INF/lib

...

Code Block
languagebash
$ wget  https://github.com/Islandora/islandora_drupal_filter/releases/download/v7.1.3/fcrepo-drupalauthfilter-3.78.0.jar 
$ cp -v fcrepo-drupalauthfilter-3.78.0.jar $FEDORA_HOME/tomcat/webapps/fedora/WEB-INF/lib

...

Code Block
languagehtml/xml
<!--File to hold drupal connection info for the FilterDrupal servlet filter. For multisite drupal installs you can include multiple
connection elements.  We will query all the databases and assume any user in any drupal db with the same username and password are the same
user.  We will gather all roles for that user from all databases.  This is a potential security risk if a user in one drupal db has the same
username and password as another user in a separate drupaldb.  We are also assuming all drupal dbs to be mysql.  This file should be located
in the same directory as the fedora.cfcg file-->

<FilterDrupal_Connection>
  <connection server="localhost" dbname="[drupal_database]" user="[drupal_db_user]" password="[drupla_db_password]" port="3306">
    <sql>
                  <!--Different sql statement for each connection.  This is for drupal multisites that are setup using one database with
                  table prefixes.  We don't do this but some people might.-->
                  SELECT DISTINCT u.uid AS userid, u.name AS Name, u.pass AS Pass, r.name AS Role FROM (users u LEFT JOIN users_roles ON
                  u.uid=users_roles.uid) LEFT JOIN role r ON r.rid=users_roles.rid WHERE u.name=? AND u.pass=?;
    </sql>
  </connection>
</FilterDrupal_Connection>

 

 

 

 

Now change the owner to the user that runs the web server, as Islandora needs to modify the file:

...

Code Block
# $FEDORA_HOME/tomcat/bin/shutdown.sh

# $FEDORA_HOME/tomcat/bin/startup.sh

5. Test the Drupal Servlet Filter

Islandora will test your Fedora connection for you. To verify that the servlet filter is working properly, go to the Islandora configuration page (admin/islandora/configure) and look for the green checkmark. A successful installation will look like this:

Image Removed

An unsuccessful installation will look like this:

Image Removed

If you see this error, there are two possible sources for the failure:

  • You do not have the correct fcrepo-drupalauthfilter-xxxx.jar
  • Your filter-drupal.xml is incorrect or missing

This Python script was developed to verify the database connection(s) defined in filter-drupal.xml files. The script is available at:

https://github.com/islandora-labs/drupal_filter_validator

 

To download and run the test, on the server where Fedora is running, issue the following command:
Code Block
# git clone https://github.com/Islandora-Labs/drupal_filter_validator
# ./test_db_connection.py $FEDORA_HOME/server/config/filter-drupal.xml

You should see something like this:
Connection 1 - OK: connection to Drupal database successful, and user drupalAdmin has select,insert,update privileges on the users table.
Connection 2 - OK: connection to Drupal database successful, and user drupalAdmin has select,insert,update privileges on the users table.
Connection 3 - OK: connection to Drupal database successful, and user drupalAdmin has select,insert,update privileges on the users table.

If you don't get the a successful set of tests, please retrace your steps.

Create a milestone 3 snapshot backup:

Code Block
# $FEDORA_HOME/tomcat/bin/shutdown.sh
# /etc/init.d/mysql stop
# /etc/init.d/apache2 stop

# cd /usr/local 
# tar -cvzf fedora-milestone3.tar.gz fedora

# cd /var/lib 
# tar -cvzf mysql-milestone3.tar.gz mysql

# cd /var/www
# tar -cvzf drupal-milestone3.tar.gz drupal

# /etc/init.d/mysql start
# $FEDORA_HOME/tomcat/bin/startup.sh
# /etc/init.d/apache2 start
Note
The islandora_drupal_filter passes the username of 'anonymous' through to Fedora for unauthenticated Drupal Users. A user with the name of 'anonymous' may have XACML policies applied to them that are meant to be applied to Drupal users that are not logged in or vice-versa. This is a potential security issue that can be plugged by creating a user named 'anonymous' and restricting access to the account.