almiteycow

Public Development Starting

43 posts in this topic

Alright, after a few mangled attempts at porting Apex, I've got a clear direction, but I need your help.

I'm organizing a few key points that we'd like to have for a release. I'm going to try to grab a tracker for this and should be uploading to CVS shortly, to keep everything simplified. For now, if you're working on anything, just let me know, so I can know who's doing what, since there's at least a few of you that want to help.

We should keep the client part as daemon-like as possible, so we can disconnect and reconnect GUI as we please, with many different interfaces being allowed (I'm planning at least a GTK interface)

EDIT: CVS is on Sourceforge - http://sourceforge.net/projects/apexdc

checkout the apex-linux module.

Here's the list (mostly stolen from the tour page):

GENERAL:

VITAL: Document the protocol between the client and the gui. Here's what little I know at the moment.

The protocol is quite easy, the server first sends an int, which is in

big-endian, so you have to convert it to little-endian, after that the

server sends an char which has the size of the value that was in the

int.

The char that was recieved now contains an event with different

values. It's an XML-ish format on the string so if you wanna get the

current event you check for the tag <Event> and the value that is

between that and </Event> is the event.

You can always check on the server interfaces and from there you can

see what values it will send.

Fake Detector

Magnet Link Support (not sure exactly how this would be done in Linux)

CLIENT

These two are absolutely necessary, and need to be compatible with the Windows version (this is what the bounty is for, still):

Segmented Downloads

Partial File Uploads

Configurable descriptions

Share skiplist

OP Share Hiding

Speed Limiting

Auto update IP on program startup (Can retrieve external IP)

Auto-disconnect Slow Users

Avoid ISP throttling on incoming and outgoing connections

Keep stats for announcements (see GUI part)

GUI

Copy Apex's toolbar controls

/nowplaying - I think maybe it can be done with DBUS, it should support the big linux media players, Banshee/Rythymbox/Amarok/XMMS

Various hub control features - in the Window Menu

System tray controls

About menu

Check to see if your current connection settings are working

Tray Balloon popups (New PM recvd/File Complete/etc)

Sounds for events

Hide hub topics

Fancy-shmancy progress bars

Keyboard Shortcuts

Emoticon Support (hopefully using the same emoticon packs as Windows version)

User ignore options

Announcements to hub:

Ratio: type /ratio or /r

Uptime: type /uptime or /ut

Public statistics: type /pubstats

Show statistics only to yourself: type /stats

Clear chat: type /clear or /c

Advertise ApexDC++: /apexdc++

Use /help for a list of all commands

Note: Not all of this is planned for the first release, releases will come as significant progress is made.

Current source is attached (it's multidc++, with a linux makefile, nothing really changed)

Try to keep this thread clean, related stuff only, no feature requests and such.

Edited by almiteycow

Share this post


Link to post
Share on other sites

Here's an updated makefile for little endian machines (x86).

Right now I'm working on throwing up a quick PHP interface for testing, when that's working, I'll upload that and start documenting protocol.

EDIT: PHP interface didn't work out so well. Telnet does though. Telnet to your server to test stuff for now.

PROTOCOL:

Commands are sent to the server int, then string. The int is the number of characters in the string, but converted from big-endian decimal to little-endian (i think).

Upon connection, the password command must be sent. If you change the number of characters in the following strings, the number in front will change.

Commands (remember to put the int in front of all commands, not just the ones that already have them):

Login(send password) - 45000000<Category>Server</Category><Type>Password</Type><Password></Password>

Retrieve General Settings - 40000000<Category>SettingsManager</Category><Type>GeneralSettings</Type>

Set Nick - <Category>SettingsManager</Category><Type>SaveGeneralSettings</Type><Nick>(Nick)</Nick>

Set email - <Category>SettingsManager</Category><Type>SaveGeneralSettings</Type><E-Mail>(E-Mail)</E-Mail>

Set description - <Category>SettingsManager</Category><Type>SaveGeneralSettings</Type><Description>(Description)</Description>

Set upload speed - <Category>SettingsManager</Category><Type>SaveGeneralSettings</Type><UploadSpeed>(UploadSpeed)</UploadSpeed>

Logout - 2C000000<Category>Server</Category><Type>Quit</Type>

Edited by almiteycow

Share this post


Link to post
Share on other sites

Uploaded to sourceforge's CVS, with ZeXx86's changes. :)

I'll be documenting the protocol stuff for a bit, feel free to give me a hand with that or anything else.

Edited by almiteycow

Share this post


Link to post
Share on other sites

Been a bit busy at my job lately, but today I got a chance to do the following:

Merged with Alpha 3 of multidc++.

Uploaded to sourceforge.

Share this post


Link to post
Share on other sites

So what's up with Linux client? :) ... I'm really anxious to see some beta release ;) :)

