PDA

View Full Version : EQEmu Console Project


Uleat
04-28-2012, 09:09 AM
I've spoke about designing a front-end application for EQEmulator on another thread and decided it was time to start my own to bring in ideas and suggestions. Just remember the concept of this project is focused mainly on installing and configuring a working server the first time and with minimal effort.

(Just remember that my programming skills are lacking and this is a learning process for me.)


This project is the result of issues that I had installing and configuring my server based on my level of knowledge (or lack thereof..) I've read numerous posts asking for help concerning the same problems over-and-over. There was a post somewhere that asked if the programs could, essentially, be run through a windows form rather than three independent 'com' windows. My first thought was to search search the internet and see if someone already knew how to do this. I found a few snippets of code and off we were!


The main goal of this project is to provide a 'Windows' interface that can install and configure the required support software, download/compile source code through command-line scripts, and install/maintain/update content.


I hope to implement not only a working emulator console, but also add AllaClone support as well.


These are the main foci of what I want to accomplish, but as I discover what can and cannot be accomplished with the existing EQ client, options and features may have to be adjusted.


Wish me luck!

Uleat
04-28-2012, 09:34 AM
If you read my statement about multiple servers in this console, I did run across an old Linux support forum post saying that the world server port 9000 was hard-coded into the client.

So, unless I hear otherwise, the configuration is looking like one (1) active world server, (1) active login server, undetermined remote server support, undetermined remote database server support, (1) AllaClone web-host and undetermined 'Custom' web-host.

U

Secrets
04-28-2012, 12:18 PM
There's already something like this that runs on the same port as 9000. Enable telnet in eqemu_config.xml and telnet into the server.

As for remote database support, you can open up MySQL to the internet on a non-standard port & do password + host authentication.

If you need the telnet console improved, perhaps someone could help you here.

If you need a web-based interface, there is one that Storm Haven uses that is built into the server as 'HTTP' support. The related files are in the utils folder somewhere on SVN.

iluvseq
04-28-2012, 01:21 PM
He's misusing the word 'console' Secrets. From what I can tell he's trying to create an auto-installer for folks who want to run servers but don't know how to set one up. Nothing in what he has posted leads me to believe he's trying to create any sort of server administration console.

the concept of this project is focused mainly on installing and configuring a working server the first time and with minimal effort.

Amra
04-28-2012, 05:43 PM
Just my opinion.. If you can't set up EqEmu with the wealth of knowledge within this forum you really should find another hobby and stick to being a player.

Uleat
04-28-2012, 09:01 PM
I guess the term 'Front-End' would be more appropriate, but I've never seen a piece of software entitled as such. I only chose 'Console' because I want to 'Consolidate' the basic steps and processes involved in getting a server up and running.

I understand what a telnet console is (I've looked at enough orange and green screens in the military), but my misunderstanding about port 9000 was that I thought the login server assigned this to the client when it logged in. I didn't realize it was hard coded into the client, and hence my change in the number of world servers that a single computer can host.

And yes, the main focal points are install/configure, but I want it to also start as well. It will have a built-in browser for accessing the emulator's http page (port 9080), along with some other basic functions. If a person wants to install/configure using this 'console', they can still use 'serverstart.bat', 'ServerAdmin', etc... to run it.

I'm trying to attempt a 'non-duplication' effort, so I don't mind anyone sharing facts, opinions, criticism, etc...

U

Uleat
05-06-2012, 08:15 AM
I have been able to get a working concept of this "front-end" to load all three server programs and report their output back to windows form textbox controls using an asyncronous callback method. (And yes, the server works...)

However, I've run across an issue that I was wondering if any of you guru's out there may have run across and could point me in a direction on.

I'm only receiving output from the actual program and not from any internally called processes (i.e., no 'starting zone xx' in the eqlaunch.exe window.) Is there a process method class, like ProcessStartInfo, that will allow me access to these internal processes? Or is there a way to 'hack' Process.Modules to gain access to them so I can add handlers to redirect their output back to the parent process's IO stream?

VB or VC++ references are okay.


Thanks!
U

Uleat
05-12-2012, 02:34 AM
Ok, I think that I've narrowed down this problem a bit and believe that there are multiple issues with the output redirect portion of this project...

With <EQEmuLoginServer.exe>:

I am not receiving any redirected output at all. Tracing back through the source code, all entries are made from <Server_Log->Log>.


With <World.exe>:

I receive all <write>, <_log> and <logfile->write> messages down to [Error] 'eqtime.cfg' is NOT a valid EQTime file. File version is 0, EQTime version is 1000 (I have a blank eqtime.cfg that I need to set.) At this point I no longer get messages, even from the same handlers. This one could be that my buffer pointer is not resetting..I'll have to check the code on that.


With <EQLaunch.exe>:

I only get the first <write> message [Debug] Starting Log: logs/eqemu_debug_xxxx.log. Even the <_log>-based entries that I was receiving with <World.exe> are not coming through on this process.


It could be that my IO streams are being cleared before my async callback reads them (using a 512B buffer), but I haven't figured out how to see if that's happening yet. It's also possible that the additional internal processes are running on a different thread than what my <server>|<interface> pipes are on and are not catching the output. I am using three unqiue process definitions to initialize the processes with processstartinfo->useshellexecute = false, etc...

Since the <World.exe> redirect works for a bit and then stops, I'm almost thinking that the ->BeginRead() call is timing out and needs to be invoked again. I'm going to continue working on this, but I'm still open to hints and suggestions! :D (Suggestions also includes those for features)


U

iluvseq
05-12-2012, 08:37 AM
Logs are good.

If you want to allow them to be viewed in some sort of GUI, instead of intercepting the writes, simply tail the files themselves.