PDA

View Full Version : ATTN! help me test DOS IRC server please



Mike Chambers
June 16th, 2008, 12:03 AM
the quickbasic IRC server i've been working on seems to be usable now. after you connect and log in successfully, it will automatically send you to channel #test. i will be idling in there all the time. it is running on a 286 machine. (EDIT: i have it running on an XT clone now instead)

this server is very rudimentary right now. the only channel it allows you to use is #test, and private messages are not allowed yet. the only messages allowed are those sent to #test (EDIT: this is no longer the case, scroll down more in this thread for details)

i am basically just trying to see how reliable the code is. i want to keep it up at least for a few days, hopefully with a fair number of people logging in and out.

if you guys want to log in, it's at 66.190.142.200 on port 6667

mbbrutman: i'm not sure how the client you've been writing is going to work with it... it should be fine, but i am just warning you that very few commands are recognized by the server right now so you may have some issues trying to use that. i've been testing it through mIRC and also direct telnet sessions. works fine with those.

by few, i mean this is the entire list atm: NICK, JOIN, PART, PRIVMSG.

performance on a 12 mHz 286 system (interpreted code, haven't even compiled it yet... interpreted is a good bit slower) seems to actually be very quick. there is well under 50 ms lag time for a message sent to the channel to show up on all the clients' screens. (that's with 8 clients connected) i imagine once compiled, it would be usable for sure on an XT machine. i am anxious to try that in the near future. i would imagine it couldn't be any slower than 400-500 ms or so for an XT to send a message to all 8 clients.. not exactly fast, but that should be usable.

thanks for the help guys!

for those interested, here is the (ugly) code so far. it should work under QuickBASIC versions 4.x and 7.x. it is written in QB 4.5. if you want to try it, the QB.QLB or QBX.QLB quicklibrary has to be loaded when you start QB. for 4.x: QB.EXE /L QB.QLB -or in 7.x- QBX.EXE /L QBX.QLB

and, of course, you have to have a packet driver and tcpdrv/ntcpdrv loaded first.

Mike Chambers
June 16th, 2008, 12:59 AM
i just logged into it from leetIRC running on another computer... leetIRC and this server do NOT like each other much atm. i am not sure whether the problems are becuase of my server code or the leetIRC code. i've never had any issues like i have here on any other IRC servers with that client, so i'm assuming it's in the server.

all will be fixed, asap. but for now, i definitely recommend using mIRC for this!

Jorg
June 16th, 2008, 02:14 AM
TinyIRC Version 1.0 Build 1099 crashes the moment I connect.

mbbrutman
June 16th, 2008, 05:15 AM
Just a quick test ...

My DOS IRC client connected and was able to see the server NOTICE messages, but it wasn't very functional. I could see myself join the channel from MIRC running on another machine, but none of the messages that I sent from the DOS machine appeared anywhere.

Also, MIRC reported that my DOS client left when it had not and it was still clearly connected. There seem to be some buffering issues - things are not being processed when they should.

Keep working on it, and use multiple clients ...

Mike Chambers
June 16th, 2008, 12:24 PM
Just a quick test ...

My DOS IRC client connected and was able to see the server NOTICE messages, but it wasn't very functional. I could see myself join the channel from MIRC running on another machine, but none of the messages that I sent from the DOS machine appeared anywhere.

Also, MIRC reported that my DOS client left when it had not and it was still clearly connected. There seem to be some buffering issues - things are not being processed when they should.

Keep working on it, and use multiple clients ...

i just tried your client on it. i see what you mean about packets not being processed at the right time. i think i know what that issue is. in your prog, what do you send as an end of line terminator? CR,LF? CR alone or LF alone?

mbbrutman
June 16th, 2008, 12:35 PM
CR and LF is the spec. That's what I send.

That being said, I'll double check ..

Mike Chambers
June 16th, 2008, 12:51 PM
CR and LF is the spec. That's what I send.

That being said, I'll double check ..

yeah, i actually keep a (massive 50 page) print out of RFC 1459 right here on my desk as i work on it. i want to make sure everything conforms to the proper specs. i'm going to take a close look at the code and try to find the problem.

i deleted the code that makes clients auto-join #test... i only wrote that part so i wouldn't have to keep typing /join #test when i'm experimenting.

Mike Chambers
June 16th, 2008, 07:52 PM
mike, i fixed the issue with your client. my buffering was a little screwy, you were right. it handled mIRC okay, but i had to make it a little bit more forgiving.

i have added all kinds of things today:
- JOIN/PART works
- dynamically create/kills channels
- private messaging works now
- channel topics
- it actually recognizes the QUIT command now
- LIST command implemented and working
- doesn't automatically join you to #test now
- configurable via DOSIRCD.INI file, rather than port 6667 and domain "dosircd.localhost" domain hardcoded
- sends MOTD from MOTD.IRC file
- after you initially register with the server, you get a lot more data from the server. it sends all the proper info that a normal server would.
- various other fixes/improvements

the next thing for me to work on is channel/user modes and the enforcement of them as well as coding a pinger to check for dead connections. after that, i was going to hardcode services(nick/chan/oper and maybe a memoserv if i'm bored enough) directly into the IRCD.

i've tested the latest version of my code with: mIRC, your homebrew client, bitchx, irsii, x-chat, kvirc, ksirc, and you can also use it via telnet without any issues.

here i connected via telnet, and did a copy/paste of what you get after a successful connect and /NICK:


:dosircd.localhost 001 mike_c :Welcome to the IRC server at dosircd.localhost mike_c!nobody@192.168.0.91
:dosircd.localhost 002 mike_c :Your host is dosircd.localhost, running DOSIRCD version 1.0
:dosircd.localhost 003 mike_c :This server has been online since 06-16-2008 at 22:45:45
:dosircd.localhost 004 mike_c dosircd.localhost DOSIRCD1.0
:dosircd.localhost 005 mike_c MAXCHANNEL=10 NICKLEN=32 TOPICLEN=512 :are supported by this server
:dosircd.localhost 005 mike_c CHANTYPES=# PREFIX=(ov)@+ CHANMODES=pm NETWORK=DOSIRCD10 CASEMAPPING=ascii :are supported by this server
:dosircd.localhost 251 mike_c :There are 1 users and 0 invisible on 1 server
:dosircd.localhost 252 mike_c 0 :operator(s) online
:dosircd.localhost 254 mike_c 0 :channel(s) formed
:dosircd.localhost 255 mike_c :I have 1 client(s) and 1 server(s)
:dosircd.localhost 265 mike_c :Current Local Users: 1 Max: 8
:dosircd.localhost 375 mike_c :- dosircd.localhost Message of the Day -
:dosircd.localhost 372 mike_c :- Welcome to my IRC server!
:dosircd.localhost 372 mike_c :-
:dosircd.localhost 372 mike_c :- This server is running DOSIRCD v1.0, which is developed
:dosircd.localhost 372 mike_c :- by myself (Mike Chambers) in QuickBASIC 4.5 for DOS.
:dosircd.localhost 372 mike_c :- This software is still very early in the development
:dosircd.localhost 372 mike_c :- stage. By connecting to this server and using it,
:dosircd.localhost 372 mike_c :- you are helping me bug test. Thank you!
:dosircd.localhost 372 mike_c :-
:dosircd.localhost 372 mike_c :- It is currently being run on an a very modest 286-class
:dosircd.localhost 372 mike_c :- computer. This demonstrates the very minimal system
:dosircd.localhost 372 mike_c :- requirements for DOSIRCD. It can even be run on an
:dosircd.localhost 372 mike_c :- 8088 CPU with acceptable speed.
:dosircd.localhost 372 mike_c :-
:dosircd.localhost 372 mike_c :- You can download DOSIRCD if you would like to try running
:dosircd.localhost 372 mike_c :- your own server with it. You can find it at my website:
:dosircd.localhost 372 mike_c :-
:dosircd.localhost 372 mike_c :- http://www.rubbermallet.org
:dosircd.localhost 372 mike_c :-
:dosircd.localhost 372 mike_c :-
:dosircd.localhost 372 mike_c :- If you have any questions or comments, you can e-mail
:dosircd.localhost 372 mike_c :- me at miker00lz@gmail.com or find me at the Vintage Computer
:dosircd.localhost 372 mike_c :- web forum. It is located at:
:dosircd.localhost 372 mike_c :-
:dosircd.localhost 372 mike_c :- http://www.vintage-computer.com/vcforum
:dosircd.localhost 372 mike_c :-
:dosircd.localhost 372 mike_c :-
:dosircd.localhost 372 mike_c :- *I WOULD VERY MUCH APPRECIATE YOU LETTING ME KNOW OF ANY BUGS YOU FIND!*
:dosircd.localhost 372 mike_c :-
:dosircd.localhost 372 mike_c :- Thank you!
:dosircd.localhost 372 mike_c :- -Mike Chambers
:dosircd.localhost 372 mike_c :-
:dosircd.localhost 376 mike_c :End of /MOTD command.
:mike_c MODE mike_c :+u

as you can tell, i had absolutely nothing else to occupy my time today. :)

EDIT: ah yes, one more thing... i compiled it to an EXE file, and ran it on my XT clone. i was expecting it to be very slow, but i was VERY surprised... it is lightning quick even on an 8088! :)

ran it in DOSBox to screen cap what it looks like when running:

http://rubbermallet.org/dosircd1.png

Mike Chambers
June 16th, 2008, 10:19 PM
those of you who want to try running a server for yourself with it, you can download it by clicking here: http://www.rubbermallet.org/DOSIRCD-TEST001.zip

that is the current working version of it. still lacking PING stuff, but it works pretty well atm. if you're a QB kind of guy, the source is in there for you to tinker with as well.

Mike Chambers
June 17th, 2008, 06:10 AM
TinyIRC Version 1.0 Build 1099 crashes the moment I connect.

i just downloaded that and tried it. it works 100% perfect on the latest revision of the code.:)

