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 10-21-2017, 02:51 PM
Jokerpatch
Fire Beetle
 
Join Date: Nov 2008
Location: Overthere
Posts: 9
Default cannot connect to local vm

i recently started playing on eqemu again. i decided it would be cool to learn how games like this actually work and set up my own private server and start playing around with modifying the game.

- i created a virtual machine with ubuntu server and virtual box
- i downloaded the install.sh on github using this url: https://raw.githubusercontent.com/EQ...ler/install.sh which by the way may be wrong, i had to use raw.github.com for wget.
- i ran the installer, everything went fine, took about half an hour or so, i was at work so didn't watch the clock. though the first try took almost 6 hours so i remade the vm and started again.
- i went through the changes to eqemu_config, login.ini and eqhost to account for my IP which i made static so it wouldn't change on me after closing the vm.

at this point i tried to login, no connection so i went rummaging through the source code and from the looks of it i think the world exec starts up everything including the login server, still no connection.

i tried running eqlaunch after that, still nothing.

i notice the server_start/stop/luanch, i checked out parameters i tried running server_launch but i got sh: 1: ./loginserver not found not sure if i'm supposed to run that after world or eqlaunch.

i would like to know what exactly i need to do to get this running, i'm rather frustrated with it at the moment. i am looking for the steps to go through to start the server whenever i run my vm.

i've looked around at different sources cannot find anything really useful. i have a feeling its my config file as well because there are several different setups out there tat i've noticed.

here is my eqemu_config.xml
Code:
<?xml version="1.0">
<server>
        <world>
                <shortname>Coco</shortname>
                <longname>Colossal Server</longname>

                <address>192.168.0.3</address>

                <loginserver1>
                        <host>login.eqemulator.net</host>
                        <port>5998</port>
                        <account></account>
                        <password></password>
                </loginserver1>
                <loginserver2>
                        <host>192.168.0.3</host>
                        <port>5998</port>
                        <account></account>
                        <password></password>
                </loginserver2>


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

                <key>T7F9umXJkJpZE9Z36YB6wMX1FDj0xWX</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>eq</username>
           <password>emu</password>
           <db>eqemu</db>
        </database>

        <qsdatabase>
           <host>localhost</host>
           <port>3306</port>
           <username>eq</username>
           <password>emu</password>
           <db>eqemu</db>
        </qsdatabase>

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

        <launcher>
        </launcher>

        <files>
        </files>
        <directories>
        </directories>
</server>
this is my login.ini
Code:
[database]
host = localhost
port = 3306
db = eqemu
user = eq
password = emu
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.0.3
auto_create_accounts = TRUE

[security]
plugin = EQEmuAuthCrypto
mode = 5

[Titanium]
port = 5998
opcodes = login_opcodes.conf

[SoD]
port = 5999
opcodes = login_opcodes_sod.conf

[schema]
account_table = loginserver_server_accounts
world_registration_table = loginserver_world_server_registration
world_admin_registration_table = loginserver_server_admin_registration
world_server_type_table = loginserver_server_list_type
Reply With Quote
  #2  
Old 10-21-2017, 05:32 PM
Thalix's Avatar
Thalix
Sarnak
 
Join Date: Sep 2016
Posts: 91
Default

If you are trying to connect over the local loginserver and not the public EQEmu loginserver, you need to start the loginserver. Edit server_start.sh so it looks like this:

Code:
#!/usr/bin/env bash
./shared_memory
perl server_launcher.pl loginserver zones="30" silent_launcher &
echo "Server started - use server_status.sh to check server status"
Reply With Quote
  #3  
Old 10-21-2017, 05:37 PM
Jokerpatch
Fire Beetle
 
Join Date: Nov 2008
Location: Overthere
Posts: 9
Default

i actually did that once but it continually printed this:

Code:
sh: 1: ./loginserver not found
Reply With Quote
  #4  
Old 10-21-2017, 05:38 PM
Thalix's Avatar
Thalix
Sarnak
 
Join Date: Sep 2016
Posts: 91
Default

Oh and you should have loginserver as binary link at /home/eqemu, source /home/eqemu/server_source/Server/build/bin/loginserver

If not try this:
Code:
cd /home/eqmeu
ln -s /home/eqemu/server_source/Server/build/bin/loginserver .
(or home/eqemu/server_source_bots if you have bots active)
Reply With Quote
  #5  
Old 10-21-2017, 05:43 PM
Thalix's Avatar
Thalix
Sarnak
 
Join Date: Sep 2016
Posts: 91
Default

A reason could also be that you have compiled without the loginserver. In that case:

