package org.infosec.ismp.applet.manager.utilities;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import java.util.Vector;
import org.infosec.ismp.agent.comm.winsensor.model.status.LocalSystemStatus;
import org.infosec.ismp.agent.comm.winsensor.model.status.WinsensorClientStatus;
import org.infosec.ismp.applet.manager.component.panel.info.file.FileElement;
import org.infosec.ismp.applet.manager.component.panel.progress.Process;
import org.infosec.ismp.applet.manager.component.panel.view.asset.AssetDevice;
import org.infosec.ismp.applet.manager.component.panel.view.device.DeviceInfo;
import org.infosec.ismp.applet.manager.component.panel.view.network.NetworkStatus;
import org.infosec.ismp.applet.manager.component.panel.view.sensor.Sensor;
import org.infosec.ismp.applet.manager.model.NodeModel;
import org.infosec.ismp.manager.rmi.snmp.model.host.HardDiskStatus;
import org.infosec.ismp.manager.rmi.snmp.model.host.InterfaceStatus;
import org.infosec.ismp.manager.rmi.snmp.model.host.PartitionStatus;
import org.infosec.ismp.manager.rmi.snmp.model.host.ProcessStatus;
import org.infosec.ismp.manager.rmi.snmp.model.host.ProcessesStatus;
import org.infosec.ismp.manager.rmi.tm.manager.model.DeviceInformation;
import twaver.Element;
import twaver.Node;
/**
* 过滤网络空信息
*/
public class NullFilter{
private NodeModel device;
private DeviceInformation info;
/**
* <p>构造方法: 构造一个一般 信息读取类</p>
* <p>功能描述: 读取一般远程信息</p>
* @param nodeModel 设备的中间模型
*/
public NullFilter(NodeModel device,DeviceInformation info) {
this.device = device;
this.info = info;
}
/**
* 实现资产关联读取信息方法
*/
public AssetDevice getAssetDevice() throws Exception {
org.infosec.ismp.manager.rmi.tm.manager.model.AssetDevice assetInfo = device.getAssetInformation();
if(assetInfo == null) return null;
AssetDevice assetDevice = new AssetDevice();
assetDevice.setDepartment(assetInfo.getDepartment() == null ? "" : assetInfo.getDepartment());
assetDevice.setRegistrationTime(assetInfo.getRegistrationTime() == null ? new Date() : assetInfo.getRegistrationTime());
assetDevice.setStatus(assetInfo.getStatus() == null ? 0 : assetInfo.getStatus());
assetDevice.setStockTime(assetInfo.getStockTime() == null ? new Date() : assetInfo.getStockTime());
assetDevice.setTelephone(assetInfo.getTelephone() == null ? "" : assetInfo.getTelephone());
assetDevice.setUnit(assetInfo.getUnit() == null ? "" : assetInfo.getUnit());
assetDevice.setUser(assetInfo.getUser() == null ? "" : assetInfo.getUser());
assetDevice.setValidityPeriod(assetInfo.getValidityPeriod() == null ? 0 : assetInfo.getValidityPeriod());
return assetDevice;
}
public boolean isHostActive() throws Exception {
if(info.getSnmpDeviceStatus() != null && info.getSnmpDeviceStatus().getHostDeviceStatus() != null && info.getSnmpDeviceStatus().getHostDeviceStatus().isActive()) {
return true;
}
return false;
}
public boolean isOtherNetworkActive() throws Exception {
if(info.getSnmpDeviceStatus() != null && info.getSnmpDeviceStatus().getNetworkDeviceStatus() != null && info.getSnmpDeviceStatus().getNetworkDeviceStatus().isActive()) {
return true;
}
return false;
}
public boolean isSensorActive() throws Exception {
if(info.getHostResource() != null) {
return true;
}
return false;
}
/**
* 实现读取设备信息方法
*/
public DeviceInfo getDeviceInfo() throws Exception {
DeviceInfo deviceInfo = new DeviceInfo();
// if(device.getSnmp() == null)return null;
// deviceInfo.setCompany(device.getSnmp().getCommunity());
deviceInfo.setDeviceName(device.getName());
if(device.getModel() != null) {
deviceInfo.setDeviceModelNum(device.getModel().getName());
}
if(device.getBrand() != null) {
deviceInfo.setDeviceTradeMark(device.getBrand().getMarkName());
}
return deviceInfo;
}
/**
* 获得 Host CPUS 对象集合
* @return
*/
public List<Element> getHostCPUs() {
List<Element> elements = new ArrayList<Element>();
if(info.getSnmpDeviceStatus() == null || info.getSnmpDeviceStatus().getHostDeviceStatus() == null || info.getSnmpDeviceStatus().getHostDeviceStatus().getCpuStatus() == null) {
return elements;
}
int i=0;
for(Integer cpuNum:info.getSnmpDeviceStatus().getHostDeviceStatus().getCpuStatus().getLoads()) {
if(cpuNum == null)continue;
Element c1 = new Node();
c1.setName("cpu"+i);
c1.putChartValue(cpuNum);
elements.add(c1);
i++;
}
return elements;
}
/**
* 内存已使用数
* @return double
*/
public double getHostMemoryUsed() {
double value = 0.0d;
if(info.getSnmpDeviceStatus() == null || info.getSnmpDeviceStatus().getHostDeviceStatus() == null
|| info.getSnmpDeviceStatus().getHostDeviceStatus().getMemoryStatus() == null
|| info.getSnmpDeviceStatus().getHostDeviceStatus().getMemoryStatus().getUsed() == null) {
return value;
}
return info.getSnmpDeviceStatus().getHostDeviceStatus().getMemoryStatus().getUsed();
}
/**
* 内存大小
* @return double
*/
public double getHostMemorySize() {
double value = 0.0d;
if(info.getSnmpDeviceStatus() == null || info.getSnmpDeviceStatus().getHostDeviceStatus() == null
|| info.getSnmpDeviceStatus().getHostDeviceStatus().getMemoryStatus() == null
||info.getSnmpDeviceStatus().getHostDeviceStatus().getMemoryStatus().getSize() == null) {
return value;
}
return info.getSnmpDeviceStatus().getHostDeviceStatus().getMemoryStatus().getSize();
}
/**
* 获得 Host CPUS 对象集合
* @return
*/
public List<Element> getOtherNetworkCPUs() {
List<Element> elements = new ArrayList<Element>();
if(info.getSnmpDeviceStatus() == null || info.getSnmpDeviceStatus().getNetworkDeviceStatus() == null || info.getSnmpDeviceStatus().getNetworkDeviceStatus().getCpuStatus() == null) {
return elements;
}
int i=0;
for(Integer cpuNum:info.getSnmpDeviceStatus().getNetworkDeviceStatus().getCpuStatus().getLoads()) {
if(cpuNum == null)continue;
Element c1 = new Node();
c1.setName("cpu"+i);
c1.putChartValue(cpuNum);
elements.add(c1);
i++;
}
return elements;
}
/**
* 内存已使用数
* @return double
*/
public double getOtherNetworkMemoryUsed() {
double value = 0.0d;
if(info.getSnmpDeviceStatus() == null || info.getSnmpDeviceStatus().getNetworkDeviceStatus() == null
|| info.getSnmpDeviceStatus().getNetworkDeviceStatus().getMemoryStatus() == null
|| info.getSnmpDeviceStatus().getNetworkDeviceStatus().getMemoryStatus().getUsed() == null) {
return value;
}
return info.getSnmpDeviceStatus().getNetworkDeviceStatus().getMemoryStatus().getUsed();
}
/**
* 内存大小
* @return double
*/
public double getOtherNetworkMemorySize() {
double value = 0.0d;
if(info.getSnmpDeviceStatus() == null || info.getSnmpDeviceStatus().getNetworkDeviceStatus() == null
|| info.getSnmpDeviceStatus().getNetworkDeviceStatus().getMemoryStatus() == null
||info.getSnmpDeviceStatus().getNetworkDeviceStatus().getMemoryStatus().getSize() == null) {
return value;
}
return info.getSnmpDeviceStatus().getNetworkDeviceStatus().getMemoryStatus().getSize();
}
/**
* 获得 Sensor CPUS 对象集合
* @return
*/
public List<Element> getSensorCPUs() {
List<Element> elements = new ArrayList<Element>();
if(info.getHostResource() == null || info.getHostResource().getCpuStatus() == null || info.getHostResource().getCpuStatus().getLoads() == null) {
return elements;
}
int i=0;
for(Integer cpuNum:info.getHostResource().getCpuStatus().getLoads()) {
if(cpuNum == null)continue;
Element c1 = new Node();
c1.setName("cpu"+i);
c1.putChartValue(cpuNum);
elements.add(c1);
i++;
}
return elements;
}
/**
* 内存已使用数
* @return double
*/
public double getSensorMemoryUsed() {
double value = 0.0d;
if(info.getHostResource() == null || info.getHostResource().getMemoryStatus() == null
|| info.getHostResource().getMemoryStatus().getUsed() == null) {
return value;
}
return info.getHostResource().getMemoryStatus().getUsed();
}
/**
* 内存大小
* @return double
*/
public double getSensorMemorySize() {
double value = 0.0d;
if(info.getHostResource() == null || info.getHostResource().getMemoryStatus() == null
|| info.getHostResource().getMemoryStatus().getSize() == null) {
return value;
}
return info.getHostResource().getMemoryStatus().getSize();
}
/**
* 硬盘使用值
* @return double
*/
public double getSensorHardDiskUsed() {
double value = 0.0d;
if(info.getHostResource() == null || info.getHostResource().getHardDiskStatus() == null
|| info.getHostResource().getHardDiskStatus().size() == 0
|| info.getHostResource().getHardDiskStatus().get(0).getUsed() == null) {
return value;
}
return info.getHostResource().getHardDiskStatus().get(0).getUsed();
}
/**
* 硬盘大小
* @return double
*/
public double getSensorHardDiskSize() {
double value = 0.0d;
if(info.getHostResource() == null || info.getHostResource().getHardDiskStatus() == null
|| info.getHostResource().getHardDiskStatus().size() == 0
|| info.getHostResource().getHardDiskStatus().get(0).getSize() == null) {
return value;
}
return info.getHostResource().getHardDiskStatus().get(0).getSize();
}
/**
* 硬盘使用值
* @return double
*/
public double getHostHardDiskUsed() {
double value = 0.0d;
if(info.getSnmpDeviceStatus() == null || info.getSnmpDeviceStatus().getHostDeviceStatus() == null
|| info.getSnmpDeviceStatus().getHostDeviceStatus().getHardDiskStatus() == null
|| info.getSnmpDeviceStatus().getHostDeviceStatus().getHardDiskStatus().getUsed() == null) {
return value;
}
HardDiskStatus hardDiskStatus = info.getSnmpDeviceStatus().getHostDeviceStatus().getHardDiskStatus();
return hardDiskStatus.getUsed();
}
/**
* 硬盘大小
* @return double
*/
public double getHostHardDiskSize() {
double value = 0.0d;
if(info.getSnmpDeviceStatus() == null || info.getSnmpDeviceStatus().getHostDeviceStatus() == null
|| info.getSnmpDeviceStatus().getHostDeviceStatus().getHardDiskStatus() == null
|| info.getSnmpDeviceStatus().getHostDeviceStatus().getHardDiskStatus().getSize() == null) {
return value;
}
HardDiskStatus hardDiskStatus = info.getSnmpDeviceStatus().getHostDeviceStatus().getHardDiskStatus();
return hardDiskStatus.getSize();
}
/**
* 获取硬盘主机分区情况
* @return List<FileElement>
*/
public List<FileElement> getHostFileElements() {
List<FileElement> files = new ArrayList<FileElement>();
if(info.getSnmpDeviceStatus() == null || info.getSnmpDeviceStatus().getHostDeviceStatus() == null || info.getSnmpDeviceStatus().getHostDeviceStatus().getHardDiskStatus() == null) {
return files;
}
HardDiskStatus hardDiskStatus = info.getSnmpDeviceStatus().getHostDeviceStatus().getHardDiskStatus();
PartitionStatus[] partition = null;
partition = hardDiskStatus.getPartitionStatus();
if(partition == null) return files;
for(PartitionStatus p : partition) {
FileElement fileElement = new FileElement(p.getUsed(), (p.getSize()-p.getUsed()));
files.add(fileElement);
}
return files;
}
/**
* 获取硬盘Sensor分区情况
* @return List<FileElement>
*/
public List<FileElement> getSensorFileElements() {
List<FileElement> files = new ArrayList<FileElement>();
if(info.getHostResource() == null || info.getHostResource().getHardDiskStatus() == null) {
return files;
}
List<org.infosec.ismp.agent.comm.winsensor.model.status.HardDiskStatus> hardDiskStatus = info.getHostResource().getHardDiskStatus();
for(org.infosec.ismp.agent.comm.winsensor.model.status.HardDiskStatus p : hardDiskStatus) {
FileElement fileElement = new FileElement(p.getUsed(), (p.getSize()-p.getUsed()));
files.add(fileElement);
}
return files;
}
//
// /**
// * 实现读取阈值信息方法
// */
// public List<Monitor> getMonitorsAll() throws Exception {
// MonitorManager monitor = new MonitorManager();
// return monitor.getRows(device.getDeviceId());
// }
/**
* 实现读取主机网络接口信息方法
*/
public List<NetworkStatus> getHostNetworkStatusAll() throws Exception {
List<NetworkStatus> statusList = new Vector<NetworkStatus>();
if(info.getSnmpDeviceStatus() == null || info.getSnmpDeviceStatus().getHostDeviceStatus() == null || info.getSnmpDeviceStatus().getHostDeviceStatus().getNetworkStatus() == null) return statusList;
org.infosec.ismp.manager.rmi.snmp.model.host.NetworkStatus networkStatus = info.getSnmpDeviceStatus().getHostDeviceStatus().getNetworkStatus();
if(networkStatus == null || networkStatus.getInterfaceStatus() == null) return statusList;
InterfaceStatus[] interfacestatus = networkStatus.getInterfaceStatus();
for(int i = 0; interfacestatus != null && i < interfacestatus.length; i++) {
if(interfacestatus[i] == null) continue;
//NetworkStatus networkStatu = new NetworkStatus("接口 "+(i+1));
NetworkStatus networkStatu = new NetworkStatus(interfacestatus[i].getDescription());
networkStatu.setDescription(interfacestatus[i].getDescription() == null ? "" : interfacestatus[i].getDescription());
networkStatu.setInBytes(interfacestatus[i].getInBytes() == null ? 0L : interfacestatus[i].getInBytes());
networkStatu.setInPackets(interfacestatus[i].getInPackets() == null ? 0L : interfacestatus[i].getInPackets());
networkStatu.setIpAddress(interfacestatus[i].getIpAddress() == null ? "" : interfacestatus[i].getIpAddress());
networkStatu.setNetMask(interfacestatus[i].getNetMask() == null ? "" : interfacestatus[i].getNetMask());
networkStatu.setOutBytes(interfacestatus[i].getOutBytes() == null ? 0L : interfacestatus[i].getOutBytes());
networkStatu.setOutPackets(interfacestatus[i].getOutPackets() == null ? 0L : interfacestatus[i].getOutPackets());
networkStatu.setPhysicalAddress(interfacestatus[i].getPhysicalAddress() == null ? "" : interfacestatus[i].getPhysicalAddress());
networkStatu.setSpeed(interfacestatus[i].getSpeed() == null ? 0L : interfacestatus[i].getSpeed());
statusList.add(networkStatu);
}
return statusList;
}
/**
* 实现读取其它网络接口信息方法
*/
public List<NetworkStatus> getOtherNetworkStatusAll() throws Exception {
List<NetworkStatus> statusList = new Vector<NetworkStatus>();
if(info.getSnmpDeviceStatus() == null || info.getSnmpDeviceStatus().getNetworkDeviceStatus() == null || info.getSnmpDeviceStatus().getNetworkDeviceStatus().getNetworkStatus() == null) return statusList;
org.infosec.ismp.manager.rmi.snmp.model.host.NetworkStatus networkStatus = info.getSnmpDeviceStatus().getNetworkDeviceStatus().getNetworkStatus();
if(networkStatus == null || networkStatus.getInterfaceStatus() == null) return statusList;
InterfaceStatus[] interfacestatus = networkStatus.getInterfaceStatus();
for(int i = 0; interfacestatus != null && i < interfacestatus.length; i++) {
if(interfacestatus[i] == null) continue;
//NetworkStatus networkStatu = new NetworkStatus("接口 "+(i+1));
NetworkStatus networkStatu = new NetworkStatus(interfacestatus[i].getDescription());
networkStatu.setDescription(interfacestatus[i].getDescription() == null ? "" : interfacestatus[i].getDescription());
networkStatu.setInBytes(interfacestatus[i].getInBytes() == null ? 0L : interfacestatus[i].getInBytes());
networkStatu.setInPackets(interfacestatus[i].getInPackets() == null ? 0L : interfacestatus[i].getInPackets());
networkStatu.setIpAddress(interfacestatus[i].getIpAddress() == null ? "" : interfacestatus[i].getIpAddress());
networkStatu.setNetMask(interfacestatus[i].getNetMask() == null ? "" : interfacestatus[i].getNetMask());
networkStatu.setOutBytes(interfacestatus[i].getOutBytes() == null ? 0L : interfacestatus[i].getOutBytes());
networkStatu.setOutPackets(interfacestatus[i].getOutPackets() == null ? 0L : interfacestatus[i].getOutPackets());
networkStatu.setPhysicalAddress(interfacestatus[i].getPhysicalAddress() == null ? "" : interfacestatus[i].getPhysicalAddress());
networkStatu.setSpeed(interfacestatus[i].getSpeed() == null ? 0L : interfacestatus[i].getSpeed());
statusList.add(networkStatu);
}
return statusList;
}
/**
* 实现读取Sensor网络接口信息方法
*/
public List<NetworkStatus> getSensorNetworkStatusAll() throws Exception {
List<NetworkStatus> statusList = new Vector<NetworkStatus>();
if(info.getHostResource() == null || info.getHostResource().getNetworkStatus() == null ) return statusList;
List<org.infosec.ismp.agent.comm.winsensor.model.status.NetworkStatus> networkStatus = info.getHostResource().getNetworkStatus();
for(org.infosec.ismp.agent.comm.winsensor.model.status.NetworkStatus interfacestatus:networkStatus) {
if(interfacestatus == null) continue;
//NetworkStatus networkStatu = new NetworkStatus("接口 "+(i+1));
NetworkStatus networkStatu = new NetworkStatus(interfacestatus.getDescription());
networkStatu.setDescription(interfacestatus.getDescription() == null ? "" : interfacestatus.getDescription());
networkStatu.setInBytes(interfacestatus.getRecBytesPreSec() == null ? 0L : interfacestatus.getRecBytesPreSec());
networkStatu.setInPackets(interfacestatus.getRecPacket() == null ? 0L : interfacestatus.getRecPacket());
networkStatu.setIpAddress(interfacestatus.getIpAddress() == null ? "" : interfacestatus.getIpAddress().toString());
networkStatu.setNetMask(interfacestatus.getMac() == null ? "" : interfacestatus.getMac());
networkStatu.setOutBytes(interfacestatus.getSendBytesPreSec() == null ? 0L : interfacestatus.getSendBytesPreSec());
networkStatu.setOutPackets(interfacestatus.getSendPacket() == null ? 0L : interfacestatus.getSendPacket());
statusList.add(networkStatu);
}
return statusList;
}
/**
* 实现读主机取线程信息方法
*/
public List<Process> getHostProcessAll() throws Exception {
List<Process> processList = new ArrayList<Process>();
if(info.getSnmpDeviceStatus() == null ||info.getSnmpDeviceStatus().getHostDeviceStatus()==null) return processList;
if(info.getSnmpDeviceStatus().getHostDeviceStatus().getProcessesStatus() == null) return processList;
ProcessesStatus processes = info.getSnmpDeviceStatus().getHostDeviceStatus().getProcessesStatus();
if(processes == null) return processList;
for (ProcessStatus statu:processes.getProcessStatus()) {
Process process = new Process();
process.setProcessName(statu.getName() == null ? "" : statu.getName());
process.setProcessDesciption(statu.getDescription() == null ? "" : statu.getDescription());
process.setProcessRunPath(statu.getRunPath() == null ? "" : statu.getRunPath());
process.setProcessMemory(statu.getAllocatedMemorySize() == null ? 0L : statu.getAllocatedMemorySize());
process.setProcessCpuTime(statu.getConsumedCPUTime() == null ? 0L : statu.getConsumedCPUTime());
processList.add(process);
}
return processList;
}
/**
* 实现读主机取线程信息方法
*/
public List<Process> getSensorProcessAll() throws Exception {
List<Process> processList = new ArrayList<Process>();
if(info.getHostResource() == null ||info.getHostResource().getProcessStatus()==null) return processList;
List<org.infosec.ismp.agent.comm.winsensor.model.status.ProcessStatus> processes = info.getHostResource().getProcessStatus();
if(processes == null) return processList;
for (org.infosec.ismp.agent.comm.winsensor.model.status.ProcessStatus statu:processes) {
Process process = new Process();//statu.getPid()
process.setProcessName(statu.getName() == null ? "" : statu.getName());
process.setProcessDesciption(statu.getDescription() == null ? "" : statu.getDescription());
process.setProcessRunPath(statu.getRunPath() == null ? "" : statu.getRunPath());
process.setProcessMemory(statu.getAllocatedMemorySize() == null ? 0L : statu.getAllocatedMemorySize());
process.setProcessCpuTime(statu.getConsumedCPUTime() == null ? 0L : statu.getConsumedCPUTime());
processList.add(process);
}
return processList;
}
/**
* 实现读取Sensor信息方法
*/
public Sensor getSensor() throws Exception {
Sensor sensor = new Sensor();
if(info == null || device.getSensor() == null || info.getHostResource()== null ) return sensor;
LocalSystemStatus local = info.getHostResource().getLocalSystemlStatus();
WinsensorClientStatus client = info.getHostResource().getWinsensorClientStatus();
sensor.setSensorIP(device.getIpAddress());
sensor.setSensorId(device.getSensor().getSensorId() == null ? "" : device.getSensor().getSensorId());
if(local != null) {
sensor.setSysConfigDesc(local.getPhyInfo());
sensor.setSysDesc(local.getDescription());
sensor.setSysName(local.getComputerName());
sensor.setSysInfo(local.getOsInfo());
sensor.setRegInfo(local.getRegistry());
sensor.setWorkSpaceName(local.getDomain());
}
if(client != null) {
sensor.setUpdateURL(client.getAutoUpdateUrl());
sensor.setSensorLocalPath(client.getAutoUpdateUrl());
sensor.setSensorServVersion(client.getServiceVersion());
sensor.setVistion(client.getVersion());
}
return sensor;
}
public NodeModel getDevice() {
return device;
}
public void setInfo(DeviceInformation info) {
this.info = info;
}
}