Miranda NG Official Community Forum

Other languages speaking Miranda NG users => Deutsch => Topic started by: ecix on 30 04 2017, 19:30:16

Title: Jabber.dll modden?
Post by: ecix on 30 04 2017, 19:30:16
Hallo zusammen,

da dies mein erster Beitrag hier ist, erstmal hallo an alle hier :).
Folgendes. In einer Firma lief mal intern ein OpenFire-Server mit ClientPlugin, sodass nur "Spark" erlaubt war, alle anderen Clients bekamen binnen Sekunden nach dem Login die typische Fehlermeldung das es nicht der korrekte Client sei (zB Miranda, Pidgin...).

Nun hatten wir aber damals einen Kollegen der es bei einer älteren Miranda Version (glaube das war noch nicht mal NG), geschafft hat die jabber.dll so anzupassen, das man dem OpenFire vorgekaukelt hat, man connecte mittels Spark.

Er meinte auch es gibt dafür eine Anleitung, nun nach knappen 3 Wochen experimentieren und googlen (die Anleitung habe ich bis heute nicht gefunden), fange ich so langsam an aufzugeben, aber genau das ist der Punkt wo die "jetzt erst recht"-Mentalität aufkommt, man kennt das ja :D.

Das letzte woran der Kollege sich erinnern konnte war, das er sich damals die Source geladen hat und die jabber Datein so angepasst hat das man es halt vorgaukelt und hat es anschließend compiliert und sich halt die jabber.dll geschnappt und es lief damit.

Ich habe es mittlerweile nachstellen können, da die alten Files noch vorhanden waren, es klappt bei älteren Openfire-Versionen, bei den neueren jedoch nicht, da kriegt man trotzdem ein deny. MirandaNG erkennt die alte jabber.dll gar nicht mehr, leider.

Kann mir einer von euch da auf die Sprünge helfen, was ich tun muss, ich habe wirklich viel geguckt, habe mich zich tage an "iq:version" usw. aufgehalten, aber nichts klappt -.- ...eigentlich wäre es ja nur ein "UserAgent-Switcher" für jabber :)

Ich würde mich echt freuen  wenn mich hier jemand supporten könnte, das wäre ein Traum...

MfG

ecix
Title: Re: Jabber.dll modden?
Post by: Wishmaster on 30 04 2017, 20:02:11
Hi,
Bevor du da am Quellcode herumbastelst: Es gibt in Jabber eine Einstellung, unter Netzwerk -> Kontoname > Erweitert: Sicherheit: Servern das Abfragen der Version erlauben (XEP-0092), kannst du damit den Server austricksen?

Dass Openfire generell Miranda NG blockt kann nicht sein, muss an eurem Server liegen.

Falls nein:



Code: [Select]
BOOL CJabberProto::OnIqRequestVersion(HXML, CJabberIqInfo *pInfo)
{
if (!pInfo->GetFrom())
return TRUE;

if (!m_options.AllowVersionRequests)
return FALSE;

XmlNodeIq iq(L"result", pInfo);
HXML query = iq << XQUERY(JABBER_FEAT_VERSION);
query << XCHILD(L"name", L"Miranda NG Jabber");
query << XCHILD(L"version", szCoreVersion);

if (m_options.ShowOSVersion) {
wchar_t os[256] = { 0 };
if (!GetOSDisplayString(os, _countof(os)))
mir_wstrncpy(os, L"Microsoft Windows", _countof(os));
query << XCHILD(L"os", os);
}

m_ThreadInfo->send(iq);
return TRUE;
}
Title: Re: Jabber.dll modden?
Post by: ecix on 30 04 2017, 20:15:18
Hallo Wishmaster,

oha, die Antwort kam ja prompt :) selten sowas :) aber ich freu mich.

Quote
Dass Openfire generell Miranda NG blockt kann nicht sein, muss an eurem Server liegen.
Tut er auch nicht, jedoch ist ein Plugin installiert, was das connecten mit nicht erlaubten Clients untersagt, findet man auch im Webfrontend unter Plugins...

Habe gerade mit der aktuellsten MirandaNG Version gestetet, leider funktioniert es nicht mit der 1. Variante...

Code: [Select]
manager.localhost  Today
8 22:12 You are using an invalid client, and therefore will be disconnected. Please ask your system administrator for client choices.

zu deiner zweiten variante, ich bin leider programmier-technisch total eingeschalfen, visual studio besitze ich...was genau müsste ich in deinem code schnipsel ändern, sodass openfire denkt, hier kommt die jabber.dll von Spark :)