Share this post


Link to post
Share on other sites

So what's up with Linux client? :) ... I'm really anxious to see some beta release ;):D

I don't think we're everywhere near that stage, just seems that enough is done for others to be able to start actually adding stuff from a decent core (or start of one at least). Unfortunately, very few people seem to be interested in developing it, and even less making progress with it. :)

Share this post


Link to post
Share on other sites

I don't think we're everywhere near that stage, just seems that enough is done for others to be able to start actually adding stuff from a decent core (or start of one at least). Unfortunately, very few people seem to be interested in developing it, and even less making progress with it. :(

Sounds bad :crying: .... cause there isn't really a full featured dc client on linux :unsure:

Share this post


Link to post
Share on other sites

Awesome, looks like we're getting somewhere, and FINALLY a daemonised DC client... this is just great. I will finally be able to put DC on my server and connect to it at will :)

I've learnt quite a bit about C++ and abstract structures etc. during this semester, so I might just be at the stage where I can actually comprehend at least a little bit of the code :D. The semester is almost finished, I only have two weeks, two weeks break and exams, so I will look at the code, see if I can contribute and do what I can :D The non-windows world needs a DC full featured client.

@Hitman: LinuxDC++ isn't too bad, and there's also GtkDC which is pretty much the same thing but libified and less featured :)

Share this post


Link to post
Share on other sites

Awesome, looks like we're getting somewhere, and FINALLY a daemonised DC client... this is just great. I will finally be able to put DC on my server and connect to it at will :)

I've learnt quite a bit about C++ and abstract structures etc. during this semester, so I might just be at the stage where I can actually comprehend at least a little bit of the code :D. The semester is almost finished, I only have two weeks, two weeks break and exams, so I will look at the code, see if I can contribute and do what I can :D The non-windows world needs a DC full featured client.

@Hitman: LinuxDC++ isn't too bad, and there's also GtkDC which is pretty much the same thing but libified and less featured :)

Alright Xilon, sounds good. Hopefully in a few months we might start getting a bit further.

Share this post


Link to post
Share on other sites

Awesome, looks like we're getting somewhere, and FINALLY a daemonised DC client... this is just great. I will finally be able to put DC on my server and connect to it at will :D

I've learnt quite a bit about C++ and abstract structures etc. during this semester, so I might just be at the stage where I can actually comprehend at least a little bit of the code :P. The semester is almost finished, I only have two weeks, two weeks break and exams, so I will look at the code, see if I can contribute and do what I can :) The non-windows world needs a DC full featured client.

@Hitman: LinuxDC++ isn't too bad, and there's also GtkDC which is pretty much the same thing but libified and less featured :P

