|
||
|
|||||||
| Server Support on Windows Get (and give) support on general questions related to the RunUO server itself. |
![]() |
|
|
Thread Tools | Display Modes |
|
|
#1 (permalink) |
|
Forum Master
Join Date: Feb 2005
Location: ShatteredSosaria.com
Posts: 9,260
|
Code:
Reports: Stats: Loading...done Reports: Staff: Loading...done Address: 127.0.0.1:6118 Address: 192.168.100.107:6118 Client: 127.0.0.1: Connected. [1 Online] Login: 127.0.0.1: Valid credentials for 'Joeku' Client: 127.0.0.1: Disconnecting due to inactivity... Client: 127.0.0.1: Disconnected. [0 Online] [Joeku] I'm using Serverlist 2.2 with the following settings: Code:
// ==================================================================================================================
// ServerList.cs Ver.2.0 Mr.Fixit Version Releases
// ==================================================================================================================
// 1.0 RunUO Beta 36 Initial version
// 1.1 Mr Fixit Now automaticly detects if you are connecting localy and uses the
// servers local ip in the client serverlist.
// 1.2 Mr Fixit Internet IP autodetection using www.whatismyip.com.
// 1.3 Mr Fixit If script fails to find the internet ip, keep the old one and try again in # minutes.
// 1.4 Mr Fixit You can now add AutoIP mirrors. Added whatismyip.com and myip.com.
// 1.5 Mr Fixit Adjusted the AutoIP mirror engine so it supports more mirrors.
// Added findmyip.com and ipaddy.com.
// 1.6 Mr Fixit IP is now trimmed (Just in case). Added simflex.com, edpsciences.com,
// ipid.shat.net and checkip.dyndns.org.
// 1.7 Mr Fixit Removed www.whatismyip.com is it seems to be out of buisness.
// 1.8 Mr Fixit Added a message to the console with ServerList.cs version when server loads.
// Now detects the internet ip when the server starts.
// Now checks if the ip has changed every 60 minutes instead of 30 minutes.
// 1.9 Mr Fixit Removed noip.com mirror as it isnt working anymore.
// 2.0 Mr Fixit Now only renews the ip every 24 hours (1440 minutes).
//===================================================================================================================
// ServerList.cs Ver.2.2 Developer Landry Version Releases
//===================================================================================================================
// 2.1 Developer Landry Its easyer to add multiple servers.
// The Home Server is where you enter the ip/port of the server this script is running on a.k.a the scripts home server.
// Servers/Ports A, B and C are the different values you can enter your multiple servers into.
// All servers that are listed must be running the same corresponding ServerList.cs for the list to work.
// NOTE: BY DEFAULT A. B AND C ARE COMMENTED OUT BY /*EXAMPLE*/ THE OUTSIDE COMMENTS.
// NOTE: ALL SERVERS MUST BE HOSTED BY THE SAME IP ADDRESS
// NOTE: ALL SERVERS MUST BE HOSTED BY DIFFERENT PORTS
// 2.2 Developer Landry Added Account Packet Handler (APH).
// Enables the client to connect to multiple servers.
// Disables client checks allowing the client to login into multiple servers.
// The Disabling also allows the client to login into the same account twice.
// ===================================================================================================================
using System;
using System.Net;
using System.Net.Sockets;
using Server;
using Server.Network;
namespace Server.Misc
{
public class ServerList
{
// ==================================================================================
// YOUR SERVERS NAME
// ==================================================================================
public const string ServerName = "UO Fire"; //Home Server's Name
/*//Server A
public const string ServerNameA = "Server A"; //Server A's Name*/
/*//Server B
public const string ServerNameB = "Server B"; //Server B's Name*/
/*//Server C
public const string ServerNameC = "Server C"; //Server C's Name*/
// ==================================================================================
// YOUR INTERNET IP OR DNS NAME
// Here you can select to autodetect your internet ip, or manualy specify
// Examples:
// public static string Address = "12.34.56.78";
// public static string Address = "shard.host.com";
// ==================================================================================
public const bool InternetIPAutodetect = false;
public const int MinutesBetweenIPAutodetect = 1440;
public static string Address = "joeku.dnsalias.com"; //Home Server's IP
/*//Server A
public static string AddressA = "###.###.#.###"; //Server A's IP
public const int PortA = ####; //Server A's Port*/
/*//Server B
public static string AddressB = "###.###.#.###"; //Server B's IP
public const int PortB = ####; //Server B's Port*/
/*//Server C
public static string AddressB = "###.###.#.###"; //Server C's IP
public const int PortB = ####; //Server C's Port*/
// ==================================================================================
// Here are some values stored
// ==================================================================================
private static LocalLanIPRange[] LocalLanIPRanges = new LocalLanIPRange[10];
private static UInt32 LocalLanIPRangesCount;
private static AutoIPMirror[] AutoIPMirrors = new AutoIPMirror[10];
private static UInt32 AutoIPMirrorsCount;
private static DateTime InternetIPAutodetectLast;
// ==================================================================================
// Initialization
// ==================================================================================
public static void Initialize()
{
// ----------------------------------------------------
// Select what home port to use
// ----------------------------------------------------
Listener.Port = 6118; //Home Server's Port
Any ideas? |
|
|
|
|
|
#2 (permalink) |
|
Forum Master
Join Date: Feb 2005
Location: ShatteredSosaria.com
Posts: 9,260
|
Alright I did that but the same problem still arises.
The only thing I can think of that I changed, that would affect this, is that I installed a second ethernet card in my PC. I disabled the connection but I may have to completely remove the drivers... I'll try that now. |
|
|
|
|
|
#4 (permalink) |
|
Account Terminated
Join Date: Jul 2006
Location: Behind You
Age: 16
Posts: 386
|
This happens to me to when my laptop goes on standby, but i think it is because i was inactive lol. So when you8 log in it just sits there frozen untill you disconnect? is your ip address set to null; in serverlist.cs?
|
|
|
|
|
|
#5 (permalink) |
|
Forum Master
Join Date: Feb 2005
Location: ShatteredSosaria.com
Posts: 9,260
|
OKAY I'M PULLING MY HAIRS OUT NOW!!! I have to have my shard finished by next week or I lose my host... and now I can't even test scripts.
I have:
Code:
RunUO - [www.runuo.com] Version 2.0, Build 2560.30402 Core: Running on .NET Framework Version 2.0.50727 Scripts: Compiling C# scripts...done (0 errors, 0 warnings) Scripts: Compiling VB.NET scripts...no files found. Scripts: Verifying...done (2101 items, 498 mobiles) Regions: Loading...Invalid region type 'Knives.Chat3.Jail' in regions.xml Invalid region type 'Knives.Chat3.Jail' in regions.xml done World: Loading...done (0 items, 0 mobiles) (0.12 seconds) Serverlist.cs: 2.0 Time System: Calculated managed lights list and found 0 lights. Time System: Loading complete. Time System: The time is 9:32 AM on day 20 of month 4 of year 100. The moon is waning third. This server has no accounts. Do you want to create the owner account now? (y/n) Username: Joeku Password: ****** Account created. Reports: Stats: Loading...done Reports: Staff: Loading...done Address: 127.0.0.1:6118 Address: 192.168.100.107:6118 Client: 127.0.0.1: Connected. [1 Online] Login: 127.0.0.1: Valid credentials for 'Joeku' Client: 127.0.0.1: Connected. [2 Online] Login: 127.0.0.1: Account 'Joeku' at character list Client: 127.0.0.1: Disconnected. [1 Online] [Joeku] Code:
// ==================================================================================================
// ServerList.cs
// ==================================================================================================
// 1.0 RunUO Beta 36 Initial version
// 1.1 Mr Fixit Now automaticly detects if you are connecting localy and uses the
// servers local ip in the client serverlist.
// 1.2 Mr Fixit Internet IP autodetection using www.whatismyip.com.
// 1.3 Mr Fixit If script fails to find the internet ip, keep the old one and try
// again in # minutes.
// 1.4 Mr Fixit You can now add AutoIP mirrors. Added whatismyip.com and myip.com.
// 1.5 Mr Fixit Adjusted the AutoIP mirror engine so it supports more mirrors.
// Added findmyip.com and ipaddy.com.
// 1.6 Mr Fixit IP is now trimmed (Just in case). Added simflex.com, edpsciences.com,
// ipid.shat.net and checkip.dyndns.org.
// 1.7 Mr Fixit Removed www.whatismyip.com is it seems to be out of buisness.
// 1.8 Mr Fixit Added a message to the console with ServerList.cs version when server loads.
// Now detects the internet ip when the server starts.
// Now checks if the ip has changed every 60 minutes instead of 30 minutes.
// 1.9 Mr Fixit Removed noip.com mirror as it isnt working anymore.
// 2.0 Mr Fixit Now only renews the ip every 24 hours (1440 minutes).
// ==================================================================================================
using System;
using System.Net;
using System.Net.Sockets;
using Server;
using Server.Network;
namespace Server.Misc
{
public class ServerList
{
// ==================================================================================
// YOUR SERVERS NAME
// ==================================================================================
public const string ServerName = "UO Fire";
// ==================================================================================
// YOUR INTERNET IP OR DNS NAME
// Here you can select to autodetect your internet ip, or manualy specify
// Examples:
// public static string Address = "12.34.56.78";
// public static string Address = "shard.host.com";
// ==================================================================================
public const bool InternetIPAutodetect = false;
public const int MinutesBetweenIPAutodetect = 1440;
public static string Address = "127.0.0.1";
// ==================================================================================
// Here are some values stored
// ==================================================================================
private static LocalLanIPRange[] LocalLanIPRanges = new LocalLanIPRange[10];
private static UInt32 LocalLanIPRangesCount;
private static AutoIPMirror[] AutoIPMirrors = new AutoIPMirror[10];
private static UInt32 AutoIPMirrorsCount;
private static DateTime InternetIPAutodetectLast;
// ==================================================================================
// Initialization
// ==================================================================================
public static void Initialize()
{
// ----------------------------------------------------
// Select what port to use
// ----------------------------------------------------
Listener.Port = 6118;
// ----------------------------------------------------
// Load the local LAN ip ranges
// ----------------------------------------------------
AddLocalLANIPRange("10.0.0.0", "10.255.255.255");
AddLocalLANIPRange("192.168.0.0", "192.168.255.255");
AddLocalLANIPRange("172.16.0.0", "172.32.255.255");
AddLocalLANIPRange("169.254.0.0", "169.254.255.255");
// ----------------------------------------------------
// Load the Auto IP mirros
// ----------------------------------------------------
AddAutoIPMirror("http://www.findmyip.com/", "Your IP address is:<br>", "</FONT>");
AddAutoIPMirror("http://www.ipaddy.com/", "Your IP address is: ", "<br>");
AddAutoIPMirror("http://checkip.dyndns.org/", "Current IP Address: ", "</body>");
AddAutoIPMirror("http://ipid.shat.net/iponly/", "<title>", "</title>");
AddAutoIPMirror("http://www.edpsciences.com/htbin/ipaddress", "Your IP address is <B> ", " </B>");
AddAutoIPMirror("http://www2.simflex.com/ip.shtml", "Your IP address is <BR>", "<BR>");
// ----------------------------------------------------
// Create the event
// ----------------------------------------------------
EventSink.ServerList += new ServerListEventHandler( EventSink_ServerList );
// ----------------------------------------------------
// Show info in console
// ----------------------------------------------------
Console.WriteLine("Serverlist.cs: 2.0");
// ----------------------------------------------------
// Lets find internet ip
// ----------------------------------------------------
DetectInternetIP();
}
// ==================================================================================
// Add a range of local lan ips
// ==================================================================================
private static void AddLocalLANIPRange(string RangeFrom, string RangeTo)
{
LocalLanIPRanges[LocalLanIPRangesCount] = new LocalLanIPRange();
LocalLanIPRanges[LocalLanIPRangesCount].RangeFrom = StringIPToUInt32IP(RangeFrom);
LocalLanIPRanges[LocalLanIPRangesCount].RangeTo = StringIPToUInt32IP(RangeTo);
LocalLanIPRangesCount = LocalLanIPRangesCount + 1;
}
// ==================================================================================
// Convert a ip string to a binary unsigned int
// ==================================================================================
private static UInt32 StringIPToUInt32IP(string addr)
{
byte[] byteArray1 = IPAddress.Parse(addr).GetAddressBytes();
byte[] byteArray2 = IPAddress.Parse(addr).GetAddressBytes();
byteArray1[0] = byteArray2[3];
byteArray1[1] = byteArray2[2];
byteArray1[2] = byteArray2[1];
byteArray1[3] = byteArray2[0];
return BitConverter.ToUInt32( byteArray1, 0);
}
// ==================================================================================
// Used to store the local lan ip ranges
// ==================================================================================
private class LocalLanIPRange
{
public UInt32 RangeFrom;
public UInt32 RangeTo;
}
// ==================================================================================
// Add a AutoIP mirror
// ==================================================================================
private static void AddAutoIPMirror(string sURL, string sStart, string sEnd)
{
AutoIPMirrors[AutoIPMirrorsCount] = new AutoIPMirror();
AutoIPMirrors[AutoIPMirrorsCount].sURL = sURL;
AutoIPMirrors[AutoIPMirrorsCount].sStart = sStart;
AutoIPMirrors[AutoIPMirrorsCount].sEnd = sEnd;
AutoIPMirrorsCount = AutoIPMirrorsCount + 1;
}
// ==================================================================================
// Used to store the Auto IP mirrors
// ==================================================================================
private class AutoIPMirror
{
public string sURL;
public string sStart;
public string sEnd;
public UInt32 iFailures;
}
// ==================================================================================
// Detect ip
// ==================================================================================
public static void DetectInternetIP()
{
// ----------------------------------------------------
// Autodetect the Internet IP
// ----------------------------------------------------
if (InternetIPAutodetect) {
DateTime UpdateTime = InternetIPAutodetectLast;
UpdateTime = UpdateTime.AddMinutes(MinutesBetweenIPAutodetect);
if (UpdateTime<DateTime.Now) {
string NewAddress = null;
NewAddress = FindInternetIP();
InternetIPAutodetectLast = DateTime.Now;
if (NewAddress!=null)
{
Address = NewAddress;
}
}
}
}
// ==================================================================================
// The serverlist event
// ==================================================================================
public static void EventSink_ServerList( ServerListEventArgs e )
{
try
{
// ----------------------------------------------------
// Lets find internet ip
// ----------------------------------------------------
DetectInternetIP();
// ----------------------------------------------------
// Find the server ip to use for this user
// ----------------------------------------------------
IPAddress ipAddr = FindMachineIP(e);
// ----------------------------------------------------
// Send serverlist
// ----------------------------------------------------
if (ipAddr != null)
{
e.AddServer( ServerName, new IPEndPoint( ipAddr, Listener.Port ) );
} else {
e.Rejected = true;
}
}
catch
{
e.Rejected = true;
}
}
// ==================================================================================
// Connects to a webserver that gives you your internet ip
// ==================================================================================
public static string FindInternetIP( )
{
// ----------------------------------------------------
// Pick a random mirror
// ----------------------------------------------------
Random rnd = new Random();
int UseMirror = (int)( rnd.NextDouble() * AutoIPMirrorsCount);
string MyIP = "";
// ----------------------------------------------------
// Catch if the mirror is down
// ----------------------------------------------------
try
{
// ----------------------------------------------------
// Get the webpage
// ----------------------------------------------------
WebClient client = new WebClient();
byte[] pageData = client.DownloadData(AutoIPMirrors[UseMirror].sURL);
MyIP = System.Text.Encoding.ASCII.GetString(pageData);
// ----------------------------------------------------
// Find the string
// ----------------------------------------------------
int iStart = MyIP.LastIndexOf(AutoIPMirrors[UseMirror].sStart);
int iEnd = MyIP.IndexOf(AutoIPMirrors[UseMirror].sEnd, iStart+AutoIPMirrors[UseMirror].sStart.Length);
MyIP = MyIP.Substring(iStart+AutoIPMirrors[UseMirror].sStart.Length, iEnd-iStart-AutoIPMirrors[UseMirror].sStart.Length );
MyIP = MyIP.Trim();
// ----------------------------------------------------
// Return value
// ----------------------------------------------------
Console.WriteLine("Internet IP: {0} ({1})", MyIP, AutoIPMirrors[UseMirror].sURL);
return MyIP;
}
catch
{
Console.WriteLine("Unable to autoupdate the Internet IP from {0}!", AutoIPMirrors[UseMirror].sURL);
Console.WriteLine("----------------------------------------------------------------------");
Console.WriteLine(MyIP);
Console.WriteLine("----------------------------------------------------------------------");
return null;
}
}
// ==================================================================================
// Calculates what server IP to use
// ==================================================================================
public static IPAddress FindMachineIP( ServerListEventArgs e )
{
// ----------------------------------------------------
// Find the IP of the connecting user
// ----------------------------------------------------
Socket sock = e.State.Socket;
IPAddress theirAddress = ((IPEndPoint)sock.RemoteEndPoint).Address;
IPAddress serverAddress;
// ----------------------------------------------------
// Is it Loopback?
// ----------------------------------------------------
if ( IPAddress.IsLoopback( theirAddress ) )
{
return IPAddress.Parse( "127.0.0.1" );
}
// ----------------------------------------------------
// Local
// ----------------------------------------------------
UInt32 uint32Address = StringIPToUInt32IP(theirAddress.ToString());
for (UInt32 LocalLanIPRangesLoop = 0 ; LocalLanIPRangesLoop < LocalLanIPRangesCount; LocalLanIPRangesLoop++)
{
if ( (LocalLanIPRanges[LocalLanIPRangesLoop].RangeFrom <= uint32Address) && (LocalLanIPRanges[LocalLanIPRangesLoop].RangeTo >= uint32Address) )
{
Resolve(Dns.GetHostName(), out serverAddress);
Console.WriteLine("Player is reconnecting to " + serverAddress.ToString());
return serverAddress;
}
}
// ----------------------------------------------------
// Internet addresses
// ----------------------------------------------------
if (Address!=null)
{
Resolve(Address, out serverAddress);
} else {
Resolve(Dns.GetHostName(), out serverAddress);
}
Console.WriteLine("Player is reconnecting to " + serverAddress.ToString());
return serverAddress;
}
// ==================================================================================
// Resolves dns names
// ==================================================================================
public static bool Resolve( string addr, out IPAddress outValue )
{
try
{
outValue = IPAddress.Parse( addr );
return true;
}
catch
{
try
{
IPHostEntry iphe = Dns.Resolve( addr );
if ( iphe.AddressList.Length > 0 )
{
outValue = iphe.AddressList[iphe.AddressList.Length - 1];
return true;
}
}
catch
{
}
}
outValue = IPAddress.None;
return false;
}
}
}
|
|
|
|
|
|
#7 (permalink) |
|
Forum Expert
Join Date: May 2005
Age: 18
Posts: 270
|
are you by any chance running another program that uses the same ports? we have the same problem with other programs ( mainly the fact that we use a connect program for status guides etc, AND a transfer program for sending files faster than email/msn:P) because of you are, only SOME programs will give you a message that informs you the ip is being redirected :P i.e. you send message to server, ICQ(badexampleiknow) knicks it, declares it as an incorrect package and throws it out the window.
__________________
Burning Venganc |
|
|
|
|
|
#9 (permalink) | |
|
Forum Master
Join Date: Feb 2005
Location: ShatteredSosaria.com
Posts: 9,260
|
Quote:
@Thistle: Ah well, I have to reformat my PC today anyway (bro built a new one and wants his copy of XP (pro) back, so I have to install mine (XP home) instead. We'll see what happens after the reformat... |
|
|
|
|
|
|
#11 (permalink) | |
|
Forum Expert
Join Date: Apr 2006
Location: The Great White North!
Age: 34
Posts: 887
|
Quote:
That, and due to the nature of how DHCP works, the DHCP server will never change an IP of a DHCP client as long as the DHCP client remains in contact with the DHCP server.
__________________
I R GEEK! |
|
|
|
|
|
|
#12 (permalink) |
|
Forum Expert
Join Date: Mar 2005
Posts: 1,155
|
Ah, yeah - wasn't really looking at his internal IP's just the error msg.
Only place I found that error msg was in the core: Network/NetState.cs so perhaps the problem was due to having 2 nic's installed. Guess we'll find out more after Joeku's reformatted and reinstalled XP.
__________________
![]() |
|
|
|
|
|
#14 (permalink) |
|
Forum Expert
Join Date: Oct 2002
Posts: 1,126
|
What is happening is that your server is sending you its own connection information (its accessible IP address, and the port to which you connect). The client is trying to connect to this IP (which obviously differs from the one it used to connect initially, as that one works) and the client fails to connect.
To determine what's going on, save a packet log (Razor has an option) of you logging in and post it here. You may omit the 0x80 packet (which will contain your username and password), but the real packet I want to see is the 0xA8 (server list) packet. |
|
|
|
|
|
#17 (permalink) |
|
Forum Newbie
Join Date: Feb 2007
Location: In the barren wastelands of the northern united states
Posts: 6
|
I ran into the same problem, I tried everything I could think of. Then it hit me the only thing I did that was really diff was updating razor. Switched it back then it seemed to be doing fine. No idea what happened for you, just thought I would throw it out there :P
|
|
|
|
![]() |
| Bookmarks |
| Currently Active Users Viewing This Thread: 1 (0 members and 1 guests) | |
| Thread Tools | |
| Display Modes | |
|
|