public void WriteWithHeader_theory(string value, string error, string expected) { using (var stream = new MemoryStream()) { ZabbixProtocol.WriteWithHeader(stream, value, error); var actualBytes = stream.ToArray(); var expectedBytes = Encoding.ASCII.GetBytes(expected); Check.That(actualBytes).ContainsExactly(expectedBytes); } }
private byte[] HandleStationDiscovery() { var jDevice = new JObject(); var datas = new JArray(); for (int i = 0; i < 3; i++) { var data = new JObject(); data["{#NAME}"] = "station" + i; datas.Add(data); } jDevice["data"] = datas; return(ZabbixProtocol.WriteWithHeader(jDevice)); }
private void ReadKeyAndWriteAnswer([NotNull] NetworkStream stream) { var streamReader = new StreamReader(stream); var key = streamReader.ReadLine(); if (key != null) { log.Trace("Received: {0}", key); var valueString = GetItemStringValue(key); log.Trace("Answering: {0}", valueString); ZabbixProtocol.WriteWithHeader(stream, valueString, null); } }
private byte[] HandleItemValue(string itemKey) { switch (itemKey) { case "Name": { return(ZabbixProtocol.WriteWithHeader("Tang Ming")); } case "Percent": { return(ZabbixProtocol.WriteWithHeader("70")); } case "CPU": { var span = (DateTime.Now - oldValue).TotalSeconds; oldValue = DateTime.Now; Console.WriteLine(span); var value = random.Next(30, 90) + ""; return(ZabbixProtocol.WriteWithHeader(value)); } case "Detail": { return(ZabbixProtocol.WriteWithHeader("Hello World!")); } default: { if (itemKey.Contains("station")) { return(GetStationValue(itemKey)); } else if (itemKey.Contains("device")) { return(GetDeviceValue(itemKey)); } else { return(ZabbixProtocol.WriteWithHeader($"{ZabbixConstants.NotSupported}\0Cannot find the item key")); } } } }
private void OnClientConnected(object sender, EventArgs e) { this.Dispatcher.BeginInvoke(new Action(() => { if (client.IsConnected) { if (JData == null) { JObject obj = new JObject(); obj["request"] = "active checks"; obj["host"] = "Dell Laptop"; var sendMsg = ZabbixProtocol.WriteWithHeader(obj); client.Send(sendMsg); } else { JObject obj = new JObject(); obj["request"] = "agent data"; JArray jArray = new JArray(); var data = JData.SelectToken("data") as JArray; foreach (var da in data) { JObject dataObj = new JObject(); dataObj["key"] = da["key"] + ""; dataObj["host"] = "Dell Laptop"; dataObj["value"] = "98"; //dataObj["clock"] = DateTime.Now.Ticks; dataObj["ns"] = 76808644; jArray.Add(dataObj); } obj["data"] = jArray; var sendMsg = ZabbixProtocol.WriteWithHeader(obj); client.Send(sendMsg); } } })); }
//接收客户端消息 private void App_NewRequestReceived(ZabbixSession session, ZabbixRequestInfo requestInfo) { if (appServer != null && appServer.State == ServerState.Running && appServer.SessionCount > 0) { Console.WriteLine($"收到:{requestInfo.Key}, Time:{DateTime.Now:HH:mm:ss}"); switch (requestInfo.Key) { case "agent.ping": { var data = ZabbixProtocol.WriteWithHeader("1"); session.Send(data, 0, data.Length); } break; case "device.discovery": { var data = HandleDeviceDiscovery(); session.Send(data, 0, data.Length); } break; case "station.discovery": { var data = HandleStationDiscovery(); session.Send(data, 0, data.Length); } break; default: { var data = HandleItemValue(requestInfo.Key); session.Send(data, 0, data.Length); } break; } } }
public byte[] GetStationValue(string itemKey) { int index1 = itemKey.IndexOf('['); int index2 = itemKey.IndexOf(']'); string dicKey = itemKey.Substring(index1 + 1, index2 - index1 - 1); if (itemKey.Contains(".ip")) { return(ZabbixProtocol.WriteWithHeader($"192.168.100.1")); } else if (itemKey.Contains(".name")) { return(ZabbixProtocol.WriteWithHeader($"stationName")); } else if (itemKey.Contains(".state")) { return(ZabbixProtocol.WriteWithHeader($"1")); } else if (itemKey.Contains(".errormessage")) { return(ZabbixProtocol.WriteWithHeader($"None")); } return(ZabbixProtocol.WriteWithHeader($"{ZabbixConstants.NotSupported}\0Cannot find the item key")); }