summaryrefslogtreecommitdiffstats
path: root/apis/getconfig.inc.php
diff options
context:
space:
mode:
authorSimon Rettberg2016-05-17 18:14:13 +0200
committerSimon Rettberg2016-05-17 18:14:13 +0200
commit8e729913a8f6258762f4e8049caebc9dbb42a71e (patch)
tree48b1d27787847c012994248e32f5a79695221218 /apis/getconfig.inc.php
parentGet baseconfig ready for modularization (diff)
downloadslx-admin-8e729913a8f6258762f4e8049caebc9dbb42a71e.tar.gz
slx-admin-8e729913a8f6258762f4e8049caebc9dbb42a71e.tar.xz
slx-admin-8e729913a8f6258762f4e8049caebc9dbb42a71e.zip
Modularized baseconfig fetching (api)
Diffstat (limited to 'apis/getconfig.inc.php')
-rw-r--r--apis/getconfig.inc.php104
1 files changed, 6 insertions, 98 deletions
diff --git a/apis/getconfig.inc.php b/apis/getconfig.inc.php
index 2447d622..3fe05ed1 100644
--- a/apis/getconfig.inc.php
+++ b/apis/getconfig.inc.php
@@ -1,104 +1,12 @@
<?php
-$ip = $_SERVER['REMOTE_ADDR'];
-if (substr($ip, 0, 7) === '::ffff:') {
- $ip = substr($ip, 7);
-}
-
-/**
- * Escape given string so it is a valid string in sh that can be surrounded
- * by single quotes ('). This basically turns _'_ into _'"'"'_
- *
- * @param string $string input
- * @return string escaped sh string
+/*
+ * For compatibility with old slx-admin, where apis were not connected to a module.
+ * This is getconfig, which belongs to baseconfig logically.
*/
-function escape($string)
-{
- return str_replace("'", "'\"'\"'", $string);
-}
-// Location handling: figure out location
-$locationId = false; // TODO: machine specific mapping
-if ($locationId === false) {
- // Fallback to subnets
- $locationId = Location::getFromIp($ip);
-}
-$matchingLocations = array();
-if ($locationId !== false) {
- // Get all parents
- settype($locationId, 'integer');
- $locations = Location::getLocationsAssoc();
- $find = $locationId;
- while (isset($locations[$find]) && !in_array($find, $matchingLocations)) {
- $matchingLocations[] = $find;
- $find = (int)$locations[$find]['parentlocationid'];
- }
- echo "SLX_LOCATIONS='" . escape(implode(' ', $matchingLocations)) . "'\n";
+if (!Module::isAvailable('baseconfig')) {
+ Util::traceError('Module baseconfig not available');
}
-$configVars = array();
-// Query location specific settings (from bottom to top)
-if (!empty($matchingLocations)) {
- // First get all settings for all locations we're in
- $list = implode(',', $matchingLocations);
- $res = Database::simpleQuery("SELECT locationid, setting, value FROM setting_location WHERE locationid IN ($list)");
- $tmp = array();
- while ($row = $res->fetch(PDO::FETCH_ASSOC)) {
- $tmp[(int)$row['locationid']][$row['setting']] = $row['value'];
- }
- // $matchingLocations contains the location ids sorted from closest to furthest, so we use it to make sure the order
- // in which they override is correct (closest setting wins, e.g. room setting beats department setting)
- foreach ($matchingLocations as $lid) {
- if (!isset($tmp[$lid])) continue;
- foreach ($tmp[$lid] as $setting => $value) {
- if (!isset($configVars[$setting])) {
- $configVars[$setting] = $value;
- }
- }
- }
- unset($tmp);
-}
-
-// Dump config from DB
-$res = Database::simpleQuery('SELECT setting.setting, setting.defaultvalue, tbl.value
- FROM setting
- LEFT JOIN setting_global AS tbl USING (setting)
- ORDER BY setting ASC'); // TODO: Add setting groups and sort order
-while ($row = $res->fetch(PDO::FETCH_ASSOC)) {
- if (isset($configVars[$row['setting']])) {
- $row['value'] = $configVars[$row['setting']];
- } elseif (is_null($row['value'])) {
- $row['value'] = $row['defaultvalue'];
- }
- echo $row['setting'] . "='" . escape($row['value']) . "'\n";
-}
-
-// Additional "intelligent" config
-
-// Remote log URL
-echo "SLX_REMOTE_LOG='http://" . escape($_SERVER['SERVER_ADDR']) . escape($_SERVER['SCRIPT_NAME']) . "?do=clientlog'\n";
-// vm list url
-echo "SLX_VMCHOOSER_BASE_URL='http://" . escape($_SERVER['SERVER_ADDR']) . "/vmchooser/'\n";
-
-// VMStore path and type
-$vmstore = Property::getVmStoreConfig();
-if (is_array($vmstore)) {
- switch ($vmstore['storetype']) {
- case 'internal';
- echo "SLX_VM_NFS='" . escape($_SERVER['SERVER_ADDR']) . ":/srv/openslx/nfs'\n";
- break;
- case 'nfs';
- echo "SLX_VM_NFS='" . escape($vmstore['nfsaddr']) . "'\n";
- break;
- case 'cifs';
- echo "SLX_VM_NFS='" . escape($vmstore['cifsaddr']) . "'\n";
- echo "SLX_VM_NFS_USER='" . escape($vmstore['cifsuserro']) . "'\n";
- echo "SLX_VM_NFS_PASSWD='" . escape($vmstore['cifspasswdro']) . "'\n";
- break;
- }
-}
-
-
-// For quick testing or custom extensions: Include external file that should do nothing
-// more than outputting more key-value-pairs. It's expected in the webroot of slxadmin
-if (file_exists('client_config_additional.php')) @include('client_config_additional.php');
+require 'modules/baseconfig/api.inc.php'; \ No newline at end of file