File: 0.04.12a/server/web/firstrun-.php (View as HTML)

  1: <?php
  2: /* -------------------------------------------------------------
  3: This file is part of FreeNATS
  4: 
  5: FreeNATS is (C) Copyright 2008 PurplePixie Systems
  6: 
  7: FreeNATS is free software: you can redistribute it and/or modify
  8: it under the terms of the GNU General Public License as published by
  9: the Free Software Foundation, either version 3 of the License, or
 10: (at your option) any later version.
 11: 
 12: FreeNATS is distributed in the hope that it will be useful,
 13: but WITHOUT ANY WARRANTY; without even the implied warranty of
 14: MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 15: GNU General Public License for more details.
 16: 
 17: You should have received a copy of the GNU General Public License
 18: along with FreeNATS.  If not, see www.gnu.org/licenses
 19: 
 20: For more information see www.purplepixie.org/freenats
 21: -------------------------------------------------------------- */
 22: 
 23: require("include.php");
 24: $sn=$_SERVER['SCRIPT_NAME'];
 25: $script="";
 26: for ($a=strlen($sn)-1; $a>0; $a--)
 27: 	{
 28: 	$c=$sn[$a];
 29: 	if ($c=="/") $a=-1;
 30: 	else $script=$c.$script;
 31: 	}
 32: if ($script!="firstrun.php")
 33: 	{
 34: 	echo "<b>Error:</b> This script is not correctly named. In order to run it please rename &quot;".$script."&quot; to &quot;firstrun.php&quot;.";
 35: 	echo "<br><br>";
 36: 	exit();
 37: 	}
 38: if (isset($_REQUEST['stage'])) $stage=$_REQUEST['stage'];
 39: else $stage=0;
 40: 
 41: function sqlfile($file)
 42: {
 43: global $BaseDir;
 44: $fn=$BaseDir."sql/".$file.".sql";
 45: echo "Processing ".$fn."<br><br>";
 46: $fp=fopen($fn,"r");
 47: if ($fp<=0)
 48: 	{
 49: 	echo "<b>ERROR: Cannot Open File!</b><br><br>";
 50: 	return false;
 51: 	}
 52: $q="";
 53: $qc=0;
 54: $qok=0;
 55: $qerr=0;
 56: while ($s=fgets($fp,1024))
 57: 	{
 58: 	if ($s[0]!="-")
 59: 		{
 60: 		for ($a=0; $a<strlen($s); $a++)
 61: 			{
 62: 			$c=$s[$a];
 63: 			if ($c==";")
 64: 				{
 65: 				mysql_query($q);
 66: 				$qc++;
 67: 				if (mysql_errno()!=0)
 68: 					{
 69: 					echo "<b>Warning/Error</b><br>";
 70: 					echo "<b>SQL:</b> ".$q."<br>";
 71: 					echo "<b>Error:</b> ".mysql_error()." (Code ".mysql_errno().")<br><br>";
 72: 					$qerr++;
 73: 					}
 74: 				else $qok++;
 75: 				$q="";
 76: 				}
 77: 			else
 78: 				$q.=$c;
 79: 			}
 80: 		}
 81: 	}
 82: echo "Finished Processing: ".$qc." queries (".$qok." ok, ".$qerr." warnings/errors)<br><br>";
 83: fclose($fp);
 84: }
 85: 
 86: echo "<html><head><title>FreeNATS Setup</title></head><body>\n";
 87: echo "<h1>First Run Setup: Stage ".$stage."</h1>";
 88: 
 89: echo "Testing database connectivity...<br>";
 90: 		$sql=mysql_connect($fnCfg['db.server'],$fnCfg['db.username'],$fnCfg['db.password'])
 91: 			or die("Failed to connect to database server ".$fnCfg['db.server']." with username ".$fnCfg['db.username']."<br>Details: ".mysql_error());
 92: 		mysql_select_db($fnCfg['db.database'])
 93: 			or die("Connected ok but failed to select database ".$fnCfg['db.database']."<br>Details: ".mysql_error());
 94: 		echo "Database connection succeeded!<br><br>";
 95: 
 96: switch($stage)
 97: 	{
 98: 	case 0:
 99: 		echo "<b style=\"color: red;\">Users Performing an Upgrade Please Note:</b><br>this will only update the database and not ";
100: 		echo "the files which you must do manually or with the shell-install/vm-upgrade scripts.</b><br><br>";
101: 		echo "<form action=firstrun.php method=post>";
102: 		echo "<input type=hidden name=stage value=1>";
103: 		echo "<b>Setup Database Schema and Defaults</b><br><br>";
104: 		echo "Select installation/update type...<br><br>";
105: 		echo "<table border=0><tr>";
106: 		echo "<td align=left valign=center>";
107: 		echo "<input type=radio name=insttype value=fresh checked>";
108: 		echo "</td><td align=left valign=top>";
109: 		echo "<b>Fresh Install/Upgrade</b><br>";
110: 		echo "First time users should select this. For upgrades this is<br>";
111: 		echo "the recommended choice and should work but will loose your<br>";
112: 		echo "data and configuration.<br><br>";
113: 		echo "</td></tr><tr><td align=left valign=center>";
114: 		echo "<input type=radio name=insttype value=upgrade>";
115: 		echo "</td><td align=left valign=top>";
116: 		echo "<b>Database Upgrade (highly experimental)</b><br>";
117: 		echo "Select this to attempt to update your schema (add new tables<br>";
118: 		echo "and fields etc keeping your data and config intact. You may<br>";
119: 		echo "need to come back and do a fresh update or update the schema<br>";
120: 		echo "<i>by hand</i> if it fails.";
121: 		echo "</td></tr></table><br>";
122: 		echo "<input type=checkbox name=tracker value=1 checked> Submit Anonymous Usage Data Automatically<br>";
123: 		echo "<i>This will help us track use of the product and aid future development.</i><br><br>";
124: 		echo "<input type=checkbox name=example value=1 checked> Include Example Setup (Recommended) (n/a if upgrade selected)<br><br>";
125: 		echo "<input type=submit value=\"Proceed With Setup\">";
126: 		echo "</form>";
127: 		exit();
128: 		break;
129: 		
130: 	case 1:
131: 		if ($_REQUEST['insttype']=="fresh")
132: 			{
133: 			echo "<b>Fresh Install or Clean Update</b><br><br>";
134: 			echo "<b>Setting Up Schema...</b><br><br>";
135: 			sqlfile("schema.drop");
136: 			echo "<b>Setting Up Defaults...</b><br><br>";
137: 			sqlfile("default");
138: 			if (isset($_REQUEST['example']))
139: 				{
140: 				echo "<b>Setting Up Examples...</b><br><br>";
141: 				sqlfile("example");
142: 				}
143: 			}
144: 		else if ($_REQUEST['insttype']=="upgrade")
145: 			{
146: 			echo "<b>Experimental Upgrade... Expect to See Errors</b><br>";
147: 			echo "Doesn't mean it hasn't worked if you see already exists/duplicate errors<br><br>";
148: 			echo "<b style=\"color: red;\">Basically ignore errors: 1050, 1060, 1068 and 1054</b><br><br>";
149: 			echo "<b>Importing New Schema (sans drop tables)</b><br><br>";
150: 			sqlfile("schema");
151: 			echo "<br><br><b>Doing Schema Upgrade</b><br><br>";
152: 			sqlfile("schema.upgrade");
153: 			echo "<br><br>";
154: 			}
155: 		else echo "<b>Error: Incorrect or Unknown Installation Type!</b><br><br>";
156: 		
157: 		if (isset($_REQUEST['tracker']))
158: 			{
159: 			echo "<b>Enabling Usage Tracker</b><br><br>";
160: 			$q="INSERT INTO fnconfig(fnc_var,fnc_val) VALUES(\"freenats.tracker\",\"1\")";
161: 			mysql_query($q);
162: 			}
163: 		echo "<br><br>";
164: 		echo "<b>CONGRATULATIONS!!</b><br><br>";
165: 		echo "Setup should now be complete. If you saw errors etc above please see the <a href=http://www.purplepixie.org/freenats/>";
166: 		echo "project homepage</a> for help.<br><br>";
167: 		echo "<b>RENAME THIS FILE &quot;firstrun.php&quot; TO SOMETHING ELSE LIKE &quot;firstrun-.php&quot; TO STOP OTHERS RUNNING IT</b>";
168: 		echo "<br><br>";
169: 		echo "<a href=./>Click here to continue</a> - login admin password admin (click settings once logged in to change)<br><br>";
170: 		
171: 		
172: 		exit();
173: 		break;
174: 		
175: 	default:
176: 		echo "Sorry - unknown step in setup process!<br><br>";
177: 		exit();
178: 	}
179: 
180: ?>