netmonitor/NetMonitorUtils/NetworkSetter.cs

264 lines
14 KiB
C#
Raw Normal View History

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using BlubbFish.Utils;
namespace NetMonitorUtils
{
public class NetworkSetter : OwnObject
{
private ServiceControl serviceController;
private InIReader networkini;
private enum netsetterType
{
Auto,
IpAuto,
Ip,
DnsAuto,
Dns,
WinsAuto,
Wins
}
public NetworkSetter(string networkfile, string configfile)
{
this.addLog("NetworkSetter", "networkfile: " + networkfile + "; configfile: " + configfile + ";", LogLevel.Debug);
this.serviceController = ServiceControl.getInstance(configfile);
this.networkini = InIReader.getInstance(networkfile);
}
public bool setNetwork(string networkName)
{
2015-03-04 23:21:34 +01:00
this.addLog("NetworkSetter.setNetwork", "Setze Netzwerkeinstellungen: " + networkName, LogLevel.Info);
this.addLog("NetworkSetter.setNetwork", "networkName: " + networkName + ";", LogLevel.Debug);
String name = networkini.getValue(networkName, "Name");
String ip = networkini.getValue(networkName, "Ip");
String subnet = networkini.getValue(networkName, "Subnet");
String gateway = networkini.getValue(networkName, "Gateway");
String dns = networkini.getValue(networkName, "Dns");
String wins = networkini.getValue(networkName, "Wins");
String adapter = networkini.getValue(networkName, "Adapter");
2015-03-04 23:21:34 +01:00
this.addLog("NetworkSetter.setNetwork", "name: " + name, LogLevel.Debug);
this.addLog("NetworkSetter.setNetwork", "ip: " + ip, LogLevel.Debug);
this.addLog("NetworkSetter.setNetwork", "subnet: " + subnet, LogLevel.Debug);
this.addLog("NetworkSetter.setNetwork", "gateway: " + gateway, LogLevel.Debug);
this.addLog("NetworkSetter.setNetwork", "dns: " + dns, LogLevel.Debug);
this.addLog("NetworkSetter.setNetwork", "wins: " + wins, LogLevel.Debug);
this.addLog("NetworkSetter.setNetwork", "adapter: " + adapter, LogLevel.Debug);
bool ret = false;
if (ip.ToLower() == "auto" && dns.ToLower() == "auto" && wins.ToLower() == "auto")
{
ret = setNetworkAuto(adapter, name);
2015-03-04 23:21:34 +01:00
this.addLog("NetworkSetter.setNetwork.setNetworkAuto", "return " + ret, LogLevel.Debug);
}
else
{
if (ip.ToLower() == "auto")
{
ret = setNetworkIpAuto(adapter, name);
2015-03-04 23:21:34 +01:00
this.addLog("NetworkSetter.setNetwork.setNetworkIpAuto", "return " + ret, LogLevel.Debug);
}
else
{
ret = setNetworkIp(ip, subnet, gateway, adapter, name);
2015-03-04 23:21:34 +01:00
this.addLog("NetworkSetter.setNetwork.setNetworkIp", "return " + ret, LogLevel.Debug);
}
if (dns.ToLower() == "auto")
{
ret = setNetworkDnsAuto(adapter, name);
2015-03-04 23:21:34 +01:00
this.addLog("NetworkSetter.setNetwork.setNetworkDnsAuto", "return " + ret, LogLevel.Debug);
}
else
{
ret = setNetworkDns(dns, adapter, name);
2015-03-04 23:21:34 +01:00
this.addLog("NetworkSetter.setNetwork.setNetworkDns", "return " + ret, LogLevel.Debug);
}
if (wins.ToLower() == "auto")
{
ret = setNetworkWinsAuto(adapter, name);
2015-03-04 23:21:34 +01:00
this.addLog("NetworkSetter.setNetwork.setNetworkWinsAuto", "return " + ret, LogLevel.Debug);
}
else
{
ret = setNetworkWins(wins, adapter, name);
2015-03-04 23:21:34 +01:00
this.addLog("NetworkSetter.setNetwork.setNetworkWins", "return " + ret, LogLevel.Debug);
}
}
2015-03-04 23:21:34 +01:00
this.addLog("NetworkSetter.setNetwork", "return " + ret, LogLevel.Debug);
return ret;
}
public bool setNetworkAuto(string adapter, string name)
{
2015-03-04 23:21:34 +01:00
this.addLog("NetworkSetter.setNetworkAuto", "Setze Netzwerkeinstellungen von " + adapter + " auf Automatisch", LogLevel.Info);
this.addLog("NetworkSetter.setNetworkAuto", "datapter: " + adapter + "; name: " + name + ";", LogLevel.Debug);
return setNetwork(netsetterType.Auto, null, null, null, adapter, name, null, null);
}
public bool setNetworkIpAuto(string adapter, string name)
{
2015-03-04 23:21:34 +01:00
this.addLog("NetworkSetter.setNetworkIpAuto", "Setze Netzwerkeinstellungen von " + adapter + " auf IP Automatisch", LogLevel.Info);
this.addLog("NetworkSetter.setNetworkIpAuto", "adapter: " + adapter + "; name: " + name + ";", LogLevel.Debug);
return setNetwork(netsetterType.IpAuto, null, null, null, adapter, name, null, null);
}
public bool setNetworkIp(string ip, string subnet, string gateway, string adapter, string name)
{
2015-03-04 23:21:34 +01:00
this.addLog("NetworkSetter.setNetworkIp", "Setze Netzwerkeinstellungen von " + adapter + " auf IP " + ip + "/" + subnet + " GW " + gateway, LogLevel.Info);
this.addLog("NetworkSetter.setNetworkIp", "ip: " + ip + "; subnet: " + subnet + "; gateway: " + gateway + "; adapter: " + adapter + "; name: " + name + ";", LogLevel.Debug);
return setNetwork(netsetterType.Ip, ip, subnet, gateway, adapter, name, null, null);
}
public bool setNetworkDnsAuto(string adapter, string name)
{
2015-03-04 23:21:34 +01:00
this.addLog("NetworkSetter.setNetworkDnsAuto", "Setze Netzwerkeinstellungen von " + adapter + " auf Dns Automatisch", LogLevel.Info);
this.addLog("NetworkSetter.setNetworkDnsAuto", "adapter: " + adapter + "; name: " + name + ";", LogLevel.Debug);
return setNetwork(netsetterType.DnsAuto, null, null, null, adapter, name, null, null);
}
public bool setNetworkDns(string dns, string adapter, string name)
{
2015-03-04 23:21:34 +01:00
this.addLog("NetworkSetter.setNetworkDns", "Setze Netzwerkeinstellungen von " + adapter + " auf Dns " + dns, LogLevel.Info);
this.addLog("NetworkSetter.setNetworkDns", "dns: " + dns + "; adapter: " + adapter + "; name: " + name + ";", LogLevel.Debug);
return setNetwork(netsetterType.Dns, null, null, null, adapter, name, dns, null);
}
public bool setNetworkWinsAuto(string adapter, string name)
{
2015-03-04 23:21:34 +01:00
this.addLog("NetworkSetter.setNetworkWinsAuto", "Setze Netzwerkeinstellungen von " + adapter + " auf Wins Automatisch", LogLevel.Info);
this.addLog("NetworkSetter.setNetworkWinsAuto", "adapter: " + adapter + "; name: " + name + ";", LogLevel.Debug);
return setNetwork(netsetterType.WinsAuto, null, null, null, adapter, name, null, null);
}
public bool setNetworkWins(string wins, string adapter, string name)
{
2015-03-04 23:21:34 +01:00
this.addLog("NetworkSetter.setNetworkWins", "Setze Netzwerkeinstellungen von " + adapter + " auf Wins " + wins, LogLevel.Info);
this.addLog("NetworkSetter.setNetworkWins", "wins: " + wins + "; adapter: " + adapter + "; name: " + name + ";", LogLevel.Debug);
return setNetwork(netsetterType.Wins, null, null, null, adapter, name, null, wins);
}
private bool setNetwork(netsetterType option, string ip, string subnet, string gateway, string adapter, string name, string dns, string wins)
{
2015-03-04 23:21:34 +01:00
this.addLog("NetworkSetter.setNetwork", "option: " + option + "; ip: " + ip + "; subnet: " + subnet + "; gateway: " + gateway + "; adapter: " + adapter + "; name: " + name + "; dns: " + dns + "; wins: " + wins + ";", LogLevel.Debug);
bool status = false;
try
{
if (option == netsetterType.Ip)
{
this.addLog("ServiceController.NetworkSetIp", "ip: "+ip+"; subnet: "+subnet+"; gateway: "+gateway+"; adapter: "+adapter+";", LogLevel.Debug);
status = this.serviceController.NetworkSetIp(ip, subnet, gateway, adapter);
}
if (option == netsetterType.Auto)
{
this.addLog("ServiceController.NetworkSetAuto", "adapter: "+adapter+";", LogLevel.Debug);
status = this.serviceController.NetworkSetAuto(adapter);
}
if (option == netsetterType.IpAuto)
{
this.addLog("ServiceController.NetworkSetIpAuto", "adapter: "+adapter+";", LogLevel.Debug);
status = this.serviceController.NetworkSetIpAuto(adapter);
}
if (option == netsetterType.DnsAuto)
{
this.addLog("ServiceController.NetworkSetDnsAuto", "adapter: "+adapter+";", LogLevel.Debug);
status = this.serviceController.NetworkSetDnsAuto(adapter);
}
if (option == netsetterType.WinsAuto)
{
this.addLog("ServiceController.NetworkSetWinsAuto", "adapter: "+adapter+";", LogLevel.Debug);
status = this.serviceController.NetworkSetWinsAuto(adapter);
}
if (option == netsetterType.Dns)
{
this.addLog("ServiceController.NetworkSetDNS", "dns: "+dns+"; adapter: "+adapter+";", LogLevel.Debug);
status = this.serviceController.NetworkSetDNS(dns, adapter);
}
if (option == netsetterType.Wins)
{
this.addLog("ServiceController.NetworkSetWINS", "wins: "+wins+"; adapter: "+adapter+";", LogLevel.Debug);
status = this.serviceController.NetworkSetWINS(wins, adapter);
}
}
catch (Exception e)
{
2015-03-04 23:21:34 +01:00
this.addLog("NetworkSetter.setNetwork", "Fehler beim Ausführen des Befehls: " + e.Message, LogLevel.Error);
throw e;
}
return status;
}
2015-03-04 23:21:34 +01:00
public Dictionary<String, String> getNetwork(List<string> adapters)
{
this.addLog("NetworkSetter.getNetwork", "Hole Netzwerkeinstellungen für alle Adapter", LogLevel.Info);
this.addLog("NetworkSetter.getNetwork", "adapter: "+adapters+";", LogLevel.Debug);
Dictionary<String, String> ret = new Dictionary<String, String>();
foreach (string adapter in adapters)
{
2016-01-20 18:22:17 +01:00
String data = "";
try {
data = this.serviceController.NetworkGetName(adapter);
} catch(NetMonitorUtils.Execptions.ServiceControlException e) {
data = "unknown";
this.addLog("NetworkSetter.getNetwork", e.Message, LogLevel.Error);
}
2015-03-04 23:21:34 +01:00
if (data == "unknown")
{
ret.Add(adapter, "unknown");
}
else if (data == "disconnected")
{
ret.Add(adapter, "disconnected");
}
else
{
string[] values = data.Substring(0, data.Length - 1).Substring(1).Split('|');
List<string> networks = this.networkini.getSections();
string selected_network = "";
foreach (string network in networks)
{
if (networkini.getValue(network, "Ip") == values[0])
{
selected_network = network;
}
if (networkini.getValue(network, "Subnet") == values[1] || (values[1] == "" && networkini.getValue(network, "Subnet") == null))
{
if (selected_network != network)
{
selected_network = "";
}
}
if (networkini.getValue(network, "Gateway") == values[2] || (values[2] == "" && networkini.getValue(network, "Gateway") == null))
{
if (selected_network != network)
{
selected_network = "";
}
}
if (networkini.getValue(network, "Dns") == values[3])
{
if (selected_network != network)
{
selected_network = "";
}
}
if (networkini.getValue(network, "Wins") == values[4])
{
if (selected_network != network)
{
selected_network = "";
}
}
}
if (selected_network == "")
{
ret.Add(adapter, "unknown");
}
else
{
ret.Add(adapter, selected_network);
}
}
}
return ret;
}
2015-11-16 01:10:59 +01:00
public List<string> getAdapters() {
return this.serviceController.NetworkGetAdapters();
}
}
}