Archive for the ‘Amusing’ Category

Securing the unsecure ?!

December 25, 2009

Seasons greetings everyone from us at DCDev

Wanted to rant about private only scripts and the idiocy usage of em since a script really cant determine if its public or private.

Private only scripts are mainly used in Ptokax / Verlihub or any soft using lua scripting interface.

So what does the tag stand for in DC++

1/1/1

first digit is unregistered usually determined as public hub but all it really is is unregistered.

second digit is registered here is where most people thing it means private and hidden away in the deep corners of the direct connect network (it kinda amuses me) since it could be a public vip or just an account on hub that you registered yourself at.

Third and last is of course the operator digit this really doesn’t show if its private or public either.

and using hublist to check if same user is online at other hubs on NMDC is pretty dumb too since, It might be an shared connection.

What if the person has a brother or sister that uses DC++ and likes to be  on a public hub to talk about nothing and everything.

plus it really cracks me up that we are talking about securing private hubs that are communicating via cleartext protocol :D using NO ENCRYPTION thats really funny how secure is the hub in that regard let me tell you’ll.

Its really just a waste so in the holiday seasons i leave you with the words of wisdom your only as secure as your own box (hub).

P.S for all those people making these scripts for god sake do it right and put in a 60-90 second delay before kicking the poor sap since there can be a slight delay in updating myinfo on NMDC and for that matter ADC since i know the idiocy is gonna continue.


I help those who help themselves! – Zoidberg (Futurama)

DC bans: our idiosyncrasy

June 15, 2009

Ban, kick, drop. Words that instigate fear upon those poor key-less users, by granting their operators god-like powers.

If you’ve been frequenting DC hubs for some time, surely these are the definitions that you have built up for these terms:

  • Ban: add the offender to a list of prohibited users that may never be allowed to log back into the hub.
  • Kick: add the user to the prohibited list, but lift the stoppage after a certain amount of time.
  • Drop: just disconnect the user; he may reconnect whenever he wants to.

Now as far as i can tell, this is very specific to the Direct Connect world. In other online communities where exclusions are necessary, like gaming servers or IRC, these are the definitions that i have always encountered so far:

  • Ban: add the offender to a list of prohibited users that may never be allowed to come back – the ban can be temporary or permanent, but regardless, it’s still a ban.
  • Kick: just disconnect the user; he may reconnect whenever he wants to.

To summarize, here is a handy chart that you might find useful if you happen to be admin in DC hubs and in other online communities at the same time:

DC network Rest of the world
Ban Permanent ban
Kick Temporary ban
Drop Kick

I hope you’re confused enough now!

poy

0.700 from the users’ point-of-view

October 18, 2007

Want your System Stability Index to fall? Then start using DC++ 0.700 :)

First.. What System Stability Index (SSI) is?

Windows Vista includes a great tool called Reliability and Performance Monitor. This collects data and creates reports about your system. Also, it has a so-called System Stability Index which is a number between 1 and 10 to show your system stability. This index is based on software and hardware failures occurs during the run of the operating system.

How DC++ comes to SSI?

When DC++ 0.700 released, I thought I was going to test it then write some blog posts on some sites about it, but lately I discovered Reliability and Performance Monitor and I thought this was going to tell everything about the stability of release.

Just check this graph:

Reliability and Performance Monitor

The highlighted date (10. 11. 2007.) is the day I tested DC++ 0.700 for 20 minutes.

Hm?

I know most bugs are discovered when a lot of users testing the software, but it has so many that it’s even unusable for using it as a secondary, testing client and they could be discovered by trying it out by a very small group of users (rather developers/testers).

I also know that this post may irritate some other people, but I think when releasing a software, we must ensure a minimal usability, since something which is called a “release” is intended for the users, not for testers.

Continue on with your break

August 2, 2007

A really nifty feature in DC++ is the ability to change the priority of files in the download queue, with the keyboard. It’s quite simple, you just press ‘+’ or ‘-’ on the numeric keyboard. When you select multiple files, all of them change priority.

At one point, however, selecting multiple files and changing the priority on them, didn’t really change the priority for some files. This appeared (at first) to happen randomly, but after a couple of minutes, the reason became more clear.

When you selected several files, that had different priorities, and pressed ‘+’ or ‘-’ until one of the files reached “Highest” or “Paused”, the other files completely seized to update. You could try pressing 4, or 400, times more, but nothing would happen.

The buggy code was similar to what I’ve written below.
1. loop until the entire list of files have been looked at
2. if the selected file is in “highest” or “paused” mode, break to 4 and continue on
3. otherwise, change the priority and jump back to 1 and continue on
4. “do some other stuff that isn’t related to this…”

If you notice, the above “code” show exactly what the bug report said. The solution was quite simple, too; “change the 4 to a 1″.

Now you know what you’ve always (secretly) wanted to know about that priority bug.

(The reason “break” and “continue” is used here, is because the actual fix was to literally replace the code “break” with “continue”.)

Don’t forget that you can make topic suggestions for blog posts in our “Blog Topic Suggestion Box!”

The haunting 0.402 connection bug

June 13, 2007

