install/index.php
author rejo
Sat, 03 May 2008 20:22:46 +0000
changeset 147 df8ec400e5a3
parent 146 0756319df2d0
child 149 0f9739c8db48
permissions -rw-r--r--
[feladat @ 253] Added a small explanation of the supported regular expression for the search field. This closes ticket:38 and ticket:47.
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
142
edd0c3ee3e1d [feladat @ 248]
rejo
parents:
diff changeset
     1
<?php
edd0c3ee3e1d [feladat @ 248]
rejo
parents:
diff changeset
     2
edd0c3ee3e1d [feladat @ 248]
rejo
parents:
diff changeset
     3
echo "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.0 Transitional//EN\">\n";
edd0c3ee3e1d [feladat @ 248]
rejo
parents:
diff changeset
     4
echo "<html>\n";
edd0c3ee3e1d [feladat @ 248]
rejo
parents:
diff changeset
     5
echo " <head>\n";
edd0c3ee3e1d [feladat @ 248]
rejo
parents:
diff changeset
     6
echo "  <title>Poweradmin</title>\n";
edd0c3ee3e1d [feladat @ 248]
rejo
parents:
diff changeset
     7
echo "  <link rel=stylesheet href=\"../style/example.inc.php\" type=\"text/css\">\n";
edd0c3ee3e1d [feladat @ 248]
rejo
parents:
diff changeset
     8
echo " </head>\n";
edd0c3ee3e1d [feladat @ 248]
rejo
parents:
diff changeset
     9
echo " <body>\n";
edd0c3ee3e1d [feladat @ 248]
rejo
parents:
diff changeset
    10
edd0c3ee3e1d [feladat @ 248]
rejo
parents:
diff changeset
    11
if (!isset($_POST['step']) || !is_numeric($_POST['step'])) {
edd0c3ee3e1d [feladat @ 248]
rejo
parents:
diff changeset
    12
	$step = 1;
edd0c3ee3e1d [feladat @ 248]
rejo
parents:
diff changeset
    13
} else {
edd0c3ee3e1d [feladat @ 248]
rejo
parents:
diff changeset
    14
	$step = $_POST['step'];
edd0c3ee3e1d [feladat @ 248]
rejo
parents:
diff changeset
    15
}
edd0c3ee3e1d [feladat @ 248]
rejo
parents:
diff changeset
    16
edd0c3ee3e1d [feladat @ 248]
rejo
parents:
diff changeset
    17
echo "  <h1>Poweradmin</h1>";
edd0c3ee3e1d [feladat @ 248]
rejo
parents:
diff changeset
    18
echo "  <h2>Installation step " . $step . "</h2>";
edd0c3ee3e1d [feladat @ 248]
rejo
parents:
diff changeset
    19
edd0c3ee3e1d [feladat @ 248]
rejo
parents:
diff changeset
    20
