Skip to content

blrichwine/fae2

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

448 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Functional Accessibility Evaluator, version 2.0.0

Development is primarily supported by the University of Illinois at Urbana-Champaign. The development is lead by Accessible IT Group which is a unit of Disability Resources and Educational Servcies which is part fo the College of Applied Health Sciences. Additional contributions for the HTMLUnit based web site analysis engine are provided by Administrative Information Technology Services (ATIS) of University Administration.

What is Functional Accessibility Evaluator (FAE)?

  • FAE analyzes a website based on the requirements of the W3C Web Content Accessibility Guidelines 2.0 Single A and AA Success Criteria.
  • Every rule used in FAE 2.0 references at primary WCAG 2.0 Success Criterion requirement it is based on.
  • The rules support not only accessibility, but also usable web design for people with disabilities.
  • The rules support accessible and usable design by enforcing the accessible coding practices and techniques of the Accessible Rich Internet Application (ARIA) 1.0 and W3C HTML5 specifications.

Apache 2.0 License

FAE may be used and distributed based on the terms and conditions of the Apache License Version 2.0.

Server requirements

  • Apache2 Web Server
  • Python 2.7.x
  • Java 1.8
  • Python development package (python-dev in Debian/Ubuntu)
  • postgresql-devel (libpq-dev in Debian/Ubuntu)

Python modules

Here is the [requirements.txt] file to use with pip

  Django==1.9
  django-password-reset==0.9
  django-registration==2.0.4
  django-timezone-field==1.3
  future==0.15.2
  Markdown==2.6.5
  psycopg2==2.6.1
  pytz==2015.7
  requests==2.10.0

Creating a secrets.json file

The "secretes.json" file must be created and provides:

  • Security information for Django
  • Information for Django to access and manage the database
  • Information on on e-mail commmunications for registration and announcements.
  • Place this file in the [absolute path]/fae2/fae2 directory
{
  	"FILENAME": "secrets.json",
    "SITE_URL": "[your site URL]",
    "SITE_NAME": "FAE 2.0",
    "PROCESSING_THREADS": 4, 
   	"SECRET_KEY": "",
    "SELF_REGISTRATION_ENABLED": true,
    "ANONYMOUS_REPORTS_ENABLED": true,
    "SHIBBOLETH_ENABLED": false,
    "SHIBBOLETH_URL": "",
    "SHIBBOLETH_NAME": "",
    "SHIBBOLETH_SUPERUSER": "",
    "DEBUG": false,
    "LOGGER_LEVEL": "INFO",
   	"DATABASE_HOST": "[ip address]",
   	"DATABASE_PORT": "[port]",
   	"DATABASE_NAME": "[DB name]",
    "DATABASE_USER": "[DB username]",
    "DATABASE_PASSWORD": "[DB password]",
    "ALLOWED_HOSTS": ["[your site URL]"],
    "EMAIL_HOST": "[mailserver]",
    "EMAIL_PORT": 587,
    "EMAIL_USE_TLS": true,
    "EMAIL_HOST_USER": "[email]",
    "EMAIL_HOST_USER_PASSWORD": "[mail password]",
    "ACCOUNT_ACTIVATION_DAYS" : 3,
    "CONTACT_EMAIL" : "[email]"
    "ADMIN_USER_NAME" : "[username]",
    "ADMIN_FIRST_NAME" : "[first name]",
    "ADMIN_LAST_NAME" : "[last name]",
    "ADMIN_PASSWORD": "[admin password]",
    "ADMIN_EMAIL": "[email]",
    "ANNONYMOUS_PASSWORD" : "[annonymous password]",
    "DEFAULT_ACCOUNT_TYPE" : 2    
}

Apache 2.0 configuration notes

Example Apache configuration gile

<VirtualHost *:80 >
	     Servername  fae.[domain]
	     ServerAlias fae.[domain]

  Alias /static [absolute path]/fae2/fae2/static/

  <Directory [absolute path]/fae2/fae2/static>
    Require all granted
  </Directory>

  <Directory [absolute path]/fae2>
    <Files wsgi.py>
     Require all granted
    </Files>
  </Directory>

  WSGIDaemonProcess fae2 python-path=[absolute path]/fae2/:[absolute path]/virtual-en
vironments/fae2/lib/python3.4/site-packages/
  WSGIProcessGroup  fae2
  WSGIScriptAlias [absolute path]/fae2/fae2/wsgi.py
</VirtualHost>

Setting up fae directories for read/write access

  • Need to create "data/" with write permissions for fae-util, typically "root"
  • Need to create "logs/" with write permissions for "apache" user

Multiple Django Apps and mod_wsgi

Initialize database tables

  • You will need to run python manage.py migrate to create the tables in the database
  • After the tables in the database are created, go to the "populate" directory
  • In the populate directory run python pop_all.py to initialize the tables

fae-util configuration and testing

  • Purpose of fae-util
    • fae-util is a server based browser emulator based on HTMLUnit
    • It monitors the database waiting for evaluation requests
    • When it identifes a request it will then load web pages and analyze them using the OpenAjax Evaluation Library
    • Each page evaluation results in a JSON file being crerated with the results
    • After all pages are analyzed the information in the JSON files is moved to the database
  • Testing fae-util
    • Go to the "fae-util" directory
    • Use ./run -c test.properties to test if the utility is properly installed and configured
    • It will output URL processing information to the console
    • It will create a directory called "test" that contains *.json files of evaluaiton results
    • NOTE: You must delete the "test" directory to rerun this test (e.g. directory exists error will occur)
  • Creating a service to run evaluation requests

Utility to clean up reports and update summary statistics

  • IMPORTANT: Must run fae-util/process_achive_reports.py to process remove reports and update summary statistics
  • Create cron job to run a shell script once a day
  • The shell script contains the following command lines:
#!/usr/bin/env bash
/python /process_achive_reports.py

Shibboleth Configuration

To enable shibboleth support for your institution or organization you need your service manager to enable the following attributes to the entityID identifying the installation of FAE with Shibboleth Support (e.g. "https://fae.illinois.edu/shibboleth" for the University of Illinois campus):

  • eppn
  • giveName
  • sn
  • mail

Enityt IDs: [https://www.incommon.org/federation/info/all-entities.html#IdPs]

Testing e-mail on localhost development

  • Use a python utitlity to simulate an SMTP server: python -m smtpd -n -c DebuggingServer localhost:1025
  • Configure e-mail in "secretes.json" with the following values:
    ....
    "EMAIL_HOST": "localhost",
    "EMAIL_PORT": 1025,
    "EMAIL_USE_TLS": false,
    "EMAIL_HOST_USER": "None",
    "EMAIL_HOST_USER_PASSWORD": "None",
    ....

SELinux issues (e.g. CENTOS, REDHAT)

FAE directory permissions

Self registration and sendmail configuration

Development Resources

Django Shibboleth Resources

Incommon Resources (Multi-Institution Shibboleth)

About

Functional Accessibility Evaluator 2.x

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages

  • JavaScript 67.3%
  • Python 18.0%
  • HTML 9.0%
  • Java 3.7%
  • CSS 2.0%