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

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

Reply
 
Thread Tools Display Modes
  #1  
Old 08-05-2017, 01:28 PM
Thalix's Avatar
Thalix
Sarnak
 
Join Date: Sep 2016
Posts: 91
Default Please help with private Loginserver on public IP

I have my server up and running with the latest Linux source (Ubuntu 17.04), using the https://github.com/EQEmu/Server#server-installs (using server_source_bots).
I can use the public login server without any problems. Server shows up, I can login and play.

Now I wan't to setup a private loginserver, just in case the public is down.

I was able to build the loginserver, note without adding any crypto libs, they don't seem to be needed any longer. I can login into my private loginserver and it creates accounts in the database, if auto_create_accounts set to true.

Problem: I don't see my server on the selection list, if using the private loginserver. I tried Titanium Client and ROF2, the server list is empty.
EQemu is running on a dedicated server in a datacenter, with the server ip 136.243.xxx.xxx. All ports are open tcp and udp, no firewall.

Please help.


eqemu_config.xm
Code:
/home/eqemu/server # cat eqemu_config.xml
<?xml version="1.0">
<server>
        <world>
                <shortname>AAA Test Server</shortname>
                <longname>AAA Test Server</longname>


                <loginserver1>
                        <legacy>1</legacy>
                        <host>login.eqemulator.net</host>
                        <port>5998</port>
                        <account></account>
                        <password></password>
                </loginserver1>


                <!-- does not work -->
                <!--
                <address>136.243.xxx.xxx</address>
                <localaddress>127.0.0.1</localaddress>
                -->
                <loginserver2>
                        <!-- <host>136.243.xxx.xxx</host> --> <!-- does not work -->
                        <host>127.0.0.1</host>
                        <port>5998</port>
                        <account>Admin</account>
                        <password>Password</password>
                </loginserver2>



                <tcp ip="127.0.0.1" port="9001"/>
                <telnet ip="0.0.0.0" port="9000" enabled="true"/>

                <key>mykey</key>

                <http port="9080" enabled="true" mimefile="mime.types" />
        </world>

        <chatserver>
                <host></host>
                <port>7500</port>
        </chatserver>

        <mailserver>
                <host></host>
                <port>7500</port>
        </mailserver>

        <zones>
        <defaultstatus>0</defaultstatus>

        <ports low="7000" high="7400"/>
        </zones>

        <database>
           <host>localhost</host>
           <port>3306</port>
           <username>eqone_sys</username>
           <password>mydbpassword</password>
           <db>eqone</db>
        </database>

        <qsdatabase>
           <host>localhost</host>
           <port>3306</port>
           <username>eqone_sys</username>
           <password>mydbpassword</password>
           <db>eqone</db>
        </qsdatabase>

        <webinterface>
                <port>9081</port>
        </webinterface>

        <launcher>
        </launcher>

        <files>
        </files>
        <directories>
        </directories>
</server>

login.ini
Code:
cat login.ini
[database]
host = localhost
port = 3306
db = eqone
user = eqone_sys
password = mydbpassword
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 = 127.0.0.1
auto_create_accounts = FALSE

[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


database
Code:
select ServerID,ServerLongName,ServerShortName,ServerListTypeID,ServerLastIPAddr,ServerAdminID,ServerTrusted from tblWorldServerRegistration;
1, My Test Server, MTST, 1, 0.0.0.0, 1,0
Code:
select * from tblServerAdminRegistration;
1, Admin, Password, Tom, Wilson, Tom.Wilson@gmail.com, 2017-08-05 18:42:18, 0.0.0.0

emtpy server list...
Code:
Login Server] New SoD client connection from 178.202.xx.xx:55296
[Login Server] Application packet received from client (size 14)
[Login Server] Session ready received from client.
[Login Server] Application packet received from client (size 36)
[Login Server] Login received from client.
[Login Server] Application packet received from client (size 12)
[Login Server] Server list request received from client.
[Login Server] Application packet received from client (size 12)
[Login Server] Client disconnected from the server, removing client.
Maybe with the new Netcode, the login.ini "plugin = EQEmuAuthCrypto" is wrong?
Reply With Quote
  #2  
Old 08-05-2017, 02:11 PM
The_Beast's Avatar
The_Beast
Discordant
 
Join Date: May 2016
Location: Under a rock
Posts: 290
Default

Quote:
Originally Posted by Thalix View Post
EQemu is running on a dedicated server in a datacenter, with the server ip 136.243.xxx.xxx. All ports are open tcp and udp, no firewall.
You have local host IP set for private login ?
<host>127.0.0.1</host>

