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.
- 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.
FAE may be used and distributed based on the terms and conditions of the Apache License Version 2.0.
- 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) psycopg2
package for python to talk to postgres
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
psycopg2
future==0.15.2
Markdown==2.6.5
pytz==2015.7
requests==2.10.0
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",
"PROCESSING_THREADS": 4,
"SITE_URL": "[your site URL]",
"SITE_NAME": "FAE 2.0 for [your organization]",
"SECRET_KEY": "[random string of 40-50 characters used by django]",
"SELF_REGISTRATION_ENABLED": true,
"ANONYMOUS_ENABLED": true,
"DEBUG": false,
"LOGGER_LEVEL": "INFO",
"DATABASE_HOST": "[ip address or localhost if database on same server]",
"DATABASE_PORT": "[port, typicall 5432]",
"DATABASE_NAME": "[DB name]",
"DATABASE_USER": "[DB username]",
"DATABASE_PASSWORD": "[DB password]",
"ALLOWED_HOSTS": ["[your site URL]"],
"EMAIL_HOST": "[mailserver]",
"EMAIL_PORT": 25,
"EMAIL_USE_TLS": true,
"EMAIL_HOST_USER": "[email used for sending registration information and announcements]",
"EMAIL_HOST_USER_PASSWORD": "[email password]",
"ACCOUNT_ACTIVATION_DAYS" : 3,
"CONTACT_EMAIL" : "[email notification when a contact form is submitted]",
"ADMIN_USER_NAME" : "[username of admin user]",
"ADMIN_FIRST_NAME" : "[first name of admin]",
"ADMIN_LAST_NAME" : "[last name of admin]",
"ADMIN_PASSWORD": "[password for admin]",
"ADMIN_EMAIL": "[email for admin]",
"ANONYMOUS_PASSWORD" : "[anonymous password, use random characters]",
"DEFAULT_ACCOUNT_TYPE" : 2
}
- MOD_WSGI must be installed and support Python 2.7
<VirtualHost *:80 >
Servername [fae.somedomain.org]
ServerAlias [fae.somedomain.org]
Alias /static /var/www/fae2/fae2/fae2/fae2/static/
<Directory /var/www/fae2/fae2/fae2/fae2/static>
Require all granted
</Directory>
<Directory /var/www/fae2/fae2/fae2>
<Files wsgi.py>
Require all granted
</Files>
</Directory>
WSGIDaemonProcess fae2 python-path=/var/www/fae2/fae2/fae2:/var/www/fae2/fae2env/lib/python2.7/site-packages
WSGIProcessGroup fae2
WSGIScriptAlias / /var/www/fae2/fae2/fae2/fae2/wsgi.py process-group=fae2
</VirtualHost>
- Need to create
data
directory with write permissions forapache
user and grouproot
user - Need to create
logs
direcotry with write permissions forapache
user and grouproot
user
- 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
- 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
- IMPORTANT: Must run
fae-util/python process_evaluation_requests.py
to process website evaluations in the background - There are a number of ways to make this program run in parallel with django application depending on your operating system
- Linux: How to write a System V init script to start, stop, and restart my own application or service(http://www.cyberciti.biz/tips/linux-write-sys-v-init-script-to-start-stop-service.html)
- IMPORTANT: Must run
- 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 /fae-util/process_achive_reports.py
To enable shibboleth support through InCommon 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
Enityt IDs: [https://www.incommon.org/federation/info/all-entities.html#IdPs]
- 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",
....