Zitat:
Zitat von Daisuke [1] In wie weit bevorzugt Shareaza andere shareaza-clients vor eMule-clients? mir ist bewusst, dass shareaza eMule und besonders den mods in vielen dingen hinterherhinkt, doch wäre eine Bevorzugung von Shareaza-Clients absolut unbeabsichtigt. |
So etwas war bei Shareaza mal angedacht (ich kann den Link gerne noch einmal heraussuchen). Außerdem war 'raza früher closed source, auch das trägt nicht unbedingt dazu bei, daß man diesem Client nun mehr Vertrauen entgegenbringt
Zitat:
[2] Wie genau emuliert "Emulate Others" Shareaza um die angebliche Benachteiligung auszugleichen?
|
Das kann ich Dir genau beantworten, weil "emulate Shareaza" größtenteils von mir stammt:
1) Shareaza sendet eine andere Edonkey-Version (
0x3D, eMule sendet 0x3C). 'Raza wurde mal von den Servern gebannt aufgrund eines derben Bugs, und gefixte 'razas sollten sich dann mit dieser neuen ID ausweisen, daß sie nicht vom Server gebannt werden. Hieran identifizieren sich auch neuere Shareazas, wird also vom emulate nachgeahmt. 2)
Code:
if (thePrefs.IsEmuShareaza() && GetClientSoft() == SO_SHAREAZA)
{
CTag tagMuleVersion(CT_EMULE_VERSION,
(SO_SHAREAZA << 24) |
(2 << 17) |
(2 << 10) |
(1 << 7) |
(0 )
);
tagMuleVersion.WriteTagToFile(data);
Die Versions-Daten, die gesendet werden, entsprechen denen von Shareaza. Ich habe in einem "Sandbox-Experiment" mit zwei Rechnern - einer mit eMule mit emulate, der andere mit 'raza - das emulate getestet - es klappt, aber nur, wenn man beides emuliert. Am Userhash wird nix geändert.
Zitat:
Zitat von Verlierer Da es bei Shareaza aber keinen Uploadzwang gibt - oder zumindest gab - hab ich nix dagegen, dass dieser Client gestraft wird. |
Shareaza wird durch das emulieren in keiner Art und Weise gestraft. Es entstehen dem Client keinerlei Nachteile.
Zitat:
Zitat von aalerich Ehrlich gesagt würde ich denken, das wäre eher eine Frage fürs offizielle Board; ich glaube nicht, daß sich hier jemand mit dem Feature wirklich auskennt. Generell dürften sich wohl nur sehr wenige intensiver damit befaßt haben. |
Hehe, doch ich *g* Von mir stammt ja "emulate Shareaza" und "emulate lphant"
Zitat:
Zitat von Xman der ganze emulieren-Quark beruht auf den Userhash. |
Das Emulieren von eDonkey/Hybrid und MLdonkey beruht (unter anderem!) auf dem Userhash. Das von 'raza und lphant nicht. Aber meine Tests haben ergeben, daß zumindest das Emulieren von eDonkey/Hybrid zu einer besseren Kommunikation zwischen beiden Clients führt - die nehmen mehr von mir, geben mir aber auch mehr. Für Interessierte hier der gesamte emulate-Code:
Code:
// [ionix] emulate other // WiZaRd: optimized!
uchar hash[16];
MEMCOPY(hash,thePrefs.GetUserHash(), 16);
if (thePrefs.IsEmuMLDonkey() && GetClientSoft() == SO_MLDONKEY)
{
if(GetHashType() == SO_OLD_MLDONKEY)
{
hash[5] = 'M'; //WiZaRd::Proper Hash Fake :P
hash[14] = 'L'; //WiZaRd::Proper Hash Fake :P
if(thePrefs.IsLogEmuEvents())
AddModLogLine(false,_T("[EMULATE] Emuliere MLDonkey's Hash für alten MLdonkey: %s"),DbgGetClientInfo());
}
//else use default hash
}
else if ((thePrefs.IsEmueDonkey() && GetClientSoft() == SO_EDONKEY)
|| (thePrefs.IsEmueDonkeyHybrid() && GetClientSoft() == SO_EDONKEYHYBRID))
{
uint8 random = (uint8)(rand()%_UI8_MAX); //Spike2, avoid C4244
hash[5] = random == 14 ? random+1 : random; //WiZaRd::Avoid eMule Hash
random = (uint8)(rand()%_UI8_MAX); //Spike2, avoid C4244
hash[14] = random == 111 ? random+1 : random; //WiZaRd::Avoid eMule Hash
if (GetClientSoft() == SO_EDONKEY && thePrefs.IsLogEmuEvents())
AddModLogLine(false,_T("[EMULATE] Emuliere eDonkey's Hash: %s"),DbgGetClientInfo());
else if (GetClientSoft() == SO_EDONKEYHYBRID && thePrefs.IsLogEmuEvents())
AddModLogLine(false,_T("[EMULATE] Emuliere eDonkeyHybrid's Hash: %s"),DbgGetClientInfo());
}
data->WriteHash16(hash);
// [ionix] emulate other
...
Code:
// eD2K Version
// Spike2 - emulate Shareaza - START
if (thePrefs.IsEmuShareaza() && GetClientSoft() == SO_SHAREAZA)
{
CTag tagVersion(CT_VERSION,SHAREAZAEMUVERSION);
tagVersion.WriteTagToFile(data);
if(thePrefs.IsLogEmuEvents())
AddModLogLine(false,_T("[EMULATE] Emuliere Shareaza's ed2k-Protokoll: %s"),DbgGetClientInfo());
}
else
{
// Spike2 - emulate Shareaza - END
CTag tagVersion(CT_VERSION,EDONKEYVERSION);
tagVersion.WriteTagToFile(data);
}
....
Code:
// Spike2 - emulate Shareaza - START
if (thePrefs.IsEmuShareaza() && GetClientSoft() == SO_SHAREAZA)
{
CTag tagMuleVersion(CT_EMULE_VERSION,
(SO_SHAREAZA << 24) |
(2 << 17) |
(2 << 10) |
(1 << 7) |
(0 )
);
tagMuleVersion.WriteTagToFile(data);
if(thePrefs.IsLogEmuEvents()){
AddModLogLine(false,_T("[EMULATE] Emuliere Shareaza: %s"),DbgGetClientInfo());}
}
// Spike2 - emulate Shareaza - END
// Spike2 - emulate lPhant - START
else if (thePrefs.IsEmuLphant() && GetClientSoft() == SO_LPHANT)
{
CTag tagMuleVersion(CT_EMULE_VERSION,
(SO_LPHANT << 24) |
(2 << 17) |
(9 << 10) |
(0 << 7)
);
tagMuleVersion.WriteTagToFile(data);
if(thePrefs.IsLogEmuEvents()){
AddModLogLine(false,_T("[EMULATE] Emuliere lPhant: %s"),DbgGetClientInfo());}
}
// Spike2 - emulate lPhant - END
// Spike2 - enhanced emulate MLdonkey / eDonkey / eDonkeyHybrid
else if (thePrefs.IsEmuMLDonkey() && GetClientSoft() == SO_MLDONKEY)
{
CTag tagMuleVersion(CT_EMULE_VERSION,
(SO_MLDONKEY << 24) |
(2 << 17) |
(7 << 10) |
(3 << 7)
);
tagMuleVersion.WriteTagToFile(data);
if(thePrefs.IsLogEmuEvents()){
AddModLogLine(false,_T("[EMULATE] Emuliere MLdonkey: %s"),DbgGetClientInfo());}
}
else if (thePrefs.IsEmueDonkey() && GetClientSoft() == SO_EDONKEY)
{
CTag tagMuleVersion(CT_EMULE_VERSION,
(SO_EDONKEY << 24) |
(10405 << 17)
);
tagMuleVersion.WriteTagToFile(data);
if(thePrefs.IsLogEmuEvents()){
AddModLogLine(false,_T("[EMULATE] Emuliere eDonkey: %s"),DbgGetClientInfo());}
}
else if (thePrefs.IsEmueDonkeyHybrid() && GetClientSoft() == SO_EDONKEYHYBRID)
{
CTag tagMuleVersion(CT_EMULE_VERSION,
(SO_EDONKEYHYBRID << 24) |
(10405 << 17)
);
tagMuleVersion.WriteTagToFile(data);
if(thePrefs.IsLogEmuEvents()){
AddModLogLine(false,_T("[EMULATE] Emuliere eDonkeyHybrid: %s"),DbgGetClientInfo());}
}
// Spike2 - enhanced emulate MLdonkey / eDonkey / eDonkeyHybrid
else
{
// eMule Version
CTag tagMuleVersion(CT_EMULE_VERSION,
//(uCompatibleClientID << 24) |
(CemuleApp::m_nVersionMjr << 17) |
(CemuleApp::m_nVersionMin << 10) |
(CemuleApp::m_nVersionUpd << 7)
| (UINT(DBG_VERSION_BUILD)) //>>> WiZaRd::ClientAnalyzer
// (RESERVED )
);
tagMuleVersion.WriteTagToFile(data);
}
Bei weiteren Fragen zu den emulates - einfach fragen