mirror of
				https://github.com/librenms/librenms.git
				synced 2024-10-07 16:52:45 +00:00 
			
		
		
		
	refactor: MySQL strict and query fixes (#5338)
* refactor: MySQL strict and query fixes * moved sql file
This commit is contained in:
		
				
					committed by
					
						
						Tony Murray
					
				
			
			
				
	
			
			
			
						parent
						
							3d0cf76e9b
						
					
				
				
					commit
					d5296319fb
				
			@@ -125,7 +125,7 @@ $run      = ($end - $start);
 | 
			
		||||
$proctime = substr($run, 0, 5);
 | 
			
		||||
 | 
			
		||||
if ($discovered_devices) {
 | 
			
		||||
    dbInsert(array('type' => 'discover', 'doing' => $doing, 'start' => $start, 'duration' => $proctime, 'devices' => $discovered_devices), 'perf_times');
 | 
			
		||||
    dbInsert(array('type' => 'discover', 'doing' => $doing, 'start' => $start, 'duration' => $proctime, 'devices' => $discovered_devices, 'poller' => $config['distributed_poller_name']), 'perf_times');
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
$string = $argv[0]." $doing ".date($config['dateformat']['compact'])." - $discovered_devices devices discovered in $proctime secs";
 | 
			
		||||
 
 | 
			
		||||
@@ -206,14 +206,14 @@ function get_userid($username)
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
function deluser($username)
 | 
			
		||||
function deluser($userid)
 | 
			
		||||
{
 | 
			
		||||
    dbDelete('bill_perms', '`user_name` =  ?', array($username));
 | 
			
		||||
    dbDelete('devices_perms', '`user_name` =  ?', array($username));
 | 
			
		||||
    dbDelete('ports_perms', '`user_name` =  ?', array($username));
 | 
			
		||||
    dbDelete('users_prefs', '`user_name` =  ?', array($username));
 | 
			
		||||
    dbDelete('users', '`user_name` =  ?', array($username));
 | 
			
		||||
    return dbDelete('users', '`username` =  ?', array($username));
 | 
			
		||||
    dbDelete('bill_perms', '`user_id` =  ?', array($userid));
 | 
			
		||||
    dbDelete('devices_perms', '`user_id` =  ?', array($userid));
 | 
			
		||||
    dbDelete('ports_perms', '`user_id` =  ?', array($userid));
 | 
			
		||||
    dbDelete('users_prefs', '`user_id` =  ?', array($userid));
 | 
			
		||||
    dbDelete('users', '`user_id` =  ?', array($userid));
 | 
			
		||||
    return dbDelete('users', '`user_id` =  ?', array($userid));
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -197,14 +197,14 @@ function get_userid($username)
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
function deluser($username)
 | 
			
		||||
function deluser($userid)
 | 
			
		||||
{
 | 
			
		||||
    dbDelete('bill_perms', '`user_name` =  ?', array($username));
 | 
			
		||||
    dbDelete('devices_perms', '`user_name` =  ?', array($username));
 | 
			
		||||
    dbDelete('ports_perms', '`user_name` =  ?', array($username));
 | 
			
		||||
    dbDelete('users_prefs', '`user_name` =  ?', array($username));
 | 
			
		||||
    dbDelete('users', '`user_name` =  ?', array($username));
 | 
			
		||||
    return dbDelete('users', '`username` =  ?', array($username));
 | 
			
		||||
    dbDelete('bill_perms', '`user_id` =  ?', array($userid));
 | 
			
		||||
    dbDelete('devices_perms', '`user_id` =  ?', array($userid));
 | 
			
		||||
    dbDelete('ports_perms', '`user_id` =  ?', array($userid));
 | 
			
		||||
    dbDelete('users_prefs', '`user_id` =  ?', array($userid));
 | 
			
		||||
    dbDelete('users', '`user_id` =  ?', array($userid));
 | 
			
		||||
    return dbDelete('users', '`user_id` =  ?', array($userid));
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -139,15 +139,15 @@ function get_userid($username)
 | 
			
		||||
}//end get_userid()
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
function deluser($username)
 | 
			
		||||
function deluser($userid)
 | 
			
		||||
{
 | 
			
		||||
    dbDelete('bill_perms', '`user_name` =  ?', array($username));
 | 
			
		||||
    dbDelete('devices_perms', '`user_name` =  ?', array($username));
 | 
			
		||||
    dbDelete('ports_perms', '`user_name` =  ?', array($username));
 | 
			
		||||
    dbDelete('users_prefs', '`user_name` =  ?', array($username));
 | 
			
		||||
    dbDelete('users', '`user_name` =  ?', array($username));
 | 
			
		||||
    dbDelete('bill_perms', '`user_id` =  ?', array($userid));
 | 
			
		||||
    dbDelete('devices_perms', '`user_id` =  ?', array($userid));
 | 
			
		||||
    dbDelete('ports_perms', '`user_id` =  ?', array($userid));
 | 
			
		||||
    dbDelete('users_prefs', '`user_id` =  ?', array($userid));
 | 
			
		||||
    dbDelete('users', '`user_id` =  ?', array($userid));
 | 
			
		||||
 | 
			
		||||
    return dbDelete('users', '`username` =  ?', array($username));
 | 
			
		||||
    return dbDelete('users', '`user_id` =  ?', array($userid));
 | 
			
		||||
}//end deluser()
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -94,14 +94,14 @@ function get_userid($username)
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
function deluser($username)
 | 
			
		||||
function deluser($userid)
 | 
			
		||||
{
 | 
			
		||||
    dbDelete('bill_perms', '`user_name` =  ?', array($username));
 | 
			
		||||
    dbDelete('devices_perms', '`user_name` =  ?', array($username));
 | 
			
		||||
    dbDelete('ports_perms', '`user_name` =  ?', array($username));
 | 
			
		||||
    dbDelete('users_prefs', '`user_name` =  ?', array($username));
 | 
			
		||||
    dbDelete('users', '`user_name` =  ?', array($username));
 | 
			
		||||
    return dbDelete('users', '`username` =  ?', array($username));
 | 
			
		||||
    dbDelete('bill_perms', '`user_id` =  ?', array($userid));
 | 
			
		||||
    dbDelete('devices_perms', '`user_id` =  ?', array($userid));
 | 
			
		||||
    dbDelete('ports_perms', '`user_id` =  ?', array($userid));
 | 
			
		||||
    dbDelete('users_prefs', '`user_id` =  ?', array($userid));
 | 
			
		||||
    dbDelete('users', '`user_id` =  ?', array($userid));
 | 
			
		||||
    return dbDelete('users', '`user_id` =  ?', array($userid));
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -22,7 +22,7 @@ if (!is_numeric($_POST['alert_id'])) {
 | 
			
		||||
    exit;
 | 
			
		||||
} else {
 | 
			
		||||
    if (dbDelete('alert_rules', '`id` =  ?', array($_POST['alert_id']))) {
 | 
			
		||||
        if (dbDelete('alert_map', 'rule = ?', array($_POST['alert_id'])) || dbFetchCell('COUNT(id) FROM alert_map WHERE rule = ?', array($_POST['alert_id'])) == 0) {
 | 
			
		||||
        if (dbDelete('alert_map', 'rule = ?', array($_POST['alert_id'])) || dbFetchCell('SELECT COUNT(*) FROM alert_map WHERE rule = ?', array($_POST['alert_id'])) == 0) {
 | 
			
		||||
            echo 'Maps has been deleted.';
 | 
			
		||||
        } else {
 | 
			
		||||
            echo 'WARNING: Maps could not be deleted.';
 | 
			
		||||
 
 | 
			
		||||
@@ -14,7 +14,7 @@ if ($_SESSION['userlevel'] < 10 || $_SESSION['userlevel'] > 10) {
 | 
			
		||||
            $delete_username = dbFetchCell('SELECT username FROM users WHERE user_id = ?', array($vars['id']));
 | 
			
		||||
 | 
			
		||||
            if ($vars['confirm'] == 'yes') {
 | 
			
		||||
                if (deluser($delete_username)) {
 | 
			
		||||
                if (deluser($vars['id']) >= 0) {
 | 
			
		||||
                    print_message('<div class="infobox">User "'.$delete_username.'" deleted!');
 | 
			
		||||
                } else {
 | 
			
		||||
                    print_error('Error deleting user "'.$delete_username.'"!');
 | 
			
		||||
 
 | 
			
		||||
@@ -26,7 +26,7 @@ if ($_POST['editing']) {
 | 
			
		||||
 | 
			
		||||
        #FIXME needs more sanity checking! and better feedback
 | 
			
		||||
 | 
			
		||||
        $param = array('purpose' => $vars['descr'], 'type' => $vars['type'], 'ignore' => $vars['ignore'], 'disabled' => $vars['disabled']);
 | 
			
		||||
        $param = array('purpose' => $vars['descr'], 'type' => $vars['type'], 'ignore' => set_numeric($vars['ignore']), 'disabled' => set_numeric($vars['disabled']));
 | 
			
		||||
 | 
			
		||||
        $rows_updated = dbUpdate($param, 'devices', '`device_id` = ?', array($device['device_id']));
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -1557,3 +1557,16 @@ function load_all_os($restricted = array())
 | 
			
		||||
        $config['os'][$tmp['os']] = $tmp;
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * @param $value
 | 
			
		||||
 * @param int $default
 | 
			
		||||
 * @return int
 | 
			
		||||
 */
 | 
			
		||||
function set_numeric($value, $default = 0)
 | 
			
		||||
{
 | 
			
		||||
    if (!isset($value) || !is_numeric($value)) {
 | 
			
		||||
        $value = $default;
 | 
			
		||||
    }
 | 
			
		||||
    return $value;
 | 
			
		||||
}
 | 
			
		||||
 
 | 
			
		||||
@@ -178,6 +178,11 @@ function discover_device($device, $options = null)
 | 
			
		||||
 | 
			
		||||
function discover_sensor(&$valid, $class, $device, $oid, $index, $type, $descr, $divisor = '1', $multiplier = '1', $low_limit = null, $low_warn_limit = null, $warn_limit = null, $high_limit = null, $current = null, $poller_type = 'snmp', $entPhysicalIndex = null, $entPhysicalIndex_measured = null)
 | 
			
		||||
{
 | 
			
		||||
 | 
			
		||||
    if (!is_numeric($divisor)) {
 | 
			
		||||
        $divisor  = 1;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    d_echo("Discover sensor: $oid, $index, $type, $descr, $poller_type, $precision, $entPhysicalIndex\n");
 | 
			
		||||
 | 
			
		||||
    if (is_null($low_warn_limit) && !is_null($warn_limit)) {
 | 
			
		||||
 
 | 
			
		||||
@@ -1322,6 +1322,12 @@ function fping($host, $params, $address_family = AF_INET)
 | 
			
		||||
        $rcv = 1;
 | 
			
		||||
        $loss = 100;
 | 
			
		||||
    }
 | 
			
		||||
    $xmt      = set_numeric($xmt);
 | 
			
		||||
    $rcv      = set_numeric($rcv);
 | 
			
		||||
    $loss     = set_numeric($loss);
 | 
			
		||||
    $min      = set_numeric($min);
 | 
			
		||||
    $max      = set_numeric($max);
 | 
			
		||||
    $avg      = set_numeric($avg);
 | 
			
		||||
    $response = array('xmt'=>$xmt,'rcv'=>$rcv,'loss'=>$loss,'min'=>$min,'max'=>$max,'avg'=>$avg);
 | 
			
		||||
    return $response;
 | 
			
		||||
}
 | 
			
		||||
 
 | 
			
		||||
@@ -170,10 +170,10 @@ if ($config['enable_bgp']) {
 | 
			
		||||
 | 
			
		||||
            $peer['update']['bgpPeerState']              = $bgpPeerState;
 | 
			
		||||
            $peer['update']['bgpPeerAdminStatus']        = $bgpPeerAdminStatus;
 | 
			
		||||
            $peer['update']['bgpPeerFsmEstablishedTime'] = $bgpPeerFsmEstablishedTime;
 | 
			
		||||
            $peer['update']['bgpPeerInUpdates']          = $bgpPeerInUpdates;
 | 
			
		||||
            $peer['update']['bgpPeerFsmEstablishedTime'] = set_numeric($bgpPeerFsmEstablishedTime);
 | 
			
		||||
            $peer['update']['bgpPeerInUpdates']          = set_numeric($bgpPeerInUpdates);
 | 
			
		||||
            $peer['update']['bgpLocalAddr']              = $bgpLocalAddr;
 | 
			
		||||
            $peer['update']['bgpPeerOutUpdates']         = $bgpPeerOutUpdates;
 | 
			
		||||
            $peer['update']['bgpPeerOutUpdates']         = set_numeric($bgpPeerOutUpdates);
 | 
			
		||||
 | 
			
		||||
            dbUpdate($peer['update'], 'bgpPeers', '`device_id` = ? AND `bgpPeerIdentifier` = ?', array($device['device_id'], $peer['bgpPeerIdentifier']));
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -41,11 +41,11 @@ foreach (dbFetchRows('SELECT * FROM mempools WHERE device_id = ?', array($device
 | 
			
		||||
                        );
 | 
			
		||||
 | 
			
		||||
    if (!empty($mempool['largestfree'])) {
 | 
			
		||||
        $mempool['state']['mempool_largestfree'] = $mempool['largestfree'];
 | 
			
		||||
        $mempool['state']['mempool_largestfree'] = set_numeric($mempool['largestfree']);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    if (!empty($mempool['lowestfree'])) {
 | 
			
		||||
        $mempool['state']['mempool_lowestfree'] = $mempool['lowestfree'];
 | 
			
		||||
        $mempool['state']['mempool_lowestfree'] = set_numeric($mempool['lowestfree']);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    dbUpdate($mempool['state'], 'mempools', '`mempool_id` = ?', array($mempool['mempool_id']));
 | 
			
		||||
 
 | 
			
		||||
@@ -120,7 +120,7 @@ foreach ($vrfs_lite_cisco as $vrf_lite) {
 | 
			
		||||
                    // Loop the OIDs
 | 
			
		||||
                    if ($ospf_instance_db[$device['context_name']][$oid] != $ospf_instance_poll[$oid]) {
 | 
			
		||||
                        // If data has changed, build a query
 | 
			
		||||
                        $ospf_instance_update[$oid] = $ospf_instance_poll[$oid];
 | 
			
		||||
                        $ospf_instance_update[$oid] = set_numeric($ospf_instance_poll[$oid]);
 | 
			
		||||
                        // log_event("$oid -> ".$this_port[$oid], $device, 'ospf', $port['port_id']); // FIXME
 | 
			
		||||
                    }
 | 
			
		||||
                }
 | 
			
		||||
@@ -252,7 +252,7 @@ foreach ($vrfs_lite_cisco as $vrf_lite) {
 | 
			
		||||
                    // Loop the OIDs
 | 
			
		||||
                    if ($ospf_port_db[$device['context_name']][$oid] != $ospf_port_poll[$oid]) {
 | 
			
		||||
                        // If data has changed, build a query
 | 
			
		||||
                        $ospf_port_update[$oid] = $ospf_port_poll[$oid];
 | 
			
		||||
                        $ospf_port_update[$oid] = set_numeric($ospf_port_poll[$oid]);
 | 
			
		||||
                        // log_event("$oid -> ".$this_port[$oid], $device, 'ospf', $port['port_id']); // FIXME
 | 
			
		||||
                    }
 | 
			
		||||
                }
 | 
			
		||||
@@ -340,7 +340,7 @@ foreach ($vrfs_lite_cisco as $vrf_lite) {
 | 
			
		||||
 | 
			
		||||
                    if ($ospf_nbr_db[$device['context_name']][$oid] != $ospf_nbr_poll[$oid]) {
 | 
			
		||||
                        // If data has changed, build a query
 | 
			
		||||
                        $ospf_nbr_update[$oid] = $ospf_nbr_poll[$oid];
 | 
			
		||||
                        $ospf_nbr_update[$oid] = set_numeric($ospf_nbr_poll[$oid]);
 | 
			
		||||
                        // log_event("$oid -> ".$this_nbr[$oid], $device, 'ospf', $nbr['port_id']); // FIXME
 | 
			
		||||
                    }
 | 
			
		||||
                }
 | 
			
		||||
 
 | 
			
		||||
@@ -548,7 +548,7 @@ foreach ($ports as $port) {
 | 
			
		||||
            }
 | 
			
		||||
 | 
			
		||||
            if ($config['slow_statistics'] == true) {
 | 
			
		||||
                $port[$port_update][$oid]         = $this_port[$oid];
 | 
			
		||||
                $port[$port_update][$oid]         = set_numeric($this_port[$oid]);
 | 
			
		||||
                $port[$port_update][$oid.'_prev'] = $port[$oid];
 | 
			
		||||
            }
 | 
			
		||||
 | 
			
		||||
@@ -695,6 +695,7 @@ foreach ($ports as $port) {
 | 
			
		||||
            if (!isset($val_check)) {
 | 
			
		||||
                unset($port['update'][$key]);
 | 
			
		||||
            }
 | 
			
		||||
            $port['update'][$key] = set_numeric($val_check);
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        // Update Database
 | 
			
		||||
 
 | 
			
		||||
@@ -43,7 +43,7 @@ function add_service($device, $type, $desc, $ip = 'localhost', $param = "", $ign
 | 
			
		||||
        $ip = $device['hostname'];
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    $insert = array('device_id' => $device['device_id'], 'service_ip' => $ip, 'service_type' => $type, 'service_changed' => array('UNIX_TIMESTAMP(NOW())'), 'service_desc' => $desc, 'service_param' => $param, 'service_ignore' => $ignore, 'service_status' => 3, 'service_message' => 'Service not yet checked');
 | 
			
		||||
    $insert = array('device_id' => $device['device_id'], 'service_ip' => $ip, 'service_type' => $type, 'service_changed' => array('UNIX_TIMESTAMP(NOW())'), 'service_desc' => $desc, 'service_param' => $param, 'service_ignore' => $ignore, 'service_status' => 3, 'service_message' => 'Service not yet checked', 'service_ds' => '{}');
 | 
			
		||||
    return dbInsert($insert, 'services');
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -91,7 +91,7 @@ function CollectData($bill_id)
 | 
			
		||||
            $port_data['out_delta'] = '0';
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        $fields = array('timestamp' => $now, 'in_counter' => $port_data['in_measurement'], 'out_counter' => $port_data['out_measurement'], 'in_delta' => $port_data['in_delta'], 'out_delta' => $port_data['out_delta']);
 | 
			
		||||
        $fields = array('timestamp' => $now, 'in_counter' => set_numeric($port_data['in_measurement']), 'out_counter' => set_numeric($port_data['out_measurement']), 'in_delta' => set_numeric($port_data['in_delta']), 'out_delta' => set_numeric($port_data['out_delta']));
 | 
			
		||||
        if (dbUpdate($fields, 'bill_port_counters', "`port_id`='" . mres($port_id) . "' AND `bill_id`='$bill_id'") == 0) {
 | 
			
		||||
            $fields['bill_id'] = $bill_id;
 | 
			
		||||
            $fields['port_id'] = $port_id;
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										2
									
								
								sql-schema/154.sql
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										2
									
								
								sql-schema/154.sql
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,2 @@
 | 
			
		||||
ALTER TABLE `devices` CHANGE `ip` `ip` VARBINARY(16) NULL DEFAULT NULL;
 | 
			
		||||
ALTER TABLE `alert_log` CHANGE `details` `details` LONGBLOB NULL DEFAULT NULL;
 | 
			
		||||
		Reference in New Issue
	
	Block a user