This post is about using other languages apart from BeanShell and PHP.
PAW includes a CGI Handler to execute scripts by using the Common Gateway Protocol (CGI).
This handler is also used by the PHP plugin to call the CGI version of PHP.
The handler is defined inside the file
PAW_HOME/conf/handler.XML. Instead of using PHP we will use Perl to create a simple web page.
Finding the Executable Path
First thing to do is to install the SL4A and Perl APK from the
Android Scripting Project:
http://code.google.com/p/android-scripting/downloads/list
After installing the APKs and extracting Perl it's time to find out where the Perl executable is located.
One way to do it is to execute the Perl interpreter and to use a terminal emulator and run the
ps command.
In the case of Perl the executable is located here:
/data/data/com.googlecode.perlforandroid/files/perl/perl
CGI Configuration
Now it's time to edit the PAW handler configuration.
Open the file
PAW_HOME/conf/handler.XML and add the following lines below the
Basic Auth Handler configuration:
<handler status="active">
<name>Perl CGI Handler</name>
<description>Perl CGI Handler</description>
<removable>true</removable>
<id>perlCgiHandler</id>
<files />
<params>
<param name="perlCgiHandler.class" value="org.paw.handler.AndroidCgiHandler" />
<param name="perlCgiHandler.root" value="[PAW_HOME]/html" />
<param name="perlCgiHandler.suffix" value=".pl" />
<param name="perlCgiHandler.runwith" value="/data/data/com.googlecode.perlforandroid/files/perl/perl" />
<param name="perlCgiHandler.sl4a" value="true" />
<param name="perlCgiHandler.ENV_TMPDIR" value="[PAW_HOME]/tmp" />
</params>
</handler>
Let's have a look at the parameters.
The
class parameter defines the handler to use. In our case this is the CGI Handler. The next parameter is the
root parameter which specifies the directory the scripts are located. Subdirectories are also included.
The
suffix parameter defines the filename extension for the scripts. The
runwith parameter is the most important one, it defines the location of the CGI binary.
If the
sl4a is set to
true the environment variables
AP_HOST and
AP_PORT are set. Because this information is read from logcat entries, SL4A should be started right before the startup of PAW. Otherwise it might not possible for the handler to extract the SL4A configuration.
The last parameter sets the
TMPDIR environment variable. All parameters starting with
ENV_ are used to set environment variables.
Now the PAW configuration is complete and we can start to write a test CGI script.
The CGI Script
We will create a test CGI script inside the
PAW_HOME/html directory called
test.pl.
The test script looks like this:
print "Content-type: text/html\n\n";
print "Hello world!\n";
After starting PAW and entering the URL
http://<ip-address>:8080/test.pl into the address bar of the browser the following text should be displayed:
Hello world!
Conclusion
The Android Scripting Project offers many more interpreters. It should be possible use many of them together with PAW, as long as you can get them to work from the command line.