Grüße und vielen Dank im Voraus

grüße

ecix
Title: Re: Jabber.dll modden?
Post by: Wishmaster on 30 04 2017, 20:19:46
Das heißt, die Schritte 1 bis 3 sind klar, und du weißt wie du Miranda NG kompilierst?

Ich weiß ja nicht, wie genau Openfire Miranda NG erkennt, und das wird dir auch keiner sagen können oder wollen.

Probiers mal mit dieser Zeile:
Code: [Select]
query << XCHILD(L"name", L"Miranda NG Jabber");Hier beliebigen anderen String reinsetzen.

Wenn du Pech hast dann checken die noch irgendwelche anderen Caps in Miranda NG, dann bleibt dir wohl nichts anderes übrig als selbst rumzuprobieren.
Title: Re: Jabber.dll modden?
Post by: ecix on 30 04 2017, 20:23:37
Hi Wishmaster,

hast du vllt. ICQ oder ähnliches, ist irgendwie bequemer :)...

also leider sind schritte 1-3 nicht so klar und ich kann die datei "mir_dev.sln" auch nicht öffnen, es kommt ein fehler von visual studio 2015

Code: [Select]
---------------------------
Microsoft Visual Studio
---------------------------
Can't find localized resources

Und ich denke das es reichen würde wenn ich die Strings "name" und "version" abändere, denke ich ;) dazu muss ich es erstmal tun und compilen :)

grüße

ecix

Title: Re: Jabber.dll modden?
Post by: Wishmaster on 30 04 2017, 20:34:12
Ne, kein ICQ, aber wenn du Jabber nutzt dann joine mal miranda-ng-int@conference.jabber.ru (Konferenzraum) und stelle deine Frage wegen des Compilierens dort, wenn englisch kein Problem für dich ist.

Du hast schon die mir_dev.sln aus bin14 genommen? Ansonsten sagt mir dieser Fehler auch nichts, müsste ich selber googlen.
Title: Re: Jabber.dll modden?
Post by: ecix on 30 04 2017, 20:36:02
Wenn ich die alte jabber.dll durch den disasembler jage, finde ich nur zwei strings die wirklich sinn machen, das wären diese hier

Code: [Select]
SWC3255D980_Spark:
  unicode 'Spark',0000h
 SWC3255D98C_2_7_1____:
  unicode '2.7.1_:)',0000h

Vllt. hilft das weiter..

ich installiere gerade mal visual studio 2015 neu, mal schauen...

grüße

ecix
Title: Re: Jabber.dll modden?
Post by: ecix on 30 04 2017, 20:47:53
Und by the way, ich habe keinen bin14 ordner  ??? nur 10,12,15
Title: Re: Jabber.dll modden?
Post by: Wishmaster on 30 04 2017, 21:19:45
Und by the way, ich habe keinen bin14 ordner  ??? nur 10,12,15
bin15 meinte ich, Tippfehler. :)
Title: Re: Jabber.dll modden?
Post by: ecix on 30 04 2017, 21:27:04
Ich werde das heute mal noch probieren, ich melde meine Erfolge oder Misserfolge :) vielen Dank für die bisherigen Hinweise, vllt. reichen diese schon :)

Grüße
Title: Re: Jabber.dll modden?
Post by: ecix on 01 05 2017, 08:29:25
Hallo,

