Project 1999

Go Back   Project 1999 > General Community > Technical Discussion

Reply
 
Thread Tools Display Modes
  #1  
Old 11-17-2015, 11:32 PM
Zaela Zaela is offline
Sarnak


Join Date: Jul 2014
Posts: 319
Default

Always had problems with empty server select on Linux. Threw together a little Windows app that does nothing but connect to the login server and dump the server name strings. Never had any problems getting the server list using this app through Wine.

I assumed there was some issue with Wine's implementation of the Win32-specific socket functions (WSASocket and friends -- of course Verant and SOE used all the Windows-specific calls instead of the equivalent standard ones). Maybe it delays things just enough to exacerbate issues with wifi... but if it happens on Windows too, there's probably more to it than that.

No idea why Login specifically would be so fragile, char select and zones use the same packet protocol to address dropped packets. Maybe it doesn't actually wait until you receive the whole server list and just goes "they hit the Connect button, we're going to server select in x milliseconds whether we have anything to show them or not!" ? Would be a bizarre choice for a game that started in the dialup days, though.
Reply With Quote
  #2  
Old 11-19-2015, 12:10 AM
Zaela Zaela is offline
Sarnak


Join Date: Jul 2014
Posts: 319
Default

I had a thought after my last post. I know that, in my case at least, the server list packets are getting through fine, it's just that the Client chokes on them for whatever reason.

The EQEmu login server does have a lot of servers listed on it, so the server list is somewhat big (~6k), and gets split into several fragments (10 or so) to be sent over the wire. So I thought, why not just filter out all the non-P99 servers before letting the client see them? That way the client only has to deal with a few hundred bytes, in a single packet.

I made a tiny, localhost man-in-the-middle program between the client and the login server to do just that. It is totally working for me, server select is much much more reliable with it running. Some of the code is a bit of a mess right now (lots of last-minute debugging, couldn't test it while I was coding it at work), but you can find it here: https://github.com/Zaela/p99-login-middlemand. Includes a makefile. You can check for yourself, but I can promise that it doesn't try to sniff passwords or anything dumb like that -- all client-to-server packets are simply forwarded and maybe tweaked slightly due to the filtering desychronizing the session somewhat.

Definitely could have some bugs, but I urge you to at least give it a quick try. If it works out well, it shouldn't be too hard to set it up as a daemon and forget about all your server select problems for good.

One thing you will need to do if you want to try it is to update your eqhost.txt to point at the middleman:
Code:
[LoginServer]
Host=localhost:5998
It's configured to forward things to the EQEmu login server by default.
Reply With Quote
  #3  
Old 11-13-2019, 02:09 PM
mantis502 mantis502 is offline
Large Rat


Join Date: Apr 2019
Location: Hebron, Kentucky
Posts: 5
Default

Is this easy to change for the new server list? I am unable to see any servers now.
EDIT:
Never mind that. I had to re-edit my login server to Host=localhost:5998
Last edited by mantis502; 11-13-2019 at 02:19 PM..
Reply With Quote
  #4  
Old 04-21-2024, 07:03 AM
Joffeyhinton2000 Joffeyhinton2000 is offline
Decaying Skeleton


Join Date: Feb 2021
Posts: 4
Default

Quote:
Originally Posted by Zaela [You must be logged in to view images. Log in or Register.]
I had a thought after my last post. I know that, in my case at least, the server list packets are getting through fine, it's just that the Client chokes on them for whatever reason.

The EQEmu login server does have a lot of servers listed on it, so the server list is somewhat big (~6k), and gets split into several fragments (10 or so) to be sent over the wire. So I thought, why not just filter out all the non-P99 servers before letting the client see them? That way the client only has to deal with a few hundred bytes, in a single packet.

I made a tiny, localhost man-in-the-middle program between the client and the login server to do just that. It is totally working for me, server select is much much more reliable with it running. Some of the code is a bit of a mess right now (lots of last-minute debugging, couldn't test it while I was coding it at work), but you can find it here: https://github.com/Zaela/p99-login-middlemand. Includes a makefile. You can check for yourself, but I can promise that it doesn't try to sniff passwords or anything dumb like that -- all client-to-server packets are simply forwarded and maybe tweaked slightly due to the filtering desychronizing the session somewhat.

Definitely could have some bugs, but I urge you to at least give it a quick try. If it works out well, it shouldn't be too hard to set it up as a daemon and forget about all your server select problems for good.

One thing you will need to do if you want to try it is to update your eqhost.txt to point at the middleman:
Code:
[LoginServer]
Host=localhost:5998
It's configured to forward things to the EQEmu login server by default.
How are you supposed to use this, ive been trying to play for days cant get it to work on my pc so i figured ill try my steam deck it will launch but no servers
Reply With Quote
  #5  
Old 04-21-2024, 10:57 AM
nanopino nanopino is offline
Decaying Skeleton


Join Date: Oct 2022
Posts: 4
Default

Quote:
Originally Posted by Joffeyhinton2000 [You must be logged in to view images. Log in or Register.]
How are you supposed to use this, ive been trying to play for days cant get it to work on my pc so i figured ill try my steam deck it will launch but no servers
Checkout this tool instead. It works with the Steam Deck and the README.md has step by step instructions on how to set it up. The original tool required a build step that doesn't work on the Steam Deck out of the box.

https://github.com/rtrajano/p99_login_helper
Reply With Quote
  #6  
Old 01-11-2016, 01:12 AM
vital_beach vital_beach is offline
Decaying Skeleton


Join Date: Jan 2016
Posts: 1
Default

How do I get the middleman running/working? I told it to make but make install wouldn't work.
Reply With Quote
  #7  
Old 01-17-2016, 04:05 AM
Zaela Zaela is offline
Sarnak


Join Date: Jul 2014
Posts: 319
Default

Quote:
Originally Posted by vital_beach [You must be logged in to view images. Log in or Register.]
How do I get the middleman running/working? I told it to make but make install wouldn't work.
Didn't have the time or knowhow to make an install script for it, that part is up to you. Some options:

a) Look into how to set up a daemon on your system (I understand this varies depending on your init system, although it will probably come down to filling in a few lines in a script template somewhere).

b) Work it into an EQ launching script like this guy did. Has the potential benefit of only running the middleman when you're actually running EQ rather than having it on in the background all the time (although the resource usage is tiny either way).

