PDA

View Full Version : cannot connect to local vm


Jokerpatch
10-21-2017, 02:51 PM
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/EQEmu/Server/master/utils/scripts/linux_installer/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
<?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
[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

Thalix
10-21-2017, 05:32 PM
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:


#!/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"

Jokerpatch
10-21-2017, 05:37 PM
i actually did that once but it continually printed this:

sh: 1: ./loginserver not found

Thalix
10-21-2017, 05:38 PM
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:

cd /home/eqmeu
ln -s /home/eqemu/server_source/Server/build/bin/loginserver .


(or home/eqemu/server_source_bots if you have bots active)

Thalix
10-21-2017, 05:43 PM
A reason could also be that you have compiled without the loginserver. In that case:


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

Jokerpatch
10-21-2017, 05:47 PM
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

Thalix
10-21-2017, 05:49 PM
Then you need to recompile the sourcecode and build the loginserver.

Jokerpatch
10-21-2017, 06:35 PM
i started to recompile everything, it got to about 65%:


/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.

Thalix
10-21-2017, 07:22 PM
I think you need libsodium:

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


apt-get install libsodium-dev libsodium18


Then you need to restart the compilation, starting with "rm CMakeCache.txt" ...

Thalix
10-22-2017, 05:55 AM
So you got it working?

Jokerpatch
10-22-2017, 11:45 AM
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.

Jokerpatch
10-22-2017, 02:33 PM
the problems i found were in this function:


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:


std::string eqcrypt_scrypt(const std::string &msg)
{
std::string ret;
ret.resize(crypto_pwhash_scryptsalsa208sha256_STRB YTES);

if (crypto_pwhash_scryptsalsa208sha256_str(&ret[0], &msg[0], msg.length(),
crypto_pwhash_scryptsalsa208sha256_OPSLIMIT_SENSIT IVE, crypto_pwhash_scryptsalsa208sha256_MEMLIMIT_SENSIT IVE) != 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.

Jokerpatch
10-22-2017, 03:00 PM
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

Jokerpatch
10-24-2017, 09:25 AM
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:


<?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:

[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

Jokerpatch
10-24-2017, 06:37 PM
i solved my problem. i had to add address and localaddress tags to config.xml


<address>local ip address</address
<localaddress>127.0.0.1</localaddress>


now i can log in create my characters, play with zones and junk.