switch($step) {
edd0c3ee3e1d [feladat @ 248]
rejo
parents:
diff changeset
    21
	case 1:
edd0c3ee3e1d [feladat @ 248]
rejo
parents:
diff changeset
    22
		$step++;
edd0c3ee3e1d [feladat @ 248]
rejo
parents:
diff changeset
    23
		echo "<p>This installer expects you to have a PowerDNS database accessable from this server. This installer also expects you to have never ran Poweradmin before, or that you want to overwrite the Poweradmin part of the database. If you have had Poweradmin running before, any data in the following tables will be destroyed:</p>\n";
edd0c3ee3e1d [feladat @ 248]
rejo
parents:
diff changeset
    24
		echo "<ul><li>perm_items</li><li>perm_templ</li><li>perm_templ_items</li><li>users</li><li>zones</li></ul>\n";
edd0c3ee3e1d [feladat @ 248]
rejo
parents:
diff changeset
    25
		echo "<p>This installer will, of course, not touch the data in the PowerDNS tables of the database. However, it is, of course, recommended you create a backup of your database before proceeding.</p>";
edd0c3ee3e1d [feladat @ 248]
rejo
parents:
diff changeset
    26
		echo "<p>Finaly, if you see any errors during the installation process, a problem report would be. You can report problems (and ask for help) on the <a href=\"https://www.poweradmin.org/trac/wiki/Mailinglists\">poweradmin-users</a> mailinglist or you can create <a href=\"https://www.poweradmin.org/trac/newticket\">a ticket</a> in the ticketsystem.</p>";
edd0c3ee3e1d [feladat @ 248]
rejo
parents:
diff changeset
    27
		echo "<p>Do you want to proceed now?</p>\n";
edd0c3ee3e1d [feladat @ 248]
rejo
parents:
diff changeset
    28
		echo "<form method=\"post\">";
edd0c3ee3e1d [feladat @ 248]
rejo
parents:
diff changeset
    29
		echo "<input type=\"hidden\" name=\"step\" value=\"" . $step . "\">";
edd0c3ee3e1d [feladat @ 248]
rejo
parents:
diff changeset
    30
		echo "<input type=\"submit\" name=\"submit\" value=\"Go to step " . $step . "\">";
edd0c3ee3e1d [feladat @ 248]
rejo
parents:
diff changeset
    31
		echo "</form>";
edd0c3ee3e1d [feladat @ 248]
rejo
parents:
diff changeset
    32
		break;
edd0c3ee3e1d [feladat @ 248]
rejo
parents:
diff changeset
    33
edd0c3ee3e1d [feladat @ 248]
rejo
parents:
diff changeset
    34
	case 2:	
edd0c3ee3e1d [feladat @ 248]
rejo
parents:
diff changeset
    35
		$step++;
edd0c3ee3e1d [feladat @ 248]
rejo
parents:
diff changeset
    36
		echo "<p>To prepare the database for using Poweradmin, the installer needs to modify the PowerDNS database. It'll add a number of tables and it'll fill these tables with some data. If the tables are already present, the installer will drop them first.</p>";
edd0c3ee3e1d [feladat @ 248]
rejo
parents:
diff changeset
    37
		echo "<p>To do all of this, the installer needs to access the database with an account which has sufficient rights. If you trust the installer, you may give it the username and password of the database user root. Otherwise, make sure the user has enough rights, before actually proceeding.</p>";
edd0c3ee3e1d [feladat @ 248]
rejo
parents:
diff changeset
    38
		echo "<form method=\"post\">";
edd0c3ee3e1d [feladat @ 248]
rejo
parents:
diff changeset
    39
		echo "<table>\n";
edd0c3ee3e1d [feladat @ 248]
rejo
parents:
diff changeset
    40
		echo "<tr><td>Username</td><td><input type=\"text\" name=\"user\" value=\"\"></td><td>The username to use to connect to the database, make sure the username has sufficient rights to perform administrative task to the PowerDNS database (e.g. \"root\").</td></tr>\n";
edd0c3ee3e1d [feladat @ 248]
rejo
parents:
diff changeset
    41
		echo "<tr><td>Password</td><td><input type=\"password\" name=\"pass\" value=\"\"></td><td>The password for this username.</td></tr>\n";
edd0c3ee3e1d [feladat @ 248]
rejo
parents:
diff changeset
    42
		echo "<tr><td>Hostname</td><td><input type=\"text\" name=\"host\" value=\"\"></td><td>The hostname on which the PowerDNS database resides. Frequently, this will be \"localhost\".</td></tr>\n";
edd0c3ee3e1d [feladat @ 248]
rejo
parents:
diff changeset
    43
		echo "<tr><td>Database</td><td><input type=\"text\" name=\"name\" value=\"\"></td><td>The name of the PowerDNS database.</td></tr>\n";
146
0756319df2d0 [feladat @ 252]
peter
parents: 142
diff changeset
    44
		echo "<tr><td>Database type</td><td><select name=\"type\"><option value=\"mysql\">MySQL</option><option value=\"pgsql\">PostgreSQL</option></td><td>The type PowerDNS database.</td></tr>\n";
142
edd0c3ee3e1d [feladat @ 248]
rejo
parents:
diff changeset
    45
		echo "</table>\n";
edd0c3ee3e1d [feladat @ 248]
rejo
parents:
diff changeset
    46
		echo "<input type=\"hidden\" name=\"step\" value=\"" . $step . "\">";
edd0c3ee3e1d [feladat @ 248]
rejo
parents:
diff changeset
    47
		echo "<input type=\"submit\" name=\"submit\" value=\"Go to step " . $step . "\">";
edd0c3ee3e1d [feladat @ 248]
rejo
parents:
diff changeset
    48
		echo "</form>";
edd0c3ee3e1d [feladat @ 248]
rejo
parents:
diff changeset
    49
		break;
edd0c3ee3e1d [feladat @ 248]
rejo
parents:
diff changeset
    50
edd0c3ee3e1d [feladat @ 248]
rejo
parents:
diff changeset
    51
	case 3:
edd0c3ee3e1d [feladat @ 248]
rejo
parents:
diff changeset
    52
		$step++;
edd0c3ee3e1d [feladat @ 248]
rejo
parents:
diff changeset
    53
		echo "<p>Updating database... ";
edd0c3ee3e1d [feladat @ 248]
rejo
parents:
diff changeset
    54
		include_once("../inc/config-me.inc.php");
edd0c3ee3e1d [feladat @ 248]
rejo
parents:
diff changeset
    55
		include_once("database-structure.inc.php");
edd0c3ee3e1d [feladat @ 248]
rejo
parents:
diff changeset
    56
		$db_user = $_POST['user'];
edd0c3ee3e1d [feladat @ 248]
rejo
parents:
diff changeset
    57
		$db_pass = $_POST['pass'];
edd0c3ee3e1d [feladat @ 248]
rejo
parents:
diff changeset
    58
		$db_host = $_POST['host'];
edd0c3ee3e1d [feladat @ 248]
rejo
parents:
diff changeset
    59
		$db_name = $_POST['name'];
146
0756319df2d0 [feladat @ 252]
peter
parents: 142
diff changeset
    60
		$db_type = $_POST['type'];
142
edd0c3ee3e1d [feladat @ 248]
rejo
parents:
diff changeset
    61
		require_once("../inc/database.inc.php");
edd0c3ee3e1d [feladat @ 248]
rejo
parents:
diff changeset
    62
		$db = dbConnect();
edd0c3ee3e1d [feladat @ 248]
rejo
parents:
diff changeset
    63
		$db->loadModule('Manager');
edd0c3ee3e1d [feladat @ 248]
rejo
parents:
diff changeset
    64
		$db->loadModule('Extended');
edd0c3ee3e1d [feladat @ 248]
rejo
parents:
diff changeset
    65
edd0c3ee3e1d [feladat @ 248]
rejo
parents:
diff changeset
    66
		$current_tables = $db->listTables();
edd0c3ee3e1d [feladat @ 248]
rejo
parents:
diff changeset
    67
edd0c3ee3e1d [feladat @ 248]
rejo
parents:
diff changeset
    68
		foreach ($def_tables as $table) {
edd0c3ee3e1d [feladat @ 248]
rejo
parents:
diff changeset
    69
			if (in_array($table['table_name'], $current_tables)) $db->dropTable($table['table_name']);
edd0c3ee3e1d [feladat @ 248]
rejo
parents:
diff changeset
    70
			$db->createTable($table['table_name'], $table['fields']);
edd0c3ee3e1d [feladat @ 248]
rejo
parents:
diff changeset
    71
		}
edd0c3ee3e1d [feladat @ 248]
rejo
parents:
diff changeset
    72
edd0c3ee3e1d [feladat @ 248]
rejo
parents:
diff changeset
    73
		$fill_perm_items = $db->prepare('INSERT INTO perm_items VALUES (?, ?, ?)');
edd0c3ee3e1d [feladat @ 248]
rejo
parents:
diff changeset
    74
		$db->extended->executeMultiple($fill_perm_items, $def_permissions);
edd0c3ee3e1d [feladat @ 248]
rejo
parents:
diff changeset
    75
		$fill_perm_items->free();
edd0c3ee3e1d [feladat @ 248]
rejo
parents:
diff changeset
    76
edd0c3ee3e1d [feladat @ 248]
rejo
parents:
diff changeset
    77
		foreach ($def_remaining_queries as $query) {
edd0c3ee3e1d [feladat @ 248]
rejo
parents:
diff changeset
    78
			$db->query($query);
edd0c3ee3e1d [feladat @ 248]
rejo
parents:
diff changeset
    79
		}
edd0c3ee3e1d [feladat @ 248]
rejo
parents:
diff changeset
    80
edd0c3ee3e1d [feladat @ 248]
rejo
parents:
diff changeset
    81
		echo "done!</p>";
edd0c3ee3e1d [feladat @ 248]
rejo
parents:
diff changeset
    82
146
0756319df2d0 [feladat @ 252]
peter
parents: 142
diff changeset
    83
		echo "<p>We have now updated the PowerDNS database to work with Poweradmin. You now want to give limited rights to Poweradmin so it can update the data in the tables. To do this, you should create a new user and give it rights to select, delete, insert and update records in the PowerDNS database. ";
0756319df2d0 [feladat @ 252]
peter
parents: 142
diff changeset
    84
		if ($db_type=='mysql') {
0756319df2d0 [feladat @ 252]
peter
parents: 142
diff changeset
    85
			echo "In MySQL should now perform the following command:</p>";
0756319df2d0 [feladat @ 252]
peter
parents: 142
diff changeset
    86
			echo "<p><tt>GRANT SELECT, INSERT, UPDATE, DELETE<BR>ON powerdns-database.*<br>TO 'poweradmin-user'@'localhost'<br>IDENTIFIED BY 'poweradmin-password';</tt></p>";
0756319df2d0 [feladat @ 252]
peter
parents: 142
diff changeset
    87
		} elseif ($db_type == 'pgsql') {
0756319df2d0 [feladat @ 252]
peter
parents: 142
diff changeset
    88
			echo "<p>On PgSQL you would use:</p>";
0756319df2d0 [feladat @ 252]
peter
parents: 142
diff changeset
    89
			echo "<p><tt>$ createuser poweradmin-user<br>Shall the new role be a superuser? (y/n) n<br>Shall the new user be allowed to create databases? (y/n) n<br>Shall the new user be allowed to create more new users? (y/n) n<br>CREATE USER<br>$ psql powerdns-database<br>psql> GRANT  SELECT, INSERT, DELETE, UPDATE<br>ON powerdns-database<br>TO poweradmin-user;</tt></p>";
0756319df2d0 [feladat @ 252]
peter
parents: 142
diff changeset
    90
		}
142
edd0c3ee3e1d [feladat @ 248]
rejo
parents:
diff changeset
    91
		echo "<p>After you have added the new user, proceed with this installation procedure.</p>\n";
edd0c3ee3e1d [feladat @ 248]
rejo
parents:
diff changeset
    92
		echo "<form method=\"post\">";
edd0c3ee3e1d [feladat @ 248]
rejo
parents:
diff changeset
    93
		echo "<input type=\"hidden\" name=\"host\" value=\"" . $db_host . "\">";
edd0c3ee3e1d [feladat @ 248]
rejo
parents:
diff changeset
    94
		echo "<input type=\"hidden\" name=\"name\" value=\"" . $db_name . "\">";
edd0c3ee3e1d [feladat @ 248]
rejo
parents:
diff changeset
    95
		echo "<input type=\"hidden\" name=\"type\" value=\"" . $db_type . "\">";
edd0c3ee3e1d [feladat @ 248]
rejo
parents:
diff changeset
    96
		echo "<input type=\"hidden\" name=\"step\" value=\"" . $step . "\">";
edd0c3ee3e1d [feladat @ 248]
rejo
parents:
diff changeset
    97
		echo "<input type=\"submit\" name=\"submit\" value=\"Go to step " . $step . "\">";
edd0c3ee3e1d [feladat @ 248]
rejo
parents:
diff changeset
    98
		echo "</form>";
edd0c3ee3e1d [feladat @ 248]
rejo
parents:
diff changeset
    99
		break;
edd0c3ee3e1d [feladat @ 248]
rejo
parents:
diff changeset
   100
	
edd0c3ee3e1d [feladat @ 248]
rejo
parents:
diff changeset
   101
	case 4:
edd0c3ee3e1d [feladat @ 248]
rejo
parents:
diff changeset
   102
		$step++;
edd0c3ee3e1d [feladat @ 248]
rejo
parents:
diff changeset
   103
		$db_host = $_POST['host'];
edd0c3ee3e1d [feladat @ 248]
rejo
parents:
diff changeset
   104
		$db_name = $_POST['name'];
edd0c3ee3e1d [feladat @ 248]
rejo
parents:
diff changeset
   105
		$db_type = $_POST['type'];
edd0c3ee3e1d [feladat @ 248]
rejo
parents:
diff changeset
   106
		echo "<p>Now we will put together the configuration. To do so, I need some details:</p>";
edd0c3ee3e1d [feladat @ 248]
rejo
parents:
diff changeset
   107
		echo "<form method=\"post\">";
edd0c3ee3e1d [feladat @ 248]
rejo
parents:
diff changeset
   108
		echo "<table>";
edd0c3ee3e1d [feladat @ 248]
rejo
parents:
diff changeset
   109
		echo "<tr><td>Username</td><td><input type=\"text\" name=\"db_user\" value=\"\"></td><td>The username as created in the previous step.</td></tr>";
edd0c3ee3e1d [feladat @ 248]
rejo
parents:
diff changeset
   110
		echo "<tr><td>Password</td><td><input type=\"text\" name=\"db_pass\" value=\"\"></td><td>The password for this username.</td></tr>";
edd0c3ee3e1d [feladat @ 248]
rejo
parents:
diff changeset
   111
		echo "<tr><td>Hostmaster</td><td><input type=\"text\" name=\"dns_hostmaster\" value=\"\"></td><td>When creating SOA records and no hostmaster is provided, this value here will be used. Should be in the form \"hostmaster.example.net\".</td></tr>";
edd0c3ee3e1d [feladat @ 248]
rejo
parents:
diff changeset
   112
		echo "<tr><td>Primary nameserver</td><td><input type=\"text\" name=\"dns_ns1\" value=\"\"></td><td>When creating new zones using the template, this value will be used as primary nameserver. Should be like \"ns1.example.net\".</td></tr>";
edd0c3ee3e1d [feladat @ 248]
rejo
parents:
diff changeset
   113
		echo "<tr><td>Secondary nameserver</td><td><input type=\"text\" name=\"dns_ns2\" value=\"\"></td><td>When creating new zones using the template, this value will be used as secondary nameserver. Should be like \"ns2.example.net\".</td></tr>";
edd0c3ee3e1d [feladat @ 248]
rejo
parents:
diff changeset
   114
		echo "</table>";
edd0c3ee3e1d [feladat @ 248]
rejo
parents:
diff changeset
   115
		echo "<input type=\"hidden\" name=\"db_host\" value=\"" . $db_host . "\">";
edd0c3ee3e1d [feladat @ 248]
rejo
parents:
diff changeset
   116
		echo "<input type=\"hidden\" name=\"db_name\" value=\"" . $db_name . "\">";
edd0c3ee3e1d [feladat @ 248]
rejo
parents:
diff changeset
   117
		echo "<input type=\"hidden\" name=\"db_type\" value=\"" . $db_type . "\">";
edd0c3ee3e1d [feladat @ 248]
rejo
parents:
diff changeset
   118
		echo "<input type=\"hidden\" name=\"step\" value=\"" . $step . "\">";
edd0c3ee3e1d [feladat @ 248]
rejo
parents:
diff changeset
   119
		echo "<input type=\"submit\" name=\"submit\" value=\"Go to step " . $step . "\">";
edd0c3ee3e1d [feladat @ 248]
rejo
parents:
diff changeset
   120
		echo "</form>";
edd0c3ee3e1d [feladat @ 248]
rejo
parents:
diff changeset
   121
		break;
edd0c3ee3e1d [feladat @ 248]
rejo
parents:
diff changeset
   122
edd0c3ee3e1d [feladat @ 248]
rejo
parents:
diff changeset
   123
	case 5:
edd0c3ee3e1d [feladat @ 248]
rejo
parents:
diff changeset
   124
		$step++;
edd0c3ee3e1d [feladat @ 248]
rejo
parents:
diff changeset
   125
		echo "<p>The configuration is printed here. You should now create the file " . $local_config_file . " in the Poweradmin root directory yourself. It should contain the following few lines:</p>";
edd0c3ee3e1d [feladat @ 248]
rejo
parents:
diff changeset
   126
edd0c3ee3e1d [feladat @ 248]
rejo
parents:
diff changeset
   127
		echo "<pre>";
edd0c3ee3e1d [feladat @ 248]
rejo
parents:
diff changeset
   128
		echo "\$db_host\t\t= \"" . $_POST['db_host'] . "\";\n" .
edd0c3ee3e1d [feladat @ 248]
rejo
parents:
diff changeset
   129
			"\$db_user\t\t= \"" . $_POST['db_user'] . "\";\n" .
edd0c3ee3e1d [feladat @ 248]
rejo
parents:
diff changeset
   130
			"\$db_pass\t\t= \"" . $_POST['db_pass'] . "\";\n" .
edd0c3ee3e1d [feladat @ 248]
rejo
parents:
diff changeset
   131
			"\$db_name\t\t= \"" . $_POST['db_name'] . "\";\n" .
edd0c3ee3e1d [feladat @ 248]
rejo
parents:
diff changeset
   132
			"\$db_type\t\t= \"" . $_POST['db_type'] . "\";\n" .
edd0c3ee3e1d [feladat @ 248]
rejo
parents:
diff changeset
   133
			"\n" .
edd0c3ee3e1d [feladat @ 248]
rejo
parents:
diff changeset
   134
			"\$dns_hostmaster\t\t= \"" . $_POST['dns_hostmaster'] . "\";\n" .
edd0c3ee3e1d [feladat @ 248]
rejo
parents:
diff changeset
   135
			"\$dns_ns1\t\t= \"" . $_POST['dns_ns1'] . "\";\n" .
edd0c3ee3e1d [feladat @ 248]
rejo
parents:
diff changeset
   136
			"\$dns_ns2\t\t= \"" . $_POST['dns_ns2'] . "\";\n" .
edd0c3ee3e1d [feladat @ 248]
rejo
parents:
diff changeset
   137
			"\n";
edd0c3ee3e1d [feladat @ 248]
rejo
parents:
diff changeset
   138
		echo "</pre>";
edd0c3ee3e1d [feladat @ 248]
rejo
parents:
diff changeset
   139
		echo "<form method=\"post\">";
edd0c3ee3e1d [feladat @ 248]
rejo
parents:
diff changeset
   140
		echo "<input type=\"hidden\" name=\"step\" value=\"" . $step . "\">";
edd0c3ee3e1d [feladat @ 248]
rejo
parents:
diff changeset
   141
		echo "<input type=\"submit\" name=\"submit\" value=\"Go to step " . $step . "\">";
edd0c3ee3e1d [feladat @ 248]
rejo
parents:
diff changeset
   142
		echo "</form>";
edd0c3ee3e1d [feladat @ 248]
rejo
parents:
diff changeset
   143
		break;
edd0c3ee3e1d [feladat @ 248]
rejo
parents:
diff changeset
   144
edd0c3ee3e1d [feladat @ 248]
rejo
parents:
diff changeset
   145
	case 6:
edd0c3ee3e1d [feladat @ 248]
rejo
parents:
diff changeset
   146
		$step++;
edd0c3ee3e1d [feladat @ 248]
rejo
parents:
diff changeset
   147
		echo "<p>Now we have finished the configuration, you should remove the directory \"install/\" from the Poweradmin root directory. You will not be able to use the file if it exists. Do it now.</p>";
edd0c3ee3e1d [feladat @ 248]
rejo
parents:
diff changeset
   148
		echo "<p>After you have removed the file, you can login to <a href=\"index.php\">Poweradmin</a> with username \"admin\" and password \"admin\". You are highly encouraged to change these as soon as you are logged in.</p>";
edd0c3ee3e1d [feladat @ 248]
rejo
parents:
diff changeset
   149
		break;
edd0c3ee3e1d [feladat @ 248]
rejo
parents:
diff changeset
   150
edd0c3ee3e1d [feladat @ 248]
rejo
parents:
diff changeset
   151
	default:
edd0c3ee3e1d [feladat @ 248]
rejo
parents:
diff changeset
   152
		break;
edd0c3ee3e1d [feladat @ 248]
rejo
parents:
diff changeset
   153
}
edd0c3ee3e1d [feladat @ 248]
rejo
parents:
diff changeset
   154
edd0c3ee3e1d [feladat @ 248]
rejo
parents:
diff changeset
   155
echo "<div class=\"footer\">";
edd0c3ee3e1d [feladat @ 248]
rejo
parents:
diff changeset
   156
echo "<a href=\"https://www.poweradmin.org/\">a complete(r) <strong>poweradmin</strong></a> - <a href=\"https://www.poweradmin.org/trac/wiki/Credits\">credits</a>";
edd0c3ee3e1d [feladat @ 248]
rejo
parents:
diff changeset
   157
echo "</div></body></html>";
edd0c3ee3e1d [feladat @ 248]
rejo
parents:
diff changeset
   158
edd0c3ee3e1d [feladat @ 248]
rejo
parents:
diff changeset
   159
?>
edd0c3ee3e1d [feladat @ 248]
rejo
parents:
diff changeset
   160
edd0c3ee3e1d [feladat @ 248]
rejo
parents:
diff changeset
   161
edd0c3ee3e1d [feladat @ 248]
rejo
parents:
diff changeset
   162