Id()) { userLogout(); $redirect = '?view=login'; } else { $redirect = '?view=options&tab=users'; } } } else if ( $action == 'options' && isset($_REQUEST['tab']) ) { $result = dbQuery('SELECT Name,Value,Type,`System` FROM Config WHERE Category=? ORDER BY Id ASC', array($_REQUEST['tab'])); if (!$result) { echo mysql_error(); return; } $changed = false; while ($config = dbFetchNext($result)) { unset($newValue); if ( ($config['Type'] == 'boolean') and empty($_REQUEST['newConfig'][$config['Name']]) ) { $newValue = 0; } else if (isset($_REQUEST['newConfig'][$config['Name']])) { $newValue = preg_replace("/\r\n/", "\n", $_REQUEST['newConfig'][$config['Name']]); } if (isset($newValue) && ($newValue != $config['Value'])) { # Handle special cases first if ($config['Name'] == 'ZM_LANG_DEFAULT') { # Verify that the language file exists in the lang directory. if (!file_exists(ZM_PATH_WEB.'/lang/'.$newValue.'.php')) { $error_message .= 'Error setting ' . $config['Name'].'. New value ' .$newValue.' not saved because '.ZM_PATH_WEB.'/lang/'.$newValue.'.php doesn\'t exist.
'; ZM\Error($error_message); continue; } } dbQuery('UPDATE Config SET Value=? WHERE Name=?', array($newValue, $config['Name'])); $changed = true; } # end if value changed } # end foreach config entry if ( $changed ) { ZM\AuditAction('update', 'config', 0, 'Tab: '.$_REQUEST['tab']); switch ( $_REQUEST['tab'] ) { case 'system' : case 'config' : $restartWarning = true; break; case 'API': case 'web' : case 'tools' : break; case 'logging' : case 'network' : case 'mail' : case 'upload' : $restartWarning = true; break; case 'highband' : case 'medband' : case 'lowband' : break; } $redirect = '?view=options&tab='.$_REQUEST['tab']; loadConfig(false); # Might need to update auth hash # This doesn't work because the config are constants and won't really be loaded until the next refresh. #generateAuthHash(ZM_AUTH_HASH_IPS, true); } return; } else if ($action == 'save') { if (isset($_REQUEST['object'])) { if ($_REQUEST['object'] == 'dnsmasq') { $config = isset($_REQUEST['config']) ? $_REQUEST['config'] : []; $conf = ''; foreach ($config as $name=>$value) { if ($name == 'dhcp-host') { foreach ($value as $mac=>$ip) { $conf .= $name.'='.$mac.','.$ip.PHP_EOL; } } else if ($name == 'dhcp-option') { foreach ($value as $option_name=>$option_value) { $conf .= $name.'='.$option_name.','.$option_value.PHP_EOL; } } else if ( ($name == 'bind-interfaces') or ($name == 'dhcp-authoritative') ) { if ($value=='yes') { $conf .= $name.PHP_EOL; } } else if ($name == 'dhcp-range') { $conf .= $name.'='.$value['min'].','.$value['max'].','.$value['expires'].PHP_EOL; } else { if (is_array($value)) { foreach ($value as $v) { } } else { $conf .= $name.'='.$value.PHP_EOL; } } } if (false===file_put_contents(ZM_PATH_DNSMASQ_CONF, $conf)) { ZM\Warning("Failed to writh to ".ZM_PATH_DNSMASQ_CONF); } else { exec('sudo -n /bin/systemctl restart dnsmasq.service'); } exec('sudo -n /bin/systemctl restart dnsmasq.service'); } } } else if ($action == 'start') { if (isset($_REQUEST['object'])) { if ($_REQUEST['object'] == 'dnsmasq') { exec('sudo -n /bin/systemctl start dnsmasq.service', $output, $result); if ($result) { ZM\Warning("Error execing sudo -n /bin/systemctl start dnsmasq.service. Output: ".implode(PHP_EOL, $output)); } else { ZM\Debug("Error execing sudo -n /bin/systemctl start dnsmasq.service. Output: ".implode(PHP_EOL, $output)); } } } } else if ($action == 'stop') { if (isset($_REQUEST['object'])) { if ($_REQUEST['object'] == 'dnsmasq') { exec('sudo -n /bin/systemctl stop dnsmasq.service', $output, $result); if ($result) { ZM\Warning("Error execing sudo -n /bin/systemctl start dnsmasq.service. Output: ".implode(PHP_EOL, $output)); } else { ZM\Debug("Error execing sudo -n /bin/systemctl start dnsmasq.service. Output: ".implode(PHP_EOL, $output)); } } } } else if ($action == 'menuitems') { if (!canEdit('System')) { ZM\Warning('Need System permission to edit menu items'); } else if (isset($_REQUEST['items'])) { require_once('includes/MenuItem.php'); $allItems = ZM\MenuItem::find(); foreach ($allItems as $item) { $id = $item->Id(); $enabled = isset($_REQUEST['items'][$id]['Enabled']) ? 1 : 0; $label = isset($_REQUEST['items'][$id]['Label']) ? trim($_REQUEST['items'][$id]['Label']) : null; $sortOrder = isset($_REQUEST['items'][$id]['SortOrder']) ? intval($_REQUEST['items'][$id]['SortOrder']) : $item->SortOrder(); if ($label === '') $label = null; $iconType = isset($_REQUEST['items'][$id]['IconType']) ? $_REQUEST['items'][$id]['IconType'] : $item->IconType(); if (!in_array($iconType, ['material', 'fontawesome', 'image', 'none'])) $iconType = 'material'; $icon = isset($_REQUEST['items'][$id]['Icon']) ? trim($_REQUEST['items'][$id]['Icon']) : $item->Icon(); if ($icon === '') $icon = null; $item->save([ 'Enabled' => $enabled, 'Label' => $label, 'SortOrder' => $sortOrder, 'Icon' => $icon, 'IconType' => $iconType, ]); } } $redirect = '?view=options&tab=menu'; } else if ($action == 'resetmenu') { if (!canEdit('System')) { ZM\Warning('Need System permission to reset menu items'); } else { dbQuery('DELETE FROM Menu_Items'); dbQuery("INSERT INTO `Menu_Items` (`MenuKey`, `Enabled`, `SortOrder`) VALUES ('Console', 1, 10), ('Montage', 1, 20), ('MontageReview', 1, 30), ('Events', 1, 40), ('Options', 1, 50), ('Log', 1, 60), ('Devices', 1, 70), ('IntelGpu', 1, 80), ('Groups', 1, 90), ('Filters', 1, 100), ('Snapshots', 1, 110), ('Reports', 1, 120), ('ReportEventAudit', 1, 130), ('Map', 1, 140)"); } $redirect = '?view=options&tab=menu'; } // end if object vs action ?>