Go Back   EQEmulator Home > EQEmulator Forums > Support > Support::Windows Servers

Support::Windows Servers Support forum for Windows EQEMu users.

Reply
 
Thread Tools Display Modes
  #1  
Old 08-10-2015, 07:53 PM
AdrianD
Discordant
 
Join Date: Dec 2013
Posts: 297
Default Networking Issues: Loginserver, eqemu_config, eqhost, USC, login.ini

My goal is to have private login, not secured or locked, with remote clients. I'd like to know how it all works and have the ability to have it available. There are quite a few questions below. Simple yes/no answers, where relevant, is cool by me. I have a tendency to figure things out after they are working and this will probably be an extreme case of that.

I've read numerous threads going back several years. The most recent, http://www.eqemulator.org/forums/showthread.php?t=39915 .

Some of these questions may seem "stupid." I am asking them because everything I'm doing with this project is a "life first" so I ask at a base level.
......................

1. If I wanted to test the loginserver from the internet instead of through the LAN, can I?

People can login when I use eqemu loginserver. I had <address><localaddress> blocked off.

I can login on my LAN (USC works) with <loginserver><address><localaddress> at 192.168.15.181

2. Does one or both ports 5998/5999 need to be forwarded? Or any others? They currently are not.

3. Do I need account name and password for loginserver?

4. Does the DB table `tblserveradminregistration` need any info in it? The other two tables have my entries.

5. Does the mail server need a different port from the chat server (7778/7779)? I read somewhere here, having separate ports is no longer needed.

6. Should the client eqhost.txt read: host=www.eqjeryds.dynu.com:5998

7. Referring to the link Uleat provided, https://github.com/EQEmu/Server/comm...de7284aba90f5e : is this a fix for something causing a conflict? If this is, I will be both relieved, as I am probably not as stupid as I think, and pissed, because I spent way too much time on something that was broken. ~

..........................

With the settings below, I can get to server select but there are no choices (blank) through the LAN. Loginserver shows this message "[Network] [08.10.15 - 18:38:42] Server list request received from client."

Here are my relevant settings:
Code:
Ports forwarded:

UDP		7000-7500	192.168.15.181
UDP		9000		192.168.15.181
UDP		7778		192.168.15.181


Login.ini:

[database]
host = 127.0.0.1
port = 3306
db = jeryds
user = root
password = xyz
subsystem = MySQL

[options]
unregistered_allowed = TRUE
reject_duplicate_servers = FALSE
trace = TRUE
world_trace = FALSE
dump_packets_in = FALSE
dump_packets_out = FALSE
listen_port = 5998
local_network = 192.168.15.

[security]
plugin = EQEmuAuthCrypto
mode = 5

[Titanium]
port = 5998
opcodes = login_opcodes.conf

[SoD]
port = 5999
opcodes = login_opcodes_sod.conf

[schema]
account_table = tblLoginServerAccounts
world_registration_table = tblWorldServerRegistration
world_admin_registration_table = tblServerAdminRegistration
world_server_type_table = tblServerListType


eqemu_config.txt:

<?xml version="1.0"?>
<server>
	<world>
		<shortname>Jeryds</shortname>
		<longname>Jeryd's</longname>

		<!-- Only specify these two if you really think you need to.  (read: You don't)-->
                <!-- I don't huh? -->
		<address>www.eqjeryds.dynu.com</address>
		<localaddress>192.168.15.181</localaddress>

		<!-- Loginserver information.  Defaults shown -->
		<loginserver>
			<host>www.eqjeryds.dynu.com</host>
			<port>5998</port>
			<account></account>
			<password></password>
		</loginserver>

		<!-- Server status.  Default is unlocked -->
		<!--<locked/>-->
		<!-- <unlocked/> -->

		<!-- Sets the ip/port for the tcp connections.  Both zones and console (if enabled).  Defaults are shown -->
		<tcp ip="127.0.0.1" port="9000" telnet="disable"/>

		<!-- Sets the shared key used by zone/launcher to connect to world -->
		<key>some long random string</key>

		<!-- Enable and set the port for the HTTP service.  Defaults are shown -->
		<http port="9080" enabled="false" mimefile="mime.types" />
	</world>

	<!-- Chatserver (channels) information.  Defaults shown -->
	<chatserver>
		<host>192.168.15.181</host>
		<port>7778</port>
	</chatserver>

	<!-- Mailserver (in-game mail) information.  Defaults shown -->
	<mailserver>
		<host>192.168.15.181</host>
		<port>7778</port>
	</mailserver>

	<zones>
		<defaultstatus>0</defaultstatus>

		<!-- Sets port range for world to use to auto configure zones -->
		<ports low="7000" high="7100"/>
	</zones>

	<!-- Database configuration, replaces db.ini.  Defaults shown -->
	<database>
		<host>127.0.0.1</host>
		<port>3306</port>
		<username>root</username>
		<password>abc</password>
		<db>jeryds</db>
	</database>

	<qsdatabase>
		<host>127.0.0.1</host>
		<port>3306</port>
		<username>root</username>
		<password>123</password>
		<db>jeryds</db>
	</qsdatabase>

	<!-- Launcher Configuration -->
	<launcher>
		<!-- <logprefix>logs/zone-</logprefix> -->
		<!-- <logsuffix>.log</logsuffix> -->
		<!-- <exe>zone.exe or ./zone</exe> -->
		<!-- <timers restart="10000" reterminate="10000"> -->
	</launcher>

	<!-- File locations.  Defaults shown -->
	<files>
		<!-- <spells>spells_us.txt</spells> -->
		<!-- <opcodes>opcodes.conf</opcodes> -->
		<!-- <logsettings>log.ini</logsettings> -->
		<!-- <eqtime>eqtime.cfg</eqtime> -->
	</files>
	<!-- Directory locations.  Defaults shown -->
	<directories>
		<!-- <maps>Maps</maps> -->
		<!-- <quests>quests</quests> -->
		<!-- <plugins>plugins</plugins> -->
	</directories>
</server>
* The title is for anyone else searching this topic.

Thanks
Reply With Quote
  #2  
Old 08-10-2015, 08:35 PM
Uleat's Avatar
Uleat
Developer
 
Join Date: Apr 2012
Location: North Carolina
Posts: 2,815
Default

1) I think the only way to log in like that will be to have someone else try. There is a website that will ping your ports..but, I don't know if
that only tests your firewall ports or if it will actually make it to the server...

