private static void RescanIPTimerElapsed(object sender, ElapsedEventArgs e)
{
_rescanIPTimer.Stop();
_rescanIPTimer = null;
if (Conf.IPMode == "IPv4")
{
_ipv4Addresses = null;
bool iplisted = false;
foreach (IPAddress ip in AddressListIPv4)
{
if (Conf.IPv4Address == ip.ToString())
iplisted = true;
}
if (!iplisted)
{
_ipv4Address = "";
Conf.IPv4Address = AddressIPv4;
}
if (iplisted)
return;
}
if (!string.IsNullOrEmpty(Conf.WSUsername) && !string.IsNullOrEmpty(Conf.WSPassword))
{
switch (Conf.IPMode)
{
case "IPv4":
Logger.LogErrorToFile("Your IP address has changed. Please set a static IP address for your local computer to ensure uninterrupted connectivity.");
//force reload of ip info
AddressIPv4 = Conf.IPv4Address;
if (Conf.DHCPReroute && Conf.IPMode == "IPv4")
{
//check if IP address has changed
if (Conf.UseUPNP)
{
//change router ports
if (NATControl.SetPorts(Conf.ServerPort, Conf.LANPort))
Logger.LogMessageToFile("Router port forwarding has been updated. (" +
Conf.IPv4Address + ")");
}
else
{
Logger.LogMessageToFile("Please check Use UPNP in web settings to handle this automatically");
}
}
else
{
Logger.LogMessageToFile("Enable DHCP Reroute in Web Settings to handle this automatically");
}
MWS.StopServer();
MWS.StartServer();
WsWrapper.ForceSync();
break;
case "IPv6":
_ipv6Addresses = null;
bool iplisted = false;
foreach (IPAddress ip in AddressListIPv6)
{
if (Conf.IPv6Address == ip.ToString())
iplisted = true;
}
if (!iplisted)
{
Logger.LogErrorToFile(
"Your IP address has changed. Please set a static IP address for your local computer to ensure uninterrupted connectivity.");
_ipv6Address = "";
AddressIPv6 = Conf.IPv6Address;
Conf.IPv6Address = AddressIPv6;
}
break;
}
}
}