Footprint: stable release is out (codename: FOR)
After a long vacation, I finally had time to release the first stable release of Footprint :). The project is new and should evolve to something more sophisticated in the next few months. For now, we are proud to provide the community a simple tool to enhance the quality of JUG events or perhaps bigger or more commercial events. I hope you follow our Footprint.
* The project's license is LGPL and the full source code is available at the SVN repository.
The Footprint project
As explained in
my last blog about the Footprint, the aim of the project is to provide an easy way
of delivering certificates to JUG meetings attendants. The basic user story is the following:
- The JUG promotes an event.
- During the event, a JUG representative collects the name and email of the participants.
- After the event, all participants receive a certificate of presence - signed PDF file - through email.
- The generated certificates can be validated through the public key of the JUG, published in the JUG web site.
How it works?
The algorithm of footprint:
- Reads an XML config file, and uses JAXB to construct an Object representation of the configuration. The
configuration file contains several definitions, such as JDBC connection, PDF template and keystore details.
- Reads the PDF template, previously created with OpenOffice or other PDF generator tool.
- Access the JDBC connection to read the JUG members data. For each addressee:
- Fill the PDF template with the member data (name, address, etc.)
- Generate a new PDF file with the member information.
- Sign the new PDF
- Send the new file by email to the addressee
The security part of the project is based on the Bouncy Castle's library, and all PDF manipulation is done with the fantastic iText library. Other basic features are the logging over all operations and the internationalization of all classes.
How to run the example?
The release contains a README.txt file with brief instruction on how to start using Footprint, but in short you must:
- download the release and extract it in your computer.
- Edit the file
resources/configExample.xmland change the user and password of the SMTP server:
The example comes pre-configured to access the gmail server, but you can change it to any SMTP server. You can also configure the proxy information in case you are behind a firewall. You can also try a first time without configuring the SMTP settings, it will generate the signed PDF without sending it through email.
<email smtp.user="EMAIL_ACCOUNT_LOGIN" smtp.password="EMAIL_ACCOUNT_PASSWORD" msg.from="EMAIL_ACCOUNT_LOGIN" smtp.transfer.protocol="smtp"
smtp.star.ttls.enable="true" smtp.host="SMTP_HOST" smtp.content.type="text/plain"
smtp.auth="true" socks.proxy.port="" socks.proxy.host=""
msg.subject="Footprint Certificate - DEMO"
msg.body="You can write a message body here.. or customize it through the code, check the demo file..." />
- Edit the file
demo.csvin order to include an email address you can verify later :). You can include several new lines in this file in order to observe the system generating multiple PDFs.
- Open a console and run the following command:
java -cp .;lib\bcprov-jdk16-136.jar;lib\csvjdbc.jar;lib\footprint-config.jar;lib\footprint-core.jar;lib\itext-2.0.2.jar;lib\mail.jar FootprintDemo
That's it - if it fails for any reason, please don't hesitate to send me an email with the failure description.
How to change the configuration file?
Documentation is an issue by design of our project. Since we don't have many collaborators, we always prioritize the implementation (code first). But you can check the configuration schema, and if you have doubts about its structure, please leave a comment below this page.