When a version of DC++ is in development state, there’s a handfull of people who run and try the version. It’s a handfull since you need to compile it yourself, requiring some knowledge…

Unfortunately, we have no test-suit that automatically perform the tests for us, so we have to do tests rather random and arbitrarily. If I’ve sent in a patch, I usually test the functionality of the patch (first of course before sending, but always after it’s merged) I’ve previously submitted.

Another functionality that I always test, almost mechanically, regardless if I’ve sent a patch or if that particular feature/code has specifically been touched, is the ability to connect to the same version of DC++. (That is, I use two instances of DC++.)

As you might know by now, current DC++ doesn’t support some older versions of DC++. This is of course intentional, and isn’t considered a bug. Sometimes, the development version drops support for versions it should support, such as the latest released version.

And sometimes, just sometimes, the development version drops support for itself.

Let me take you back to version 0.402… New code base and ADC’s first day light. It was quite a stable version, as you might have noticed with 0.403. Though, 0.403 was a little better than 0.402, and I’ll tell you why…

It was during my initial experience as a DC developer; I found DCDev Public. Though, much of a “developer” I wasn’t. Anyway, one of the little restrictions was the (lack of) ability to connect to other people in the hub. (Which is still true, in its current incarnation.) However, there were some that could connect to others, and that were the operators. One of the little nice touches with DCH++. :) (I have no idea if other hubs have this functionality, but I’m sure they do.)

Well, as I wasn’t an operator back then, and I didn’t to much “testing” myself (I don’t think I had even managed to compile DC++ at that point), I couldn’t try out the development version until it was released.

When it did, I recieved a notification from SourceForge, which you can still sign up to today, and downloaded and fired up DC++. And of course connected to the dev hub.

And minutes after I had started DC++, I started crashing. Firing up and *bam*, a crash. However, I tracked the problem to the dev hub. “Huh? How could I crash for just being in the hub?” Well, as the operators could download and I could share (well, duh!), one of them decided to check out my share. It was TheParanoidOne, and he was running the same version as myself; 0.402…Well, after some more investigation (and of course more crashing), I was able to conclude with TPO that it was infact him that crashed me. Weirdly enough, one could connect to older versions just fine. DC++ just was able to remotely crash other users running the same version.

Any way, 0.403 was quickly released later that day, with a “100% CPU fix”… I didn’t really see 100% CPU, but whatever stops me crashing, right?

And that is the story of the connectivity bug that has haunted me for years.

Do you perform any weird tests?

Don’t forget that you can make topic suggestions for blog posts in our “Blog Topic Suggestion Box!”

The WTFs

March 9, 2006

Most geeks out there probably have read The Daily WTF. If you haven’t I really recommend you to. The jist of it is that people submit ‘what the f*ck’ posts. Something totally outrageous and stupid and… You get the idea. I thought we’d have something like that here. So I bring you: The DC++ WTF! Edit: I think I fixed the formatting… We’ll start with something that probably every developer have seen: 

// BAH, sorting on bytes will break of course…oh well…later…
From windows/PublicHubsFrame.cpp in the DC++ source… And it’s arnetheduck who wrote it! :)

Next up is psf8500… He wrote a feature where one didn’t need to see everyone’s joins and parts, but only those that’s in your favorites. Nice feature, but it got a little wrong in the readme…   

/showjoins Toggles joins/parts messages for the current hub/favshowjoins Toggles joins/parts messages of favorite users for the current hub (requires showjoins to be enabled)

Now, why would ’showjoins’ have to be enabled when you shouldn’t need to enable it?

 

This one is an old one by arne. And we find it in the changelog.   

* Fixed width of some status bars when font size differs from mine (I think…why would anyone want to change anyway? =)

Here’s again one of those comments that just can crack a person up… We find this in ConnectionManager.cpp 

 

int number = Util::toInt(num); // Damn, both want to download…the one with the highest number wins…if(aSource->getNumber() < number) {

// Damn! We lost!aSource->unsetFlag(UserConnection::FLAG_DOWNLOAD);
aSource->setFlag(UserConnection::FLAG_UPLOAD);} else if(aSource->getNumber() == number){
putConnection(aSource);
return;}
Damnit arne! We want to win!!!111oneone Same file… Another comment…   

 

// Check that target contains at least one directory…we don’t want headless files…
So, a file without legs is fine? (Now, I don’t know what a ‘headless file’ is and it doesn’t matter so don’t point me to Google. Or MSN. Or something.) 

It is always nice to see that developers care about us little users. Aint it?   

try { addList(aUser, QueueItem::FLAG_DIRECTORY_DOWNLOAD);} catch(const Exception&) {

// Ignore, we don’t really care…}

To all of you who love Microsoft bashing, DC++ has a restriction because of Windows 95… Yay! 

// We want to limit the buffer to 25000 characters…after that, w95 becomes sad…
This limit is actually how many characters your hubframe will allow you to see! So, blame all of those Windows 95 users. Now, why do I think of a twelve year old with a lot of pimples in their face, sitting and watching Teletubbies… 

// Strange!! This disables the scrolling…????

And lastly:   

// the client is dead, long live the client!
Yeah!