Code:
cd /home/eqemu/server_source/Server
rm CMakeCache.txt
cmake -G "Unix Makefiles" -DEQEMU_BUILD_LOGIN=ON -DEQEMU_BUILD_LUA=ON -DEQEMU_DISABLE_LOGSYS=ON -DEQEMU_BUILD_PERL=ON
make clean
make -j4
cp -a ./bin/* ./build/bin/
and then the ln -s .... from above
Reply With Quote
  #6  
Old 10-21-2017, 05:47 PM
Jokerpatch
Fire Beetle
 
Join Date: Nov 2008
Location: Overthere
Posts: 9
Default

i had it in a different order than what you posted, i had loginserver at the end, i copied what you just posted, and i got a whole bunch of stuff i hadn't seen yet.

i do still get the message above but there's more to it:

sh: 1: ./loginserver not foundP Queryserv: UP Loginserver: UP

i can't get it to stop printing
Reply With Quote
  #7  
Old 10-21-2017, 05:49 PM
Thalix's Avatar
Thalix
Sarnak
 
Join Date: Sep 2016
Posts: 91
Default

Then you need to recompile the sourcecode and build the loginserver.
Reply With Quote
  #8  
Old 10-21-2017, 06:35 PM
Jokerpatch
Fire Beetle
 
Join Date: Nov 2008
Location: Overthere
Posts: 9
Default

i started to recompile everything, it got to about 65%:

Code:
/home/eqemu/server_source/Server/loginserver/encryption.cpp: In function ‘std::__cxx11::string eqcrypt_argon2(const string&)’:
/home/eqemu/server_source/Server/loginserver/encryption.cpp:78:13: error: ‘crypto_pwhash_STRBYTES’ was not declared in this scope
  ret.resize(crypto_pwhash_STRBYTES);
             ^
/home/eqemu/server_source/Server/loginserver/encryption.cpp:80:56: error: ‘crypto_pwhash_OPSLIMIT_SENSITIVE’ was not declared in this scope
  if (crypto_pwhash_str(&ret[0], &msg[0], msg.length(), crypto_pwhash_OPSLIMIT_SENSITIVE, crypto_pwhash_MEMLIMIT_SENSITIVE) != 0) {
                                                        ^
/home/eqemu/server_source/Server/loginserver/encryption.cpp:80:90: error: ‘crypto_pwhash_MEMLIMIT_SENSITIVE’ was not declared in this scope
  if (crypto_pwhash_str(&ret[0], &msg[0], msg.length(), crypto_pwhash_OPSLIMIT_SENSITIVE, crypto_pwhash_MEMLIMIT_SENSITIVE) != 0) {
                                                                                          ^
/home/eqemu/server_source/Server/loginserver/encryption.cpp:80:122: error: ‘crypto_pwhash_str’ was not declared in this scope
  if (crypto_pwhash_str(&ret[0], &msg[0], msg.length(), crypto_pwhash_OPSLIMIT_SENSITIVE, crypto_pwhash_MEMLIMIT_SENSITIVE) != 0) {
                                                                                                                          ^
/home/eqemu/server_source/Server/loginserver/encryption.cpp: In function ‘bool eqcrypt_verify_hash(const string&, const string&, const string&, int)’:
/home/eqemu/server_source/Server/loginserver/encryption.cpp:147:78: error: ‘crypto_pwhash_str_verify’ was not declared in this scope
   return crypto_pwhash_str_verify(&pwhash[0], &password[0], password.length()) == 0;
                                                                              ^
loginserver/CMakeFiles/loginserver.dir/build.make:182: recipe for target 'loginserver/CMakeFiles/loginserver.dir/encryption.cpp.o' failed
make[2]: *** [loginserver/CMakeFiles/loginserver.dir/encryption.cpp.o] Error 1
CMakeFiles/Makefile2:692: recipe for target 'loginserver/CMakeFiles/loginserver.dir/all' failed
i'm still trying to figure it out but i thought i would post it in case someone already knows the problem.
Reply With Quote
  #9  
Old 10-21-2017, 07:22 PM
Thalix's Avatar
Thalix
Sarnak
 
Join Date: Sep 2016
Posts: 91
Default

I think you need libsodium:

libsodium-dev - Network communication, cryptography and signaturing library - headers
libsodium18 - Network communication, cryptography and signaturing library

Code:
apt-get install libsodium-dev libsodium18
Then you need to restart the compilation, starting with "rm CMakeCache.txt" ...
Reply With Quote
  #10  
Old 10-22-2017, 05:55 AM
Thalix's Avatar
Thalix
Sarnak
 
Join Date: Sep 2016
Posts: 91
Default

So you got it working?
Reply With Quote
  #11  
Old 10-22-2017, 11:45 AM
Jokerpatch
Fire Beetle
 
Join Date: Nov 2008
Location: Overthere
Posts: 9
Default

no, those headers are already installed via the install.sh script. still get those errors above. i would have told last night but i had to let my laptop dry out, because some water landed on it.
Reply With Quote
  #12  
Old 10-22-2017, 02:33 PM
Jokerpatch
Fire Beetle
 
Join Date: Nov 2008
Location: Overthere
Posts: 9
Default

the problems i found were in this function:

Code:
std::string eqcrypt_argon2(const std::string &msg)
{
	std::string ret;
	ret.resize(crypto_pwhash_STRBYTES);

	if (crypto_pwhash_str(&ret[0], &msg[0], msg.length(), crypto_pwhash_OPSLIMIT_SENSITIVE, crypto_pwhash_MEMLIMIT_SENSITIVE) != 0) {
		return "";
	}

	return ret;
}
the crypto_pwhash functions and variables dont' exist, what i'm thinking is someone was changing something in the source and forgot to remove old calls or just didn't update them. this function does the same things as another one: just calling the functions that do exist:

Code:
std::string eqcrypt_scrypt(const std::string &msg)
{
	std::string ret;
	ret.resize(crypto_pwhash_scryptsalsa208sha256_STRBYTES);

	if (crypto_pwhash_scryptsalsa208sha256_str(&ret[0], &msg[0], msg.length(),
		crypto_pwhash_scryptsalsa208sha256_OPSLIMIT_SENSITIVE, crypto_pwhash_scryptsalsa208sha256_MEMLIMIT_SENSITIVE) != 0) {
		return "";
	}

	return ret;
}
so it compiled fine after i changed the calls to the correct functions declarations, the rebuild is still moving along so i'll see if the server works when its done.
Reply With Quote
  #13  
Old 10-22-2017, 03:00 PM
Jokerpatch
Fire Beetle
 
Join Date: Nov 2008
Location: Overthere
Posts: 9
Default

that did fix my build problem, though i'm not sure if it's a long term fix. i can get to the server select screen now, but my server isn's on it. i'm sure i just missed something i'll figure that out later.

i do appreciate the help Thalix, thank you
Reply With Quote
  #14  
Old 10-24-2017, 09:25 AM
Jokerpatch
Fire Beetle
 
Join Date: Nov 2008
Location: Overthere
Posts: 9
Default

i did fix the build issue, i had an issue of not being able to see my server on the select list; i figured that problem but now i get 1017 error when i click play after selecting my server. usually about a 20 second delay before it pops the error.

my eqemu server and loginserver are on the same vm on my laptop. i'm not sure if there should be a difference between using localhost vs. 127.0.0.1 i was trying all kinds of things just to get my server to show up on the list.

if i did somethings wrong i would really appreciate some explanation on what i did wrong and why it has to work a certain way.

EQEMU_CONFIG:

Code:
<?xml version="1.0">
<server>
	<world>
		<shortname>Coco</shortname>
		<longname>Colossal Quest</longname>

		<address>localhost</address>

		<loginserver>
			<host>localhost</host>
			<port>5998</port>
			<account></account>
			<password></password>
		</loginserver>


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

		<key>T7F9umXJkJpZE9Z36YB6wMX1FDj0xWX</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>****</username>
	   <password>****</password>
	   <db>eqemu</db>
	</database>	

	<qsdatabase>
	   <host>localhost</host>
	   <port>3306</port>
	   <username>****</username>
	   <password>****</password>
	   <db>eqemu</db>
	</qsdatabase>

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

	<launcher>
	</launcher>

	<files>
	</files>
	<directories>
	</directories>
</server>
LOGIN.INI:
Code:
[database]
host = localhost
port = 3306
db = ****
user = ****
password = emu
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 = localhost
auto_create_accounts = TRUE

[security]
plugin = EQEmuAuthCrypto
mode = 5

[Titanium]
port = 5998
opcodes = login_opcodes.conf

[SoD]
port = 5999
opcodes = login_opcodes_sod.conf

[schema]
account_table = loginserver_server_accounts
world_registration_table = loginserver_world_server_registration
world_admin_registration_table = loginserver_server_admin_registration
world_server_type_table = loginserver_server_list_type
Reply With Quote
  #15  
Old 10-24-2017, 06:37 PM
Jokerpatch
Fire Beetle
 
Join Date: Nov 2008
Location: Overthere
Posts: 9
Default

i solved my problem. i had to add address and localaddress tags to config.xml

Code:
<address>local ip address</address
<localaddress>127.0.0.1</localaddress>
now i can log in create my characters, play with zones and junk.
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 07:24 PM.


 

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