4 +-------------------------------------------------------------------------+
5 | Copyright (C) 2015 Freeside Internet Services |
7 | This program is free software; you can redistribute it and/or |
8 | modify it under the terms of the GNU General Public License |
9 | as published by the Free Software Foundation; either version 2 |
10 | of the License, or (at your option) any later version. |
12 | This program is distributed in the hope that it will be useful, |
13 | but WITHOUT ANY WARRANTY; without even the implied warranty of |
14 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
15 | GNU General Public License for more details. |
16 +-------------------------------------------------------------------------+
17 | Copy this file to the cli directory of your Cacti installation, which |
18 | should also contain an add_device.php script. Give this file the same |
19 | permissions as add_device.php, and configure your Freeside installation |
20 | with the location of that directory and the name of a user who has |
21 | permission to read these files. See the FS::part_export::cacti docs |
23 +-------------------------------------------------------------------------+
26 /* do NOT run this script through a web browser */
27 if (!isset($_SERVER["argv"][0]) || isset($_SERVER['REQUEST_METHOD']) || isset($_SERVER['REMOTE_ADDR'])) {
28 die("<br><strong>This script is only meant to run at the command line.</strong>");
31 /* We are not talking to the browser */
32 $no_http_headers = true;
35 Currently, only drop-device is actually being used by Freeside integration,
36 but keeping commented out code for potential future development.
39 include(dirname(__FILE__)."/../site/include/global.php");
40 include_once($config["base_path"]."/lib/api_device.php");
43 include_once($config["base_path"]."/lib/api_automation_tools.php");
44 include_once($config["base_path"]."/lib/api_data_source.php");
45 include_once($config["base_path"]."/lib/api_graph.php");
46 include_once($config["base_path"]."/lib/functions.php");
49 /* process calling arguments */
53 // $delete_graphs = FALSE;
54 $parms = $_SERVER["argv"];
57 foreach($parms as $parameter) {
58 @list($arg, $value) = @explode("=", $parameter);
61 $action = 'drop-device';
65 $action = 'get-device';
67 case "--get-graph-templates":
68 $action = 'get-graph-templates';
74 case "--host-template":
75 $host_template = trim($value);
78 case "--delete-graphs":
79 $delete_graphs = TRUE;
88 die("ERROR: Invalid Argument: ($arg)");
95 /* Now take an action */
98 $host_id = host_id($ip);
100 if ($delete_graphs) {
101 // code copied & pasted from version 0.8.8a
102 // cacti/site/lib/host.php and cacti/site/graphs.php
103 // unfortunately no api function for this yet
104 $graphs = db_fetch_assoc("select
105 graph_local.id as local_graph_id
107 where graph_local.host_id=" . $host_id);
108 if (sizeof($graphs) > 0) {
109 foreach ($graphs as $graph) {
110 $data_sources = array_rekey(db_fetch_assoc("SELECT data_template_data.local_data_id
111 FROM (data_template_rrd, data_template_data, graph_templates_item)
112 WHERE graph_templates_item.task_item_id=data_template_rrd.id
113 AND data_template_rrd.local_data_id=data_template_data.local_data_id
114 AND graph_templates_item.local_graph_id=" . $graph["local_graph_id"] . "
115 AND data_template_data.local_data_id > 0"), "local_data_id", "local_data_id");
116 if (sizeof($data_sources)) {
117 api_data_source_remove_multi($data_sources);
119 api_graph_remove($graph["local_graph_id"]);
124 api_device_remove($host_id);
125 if (host_id($ip,1)) {
126 die("Failed to remove hostname $ip");
133 case "get-graph-templates":
134 if (!$host_template) {
135 die("No host template specified");
137 $graphs = getGraphTemplatesByHostTemplate($host_template);
138 if (sizeof($graphs)) {
139 foreach (array_keys($graphs) as $gtid) {
144 die("No graph templates associated with this host template");
147 die("Specified action not found, contact a developer");
150 function default_die() {
151 return "Cacti interface for freeside. Do not use for anything else.";
154 function host_id($ip_address, $nodie=0) {
156 die("No hostname specified");
159 $query = "select id from host";
160 $query .= " where hostname='$ip_address'";
161 $devices = db_fetch_assoc($query);
162 if (sizeof($devices) > 1) {
163 // This should never happen, just being thorough
164 die("Multiple devices found for hostname $ip_address");
165 } else if (!sizeof($devices)) {
169 die("Could not find hostname $ip_address");
172 return $devices[0]['id'];