That will only work on a server that's on the same box as your client.
If your server is hosted elsewhere, then the IP's need to point there.
"136.243.xxx.xxx"
Reply With Quote
  #3  
Old 08-05-2017, 02:24 PM
Thalix's Avatar
Thalix
Sarnak
 
Join Date: Sep 2016
Posts: 91
Thumbs up

Thank you for your answer. I tried it,no progress.

I now have (with the correct IP) this in my eqemu_config.xml:

Code:
                <loginserver2>
                        <host>136.243.xxx.xxx</host>
                        <port>5998</port>
                        <account>Admin</account>
                        <password>Password</password>
                </loginserver2>
I also tried without account/password.

Funny thing is, if I trace the MySQL(MariaDB) selects, there is never a single selection on "tblWorldServerRegistration" or "tblServerAdminRegistration".
Reply With Quote
  #4  
Old 08-05-2017, 03:23 PM
The_Beast's Avatar
The_Beast
Discordant
 
Join Date: May 2016
Location: Under a rock
Posts: 290
Default

Assuming that BOTH your database and server are on that remote host, look at these edits in RED (both config files)
I am also going to assume you have the tbl login tables in your database and you've set a user/pass in the tblworldregistration table ?
Code:
/home/eqemu/server # cat eqemu_config.xml
<?xml version="1.0">
<server>
        <world>
                <shortname>AAA Test Server</shortname>
                <longname>AAA Test Server</longname>


                <loginserver1>
                        <legacy>1</legacy>
                        <host>login.eqemulator.net</host>
                        <port>5998</port>
                        <account></account>
                        <password></password>
                </loginserver1>


                <address>136.243.xxx.xxx</address>
                <!-- <localaddress>127.0.0.1</localaddress> (leave this commented out) -->
                
                <loginserver2>
                        <host>136.243.xxx.xxx</host>
                        <port>5998</port>
                        <account>Admin</account>
                        <password>Password</password>
                </loginserver2>



                <tcp ip="136.243.xxx.xxx" port="9001"/>
                <telnet ip="136.243.xxx.xxx" port="9000" enabled="true"/>

                <key>mykey</key>

                <http port="9080" enabled="true" mimefile="mime.types" />
        </world>

        <chatserver>
                <host>136.243.xxx.xxx</host>
                <port>7500</port>
        </chatserver>

        <mailserver>
                <host>136.243.xxx.xxx</host>
                <port>7500</port>
        </mailserver>

        <zones>
        <defaultstatus>0</defaultstatus>

        <ports low="7000" high="7400"/>
        </zones>

        <database>
           <host>127.0.0.1</host>
           <port>3306</port>
           <username>eqone_sys</username>
           <password>mydbpassword</password>
           <db>eqone</db>
        </database>

        <qsdatabase>
           <host>127.0.0.1</host>
           <port>3306</port>
           <username>eqone_sys</username>
           <password>mydbpassword</password>
           <db>eqone</db>
        </qsdatabase>

        <webinterface>
                <port>9081</port>
        </webinterface>

        <launcher>
        </launcher>

        <files>
        </files>
        <directories>
        </directories>
</server>
Login.ini
Code:
cat login.ini
[database]
host = 127.0.0.1
port = 3306
db = eqone
user = eqone_sys
password = mydbpassword
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 = 136.243.xxx.  (Leave the last set of numbers out, but keep the period)
auto_create_accounts = FALSE