Jorg
June 17th, 2008, 06:53 AM
i just downloaded that and tried it. it works 100% perfect on the latest revision of the code.:)

I can confirm that, I'm on it now :D

Mike Chambers
June 17th, 2008, 07:45 AM
i just now noticed you replied in here, for some reason the thread title wasnt bolded. i had a problem with it locking up the computer randomly, but i think i fixed the issue.

it's up again now (still on an 8088 ) waiting for connections. i'm idling there.

Mike Chambers
June 17th, 2008, 03:32 PM
if anybody else wants to download the server and run it on one of their machines, i would greatly appreciate your input on it! mike b? jim? anybody? :)

http://www.rubbermallet.org/DOSIRCD-TEST001.zip

i know you guys have busy lives. let me know if you get a chance to mess with it. i would love for others to see if they run into any problems with it. it's getting fairly close to being completed already.

still to do list:
- PING (i don't expect that one to take much more than 30 seconds to code lol)
- NickServ/ChanServ/OperServ/MemoServ
- comprehensive real-time REMOTE administration via a new custom "serv" bot... things like ability to change MOTD, amongst other stuff
- hopefully find some way to get more than 8 connections at once with TCPDRV

i sent peter tattam (TCPDRV author) an e-mail asking about the limit, and if there's any way to increase it. i don't expect much help from him, but it's worth asking about. i wonder if it would be possible to put two or more TCPDRV's in memory at the same time, and have them share the one packet driver. even if i can do that, there is the obvious problem of each instance not being able to use the same IP address. it's probably not even worth looking into. not only the IP thing, but imagine the memory use! ugh.

i am trying to keep memory requirements as low as possible. my compiled EXE for this so far is 69 KB, so that combined with TCPDRV, packet driver, and my program allocates around 15 KB of memory for all of it's workings like buffers, status log, MOTD (i don't want that to be read from disk each time, keeping it in memory boosts performance on real old PCs), etc.

