public function rebuild($start_date = null, $end_date = null) { if (!$start_date) { $start_date = config_option('last_sharing_table_rebuild'); } if ($start_date instanceof DateTimeValue) { $start_date = $start_date->toMySQL(); } if ($end_date instanceof DateTimeValue) { $end_date = $end_date->toMySQL(); } if ($end_date) { $end_cond = "AND updated_on <= '{$end_date}'"; } try { $object_ids = Objects::instance()->findAll(array('id' => true, "conditions" => "updated_on >= '{$start_date}' {$end_cond}")); $obj_count = 0; DB::beginWork(); foreach ($object_ids as $id) { $obj = Objects::findObject($id); if ($obj instanceof ContentDataObject) { $obj->addToSharingTable(); $obj_count++; } } set_config_option('last_sharing_table_rebuild', DateTimeValueLib::now()->toMySQL()); DB::commit(); } catch (Exception $e) { DB::rollback(); Logger::log("Failed to rebuild sharing table: " . $e->getMessage() . "\nTrace: " . $e->getTraceAsString()); } return $obj_count; }
/** * Check if there is a new version of application available * * @param boolean $force When forced check will always construct the versions feed object * try to fech the data and check for a new version. Version feed object is also returned * @return VersionFeed In case of error this function will return false */ static function check($force = true) { $allow_url_fopen = strtolower(ini_get('allow_url_fopen')); if (function_exists('simplexml_load_file') && ($allow_url_fopen == '1' || $allow_url_fopen == 'on')) { // Execute once a day, if not forced check if we need to execute it now if (!$force) { if (config_option('upgrade_last_check_new_version', false)) { return true; // already have it checked and already have a new version } // if $last_check = config_option('upgrade_last_check_datetime'); if ($last_check instanceof DateTimeValue && $last_check->getTimestamp() + 86400 > DateTimeValueLib::now()->getTimestamp()) { return true; // checked in the last day } // if } // if try { $versions_feed = new VersionsFeed(); set_config_option('upgrade_last_check_datetime', DateTimeValueLib::now()); set_config_option('upgrade_last_check_new_version', $versions_feed->hasNewVersions(product_version())); return $force ? $versions_feed : true; } catch (Exception $e) { return false; } // try } else { set_config_option('upgrade_check_enabled', false); return false; } // if }
function scolors() { if (can_manage_configuration(logged_user())) { $valid_options = ConfigCategories::getOptionsFromCategory('brand_colors'); foreach ($_POST as $k => $v) { print "{$k} => {$v}"; if (in_array($k, $valid_options)) { set_config_option($k, str_replace("#", "", $v)); } } } exit; }
function plugins_load_temp_table() { global $config, $plugins; $pluginslist = retrieve_plugin_list(); if (isset($_SESSION["plugin_temp_table"])) { $table = $_SESSION["plugin_temp_table"]; } else { $table = "plugin_temp_table_" . rand(); } $x = 0; while ($x < 30) { if (!plugins_temp_table_exists($table)) { $_SESSION["plugin_temp_table"] = $table; db_execute("CREATE TEMPORARY TABLE IF NOT EXISTS {$table} LIKE plugin_config"); db_execute("TRUNCATE {$table}"); db_execute("INSERT INTO {$table} SELECT * FROM plugin_config"); break; } else { $table = "plugin_temp_table_" . rand(); } $x++; } $path = $config['base_path'] . '/plugins/'; $dh = opendir($path); if ($dh !== false) { while (($file = readdir($dh)) !== false) { if (is_dir("{$path}/{$file}") && file_exists("{$path}/{$file}/setup.php") && !in_array($file, $pluginslist)) { include_once "{$path}/{$file}/setup.php"; if (!function_exists('plugin_' . $file . '_install') && function_exists($file . '_version')) { $function = $file . '_version'; $cinfo[$file] = $function(); if (!isset($cinfo[$file]['author'])) { $cinfo[$file]['author'] = 'Unknown'; } if (!isset($cinfo[$file]['homepage'])) { $cinfo[$file]['homepage'] = 'Not Stated'; } if (isset($cinfo[$file]['webpage'])) { $cinfo[$file]['homepage'] = $cinfo[$file]['webpage']; } if (!isset($cinfo[$file]['longname'])) { $cinfo[$file]['longname'] = ucfirst($file); } $cinfo[$file]['status'] = -2; if (in_array($file, $plugins)) { $cinfo[$file]['status'] = -1; } db_execute("REPLACE INTO {$table} (directory, name, status, author, webpage, version)\n\t\t\t\t\t\tVALUES ('" . $file . "', '" . $cinfo[$file]['longname'] . "', '" . $cinfo[$file]['status'] . "', '" . $cinfo[$file]['author'] . "', '" . $cinfo[$file]['homepage'] . "', '" . $cinfo[$file]['version'] . "')"); $pluginslist[] = $file; } elseif (function_exists('plugin_' . $file . '_install') && function_exists('plugin_' . $file . '_version')) { $function = $file . '_version'; $cinfo[$file] = $function(); $cinfo[$file]['status'] = 0; if (!isset($cinfo[$file]['author'])) { $cinfo[$file]['author'] = 'Unknown'; } if (!isset($cinfo[$file]['homepage'])) { $cinfo[$file]['homepage'] = 'Not Stated'; } if (isset($cinfo[$file]['webpage'])) { $cinfo[$file]['homepage'] = $cinfo[$file]['webpage']; } if (!isset($cinfo[$file]['longname'])) { $cinfo[$file]['homepage'] = ucfirst($file); } /* see if it's been installed as old, if so, remove from oldplugins array and session */ $oldplugins = read_config_option("oldplugins"); if (substr_count($oldplugins, $file)) { $oldplugins = str_replace($file, "", $oldplugins); $oldplugins = str_replace(",,", ",", $oldplugins); $oldplugins = trim($oldplugins, ","); set_config_option('oldplugins', $oldplugins); $_SESSION['sess_config_array']['oldplugins'] = $oldplugins; } db_execute("REPLACE INTO {$table} (directory, name, status, author, webpage, version)\n\t\t\t\t\t\tVALUES ('" . $file . "', '" . $cinfo[$file]['longname'] . "', '" . $cinfo[$file]['status'] . "', '" . $cinfo[$file]['author'] . "', '" . $cinfo[$file]['homepage'] . "', '" . $cinfo[$file]['version'] . "')"); $pluginslist[] = $file; } } } closedir($dh); } return $table; }
<?php include '../../include/db.php'; include '../../include/general.php'; include '../../include/authenticate.php'; if (!checkperm('a')) { exit('Permission denied.'); } include_once '../../include/config_functions.php'; // Process autosaving requests if (getval('ajax', '') === 'true' && getval('autosave', '') === 'true') { $response['success'] = true; $response['message'] = ''; $autosave_option_name = getvalescaped('autosave_option_name', ''); $autosave_option_value = getvalescaped('autosave_option_value', ''); if (!set_config_option(null, $autosave_option_name, $autosave_option_value)) { $response['success'] = false; } echo json_encode($response); exit; } include '../../include/header.php'; process_config_options(); ?> <div class="BasicsBox"> <h1><?php echo $lang['systemconfig']; ?> </h1> <p><?php echo $lang['systemconfig_description'];
function disable_poller() { set_config_option('poller_enabled', ''); }
/** * Finish the installation - create owner company and administrator * * @param void * @return null */ function complete_installation() { if (Contacts::getOwnerCompany() instanceof Contact) { die('Owner company already exists'); // Somebody is trying to access this method even if the user already exists } // if $form_data = array_var($_POST, 'form'); tpl_assign('form_data', $form_data); if (array_var($form_data, 'submited') == 'submited') { try { $admin_password = trim(array_var($form_data, 'admin_password')); $admin_password_a = trim(array_var($form_data, 'admin_password_a')); if (trim($admin_password) == '') { throw new Error(lang('password value required')); } // if if ($admin_password != $admin_password_a) { throw new Error(lang('passwords dont match')); } // if DB::beginWork(); Contacts::delete(); // clear users table // Create a company $company = new Contact(); $company->setFirstName(array_var($form_data, 'company_name')); $company->setObjectName(); $company->setIsCompany(true); $company->save(); // Init default colors set_config_option('brand_colors_head_back', "424242"); set_config_option('brand_colors_tabs_back', "e7e7e7"); set_config_option('brand_colors_head_font', "FFFFFF"); set_config_option('brand_colors_tabs_font', "333333"); // Create the administrator user $administrator = new Contact(); $pergroup = PermissionGroups::findOne(array('conditions' => "`name`='Super Administrator'")); $administrator->setUserType($pergroup->getId()); $administrator->setCompanyId($company->getId()); $administrator->setUsername(array_var($form_data, 'admin_username')); $administrator->setPassword($admin_password); $administrator->setFirstname(array_var($form_data, 'admin_username')); $administrator->setObjectName(); $administrator->save(); $user_password = new ContactPassword(); $user_password->setContactId($administrator->getId()); $user_password->password_temp = $admin_password; $user_password->setPasswordDate(DateTimeValueLib::now()); $user_password->setPassword(cp_encrypt($admin_password, $user_password->getPasswordDate()->getTimestamp())); $user_password->save(); //Add email after save because is needed. $administrator->addEmail(array_var($form_data, 'admin_email'), 'personal', true); //permissions $permission_group = new PermissionGroup(); $permission_group->setName('Account Owner'); $permission_group->setContactId($administrator->getId()); $permission_group->setIsContext(false); $permission_group->setType("permission_groups"); $permission_group->save(); $administrator->setPermissionGroupId($permission_group->getId()); $administrator->save(); $company->setCreatedById($administrator->getId()); $company->setUpdatedById($administrator->getId()); $company->save(); $contact_pg = new ContactPermissionGroup(); $contact_pg->setContactId($administrator->getId()); $contact_pg->setPermissionGroupId($permission_group->getId()); $contact_pg->save(); // tab panel permissions $panels = TabPanels::getEnabled(); foreach ($panels as $panel) { $tpp = new TabPanelPermission(); $tpp->setPermissionGroupId($administrator->getPermissionGroupId()); $tpp->setTabPanelId($panel->getId()); $tpp->save(); } // dimension permissions $dimensions = Dimensions::findAll(); foreach ($dimensions as $dimension) { if ($dimension->getDefinesPermissions()) { $cdp = ContactDimensionPermissions::findOne(array("conditions" => "`permission_group_id` = " . $administrator->getPermissionGroupId() . " AND `dimension_id` = " . $dimension->getId())); if (!$cdp instanceof ContactDimensionPermission) { $cdp = new ContactDimensionPermission(); $cdp->setPermissionGroupId($administrator->getPermissionGroupId()); $cdp->setContactDimensionId($dimension->getId()); } $cdp->setPermissionType('allow all'); $cdp->save(); // contact member permisssion entries $members = $dimension->getAllMembers(); foreach ($members as $member) { $ots = DimensionObjectTypeContents::getContentObjectTypeIds($dimension->getId(), $member->getObjectTypeId()); $ots[] = $member->getObjectId(); foreach ($ots as $ot) { $cmp = ContactMemberPermissions::findOne(); if (!$cmp instanceof ContactMemberPermission) { $cmp = new ContactMemberPermission(array("conditions" => "`permission_group_id` = " . $administrator->getPermissionGroupId() . " AND `member_id` = " . $member->getId() . " AND `object_type_id` = {$ot}")); $cmp->setPermissionGroupId($administrator->getPermissionGroupId()); $cmp->setMemberId($member->getId()); $cmp->setObjectTypeId($ot); } $cmp->setCanWrite(1); $cmp->setCanDelete(1); $cmp->save(); } } } } // system permissions $sp = new SystemPermission(); $sp->setPermissionGroupId($administrator->getPermissionGroupId()); $sp->setAllPermissions(true); $sp->save(); // root permissions DB::executeAll("\r\n\t\t\t\tINSERT INTO " . TABLE_PREFIX . "contact_member_permissions (permission_group_id, member_id, object_type_id, can_delete, can_write)\r\n\t\t\t\t SELECT " . $administrator->getPermissionGroupId() . ", 0, rtp.object_type_id, rtp.can_delete, rtp.can_write FROM " . TABLE_PREFIX . "role_object_type_permissions rtp \r\n\t\t\t\t WHERE rtp.object_type_id NOT IN (SELECT id FROM " . TABLE_PREFIX . "object_types WHERE name IN ('mail','template','file_revision')) AND rtp.role_id in (\r\n\t\t\t\t SELECT pg.id FROM " . TABLE_PREFIX . "permission_groups pg WHERE pg.type='roles' AND pg.name IN ('Super Administrator','Administrator','Manager','Executive')\r\n\t\t\t\t )\r\n\t\t\t\tON DUPLICATE KEY UPDATE member_id=0;"); Hook::fire('after_user_add', $administrator, $null); DB::commit(); $this->redirectTo('access', 'login'); } catch (Exception $e) { tpl_assign('error', $e); DB::rollback(); } // try } // if }
function logrotate_rotatenow() { global $config; $log = $config['base_path'] . '/log/cacti.log'; set_config_option('logrotate_lastrun', time()); clearstatcache(); if (is_writable($config['base_path'] . '/log/') && is_writable($log)) { $perms = octdec(substr(decoct(fileperms($log)), 2)); $owner = fileowner($log); $group = filegroup($log); if ($owner !== FALSE) { $ext = date('Ymd'); if (file_exists($log . '-' . $ext)) { $ext = date('YmdHis'); } if (rename($log, $log . '-' . $ext)) { touch($log); chown($log, $owner); chgrp($log, $group); chmod($log, $perms); cacti_log('Cacti Log Rotation - Created Log cacti.log-' . $ext); } else { cacti_log('Cacti Log Rotation - ERROR: Could not rename cacti.log to ' . $log . '-' . $ext); } } else { cacti_log('Cacti Log Rotation - ERROR: Permissions issue. Please check your log directory'); } } else { cacti_log('Cacti Log Rotation - ERROR: Permissions issue. Directory / Log not writable.'); } logrotate_cleanold(); }
function set_getting_started_step() { ajx_current("empty"); if (!logged_user()->isAdminGroup()) { ajx_current("empty"); return; } $step = array_var($_REQUEST, 'step'); $current_step = config_option('getting_started_step'); if ($current_step < $step) { set_config_option('getting_started_step', $step); // change tab title and icon if ($step >= 99) { DB::execute("UPDATE " . TABLE_PREFIX . "tab_panels SET title='settings', icon_cls='ico-administration' WHERE id='more-panel';"); } } if (array_var($_REQUEST, 'reload_panel')) { ajx_add('more-panel', 'reload'); } }
function syslog_upgrade_pre_oneoh_tables($options = false, $isbackground = false) { global $config, $cnn_id, $syslog_levels, $database_default, $syslog_upgrade; include dirname(__FILE__) . "/config.php"; $syslog_levels = array(1 => 'emerg', 2 => 'crit', 3 => 'alert', 4 => 'err', 5 => 'warn', 6 => 'notice', 7 => 'info', 8 => 'debug', 9 => 'other'); if ($isbackground) { $table = 'syslog_pre_upgrade'; } else { $table = 'syslog'; } /* validate some simple information */ $mysqlVersion = syslog_get_mysql_version("syslog"); $truncate = isset($options["upgrade_type"]) && $options["upgrade_type"] == "truncate" ? true : false; $upgrade_type = isset($options["upgrade_type"]) ? $options["upgrade_type"] : "inline"; $engine = isset($options["engine"]) && $options["engine"] == "innodb" ? "InnoDB" : "MyISAM"; $partitioned = isset($options["db_type"]) && $options["db_type"] == "part" ? true : false; $syslogexists = sizeof(syslog_db_fetch_row("SHOW TABLES FROM `" . $syslogdb_default . "` LIKE '{$table}'")); /* disable collection for a bit */ set_config_option('syslog_enabled', ''); if ($upgrade_type == "truncate") { return; } if ($upgrade_type == "inline" || $isbackground) { syslog_setup_table_new($options); api_plugin_register_realm('syslog', 'syslog.php', 'Plugin -> Syslog User', 1); api_plugin_register_realm('syslog', 'syslog_alerts.php,syslog_removal.php,syslog_reports.php', 'Plugin -> Syslog Administration', 1); /* get the realm id's and change from old to new */ $user = db_fetch_cell("SELECT id FROM plugin_realms WHERE file='syslog.php'") + 100; $admin = db_fetch_cell("SELECT id FROM plugin_realms WHERE file='syslog_alerts.php'") + 100; if ($user > 100) { $users = db_fetch_assoc("SELECT user_id FROM user_auth_realm WHERE realm_id=37"); if (sizeof($users)) { foreach ($users as $u) { db_execute("INSERT INTO user_auth_realm\n\t\t\t\t\t(realm_id, user_id) VALUES ({$user}, " . $u["user_id"] . ")\n\t\t\t\t\tON DUPLICATE KEY UPDATE realm_id=VALUES(realm_id)"); db_execute("DELETE FROM user_auth_realm\n\t\t\t\t\tWHERE user_id=" . $u["user_id"] . "\n\t\t\t\t\tAND realm_id=37"); } } } if ($admin > 100) { $admins = db_fetch_assoc("SELECT user_id FROM user_auth_realm WHERE realm_id=38"); if (sizeof($admins)) { foreach ($admins as $user) { db_execute("INSERT INTO user_auth_realm\n\t\t\t\t\t(realm_id, user_id) VALUES ({$admin}, " . $user["user_id"] . ")\n\t\t\t\t\tON DUPLICATE KEY UPDATE realm_id=VALUES(realm_id)"); db_execute("DELETE FROM user_auth_realm\n\t\t\t\t\tWHERE user_id=" . $user["user_id"] . "\n\t\t\t\t\tAND realm_id=38"); } } } /* get the database table names */ $rows = syslog_db_fetch_assoc("SHOW TABLES FROM `" . $syslogdb_default . "`"); if (sizeof($rows)) { foreach ($rows as $row) { $tables[] = $row["Tables_in_" . $syslogdb_default]; } } /* create the reports table */ syslog_db_execute("CREATE TABLE IF NOT EXISTS `" . $syslogdb_default . "`.`syslog_logs` (\n\t\t\talert_id integer unsigned not null default '0',\n\t\t\tlogseq bigint unsigned NOT NULL,\n\t\t\tlogtime TIMESTAMP NOT NULL default '0000-00-00 00:00:00',\n\t\t\tlogmsg " . ($mysqlVersion > 5 ? "varchar(1024)" : "text") . " default NULL,\n\t\t\thost varchar(32) default NULL,\n\t\t\tfacility varchar(10) default NULL,\n\t\t\tpriority varchar(10) default NULL,\n\t\t\tcount integer unsigned NOT NULL default '0',\n\t\t\thtml blob default NULL,\n\t\t\tseq bigint unsigned NOT NULL auto_increment,\n\t\t\tPRIMARY KEY (seq),\n\t\t\tKEY logseq (logseq),\n\t\t\tKEY alert_id (alert_id),\n\t\t\tKEY host (host),\n\t\t\tKEY seq (seq),\n\t\t\tKEY logtime (logtime),\n\t\t\tKEY priority (priority),\n\t\t\tKEY facility (facility)) ENGINE={$engine};"); /* create the soft removal table */ syslog_db_execute("CREATE TABLE IF NOT EXISTS `" . $syslogdb_default . "`.`syslog_host_facilities` (\n\t\t\t`host_id` int(10) unsigned NOT NULL,\n\t\t\t`facility_id` int(10) unsigned NOT NULL,\n\t\t\t`last_updated` TIMESTAMP NOT NULL default CURRENT_TIMESTAMP on update CURRENT_TIMESTAMP,\n\t\t\tPRIMARY KEY (`host_id`,`facility_id`)) ENGINE={$engine};"); /* create the host reference table */ syslog_db_execute("CREATE TABLE IF NOT EXISTS `" . $syslogdb_default . "`.`syslog_hosts` (\n\t\t\t`host_id` int(10) unsigned NOT NULL auto_increment,\n\t\t\t`host` VARCHAR(128) NOT NULL,\n\t\t\t`last_updated` TIMESTAMP NOT NULL default CURRENT_TIMESTAMP on update CURRENT_TIMESTAMP,\n\t\t\tPRIMARY KEY (`host`),\n\t\t\tKEY host_id (`host_id`),\n\t\t\tKEY last_updated (`last_updated`)) ENGINE={$engine}\n\t\t\tCOMMENT='Contains all hosts currently in the syslog table'"); /* check upgrade of syslog_alert */ $sql = "DESCRIBE `" . $syslogdb_default . "`.`syslog_alert`"; $columns = array(); $array = syslog_db_fetch_assoc($sql); if (sizeof($array)) { foreach ($array as $row) { $columns[] = $row["Field"]; } } if (!in_array("enabled", $columns)) { syslog_db_execute("ALTER TABLE `" . $syslogdb_default . "`.`syslog_alert` MODIFY COLUMN message varchar(128) DEFAULT NULL, ADD COLUMN enabled CHAR(2) DEFAULT 'on' AFTER type;"); } if (!in_array("method", $columns)) { syslog_db_execute("ALTER TABLE `" . $syslogdb_default . "`.`syslog_alert` ADD COLUMN method int(10) unsigned NOT NULL default '0' AFTER name"); syslog_db_execute("ALTER TABLE `" . $syslogdb_default . "`.`syslog_alert` ADD COLUMN num int(10) unsigned NOT NULL default '1' AFTER method"); syslog_db_execute("ALTER TABLE `" . $syslogdb_default . "`.`syslog_alert` ADD COLUMN severity INTEGER UNSIGNED NOT NULL default '0' AFTER name"); } if (!in_array("command", $columns)) { syslog_db_execute("ALTER TABLE `" . $syslogdb_default . "`.`syslog_alert` ADD COLUMN command varchar(255) DEFAULT NULL AFTER email;"); } /* check upgrade of syslog_alert */ $sql = "DESCRIBE `" . $syslogdb_default . "`.`syslog_remove`"; $columns = array(); $array = syslog_db_fetch_assoc($sql); if (sizeof($array)) { foreach ($array as $row) { $columns[] = $row["Field"]; } } if (!in_array("enabled", $columns)) { syslog_db_execute("ALTER TABLE `" . $syslogdb_default . "`.`syslog_remove` MODIFY COLUMN message varchar(128) DEFAULT NULL, ADD COLUMN enabled CHAR(2) DEFAULT 'on' AFTER type;"); } if (!in_array("method", $columns)) { syslog_db_execute("ALTER TABLE `" . $syslogdb_default . "`.`syslog_remove` ADD COLUMN method CHAR(5) DEFAULT 'del' AFTER enabled;"); } syslog_db_execute("DROP TABLE IF EXISTS `" . $syslogdb_default . "`.`syslog_hosts`"); syslog_db_execute("CREATE TABLE IF NOT EXISTS `" . $syslogdb_default . "`.`syslog_hosts` (\n\t\t\t`host_id` int(10) unsigned NOT NULL auto_increment,\n\t\t\t`host` VARCHAR(128) NOT NULL,\n\t\t\t`last_updated` TIMESTAMP NOT NULL default CURRENT_TIMESTAMP on update CURRENT_TIMESTAMP,\n\t\t\tPRIMARY KEY (`host`),\n\t\t\tKEY host_id (`host_id`),\n\t\t\tKEY last_updated (`last_updated`)) TYPE={$engine}\n\t\t\tCOMMENT='Contains all hosts currently in the syslog table'"); syslog_db_execute("DROP TABLE IF EXISTS `" . $syslogdb_default . "`.`syslog_facilities`"); syslog_db_execute("CREATE TABLE IF NOT EXISTS `" . $syslogdb_default . "`.`syslog_facilities` (\n\t\t\t`facility_id` int(10) unsigned NOT NULL auto_increment,\n\t\t\t`facility` varchar(10) NOT NULL,\n\t\t\t`last_updated` TIMESTAMP NOT NULL default CURRENT_TIMESTAMP on update CURRENT_TIMESTAMP,\n\t\t\tPRIMARY KEY (`facility`),\n\t\t\tKEY facility_id (`facility_id`)) ENGINE={$engine};"); syslog_db_execute("DROP TABLE IF EXISTS `" . $syslogdb_default . "`.`syslog_priorities`"); syslog_db_execute("CREATE TABLE IF NOT EXISTS `" . $syslogdb_default . "`.`syslog_priorities` (\n\t\t\t`priority_id` int(10) unsigned NOT NULL auto_increment,\n\t\t\t`priority` varchar(10) NOT NULL,\n\t\t\t`last_updated` TIMESTAMP NOT NULL default CURRENT_TIMESTAMP on update CURRENT_TIMESTAMP,\n\t\t\tPRIMARY KEY (`priority`),\n\t\t\tKEY priority_id (`priority_id`)) ENGINE={$engine};"); syslog_db_execute("DROP TABLE IF EXISTS `" . $syslogdb_default . "`.`syslog_host_facilities`"); syslog_db_execute("CREATE TABLE IF NOT EXISTS `" . $syslogdb_default . "`.`syslog_host_facilities` (\n\t\t\t`host_id` int(10) unsigned NOT NULL,\n\t\t\t`facility_id` int(10) unsigned NOT NULL,\n\t\t\t`last_updated` TIMESTAMP NOT NULL default CURRENT_TIMESTAMP on update CURRENT_TIMESTAMP,\n\t\t\tPRIMARY KEY (`host_id`,`facility_id`)) ENGINE={$engine};"); /* populate the tables */ syslog_db_execute("INSERT INTO `" . $syslogdb_default . "`.`syslog_hosts` (host) SELECT DISTINCT host FROM `" . $syslogdb_default . "`.`{$table}`"); syslog_db_execute("INSERT INTO `" . $syslogdb_default . "`.`syslog_facilities` (facility) SELECT DISTINCT facility FROM `" . $syslogdb_default . "`.`{$table}`"); foreach ($syslog_levels as $id => $priority) { syslog_db_execute("REPLACE INTO `" . $syslogdb_default . "`.`syslog_priorities` (priority_id, priority) VALUES ({$id}, '{$priority}')"); } /* a bit more horsepower please */ syslog_db_execute("INSERT INTO `" . $syslogdb_default . "`.`syslog_host_facilities`\n\t\t\t(host_id, facility_id)\n\t\t\tSELECT host_id, facility_id\n\t\t\tFROM ((SELECT DISTINCT host, facility\n\t\t\t\tFROM `" . $syslogdb_default . "`.`{$table}`) AS s\n\t\t\t\tINNER JOIN `" . $syslogdb_default . "`.`syslog_hosts` AS sh\n\t\t\t\tON s.host=sh.host\n\t\t\t\tINNER JOIN `" . $syslogdb_default . "`.`syslog_facilities` AS sf\n\t\t\t\tON sf.facility=s.facility)"); /* change the structure of the syslog table for performance sake */ $mysqlVersion = syslog_get_mysql_version("syslog"); if ($mysqlVersion >= 5) { syslog_db_execute("ALTER TABLE `" . $syslogdb_default . "`.`{$table}`\n\t\t\t\tMODIFY COLUMN message varchar(1024) DEFAULT NULL,\n\t\t\t\tADD COLUMN facility_id int(10) UNSIGNED NULL AFTER facility,\n\t\t\t\tADD COLUMN priority_id int(10) UNSIGNED NULL AFTER facility_id,\n\t\t\t\tADD COLUMN host_id int(10) UNSIGNED NULL AFTER priority_id,\n\t\t\t\tADD COLUMN logtime DATETIME NOT NULL DEFAULT '0000-00-00 00:00:00' AFTER priority,\n\t\t\t\tADD INDEX facility_id (facility_id),\n\t\t\t\tADD INDEX priority_id (priority_id),\n\t\t\t\tADD INDEX host_id (host_id),\n\t\t\t\tADD INDEX logtime(logtime);"); } else { syslog_db_execute("ALTER TABLE `" . $syslogdb_default . "`.`{$table}`\n\t\t\t\tADD COLUMN facility_id int(10) UNSIGNED NULL AFTER host,\n\t\t\t\tADD COLUMN priority_id int(10) UNSIGNED NULL AFTER facility_id,\n\t\t\t\tADD COLUMN host_id int(10) UNSIGNED NULL AFTER priority_id,\n\t\t\t\tADD COLUMN logtime DATETIME NOT NULL DEFAULT '0000-00-00 00:00:00' AFTER priority,\n\t\t\t\tADD INDEX facility_id (facility_id),\n\t\t\t\tADD INDEX priority_id (priority_id),\n\t\t\t\tADD INDEX host_id (host_id),\n\t\t\t\tADD INDEX logtime(logtime);"); } /* convert dates and times to timestamp */ syslog_db_execute("UPDATE `" . $syslogdb_default . "`.`{$table}` SET logtime=TIMESTAMP(`date`, `time`)"); /* update the host_ids */ $hosts = syslog_db_fetch_assoc("SELECT * FROM `" . $syslogdb_default . "`.`syslog_hosts`"); if (sizeof($hosts)) { foreach ($hosts as $host) { syslog_db_execute("UPDATE `" . $syslogdb_default . "`.`{$table}`\n\t\t\t\tSET host_id=" . $host["host_id"] . "\n\t\t\t\tWHERE host='" . $host["host"] . "'"); } } /* update the priority_ids */ $priorities = $syslog_levels; if (sizeof($priorities)) { foreach ($priorities as $id => $priority) { syslog_db_execute("UPDATE `" . $syslogdb_default . "`.`{$table}`\n\t\t\t\tSET priority_id=" . $id . "\n\t\t\t\tWHERE priority='" . $priority . "'"); } } /* update the facility_ids */ $fac = syslog_db_fetch_assoc("SELECT * FROM `" . $syslogdb_default . "`.`syslog_facilities`"); if (sizeof($fac)) { foreach ($fac as $f) { syslog_db_execute("UPDATE `" . $syslogdb_default . "`.`{$table}`\n\t\t\t\tSET facility_id=" . $f["facility_id"] . "\n\t\t\t\tWHERE facility='" . $f["facility"] . "'"); } } if (!$isbackground) { syslog_db_execute("ALTER TABLE `" . $syslogdb_default . "`.`{$table}`\n\t\t\t\tDROP COLUMN `date`,\n\t\t\t\tDROP COLUMN `time`,\n\t\t\t\tDROP COLUMN `host`,\n\t\t\t\tDROP COLUMN `facility`,\n\t\t\t\tDROP COLUMN `priority`"); } else { while (true) { $fetch_size = '10000'; $sequence = syslog_db_fetch_cell("SELECT max(seq) FROM (SELECT seq FROM `" . $syslogdb_default . "`.`{$table}` ORDER BY seq LIMIT {$fetch_size}) AS preupgrade"); if ($sequence > 0 && $sequence != '') { syslog_db_execute("INSERT INTO `" . $syslogdb_default . "`.`syslog` (facility_id, priority_id, host_id, logtime, message)\n\t\t\t\t\t\tSELECT facility_id, priority_id, host_id, logtime, message\n\t\t\t\t\t\tFROM `" . $syslogdb_default . "`.`{$table}`\n\t\t\t\t\t\tWHERE seq<{$sequence}"); syslog_db_execute("DELETE FROM `" . $syslogdb_default . "`.`{$table}` WHERE seq<={$sequence}"); } else { syslog_db_execute("DROP TABLE `" . $syslogdb_default . "`.`{$table}`"); break; } } } /* create the soft removal table */ syslog_db_execute("DROP TABLE IF EXISTS `" . $syslogdb_default . "`.`syslog_removed`"); syslog_db_execute("CREATE TABLE `" . $syslogdb_default . "`.`syslog_removed` LIKE `" . $syslogdb_default . "`.`syslog`"); } else { include_once $config['base_path'] . "/lib/poller.php"; $p = dirname(__FILE__); $command_string = read_config_option("path_php_binary"); $extra_args = ' -q ' . $config['base_path'] . '/plugins/syslog/syslog_upgrade.php --type=' . $options["db_type"] . ' --engine=' . $engine . ' --days=' . $options["days"]; cacti_log("SYSLOG NOTE: Launching Background Syslog Database Upgrade Process", false, "SYSTEM"); exec_background($command_string, $extra_args); } /* reenable syslog xferral */ set_config_option('syslog_enabled', 'on'); }
function save_instantiated_parameters($template, $parameters, $parameterValues) { $instantiation_id = config_option('last_template_instantiation_id') + 1; foreach ($parameters as $param) { /* @var $param TemplateParameter */ $param_val = array_var($parameterValues, $param->getName(), ''); $param_val = escape_character($param_val); DB::execute("INSERT INTO `" . TABLE_PREFIX . "template_instantiated_parameters` (`template_id`, `instantiation_id`, `parameter_name`, `value`) VALUES\r\n\t\t\t\t\t('" . $template->getId() . "', '{$instantiation_id}', '" . escape_character($param->getName()) . "', '{$param_val}') ON DUPLICATE KEY UPDATE template_id=template_id"); } set_config_option('last_template_instantiation_id', $instantiation_id); return $instantiation_id; }
/** * Finish the installation - create owner company and administrator * * @param void * @return null */ function complete_installation() { if(Contacts::getOwnerCompany() instanceof Contact) { die('Owner company already exists'); // Somebody is trying to access this method even if the user already exists } // if $form_data = array_var($_POST, 'form'); tpl_assign('form_data', $form_data); if(array_var($form_data, 'submited') == 'submited') { try { $admin_password = trim(array_var($form_data, 'admin_password')); $admin_password_a = trim(array_var($form_data, 'admin_password_a')); if(trim($admin_password) == '') { throw new Error(lang('password value required')); } // if if($admin_password <> $admin_password_a) { throw new Error(lang('passwords dont match')); } // if DB::beginWork(); Contacts::delete(); // clear users table // Create a company $company = new Contact(); $company->setFirstName(array_var($form_data, 'company_name')); $company->setObjectName(); $company->setIsCompany(true); $company->save(); // Init default colors set_config_option('brand_colors_head_back', "000000"); set_config_option('brand_colors_tabs_back', "14780e"); set_config_option('brand_colors_head_font', "ffffff"); set_config_option('brand_colors_tabs_font', "ffffff"); // Create the administrator user $administrator = new Contact(); $pergroup = PermissionGroups::findOne(array('conditions'=>"`name`='Super Administrator'")); $administrator->setUserType($pergroup->getId()); $administrator->setCompanyId($company->getId()); $administrator->setUsername(array_var($form_data, 'admin_username')); $administrator->setPassword($admin_password); $administrator->setFirstname(array_var($form_data, 'admin_username')); $administrator->setObjectName(); $administrator->save(); $user_password = new ContactPassword(); $user_password->setContactId($administrator->getId()); $user_password->password_temp = $admin_password; $user_password->setPasswordDate(DateTimeValueLib::now()); $user_password->setPassword(cp_encrypt($admin_password, $user_password->getPasswordDate()->getTimestamp())); $user_password->save(); //Add email after save because is needed. $administrator->addEmail(array_var($form_data, 'admin_email'), 'personal', true); //permissions $permission_group = new PermissionGroup(); $permission_group->setName('Account Owner'); $permission_group->setContactId($administrator->getId()); $permission_group->setIsContext(false); $permission_group->setType("permission_groups"); $permission_group->save(); $administrator->setPermissionGroupId($permission_group->getId()); $administrator->save(); $company->setCreatedById($administrator->getId()); $company->setUpdatedById($administrator->getId()); $company->save(); $contact_pg = new ContactPermissionGroup(); $contact_pg->setContactId($administrator->getId()); $contact_pg->setPermissionGroupId($permission_group->getId()); $contact_pg->save(); // tab panel permissions $panels = TabPanels::getEnabled(); foreach ($panels as $panel) { $tpp = new TabPanelPermission(); $tpp->setPermissionGroupId($administrator->getPermissionGroupId()); $tpp->setTabPanelId($panel->getId()); $tpp->save(); } // dimension permissions $dimensions = Dimensions::findAll(); foreach ($dimensions as $dimension) { if ($dimension->getDefinesPermissions()) { $cdp = ContactDimensionPermissions::findOne(array("conditions" => "`permission_group_id` = ".$administrator->getPermissionGroupId()." AND `dimension_id` = ".$dimension->getId())); if (!$cdp instanceof ContactDimensionPermission) { $cdp = new ContactDimensionPermission(); $cdp->setPermissionGroupId($administrator->getPermissionGroupId()); $cdp->setContactDimensionId($dimension->getId()); } $cdp->setPermissionType('allow all'); $cdp->save(); // contact member permisssion entries $members = $dimension->getAllMembers(); foreach ($members as $member) { $ots = DimensionObjectTypeContents::getContentObjectTypeIds($dimension->getId(), $member->getObjectTypeId()); $ots[]=$member->getObjectId(); foreach ($ots as $ot) { $cmp = ContactMemberPermissions::findOne(); if (!$cmp instanceof ContactMemberPermission) { $cmp = new ContactMemberPermission(array("conditions" => "`permission_group_id` = ".$administrator->getPermissionGroupId()." AND `member_id` = ".$member->getId()." AND `object_type_id` = $ot")); $cmp->setPermissionGroupId($administrator->getPermissionGroupId()); $cmp->setMemberId($member->getId()); $cmp->setObjectTypeId($ot); } $cmp->setCanWrite(1); $cmp->setCanDelete(1); $cmp->save(); } } } } // system permissions $sp = new SystemPermission(); $sp->setPermissionGroupId($administrator->getPermissionGroupId()); $sp->setAllPermissions(true); $sp->save(); Hook::fire('after_user_add', $administrator, $null); DB::commit(); $this->redirectTo('access', 'login'); } catch(Exception $e) { tpl_assign('error', $e); DB::rollback(); } // try } // if } // complete_installation
/** * Save object. If object is searchable this function will add content of searchable fields * to search index * * @param void * @return boolean */ function save() { $disk_space_used = config_option('disk_space_used'); if ($disk_space_used && $disk_space_used > config_option('disk_space_max')) { throw new Exception(lang('maximum disk space reached')); } // Insert into base table $this->setObjectTypeId($this->manager()->getObjectTypeId()); if ($this->getObject()->save()) { $id = $this->getObject()->getId(); if (is_numeric($id)) { $this->setObjectId($id); } else { throw new Exception(lang('unable to save')); } if (config_option('getting_started_step') < 98) { if (in_array($this->getObjectTypeName(), array('task', 'message', 'weblink', 'file', 'expense', 'objective', 'event'))) { set_config_option('getting_started_step', 98); evt_add('reload tab panel', 'more-panel'); } } parent::save(); return true; } return false; }
<?php include_once '../../include/db.php'; include_once '../../include/general.php'; include_once '../../include/authenticate.php'; include_once '../../include/config_functions.php'; // Set success to false if there is an expected error // You can provide feedback to the user by adding a message $response['success'] = true; $response['message'] = ''; $autosave_option_name = getvalescaped('autosave_option_name', ''); $autosave_option_value = getvalescaped('autosave_option_value', ''); if (getval('autosave', '') === 'true' && !set_config_option($userref, $autosave_option_name, $autosave_option_value)) { $response['success'] = false; } echo json_encode($response); exit;