[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
Reply With Quote
  #5  
Old 08-06-2017, 07:45 AM
Thalix's Avatar
Thalix
Sarnak
 
Join Date: Sep 2016
Posts: 91
Default

Thank you again. But still no progress. If I login, I see the following SQL's executed and not more:

Code:
[Login Server] New SoD client connection from 178.202.xx.xx:57446
[Login Server] Application packet received from client (size 14)
   0: 02 00 00 00 00 00 00 00 - 00 00 0B 00              | ............
[Login Server] Session ready received from client.
   0: 02 00 00 00 00 00 00 00 - 00 00 01 65 00 00 00 00  | ...........e....
  16: 00                                                 | .
[Login Server] Application packet received from client (size 36)
   0: 03 00 00 00 00 02 00 00 - 00 00 24 37 8D 72 75 DA  | ..........$7.ru.
  16: 04 C9 1F C1 42 BF 8E C4 - 90 4F 57 44 FA 1D 07 BE  | ....B....OWD....
  32: 04 C9                                              | ..
[Login Server] Login received from client.
170806 13:37:52   240 Query     SELECT LoginServerID, AccountPassword FROM loginserver_server_accounts WHERE AccountName                                                                                     = 'Admin'
                  240 Query     UPDATE loginserver_server_accounts SET LastIPAddress = '178.202.xx.xx', LastLoginDate =                                                                                     now() where LoginServerID = 1
   0: 03 00 00 00 00 02 00 00 - 00 00 0D 9F 27 9B A5 D8  | ............'...
  16: 72 60 DB 33 91 26 CB F2 - E6 F1 E0 D0 2B DA BE 35  | r`.3.&......+..5
  32: 61 CE 95 CD EA 39 73 1A - 34 AD F4 55 79 A2 61 4F  | a....9s.4..Uy.aO
  48: 40 96 8C 8F 1B 47 66 E8 - CE 6C 60 87 0F 29 FD 9C  | @....Gf..l`..)..
  64: 23 F8 DB 86 31 7A 77 3A - 85 BB 60 87 0F 4A FD 9C  | #...1zw:..`..J..
  80: 23 F9 DB 86 31 7A 77 3A - 85 BB                    | #...1zw:..
[Login Server] Application packet received from client (size 12)
   0: 04 00 00 00 00 00 00 00 - 00 00                    | ..........
[Login Server] Server list request received from client.
   0: 04 00 00 00 00 00 00 00 - 00 00 65 01 00 00 00 00  | ..........e.....
  16: 00 00 00 00                                        | ....
[Login Server] Application packet received from client (size 12)
   0: 05 00 00 00 00 00 00 00 - 00 00                    | ..........
[Login Server] Client disconnected from the server, removing client.
So the server is never asked for the Server-List but the database connection clearly works.


Edit:
I found an old backup from 04.2016, replaced the binaries and the Server shows up. Because of incompatible databases, it stops after that. For me it looks like a code issue and I can't work it out (I'm not a coder).
Reply With Quote
  #6  
Old 08-06-2017, 08:50 AM
The_Beast's Avatar
The_Beast
Discordant
 
Join Date: May 2016
Location: Under a rock
Posts: 290
Default

I can tell you with my own experience, I haven't been able to get a dual login for public/lan to work with any code/binaries past
April 14th,(2017). The public login works fine, but the second lan login won't connect to world with current source binaries.
I don't worry too much about it, I don't mind using the public login for myself, I never see it go down too much over one year.
Reply With Quote
  #7  
Old 08-06-2017, 06:27 PM
Thalix's Avatar
Thalix
Sarnak
 
Join Date: Sep 2016
Posts: 91
Default

Got it working now. I tried to understand the source code and found the error.


As mentioned in the changelog, you need the new "<legacy>1</legacy>" setting only for the public "official" Loginserver from EQEmu, which is using the old netcode.

Quote:
- To support new features such as encryption the underlying protocol had to change... however some servers such as the public login server will be slow to change so we've included a compatibility layer for legacy login connections:
- You should add <legacy>1</legacy> to the login section of your configuration file when connecting to a server that is using the old protocol.
- The central eqemu login server uses the old protocol and probably will for the forseeable future so if your server is connecting to it be sure to add that tag to your configuration file in that section.
This is repeated here: http://www.eqemulator.org/forums/showthread.php?t=41289

But if you look closer at the code, you see that this is wrong. If there is no "legacy" setting, it defaults to 1 or TRUE. But the private loginserver use the new netcode, so it need to be 0 or FALSE.

So to make it work, just add the following line to your eqemu_config.xml, inside the private loginserver section:
Code:
<legacy>0</legacy>
Restart the loginserver and dual login works!
Reply With Quote
  #8  
Old 08-06-2017, 06:55 PM
The_Beast's Avatar
The_Beast
Discordant
 
Join Date: May 2016
Location: Under a rock
Posts: 290
Default

NICE FIND Thalix Thank You !
Reply With Quote
  #9  
Old 08-06-2017, 08:28 PM
The_Beast's Avatar
The_Beast
Discordant
 
Join Date: May 2016
Location: Under a rock
Posts: 290
Default

Just to add something, the <localaddress>192.168.x.x</localaddress> has to be enabled and specified. I had to do this to get
dual login for lan to work and let me past character screen. Wasn't something I had to do before, but all works great now.
Reply With Quote
Reply

Thread Tools
Display Modes

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 02:33 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