hehe, well I have finished 2 semesters of C++ (1 was C and the other C++ [that is object orientied] ) ... unfortunately, there are other subjects to study hard now [so there's no time] and ... umm .... besides.. I don't really think ApexDC code is something I could possibly improve :crying: ... we didn't take any network programming there either...

But I hope someone will take their pleasure and develop LinuxApexDC++ :D:(:( :P

Share this post


Link to post
Share on other sites

Sounds bad :) .... cause there isn't really a full featured dc client on linux :)

Guys, not to undermine the fine work done by almiteycow, but Valknut is by no means dead. It might not have some of the features that Apex and other Windows clients have, but I've gotten it to do everything that I need and to "play nice" on a hub with all sorts of clients and versions of Apex, from 0.4.0 to 1.0.0Beta4. I have used Linuxdc++ too and IMO Valknut is the better option of the two.

http://sourceforge.net/project/showfiles.php?group_id=181579

Share this post


Link to post
Share on other sites

I have used Linuxdc++ too and IMO Valknut is the better option of the two.

Ermm no cause Valknut isnt fully adc compatible so plz don't even.

Share this post


Link to post
Share on other sites

Ermm no cause Valknut isnt fully adc compatible so plz don't even.

I wasn't trying to create that impression. Was basically just saying that it works for me so it might still be an option for others. You don't have to like it.

Share this post


Link to post
Share on other sites

If they get it up to DC++ Standards and get it stable last versions i tested died for me totaly thats why i dont like it at all

Share this post


Link to post
Share on other sites

If they get it up to DC++ Standards and get it stable last versions i tested died for me totaly thats why i dont like it at all

Well, in DC world I like to prefer DC compatible clients. Valknut is fully compatible with DC so it's a good choice.

DC++ is leaning towards ADC and is not DC compatible anymore. Same with ApexDC++; does not fulfill the DC specification.

Here's the DC protocol specification: http://kjarni.cc/files/dc/dcprot.htm

If a client is not compatible with DC, it should not be allowed on DC hubs... plain and simple. DC as DC, ADC as ADC, why should they be mixed?

Share this post


Link to post
Share on other sites

Well, in DC world I like to prefer DC compatible clients. Valknut is fully compatible with DC so it's a good choice.

DC++ is leaning towards ADC and is not DC compatible anymore. Same with ApexDC++; does not fulfill the DC specification.

Here's the DC protocol specification: http://kjarni.cc/files/dc/dcprot.htm

If a client is not compatible with DC, it should not be allowed on DC hubs... plain and simple. DC as DC, ADC as ADC, why should they be mixed?

Sorry, but your post is really a mess.

DC protocol specification you post is not the real specification. It's just because no specification for DC protocol exist. So we can't talk about compatibility with DC specification.

DC compatibility means that the client is able to connect to DC hubs and is able to cooperate with clients in there. And I have no problem with DC++ (and its mods).

Share this post


Link to post
Share on other sites

Version 1.4.1

Last Update 11/29/03

^^ dead fish in the water

time to realize adc is the future and clients that doesnt fix adc is dying so i hope valknut fixes that or linuxdc++ gets the better parts of linux users

Share this post


Link to post
Share on other sites

I would make client part to compile in Linux, but windows part? uhmm... no!

and btw time to realize MS Windows is the future and Linux is dying :D

Share this post


Link to post
Share on other sites

Or more likely windows will be recoded to match linux better and windows apps should work on it.

MS are in court at mo over making their OS so it's incompatible with others.

Share this post


Link to post
Share on other sites

Or more likely windows will be recoded to match linux better and windows apps should work on it.

MS are in court at mo over making their OS so it's incompatible with others.

Well this is crazy too. If I am producing cars, what's my bad that the parts for these do not fit for horse carts or vice-versa?

//Not taht I defend MS, but intension should be proved.

Share this post


Link to post
Share on other sites

Or more likely windows will be recoded to match linux better and windows apps should work on it.

MS are in court at mo over making their OS so it's incompatible with others.

Well this is crazy too. If I am producing cars, what's my bad that the parts for these do not fit for horse carts or vice-versa?

//Not that I defend MS, but intension should be proved.

Share this post


Link to post
Share on other sites

It doesn't work that way, for example, an car engine has parts that fit OTHER cars, an MS product fits ONLY an MS product.

Share this post


Link to post
Share on other sites