diff options
author | Simon Rettberg | 2016-06-08 18:33:30 +0200 |
---|---|---|
committer | Simon Rettberg | 2016-06-08 18:33:30 +0200 |
commit | ffffab643e031524b6fdfe0c39adae1f6c8e9c4d (patch) | |
tree | 84e55c5a7ea0e02481b9f44730814ae788f05e12 /modules-available | |
parent | [dashboard] Remove needsSchemaUpdate call (diff) | |
download | slx-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.php | 58 | ||||
-rw-r--r-- | modules-available/eventlog/install.inc.php | 31 | ||||
-rw-r--r-- | modules-available/locations/install.inc.php | 39 | ||||
-rw-r--r-- | modules-available/main/install.inc.php | 73 | ||||
-rw-r--r-- | modules-available/news/install.inc.php | 24 | ||||
-rw-r--r-- | modules-available/statistics/install.inc.php | 97 | ||||
-rw-r--r-- | modules-available/sysconfig/inc/configmodule/adauth.inc.php | 6 | ||||
-rw-r--r-- | modules-available/sysconfig/inc/configmodule/branding.inc.php | 6 | ||||
-rw-r--r-- | modules-available/sysconfig/inc/configmodule/customodule.inc.php | 6 | ||||
-rw-r--r-- | modules-available/sysconfig/inc/configmodule/ldapauth.inc.php | 6 | ||||
-rw-r--r-- | modules-available/sysconfig/inc/configmodule/sshconfig.inc.php | 6 | ||||
-rw-r--r-- | modules-available/sysconfig/install.inc.php | 90 | ||||
-rw-r--r-- | modules-available/syslog/install.inc.php | 38 |
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'); |