r1834 + use POST to add multiple objects
[racktables] / inc / init.php
CommitLineData
b325120a 1<?php
e673ee24
DO
2/*
3*
4* This file performs RackTables initialisation. After you include it
5* from 1st-level page, don't forget to call authorize(). This is done
6* to allow reloading of pageno and tabno variables. pageno and tabno
7* together form security context.
8*
9*/
10
11$root = (empty($_SERVER['HTTPS'])?'http':'https').
12 '://'.
13 (isset($_SERVER['HTTP_HOST'])?$_SERVER['HTTP_HOST']:($_SERVER['SERVER_NAME'].($_SERVER['SERVER_PORT']=='80'?'':$_SERVER['SERVER_PORT']))).
9c6e7a97
DO
14 dirname($_SERVER['PHP_SELF']);
15if (substr ($root, -1) != '/')
16 $root .= '/';
e673ee24
DO
17
18// This is the first thing we need to do.
19require_once 'inc/config.php';
20
21// What we need first is database and interface functions.
22require_once 'inc/interface.php';
23require_once 'inc/functions.php';
24require_once 'inc/database.php';
25if (file_exists ('inc/secret.php'))
26 require_once 'inc/secret.php';
27else
28{
29 showError
30 (
31 "Database connection parameters are read from inc/secret.php file, " .
e6093686
DO
32 "which cannot be found.\nYou probably need to complete the installation " .
33 "procedure by following <a href='${root}install.php'>this link</a>."
e673ee24
DO
34 );
35 die;
36}
37
38// Now try to connect...
39try
40{
41 $dbxlink = new PDO ($pdo_dsn, $db_username, $db_password);
42}
43catch (PDOException $e)
44{
45 showError ("Database connection failed:\n\n" . $e->getMessage());
46 die();
47}
48
4d55392a
DO
49$dbxlink->exec ("set names 'utf8'");
50
b8d1ab66
DO
51if (get_magic_quotes_gpc())
52 foreach ($_REQUEST as $key => $value)
f4d511df
DO
53 if (gettype ($value) == 'string')
54 $_REQUEST[$key] = stripslashes ($value);
b8d1ab66
DO
55
56if (!set_magic_quotes_runtime (0))
57{
58 showError ('Failed to turn magic quotes off');
59 die;
60}
6bae5fbb 61
e673ee24
DO
62// Escape any globals before we ever try to use them.
63foreach ($_REQUEST as $key => $value)
f4d511df 64 if (gettype ($value) == 'string')
b8d1ab66 65 $_REQUEST[$key] = escapeString ($value);
6bae5fbb 66
e673ee24
DO
67if (isset ($_SERVER['PHP_AUTH_USER']))
68 $_SERVER['PHP_AUTH_USER'] = escapeString ($_SERVER['PHP_AUTH_USER']);
69if (isset ($_SERVER['PHP_AUTH_PW']))
70 $_SERVER['PHP_AUTH_PW'] = escapeString ($_SERVER['PHP_AUTH_PW']);
71
fbbb74fb
DO
72$dbver = getDatabaseVersion();
73if ($dbver != CODE_VERSION)
74{
75 echo '<p align=justify>This Racktables installation seems to be ' .
76 'just upgraded to version ' . CODE_VERSION . ', while the '.
db914a6c 77 'database version is ' . $dbver . '. No user will be ' .
fbbb74fb
DO
78 'either authenticated or shown any page until the upgrade is ' .
79 "finished. Follow <a href='${root}upgrade.php'>this link</a> and " .
80 'authenticate as administrator to finish the upgrade.</p>';
81 die;
82}
83
06f23fd4
DO
84$configCache = loadConfigCache();
85if (!count ($configCache))
86{
87 showError ('Failed to load configuration from the database.');
88 die();
89}
90
e673ee24
DO
91// Now init authentication.
92
93require_once 'inc/auth.php';
94// Load access database once.
95$accounts = getUserAccounts();
96$perms = getUserPermissions();
97if ($accounts === NULL or $perms === NULL)
98{
99 showError ('Failed to initialize access database.');
100 die();
101}
102
103authenticate();
104
105// Authentication passed.
106// Note that we don't perform autorization here, so each 1st level page
107// has to do it in its way, e.g. to call authorize().
108
9c0b0016
DO
109
110
e673ee24
DO
111$remote_username = $_SERVER['PHP_AUTH_USER'];
112$pageno = (isset ($_REQUEST['page'])) ? $_REQUEST['page'] : 'index';
113$tabno = (isset ($_REQUEST['tab'])) ? $_REQUEST['tab'] : 'default';
20c901a7
DO
114// Order matters here.
115$taglist = getTagList();
116$tagtree = getTagTree();
e673ee24
DO
117
118require_once 'inc/navigation.php';
119require_once 'inc/pagetitles.php';
e673ee24 120require_once 'inc/ophandlers.php';
641fe9b0 121require_once 'inc/triggers.php';
d33645ff 122require_once 'inc/gateways.php';
e673ee24 123
2fb24351
DO
124global $page;
125$expl_tags = array();
126$impl_tags = array();
127$auto_tags = getGlobalAutoTags();
128
a1210da5 129if (isset ($page[$pageno]['tagloader']) and isset ($page[$pageno]['bypass']) and isset ($_REQUEST[$page[$pageno]['bypass']]))
2fb24351 130{
a1210da5 131 $expl_tags = $page[$pageno]['tagloader'] ($_REQUEST[$page[$pageno]['bypass']]);
2fb24351
DO
132 $impl_tags = getImplicitTags ($expl_tags);
133}
134if (isset ($page[$pageno]['autotagloader']))
135 $auto_tags = array_merge ($auto_tags, $page[$pageno]['autotagloader'] ());
136
e673ee24 137?>