Wednesday, December 17, 2008

Command Line Argument Processor Library for Java Applications

Just came across a library which can be used to ease the task of command line argument processing. I should say it is truly based on an elaborate study as it covers almost all the possible paradigms of command line arguments. It is capable of validating all arguments passed. You can also form sets of arguments which need to be passed as a group. Moreover your program looks more professional as the parameters you accept can adhere to common standards used to pass arguments to programs on Linux/Windows Operating systems. I will try to post some examples of how easy it is to use this helper class J

Thank you, Dr. Matthias for such a wonderful piece of code.

For more information see Processing command line arguments in Java: Case closed.

Monday, July 14, 2008

Privacy Policy and Terms & Conditions for Free: The Developers Pain Eased

Privacy Policy and Terms and Conditions can be a headache for freelancer. TelePro released a sample of Privacy Policy, Copyright Notice and Terms and Conditions for everyone to download without any charge or obligation. You can feel free to use them on your own projects. A link back to Free Website Legal Documents would be appreciated but is not required.

There is another online customized Privacy Policy Generator by Direct Marketing Association.

List of Common Password Reset/Challenge Questions

Have you ever forgotten your password? Well I have J. Truly speaking now-a-days internet users have too many accounts & passwords to remember and so forgetting them is fairly common. In fact it is the most common help desk request. To ease these support guys many web-sites are opting for using automated password recovery mechanism wherein the user who forgot the password is challenged with a question which he/she had selected while creating the account. If the user answers the question correctly, the password is reset or sent to the users email account.

As this feature saves a lot of money for the website owners, and also saves the users a lot of time & efforts involved in recovering the password, it has now become a STANDARD. Consequently web developers have to face the challenge of populating the security question drop-down with the most common challenge questions which not only suit everyone one but are also easy to understand and remember.

I also faced such a problem recently but couldn't find a set of such questions published anywhere even after intensive "googling" :P Well don't doubt my searching skills J

So I decided to post one here itself, for the reference of all those enthu developers/designers round the world

Here it goes:

  • What is the first and last name of your first boyfriend or girlfriend?
  • Which phone number do you remember most from your childhood?
  • What was your favorite place to visit as a child?
  • Who is your favorite actor, musician, or artist?
  • What is the name of your favorite pet?
  • In what city were you born?
  • What high school did you attend?
  • What is the name of your first school?
  • What is your favorite movie?
  • What is your mother's maiden name?
  • What street did you grow up on?
  • What was the make of your first car?
  • When is your anniversary?
  • What is your favorite color?
  • What is your father's middle name?
  • What is the name of your first grade teacher?
  • What was your high school mascot?
  • Which is your favorite web browser?

I will surely add to these if I am able to figure out any more… If you know any feel; free to add them in the comments area.

Saturday, July 12, 2008

Setting up FTP Server on Ubuntu – Amazon EC2

File Transfer Protocol (FTP) is a TCP protocol for uploading and downloading files between computers. FTP works on a client/server model. The server component is called an FTP daemon. It continuously listens for FTP requests from remote clients. When a request is received, it manages the the login and sets up the connection. For the duration of the session it executes any of commands sent by the FTP client.

Access to an FTP server can be managed in two ways:

  • Anonymous
  • Authenticated

In the Anonymous mode, remote clients can access the FTP server by using the default user account called 'anonymous" or "ftp" and sending an email address as the password. In the Authenticated mode a user must have an account and a password. User access to the FTP server directories and files is dependent on the permissions defined for the account used at login. As a general rule, the FTP daemon will hide the root directory of the FTP server and change it to the FTP Home directory. This hides the rest of the file system from remote sessions.

Amazon EC2: Unblock FTP port

FTP works on port 21 by default. This port is blocked by the AWS firewall. You must unblock this port (21) by changing the instance permissions prior to setting up FTP so that you can access FTP remotely. This can be done using the AWS EC2 Elastic Fox client. Please refer to my other post about Unblocking ports on the Amazon EC2 for more details.

vsftpd - FTP Server Installation

vsftpd is an FTP daemon available in Ubuntu. It is easy to install, set up, and maintain. To install vsftpd you can run the following command:


sudo apt-get install vsftpd

vsftpd - FTP Server Configuration

You can edit the vsftpd configuration file, /etc/vsftpd.conf, to change the default settings. By default only anonymous FTP is allowed. If you wish to disable this option, you should change the following line:

anonymous_enable=YES

to

anonymous_enable=NO

By default, local system users are not allowed to login to FTP server. To change this setting, you should uncomment the following line:

#local_enable=YES

By default, users are allowed to download files from FTP server. They are not allowed to upload files to FTP server. To change this setting, you should uncomment the following line:

#write_enable=YES

Similarly, by default, the anonymous users are not allowed to upload files to FTP server. To change this setting, you should uncomment the following line:

#anon_upload_enable=YES