also ich habe es jetzt ein paar mal hinbekommen, die jabber.dll zu compilen, jedoch wurde sie von MirandaNG nicht erkannt :(

ich denke auch das ich hier was falsch compile und so vllt. was fehlt...

ich bräuchte hier nochmal dringend eine genauere anleitung, wie ich MirandaNG sauber compile nachdem ich eine Anpassung in der jabber_iq_handlers vorgenommen habe :(

danke

benutzen tu ich visual studio 2015 x64..

grüße
Title: Re: Jabber.dll modden?
Post by: Wishmaster on 01 05 2017, 10:00:00
Was heißt, die "wird von Miranda NG nicht erkannt"? Versuch mal Miranda NG komplett zu kompilieren (also entferne vorher alle Plugins die du nicht brauchst) und versuche es dann nochmal. Wenn du dabei Fehler oder Warnungen bekommst dann poste die Ausgabe aus VS.
Title: Re: Jabber.dll modden?
Post by: ecix on 01 05 2017, 11:30:57
Woran erkenne ich welche Projektmappen Plugins sind? Einfach den Ordner plugins als Vorlage nehmen?

Es kommt aber vorallem eine Meldung das irgendwelche v141 build-tools nicht installiert sind, diese habe ich nachinstalliert, aber visual studio juckt das wohl nicht...

grüße

ecox
Title: Re: Jabber.dll modden?
Post by: Wishmaster on 01 05 2017, 11:54:33
Naja, Protokolle wie Jabber sind ja nun auch Plugins. Du musst eben diese Plugins/Protokolle abwählen die du nicht brauchst.
Aber mach es anders: Öffne mal lieber die miranda32.sln, da sind nur grundliegende Plugins drin. Versuch das mal komplett zu kompilieren.

Nochmal: Warum postest du nicht einfach die Logausgaben von Visual Studio? Möchtest du das aus irgendwelchen Gründen nicht posten?
Mit welchem Plugin tritt dieser v141-Fehler denn auf? Wenn es nur ein einzelnes Plugin ist dann lass das erstmal außen vor.
Mit v141 scheinen auch andere Probleme zu haben, siehe zB hier (https://social.msdn.microsoft.com/Forums/en-US/f3b63051-cc74-4bcd-89ae-c4a904093546/error-msb8020-the-build-tools-for-v141-platform-toolset-v141-cannot-be-found-2017-community?forum=vssetup).
Ohne die kann ich auch nur raten: Hast du das Plugin vielleicht als x86 kompiliert und versuchst du es in einem x64 Miranda NG zu laden, oder andersherum? Das kann nicht klappen.

Was. "wird von Miranda NG nicht erkannt" nun heißen soll willst du ja auch nicht verraten. Wird es unter Einstellungen>Plugins angezeigt? Ist es da vielleicht deaktiviert?
Title: Re: Jabber.dll modden?
Post by: ecix on 01 05 2017, 13:18:35
1. "miranda-ng-master.zip" von GitHub laden
2. "D:\Jabber\miranda-ng-master\bin15\mir_dev.sln" in Visual Studio 2015 öffnen

die ersten Ausgaben die in in der Log sehe sind

Code: [Select]
D:\Jabber\miranda-ng-master\plugins\AdvaImg\AdvaImg_15.vcxproj : warning  : Die Buildtools für v141_xp wurden nicht gefunden. Installieren Sie v141_xp, um mithilfe der v141_xp-Buildtools zu erstellen.

D:\Jabber\miranda-ng-master\protocols\Gadu-Gadu\Gadu-Gadu_15.vcxproj : warning  : Die Buildtools für v141_xp wurden nicht gefunden. Installieren Sie v141_xp, um mithilfe der v141_xp-Buildtools zu erstellen.

D:\Jabber\miranda-ng-master\plugins\SecureIM\secureim_15.vcxproj : warning  : Die Buildtools für v141_xp wurden nicht gefunden. Installieren Sie v141_xp, um mithilfe der v141_xp-Buildtools zu erstellen.

D:\Jabber\miranda-ng-master\plugins\MirOTR\MirOTR_15.vcxproj : warning  : Die Buildtools für v141_xp wurden nicht gefunden. Installieren Sie v141_xp, um mithilfe der v141_xp-Buildtools zu erstellen.

D:\Jabber\miranda-ng-master\plugins\MirOTR\libotr\libotr_15.vcxproj : warning  : Die Buildtools für v141_xp wurden nicht gefunden. Installieren Sie v141_xp, um mithilfe der v141_xp-Buildtools zu erstellen.

D:\Jabber\miranda-ng-master\plugins\MirOTR\Libgcrypt\Libgcrypt_15.vcxproj : warning  : Die Buildtools für v141_xp wurden nicht gefunden. Installieren Sie v141_xp, um mithilfe der v141_xp-Buildtools zu erstellen.

D:\Jabber\miranda-ng-master\plugins\MirOTR\ekhtml\ekhtml_15.vcxproj : warning  : Die Buildtools für v141_xp wurden nicht gefunden. Installieren Sie v141_xp, um mithilfe der v141_xp-Buildtools zu erstellen.

D:\Jabber\miranda-ng-master\plugins\FileAsMessage\fileecho_15.vcxproj : warning  : Die Buildtools für v141_xp wurden nicht gefunden. Installieren Sie v141_xp, um mithilfe der v141_xp-Buildtools zu erstellen.

D:\Jabber\miranda-ng-master\plugins\CryptoPP\cryptopp_15.vcxproj : warning  : Die Buildtools für v141_xp wurden nicht gefunden. Installieren Sie v141_xp, um mithilfe der v141_xp-Buildtools zu erstellen.

D:\Jabber\miranda-ng-master\plugins\CryptoPP\crypto\cryptlib_15.vcxproj : warning  : Die Buildtools für v141_xp wurden nicht gefunden. Installieren Sie v141_xp, um mithilfe der v141_xp-Buildtools zu erstellen.

D:\Jabber\miranda-ng-master\plugins\NotesAndReminders\NotesReminders_15.vcxproj : warning  : Die Buildtools für v141_xp wurden nicht gefunden. Installieren Sie v141_xp, um mithilfe der v141_xp-Buildtools zu erstellen.

D:\Jabber\miranda-ng-master\protocols\EmLanProto\amdproto_15.vcxproj : warning  : Die Buildtools für v141_xp wurden nicht gefunden. Installieren Sie v141_xp, um mithilfe der v141_xp-Buildtools zu erstellen.

D:\Jabber\miranda-ng-master\plugins\HTTPServer\HTTPServer_15.vcxproj : warning  : Die Buildtools für v141_xp wurden nicht gefunden. Installieren Sie v141_xp, um mithilfe der v141_xp-Buildtools zu erstellen.

D:\Jabber\miranda-ng-master\plugins\PluginUpdater\pu_stub\pu_stub_15.vcxproj : warning  : Die Buildtools für v141_xp wurden nicht gefunden. Installieren Sie v141_xp, um mithilfe der v141_xp-Buildtools zu erstellen.

D:\Jabber\miranda-ng-master\plugins\MirFox\MirFoxNG_15.vcxproj : warning  : Die Buildtools für v141_xp wurden nicht gefunden. Installieren Sie v141_xp, um mithilfe der v141_xp-Buildtools zu erstellen.

D:\Jabber\miranda-ng-master\protocols\Sametime\sametime_15.vcxproj : warning  : Die Buildtools für v141_xp wurden nicht gefunden. Installieren Sie v141_xp, um mithilfe der v141_xp-Buildtools zu erstellen.

D:\Jabber\miranda-ng-master\protocols\Sametime\src\glib\glib_15.vcxproj : warning  : Die Buildtools für v141_xp wurden nicht gefunden. Installieren Sie v141_xp, um mithilfe der v141_xp-Buildtools zu erstellen.

D:\Jabber\miranda-ng-master\protocols\ICQCorp\ICQCorp_15.vcxproj : warning  : Die Buildtools für v141_xp wurden nicht gefunden. Installieren Sie v141_xp, um mithilfe der v141_xp-Buildtools zu erstellen.

3. Nun schaue ich im Projektmappen-Explorer nach "Jabber"
4. Dort gehe ich auf "Jabber->Source Files->jabber_iq_handlers.cpp"
5. Dort passe ich nun den String wie angegeben angegeben

Code: [Select]
XmlNodeIq iq(L"result", pInfo);
HXML query = iq << XQUERY(JABBER_FEAT_VERSION);
query << XCHILD(L"name", L"Spark");

6. Um nun generell das Compilen zu testen, habe ich im 1. Versuch mal rein gar nichts angepasst und einfach mittels "Erstellen->Projektmappe erstellen" das Projekt erstellt.

nach einigen Minuten ist er damit durch...

7. nun liegt ein knapp 4,2GB großer Debug-Ordner vor mir, mit einer miranda32.exe, möchte ich diese ausführen passiert erst nach vielen Minuten was, aber dann läuft alles auf Fehler, er kann keine Plugins laden usw usw, ich denke hier habe ich ganz einfach falsch kompiliert.

Code: [Select]
Fehler:
---------------------------
Avatar service
---------------------------
Fatal error, image services not found. Avatar services will be disabled.
---------------------------
OK   
---------------------------
Code: [Select]
---------------------------
Boltun Error
---------------------------
Failed to load base of remarks. Error at line 1 of boltun.mindw. (Or few lines before).
---------------------------
OK   
---------------------------
Code: [Select]
---------------------------
SendSS
---------------------------
Image services (AdvaImg plugin) not found.
SendSS disabled.
---------------------------
OK   
---------------------------
Code: [Select]
---------------------------
TopToolBar
---------------------------
Frames service has not been found, so plugin will be disabled.
To run it you need to install and / or enable contact list plugin that supports it:
- Modern contact list
- Clist nicer
You can get them at http://wiki.miranda-ng.org/Download
---------------------------
OK   
---------------------------
Code: [Select]
---------------------------
Error
---------------------------
Fatal error, image services not found. Flags module will be disabled.
---------------------------
OK   
---------------------------
Code: [Select]
---------------------------
Miranda NG
---------------------------
Plugin WhoUsesMyFiles requires admin privileges in order to work.
---------------------------
OK   
---------------------------
Code: [Select]
---------------------------
ZeroSwitch plugin failed
---------------------------
Plugin works under Windows XP only
---------------------------
OK   
---------------------------

8. Nun liegt aber in diesem Debugordner auch die jabber.dll im Plugin-Verzeichnis.
9. Diese habe ich dann mal mit der jabber.dll der MirandaNG (32bit) ersetzt, starte ich dann Miranda,
kommt sofort der Updater, der merkt das es ein Update für die jabber.dll gibt (logisch, denn es ist gar keine vorhanden für Miranda, da diese meine rein kopierte jabber.dll nicht erkennt).

Kann ich nun einfach in dem Projektmappen Explorer wild herum löschen was Plugins und Protokolle angeht ohne damit ihrgendwelche Abhängigkeiten zu zerstören...

Verrücjtes Thema, aber mein EHRGEIZ ist geweckt :D

Grüße

ecox
Title: Re: Jabber.dll modden?
Post by: Wishmaster on 01 05 2017, 13:42:11
Title: Re: Jabber.dll modden?
Post by: ecix on 01 05 2017, 14:45:18
Hey,


Nun kopiere ich mir die jabber.dll raus und lege sie in den Plugin-Ordner einer fertigen Version (0.95.6).
Danach kommen immer mal wieder Fehler das DLLs fehlen (da konnte ich sogut wie alle einsetzen, das waren aber mehr Visual C++ Librarys dlls die auf dem fremden PC fehlten, da dort kein Visual Studio existiert).

Code: [Select]
---------------------------
Miranda32.exe - Einsprungpunkt nicht gefunden
---------------------------
Der Prozedureinsprungpunkt "_Window_SetIcon_IcoLib@8" wurde in der DLL "C:\xxx\xxx\Desktop\miranda-ng-v0.95.5\Plugins\Jabber.dll" nicht gefunden.
---------------------------
OK   
---------------------------

Code: [Select]
---------------------------
Miranda32.exe - Einsprungpunkt nicht gefunden
---------------------------
Der Prozedureinsprungpunkt "__vcrt_cleanup_type_info_names" wurde in der DLL "VCRUNTIME140D.dll" nicht gefunden.
---------------------------
OK   
---------------------------

Ich scheine auf dem richtigen weg zu sein, denke ich... :/

Grüße
Title: Re: Jabber.dll modden?
Post by: Wishmaster on 01 05 2017, 14:53:36
Ersteres liegt daran, dass du inkompatible Verionen vom Jabber-Plugin und dem Core hast. Wenn du sagts "Miranda lässt sich starten und es kann ein Jabber-Account angelegt werden", dann nutz doch dieses Miranda und gut ist. Du solltest generell eh alles auf einmal kompilieren.

Letzteres sind auch Visual C++ Libraries, die auf dem anderen PC anscheinend fehlen.
Title: Re: Jabber.dll modden?
Post by: ecix on 01 05 2017, 14:58:02
Ok nehmen wir mal an ich compile jetzt die von dir genannte Version mittels "miranda32.sln", dann entsteht dort ein debug-Ordner der knapp 1gb groß ist, wie bekomme ich es sauber compiled das diese ganzen VisualStudio-Files nicht mit dabei sind, sodas ich dann den ordner einfach verpacke, an meinen anderen PC sende und dann miranda32 auch nutzen kann, ohne das es zu fehlern kommt? Muss ich das dann in "Release" compilieren ? hrmpf... :D

Grüße
Title: Re: Jabber.dll modden?
Post by: ecix on 01 05 2017, 15:19:23
So, es klappt, wenn ich deine Version 0.95.6 nehme, dort die miranda32.sln öffne, den string in der jabber_iq_handlers abändere. Nun ist nur noch die Frage, wie bekomme ich es so sauber compiled, das ich es einfach packen kann und dann am anderen pc sauber öffnen kann?

Grüße
Title: Re: Jabber.dll modden?
Post by: ecix on 01 05 2017, 16:04:38
So, hab nun alles erledigt  8) (hab einfach die VS Files gelöscht und auf einen anderen PC getestet, geht)

vielen vielen Dank für deine Hilfe Wishmaster

grüße