Author Topic: Jabber.dll modden?  (Read 1607 times)

0 Members and 1 Guest are viewing this topic.

Offline ecixTopic starter

  • Newbie
  • *
  • Posts: 13
  • Karma: 0
Jabber.dll modden?
« 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
 

Offline Wishmaster

  • Developer
  • Global Moderator
  • *****
  • Posts: 638
  • Country: de
  • Karma: 31
  • Anti-Hero
  • Version Info
Re: Jabber.dll modden?
« Reply #1 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:
  • Quellcode herunterladen von https://github.com/miranda-ng/miranda-ng/ (ich empfehle den neusten tag, nicht den trunk, der ist noch zu instabil)
  • Visual Studio 2010 oder höher installieren
  • Projekt mir_dev.sln in dem binXX Verzeichnis öffnen
  • Das was du suchst müsste direkt in jabber_iq_handlers.cpp liegen, siehe unten.
  • Wichtig ist, dass du die Projektmappe anpasst und dort alle Plugins herauslöscht die ihr nicht benötigt, und dann alles (!!!) kompilierst. Du musst dann auch den PluginUpdater in Miranda NG deaktivieren, da du das Jabber-Plugin dann ja nicht mehr aktualisieren darfst, und der Kern von Miranda dann irgendwann nicht mehr mit deinem Jabber-Plugin kompatibel ist (daher empfehle ich den Tag, da musst du nicht alle paar Tage neu kompilieren).



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;
}
 
The following users thanked this post: ecix

Offline ecixTopic starter

  • Newbie
  • *
  • Posts: 13
  • Karma: 0
Re: Jabber.dll modden?
« Reply #2 on: 30 04 2017, 20:15:18 »
Hallo Wishmaster,

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

Quote (selected)
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
« Last Edit: 30 04 2017, 20:18:11 by ecix »
 

Offline Wishmaster

  • Developer
  • Global Moderator
  • *****
  • Posts: 638
  • Country: de
  • Karma: 31
  • Anti-Hero
  • Version Info
Re: Jabber.dll modden?
« Reply #3 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.
 

Offline ecixTopic starter

  • Newbie
  • *
  • Posts: 13
  • Karma: 0
Re: Jabber.dll modden?
« Reply #4 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

 

Offline Wishmaster

  • Developer
  • Global Moderator
  • *****
  • Posts: 638
  • Country: de
  • Karma: 31
  • Anti-Hero
  • Version Info
Re: Jabber.dll modden?
« Reply #5 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.
 

Offline ecixTopic starter

  • Newbie
  • *
  • Posts: 13
  • Karma: 0
Re: Jabber.dll modden?
« Reply #6 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
 

Offline ecixTopic starter

  • Newbie
  • *
  • Posts: 13
  • Karma: 0
Re: Jabber.dll modden?
« Reply #7 on: 30 04 2017, 20:47:53 »
Und by the way, ich habe keinen bin14 ordner  ??? nur 10,12,15
 

Offline Wishmaster

  • Developer
  • Global Moderator
  • *****
  • Posts: 638
  • Country: de
  • Karma: 31
  • Anti-Hero
  • Version Info
Re: Jabber.dll modden?
« Reply #8 on: 30 04 2017, 21:19:45 »
Und by the way, ich habe keinen bin14 ordner  ??? nur 10,12,15
bin15 meinte ich, Tippfehler. :)
 

Offline ecixTopic starter

  • Newbie
  • *
  • Posts: 13
  • Karma: 0
Re: Jabber.dll modden?
« Reply #9 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
 

Offline ecixTopic starter

  • Newbie
  • *
  • Posts: 13
  • Karma: 0
Re: Jabber.dll modden?
« Reply #10 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
 

Offline Wishmaster

  • Developer
  • Global Moderator
  • *****
  • Posts: 638
  • Country: de
  • Karma: 31
  • Anti-Hero
  • Version Info
Re: Jabber.dll modden?
« Reply #11 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.
 

Offline ecixTopic starter

  • Newbie
  • *
  • Posts: 13
  • Karma: 0
Re: Jabber.dll modden?
« Reply #12 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
 

Offline Wishmaster

  • Developer
  • Global Moderator
  • *****
  • Posts: 638
  • Country: de
  • Karma: 31
  • Anti-Hero
  • Version Info
Re: Jabber.dll modden?
« Reply #13 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.
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?
« Last Edit: 01 05 2017, 13:10:23 by Wishmaster »
 

Offline ecixTopic starter

  • Newbie
  • *
  • Posts: 13
  • Karma: 0
Re: Jabber.dll modden?
« Reply #14 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