Hacking Pandion
From WhyNotWiki
All the good stuff is under src/ .
Contents |
[edit] Patches
[edit] log raw XML messages
function XMPPOnPresence ( ReceivedXML )
{
if ( external.globals( 'debug' ) )
warn( 'RECV: ' + ReceivedXML.xml );
log_raw_xml_message(ReceivedXML.xml);
...
}
function XMPPOnMessage ( ReceivedXML )
{
if ( external.globals( 'debug' ) )
warn( 'RECV: ' + ReceivedXML.xml );
log_raw_xml_message(ReceivedXML.xml)
...
}
function log_raw_xml_message ( PlainBody )
{
//alert("Received XML: " + PlainBody );
var Message = PlainBody.replace( /%/mg, '%25' ).replace( /\r/mg, '%0D' ).replace( /\n/mg, '%0A' );
var Path = external.globals( 'usersdir' ) + 'Profiles\\' + external.globals( 'cfg' )( 'username' ) + '@' + external.globals( 'cfg' )( 'server' ) + '\\';
//alert( Path + 'raw_xml_messages.log' );
var File = external.File( Path + 'raw_xml_messages.log' );
File.WriteLine( Message + "\n" );
File.Close();
}
[edit] log broadcast messages
not sure what's wrong here. will check it out next time I get a BC.
[edit] log status messages
ClientRoster.js: function ReceivePresence ( Presence )
log_status_message(ShortAddress, Presence.Status)
...
}
history_add.js:
var statusMessages = new ActiveXObject( 'Scripting.Dictionary' );
function log_status_message ( ShortAddress, statusText )
{
// Get rid of extensions
statusText = statusText.replace( /[Ee]?[Xx][Tt]?-?\.? ?[0-9]{4}/mg, '' )
if (statusText != ""
&& statusText != "Disconnected"
&& statusText != "Available"
&& statusText != "Idle for more than 5 minutes"
&& statusText != "Idle for more than 30 minutes"
&& statusText != "Away as a result of being idle"
&& statusText != "Not available as a result of being idle"
&& statusText != "Idle"
&& statusText != "Disconnected"
&& statusText != "Disconnected"
&& statusText != "Disconnected"
) {
var logIt = false;
if ( ShortAddress.indexOf( '/' ) != -1 )
ShortAddress = ShortAddress.substr( 0, ShortAddress.indexOf( '/' ) );
if (statusMessages.Exists(ShortAddress)) {
if (statusMessages.Item(ShortAddress).toString() != statusText.toString()) {
logIt = true;
alert("Before: '"+statusMessages.Item(ShortAddress)+"'\n"
+"Now: '"+statusText) + "'";
} else {
// They had this message last time! How boring!
logIt = false;
}
} else {
statusMessages.Add(ShortAddress, statusText);
logIt = true;
}
if (logIt) {
var Message = (new Date()).formatDate("c") + ': ' + ShortAddress + ":\r\n" +
//statusText.replace( /%/mg, '%25' ).replace( /\r/mg, '%0D' ).replace( /\n/mg, '%0A' )
statusText
+ "\r\n";
var Path = external.globals( 'usersdir' ) + 'Profiles\\' + external.globals( 'cfg' )( 'username' ) + '@' + external.globals( 'cfg' )( 'server' ) + '\\';
var File = external.File( Path + 'status_messages.log' );
File.WriteLine( Message );
File.Close();
}
}
}
[edit] more room to type message!
[edit] Files, explanations, tips, etc.
[edit] main/history_add.js : Logs stuff to history files
var Message = Time + ';' + ( Direction ? 'in' : 'out' ) + ';' + PlainBody.replace( /%/mg, '%25' ).replace( /\r/mg, '%0D' ).replace( /\n/mg, '%0A' );
var Path = external.globals( 'usersdir' ) + 'Profiles\\' + external.globals( 'cfg' )( 'username' ) + '@' + external.globals( 'cfg' )( 'server' ) + '\\';
var Filename = ( new MD5() ).digest( ShortAddress );
[edit] other
XMPPOnMessage.js
ClientRoster.js
XMPPOnPresence.js
external.globals( 'debug' )
