KGRKJGETMRETU895U-589TY5MIGM5JGB5SDFESFREWTGR54TY
Server : Apache/2.4.62
System : FreeBSD fbsdweb2.web.rcn.net 14.1-RELEASE FreeBSD 14.1-RELEASE releng/14.1-n267679-10e31f0946d8 GENERIC amd64
User : www ( 80)
PHP Version : 8.3.8
Disable Function : NONE
Directory :  /domains/softechgrp/login/new/

Upload File :
current_dir [ Writeable ] document_root [ Writeable ]

 

Current File : /domains/softechgrp/login/new/sub-libShop.cgi
#!/usr/local/bin/perl -w

# sub-libShop.cgi
print "\n";

###
sub getMenu{
	@menuItems=('Home','Services','Prices','Message_board','Contact_us','Register','Shop','Forums');

	#$menu="<a href=\"$domain\"><font size='2' face='verdana' color='#191970'>Home</font></a><br>";
		foreach(@menuItems){
			if($_ eq 'Message_board'){
			$menprogUrl="http://www.dmscripts.com/cgibin/DMguest.cgi";
			#c#$menprogUrl="http://localhost/cgi-bin/DMguest.cgi";
			}
			elsif($_ eq 'Register'){
			$menprogUrl="http://www.dmscripts.com/cgibin/dmRegister.cgi";
			#c#$menprogUrl="http://localhost/cgi-bin/dmRegister.cgi";
			}
			elsif($_ eq 'Shop'){
			$menprogUrl="http://www.dmscripts.com/cgibin/DMdatabase.cgi";
			#c#$menprogUrl="http://localhost/cgi-bin/DMdatabase.cgi";
			}
			elsif($_ eq 'Forums'){
			$menprogUrl="http://www.dmscripts.com/cgibin/DMforum2.cgi";
			#c#$menprogUrl="http://localhost/cgi-bin/DMforum2.cgi";
			}
			else{
			$menprogUrl="http://www.dmscripts.com/cgibin/DMwebsite.cgi";
			#c#$menprogUrl="http://localhost/cgi-bin/DMwebsite.cgi";
			}
		$menu .="<a href=\"$menprogUrl?menu=$_\"><font size='2' face='verdana' 	color='#191970'>$_</font></a><br>" if $_ ne $formData{'menu'};
		}
}
###
sub progMenu{
	foreach(@_){
	my(@asd)=split(',',$_);
	$link .="<a href=\"$progUrl?action=$asd[0]&thread=$asd[1]&msgNum=$asd[2]&indent=$asd[3]&lineSeq=$asd[4]&view=$asd[5]&forum=$asd[6]&menu=$asd[7]\"><font face='verdana' size='2' color='black'>$asd[0]</font></a>&nbsp;&nbsp;&nbsp;";
	}
}
###
sub tablerow2{
	my($entry1,$entry2,$entry3)=@_;
	$line="

	<tr>

	<td align='left' width=\"60%\" height='12' bgcolor='#f0f0f0' valign='middle'>
	  <font face='arial' size='2' color='teal'>
	  $entry1
	  </font>
	</td>

	<td align='left' width=\"20%\" height='12' bgcolor='#f0f0f0' valign='middle'>
	  <font face='arial' size='2' color='teal'>
	  $entry2
	  </font>
	</td>

	<td align='left' width=\"20%\" height='12' bgcolor='#f0f0f0' valign='middle'>
	  <font face='arial' size='2' color='teal'>
	  $entry3
	  </font>
	</td>

	</tr>";

	push(@tableLines,$line);
	$output=join('',"<table border='0' cellpadding='0' cellspacing='1' width='100%'>@tableLines</table>");
}
###
sub addVerts{
my(@CordNums)=@_;
	while(@CordNums){
	my($line)=shift(@CordNums);
	unshift(@CordNums3,$line);
	}
	foreach $ordNum1(@CordNums3){
	$ordNum1=~/:(\d+)$/;
	$eVal=($1-1) * 6;
	push(@bVals,$eVal);
	}

	foreach $vert(@bVals){
		foreach $ordNum(@CordNums3){
		$ordNum=~/:(\d+)$/;
		$bVal2=$1 * 6;
			if($vert < $bVal2){
			@chars=split('',substr($ordNum,0,$bVal2));
			$chars[$vert]="\|";
			$newChars=join('',@chars);
			$ordNum=~s/^.{$bVal2}//;
			$ordNum="$newChars$ordNum";
			}
			else{
			$line=shift(@CordNums3);
			$line=~s/(\|)\#+(<)/$1\_$2/;
			$line=~s/\#/&nbsp;/g;
			unshift(@ordNums4,$line);
			last;
			}
		}
	}
}
###
sub makeThread2{
	local($rnumPairs,$rbackTrack)=@_;
		foreach(@{$rbackTrack}){
		my($numA,$numB)=split('~',$_);
		$cnt=0;
			foreach(@{$rnumPairs}){
			my($numC,$numD)=split('~',$_);
				if($numA == $numD){
				push(@ordNums,$_);
				unshift(@{$rbackTrack},$_);
				splice(@{$rnumPairs},$cnt,1);
				&makeThread2(\@{$rnumPairs},\@{$rbackTrack});
				}
			$cnt++;
			}
		}
}
###
sub opMsg{
	my($lineSeq,$lineBrk,$minusIndent,$author)=@_;
	@lineSeqNums=split('~',$lineSeq);
	@indentVals=(0);
		foreach $pair(@lineSeqNums){
		($msgNum,$linePartNum)=split(':',$pair);
		@msgParts=split('~',$msgs{$msgNum}->{'message'});
		push(@msgLines,"-$msgNum-$msgParts[$linePartNum]$lineBrk");
			foreach(@indentVals){
				if($msgNum == $_){
				$flag=1;
				}
			}
			if($flag < 1 || $msgNum == 0){
			push(@indentVals,$msgNum);
			#push(@authors,$msgs{$msgNum}->{'author'});
			$authors{$msgNum}=$msgs{$msgNum}->{'author'};
			}
		$flag=0;
		}

	@colours=("#8a2be2","#00008b","#a52a2a","#008000","#d2691e","#9400d3","#dc143c",
		  "#008b8b","#b8860b","#8b008b","#cd5c5c","#778899","#800000","#0000cd",
		  "#808000","#cd853f","#800080","#8b4513","#2e8b57","#a0522d","#708090");
	my($count)=scalar(@indentVals);
		foreach(sort {$a <=> $b} @indentVals){
		$indents{$_}=$count;
		$colors{$_}=$colours[$count];
		$count--;
		}

		while(@msgLines){
		$line=shift(@msgLines);
		#$line=~s/(#\d+#:\d+)$//;
#$nu=$1;
#$line=~s/ +$//;
#$endNums .="$nu|";
#print "$line-$nu<br>";
		$line=~s/NEWLINE/\\n/g;
		$line=~s/TiLdE/\~/g;
		$line=~s/PIPE/\|/g;
		$line=~s/SEMICOLON/;/g;
		$line=~s/BSLASH/\\/g;
		$line=~s/AMPERS/&amp;/g;
		$line=~s/BACKTICK/`/g;
		$line=~s/\r(#\d+#:\d+)$/$1/;
		$line=~s/^-(\d+)-//;
		$indent="&gt;" x ($indents{$1}-$minusIndent);
		$line2="$indent$line";
		push(@indentedLines2,$line2);
		$finMsg2=join('',@indentedLines2);
		#$shtName=substr($authors{$1},0,15);
			if($colors{$1} ne $cpCols){
			$line="<tr><td bgcolor='#f0f0f0' align='left' valign='top' width='15%'><font face='arial' size='2' color='$colors{$1}'>$authors{$1}</font></td><td bgcolor='#f0f8ff' align='left' valign='top'><font face='arial' size='2' color='$colors{$1}'>&nbsp;$indent $line</font></td></tr>";
			}
			else{
			$line="<tr><td bgcolor='#f0f0f0' align='left' valign='top' width='15%'><font face='arial' size='2' color='$colors{$1}'>&nbsp;</font></td><td bgcolor='#f0f8ff' align='left' valign='top'><font face='arial' size='2' color='$colors{$1}'>&nbsp;$indent $line</font></td></tr>";
			}
		$cpCols=$colors{$1};
		push(@indentedLines,"$line");
		$finMsg=join('',"<table border='0' cellpadding='0' cellspacing='0' width='100%'>@indentedLines</table>");
		}
	#chop($endNums);
}
###
sub makeThreadDiagram{
	my($refmlinks,$refleftovers)=@_;
		foreach $message(@{$refmlinks}){
		$message=~/^(\d+)/g;
		$messagesNum=$1;
			foreach $leftover(@{$refleftovers}){
			$leftover=~/^\d+~(\d+)~/g;
			$leftoversNum=$1;
				if($messagesNum == $leftoversNum){
				$message .="#$leftover" if $leftover=~/.+/g;
				$leftover='';
				}
			}
		}

		foreach(@{$refmlinks}){
			if($_=~/#/g){
			$cnt=0;
			@innerEls=split('#',$_);
				foreach(@innerEls){
				push(@newLinks,$innerEls[$cnt]);
				$cnt++;
				}
			}
			else{
			push(@newLinks,$_);
			}
		}
		foreach(@leftovers){
			if($_ ne ''){
			push(@leftovers2,$_);
			}
		$_='';
		}
	&makeThread(\@newLinks,\@leftovers2) if @newLinks <= 10000;
}
###
sub makeThread{
	my($newLinks,$leftovers)=@_;
	@links=(@{$newLinks});
	@lovers=(@{$leftovers});
	&makeThreadDiagram(\@links,\@lovers);
}
###
sub formatMsg3{
	my($fileMsg,$lineCount)=@_;
	$fileMsg=~/^(.{50})/;
	my($line)=$1;
	push(@newMsgLines,"$line#$formData{'msgNum'}#");
	push(@allLines,$line);
	$rem=$';
	$rem=~s/\r//g;
		if($rem=~s/^([^ ]+)/ /){
		$lastEl=pop(@allLines);
		chomp($lastEl);
		pop(@newMsgLines);
		$lastEl="$lastEl$1";
		push(@newMsgLines,"$lastEl#$formData{'msgNum'}#");
		push(@allLines,$lastEl);
		}
		if(length($rem) > 50){
		&formatMsg3($rem,$lineCount);
		}
		else{
		$rem=~s/ +$//;
		push(@newMsgLines,"$rem#$formData{'msgNum'}#");
		push(@allLines,$rem);
		}
}
###
sub stMsgForm{
	#my($forum)=@_;
	$stMsgForm="<form action=$progUrl method='post'>
		Subject:<br>
		<input type='text' name='subject' size='50'><br><br>
		Message:<br>
		<textarea rows='10' cols='70' name='message' wrap='soft'></textarea><br>
		<input type='submit' name='submitStMsg' value='Post'>
		<input type='hidden' name='msgNum' value='0'>
		<input type='hidden' name='msgNum2' value='0'>
		<input type='hidden' name='linkToMe' value='0'>
		<input type='hidden' name='indent' value='0'>
		<input type='hidden' name='lineSeq' value='0'>
		<input type='hidden' name='forum' value='$formData{'forum'}'>
		</form>";
		#<input type='hidden' name='forum' value='$forum'>
}
###
sub getFileVals{
	my($file)=@_;
		if(-f $file && -r $file){
		open(FILE,"<$file") or die("Cannot open $file for input. $!");
		@lines=<FILE>;
		close(FILE);
		chomp(@lines);
		}
	my(@fldNames)=split('\|',shift(@lines));
	$count=0;
		while($count < @lines){
		$counts=0;
			foreach(@fldNames){
			@vals=split('\|',$lines[$count]);
			push(@fldNameVals,$fldNames[$counts],$vals[$counts]);
			$msgs{$vals[4]}={@fldNameVals};
			$counts++;
			}
		$count++;
		}
}
###
sub tablerow{
	my($entry1,$entry2,$entry3,$entry4,$tdsizes)=@_;
	$line="
	<tr>

	<td align='left' width=${$tdsizes}[0] height='12' bgcolor='#f0f0f0' valign='middle'>
	  <font face='arial' size='2' color='#00008b'>
	  $entry1
	  </font>
	</td>

	<td align='left' width=${$tdsizes}[1] height='12' bgcolor='#f0f0f0' valign='middle'>
	  <font face='arial' size='2' color='#00008b'>
	  $entry2
	  </font>
	</td>

	<td align='left' width=${$tdsizes}[2] height='12' bgcolor='#f0f0f0' valign='middle'>
	  <font face='arial' size='2' color='#00008b'>
	  $entry3
	  </font>
	</td>

	<td align='right' width=${$tdsizes}[3] height='12' bgcolor='#f0f0f0' valign='middle'>
	  <font face='arial' size='2' color='#00008b'>
	  $entry4
	  </font>
	</td>
	</tr>";
	#$line="<table border='0' cellpadding='0' cellspacing='1' width='100%'>$line</table>";
	push(@tableLines,$line);
	$output=join('',"<table border='0' cellpadding='0' cellspacing='1' width='100%'>@tableLines</table>");
}
###
sub logonPage2{
	my($progUrl)=@_;
	&getMenu;
	&getTemplate;
	my($header)= $formData{'menu'} ? "$formData{'menu'}" : "Forums";
	my($header)="Logon";
	my($subHeader)="To post a message in our forum, you need to enter your password.";
	my($footer)="$emailLink";

	my($htmloutput)="<form method='post' action=\"$progUrl\">
			<font size='2' color='#a0522d' face='verdana'>
			<b>Members logon.</b><br>
			Your username please:<br>
			<input type='text' name='username' size='20'><br>
			Your password:<br>
			<input type='password' name='pw' size='20'><br>
			<input type='submit' name='enterforum' value='Enter Forum'>
			<input type='hidden' name='action' value=\"$formData{'action'}\">
			<input type='hidden' name='thread' value=\"$formData{'thread'}\">
			<input type='hidden' name='msgNum' value=\"$formData{'msgNum'}\">
			<input type='hidden' name='indent' value=\"$formData{'indent'}\">
			<input type='hidden' name='lineSeq' value=\"$formData{'lineSeq'}\">
			<input type='hidden' name='forum' value=\"$formData{'forum'}\">
			</font>
			</form><br>

			<form method='post' action=\"$progUrl\">
			<font size='2' color='#a0522d' face='verdana'>
			Or you can browse without a password<br>
			<b>Guests.</b><br>
			<input type='submit' name='browseForum' value='Browse Forum'>
			</font>
			</form><br>
			If you do not have a password, 
			<a href=\"$registerLink?menu=Register\">
			<b>click here</b>
			</a> 
			to register.<br>";

	&getResultPage($header,$subHeader,$menu,$htmloutput,$footer);
}
###
sub getDate2{
	@months=('Jan','Feb','Mar','Apr','May','Jun','Jul','Aug','Sep','Oct','Nov','Dec');
	($sec,$min,$hr,$day,$month,$year,$day_Of_Week,$julianDate,$dst)=localtime;
	$year+=1900;
	$date="$day $months[$month], $year";
}
###
sub checkFields{
	my($formData)=@_;
	@pairs=split('&',$formData);
		foreach $pair(@pairs){
		$pair=~s/\+/ /g;
			if($pair=~m/(.+)=$/){
			$error=1;
			$errorHeader .="Error: The \"$1\" field is blank<br>";
			}
		}
		if($error == 1){
		print "$errorHeader<br>$formData";
		exit;
		}
}
###
sub getPage{
	my($header,$subHeader,$htmloutput,$footer)=@_;
	&getMenu;
	&getTemplate;
	&getResultPage($header,$subHeader,$menu,$htmloutput,$footer);
}
###
sub getCookie2{
	if(%cookies=fetch CGI::Cookie){
		if($cookies{'foo'}->value!~/.+/ && !$formData{'sch'}){
		&logonPage2($progUrl);
		exit;
		}
		elsif(defined($cookies{'foo'}->value)){
		$cookies{'foo'}->value=~/.+=(.+)$/;
		$username=$1;
		}
	}
}
###
sub getCookie{
	if(%cookies=fetch CGI::Cookie){
		if($cookies{'foo'}->value!~/.+/ && !$formData{'sch'}){
		&logonPage($progUrl);
		exit;
		}
		elsif(defined($cookies{'foo'}->value)){
		$cookies{'foo'}->value=~/.+=(.+)$/;
		$username=$1;
		}
	}
	else{
	&logonPage($progUrl);
	exit;
	}
}
###
sub logonPage{
	my($progUrl)=@_;
	&getMenu;
	&getTemplate;
	my($header)= $formData{'menu'} ? "$formData{'menu'}" : "Shop";
	my($subHeader)="To use a shopping cart you need to enter your password.";
	my($footer)="$emailLink";
	my($htmloutput)="<form method='post' action=\"$progUrl\"><font size='2' color='#a0522d' face='verdana'><b>Members logon.</b><br>
			Your username please:<br>
			<input type='text' name='username' size='20'><br>Your password please:</font><br><input type='password' name='pw' size='20'><br><input type='submit' name='entersite' value='Enter Shop'></form><br>
			<form method='post' action=\"$progUrl\"><font size='2' color='#a0522d' face='verdana'>Or you can browse without a password<br><b>Guests.</b></font><br><input type='hidden' name='action' value='Shop'><input type='submit' name='browse' value='Browse Shop'></form><br>If you do not have a password, <a href=\"$registerLink?menu=Register\"><b>click here</b></a> to register.<br>";
	&getResultPage($header,$subHeader,$menu,$htmloutput,$footer);
}
###
sub cartJobLinks{
	my($viewLink)=@_;
	$links="<a href=\"$progUrl?view=viewCart&item=$viewLink\">View Cart</a> - <a 	href=\"$progUrl?empty=emptyCart&item=$viewLink\">Empty Cart</a> - <a href=\"$progUrl?action=checkout&item=$viewLink\">Checkout</a> - <a href=\"$domain\">Home</a>";
}
###
sub getLinks{
	my($path)=@_;
	my(@directories)=split('\/',$path);
		while(@directories){
		my($dirString)=shift(@directories);
		push(@linkString,"$dirString/");
		$link=join('',@linkString);
		my($backLink) .=$dirString."/";
			if(@directories == 0){
			$dirString=~s/\..+$//;
			$dirString=~s/_/ /;
			$string=$dirString;
			last;
			}
		$dept="<font face='verdana' size='2' color='#a0522d'><a href=\"$progUrl?action=$link\">$dirString</a> >> </font>";
		push(@depts,$dept);
		}
	$string=~s/_/ /;
	$location="You arrived here through:<br><table border='0' cellspacing='0' cellpadding='0' width='100%'><tr><td align='left' width='30%' bgcolor='#faebd7' valign='middle'><b>@depts <font face='verdana' size='2' color='#a0522d'>$string</font></b></table>";
	#print "$location";
	#print "<table border='0' cellspacing='0' cellpadding='0' width='100%'><tr><td align='left' width='30%' bgcolor='#faebd7' valign='middle'>@depts <font face='verdana' size='2' color='#a0522d'>$string</font></table>";
}
###
sub displayCart{
	my($username,$backLink)=@_;
$notWantedbackLink=substr($backLink,0,index($backLink,"S"));
$backLink=~s/^$notWantedbackLink//;
	my(@itemDetails);
	&getLinks($backLink);
	##################
	#&getTemplate;
	##################
	my($file)="$cartDir$username.txt";
		if(-e $file && -s $file > 0){
		open(CART,"<$file")or die("Can't open $file for read. $!");
			while(<CART>){
			local($dept,$id,$itemname,$price,$taxable,$qty,$fullprice)=split(':',$_);
			$dept=~s/[^\d]//g;
			$total+=$fullprice;
			$remove="<a href=\"$progUrl?back=$backLink&item=$.&remove=$file&user=$username\">Remove</a>";
			sprintf('%2.f',$price);
			$price="\$$price";
			&tablelines($itemname,$qty,$price,$fullprice,$remove,'');
			push(@lines,$line);
			}
		close(CART);

		my($header)="<b>$username.</b> Your shopping cart contains the following items:";
		my($subheader)="<b>Your shopping cart contains:</b>";
		$htmloutput="@lines";
		$back="<a href=\"$progUrl?action=$backLink\">Continue shopping</a>";
		&tablelines('','','Total:',$total,'');
		push(@lins,$line);
			if($flag){
			$string=substr($cookies{'foo'}->value,1,length($cookies{'foo'}->value));
			$string=~tr/+/ /;
			my(@pairs)=split('&',$string);
			@pairs=(@pairs,'Name on Credit Card','Credit Card Number');
			&txtbxform(\@pairs);
			$shopperDetails=join('',@formlines);
			&cartJobLinks($backLink);
			#@selects=('Credit Card type','Expiry month','Expiry year','Delivery options');
			@ccTypes=('Mastercard','Visa','American Express');
			@ccExpMonths=('01','02','03','04','05','06','07','08','09','10','11','12');
			@ccExpYears=('2000','2001','2002','2003','2004','2005');
			@deliveryOpts=('Pick up','First class: $14.95','Second class: $11.95','Third class: $8.95');
			&createSelect(\@ccTypes,\@ccExpMonths,\@ccExpYears,\@deliveryOpts);
			$footer="@lins<br>$links - $back<br><br>$shopperDetails<br>$type $exp";
			$ct=0;
			shift(@selects);
				foreach(@mens){
				$footer .="<table border='0' cellpadding='1' cellspacing='1' width='100%'><tr><td align='right' width='33%' bgcolor='#f0f8ff'><font face='verdana' size='2' color='#a0522d'>$selects[$ct]: select</font></td><td bgcolor='#faebd7'>$_</td></tr></table>";
				$ct++;
				}
			$footer="<form action=\"$progUrl\" method='post'>$footer<input type='submit' name='submitData' value='Submit'><input type='hidden' name='item' value='buy'></form>";
			}
			else{
			&cartJobLinks($backLink);
			$footer="@lins<br>$links - $back";
			}
		##################
		&getMenu;
		&getTemplate;
		&getResultPage($header,$subheader,$menu,$htmloutput,$footer);
		##################
		}
		else{
		$header="Shop";
		$htmloutput="Your shopping cart is empty<br><a href=\"$progUrl?action=$backLink\">Continue shopping...</a>";
		&getMenu;
		&getTemplate;
		&getResultPage($header,$subheader,$menu,$htmloutput,$footer);
		}
}


###
sub outputPage{
my($dir,$dir2,$backLink,$li)=@_;

	&getLinks($dir);
	&cartJobLinks($dir);
	&getTemplate;
	&prSchForm($dir2);
	&getMenu;

	my($header)="Shop";
	my($subHeader)="$location$schForm";
	my($htmloutput)="$li";
	my($footer)="$links - $backLink";

	&getResultPage($header,$subHeader,$menu,$htmloutput,$footer);
	exit;
}
###
sub createSelect{
$cnt=1;
	foreach(@_){
		foreach(@{$_}){
		push(@options,"<option value=\"$_\">$_");
		}
	push(@mens,"<SELECT name=\"cat$cnt\" size='1'>@options</select>");
	@options='';
	$cnt++;
	}
}
###
sub txtbxform{
my($refpairs)=@_;
	foreach $fieldname(@{$refpairs}){
	($fieldname,$value)=split('=',$fieldname);
	$form="<table border='0' cellpadding='1' cellspacing='1' width='100%'><tr><td align='right' width='33%' bgcolor='#f0f8ff'><font face='verdana' size='2' color='#a0522d'>$fieldname:</font><td bgcolor='#faebd7'><input type='text' size='50' name='$fieldname' value='$value' maxlength='40'></table>";
	push(@formlines,$form);
	}
}
###
sub deleteCart{
	my($username,$back)=@_;
	my($file)="$cartDir$username.txt";
		if(-e $file){
		$header="Shop";
		&getLinks($back);
		$htmloutput="Your cart has been emptied<br><a href=\"$progUrl?action=$back\">Continue Shopping...</a>";
		&getMenu;
		&getTemplate;
		&getResultPage($header,$subheader,$menu,$htmloutput,$footer);
		unlink($file);
		}
		else{
		&getLinks($back);
		$header="Shop";
		$htmloutput="There's no cart to empty yet<br><a href=\"$progUrl?action=$back\">Continue shopping...</a>";
		&getMenu;
		&getTemplate;
		&getResultPage($header,$subheader,$menu,$htmloutput,$footer);
		}
}
###
sub getPgVars{
	my($refCats,$refHeader,$refSubHeader,$refFooter,$refLink)=@_;
	my($subcat);
	my(@lines);
	##################
	&getMenu;
	##################
	&getTemplate;
		foreach(@{$refCats}){
		$descripts=$descripts{$_};
		$subcat=$_;
		$subcat=s/(\..+)$//g;
		$line="<tr><td align='left' width='30%' bgcolor='#faebd7' valign='middle'><font face='verdana' size='2' color='#a0522d'><a href=$progUrl?action=${$refLink}$_$1>$_</a></td><td align='left' width='70%' bgcolor='#f0f8ff' valign='top'><font face='verdana' size='2' color='#a0522d'>&nbsp;$descripts</font></td></tr>";
		push(@lines,$line);
		}

	local($htmloutput)="<table border='0' cellspacing='1' cellpadding='0' width='100%'>@lines</table>";

	&getResultPage(${$refHeader},${$refSubHeader},$menu,$htmloutput,${$refFooter});
}
###
sub getTemplate{
	open(TEMP,"<$templatefile")or die("Cannot open $templatefile for input: $!");
	my(@templatepage)=<TEMP>;
	close(TEMP);
	$resultpage=join('',@templatepage);
}
###
sub getResultPage{
	my($header,$subHeader,$menu,$htmloutput,$footer)=@_;
	$resultpage=~s/HEADER/$header/;
	$resultpage=~s/SUBHEADER/$subHeader/g;
	$resultpage=~s/MENU/$menu/g;
	$resultpage=~s/HTMLOUTPUT/$htmloutput/g;
	$resultpage=~s/FOOTER/$footer/g;

	print "$resultpage";
}
###
sub getFileHash{
		my($file)=@_;
		&csvFileParse($file) if -f $file && -r $file;
		my(@fldNames)=split('\|',shift(@names));
		$count=0;
			while($count < @names){
			$counts=0;
				foreach(@fldNames){
				@vals=split('\|',@names[$count]);
				push(@qwer,$fldNames[$counts],$vals[$counts]);
				$counts++;
				}
			$count++;
			@asdf=splice(@qwer,0,$#qwer+1);
			$items{$asdf[1]}={@asdf};
			}
}
###
sub csvFileParse{
	my($file)=@_;
	open(FILE,"<$file") or die("Cannot open $file for input. $!\n");
		while(<FILE>){
		chomp;
		push(@names,$_);
		}
	close(FILE);
}
###
sub tablelines{
	my($entry1,$entry2,$entry3,$entry4,$entry5,$entry6)=@_;
			$line="<table border='0' cellpadding='0' cellspacing='1' width='100%'>
			<tr>

			<td align='left' width='20%' bgcolor='#faebd7' valign='middle'>
			  <font face='verdana' size='2' color='#a0522d'>
			  $entry1
			  </font>
			</td>

			<td align='right' width='20%' bgcolor='#faebd7' valign='middle'>
			  <font face='verdana' size='2' color='#a0522d'>
			  $entry2
			  </font>
			</td>

			<td align='right' width='20%' bgcolor='#faebd7' valign='middle'>
			  <font face='verdana' size='2' color='#a0522d'>
			  $entry3
			  </font>
			</td>

			<td align='right' width='20%' bgcolor='#faebd7' valign='middle'>
			  <font face='verdana' size='2' color='#a0522d'>
			  \$" .sprintf('%.2f',$entry4) ."
			  </font>
			</td>

			<td align='right' width='20%' bgcolor='#faebd7' valign='middle'>
			  <font face='verdana' size='2' color='#a0522d'>
			  $entry5
			  </font>
			</td>
			$entry6
			</tr>
			</table>";
}
#### DMregister.cgi subroutines ####################################################
###
sub printForm{
	my($refpairs,$refHeader,$refsubmitButtonName,$refprog)=@_;
	&txtbxform($refpairs);
	$header=${$refHeader};
	$subheader=	"Please complete the form below and click on the submit button.
			<form method='post' action='dmRegister.cgi'>";
 	$htmloutput=join('',@formlines);
 	$footer=	"<input type='submit' value='Click here to submit' name='${$refsubmitButtonName}'>
			</form>";
	######################
	&getMenu;
	&getTemplate($templatefile);
	######################
	&getResultPage($header,$subheader,$menu,$htmloutput,$footer);
}
###
sub getResultPage{
	my($header,$subHeader,$menu,$htmloutput,$footer)=@_;
	$resultpage=~s/HEADER/$header/;
	$resultpage=~s/SUBHEADER/$subHeader/g;
	$resultpage=~s/MENU/$menu/g;
	$resultpage=~s/HTMLOUTPUT/$htmloutput/g;
	$resultpage=~s/FOOTER/$footer/g;

	print "$resultpage";
}
###
sub setPw{
	my($formData)=@_;
		@alphaNums=("A".."Z","a".."z",0..9);
			for(1..9){
			$char=$alphaNums[int(rand(62))];
			push(@pwChars,$char);
			}
		$password=join('',@pwChars);

		@randomList=("a".."z",0..9);
		$randomAlphNum="@randomList";
		$randomAlphNum=~s/ //g;
			for(0..1){
			$salt .=substr($randomAlphNum,int(rand(36)),1);
			}
		$password .=$salt;
		$encPass=crypt($password,$salt);
		$data=substr($formData,0,rindex($formData,"&"));
		#print "$password<br>$encPass<br>$salt<br>$data<br>$formData{'Choose a username'}";
		#print "$password<br>";

		open(PASS,">>$pwFile") or die("Cannot open $pwFile for append. $!");
		print PASS "$encPass&$data\n";
		close(PASS);

		#c############### MAIL
		$recipient="$formData{'Email'}";
		$from="DMscriptsDMscriptsDMscripts";
		$replyto="davemortimer\@one.net.au";
		$mailSubject="New Registration";
		$mailMessage="Thank you for your registration $formData{'First name'}\nYour password is: $password";
		#&sndMail(\@recipients,$replyto,$mailSubject,$mailMessage);
		&sndMail($recipient,$from,$replyto,$mailSubject,$mailMessage);

		open(MAIL,"|$mailprog -t") or die("Cannot access $mailprog: $!\n");
		print MAIL "To: $recipient\n";
		print MAIL "Reply-to: $replyto\n";
		print MAIL "Subject: $mailSubject\n\n";

		print MAIL "$mailMessage\nReturn to http://www.dmscripts.com/";

		close(MAIL);
		#c############### MAIL

		#print <<endHTML;
		#<h2>Thank You</h2>
		#Thank you for writing. Your mail has been delivered.<p>
		#Return to our <a href="index.html">home page</a>.
		#</body></html>
#endHTML
			#while(($key,$val)=each(%formData)){
			#print "$key = $val<br>";
			#}
}
###
sub sndMail{
	my($recipient,$from,$replyto,$mailSubject,$mailMessage)=@_;
	open(MAIL,"|$mailprog -t") or die("Cannot access $mailprog: $!\n");
	print MAIL "To: $recipient\n";
	print MAIL "From: $from\n";
	print MAIL "Reply-to: $replyto\n";
	print MAIL "Subject: $mailSubject\n\n";

	print MAIL "$mailMessage\nReturn to $domain";

	close(MAIL);
}
##########################################################################################
### Search subroutines ###################################################################
### &search($schRtDir,$formData{'query'});
sub search{
	my($schRtDir,$schQuery)=@_;
	local($file,$dir,@dirs);

	chdir($schRtDir)or die("Can't change directories to $schRtDir: $!");
	my(@filenames)='';								# Remember to reset
	opendir(DIR,$schRtDir)or die("Cannot open $dir: $!");				# @filenames to null.
		while($fil=readdir(DIR)){
			unless(($fil=~/^\.$/) || ($fil=~/^\.\.$/)){
			push(@filenames,$fil);
			}
		}
		foreach(@filenames){
			if(-d && -r){
			push(@dirs,$_);
			}
		$type= (-f) ? file : directory;
			if(-f){
			$size=sprintf('%.2f',(-s)/1024)." kb";
			$file="$schRtDir$_";
			open(FILE,"<$file")or die("Can't open $file for input: $!");
			my(@lines)=<FILE>;
			close(FILE);
			&itemSearch(@lines);
			}
		}
		foreach(@dirs){
		&search("$schRtDir$_$dl",$schQuery);			
		}
}


###
sub itemSearch{
my(@lines)=@_;
		foreach(@lines){
		$cpLine=$_;
		$cnt=0;
		$_=~s/\|/ /g;
		my(@words)=split(' ',$_);
			if($formData{'searchType'} eq 'words'){
			$count=0;
				foreach $word(@words){
				@sepwords=split(' ',$formData{'query'});
					foreach(@sepwords){
						if($word eq $_){
						$count++;
						}
					}
				}
				if($count > 0){
				$schFlag=1;
				push(@schLines,"$file|$cpLine");
				@lineAtts=split('\|',$cpLine);
				$schOutput .="<b>$count:</b> $file<br>$cpLine<br>$form$endForm<br>";
				}
			}
			elsif($formData{'searchType'} eq 'phrase'){
			$schFlag=1;
			&findPhrase($_);
			push(@schLines,"$file|$cpLine") if $cnt > 0;
			}
		}
}

###
sub findPhrase{
	my($string)=@_;
		if($string=~/($formData{'query'})/g){
		&findPhrase($');
		$cnt++;
		}
}
###
sub getDate{
	@months=('Jan','Feb','Mar','Apr','May','Jun','Jul','Aug','Sep','Oct','Nov','Dec');
	@time=($sec,$min,$hr,$day,$month,$year,$day_Of_Week,$julianDate,$dst) = localtime($mtime);
	$year+=1900;
	$date="$day, $months[$month], $year";
}
###
sub prSchForm{
	my($schAction)=@_;
	#c#$schForm="<form action='http://localhost/cgi-bin/DMdatabase.cgi' method='post'>
	$schForm="<form action=\"$progUrl\" method='post'>
	Search our database. Enter your search term or phrase.<br>
	<input type='text' name='query' size='55'><br>
	As seperate words:<input type='radio' name='searchType' value='words' checked>
	As a phrase:<input type='radio' name='searchType' value='phrase'>
	<input type='hidden' name='item' value='1'>
	<input type='hidden' name='action' value=$schAction>
	<input type='hidden' name='menu' value='Shop'>
	<input type='submit' name='sch' value='Search'>
	</form>";
}
###
sub addForm{
	my($action,$id,$name,$price,$taxable,$schFlag)=@_;
		$form="<form action=\"$progUrl\" method='post'>
		Qty: <input type='text' name='qty' size='3' value='1'>
		<input type='hidden' name='item' value=\"$action:$id:$name:$price:$taxable\">
		<input type='hidden' name='back' value=\"$formData{'action'}\">
		<input type='hidden' name='action' value=\"$action\">
		<input type='hidden' name='schResFlag' value=\"$schFlag\">
		<input type='submit' name='addToCart' value='Add'>";
		$endForm="</form>";
}

Anon7 - 2021