using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Diagnostics; using System.Net; using System.Net.Sockets; namespace NetMonitorServer { class SetNetworks { UdpClient net_send = new UdpClient(); IPEndPoint net_send_port = new IPEndPoint(IPAddress.Parse("127.0.0.1"), 34524); public SetNetworks(string data) { if (data.Substring(0, 8).ToLower() == "net auto") this.setNetworkAuto(data); if (data.Substring(0, 6).ToLower() == "net ip") this.setNetworkIp(data); if (data.Substring(0, 7).ToLower() == "net dns") this.setNetworkDns(data); if (data.Substring(0, 8).ToLower() == "net wins") this.setNetworkWins(data); } private void setNetworkWins(string data) { String[] par = data.Split(' '); if (par.Length != 4) return; bool ret; if (par[2].ToLower() == "auto") ret = this.runProgramNetsh("interface ipv4 set winsservers name=\"" + par[3] + "\" source=dhcp"); else ret = this.runProgramNetsh("interface ipv4 set winsservers \"" + par[3] + "\" static " + par[2]); byte[] answ = Encoding.UTF8.GetBytes(ret.ToString()); net_send.Send(answ, answ.Length, net_send_port); } private void setNetworkDns(string data) { String[] par = data.Split(' '); if (par.Length != 4) return; bool ret; if (par[2].ToLower() == "auto") ret = this.runProgramNetsh("interface ipv4 set dnsservers name=\"" + par[3] + "\" source=dhcp"); else ret = this.runProgramNetsh("interface ipv4 set dnsservers \"" + par[3] + "\" static " + par[2] + " primary"); byte[] answ = Encoding.UTF8.GetBytes(ret.ToString()); net_send.Send(answ, answ.Length, net_send_port); } private void setNetworkIp(string data) { String[] par = data.Split(' '); if (par.Length != 4 && par.Length != 6) return; bool ret; if (par[2].ToLower() == "auto") ret = this.runProgramNetsh("interface ipv4 set address name=\"" + par[3] + "\" source=dhcp"); else ret = this.runProgramNetsh("interface ipv4 set address \"" + par[5] + "\" static " + par[2] + " " + par[3] + " " + par[4]); byte[] answ = Encoding.UTF8.GetBytes(ret.ToString()); net_send.Send(answ, answ.Length, net_send_port); } private void setNetworkAuto(string data) { String[] par = data.Split(' '); if (par.Length != 3) return; byte[] answ; if (this.runProgramNetsh("interface ipv4 set address name=\"" + par[2] + "\" source=dhcp") && this.runProgramNetsh("interface ipv4 set dnsservers name=\"" + par[2] + "\" source=dhcp") && this.runProgramNetsh("interface ipv4 set winsservers name=\"" + par[2] + "\" source=dhcp")) answ = Encoding.UTF8.GetBytes(true.ToString()); else answ = Encoding.UTF8.GetBytes(false.ToString()); net_send.Send(answ, answ.Length, net_send_port); } private bool runProgramNetsh(string args) { Process p = new Process(); p.StartInfo.Arguments = args; p.StartInfo.FileName = "netsh"; p.StartInfo.CreateNoWindow = true; p.StartInfo.RedirectStandardOutput = true; p.StartInfo.UseShellExecute = false; p.Start(); string output = p.StandardOutput.ReadToEnd(); p.WaitForExit(); Console.WriteLine(output.Trim()); if (p.ExitCode == 0) return true; return false; } } }