2) Port 5998 is required for Ti/SoF clients..Port 5999 is needed for SoD+ clients. (SoF and SoD use the same opcode value for first login
and a distinction is needed to discriminate the client version..hence, the second port was added.)

3) I can't remember if the login server will allow you to create an account when you first login..would seem it would if you can
select any server from the eqemu public login server and just play. If not, you'll have to manually add accounts (any one know for sure?)

4) It is recommended that world accounts be added..but, are not required to operate.

5) I believe the Titanium client supports ports 7778 and 7779. I think that SoF+ all use the single 7778 port.

6) Yes and no... The port depends on the client version described in answer #2.

7) As long as you have your code up-to-date, that fix should already be in the code base.
__________________
Uleat of Bertoxxulous

Compilin' Dirty
Reply With Quote
  #3  
Old 08-10-2015, 09:01 PM
AdrianD
Discordant
 
Join Date: Dec 2013
Posts: 297
Default

Quote:
1) I think the only way to log in like that will be to have someone else try. There is a website that will ping your ports..but, I don't know if
that only tests your firewall ports or if it will actually make it to the server...

2) Port 5998 is required for Ti/SoF clients..Port 5999 is needed for SoD+ clients. (SoF and SoD use the same opcode value for first login
and a distinction is needed to discriminate the client version..hence, the second port was added.)

3) I can't remember if the login server will allow you to create an account when you first login..would seem it would if you can
select any server from the eqemu public login server and just play. If not, you'll have to manually add accounts (any one know for sure?)

4) It is recommended that world accounts be added..but, are not required to operate.

5) I believe the Titanium client supports ports 7778 and 7779. I think that SoF+ all use the single 7778 port.

6) Yes and no... The port depends on the client version described in answer #2.

7) As long as you have your code up-to-date, that fix should already be in the code base.
Responses:

1. Good to know. That alone relieves some frustration.

2. Follow up question, sorta: If I run my own login server, I have to forward ports 5998/5999 whereas, using eqemu login, it's not required. Makes sense looking at login.ini. Is that correct?

3. I've seen some with and without. Those with have "x" out the field and those w/o have something that implies it's not unique or just ><. That's why I can't determine if it's needed.

4. Thanks. My server seems to operate fine in LAN or solo. I wasn't sure about remote clients.

5. Thanks.

6. Ok, so, having my non-existent internet clients use www.eqjeryds.dynu.com:XXXX is correct.

7. My code is from about a week before that update. I opened up the .cpp file and that fix or portion wasn't in.

Code:
void WorldServer::OnConnected() {
	WorldConnection::OnConnected();

	ServerPacket* pack;

	//tell the launcher what name we were started with.
	pack = new ServerPacket(ServerOP_SetLaunchName,sizeof(LaunchName_Struct));
	LaunchName_Struct* ln = (LaunchName_Struct*)pack->pBuffer;
	strn0cpy(ln->launcher_name, m_launcherName.c_str(), 32);
	strn0cpy(ln->zone_name, m_launchedName.c_str(), 16);
	SendPacket(pack);
	safe_delete(pack);

	pack = new ServerPacket(ServerOP_SetConnectInfo, sizeof(ServerConnectInfo));
	ServerConnectInfo* sci = (ServerConnectInfo*) pack->pBuffer;
	sci->port = ZoneConfig::get()->ZonePort;
	SendPacket(pack);
	safe_delete(pack);

	if (ZoneLoaded) {
		this->SetZone(zone->GetZoneID(), zone->GetInstanceID());
		entity_list.UpdateWho(true);
		this->SendEmoteMessage(0, 0, 15, "Zone connect: %s", zone->GetLongName());
			zone->GetTimeSync();
	} else {
		this->SetZone(0);
	}

	pack = new ServerPacket(ServerOP_LSZoneBoot,sizeof(ZoneBoot_Struct));
	ZoneBoot_Struct* zbs = (ZoneBoot_Struct*)pack->pBuffer;
	strcpy(zbs->compile_time,LAST_MODIFIED);
	SendPacket(pack);
	safe_delete(pack);
}
/* Zone Process Packets from World */
7. cont... I imagine I need to get that in.