mbbrutman
June 17th, 2008, 05:06 PM
I'm not ready to download it and run it myself, but I wouldn't mind connecting to yours and exercising it. I connected this morning but I was the only person. An hour or two ago it wasn't responding to new connections, and probably wasn't running.

When are you going to run it again for an extended test?

Mike Chambers
June 17th, 2008, 05:42 PM
I'm not ready to download it and run it myself, but I wouldn't mind connecting to yours and exercising it. I connected this morning but I was the only person. An hour or two ago it wasn't responding to new connections, and probably wasn't running.

When are you going to run it again for an extended test?

yes, i had it down for a while when i was playing with the code a little bit. i just turned it on, so it us up now. i'm logged in, and plan to keep it up for most of the night. still doing it on the 8088, simply because i can't believe how quick it runs on it! the longest delay i've seen with it is about 100 ms. i'm not sure how i pulled that off between 8 sockets, a user interface, and network I/O but i am not complaining! i just tried to make the code as efficient as i could as i wrote it. efficient and quickbasic is generally an oxymoron, but i think you will be impressed with it. (hell, "quickbasic" itself is an oxymoron!)

Mike Chambers
June 17th, 2008, 07:43 PM
good test run we had there, mike. we were talking for a good 45 minutes or so, and the server held up fine.