Hacking Pandion

From WhyNotWiki

Jump to: navigation, search

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' )

Personal tools