* Can I copy/paste that little added code? Then, do I need to recompile the whole thing? I have never recompiled to add new code to existing. I've read that it's fairly simple but, I don't want to screw it up.

Thanks Uleat.
Reply With Quote
  #4  
Old 08-10-2015, 09:33 PM
Uleat's Avatar
Uleat
Developer
 
Join Date: Apr 2012
Location: North Carolina
Posts: 2,815
Default

2) Those ports allow incoming login server requests to be seen..using the eqemu public login server exclusively bypasses the need
for you to accept them (at least that's my understanding.)

7) ..

If you're not using the repack and you haven't implemented any custom code/db changes yet..I would recommend just doing a pull
off of the current remote branch that you're sync'd to and recompiling.

Sometimes, when an update is added, new files may be added or old may be removed.

You can review the commit logs to see if any have been added/removed..but, the easiest way is to just delete your 'build'
folder, rerun cmake, and then recompile the newest source code.

You'll need to keep an eye out for changes to support files (i.e., rof2.conf) and copy those over to your server folder when they
change, as well.

Copying over a snippet of code may or may not fix an issue..it may even create more problems if you're not fully aware of what's
going on.

For instance..that particular commit may have been to fix a system that was completely revamped the day before. And since
your code is a week old, it wouldn't even have the change that particular fix was suppose to correct.

If you're new to this, it will get easier. It's all about familiarity with the process.

If you want to customize your server, I would recommend just letting this settle in for a week or two and taking things one step
at a time


EDIT: Don't forget to also run shared_memory.exe if you don't have it as part of your startup.bat and I would also recommend
running world.exe by itself after a recompile to ensure that the database patcher has a chance to do its job.
__________________
Uleat of Bertoxxulous

Compilin' Dirty

Last edited by Uleat; 08-10-2015 at 09:37 PM.. Reason: process additions
Reply With Quote
  #5  
Old 08-10-2015, 09:41 PM
AdrianD
Discordant
 
Join Date: Dec 2013
Posts: 297
Default

I appreciate the explanations. Doing my own revisions to the DB has got to the point where I seem to be spending a fair amount of time documenting what I did. It makes sense and better safe than the alternative.

I used the stable branch and this is not in. What should I do?

Taking it slow is sound advice and advice I will heed. It's coming.

Thank you.
Reply With Quote
  #6  
Old 08-10-2015, 10:04 PM
Uleat's Avatar
Uleat
Developer
 
Join Date: Apr 2012
Location: North Carolina
Posts: 2,815
Default

The changes that occurred for that fix to go in probably had not been implemented in the stable branch yet..otherwise, it would probably
have been pushed in to fix it.

There are a myriad of ways to update your database:
- create a backup and work from that - only pulling in changes from your working db to your live one as you're ready.
- work from sql files so that you can just reapply the changes whenever needed.

There's a lot of ways to do this and I'm sure there are some really good alternatives out there
__________________
Uleat of Bertoxxulous

Compilin' Dirty
Reply With Quote
  #7  
Old 08-10-2015, 10:29 PM
AdrianD
Discordant
 
Join Date: Dec 2013
Posts: 297
Default

Alright, I will wait for this fix to hopefully go into stable. This issue been on my checklist for a while. I can live without it. Learning about it was more important.

I haven't made many table schema changes to my DB. I run a query to revert the changes before it's usable or live. Like you said, I have a main DB where I work out of.

Since classic and progression is what I'm trying to accomplish, at least intially, I have large queries to make/separate the data and plug it into the live version for each expansion. They follow a specific order to maximize accuracy.

It would be nice to have a resource to pull expansion information from. As it stands, I have to separate quite a bit "by hand" after my queries have run. I only have to make distinctions once, but 93k items, 65k npcs and 30k spells is a lot even if half of them are distinguished.

Anyways, I'll put this on the backburner for a while and move on to my other issues.

Thanks a bunch for your help and equally, your quick responses. It feels resolved even though it isn't.
Reply With Quote
Reply


Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off

Forum Jump

   

All times are GMT -4. The time now is 06:14 AM.


 

Everquest is a registered trademark of Daybreak Game Company LLC.
EQEmulator is not associated or affiliated in any way with Daybreak Game Company LLC.
Except where otherwise noted, this site is licensed under a Creative Commons License.
       
Powered by vBulletin®, Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Template by Bluepearl Design and vBulletin Templates - Ver3.3