summaryrefslogtreecommitdiffstats
path: root/modules-available
diff options
context:
space:
mode:
authorSimon Rettberg2016-06-08 18:33:30 +0200
committerSimon Rettberg2016-06-08 18:33:30 +0200
commitffffab643e031524b6fdfe0c39adae1f6c8e9c4d (patch)
tree84e55c5a7ea0e02481b9f44730814ae788f05e12 /modules-available
parent[dashboard] Remove needsSchemaUpdate call (diff)
downloadslx-admin-ffffab643e031524b6fdfe0c39adae1f6c8e9c4d.tar.gz
slx-admin-ffffab643e031524b6fdfe0c39adae1f6c8e9c4d.tar.xz
slx-admin-ffffab643e031524b6fdfe0c39adae1f6c8e9c4d.zip
[install] Implement install scripts for most modules
Diffstat (limited to 'modules-available')
-rw-r--r--modules-available/baseconfig/install.inc.php58
-rw-r--r--modules-available/eventlog/install.inc.php31
-rw-r--r--modules-available/locations/install.inc.php39
-rw-r--r--modules-available/main/install.inc.php73
-rw-r--r--modules-available/news/install.inc.php24
-rw-r--r--modules-available/statistics/install.inc.php97
-rw-r--r--modules-available/sysconfig/inc/configmodule/adauth.inc.php6
-rw-r--r--modules-available/sysconfig/inc/configmodule/branding.inc.php6
-rw-r--r--modules-available/sysconfig/inc/configmodule/customodule.inc.php6
-rw-r--r--modules-available/sysconfig/inc/configmodule/ldapauth.inc.php6
-rw-r--r--modules-available/sysconfig/inc/configmodule/sshconfig.inc.php6
-rw-r--r--modules-available/sysconfig/install.inc.php90
-rw-r--r--modules-available/syslog/install.inc.php38
13 files changed, 465 insertions, 15 deletions
diff --git a/modules-available/baseconfig/install.inc.php b/modules-available/baseconfig/install.inc.php
new file mode 100644
index 00000000..8f1cb1e7
--- /dev/null
+++ b/modules-available/baseconfig/install.inc.php
@@ -0,0 +1,58 @@
+<?php
+
+$res = array();
+
+$res[] = tableCreate('setting_global', "
+ `setting` varchar(28) NOT NULL,
+ `value` text NOT NULL,
+ `displayvalue` text NOT NULL,
+ `enabled` tinyint(1) UNSIGNED NOT NULL DEFAULT '1'
+ PRIMARY KEY (`setting`)
+");
+
+// Update path
+
+// Add toggle field
+
+if (!tableHasColumn('setting_global', 'enabled')) {
+ if (tableHasColumn('setting_global', 'toggle')) {
+ $ret = Database::exec("ALTER TABLE `setting_global` CHANGE `toggle` `enabled` TINYINT(1) UNSIGNED NOT NULL DEFAULT '1'");
+ } else {
+ $ret = Database::exec("ALTER TABLE `setting_global` ADD COLUMN `enabled` tinyint(1) UNSIGNED NOT NULL DEFAULT '1'");
+ }
+ if ($ret === false) {
+ finalResponse(UPDATE_FAILED, 'Adding enabled to setting_global failed: ' . Database::lastError());
+ }
+}
+
+// Add displayvalue field
+
+if (!tableHasColumn('setting_global', 'displayvalue')) {
+ Database::exec("ALTER TABLE `setting_global` ADD `displayvalue` TEXT NOT NULL");
+ Database::exec("UPDATE `setting_global` SET `displayvalue` = `value`");
+ $res[] = UPDATE_DONE;
+}
+
+// Delete old tables
+
+/*
+Keep disabled for a while, in case some customer made unexpected important changes etc...
+
+if (tableExists('setting')) {
+ Database::exec('DROP TABLE setting');
+}
+if (tableExists('setting_distro')) {
+ Database::exec('DROP TABLE setting_distro');
+}
+if (tableExists('cat_setting')) {
+ Database::exec('DROP TABLE cat_setting');
+}
+*/
+
+// Create response for browser
+
+if (in_array(UPDATE_DONE, $res)) {
+ finalResponse(UPDATE_DONE, 'Tables created successfully');
+}
+
+finalResponse(UPDATE_NOOP, 'Everything already up to date');
diff --git a/modules-available/eventlog/install.inc.php b/modules-available/eventlog/install.inc.php
new file mode 100644
index 00000000..e5fd32f6
--- /dev/null
+++ b/modules-available/eventlog/install.inc.php
@@ -0,0 +1,31 @@
+<?php
+
+$res = array();
+
+$res[] = tableCreate('eventlog', "
+`logid` int(10) unsigned NOT NULL AUTO_INCREMENT,
+`dateline` int(10) unsigned NOT NULL,
+`logtypeid` varchar(30) NOT NULL,
+`description` varchar(255) NOT NULL,
+`extra` TEXT NOT NULL,
+PRIMARY KEY (`logid`),
+KEY `dateline` (`dateline`),
+KEY `logtypeid` (`logtypeid`,`dateline`)
+");
+
+// Update path
+
+if (!tableHasColumn('eventlog', 'extra')) {
+ if (Database::exec("ALTER TABLE `eventlog` ADD `extra` TEXT NOT NULL") === false) {
+ finalResponse(UPDATE_FAILED, 'Could not add extra to eventlog: ' . Database::lastError());
+ }
+ $res[] = UPDATE_DONE;
+}
+
+// Create response for browser
+
+if (in_array(UPDATE_DONE, $res)) {
+ finalResponse(UPDATE_DONE, 'Tables created successfully');
+}
+
+finalResponse(UPDATE_NOOP, 'Everything already up to date');
diff --git a/modules-available/locations/install.inc.php b/modules-available/locations/install.inc.php
new file mode 100644
index 00000000..f833568d
--- /dev/null
+++ b/modules-available/locations/install.inc.php
@@ -0,0 +1,39 @@
+<?php
+
+$res = array();
+
+$res[] = tableCreate('setting_location', '
+ `locationid` INT(11) NOT NULL,
+ `setting` VARCHAR(28) NOT NULL,
+ `value` TEXT NOT NULL,
+ `displayvalue` TEXT NOT NULL,
+ PRIMARY KEY (`locationid`,`setting`),
+ KEY `setting` (`setting`)
+');
+
+$res[] = tableCreate('location', '
+ `locationid` INT(11) NOT NULL AUTO_INCREMENT,
+ `parentlocationid` INT(11) NOT NULL,
+ `locationname` VARCHAR(100) NOT NULL,
+ PRIMARY KEY (`locationid`),
+ KEY `locationname` (`locationname`),
+ KEY `parentlocationid` (`parentlocationid`)
+');
+
+$res[] = tableCreate('subnet', '
+ `subnetid` INT(11) NOT NULL AUTO_INCREMENT,
+ `startaddr` DECIMAL(39,0) UNSIGNED NOT NULL,
+ `endaddr` DECIMAL(39,0) UNSIGNED NOT NULL,
+ `locationid` INT(11) NOT NULL,
+ PRIMARY KEY (`subnetid`),
+ KEY `startaddr` (`startaddr`,`endaddr`),
+ KEY `locationid` (`locationid`)
+');
+
+// Create response for browser
+
+if (in_array(UPDATE_DONE, $res)) {
+ finalResponse(UPDATE_DONE, 'Tables created successfully');
+}
+
+finalResponse(UPDATE_NOOP, 'Everything already up to date');
diff --git a/modules-available/main/install.inc.php b/modules-available/main/install.inc.php
new file mode 100644
index 00000000..4c9d4baa
--- /dev/null
+++ b/modules-available/main/install.inc.php
@@ -0,0 +1,73 @@
+<?php
+
+$res = array();
+
+$res[] = tableCreate('callback', "
+ `taskid` varchar(40) CHARACTER SET ascii COLLATE ascii_bin NOT NULL,
+ `dateline` int(10) unsigned NOT NULL,
+ `cbfunction` varchar(16) CHARACTER SET ascii COLLATE ascii_bin NOT NULL,
+ `args` text NOT NULL,
+ PRIMARY KEY (`taskid`,`cbfunction`),
+ KEY `dateline` (`dateline`)
+");
+
+$res[] = tableCreate('permission', "
+ `mask` int(10) unsigned NOT NULL,
+ `identifier` varchar(32) NOT NULL,
+ PRIMARY KEY (`mask`),
+ UNIQUE KEY `identifier` (`identifier`)
+");
+
+$res[] = tableCreate('property', "
+ `name` varchar(50) NOT NULL,
+ `dateline` int(10) unsigned NOT NULL DEFAULT '0',
+ `value` text NOT NULL,
+ PRIMARY KEY (`name`),
+ KEY `dateline` (`dateline`)
+");
+
+$res[] = tableCreate('user', "
+ `userid` int(10) unsigned NOT NULL AUTO_INCREMENT,
+ `login` varchar(100) NOT NULL,
+ `passwd` varchar(150) NOT NULL,
+ `fullname` varchar(100) DEFAULT NULL,
+ `phone` varchar(100) DEFAULT NULL,
+ `email` varchar(100) DEFAULT NULL,
+ `permissions` int(10) unsigned NOT NULL,
+ `lasteventid` int(10) unsigned NOT NULL DEFAULT '0',
+ PRIMARY KEY (`userid`),
+ UNIQUE KEY `login` (`login`)
+");
+
+// Update path
+
+// #######################
+// ##### 2014-05-28
+// Add dateline field to property table
+if (!tableHasColumn('property', 'dateline')) {
+ Database::exec("ALTER TABLE `property` ADD `dateline` INT( 10 ) UNSIGNED NOT NULL DEFAULT '0' AFTER `name` , ADD INDEX ( `dateline` )");
+}
+
+// #######################
+// ##### 2014-08-18
+// Remove description column from permission table
+tableDropColumn('permission', 'description');
+// Add details column to eventlog table
+if (!tableHasColumn('user', 'lasteventid')) {
+ Database::exec("ALTER TABLE `user` ADD `lasteventid` INT(10) UNSIGNED NOT NULL DEFAULT '0'");
+}
+
+// #######################
+// ##### 2015-01-16
+// Extend config module db table, add argument feature to callbacks
+if (!tableHasColumn('callback', 'args')) {
+ Database::exec("ALTER TABLE `callback` ADD `args` TEXT NOT NULL DEFAULT ''");
+}
+
+// Create response for browser
+
+if (in_array(UPDATE_DONE, $res)) {
+ finalResponse(UPDATE_DONE, 'Tables created successfully');
+}
+
+finalResponse(UPDATE_NOOP, 'Everything already up to date');
diff --git a/modules-available/news/install.inc.php b/modules-available/news/install.inc.php
new file mode 100644
index 00000000..69db5aa9
--- /dev/null
+++ b/modules-available/news/install.inc.php
@@ -0,0 +1,24 @@
+<?php
+
+$res = array();
+
+$res[] = tableCreate('news', "
+ `newsid` int(10) unsigned NOT NULL AUTO_INCREMENT,
+ `dateline` int(10) unsigned NOT NULL,
+ `title` varchar(200) DEFAULT NULL,
+ `content` text,
+ PRIMARY KEY (`newsid`),
+ KEY `dateline` (`dateline`)
+");
+
+// Update path
+
+// *crickets*
+
+// Create response for browser
+
+if (in_array(UPDATE_DONE, $res)) {
+ finalResponse(UPDATE_DONE, 'Tables created successfully');
+}
+
+finalResponse(UPDATE_NOOP, 'Everything already up to date');
diff --git a/modules-available/statistics/install.inc.php b/modules-available/statistics/install.inc.php
new file mode 100644
index 00000000..f5203d7a
--- /dev/null
+++ b/modules-available/statistics/install.inc.php
@@ -0,0 +1,97 @@
+<?php
+
+$res = array();
+
+// The main statistic table used for log entries
+
+$res[] = tableCreate('statistic', "
+ `logid` int(10) unsigned NOT NULL AUTO_INCREMENT,
+ `dateline` int(10) unsigned NOT NULL,
+ `typeid` varchar(30) NOT NULL,
+ `clientip` varchar(40) NOT NULL,
+ `machineuuid` varchar(36) CHARACTER SET ascii DEFAULT NULL,
+ `username` varchar(30) NOT NULL,
+ `data` varchar(255) NOT NULL,
+ PRIMARY KEY (`logid`),
+ KEY `dateline` (`dateline`),
+ KEY `logtypeid` (`typeid`,`dateline`),
+ KEY `clientip` (`clientip`,`dateline`),
+ KEY `machineuuid` (`machineuuid`,`dateline`)
+");
+
+// Main table containing all known clients
+
+$res[] = tableCreate('machine', "
+ `machineuuid` char(36) CHARACTER SET ascii NOT NULL,
+ `locationid` int(11) DEFAULT NULL,
+ `macaddr` char(17) CHARACTER SET ascii NOT NULL,
+ `clientip` varchar(45) CHARACTER SET ascii NOT NULL,
+ `firstseen` int(10) unsigned NOT NULL,
+ `lastseen` int(10) unsigned NOT NULL,
+ `logintime` int(10) unsigned NOT NULL,
+ `position` varchar(40) CHARACTER SET utf8 COLLATE utf8_unicode_ci NOT NULL,
+ `lastboot` int(10) unsigned NOT NULL,
+ `realcores` smallint(5) unsigned NOT NULL,
+ `mbram` int(10) unsigned NOT NULL,
+ `kvmstate` enum('UNKNOWN','UNSUPPORTED','DISABLED','ENABLED') NOT NULL,
+ `cpumodel` varchar(120) NOT NULL,
+ `systemmodel` varchar(120) NOT NULL DEFAULT '',
+ `id44mb` int(10) unsigned NOT NULL,
+ `badsectors` int(10) unsigned NOT NULL,
+ `data` mediumtext NOT NULL,
+ `hostname` varchar(200) NOT NULL DEFAULT '',
+ `notes` text,
+ PRIMARY KEY (`machineuuid`),
+ KEY `macaddr` (`macaddr`),
+ KEY `clientip` (`clientip`),
+ KEY `realcores` (`realcores`),
+ KEY `mbram` (`mbram`),
+ KEY `kvmstate` (`kvmstate`),
+ KEY `id44mb` (`id44mb`),
+ KEY `locationid` (`locationid`),
+ KEY `lastseen` (`lastseen`),
+ KEY `cpumodel` (`cpumodel`),
+ KEY `systemmodel` (`systemmodel`)
+");
+
+// PCI-ID cache
+
+$res[] = tableCreate('pciid', "
+ `category` enum('CLASS','VENDOR','DEVICE') NOT NULL,
+ `id` varchar(10) CHARACTER SET ascii NOT NULL,
+ `value` varchar(200) NOT NULL,
+ `dateline` int(10) unsigned NOT NULL,
+ PRIMARY KEY (`category`,`id`)
+");
+
+//
+// This was added/changed later -- keep update path
+//
+
+// 2015-12-21: Add machine uuid column to statistics table
+if (!tableHasColumn('statistic', 'machineuuid')) {
+ $ret = Database::exec('ALTER TABLE statistic'
+ . ' ADD COLUMN `machineuuid` varchar(36) CHARACTER SET ascii DEFAULT NULL AFTER clientip,'
+ . ' ADD INDEX `machineuuid` (`machineuuid`,`dateline`)');
+ if ($ret === false) {
+ finalResponse(UPDATE_FAILED, 'Adding machineuuid to statistic failed: ' . Database::lastError());
+ }
+ $res[] = UPDATE_DONE;
+}
+
+if (tableHasColumn('machine', 'roomid')) {
+ $ret = Database::exec("ALTER TABLE `machine` CHANGE `roomid` `locationid` INT(11) DEFAULT NULL") !== false;
+ $ret = Database::exec("ALTER TABLE `machine` DROP `roomid`") !== false || $ret;
+ if ($ret === false) {
+ finalResponse(UPDATE_FAILED, 'Renaming roomid to locationid in statistic failed: ' . Database::lastError());
+ }
+ $res[] = UPDATE_DONE;
+}
+
+// Create response
+
+if (in_array(UPDATE_DONE, $res)) {
+ finalResponse(UPDATE_DONE, 'Tables created successfully');
+}
+
+finalResponse(UPDATE_NOOP, 'Everything already up to date');
diff --git a/modules-available/sysconfig/inc/configmodule/adauth.inc.php b/modules-available/sysconfig/inc/configmodule/adauth.inc.php
index a03be43c..180ac717 100644
--- a/modules-available/sysconfig/inc/configmodule/adauth.inc.php
+++ b/modules-available/sysconfig/inc/configmodule/adauth.inc.php
@@ -2,9 +2,9 @@
ConfigModule::registerModule(
ConfigModule_AdAuth::MODID, // ID
- Dictionary::translateFile('config-module', 'adAuth_title'), // Title
- Dictionary::translateFile('config-module', 'adAuth_description'), // Description
- Dictionary::translateFile('config-module', 'group_authentication'), // Group
+ Dictionary::translateFileModule('sysconfig', 'config-module', 'adAuth_title'), // Title
+ Dictionary::translateFileModule('sysconfig', 'config-module', 'adAuth_description'), // Description
+ Dictionary::translateFileModule('sysconfig', 'config-module', 'group_authentication'), // Group
true // Only one per config?
);
diff --git a/modules-available/sysconfig/inc/configmodule/branding.inc.php b/modules-available/sysconfig/inc/configmodule/branding.inc.php
index 479b406c..4a9718d6 100644
--- a/modules-available/sysconfig/inc/configmodule/branding.inc.php
+++ b/modules-available/sysconfig/inc/configmodule/branding.inc.php
@@ -2,9 +2,9 @@
ConfigModule::registerModule(
ConfigModule_Branding::MODID, // ID
- Dictionary::translateFile('config-module', 'branding_title'), // Title
- Dictionary::translateFile('config-module', 'branding_description'), // Description
- Dictionary::translateFile('config-module', 'group_branding'), // Group
+ Dictionary::translateFileModule('sysconfig', 'config-module', 'branding_title'), // Title
+ Dictionary::translateFileModule('sysconfig', 'config-module', 'branding_description'), // Description
+ Dictionary::translateFileModule('sysconfig', 'config-module', 'group_branding'), // Group
true // Only one per config?
);
diff --git a/modules-available/sysconfig/inc/configmodule/customodule.inc.php b/modules-available/sysconfig/inc/configmodule/customodule.inc.php
index 09b621cc..8d1b6bf0 100644
--- a/modules-available/sysconfig/inc/configmodule/customodule.inc.php
+++ b/modules-available/sysconfig/inc/configmodule/customodule.inc.php
@@ -2,9 +2,9 @@
ConfigModule::registerModule(
ConfigModule_CustomModule::MODID, // ID
- Dictionary::translateFile('config-module', 'custom_title'), // Title
- Dictionary::translateFile('config-module', 'custom_description'), // Description
- Dictionary::translateFile('config-module', 'group_generic'), // Group
+ Dictionary::translateFileModule('sysconfig', 'config-module', 'custom_title'), // Title
+ Dictionary::translateFileModule('sysconfig', 'config-module', 'custom_description'), // Description
+ Dictionary::translateFileModule('sysconfig', 'config-module', 'group_generic'), // Group
false, // Only one per config?
100 // Sort order
);
diff --git a/modules-available/sysconfig/inc/configmodule/ldapauth.inc.php b/modules-available/sysconfig/inc/configmodule/ldapauth.inc.php
index 0f386033..ed1a47c3 100644
--- a/modules-available/sysconfig/inc/configmodule/ldapauth.inc.php
+++ b/modules-available/sysconfig/inc/configmodule/ldapauth.inc.php
@@ -2,9 +2,9 @@
ConfigModule::registerModule(
ConfigModule_LdapAuth::MODID, // ID
- Dictionary::translateFile('config-module', 'ldapAuth_title'), // Title
- Dictionary::translateFile('config-module', 'ldapAuth_description'), // Description
- Dictionary::translateFile('config-module', 'group_authentication'), // Group
+ Dictionary::translateFileModule('sysconfig', 'config-module', 'ldapAuth_title'), // Title
+ Dictionary::translateFileModule('sysconfig', 'config-module', 'ldapAuth_description'), // Description
+ Dictionary::translateFileModule('sysconfig', 'config-module', 'group_authentication'), // Group
true // Only one per config?
);
diff --git a/modules-available/sysconfig/inc/configmodule/sshconfig.inc.php b/modules-available/sysconfig/inc/configmodule/sshconfig.inc.php
index b1d58153..8814b86b 100644
--- a/modules-available/sysconfig/inc/configmodule/sshconfig.inc.php
+++ b/modules-available/sysconfig/inc/configmodule/sshconfig.inc.php
@@ -2,9 +2,9 @@
ConfigModule::registerModule(
ConfigModule_SshConfig::MODID, // ID
- Dictionary::translateFile('config-module', 'sshconfig_title'), // Title
- Dictionary::translateFile('config-module', 'sshconfig_description'), // Description
- Dictionary::translateFile('config-module', 'group_sshconfig'), // Group
+ Dictionary::translateFileModule('sysconfig', 'config-module', 'sshconfig_title'), // Title
+ Dictionary::translateFileModule('sysconfig', 'config-module', 'sshconfig_description'), // Description
+ Dictionary::translateFileModule('sysconfig', 'config-module', 'group_sshconfig'), // Group
true // Only one per config?
);
diff --git a/modules-available/sysconfig/install.inc.php b/modules-available/sysconfig/install.inc.php
new file mode 100644
index 00000000..0b7bbc1b
--- /dev/null
+++ b/modules-available/sysconfig/install.inc.php
@@ -0,0 +1,90 @@
+<?php
+
+$res = array();
+
+$res[] = tableCreate('configtgz', "
+ `configid` int(10) unsigned NOT NULL AUTO_INCREMENT,
+ `title` varchar(200) NOT NULL,
+ `filepath` varchar(255) NOT NULL,
+ `status` enum('OK','OUTDATED','MISSING') NOT NULL DEFAULT 'MISSING',
+ PRIMARY KEY (`configid`)
+");
+
+$res[] = tableCreate('configtgz_module', "
+ `moduleid` int(10) unsigned NOT NULL AUTO_INCREMENT,
+ `title` varchar(200) NOT NULL,
+ `moduletype` varchar(16) NOT NULL,
+ `filepath` varchar(250) NOT NULL,
+ `contents` text NOT NULL,
+ `version` int(10) unsigned NOT NULL DEFAULT '0',
+ `status` enum('OK','MISSING','OUTDATED') NOT NULL DEFAULT 'MISSING',
+ PRIMARY KEY (`moduleid`),
+ KEY `title` (`title`),
+ KEY `moduletype` (`moduletype`,`title`)
+");
+
+$res[] = tableCreate('configtgz_x_module', "
+ `configid` int(10) unsigned NOT NULL,
+ `moduleid` int(10) unsigned NOT NULL,
+ PRIMARY KEY (`configid`,`moduleid`),
+ KEY `moduleid` (`moduleid`)
+");
+
+
+// Constraints
+if (in_array(UPDATE_DONE, $res)) {
+ Database::exec("ALTER TABLE `configtgz_x_module`
+ ADD CONSTRAINT `configtgz_x_module_ibfk_1` FOREIGN KEY (`configid`) REFERENCES `configtgz` (`configid`) ON DELETE CASCADE,
+ ADD CONSTRAINT `configtgz_x_module_ibfk_2` FOREIGN KEY (`moduleid`) REFERENCES `configtgz_module` (`moduleid`)");
+}
+
+// Update path
+
+// ##### 2014-12-12
+// Rename config modules
+Database::exec("UPDATE configtgz_module SET moduletype = 'Branding' WHERE moduletype = 'BRANDING'");
+Database::exec("UPDATE configtgz_module SET moduletype = 'AdAuth' WHERE moduletype = 'AD_AUTH'");
+Database::exec("UPDATE configtgz_module SET moduletype = 'CustomModule' WHERE moduletype = 'custom'");
+
+// #######################
+// ##### 2015-01-16
+// Extend config module db tables
+tableDropColumn('configtgz_module', 'haschanged');
+if (!tableHasColumn('configtgz_module', 'version')) {
+ if (Database::exec("ALTER TABLE `configtgz_module` ADD `version` INT( 10 ) UNSIGNED NOT NULL DEFAULT '0'") === false) {
+ finalResponse(UPDATE_FAILED, 'Could not add version to configtgz_module: ' . Database::lastError());
+ }
+ $res[] = UPDATE_DONE;
+}
+if (!tableHasColumn('configtgz_module', 'status')) {
+ if (Database::exec("ALTER TABLE `configtgz_module` ADD `status` ENUM( 'OK', 'MISSING', 'OUTDATED' ) NOT NULL DEFAULT 'MISSING'") === false) {
+ finalResponse(UPDATE_FAILED, 'Could not add status to configtgz_module: ' . Database::lastError());
+ }
+ $res[] = UPDATE_DONE;
+}
+if (!tableHasColumn('configtgz', 'status')) {
+ if (Database::exec("ALTER TABLE `configtgz` ADD `status` ENUM( 'OK', 'OUTDATED', 'MISSING' ) NOT NULL DEFAULT 'MISSING'") === false) {
+ finalResponse(UPDATE_FAILED, 'Could not add status to configtgz: ' . Database::lastError());
+ }
+ $res[] = UPDATE_DONE;
+}
+
+// ----- rebuild AD configs ------
+// TEMPORARY HACK; Rebuild AD configs.. move somewhere else
+Module::isAvailable('sysconfig');
+$list = array_merge(ConfigModule::getAll('AdAuth'), ConfigModule::getAll('LdapAuth'));
+if ($list === false) {
+ EventLog::warning('Could not regenerate AD/LDAP configs - please do so manually');
+} else {
+ foreach ($list as $ad) {
+ $ad->generate(false);
+ }
+}
+
+// Create response for browser
+
+if (in_array(UPDATE_DONE, $res)) {
+ finalResponse(UPDATE_DONE, 'Tables created successfully');
+}
+
+finalResponse(UPDATE_NOOP, 'Everything already up to date');
diff --git a/modules-available/syslog/install.inc.php b/modules-available/syslog/install.inc.php
new file mode 100644
index 00000000..539f2449
--- /dev/null
+++ b/modules-available/syslog/install.inc.php
@@ -0,0 +1,38 @@
+<?php
+
+$res = array();
+
+$res[] = tableCreate('clientlog', "
+ `logid` int(10) unsigned NOT NULL AUTO_INCREMENT,
+ `dateline` int(10) unsigned NOT NULL,
+ `logtypeid` varchar(30) NOT NULL,
+ `clientip` varchar(40) NOT NULL,
+ `machineuuid` varchar(36) CHARACTER SET ascii DEFAULT NULL,
+ `description` varchar(255) NOT NULL,
+ `extra` text NOT NULL,
+ PRIMARY KEY (`logid`),
+ KEY `dateline` (`dateline`),
+ KEY `logtypeid` (`logtypeid`,`dateline`),
+ KEY `clientip` (`clientip`,`dateline`),
+ KEY `machineuuid` (`machineuuid`,`dateline`)
+");
+
+// Update path
+
+if (!tableHasColumn('clientlog', 'machineuuid')) {
+ $ret = Database::exec('ALTER TABLE clientlog'
+ . ' ADD COLUMN `machineuuid` varchar(36) CHARACTER SET ascii DEFAULT NULL AFTER clientip,'
+ . ' ADD INDEX `machineuuid` (`machineuuid`,`dateline`)');
+ if ($ret === false) {
+ finalResponse(UPDATE_FAILED, 'Adding machineuuid to clientlog failed: ' . Database::lastError());
+ }
+ $res[] = UPDATE_DONE;
+}
+
+// Create response for browser
+
+if (in_array(UPDATE_DONE, $res)) {
+ finalResponse(UPDATE_DONE, 'Tables created successfully');
+}
+
+finalResponse(UPDATE_NOOP, 'Everything already up to date');