c) Run it manually in a terminal. ./p99-login-middlemand
Reply With Quote
  #8  
Old 01-19-2016, 09:12 PM
fb9 fb9 is offline
Large Bat


Join Date: May 2015
Posts: 14
Thumbs up Server Select!

This works amazing!

I often had to try 10-30 times to get the list and now it is jackpot.

Mini-Howto that worked for me on Mint 17something. Mainly I had to learn how to compile the source and where to put it so as to use to use mgellan's newly modified shellscript launcher ('b' above).

Downloaded Zaela's .zip from the weblink. (p99-login-middlemand-master.zip)
Browsed to Downloads directory , Extracted via GUI browser (right click, Extract here)
Launched terminal

mkdir ~/bin
cd Downloads/
cd p99-login-middlemand-master/
make -f Makefile
cd bin/
cp p99-login-middlemand ~/bin


Modified the eqhosts to point to localhost as previously mentioned.
Give a shout if questions, try to explain better if you need. I'm just a sapling in the shadow of titans.
Reply With Quote
  #9  
Old 01-23-2016, 07:43 PM
Wisteso Wisteso is offline
Kobold

Wisteso's Avatar

Join Date: Dec 2012
Posts: 186
Default

Zaela, while I'm totally not surprised that you made that tool... You're still awesome and that was a great idea.
Reply With Quote
  #10  
Old 05-27-2016, 11:43 AM
spee2k9 spee2k9 is offline
Aviak

spee2k9's Avatar

Join Date: Mar 2010
Location: United Kingdom
Posts: 80
Default

Thanks Zaela middleman worked first time for me with on my wifi connection and Lubuntu laptop!

Mobile EQ is here again!
__________________
In-game characters:-
Tobeunce (Druid) <Knights Who Say Ni>
Parpd (Enchanter) <Ardness>
Echinops (Cleric) <Ardness>
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 05:09 AM.


Everquest is a registered trademark of Daybreak Game Company LLC.
Project 1999 is not associated or affiliated in any way with Daybreak Game Company LLC.
Powered by vBulletin®
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.