Changes for version 1.05
- In cgiapp_prerun() protect against XSS and CSRF: o Only accept CGI params if the request method is 'POST'. o Ensure digest in session matches digest in cookie. o http://www.freedom-to-tinker.com/blog/wzeller/popular-websites-vulnerable-cross-site-request-forgery-attacks
- Change 'use base' to 'use parent'.
- Remove form_action from config file. See sub script_name.
- Replace references to FCGI with Plack. This includes no longer shipping FCGI-specific files nor patches to Apache's httpd.conf.
- Ship httpd/cgi-bin/office/contacts.psgi.
- Adopt Log::Dispatch::Configurator. See App::Office::Contacts::Util::LogConfig.
- Replace Carp::croak with die, assuming calling code uses Try::Tiny.
- Stop using Time::Elapsed (at table create/populate time).
- Zap drop_and_create_all_tables() and run() from App::Office::Contacts::Util::Create.
- In drop.tables.pl and create.tables.pl, change the 'verbose+' option definition to 'verbose', since the '+' doesn't make sense.
- Clean up what is real data and what is fake data.
- Rename data/email_addresses.txt => data/fake.email_addresses.txt.
- Rename data/email_people.txt => data/fake.email_people.txt.
- Rename data/people.txt => data/fake.people.txt.
- Rename data/phone_numbers.txt => data/fake.phone_numbers.txt.
- Rename data/phone_people.txt => data/fake.phone_people.txt.
- Rename data/organizations.txt => data/fake.organizations.txt.
- Add comments to .htoffice.contacts.conf, while simplifying the discussion of the Javascript URL.
- Change the default URL of the FAQ.
- Use common::sense instead of strict and warnings.
- Add unicode to .htoffice.contacts.conf - used by SQLite - and add corresponding code to BEGIN{} in App::Office::Contacts::Database, in case anyone wants to use DBD::SQLite.
- Fix off-by-one error in report.js when indexing into document.report_form.report_id.options[report - 1].text.
- Change some logging in Contacts.pm from info to debug.
Documentation
Create all tables in the 'contacts' database
Drop all tables in the 'contacts' database
Populate some tables in the 'contacts' database
Populate tables in the 'contacts' database
Report sizes of all tables in the 'contacts' database
Modules
A web-based contacts manager
Provides
in lib/App/Office/Contacts/Base.pm
in lib/App/Office/Contacts/Controller.pm
in lib/App/Office/Contacts/Controller/Exporter/Notes.pm
in lib/App/Office/Contacts/Controller/Exporter/Organization.pm
in lib/App/Office/Contacts/Controller/Exporter/Person.pm
in lib/App/Office/Contacts/Controller/Exporter/Report.pm
in lib/App/Office/Contacts/Controller/Exporter/Search.pm
in lib/App/Office/Contacts/Controller/Initialize.pm
in lib/App/Office/Contacts/Controller/Notes.pm
in lib/App/Office/Contacts/Controller/Organization.pm
in lib/App/Office/Contacts/Controller/Person.pm
in lib/App/Office/Contacts/Controller/Report.pm
in lib/App/Office/Contacts/Controller/Search.pm
in lib/App/Office/Contacts/Database.pm
in lib/App/Office/Contacts/Database/Base.pm
in lib/App/Office/Contacts/Database/EmailAddress.pm
in lib/App/Office/Contacts/Database/Notes.pm
in lib/App/Office/Contacts/Database/Occupation.pm
in lib/App/Office/Contacts/Database/Organization.pm
in lib/App/Office/Contacts/Database/Person.pm
in lib/App/Office/Contacts/Database/PhoneNumber.pm
in lib/App/Office/Contacts/Database/Util.pm
in lib/App/Office/Contacts/Util/Config.pm
in lib/App/Office/Contacts/Util/Create.pm
in lib/App/Office/Contacts/Util/LogConfig.pm
in lib/App/Office/Contacts/Util/Validator.pm
in lib/App/Office/Contacts/View.pm
in lib/App/Office/Contacts/View/Base.pm
in lib/App/Office/Contacts/View/Notes.pm
in lib/App/Office/Contacts/View/Occupation.pm
in lib/App/Office/Contacts/View/Organization.pm
in lib/App/Office/Contacts/View/Person.pm
in lib/App/Office/Contacts/View/Report.pm
in lib/App/Office/Contacts/View/Role/Report.pm