mirror of
https://github.com/librenms/librenms.git
synced 2024-10-07 16:52:45 +00:00
Added add_device api call
This commit is contained in:
@ -51,6 +51,9 @@ $app->group('/api', function() use ($app) {
|
|||||||
$app->group('/list', function() use ($app) {
|
$app->group('/list', function() use ($app) {
|
||||||
$app->get('/devices(/:order)(/:type)(/)', 'authToken', 'list_devices');//api/v1/list/devices (order can be any device column) (types = all, ignored, up, down, disabled)
|
$app->get('/devices(/:order)(/:type)(/)', 'authToken', 'list_devices');//api/v1/list/devices (order can be any device column) (types = all, ignored, up, down, disabled)
|
||||||
});
|
});
|
||||||
|
$app->group('/add', function() use ($app) {
|
||||||
|
$app->post('/device(/)', 'authToken', 'add_device');//api/v1/add/device (json data needs to be passed)
|
||||||
|
});
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
|
@ -233,3 +233,68 @@ function list_devices()
|
|||||||
$app->response->headers->set('Content-Type', 'application/json');
|
$app->response->headers->set('Content-Type', 'application/json');
|
||||||
echo json_encode($output);
|
echo json_encode($output);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function add_device()
|
||||||
|
{
|
||||||
|
// This will add a device using the data passed encoded with json
|
||||||
|
global $config;
|
||||||
|
$app = \Slim\Slim::getInstance();
|
||||||
|
$data = json_decode(file_get_contents('php://input'), true);
|
||||||
|
// Default status to error and change it if we need to.
|
||||||
|
$status = "error";
|
||||||
|
if(empty($data))
|
||||||
|
{
|
||||||
|
$message = "No information has been provided to add this new device";
|
||||||
|
}
|
||||||
|
elseif(empty($data["hostname"]))
|
||||||
|
{
|
||||||
|
$message = "Missing the device hostname";
|
||||||
|
}
|
||||||
|
$hostname = $data['hostname'];
|
||||||
|
if ($data['port']) { $port = mres($data['port']); } else { $port = $config['snmp']['port']; }
|
||||||
|
if ($data['transport']) { $transport = mres($data['transport']); } else { $transport = "udp"; }
|
||||||
|
if($data['version'] == "v1" || $data['version'] == "v2c")
|
||||||
|
{
|
||||||
|
if ($data['community'])
|
||||||
|
{
|
||||||
|
$config['snmp']['community'] = array($data['community']);
|
||||||
|
}
|
||||||
|
$snmpver = mres($data['version']);
|
||||||
|
}
|
||||||
|
elseif($data['version'] == 'v3')
|
||||||
|
{
|
||||||
|
$v3 = array (
|
||||||
|
'authlevel' => mres($data['authlevel']),
|
||||||
|
'authname' => mres($data['authname']),
|
||||||
|
'authpass' => mres($data['authpass']),
|
||||||
|
'authalgo' => mres($data['authalgo']),
|
||||||
|
'cryptopass' => mres($data['cryptopass']),
|
||||||
|
'cryptoalgo' => mres($data['cryptoalgo']),
|
||||||
|
);
|
||||||
|
|
||||||
|
array_push($config['snmp']['v3'], $v3);
|
||||||
|
$snmpver = "v3";
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
$message = "You haven't specified an SNMP version to use";
|
||||||
|
}
|
||||||
|
if(empty($message))
|
||||||
|
{
|
||||||
|
require_once("functions.php");
|
||||||
|
$result = addHost($hostname, $snmpver, $port, $transport, 1);
|
||||||
|
if($result)
|
||||||
|
{
|
||||||
|
$status = 'ok';
|
||||||
|
$message = 'Device has been added successfully';
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
$messge = "Failed adding $hostname";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
$output = array("status" => $status, "message" => $message);
|
||||||
|
$app->response->headers->set('Content-Type', 'application/json');
|
||||||
|
echo json_encode($output);
|
||||||
|
}
|
||||||
|
@ -252,7 +252,7 @@ function delete_device($id)
|
|||||||
return $ret;
|
return $ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
function addHost($host, $snmpver, $port = '161', $transport = 'udp')
|
function addHost($host, $snmpver, $port = '161', $transport = 'udp', $quiet = '0')
|
||||||
{
|
{
|
||||||
global $config;
|
global $config;
|
||||||
|
|
||||||
@ -297,7 +297,7 @@ function addHost($host, $snmpver, $port = '161', $transport = 'udp')
|
|||||||
foreach ($config['snmp']['v3'] as $v3)
|
foreach ($config['snmp']['v3'] as $v3)
|
||||||
{
|
{
|
||||||
$device = deviceArray($host, NULL, $snmpver, $port, $transport, $v3);
|
$device = deviceArray($host, NULL, $snmpver, $port, $transport, $v3);
|
||||||
print_message("Trying v3 parameters " . $v3['authname'] . "/" . $v3['authlevel'] . " ... ");
|
if($quiet == '0') { print_message("Trying v3 parameters " . $v3['authname'] . "/" . $v3['authlevel'] . " ... "); }
|
||||||
if (isSNMPable($device))
|
if (isSNMPable($device))
|
||||||
{
|
{
|
||||||
$snmphost = snmp_get($device, "sysName.0", "-Oqv", "SNMPv2-MIB");
|
$snmphost = snmp_get($device, "sysName.0", "-Oqv", "SNMPv2-MIB");
|
||||||
@ -306,10 +306,10 @@ function addHost($host, $snmpver, $port = '161', $transport = 'udp')
|
|||||||
$device_id = createHost ($host, NULL, $snmpver, $port, $transport, $v3);
|
$device_id = createHost ($host, NULL, $snmpver, $port, $transport, $v3);
|
||||||
return $device_id;
|
return $device_id;
|
||||||
} else {
|
} else {
|
||||||
print_error("Given hostname does not match SNMP-read hostname ($snmphost)!");
|
if($quiet == '0') {print_error("Given hostname does not match SNMP-read hostname ($snmphost)!"); }
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
print_error("No reply on credentials " . $v3['authname'] . "/" . $v3['authlevel'] . " using $snmpver");
|
if($quiet == '0') {print_error("No reply on credentials " . $v3['authname'] . "/" . $v3['authlevel'] . " using $snmpver"); }
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -319,7 +319,7 @@ function addHost($host, $snmpver, $port = '161', $transport = 'udp')
|
|||||||
foreach ($config['snmp']['community'] as $community)
|
foreach ($config['snmp']['community'] as $community)
|
||||||
{
|
{
|
||||||
$device = deviceArray($host, $community, $snmpver, $port, $transport, NULL);
|
$device = deviceArray($host, $community, $snmpver, $port, $transport, NULL);
|
||||||
print_message("Trying community $community ...");
|
if($quiet == '0') { print_message("Trying community $community ..."); }
|
||||||
if (isSNMPable($device))
|
if (isSNMPable($device))
|
||||||
{
|
{
|
||||||
$snmphost = snmp_get($device, "sysName.0", "-Oqv", "SNMPv2-MIB");
|
$snmphost = snmp_get($device, "sysName.0", "-Oqv", "SNMPv2-MIB");
|
||||||
@ -328,32 +328,34 @@ function addHost($host, $snmpver, $port = '161', $transport = 'udp')
|
|||||||
$device_id = createHost ($host, $community, $snmpver, $port, $transport);
|
$device_id = createHost ($host, $community, $snmpver, $port, $transport);
|
||||||
return $device_id;
|
return $device_id;
|
||||||
} else {
|
} else {
|
||||||
print_error("Given hostname does not match SNMP-read hostname ($snmphost)!");
|
if($quiet == '0') { print_error("Given hostname does not match SNMP-read hostname ($snmphost)!"); }
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
print_error("No reply on community $community using $snmpver");
|
if($quiet == '0') { print_error("No reply on community $community using $snmpver"); }
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
print_error("Unsupported SNMP Version \"$snmpver\".");
|
if($quiet == '0') { print_error("Unsupported SNMP Version \"$snmpver\"."); }
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!$device_id)
|
if (!$device_id)
|
||||||
{
|
{
|
||||||
// Failed SNMP
|
// Failed SNMP
|
||||||
print_error("Could not reach $host with given SNMP community using $snmpver");
|
if($quiet == '0') { print_error("Could not reach $host with given SNMP community using $snmpver"); }
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
// failed Reachability
|
// failed Reachability
|
||||||
print_error("Could not ping $host"); }
|
if($quiet == '0') { print_error("Could not ping $host"); }
|
||||||
|
}
|
||||||
} else {
|
} else {
|
||||||
// Failed DNS lookup
|
// Failed DNS lookup
|
||||||
print_error("$host looks like an IP address, please use FQDN"); }
|
if($quiet == '0') { print_error("$host looks like an IP address, please use FQDN"); }
|
||||||
|
}
|
||||||
} else {
|
} else {
|
||||||
// found in database
|
// found in database
|
||||||
print_error("Already got host $host");
|
if($quiet == '0') { print_error("Already got host $host"); }
|
||||||
}
|
}
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
|
Reference in New Issue
Block a user