diff --git a/src/opnsense/mvc/app/controllers/OPNsense/Diagnostics/Api/NetworkinsightController.php b/src/opnsense/mvc/app/controllers/OPNsense/Diagnostics/Api/NetworkinsightController.php index 691121ee6..4fe397e95 100644 --- a/src/opnsense/mvc/app/controllers/OPNsense/Diagnostics/Api/NetworkinsightController.php +++ b/src/opnsense/mvc/app/controllers/OPNsense/Diagnostics/Api/NetworkinsightController.php @@ -169,6 +169,24 @@ class NetworkinsightController extends ApiControllerBase return array(); } + /** + * get metadata from backend aggregation process + * @return array timeseries + */ + public function getMetadataAction() + { + if ($this->request->isGet()) { + $backend = new Backend(); + $configd_cmd = "netflow aggregate metadata json"; + $response = $backend->configdRun($configd_cmd); + $metadata = json_decode($response, true); + if ($metadata != null) { + return $metadata; + } + } + return array(); + } + /** * return interface map (device / name) * @return array interfaces @@ -220,4 +238,34 @@ class NetworkinsightController extends ApiControllerBase } return $result; } + + /** + * request timeserie data to use for reporting + * @param string $provider provider class name + * @param string $from_date from timestamp + * @param string $to_date to timestamp + * @param string $resolution resolution in seconds + * @return string csv output + */ + public function exportAction( + $provider = null, + $from_date = null, + $to_date = null, + $resolution = null + ) { + $this->response->setContentType('application/CSV', 'UTF-8'); + $this->response->setHeader( + 'Content-Disposition:', + "Attachment; filename=\"" . $provider . ".csv\"" + ); + if ($this->request->isGet()) { + $backend = new Backend(); + $configd_cmd = "netflow aggregate export {$provider} {$from_date} {$to_date} {$resolution}" ; + $response = $backend->configdRun($configd_cmd); + return $response; + } else { + return ""; + } + + } } diff --git a/src/opnsense/mvc/app/views/OPNsense/Diagnostics/networkinsight.volt b/src/opnsense/mvc/app/views/OPNsense/Diagnostics/networkinsight.volt index 631edd103..bfe20a126 100644 --- a/src/opnsense/mvc/app/views/OPNsense/Diagnostics/networkinsight.volt +++ b/src/opnsense/mvc/app/views/OPNsense/Diagnostics/networkinsight.volt @@ -75,7 +75,27 @@ POSSIBILITY OF SUCH DAMAGE. // fetch service names ajaxGet('/api/diagnostics/networkinsight/getServices',{}, function(services, status) { service_names = services; + // return promise, no need to wait for getMetadata dfObj.resolve(); + // fetch aggregators + ajaxGet('/api/diagnostics/networkinsight/getMetadata',{}, function(metadata, status) { + Object.keys(metadata['aggregators']).forEach(function (agg_name) { + var res = metadata['aggregators'][agg_name]['resolutions'].join(','); + $("#export_collection").append($("