just food for thought.....
as mentioned above, theres always the issue of the ones which are powerless to reconfigure firewalls etc.... but never the less... have a read and see what you think.
im sure many of you have used azerus ( spelt right? ) and demonoid.com to download torrents... well demonoid have a little system for ratio which changes on how much you download and share... the more you download without sharing, the lower your ratio depends.. surely using a script to limit their download speed according to their ratio would be doable?
you could store ratio info on a remote server or on the client pc,
// for C++ programmers
// a file is loaded which store the ratio when GUI loads
TStringList *ratiofile = new TStringList();
ratiofile->LoadFromFile(encryptedfile.data);
Edit1->Text=ratiofile->Strings[0];
//turn the value in to an Integer
int Dratio =ratiofile->Strings[1];
//file download complete or done by mb
if (*file complete or mb d/l*)
{
Dratio++
}
//file upload complete or done by mb
if (*file complete or mb d/l*)
{
Dratio--
}
// then dependant of value GT or LT set speed
if (Dratio < 10)
{
*allow full bandwidth
}
if (Dratio > 10)
{
* slightly limit bandwidth
}
if (Dratio > 20)
{
*limit bandwidth more
}
etc etc
//then all whats left is to save ratio when closed or periodically
ofstream saveratio(encryptedfile.data);
saveratio<<Dratio<<endl;
saveratio.close();