<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>http://wiki.webos-internals.org/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=DrewPre</id>
	<title>WebOS Internals - User contributions [en]</title>
	<link rel="self" type="application/atom+xml" href="http://wiki.webos-internals.org/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=DrewPre"/>
	<link rel="alternate" type="text/html" href="http://wiki.webos-internals.org/wiki/Special:Contributions/DrewPre"/>
	<updated>2026-04-18T15:33:12Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.35.1</generator>
	<entry>
		<id>http://wiki.webos-internals.org/index.php?title=Meetups&amp;diff=9825</id>
		<title>Meetups</title>
		<link rel="alternate" type="text/html" href="http://wiki.webos-internals.org/index.php?title=Meetups&amp;diff=9825"/>
		<updated>2010-05-08T10:52:20Z</updated>

		<summary type="html">&lt;p&gt;DrewPre: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;People interested in meeting up should plop in their area and name so when we have critical mass it can be organized.&lt;br /&gt;
&lt;br /&gt;
See also [http://predevcamp.org/ predevcamp.org].&lt;br /&gt;
&lt;br /&gt;
== United States ==&lt;br /&gt;
&lt;br /&gt;
=== Arizona ===&lt;br /&gt;
==== Phoenix, AZ ====&lt;br /&gt;
# EvanDotPro&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== California ===&lt;br /&gt;
==== Fresno ====&lt;br /&gt;
# A2NY&lt;br /&gt;
&lt;br /&gt;
==== San Diego/Los Angeles ====&lt;br /&gt;
# JonVisc&lt;br /&gt;
# seigex (Inland Empire)&lt;br /&gt;
# hopspitfire&lt;br /&gt;
# hmagoo (desert)&lt;br /&gt;
#dpc (OC) [http://www.meetup.com/socal-webOS-Development-Group/ SoCal webOS Development Group]&lt;br /&gt;
&lt;br /&gt;
==== San Francisco/Bay Area/SJ ====&lt;br /&gt;
Since Palm, Inc. is located in the Bay Area, Palm employees may join us for some tech talk or tips and tricks.&lt;br /&gt;
&lt;br /&gt;
http://www.meetup.com/palm-webos/&lt;br /&gt;
&lt;br /&gt;
# rulethirty (organizer)&lt;br /&gt;
# Robi&lt;br /&gt;
# jblebrun&lt;br /&gt;
# simplyflipflops&lt;br /&gt;
# pEEf&lt;br /&gt;
# bzhou (eno in IRC, optware manager)&lt;br /&gt;
# sarysa&lt;br /&gt;
&lt;br /&gt;
=== Colorado ===&lt;br /&gt;
==== Denver ====&lt;br /&gt;
# destinal&lt;br /&gt;
# rcanzlovar&lt;br /&gt;
# raeb&lt;br /&gt;
&lt;br /&gt;
=== Georgia ===&lt;br /&gt;
==== Atlanta ====&lt;br /&gt;
# DrewPre&lt;br /&gt;
&lt;br /&gt;
=== Indiana ===&lt;br /&gt;
==== Northern Indiana ====&lt;br /&gt;
# jaf0&lt;br /&gt;
&lt;br /&gt;
=== Kentucky ===&lt;br /&gt;
==== Cincinnati/NKY ====&lt;br /&gt;
# xandrake__&lt;br /&gt;
# foamcoretrash&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Massachusetts ===&lt;br /&gt;
==== Boston ====&lt;br /&gt;
Please join us in the [http://www.webosboston.org/ WebOSBOSTON community - We have monthly meetings.]&lt;br /&gt;
# nebula (MIT campus area)&lt;br /&gt;
# jcrawford (Lynn MA area)  http://josephcrawford.com/&lt;br /&gt;
# [[User:FreeTim|FreeTim]]  (MIT campus area - in Kendall Sq.)&lt;br /&gt;
# djbclark Danny Clark &amp;lt;dclark@pobox.com&amp;gt; http://pobox.com/~dclark (MIT campus area)&lt;br /&gt;
# oc80z (MIT,Central Square for drinks)&lt;br /&gt;
# beingboston (Newton, Watertown area. Has T pass, can travel)&lt;br /&gt;
# trokair (Waltham area, can travel)&lt;br /&gt;
# r3compile&lt;br /&gt;
# asedeno (MIT)&lt;br /&gt;
&lt;br /&gt;
=== Minnesota ===&lt;br /&gt;
==== Minneapolis/St. Paul ====&lt;br /&gt;
# xluryan&lt;br /&gt;
# helfire&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Missouri ===&lt;br /&gt;
==== Kansas City ====&lt;br /&gt;
# xorg  (attending [http://kansascity.predevcamp.org/attendees/ KC predev camp] - a couple dozen have signed up and growing)&lt;br /&gt;
# [[User:Clebio|Clebio]] 12:51, 24 August 2009 (UTC)&lt;br /&gt;
# [[User:Ikyo|Ikyo]]&lt;br /&gt;
&lt;br /&gt;
=== Nevada ===&lt;br /&gt;
==== Las Vegas: [[wikipedia:DEF CON (convention)|Defcon]] 17 ====&lt;br /&gt;
# emkman&lt;br /&gt;
# pEEf&lt;br /&gt;
# destinal&lt;br /&gt;
# tharris-&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== New York ===&lt;br /&gt;
==== Albany ====&lt;br /&gt;
# JackieRipper&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Oregon ===&lt;br /&gt;
==== Portland Area ====&lt;br /&gt;
# rck&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Texas ===&lt;br /&gt;
==== Austin ====&lt;br /&gt;
# HattCzech&lt;br /&gt;
==== Dallas ====&lt;br /&gt;
# HebrewzHammer&lt;br /&gt;
# [[user:X1011|X1011]] ([[wikipedia:University of Texas at Dallas|UTD]], attended [http://dallas.predevcamp.org/ preDevCamp])&lt;br /&gt;
&lt;br /&gt;
=== Washington ===&lt;br /&gt;
==== Seattle Area ====&lt;br /&gt;
# tictac&lt;br /&gt;
# BurntSky&lt;br /&gt;
# meshuga&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Wisconsin ===&lt;br /&gt;
==== Madison ====&lt;br /&gt;
# [[user:Christian.wilcox|christianwilcox]]&lt;/div&gt;</summary>
		<author><name>DrewPre</name></author>
	</entry>
	<entry>
		<id>http://wiki.webos-internals.org/index.php?title=Meetups&amp;diff=9824</id>
		<title>Meetups</title>
		<link rel="alternate" type="text/html" href="http://wiki.webos-internals.org/index.php?title=Meetups&amp;diff=9824"/>
		<updated>2010-05-08T10:51:41Z</updated>

		<summary type="html">&lt;p&gt;DrewPre: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;People interested in meeting up should plop in their area and name so when we have critical mass it can be organized.&lt;br /&gt;
&lt;br /&gt;
See also [http://predevcamp.org/ predevcamp.org].&lt;br /&gt;
&lt;br /&gt;
== United States ==&lt;br /&gt;
&lt;br /&gt;
=== Arizona ===&lt;br /&gt;
==== Phoenix, AZ ====&lt;br /&gt;
# EvanDotPro&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== California ===&lt;br /&gt;
==== Fresno ====&lt;br /&gt;
# A2NY&lt;br /&gt;
&lt;br /&gt;
==== San Diego/Los Angeles ====&lt;br /&gt;
# JonVisc&lt;br /&gt;
# seigex (Inland Empire)&lt;br /&gt;
# hopspitfire&lt;br /&gt;
# hmagoo (desert)&lt;br /&gt;
#dpc (OC) [http://www.meetup.com/socal-webOS-Development-Group/ SoCal webOS Development Group]&lt;br /&gt;
&lt;br /&gt;
==== San Francisco/Bay Area/SJ ====&lt;br /&gt;
Since Palm, Inc. is located in the Bay Area, Palm employees may join us for some tech talk or tips and tricks.&lt;br /&gt;
&lt;br /&gt;
http://www.meetup.com/palm-webos/&lt;br /&gt;
&lt;br /&gt;
# rulethirty (organizer)&lt;br /&gt;
# Robi&lt;br /&gt;
# jblebrun&lt;br /&gt;
# simplyflipflops&lt;br /&gt;
# pEEf&lt;br /&gt;
# bzhou (eno in IRC, optware manager)&lt;br /&gt;
# sarysa&lt;br /&gt;
&lt;br /&gt;
=== Colorado ===&lt;br /&gt;
==== Denver ====&lt;br /&gt;
# destinal&lt;br /&gt;
# rcanzlovar&lt;br /&gt;
# raeb&lt;br /&gt;
&lt;br /&gt;
=== Georgia ===&lt;br /&gt;
=== Atlanta ===&lt;br /&gt;
# DrewPre&lt;br /&gt;
&lt;br /&gt;
=== Indiana ===&lt;br /&gt;
==== Northern Indiana ====&lt;br /&gt;
# jaf0&lt;br /&gt;
&lt;br /&gt;
=== Kentucky ===&lt;br /&gt;
==== Cincinnati/NKY ====&lt;br /&gt;
# xandrake__&lt;br /&gt;
# foamcoretrash&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Massachusetts ===&lt;br /&gt;
==== Boston ====&lt;br /&gt;
Please join us in the [http://www.webosboston.org/ WebOSBOSTON community - We have monthly meetings.]&lt;br /&gt;
# nebula (MIT campus area)&lt;br /&gt;
# jcrawford (Lynn MA area)  http://josephcrawford.com/&lt;br /&gt;
# [[User:FreeTim|FreeTim]]  (MIT campus area - in Kendall Sq.)&lt;br /&gt;
# djbclark Danny Clark &amp;lt;dclark@pobox.com&amp;gt; http://pobox.com/~dclark (MIT campus area)&lt;br /&gt;
# oc80z (MIT,Central Square for drinks)&lt;br /&gt;
# beingboston (Newton, Watertown area. Has T pass, can travel)&lt;br /&gt;
# trokair (Waltham area, can travel)&lt;br /&gt;
# r3compile&lt;br /&gt;
# asedeno (MIT)&lt;br /&gt;
&lt;br /&gt;
=== Minnesota ===&lt;br /&gt;
==== Minneapolis/St. Paul ====&lt;br /&gt;
# xluryan&lt;br /&gt;
# helfire&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Missouri ===&lt;br /&gt;
==== Kansas City ====&lt;br /&gt;
# xorg  (attending [http://kansascity.predevcamp.org/attendees/ KC predev camp] - a couple dozen have signed up and growing)&lt;br /&gt;
# [[User:Clebio|Clebio]] 12:51, 24 August 2009 (UTC)&lt;br /&gt;
# [[User:Ikyo|Ikyo]]&lt;br /&gt;
&lt;br /&gt;
=== Nevada ===&lt;br /&gt;
==== Las Vegas: [[wikipedia:DEF CON (convention)|Defcon]] 17 ====&lt;br /&gt;
# emkman&lt;br /&gt;
# pEEf&lt;br /&gt;
# destinal&lt;br /&gt;
# tharris-&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== New York ===&lt;br /&gt;
==== Albany ====&lt;br /&gt;
# JackieRipper&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Oregon ===&lt;br /&gt;
==== Portland Area ====&lt;br /&gt;
# rck&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Texas ===&lt;br /&gt;
==== Austin ====&lt;br /&gt;
# HattCzech&lt;br /&gt;
==== Dallas ====&lt;br /&gt;
# HebrewzHammer&lt;br /&gt;
# [[user:X1011|X1011]] ([[wikipedia:University of Texas at Dallas|UTD]], attended [http://dallas.predevcamp.org/ preDevCamp])&lt;br /&gt;
&lt;br /&gt;
=== Washington ===&lt;br /&gt;
==== Seattle Area ====&lt;br /&gt;
# tictac&lt;br /&gt;
# BurntSky&lt;br /&gt;
# meshuga&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Wisconsin ===&lt;br /&gt;
==== Madison ====&lt;br /&gt;
# [[user:Christian.wilcox|christianwilcox]]&lt;/div&gt;</summary>
		<author><name>DrewPre</name></author>
	</entry>
	<entry>
		<id>http://wiki.webos-internals.org/index.php?title=Lighttpd&amp;diff=9315</id>
		<title>Lighttpd</title>
		<link rel="alternate" type="text/html" href="http://wiki.webos-internals.org/index.php?title=Lighttpd&amp;diff=9315"/>
		<updated>2010-03-08T07:10:28Z</updated>

		<summary type="html">&lt;p&gt;DrewPre: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Configuring the Lighttpd web server =&lt;br /&gt;
&lt;br /&gt;
== Preliminaries==&lt;br /&gt;
# Gain [[Portal:Accessing_Linux | access to Linux]] on your device.&lt;br /&gt;
# Setup the [[Next_steps | Optware Feed]].&lt;br /&gt;
# Open the root file system to read/write with rootfs_open.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Install Lighttpd with PHP support ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;ipkg-opt install lighttpd php-fcgi&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Tweak settings ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;vi /opt/etc/lighttpd/lighttpd.conf&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
If you are going to run static HTML pages, there is no need to do this.  If you want the ability to run PHP pages then this line must be uncommented:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;                                &amp;quot;mod_fastcgi&amp;quot;, &amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
You may also want to adjust the port that the web server runs on.  Sprint blocks port 80 and this package installs Lighttpd to run on port 8081 :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;&lt;br /&gt;
## bind to port (default: 80)&lt;br /&gt;
server.port                = 8081&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Start the web server:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;/opt/etc/init.d/S80lighttpd start&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Add a startup script ==&lt;br /&gt;
&lt;br /&gt;
I placed a file at /etc/event.d/optware-lighttpd so that the web server starts up after each reboot and the iptables firewall rules are executed to allow access to port 8080:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;&lt;br /&gt;
# don't start until the WebOS finishes it's normal boot&lt;br /&gt;
# that way no delay is added to the GUI startup&lt;br /&gt;
start on stopped finish&lt;br /&gt;
stop on runlevel [!2]&lt;br /&gt;
&lt;br /&gt;
# Restart the lighttpd daemon if it exits/dies&lt;br /&gt;
respawn&lt;br /&gt;
&lt;br /&gt;
exec /opt/sbin/lighttpd -f /opt/etc/lighttpd/lighttpd.conf&lt;br /&gt;
&lt;br /&gt;
pre-start script&lt;br /&gt;
        /usr/sbin/iptables -D INPUT -p tcp --dport 8081 -j ACCEPT || /bin/true&lt;br /&gt;
        /usr/sbin/iptables -I INPUT -p tcp --dport 8081 -j ACCEPT&lt;br /&gt;
end script&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Reboot the phone so that the firewall rules are executed:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;/sbin/reboot&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Add files to the web directory: ==&lt;br /&gt;
&lt;br /&gt;
The default home directory lives at:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;/opt/share/www/&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Sample gps.php file that will load your current location via Google maps:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;&lt;br /&gt;
&amp;lt;?php&lt;br /&gt;
$gps = `luna-send -n 1 palm://com.palm.location/getCurrentPosition {} 2&amp;gt;&amp;amp;1 | cut -d, -f4,5 | sed -r 's/[^-\.0-9,]//g'`;&lt;br /&gt;
?&amp;gt;&lt;br /&gt;
&amp;lt;html&amp;gt;&lt;br /&gt;
&amp;lt;iframe width=&amp;quot;600&amp;quot; height=&amp;quot;500&amp;quot; frameborder=&amp;quot;0&amp;quot; scrolling=&amp;quot;no&amp;quot; marginheight=&amp;quot;0&amp;quot; marginwidth=&amp;quot;0&amp;quot; src=&amp;quot;http://maps.google.com/?ie=UTF8&amp;amp;amp;q=&amp;lt;?php echo $gps ?&amp;gt;&amp;amp;amp;z=16&amp;amp;amp;ll=&amp;lt;?php echo $gps ?&amp;gt;&amp;amp;amp;output=embed&amp;quot;&amp;gt;&amp;lt;/iframe&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;small&amp;gt;&amp;lt;a href=&amp;quot;http://maps.google.com/?ie=UTF8&amp;amp;amp;q=&amp;lt;?php echo $gps ?&amp;gt;&amp;amp;amp;z=16&amp;amp;amp;ll=&amp;lt;?php echo $gps ?&amp;gt;&amp;amp;amp;source=embed&amp;quot; style=&amp;quot;color:#0000FF;text-align:left&amp;quot;&amp;gt;View Larger Map&amp;lt;/a&amp;gt;&amp;lt;/small&amp;gt;&lt;br /&gt;
&amp;lt;/html&amp;gt;&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Other Considerations =&lt;br /&gt;
&lt;br /&gt;
== Dynamic DNS ==&lt;br /&gt;
# Install the ez-ipupdate package&lt;br /&gt;
# Configure ez-ipupdate to update a DDNS service any time the EVDO IP changes&lt;br /&gt;
# CNAME record of primary domain - I have a CNAME record pointed to my DDNS record so that I always have the most up-to-date IP of my phone&lt;br /&gt;
&lt;br /&gt;
== Log files ==&lt;br /&gt;
# Need to keep an eye on the /opt/var/log/lighttpd/ log files and make sure they are rotated consistently&lt;/div&gt;</summary>
		<author><name>DrewPre</name></author>
	</entry>
	<entry>
		<id>http://wiki.webos-internals.org/index.php?title=Lighttpd&amp;diff=7591</id>
		<title>Lighttpd</title>
		<link rel="alternate" type="text/html" href="http://wiki.webos-internals.org/index.php?title=Lighttpd&amp;diff=7591"/>
		<updated>2009-12-01T20:16:19Z</updated>

		<summary type="html">&lt;p&gt;DrewPre: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Configuring the Lighttpd web server =&lt;br /&gt;
&lt;br /&gt;
== Preliminaries==&lt;br /&gt;
# Gain [[Portal:Accessing_Linux | access to Linux]] on your device.&lt;br /&gt;
# Setup the [[Next_steps | Optware Feed]].&lt;br /&gt;
# Open the root file system to read/write with rootfs_open.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Edit==&lt;br /&gt;
Although this tutorial still works. It appears that Sprint has blocked http traffic over the external ip address on ppp0.[can someone confirm?] The tutorial still applies if you are accessing lighttpd using Wifi or USBnet.&lt;br /&gt;
&lt;br /&gt;
== Install Lighttpd with PHP support ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;ipkg-opt install lighttpd php-fcgi&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Tweak settings ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;vi /opt/etc/lighttpd/lighttpd.conf&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
If you are going to run static HTML pages, there is no need to do this.  If you want the ability to run PHP pages then this line must be uncommented:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;                                &amp;quot;mod_fastcgi&amp;quot;, &amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
You may also want to adjust the port that the web server runs on.  Sprint blocks port 80 and this package installs Lighttpd to run on port 8081 :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;&lt;br /&gt;
## bind to port (default: 80)&lt;br /&gt;
server.port                = 8081&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Start the web server:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;/opt/etc/init.d/S80lighttpd start&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Add a startup script ==&lt;br /&gt;
&lt;br /&gt;
I placed a file at /etc/event.d/optware-lighttpd so that the web server starts up after each reboot and the iptables firewall rules are executed to allow access to port 8080:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;&lt;br /&gt;
# don't start until the WebOS finishes it's normal boot&lt;br /&gt;
# that way no delay is added to the GUI startup&lt;br /&gt;
start on stopped finish&lt;br /&gt;
stop on runlevel [!2]&lt;br /&gt;
&lt;br /&gt;
# Restart the lighttpd daemon if it exits/dies&lt;br /&gt;
respawn&lt;br /&gt;
&lt;br /&gt;
exec /opt/sbin/lighttpd -f /opt/etc/lighttpd/lighttpd.conf&lt;br /&gt;
&lt;br /&gt;
pre-start script&lt;br /&gt;
        /usr/sbin/iptables -D INPUT -p tcp --dport 8081 -j ACCEPT || /bin/true&lt;br /&gt;
        /usr/sbin/iptables -I INPUT -p tcp --dport 8081 -j ACCEPT&lt;br /&gt;
end script&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Reboot the phone so that the firewall rules are executed:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;/sbin/reboot&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Add files to the web directory: ==&lt;br /&gt;
&lt;br /&gt;
The default home directory lives at:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;/opt/share/www/&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Sample gps.php file that will load your current location via Google maps:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;&lt;br /&gt;
&amp;lt;?php&lt;br /&gt;
$gps = `luna-send -n 1 palm://com.palm.location/getCurrentPosition {} 2&amp;gt;&amp;amp;1 | cut -d, -f4,5 | sed -r 's/[^-\.0-9,]//g'`;&lt;br /&gt;
?&amp;gt;&lt;br /&gt;
&amp;lt;html&amp;gt;&lt;br /&gt;
&amp;lt;iframe width=&amp;quot;600&amp;quot; height=&amp;quot;500&amp;quot; frameborder=&amp;quot;0&amp;quot; scrolling=&amp;quot;no&amp;quot; marginheight=&amp;quot;0&amp;quot; marginwidth=&amp;quot;0&amp;quot; src=&amp;quot;http://maps.google.com/?ie=UTF8&amp;amp;amp;q=&amp;lt;?php echo $gps ?&amp;gt;&amp;amp;amp;z=16&amp;amp;amp;ll=&amp;lt;?php echo $gps ?&amp;gt;&amp;amp;amp;output=embed&amp;quot;&amp;gt;&amp;lt;/iframe&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;small&amp;gt;&amp;lt;a href=&amp;quot;http://maps.google.com/?ie=UTF8&amp;amp;amp;q=&amp;lt;?php echo $gps ?&amp;gt;&amp;amp;amp;z=16&amp;amp;amp;ll=&amp;lt;?php echo $gps ?&amp;gt;&amp;amp;amp;source=embed&amp;quot; style=&amp;quot;color:#0000FF;text-align:left&amp;quot;&amp;gt;View Larger Map&amp;lt;/a&amp;gt;&amp;lt;/small&amp;gt;&lt;br /&gt;
&amp;lt;/html&amp;gt;&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Other Considerations =&lt;br /&gt;
&lt;br /&gt;
== Dynamic DNS ==&lt;br /&gt;
# Install the ez-ipupdate package&lt;br /&gt;
# Configure ez-ipupdate to update a DDNS service any time the EVDO IP changes&lt;br /&gt;
# CNAME record of primary domain - I have a CNAME record pointed to my DDNS record so that I always have the most up-to-date IP of my phone&lt;br /&gt;
&lt;br /&gt;
== Log files ==&lt;br /&gt;
# Need to keep an eye on the /opt/var/log/lighttpd/ log files and make sure they are rotated consistently&lt;/div&gt;</summary>
		<author><name>DrewPre</name></author>
	</entry>
	<entry>
		<id>http://wiki.webos-internals.org/index.php?title=Application:BackupUtility&amp;diff=7357</id>
		<title>Application:BackupUtility</title>
		<link rel="alternate" type="text/html" href="http://wiki.webos-internals.org/index.php?title=Application:BackupUtility&amp;diff=7357"/>
		<updated>2009-11-24T13:38:40Z</updated>

		<summary type="html">&lt;p&gt;DrewPre: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Summary == &lt;br /&gt;
&lt;br /&gt;
The Backup Utility is an application that will allow you to backup and restore, Phone Data, Browser Data, and Applications. This application was developed as a supplement to the Palm Pre Backup utility that comes stock wtih all Palm Pres. It has the added benefit of providing you with control over what is backed up and how often. Additionally it provides you with control over your restoration process. It is not intended to be used to backup and restore across different versions of webOS. [Palm's Operating System] It is not a gaurd against Palm's upgrade process. It is a contingency plan for the Palm Backup. Nevertheless some test have revealed that you can backup from an older webOS version to a newer version; however, if you decide to do so, then do so at your own risk.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;font color=red&amp;gt;THIS APPLICATION MAY DESTROY DATA ON YOUR PHONE. DO NOT USE IT UNLESS YOU ARE WILLING TO RISK LOSING ALL DATA ON YOUR PHONE, AND POSSIBLY THE DATA IN YOUR PALM PROFILE TOO.&amp;lt;/font&amp;gt;&amp;lt;/b&amp;gt;&amp;lt;br&amp;gt;This is the very first public alpha release of a backup utility for webOS.&amp;lt;br&amp;gt;Please test it on the emulator only, and report your experiences on the PreCentral thread.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
See http://forums.precentral.net/showthread.php?p=2056899 until this page is filled&lt;/div&gt;</summary>
		<author><name>DrewPre</name></author>
	</entry>
	<entry>
		<id>http://wiki.webos-internals.org/index.php?title=Application:BackupUtility&amp;diff=7356</id>
		<title>Application:BackupUtility</title>
		<link rel="alternate" type="text/html" href="http://wiki.webos-internals.org/index.php?title=Application:BackupUtility&amp;diff=7356"/>
		<updated>2009-11-24T13:37:19Z</updated>

		<summary type="html">&lt;p&gt;DrewPre: /* Summary */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Summary == &lt;br /&gt;
&lt;br /&gt;
The Backup Utility is an application that will allow you to backup and restore, Phone Data, Browser Data, and Applications. This application was developed as a supplement to the Palm Pre Backup utility that comes stock wtih all Palm Pres. It has the added benefit of providing you with control over what is backed up and how often. Additionally it provides you with control over your restoration process. It is not intended to be used to backup and restore across different versions of webOS. [Palm's Operating System] It is not a gaurd against Palm's upgrade process. It is a contingency plan for the Palm Backup. Nevertheless some test have revealed that you can backup from an older webOS version to a newer version; however, if you decide to do so, then do so at your own risk.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;font color=red&amp;gt;THIS APPLICATION MAY DESTROY DATA ON YOUR PHONE. DO NOT USE IT UNLESS YOU ARE WILLING TO RISK LOSING ALL DATA ON YOUR PHONE, AND POSSIBLY THE DATA IN YOUR PALM PROFILE TOO.&amp;lt;/font&amp;gt;&amp;lt;/b&amp;gt;&amp;lt;br&amp;gt;This is the very first public alpha release of a backup utility for webOS.&amp;lt;br&amp;gt;Please test it on the emulator only, and report your experiences on the PreCentral thread.&amp;lt;br&amp;gt;&lt;/div&gt;</summary>
		<author><name>DrewPre</name></author>
	</entry>
	<entry>
		<id>http://wiki.webos-internals.org/index.php?title=Application:BackupUtility&amp;diff=7355</id>
		<title>Application:BackupUtility</title>
		<link rel="alternate" type="text/html" href="http://wiki.webos-internals.org/index.php?title=Application:BackupUtility&amp;diff=7355"/>
		<updated>2009-11-24T13:21:18Z</updated>

		<summary type="html">&lt;p&gt;DrewPre: /* Summary */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Summary == &lt;br /&gt;
&lt;br /&gt;
The Backup Utility is an application that will allow you to backup and restore, Phone Data, Browser Data, and Applications. This application was developed as a supplement to the Palm Pre Backup utility that comes stock wtih all Palm Pres. It has the added benefit of providing you with control over what is backed up and how often. Additionally it provides you with control over your restoration process. It is not intended to be used to backup and restore across different versions of webOS. [Palm's Operating System] It is not a gaurd against Palm's upgrade process. It is a contingency plan for the Palm Backup. Nevertheless some test have revealed that you can backup from an older webOS version to a newer version; however, if you decide to do so, then do so at your own risk.&lt;/div&gt;</summary>
		<author><name>DrewPre</name></author>
	</entry>
	<entry>
		<id>http://wiki.webos-internals.org/index.php?title=PalmDatabase.db3_File&amp;diff=6707</id>
		<title>PalmDatabase.db3 File</title>
		<link rel="alternate" type="text/html" href="http://wiki.webos-internals.org/index.php?title=PalmDatabase.db3_File&amp;diff=6707"/>
		<updated>2009-10-28T05:25:06Z</updated>

		<summary type="html">&lt;p&gt;DrewPre: /* Perl Script */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The file '''/var/luna/data/dbdata/PalmDatabase.db3''' is an [http://www.sqlite.org/ sqlite] database file that appears to contain much of the personal data stored on the Pre.  The information in this database, which has about 100 tables, includes contacts, events, account credentials, and call logs.&lt;br /&gt;
&lt;br /&gt;
= Exploring PalmDatabase.db3=&lt;br /&gt;
&lt;br /&gt;
A safe way to explore '''PalmDatabase.db3''' is to copy the file from the Pre to a computer where it can be examined with the [http://www.sqlite.org/sqlite.html sqlite3] command or an sqlite browser.  A nice browser of this type of file is the Firefox Addon [http://code.google.com/p/sqlite-manager/ sqlite-manager].  With this browser, the structure of the database tables and their contents can be easily examined.&lt;br /&gt;
&lt;br /&gt;
Some of the tables in PalmDatabase.db3 are:&lt;br /&gt;
&lt;br /&gt;
* '''com_palm_pim_Contact''' – Has one entry per contact per profile.  Includes pointers to the remote profiles.&lt;br /&gt;
* '''com_palm_pim_Person''' – Has one entry per contact   Contains a field for the sort order of contacts displayed in the Contact application.&lt;br /&gt;
* '''com_palm_pim_FolderEntry''' – Contains messages, both SMS and Email.  The GPS [[[Tracking]]] script looks for messages in this table.&lt;br /&gt;
&lt;br /&gt;
= Modifying PalmDatabase.db3=&lt;br /&gt;
&lt;br /&gt;
On my previous phone, I entered all contacts in the form &amp;quot;Lastname, Firstname&amp;quot; so that the phone would sort contacts by last name.  The Pre internally saves names broken up by prefix, first name, middle name, last name and suffix and has the option to sort by first or last name.  When the Sprint store transferred my contacts, the last name followed by a &amp;quot;,&amp;quot; went into the first name field and the first name went into the last name field.   To fix this, it should have been a simple matter of exporting the contacts from the phone, using an editor or script to swap the first and last name fields (and remove the &amp;quot;,&amp;quot;) and then sending the contacts back to the phone.  However, there seems to be no way at present to export or import contacts in the Palm Profile.  (Except at a Sprint store).&lt;br /&gt;
&lt;br /&gt;
Below is a python script, '''precontacts.py''' that implements this first/last name swap.  This script uses the [*http://code.google.com/p/apsw/ APSW] sqlite3 wrapper.   Similar scripts could be used with different sqlite wrappers such as [*http://pysqlite.org/ pysqlite] or with different scripting languages such as Perl.   This script does not modify PalmDatabase.db3 directly, rather it writes a list of SQL commands that can be applied to the database.  I suggest copying PalmDatabase.db3 to a host machine, generating the SQL commands, testing that those commands work, copying the list of SQL commands to the Pre, and then executing those commands against PalmDatabase.db3 (after making a backup of that file).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;&lt;br /&gt;
#!/usr/bin/env python&lt;br /&gt;
&lt;br /&gt;
# Correct names imported from a non smart phone to the Pre where names on&lt;br /&gt;
# the old phone were entered in the form &amp;quot;Lastname, Firstname&amp;quot;.  Entries of&lt;br /&gt;
# this type had the first name put in the Pre's Lastname field and the&lt;br /&gt;
# last name and comma put in the first name field.&lt;br /&gt;
#&lt;br /&gt;
# Swap the first and last names in the Palm Pre contact database.&lt;br /&gt;
# Only do the swap when the name in the firstname field ends with a &amp;quot;,&amp;quot;.&lt;br /&gt;
#&lt;br /&gt;
# The output of this script should be directed to a file.  (say swap.sql)  The&lt;br /&gt;
# database changes can then be done with &amp;quot;sqlite3 PalmDatabase.db3 &amp;lt; swap.sql&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
import os, sys, time&lt;br /&gt;
import apsw&lt;br /&gt;
&lt;br /&gt;
DBFILE=&amp;quot;PalmDatabase.db3&amp;quot;&lt;br /&gt;
&lt;br /&gt;
if os.path.exists(DBFILE):&lt;br /&gt;
    connection=apsw.Connection(DBFILE)&lt;br /&gt;
    cursor=connection.cursor()&lt;br /&gt;
else:&lt;br /&gt;
    print &amp;quot;No database&amp;quot;&lt;br /&gt;
&lt;br /&gt;
# Do name swap in com_palm_pim_Contact table&lt;br /&gt;
&lt;br /&gt;
for first, middle, last, id in cursor.execute(&amp;quot;select firstName, middleName, lastName, com_palm_pim_Person_id from com_palm_pim_Contact&amp;quot;):&lt;br /&gt;
    if first:&lt;br /&gt;
        if first[-1] == &amp;quot;,&amp;quot;:&lt;br /&gt;
            newlast = first[0:-1]&lt;br /&gt;
            first = last&lt;br /&gt;
            last = newlast&lt;br /&gt;
            id=`id`[0:-1]&lt;br /&gt;
            sql = &amp;quot;update com_palm_pim_Contact set lastName=\&amp;quot;&amp;quot;+last+&amp;quot;\&amp;quot;, firstName=\&amp;quot;&amp;quot;+first+&amp;quot;\&amp;quot; where com_palm_pim_Person_id=&amp;quot;+id+&amp;quot;;&amp;quot;&lt;br /&gt;
            print sql&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
# Do name swap in com_palm_pim_Person table&lt;br /&gt;
&lt;br /&gt;
for first, middle, last, id, sortKey in cursor.execute(&amp;quot;select firstName, middleName, lastName, id, sortKey from com_palm_pim_Person&amp;quot;):&lt;br /&gt;
    if first:&lt;br /&gt;
        if first[-1] == &amp;quot;,&amp;quot;:&lt;br /&gt;
            newlast = first[0:-1]&lt;br /&gt;
            first = last&lt;br /&gt;
            last = newlast&lt;br /&gt;
            id=`id`[0:-1]&lt;br /&gt;
            newsortKey = last+&amp;quot;\t&amp;quot;+first+&amp;quot;\t&amp;quot;&lt;br /&gt;
            if middle:&lt;br /&gt;
                newsortKey+=middle&lt;br /&gt;
            newsortKey = newsortKey.upper()&lt;br /&gt;
            sql = &amp;quot;update com_palm_pim_Person set lastName=\&amp;quot;&amp;quot;+last+&amp;quot;\&amp;quot;, firstName=\&amp;quot;&amp;quot;+first+&amp;quot;\&amp;quot;, sortKey=\&amp;quot;&amp;quot;+newsortKey+&amp;quot;\&amp;quot; where id=&amp;quot;+id+&amp;quot;;&amp;quot;&lt;br /&gt;
            print sql&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Exporting Contacts to Google CSV file=&lt;br /&gt;
&lt;br /&gt;
Since we now have access to the database, it would be nice to export your contacts to Google Contacts so that they can be shared by other applications (phones that support Google Sync, Google Voice, Gmail, etc).  Here's what you'll need:&lt;br /&gt;
&lt;br /&gt;
# A copy of your PalmDatabase.db3&lt;br /&gt;
# sqlite3 executable binary&lt;br /&gt;
# Perl&lt;br /&gt;
&lt;br /&gt;
Once you have that, modify the following two lines from the perl script below:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;&lt;br /&gt;
my $db = './PalmDatabase.db3';&lt;br /&gt;
my $sqlite = './sqlite3-3.6.16.bin';&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
They should point to the path of your sqlite3 binary and database.  Once you've done that, just run your script and it should create 3 files:&lt;br /&gt;
&lt;br /&gt;
# '''palm_pre_contacts.csv''' - CVS file that you can import into your Google Contacts&lt;br /&gt;
# '''select_contacts.sql''' - SQL script to show which contacts can be removed from your Palm Pre&lt;br /&gt;
# '''delete_contacts.sql''' - SQL script to delete the contacts from your Palm Pre&lt;br /&gt;
&lt;br /&gt;
It would probably be a good idea to view the CSV file in a spreadsheet program to make sure the contacts look ok.&lt;br /&gt;
&lt;br /&gt;
===Known Issues===&lt;br /&gt;
* delete_contacts.sql does not work.  It throws a &amp;quot;no such collation sequence: LOCALIZED_SECONDARY&amp;quot;.  I haven't figured out to define this coallation sequence.  For now, you will have to delete each entry manually.  To avoid duplicates, you should do this before syncing with your Google account.&lt;br /&gt;
** (I have added a line to the script to load the palm extensions for sqlite3. If you copy the delete file over to the pre and run it on the device, it will work.) -[[user:Wsobel|Wsobel]]&lt;br /&gt;
* Only allows for 3 email entries and 3 phone entries maximum for each contact.&lt;br /&gt;
* Does not differentiate between different accounts.  All contacts are grabbed.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Perl Script==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;&lt;br /&gt;
#!/usr/bin/perl&lt;br /&gt;
use strict;&lt;br /&gt;
&lt;br /&gt;
# copy of /var/luna/data/dbdata/PalmDatabase.db3 &lt;br /&gt;
my $sqlite = './sqlite3-3.6.16.bin';&lt;br /&gt;
my $db = './PalmDatabase.db3';&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
my $contacts = {};&lt;br /&gt;
my @label = ('Home', 'Work', 'Other', 'Mobile');&lt;br /&gt;
&lt;br /&gt;
my $header = q(Name,Given Name,Additional Name,Family Name,Yomi Name,Given Name Yomi,Additional Name Yomi,Family Name Yomi,Name Prefix,Name Suffix,Initials,Nickname,Short Name,Maiden Name,Birthday,Gender,Location,Billing Information,Directory Server,Mileage,Occupation,Hobby,Sensitivity,Priority,Subject,Notes,Group Membership,E-mail 1 - Type,E-mail 1 - Value,E-mail 2 - Type,E-mail 2 - Value,E-mail 3 - Type,E-mail 3 - Value,Phone 1 - Type,Phone 1 - Value,Phone 2 - Type,Phone 2 - Value,Phone 3 - Type,Phone 3 - Value);&lt;br /&gt;
&lt;br /&gt;
my $sql = q{&amp;quot;SELECT com_palm_pim_Contact.firstName, com_palm_pim_Contact.lastName, com_palm_pim_ContactPoint.type, com_palm_pim_ContactPoint.value, com_palm_pim_ContactPoint.label, com_palm_pim_Contact.com_palm_pim_Person_id FROM com_palm_pim_Contact INNER JOIN com_palm_pim_ContactPoint ON com_palm_pim_Contact.id = com_palm_pim_ContactPoint.com_palm_pim_Contact_contactPts_id WHERE com_palm_pim_ContactPoint.type = 'EMAIL' OR com_palm_pim_ContactPoint.type = 'PHONE' ORDER BY com_palm_pim_Contact.firstName, com_palm_pim_Contact.lastName, com_palm_pim_ContactPoint.type ASC;&amp;quot;};&lt;br /&gt;
&lt;br /&gt;
my $output = `$sqlite $db $sql`;&lt;br /&gt;
&lt;br /&gt;
open(CSV, &amp;quot;&amp;gt;palm_pre_contacts.csv&amp;quot;);&lt;br /&gt;
open(SQLDEL, &amp;quot;&amp;gt;delete_contacts.sql&amp;quot;);&lt;br /&gt;
open(SQLSEL, &amp;quot;&amp;gt;select_contacts.sql&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
print SQLDEL &amp;quot;.load /usr/lib/sqlite3_palm_extension.so\n&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
print CSV &amp;quot;$header\n&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
my @lines = split(/\n/, $output);&lt;br /&gt;
&lt;br /&gt;
foreach my $line (@lines) {&lt;br /&gt;
	#my @parts = split(/\|/, $line);&lt;br /&gt;
	my ($first, $last, $type, $value, $label, $pid) = split(/\|/, $line);&lt;br /&gt;
	&lt;br /&gt;
&lt;br /&gt;
	if ($first &amp;amp;&amp;amp; $first ne '') {&lt;br /&gt;
		if (!($contacts-&amp;gt;{$pid})) {&lt;br /&gt;
			$contacts-&amp;gt;{$pid} = {&lt;br /&gt;
				'first' =&amp;gt; $first,&lt;br /&gt;
				'last' =&amp;gt; $last,&lt;br /&gt;
				'email' =&amp;gt; [],&lt;br /&gt;
				'phone' =&amp;gt; []&lt;br /&gt;
			}&lt;br /&gt;
		}&lt;br /&gt;
&lt;br /&gt;
		if ($type eq 'EMAIL') {&lt;br /&gt;
			push(@{$contacts-&amp;gt;{$pid}-&amp;gt;{email}}, {&lt;br /&gt;
				label =&amp;gt; $label[$label],&lt;br /&gt;
				email =&amp;gt; $value&lt;br /&gt;
			});&lt;br /&gt;
		}&lt;br /&gt;
		elsif ($type eq 'PHONE') {&lt;br /&gt;
			$value =~ s/[^\d]//g;&lt;br /&gt;
			push(@{$contacts-&amp;gt;{$pid}-&amp;gt;{phone}}, {&lt;br /&gt;
				label =&amp;gt; $label[$label],&lt;br /&gt;
				phone =&amp;gt; $value&lt;br /&gt;
			});&lt;br /&gt;
		}&lt;br /&gt;
&lt;br /&gt;
		print SQLDEL &amp;quot;DELETE FROM com_palm_pim_Person WHERE id=$pid;\n&amp;quot;;&lt;br /&gt;
		print SQLSEL &amp;quot;SELECT id, firstName, lastName from com_palm_pim_Person WHERE id=$pid;\n&amp;quot;;&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
while ( my ($pid, $value) = each(%$contacts) ) {&lt;br /&gt;
	my @line = ();&lt;br /&gt;
&lt;br /&gt;
	$line[0] = $value-&amp;gt;{'first'} . ' ' . $value-&amp;gt;{'last'};&lt;br /&gt;
	$line[1] = $value-&amp;gt;{'first'};&lt;br /&gt;
	$line[3] = $value-&amp;gt;{'last'};&lt;br /&gt;
	$line[26] = '* My Contacts';&lt;br /&gt;
	$line[27] = $value-&amp;gt;{'email'}-&amp;gt;[0]-&amp;gt;{label};&lt;br /&gt;
	$line[28] = $value-&amp;gt;{'email'}-&amp;gt;[0]-&amp;gt;{email};&lt;br /&gt;
	$line[29] = $value-&amp;gt;{'email'}-&amp;gt;[1]-&amp;gt;{label};&lt;br /&gt;
	$line[30] = $value-&amp;gt;{'email'}-&amp;gt;[1]-&amp;gt;{email};&lt;br /&gt;
	$line[31] = $value-&amp;gt;{'email'}-&amp;gt;[2]-&amp;gt;{label};&lt;br /&gt;
	$line[32] = $value-&amp;gt;{'email'}-&amp;gt;[2]-&amp;gt;{email};&lt;br /&gt;
	$line[33] = $value-&amp;gt;{'phone'}-&amp;gt;[0]-&amp;gt;{label};&lt;br /&gt;
	$line[34] = $value-&amp;gt;{'phone'}-&amp;gt;[0]-&amp;gt;{phone};&lt;br /&gt;
	$line[35] = $value-&amp;gt;{'phone'}-&amp;gt;[1]-&amp;gt;{label};&lt;br /&gt;
	$line[36] = $value-&amp;gt;{'phone'}-&amp;gt;[1]-&amp;gt;{phone};&lt;br /&gt;
	$line[37] = $value-&amp;gt;{'phone'}-&amp;gt;[2]-&amp;gt;{label};&lt;br /&gt;
	$line[38] = $value-&amp;gt;{'phone'}-&amp;gt;[2]-&amp;gt;{phone};&lt;br /&gt;
&lt;br /&gt;
	print CSV join(',', @line) . &amp;quot;\n&amp;quot;;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
close(CSV);&lt;br /&gt;
close(SQLDEL);&lt;br /&gt;
close(SQLSEL);&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>DrewPre</name></author>
	</entry>
</feed>