/* * private NetworkInterface findNetworkInterface() * { * NetworkInterface[] intfs = NetworkInterface.GetAllNetworkInterfaces(); * foreach (NetworkInterface intf in intfs) * { * //Util.log(string.Format("===== {0}:{1} =====", intf.Name, intf.NetworkInterfaceType)); * * //bypass some interfaces * if (intf.NetworkInterfaceType == NetworkInterfaceType.Loopback) * { * Util.log(string.Format("bypass loopback interface: {0}({1})", intf.Name, intf.Id)); * continue; * } * else if (intf.Name.StartsWith("VMware Network Adapter")) * { * Util.log(string.Format("bypass VMWare virtual interface: {0}({1})", intf.Name, intf.Id)); * continue; * } * else if (intf.OperationalStatus.Equals(OperationalStatus.Down)) * { * Util.log(string.Format("bypass link down interface: {0}({1})", intf.Name, intf.Id)); * continue; * } else if (Util.hasLinkLocalIp(intf)) * { * Util.log(string.Format("bypass linklocal interface: {0}({1})", intf.Name, intf.Id)); * continue; * } * * return intf; * } * return null; * } */ /// <summary>Start the DHCP server.</summary> public void start() { if (localAddress == null) { dhcpsvr = new DHCPServer(); sendNotify(DhcpNotify.NotifyType.CONTROL, "RTDhcpServer binds to 0.0.0.0"); } else { dhcpsvr = new DHCPServer(localAddress); sendNotify(DhcpNotify.NotifyType.CONTROL, String.Format("RTDhcpServer binds to {0}", localAddress.ToString())); } dhcpsvr.OnDiscover += discoverHandler; dhcpsvr.OnRequest += requestHandler; dhcpsvr.OnReleased += releaseHandler; dhcpsvr.OnDecline += declineHandler; dhcpsvr.OnInform += informHandler; //dhcpsvr.SendDhcpAnswerNetworkInterface = intf; dhcpsvr.BroadcastAddress = IPAddress.Broadcast; dhcpsvr.Start(); state = STATE_RUNNING; sendNotify(DhcpNotify.NotifyType.CONTROL, "RTDhcpServer is running."); }
static void Main(string[] args) { var server = new DHCPServer(); server.ServerName = "SharpDHCPServer"; server.OnDataReceived += Request; server.BroadcastAddress = IPAddress.Parse("192.168.1.255"); server.Start(); Console.WriteLine("Running DHCP server. Press enter to stop it."); Console.ReadLine(); server.Dispose(); }
static void Main(string[] args) { var lst = NetworkInterface.GetAllNetworkInterfaces(); var eth0If = NetworkInterface.GetAllNetworkInterfaces().FirstOrDefault(x => x.Name == "USB_ETH"); var server = new DHCPServer(); server.ServerName = "SharpDHCPServer"; server.OnDataReceived += Request; server.BroadcastAddress = IPAddress.Broadcast; server.SendDhcpAnswerNetworkInterface = eth0If; server.Start(); Console.WriteLine("Running DHCP server. Press enter to stop it."); Console.ReadLine(); server.Dispose(); }
static void Main(string[] args) { var server = new DHCPServer(); server.OnDHCPDiscover += new DHCPServer.DHCPProcessDelegate(async(discovery, localEndPoint, remoteEndPoint) => { return(await GenerateLease(discovery, localEndPoint, remoteEndPoint)); }); server.OnDHCPRequest += new DHCPServer.DHCPProcessDelegate(async(discovery, localEndPoint, remoteEndPoint) => { return(await GenerateLease(discovery, localEndPoint, remoteEndPoint)); }); Task.Factory.StartNew(() => { server.Start(); }); Thread.Sleep(600000); }
//Based on ClusterM's Sharp-DHCP-Server //Credit and thanks goes to ClusterM, and jogibear9988 public void Run(IBackgroundTaskInstance taskInstance) { var server = new DHCPServer(new System.Net.IPAddress(new byte[] { 192, 168, 137, 1 })); server.ServerName = "sharpDHCPWifiToEthernet"; server.BroadcastAddress = IPAddress.Broadcast.ToString(); BackgroundTaskDeferral deferral = taskInstance.GetDeferral(); taskInstance.Canceled += (o, e) => { server.Dispose(); deferral.Complete(); }; server.OnDataReceived += (sender, dhcpRequest) => { try { var type = dhcpRequest.GetMsgType(); var ip = new System.Net.IPAddress(new byte[] { 192, 168, 137, 11 }); var replyOptions = new DHCPReplyOptions(); replyOptions.SubnetMask = IPAddress.Parse("255.255.255.0"); replyOptions.DomainName = server.ServerName; replyOptions.ServerIdentifier = IPAddress.Parse("192.168.137.1"); replyOptions.RouterIP = IPAddress.Parse("192.168.137.1"); replyOptions.DomainNameServers = new IPAddress[] { IPAddress.Parse("8.8.8.8"), IPAddress.Parse("8.8.4.4") }; if (type == DHCPMsgType.DHCPDISCOVER) { dhcpRequest.SendDHCPReply(DHCPMsgType.DHCPOFFER, ip, replyOptions); } if (type == DHCPMsgType.DHCPREQUEST) { dhcpRequest.SendDHCPReply(DHCPMsgType.DHCPACK, ip, replyOptions); } } catch { } }; server.Start(); }
private void Resurrect(object state) { lock (m_Lock) { if (!m_Disposed) { try { m_Server = new DHCPServer(Program.GetClientInfoPath(m_Config.Name, m_Config.Address)); m_Server.EndPoint = new IPEndPoint(IPAddress.Parse(m_Config.Address), 67); m_Server.SubnetMask = IPAddress.Parse(m_Config.NetMask); m_Server.PoolStart = IPAddress.Parse(m_Config.PoolStart); m_Server.PoolEnd = IPAddress.Parse(m_Config.PoolEnd); m_Server.LeaseTime = (m_Config.LeaseTime > 0) ? TimeSpan.FromSeconds(m_Config.LeaseTime) : Utils.InfiniteTimeSpan; m_Server.OfferExpirationTime = TimeSpan.FromSeconds(Math.Max(1, m_Config.OfferTime)); m_Server.MinimumPacketSize = m_Config.MinimumPacketSize; List <OptionItem> options = new List <OptionItem>(); foreach (OptionConfiguration optionConfiguration in m_Config.Options) { options.Add(optionConfiguration.ConstructOptionItem()); } m_Server.Options = options; List <ReservationItem> reservations = new List <ReservationItem>(); foreach (ReservationConfiguration reservationConfiguration in m_Config.Reservations) { reservations.Add(reservationConfiguration.ConstructReservationItem()); } m_Server.Reservations = reservations; m_Server.OnStatusChange += server_OnStatusChange; m_Server.OnTrace += server_OnTrace; m_Server.Start(); } catch (Exception) { CleanupAndRetry(); } } } }
public static async void StartServer(string interfaceIp, string targetIp) { Console.WriteLine($"Looking for interface for IP {interfaceIp}"); var intf = NetworkInterface.GetAllNetworkInterfaces() .Where( x => x.GetIPProperties().UnicastAddresses .Any(y => y.Address.Equals(IPAddress.Parse(interfaceIp))) ).FirstOrDefault(); if (intf == null) { Console.WriteLine($"Interface for IP {interfaceIp} not found!"); return; } Console.WriteLine($"Starting DHCP server on interface {intf.Name}"); var server = new DHCPServer(); if (targetIp == null) { var rnd = new Random(); var ip_bytes = interfaceIp.Split("."); var lastByte = int.Parse(ip_bytes[3]); int newByte = rnd.Next(2, 254); while (newByte == lastByte) { newByte = rnd.Next(2, 254); } ip_bytes[3] = newByte.ToString(); targetIp = string.Join(".", ip_bytes); } Console.WriteLine($"Client will receive IP {targetIp}"); server.OnDataReceived += delegate(DHCPRequest dhcpRequest) { Request(dhcpRequest, IPAddress.Parse(targetIp), interfaceIp); }; server.BroadcastAddress = IPAddress.Broadcast; server.SendDhcpAnswerNetworkInterface = intf; server.Start(); Console.WriteLine("Running DHCP server... Press CTRL-C to exit"); await LoadingIndicator(); }
private void Resurrect(object state) { lock (m_Lock) { if (!m_Disposed) { try { m_Server = DHCPServer.FromConfig(m_Config); m_Server.OnStatusChange += server_OnStatusChange; m_Server.OnTrace += server_OnTrace; m_Server.Start(); } catch (Exception) { CleanupAndRetry(); } } } }