The configuration file consists of many configuration parameters. The information about each parameter is available in the configuration file. Alternatively, you can refer to the man page, man 5 vsftpd.conf for details of each parameter.

Once you configure vsftpd you can start the daemon. You can run following command to run the vsftpd daemon:


sudo /etc/init.d/vsftpd start

 

Please note that the defaults in the configuration file are set as they are for security reasons. Each of the above changes makes the system a little less secure, so make them only if you need them.

Friday, July 27, 2007

A Nice Security Solution for JSF Web Applications

I was looking on various ways of securing a JSF Web App. Finally I found this one :D

Effective Page Authorization In JavaServer Faces
— Application security - the art of applications defending themselves - represents an important line of defence in an overall in-depth security strategy. Web applications that follow the Model-View-Controller (MVC) architecture can, and should, have security implemented on all three layers. Normally it's the controller component that handles page authorization in MVC, the view layer that hides controls and information based on user authorization, and the model that enforces the business rules and input validation. However, it's up to the developer, based on an individual security policy and the programming technology used, to decide where to put security. Using pluggable validator components in JavaServer Faces (JSF), for example, developers may decide to verify user input on the view layer as well as on the model layer.


I also modified the code to use a Custom Security Implementation instead of Container Managed Security. The places where I had to make changes were:



com.groundside.jsf.security.shared.J2eeSecurityObject

  • Line 114: Fetched the username from a Session Attribute

  • Line 242: Checked role using a custom method which internally used the rolesmap stored as a session attribute



I'll update this post once I verify that it is working :)

Monday, June 25, 2007

Images are not Visible in the BIRT WebViewer on Weblogic, Websphere

I came across a problem where the images in BIRT reports were not visible. Go through the Checklist below:

  • Are you using the BIRT Web Viewer to see the rendered BIRT reports?
  • Are you viewing rptdesign or rptdocuments?
  • The BIRT report is seen correctly when BIRT Web Viewer is deployed on Tomcat, JBoss, WebSphere 6.1 (i.e. images are visible). The temporary directory used to store images is present in the extracted WAR on these servers.
  • Whereas images for in the same report are not visible when the same BIRT WebViewer is deployed on WebLogic or WebSphere 5.1. The temporary directory used to store images is not present in the extracted WAR on these servers.
  • Log contains the message:
org.eclipse.birt.report.engine.api.HTMLServerImageHandler handleImage
SEVERE: imageURL or ImageDIR is not set!

GOOD NEWS: This is a known issue with the BIRT WebViewer 2.1.x. The BIRT bug id is 169873. It has been observed on WebLogic 9.1, 9.2 and WebSphere 5.1. The fix is already available in the latest BIRT build 2.2 RC3. The Final BIRT 2.2 release is expected by end of June 2007.

Check the details here:
https://bugs.eclipse.org/bugs/show_bug.cgi?id=169873
http://dev.eclipse.org/newslists/news.eclipse.birt/msg15609.html

I had verified that installing BIRT Web-Viewer 2.2RC3 fixes the problem for WebLogic on Windows and Solaris. Some other people claim that it fixes for WebSphere as well. The images in rptdesign, rptdocument files are correctly visible in the browser. So the fix by BIRT team (for 169873) indeed solves the problem.

BAD NEWS: If you do not wish to upgrade to the BIRT WebViewer 2.2, I am afraid there is no easy fix which will solve your problem. People (including myself!!) have tried a number of tricks in vain. The only way out is probably to handle the temporary images by yourself, write a new Servlet to stream those images and change the report rendering code to have the images point to the new Servlet.

Images in MHT not visible: Issue 2

MHT Issue 2:

The images in MHT files are not displayed in IE. Instead a red cross appears.

Just check whether the URL to the MHT file contains any Spaces, encoded non US-ASCII, Special characters or for that matter any encoded characters. Well, well, well if it does then there is nothing much you can do about it! It is a known Microsoft bug. Microsoft has hot-fix for it. The hotfix description mentions only “Spaces” but the fix works for all encoded characters like spaces, internationalized characters, special characters, etc. The details are here:

Windows XP

SP2: http://support.microsoft.com/kb/891019

SP1: http://support.microsoft.com/kb/895394

Strangely, it is free but not available for direct download. Nor is it a part of any of the Microsoft Patches as there are no patches released since the problem was found! I hope to see it in Windows XP SP3 though. For now, you will have to call up support and they will happily give you the link to it. You will get it almost instantly. I know it is really funny to ask ones client to apply the hot-fix on all the machines. So you might want to consider some alternatives.

Alternative One:

Encode the part of the URL which has the problem causing characters. Personally, I would prefer HEX encoding. You can encode the MHT URL into HEX at the point it is generated. Pass it as a URL/request parameter henceforth. The code which streams out the MHT file will now have to decode it back from HEX and extract the information needed.

Let Me know if you find any other alternatives :P