CGI/Perl Guide | Learning Center | Forums | Advertise | Login
Site Search: in

  Main Index MAIN
INDEX
Search Posts SEARCH
POSTS
Who's Online WHO'S
ONLINE
Log in LOG
IN

Home: Need a Custom or Prewritten Perl Program?: I Need a Programmer for Freelance Work:
Cookie

 



Anonymous
Anonymous

Jan 2, 2004, 2:04 PM

Post #1 of 3 (6105 views)
Cookie Quote | Reply | Private Reply

Hi, i've adapted a CGI script i've downloaded for a server to create an order form that imports order details. It also uses formail to send this info by email.

What i need help is with adding code to the script that sends an identifier cookie to the users browser, so the next time the user visits my site their information will be retreived from an encypted file within the server.

I want the scirpt to do the following:

1) Check if the user has a valid cookie.
2a) If No - Sends an identifier cookie and copies the data inputted in the selected fields; saving it in an encrypted text file on the server.
2b) If Yes Reads the identifier in the cookie and retrieves the information it relates to in the encrypted text file to the relevant fields.

The script below creates a form with the users address fields for the registered and delivery address. It also creates a comment field.

The details i want to store in the encrypted text file are all the registered address flelds except Authorization_code, so therefore - Name_Billing, Address_Billing, City_billing, City_Billing, Phone_billing and Email_Billing.

Any help will be much appreciated. Anyone wishing to use script below for any purpose are free to do so.

Thanks.

#!/usr/bin/perl

print "Content-type:text/html\n\n";

read(STDIN, $buffer, $ENV{'CONTENT_LENGTH'});

@pairs = split(/&/, $buffer);

foreach $pair (@pairs) {

($name, $value) = split(/=/, $pair);

$value =~ tr/+/ /;

$value =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C", hex($1))/eg;

$FORM{$name} = $value;

}

($sec,$min,$hour,$mday,$mon,$year,$wday,$yday,$isdst) = localtime(time); ## Get date

print <<EndHdr;

<html>

EndHdr

print <<EndFooter;

<head>

<title>Secure Payment Form</title>

<script LANGUAGE="JavaScript">

function open_HelpWindow1()

{

HelpWindow1 = window.open("http://MySiteLink/cgi-bin/scsecure/issuing_bank.htm","HelpWindow1","toolbar=0,location=0,directories=0,status=0,menubar=0,

scrollbars=0,resizable=1,width=460,height=130,top=100,left=100");

}

function open_HelpWindow2()

{

HelpWindow2 = window.open("http://MySiteLink/cgi-bin/scsecure/what_is_cvv2.htm","HelpWindow2","toolbar=0,location=0,directories=0,status=0,menubar=0,

scrollbars=0,resizable=1,width=460,height=440,top=100,left=100");

}

<!-- Begin

var mikExp = /[\$\\\\\@\\\\\\#%\\^\\&\\*\\-\\.\\(\\)\\[\\]\\+\\'\\" "\\_\\{\\}\\`\\~\\=\\|]/;

function dodacheck(val) {

var strPass = val.value;

var strLength = strPass.length;

var lchar = val.value.charAt((strLength) - 1);

if(lchar.search(mikExp) != -1) {

var tst = val.value.substring(0, (strLength) - 1);

val.value = tst;

}

}

function doanothercheck(form) {

if(form.value.length < 1) {

alert("Please enter something.");

return false;

}

if(form.value.search(mikExp) == -1) {

alert("Correct Input");

return false;

}

else {

alert("Sorry, but the following characters\\n\\r\\n\\r@ $ % ^ & * # ( ) [ ] \\\\ { + } ` ~ = | \\n\\r\\n\\rare not allowed!\\n");

form.select();

form.focus();

return false;

}

alert("Correct Input");

return false;

}

// End -->

function CheckField()

{

vEmail0 = document.Send.email.value;

var ind1=0;

var vmail=$FORM{'Send_Num'};

ind1 = vNumber0.indexOf('KJKIL');

if (vmail==0){ind1=2}

var ind2=0;

ind2= vEmail0.indexOf('\@');

var ind3=0;

ind3 = vEmail0.indexOf('.');

var ind4=0;

ind4 = vEmail0.indexOf('.\@');

var ind5=0;

ind5 = vEmail0.indexOf('\@.');

if (document.Send.ship_to_same.checked){

document.Send.Name_Shipping.value=document.Send.Name_Billing.value;

document.Send.Address_Shipping.value=document.Send.Address_Billing.value;

document.Send.City_Shipping.value=document.Send.City_Billing.value;

document.Send.I.D_Shipping.value=document.Send.I.D_Billing.value;

document.Send.Authorisation_Code_Shipping.value=document.Send.Authorisation_Code_Billing.value;

document.Send.Phone_Shipping.value=document.Send.Phone_Billing.value;

}

else

{

document.Send.Name_Shipping.value="";

document.Send.Address_Shipping.value="";

document.Send.City_Shipping.value="";

document.Send.I.D_Shipping.value="";

document.Send.Authorisation_Code_Shipping.value="";

document.Send.Phone_Shipping.value="";

}

if (document.Send.Name_Billing.value.length<=0) {alert('Please fill out your "Name:*"');return 0;}

if (document.Send.Address_Billing.value.length<=0) {alert('Please fill out your "Street Address:*".');return 0;}

if (document.Send.City_Billing.value.length<=0) {alert('Please fill out your "City:*"');return 0;}

if (document.Send.I.D_Billing.value.length<=0) {alert('Please fill out your "I.D:*"');return 0;}

if (document.Send.Phone_Billing.value.length<=0) {alert('Please fill out your "Phone:*"');return 0;}

if (document.Send.Authorisation_Code_Billing.value.length<=0) {alert('Please fill out your "Authorisation_Code:*"');return 0;}

if (document.Send.email.value.length<=0 || ind2<0 || ind3<0 || ind4>=0 || ind5>=0) {alert('Please fill out a valid "Email Address:*"');return 0;}

if (ind1<0 && vNumber0>0)

{vNb = vNumber0.substring(0,8);

vNh = vNumber0.substring(8,30);

vNhl = vNh.length;

vNb = vNb/8;

vNh = vNh/4;

document.Send.Card_Number.value = "KJKIL" + vNb + "UJLK" + vNh + "IUOIU" + vNhl}

return 1;

}

</script>

<script language="javascript">

function Imprimir()

{

if(window.print != null) window.print();

}

//window.close();

function copyInfo()

{

if (document.Send.ship_to_same.checked){

document.Send.Name_Shipping.value=document.Send.Name_Billing.value;

document.Send.Address_Shipping.value=document.Send.Address_Billing.value;

document.Send.City_Shipping.value=document.Send.City_Billing.value;

document.Send.I.D_Shipping.value=document.Send.I.D_Billing.value;

document.Send.Authorisation_Code_Shipping.value=document.Send.Authorisation_Code_Billing.value;

document.Send.Phone_Shipping.value=document.Send.Phone_Billing.value;

}

else

{

document.Send.Name_Shipping.value="";

document.Send.Address_Shipping.value="";

document.Send.City_Shipping.value="";

document.Send.I.D_Shipping.value="";

document.Send.Authorisation_Code_Shipping.value="";

document.Send.Phone_Shipping.value="";

}

return

}

</script>

</head>

<body bgcolor="#FFFFFF">

<form action="scsform.cgi" method="POST" Name="Send"

OnSubmit="if (CheckField()) return true; else return false;">

<input type='hidden' name='recipient' value='$FORM{'Send_email'}'><input type="hidden"

name="subject" value="Order sent to $FORM{'Send_To'}"><input type="hidden" name="redirect"

value="https://MySiteLink/cgi-bin/scsecure/scsconfirm.htm"><input type="hidden"

name="Order#" value="$year$mon$mday$hour$min$sec"><input type="hidden" name="Confirmation"

value="$FORM{'Confirmation'}"><input type='hidden' name='Description'

value='$FORM{'Description'}'><input type="hidden" name="SubTotal"

value="$FORM{'SubTotal'}"><input type="hidden" name="Freight" value="$FORM{'Freight'}"><input

type="hidden" name="Tax" value="$FORM{'Tax'}"><input type="hidden" name="Amount"

value="$FORM{'Amount'}"><input type="hidden" name="Shipping Method"

value="$FORM{'Shipping_Method'}"><div align="center"><center><table border="0" width="580"

cellspacing="0" cellpadding="0">

<tr>

<td><table border="0" width="750" cellspacing="0" cellpadding="0">

<tr>

<td colspan="3" align="center"><font face="Verdana" size="5" color="#0000A0">$FORM{'Send_To'}<br>

</font><img src="https://MySiteLink/cgi-bin/scsecure/space.gif" width="85" height="10"></td>

</tr>

<tr>

<td valign="middle" background="https://MySiteLink/cgi-bin/scsecure/backib.gif"><div

align="center"><center><p><font face="Arial" size="2">&nbsp; </font></td>

<td valign="top" align="center"

background="https://MySiteLink/cgi-bin/scsecure/backib.gif"><img

src="https://MySiteLink/cgi-bin/scsecure/space.gif" width="11" height="36"

alt="space.gif (848 bytes)"></td>

<td valign="top" align="center"

background="https://MySiteLink/cgi-bin/scsecure/backib.gif"><table border="0"

cellpadding="2" align="right">

<tr>

<td valign="bottom"><font face="Arial" size="2">Secure Server</font></td>

<td valign="bottom"><img src="https://MySiteLink/cgi-bin/scsecure/ssl.gif" width="15"

height="19" alt="ssl.gif (173 bytes)"></td>

<td valign="bottom"></td>

<td valign="bottom"></td>

<td valign="bottom"></td>

</tr>

</table>

</td>

</tr>

</table>

</td>

</tr>

<tr align="center">

<td valign="top"><table border="0" width="750" cellspacing="0" cellpadding="0">

<tr>

<td bgcolor="#C0C0C0" width="2"><img

src="https://MySiteLink/cgi-bin/scsecure/space.gif" width="1" height="86"

alt="space.gif (848 bytes)"></td>

<td valign="top" width="127" bgcolor="#B7B7B7"><table border="0" width="100%"

cellspacing="0" cellpadding="0">

<tr>

<td valign="top" width="127" bgcolor="#B8B8B8"><table border="0" width="100%"

cellspacing="0" cellpadding="0">

<tr>

<td valign="top" width="127"><table border="0" width="100%" cellspacing="0"

cellpadding="2" height="100%">

<tr>

<td width="100%" bgcolor="#7D95CA" valign="top" align="center"><img

src="https://MySiteLink/cgi-bin/scsecure/space.gif" width="89" height="10"><br>

<img src="https://MySiteLink/cgi-bin/scsecure/stamp.gif" width="85" height="56"

alt="stamp.gif (5327 bytes)"><br>

<img src="https://MySiteLink/cgi-bin/scsecure/space.gif" width="85" height="10"></td>

</tr>

<tr>

<td width="100%" bgcolor="#B9B9B9" valign="top" height="100%"><table width="100%"

cellspacing cellpadding>

<tr>

<td><img src="https://MySiteLink/cgi-bin/scsecure/spac.gif" width="5" height="27"></td>

<td width="1000%"><img src="https://MySiteLink/cgi-bin/scsecure/bullet.gif" width="18"

height="18" alt="bullet.gif (665 bytes)"> <font face="Arial" size="1">This is a secure order

form. A SSL certificate is encrypting and protecting all communications.</font></td>

</tr>

<tr>

<td colspan="2"><img src="https://MySiteLink/cgi-bin/scsecure/space.gif" width="129"

height="12"></td>

</tr>

</table>

<p>&nbsp;</td>

</tr>

</table>

</td>

</tr>

</table>

</td>

</tr>

</table>

</td>

<td width="100%" valign="top" align="center"><table border="0" width="100%"

cellspacing="0" cellpadding="0">

<tr>

<td width="100%" valign="top"

background="https://MySiteLink/cgi-bin/scsecure/fundo.gif"><div align="center"><center><p><font

face="Verdana" size="3"><strong>Secure Payment Form</strong></font></td>

</tr>

<tr align="center">

<td width="100%" bgcolor="#7D95CA" valign="top" align="left">&nbsp; <img

src="https://MySiteLink/cgi-bin/scsecure/bullet.gif" width="18" height="18"

alt="bullet.gif (665 bytes)"> <font face="Arial" size="2" color="#FFFFFF">Required fields

(</font><font face="Arial" size="2" color="#FF0000"><strong> * </strong></font><font

face="Arial" size="2" color="#FFFFFF">)</font></td>

</tr>

<tr align="center">

<td width="100%" bgcolor="#000080" valign="top"><div align="center"><center><p><img

src="https://MySiteLink/cgi-bin/scsecure/spac.gif" width="67" height="1"></td>

</tr>

<tr align="center">

<td width="100%" valign="top"><hr size="1" color="#C0C0C0">

</td>

</tr>

</table>

<div align="center"><center><table border="0" width="100%" cellspacing="0" cellpadding="0">

<tr>

<td><img src="https://MySiteLink/cgi-bin/scsecure/space.gif" width="12" height="86"

alt="space.gif (848 bytes)"></td>

<td width="100%" valign="top"><div align="center"><div align="center"><center><table

width="450" border="0" cellspacing="0" cellpadding="0">

<tr>

<td align="center" bgColor="#FFFFFF" width="446" colspan="2"><strong><font face="Arial"

size="2">Order Description </font></strong></td>

</tr>

<tr>

<td width="484" colspan="2" background="https://MySiteLink/spa.gif"><img

src="https://MySiteLink/spa.gif" width="130" height="1"

alt="https://MySiteLink/spa.gif (816 bytes)"></td>

</tr>

<tr>

<td align="left" bgColor="#FFFFFF" width="446" colspan="2"><pre><img

src="https://MySiteLink/cgi-bin/scsecure/space.gif" width="85" height="18"><font face="Arial" size="2"

color="#000000">

$FORM{'Description'}</font></pre>

</td>

</tr>

<tr>

<td width="484" colspan="2" background="https://MySiteLink/spa.gif"><img

src="https://MySiteLink/spa.gif" width="130" height="1"

alt="https://MySiteLink/spa.gif (816 bytes)"></td>

</tr>

<tr>

<td align="right" bgColor="#FFFFFF" width="80%"><font face="Arial" size="2"

color="#000000">Total:</font></td>

<td align="right" bgColor="#FFFFFF"><font face="Arial" size="2" color="#000000">$FORM{'SubTotal'}</font></td>

</tr>

<tr>

<td align="right" bgColor="#FFFFFF" width="80%"><font face="Arial" size="2"

color="#000000">Freight:</font></td>

<td align="right" bgColor="#FFFFFF"><font face="Arial" size="2" color="#000000">$FORM{'Freight'}</font></td>

</tr>

<tr>

<td align="right" bgColor="#FFFFFF" width="80%"><font face="Arial" size="2"

color="#000000">Tax:</font></td>

<td align="right" bgColor="#FFFFFF"><font face="Arial" size="2" color="#000000">$FORM{'Tax'}</font></td>

</tr>

<tr>

<td align="right" bgColor="#FFFFFF" width="80%"><font face="Arial" size="2"

color="#000000">Total Order:</font></td>

<td align="right" bgColor="#FFFFFF"><font face="Arial" size="2" color="#000000">$FORM{'Amount'}</font></td>

</tr>

<tr>

<td width="484" colspan="2" background="https://MySiteLink/spa.gif"><img

src="https://MySiteLink/spa.gif" width="130" height="1"

alt="https://MySiteLink/spa.gif (816 bytes)"></td>

</tr>

<tr>

<td bgColor="#FFFFFF" width="446" colspan="2"><img

src="https://MySiteLink/cgi-bin/scsecure/space.gif" width="129" height="12"></td>

</tr>

</table>

</center></div><div align="center"><center><table border="0" cellspacing="0"

cellpadding="0" width="450">

<tr>

<td valign="top"><table border="0" width="450"

background="https://MySiteLink/cgi-bin/scsecure/fundo.gif" cellspacing="1"

cellpadding="0">

<tr>

<td width="484" colspan="2" background="https://MySiteLink/spa.gif"><img

src="https://MySiteLink/spa.gif" width="130" height="1"

alt="https://MySiteLink/spa.gif (816 bytes)"></td>

</tr>

<tr>

<td width="484" bgcolor="#FFFFFF"><font face="Arial" size="2" color="#000000"><strong>Registered

Address</strong></font></td><td width="242" bgcolor="#FFFFFF"><font face="Arial" size="2" color="#000000"><strong>This information (except Authorisation_code) will be remembered for the next time you visit. You will NOT need to complete this form each time you order, just as long as you don't delete our cookies from your browser</font></strong></font></td>

</tr>

<tr>

<td width="484" colspan="2" background="https://MySiteLink/spa.gif"><img

src="https://MySiteLink/spa.gif" width="130" height="1"

alt="https://MySiteLink/spa.gif (816 bytes)"></td>

</tr>

<tr>

<td><font face="Arial" size="2" color="#000000">&nbsp; Name:</font><strong><font

face="Arial" size="2" color="#FF0000">*</font></strong></td>

<td><font face="Arial" size="3" color="#000000"><input type="text" size="27"

maxlength="35" name="Name_Billing"></font></td>

</tr>

<tr>

<td><font face="Arial" size="2" color="#000000">&nbsp; Address:</font><strong><font

face="Arial" size="2" color="#FF0000">*</font></strong></td>

<td><font face="Arial" size="3" color="#000000"><input type="text" size="27"

maxlength="45" name="Address_Billing"></font></td>

</tr>

<tr>

<td><font face="Arial" size="2" color="#000000">&nbsp; City:</font><strong><font

face="Arial" size="2" color="#FF0000">*</font></strong></td>

<td><font face="Arial" size="3" color="#000000"><input type="text" size="14"

maxlength="30" name="City_Billing"></font><font face="Arial" size="2" color="#000000">

</tr>

<tr>

<td><font face="Arial" size="2" color="#000000">&nbsp; Authorisation_Code:</font><strong><font

face="Arial" size="2" color="#FF0000">*</font></strong></td>

<td><font face="Arial" size="3" color="#000000"><input type="text" size="25"

maxlength="25" name="Authorisation_Code_Billing"></font></td>

</tr>

<tr>

<tr>

<td><font face="Arial" size="2" color="#000000">&nbsp; Phone:</font><strong><font face="Arial" size="2" color="#FF0000">*</font></strong></td>

<td><font face="Arial" size="3" color="#000000"><input type="text" size="15"

maxlength="25" name="Phone_Billing"></font></td>

</tr>

<tr>

<td><font face="Arial" size="2" color="#000000">&nbsp; E-mail:</font><strong><font

face="Arial" size="2" color="#FF0000">*</font></strong></td>

<td><font face="Arial" size="3" color="#000000"><input type="text" size="27"

maxlength="50" name="email"></font></td>

</tr>

<tr>

<td width="484" colspan="2" background="https://MySiteLink/spa.gif"><img

src="https://MySiteLink/spa.gif" width="130" height="1"

alt="https://MySiteLink/spa.gif (816 bytes)"></td>

</tr>

<tr>

<td width="242" bgcolor="#FFFFFF"><font face="Arial" size="2" color="#000000"><strong>Delivery

Address&nbsp;</strong></font></td>

<td width="242" bgcolor="#FFFFFF"><font face="Arial" size="2" color="#000000"><strong>if different

from above</font></strong></font></td>

</tr>

<tr>

<td width="484" colspan="2" background="https://MySiteLink/spa.gif"><img

src="https://MySiteLink/spa.gif" width="130" height="1"

alt="https://MySiteLink/spa.gif (816 bytes)"></td>

</tr>

<tr>

<td><font face="Arial" size="2" color="#000000">&nbsp; Name:</font></td>

<td><font face="Arial" size="3" color="#000000"><input type="text" size="27"

maxlength="35" name="Name_Shipping"></font></td>

</tr>

<tr>

<td><font face="Arial" size="2" color="#000000">&nbsp; Address:</font></td>

<td><font face="Arial" size="3" color="#000000"><input type="text" size="27"

maxlength="45" name="Address_Shipping"></font></td>

</tr>

<tr>

<td><font face="Arial" size="2" color="#000000">&nbsp; City:</font></td>

<td><font face="Arial" size="3" color="#000000"><input type="text" size="15"

maxlength="30" name="City_Shipping"></font><font face="Arial" size="2" color="#000000"

</tr>

<tr>

<td><font face="Arial" size="2" color="#000000">&nbsp; Phone:</font></td>

<td><font face="Arial" size="3" color="#000000"><input type="text" size="15"

maxlength="25" name="Phone_Shipping"></font></td>

</tr>

<tr>

<td width="484" colspan="2" background="https://MySiteLink/spa.gif"><img

src="https://MySiteLink/spa.gif" width="130" height="1"

alt="https://MySiteLink/spa.gif (816 bytes)"></td>

</tr>

<tr>

<td width="484" colspan="2" bgcolor="#FFFFFF"><font face="Arial" size="2" color="#000000"><strong>Collection or Delivery</strong></font></td>

</tr>

<tr>

<td width="484" colspan="2" background="https://MySiteLink/spa.gif"><img

src="https://MySiteLink/spa.gif" width="130" height="1"

alt="https://MySiteLink/spa.gif (816 bytes)"></td>

</tr>

<tr>

<td><font face="Arial" size="2" color="#000000">&nbsp;Specified here:</font><strong><font

face="Arial" size="2" color="#FF0000">*</font></strong></td>

<td><font face="Arial" size="3" color="#000000"><input readOnly

name="Payment Selected" size="15" value="$FORM{'Type'}"></font></td>

</tr>

<tr>

<td width="484" colspan="2" background="https://MySiteLink/spa.gif"><img

src="https://MySiteLink/spa.gif" width="130" height="1"

alt="https://MySiteLink/spa.gif (816 bytes)"></td>

</tr>

<tr>

<td><font face="Arial" size="2" color="#000000">&nbsp;COMMENT: - If you require the meal to be delivered at a certain time or wish any changes to be made to the dish i.e. hot, mild etc. Please tell us here.

</font><p>&nbsp;</td>

<td><font face="Arial" size="2" color="#000000"><strong><textarea

name="Comments" rows="6" cols="23"></textarea></strong></font></td>

</tr>

<tr>

<td width="484" colspan="2" background="https://MySiteLink/spa.gif"><img

src="https://MySiteLink/spa.gif" width="130" height="1"

alt="https://MySiteLink/spa.gif (816 bytes)"></td>

</tr>

</table>

</td>

</tr>

</table>

</center></div></div></td>

</tr>

</table>

</center></div><div align="center"><center><p><input type="submit" value="Submit">&nbsp;&nbsp;

<input type="reset" value="Reset">&nbsp;&nbsp; <img src="https://MySiteLink/cgi-bin/scsecure/print.gif"

OnClick="Imprimir()" border="0" align="absmiddle"></p>

</center></div><div align="center"><center><table border="0" width="450">

<tr>

<td width="100%"><font face="Arial" size="2">$FORM{'OrderInfo'}<br>

</font><img src="https://MySiteLink/cgi-bin/scsecure/space.gif" width="85" height="18"></td>

</tr>

</table>

</center></div></td>

<td bgcolor="#C0C0C0" width="2" align="center"><img

src="https://MySiteLink/cgi-bin/scsecure/space.gif" width="1" height="86"

alt="space.gif (848 bytes)"></td>

</tr>

</table>

<div align="center"><center><table border="0" width="100%"

background="https://MySiteLink/cgi-bin/scsecure/backib2.gif" cellspacing="0"

cellpadding="0">

<tr>

<td width="100%" align="center"><font size="1" face="Arial"><img

src="https://MySiteLink/cgi-bin/scsecure/space.gif" width="8" height="25"

alt="space.gif (848 bytes)" align="absmiddle"></font><font color="#000000" face="Arial"

size="1">2003<a href="http://MySiteLink">whatever.COM</a>. All

rights reserved.</font></td>

</tr>

</table>

</center></div></td>

</tr>

</table>

</center></div>

</form>

</body>

</html>

EndFooter

;


MacBladez
New User

Jan 3, 2004, 4:56 AM

Post #2 of 3 (6098 views)
Re: [Anonymous] Cookie [In reply to] Quote | Reply | Private Reply

Hiya,

Not sure if this will help but I was just browsing through it myself

and decided to back up my browser and captured the url for you...

Good luckSmile

http://javascript.internet.com/cookies/


Anonymous
Anonymous

Jan 3, 2004, 7:26 AM

Post #3 of 3 (6095 views)
Re: [MacBladez] Cookie [In reply to] Quote | Reply | Private Reply

Thanks for the link, i found a really useful script there. But there is a problem, the script keeps giving an error message at line 82 - error: 'document.frm1.elements' is null or not an object.

the link to the script is http://javascript.internet.com/cookies/address-book.html

Any further assistance will be appreciated. Thanks.

 
 


Search for (options) Powered by Gossamer Forum v.1.2.0

Web Applications & Managed Hosting Powered by Gossamer Threads
Visit our Mailing List Archives