; mIRC OTR (via ZNC/OTR piggyback) ; by fanfare on jollo.org ; http://jollo.org/LNT/doc/irc/otr.html ; ; ---begin setup--- ; alias otr-znc-server-login { ; ; edit your local znc user and pass below var %znc-user = funfare var %znc-pass = onetwofour3 return 127.0.0.1:1299 %znc-user $+ : $+ %znc-pass } alias otr-znc-exe { ; ; edit the path below where znc.exe resides var %znc-path = c:\cygwin64\bin\znc.exe return $qt(%znc-path) } ; - do you plan on running local znc *full time* on this machine? ; - if so.. uncomment the following on `*:start {}` section. ;; on *:start:{ ;; otr-znc-active ;; set %otr-onstart $true ;; } ; - otherwise.. leave it commented to only deploy znc *on demand* . ; - note: if you run znc full time.. make sure this does not interfere with any other ; scripts that are set to auto-connect. additionally.. disable 'Connect on startup' ; by: Alt+O > Connect > Options > *uncheck* Connect on startup ; ..then press OK. ; ; ---end setup--- ; menu query { $iif( $port = 1299,,ZNC/OTR) : $iif( $port = 1299,/,otr-znc-active $active) } menu status { $iif( $port = 1299,,ZNC/OTR) : $iif( $port = 1299,/,otr-znc-active) } menu status,channel,query { ; popup menu $iif( $port = 1299, ZNC,) .Shutdown: otr-session-request $active $false | .quote znc shutdown | close -tx $iif( $port = 1299, -,) $iif( $port = 1299,OTR,) . $+ $iif( $port = 1299,Generate Key,) : .msg *otr genkey . $+ $iif( $port = 1299,Re-generate Key,) : .msg *otr genkey --overwrite } menu channel { ; mpOTR not available $active - [NOT PRIVATE]:/ } menu query { $iif( $port = 1299, $active - $chr(91) $+ $iif(%otr-nick. [ $+ [ $active ] ] == $true, $iif(%otr-trust. [ $+ [ $active ] ] == $true,PRIVATE,UNVERIFIED), $iif(%otr-finish. [ $+ [ $active ] ] == $true,FINISHED,NOT PRIVATE)) $+ $chr(93), ) .Start private conversation: otr-session-request $active $true .End private conversation: otr-session-request $active $false .Authenticate nick ..Question and answer:otr-authentication-challenge-request $active qa ..Shared secret:otr-authentication-challenge-request $active ss ..Fingerprint ...View fingerprints:otr-authentication-fingerprint-request $active ...- ...Trust - $chr(91) $+ $iif(%otr-trust. [ $+ [ $active ] ] == $true,*,$chr(32)) $+ $chr(93):.msg *otr trust $active ...Distrust - $chr(91) $+ $iif(%otr-trust. [ $+ [ $active ] ] == $true,$chr(32),*) $+ $chr(93):.msg *otr distrust $active } alias -l otr-authentication-fingerprint-request { var %nick $1 set %otr-auth-fingerprint-listener. $+ %nick $true set %otr-auth-fingerprint-listener-temp %nick .msg *otr info } alias -l otr-verbose { ; display notification messages var %mode $1 var %nick $2 var %bool $3 var %else $4- var %echo-a echo -at $chr(3) $+ 3[OTR] $+ $chr(3) $+ 09 var %echo-n echo -t= %nick $chr(3) $+ 3[OTR] $+ $chr(3) $+ 09 var %echo-xn echo -t= %nick $chr(3) $+ 4< $+ %nick $+ > [NOT ENCRYPTED] $+ $chr(3) ; echo ; . echo-a: display message in active window ; . echo-n: display message in nick window ; mode ; . genkey ; . genkey-overwrite ; . initiate ; . secure ; . secure-reconnect ; . authentication-no ; . authentication-fail ; . authentication-success ; . authentication-success-reminder ; . authentication-abort ; . authentication-response ; . authentication-distrust ; . authentication-trust ; . error-request-missing ; . error-request-missing-question ; . error-request-missing-answer ; . error-plaintext ; . error-self ; . error-fingerprint-notfound ; . ssl-accept-permanently ; . ssl-accept-once ; . otr-howto ; . otr-request-alert if ( %mode = genkey ) { %echo-a No private key found. To generate a new key: %echo-a $chr(3) $+ 3> Right click > OTR > Generate Key } elseif ( %mode = error-plaintext ) { %echo-xn $7- } elseif ( %mode = error-self ) { %echo-n Cannot have an OTR conversation with yourself. } elseif ( %mode = otr-request-alert ) { %echo-n To go Off-the-Record with %nick $+ : %echo-a $chr(3) $+ 3> Right click > ZNC/OTR } elseif ( %mode = otr-howto ) { %echo-a To go Off-the-Record with %otr-znc-query-queue $+ .. %echo-a $chr(3) $+ 3> Right click > %otr-znc-query-queue > Start private conversation unset %otr-znc-query-queue } elseif ( %mode = ssl-accept-once ) { %echo-a Accepted this SSL Certificate for this session. %echo-a Connecting.. } elseif ( %mode = ssl-accept-permanently ) { %echo-a Accepted this SSL Certificate permanently. %echo-a Connecting.. } elseif ( %mode = error-fingerprint-notfound ) { %echo-n Fingerprint not found. } elseif ( %mode = genkey-overwrite ) { %echo-a Private key already exists. To overwrite the old one: %echo-a $chr(3) $+ 3> Right click > OTR > Re-generate Key } elseif ( %mode = authentication-fail ) { %echo-n Authentication failed. } elseif ( %mode = error-request-missing-question ) { %echo-n No question was provided.. Cancelled. } elseif ( %mode = error-request-missing-answer ) { %echo-n No answer was provided.. Cancelled. } elseif ( %mode = error-request-missing ) { %echo-n Nothing performed.. Cancelled. } elseif ( %mode = finish ) { %echo-a Conversation with %nick finished. if ( %otr-onstart != $true ) { %echo-a If you are completely finished using OTR for this session.. do the following in this window: %echo-a $chr(3) $+ 3> Right click > ZNC > Shutdown } } elseif ( %mode = authentication-success ) { %echo-n Successfully authenticated. } elseif ( %mode = authentication-success-reminder ) { %echo-n Successfully authenticated. if ( %otr-trust. [ $+ [ %nick ] ] == $false ) { %echo-n You may want to authenticate %nick as well. } } elseif ( %mode = authentication-distrust ) || ( %mode = authentication-trust ) { %echo-n $3- } elseif ( %mode = authentication-response ) { %echo-n Peer replied to authentication request. } elseif ( %mode = authentication-abort ) { %echo-n Authentication aborted. } elseif ( %mode = initiate ) { %echo-n Attempting to go Off-the-Record with %nick } elseif ( %mode = secure ) { set %otr-nick. $+ %nick $true %echo-n Gone $chr(2) $+ SECURE $+ $chr(2) $+ . Logging has been disabled. .log off %nick } elseif ( %mode = secure-reconnect ) { set %otr-nick. $+ %nick $true %echo-n Still $chr(2) $+ SECURE $+ $chr(2) (restarted by us). } elseif ( %mode = authentication-no ) { set %otr-trust. $+ %nick $false %echo-n Peer is not authenticated. To authenticate this user: %echo-n $chr(3) $+ 3> Right click > OTR > Authenticate nick } } alias -l otr-session-request { ; attempt to enable or disable an OTR conversation with recipient if ( $1 == $me ) { otr-verbose error-self $1 halt } if ( $2 == $true ) { .msg $1 ?OTR? otr-verbose initiate $1 } else { .msg *otr finish $1 set %otr-nick. $+ $1 $false } } alias otr-znc-ssl-certificate-trust { if ( !$dialog(otr-znc-ssl-certificate-trust) ) { dialog -m otr-znc-ssl-certificate-trust otr-znc-ssl-certificate-trust } } dialog otr-znc-ssl-certificate-trust { title "ZNC - SSL Certificate" size -1 -1 500 370 text "", 29, 17 25 463 20 edit "", 27, 17 55 463 240, read return multi vsbar limit 35000 button "Accept once", 1, 267 321 84 25, ok button "Accept permanently", 2, 352 321 125 25, ok button "Deny", 114, 20 321 70 25, cancel button "Cancel", 115, 92 321 70 25, cancel } alias otr-znc-ssl-certificate-unset { unset %otr-znc-ssl-certificate-listener-count unset %otr-znc-ssl-certificate-found unset %otr-znc-ssl-certificate-header unset %otr-znc-ssl-certificate-footer unset %otr-znc-ssl-certificate-listener unset %otr-znc-ssl-dialog } on *:dialog:otr-znc-ssl-certificate-trust:sclick:1: { otr-verbose ssl-accept-once var %footer $replace(%otr-znc-ssl-certificate-footer,AddTrustedServerFingerprint,$chr(8)) tokenize 8 %footer ; get the fingerprint $1 .dialog -x otr-znc-ssl-certificate-trust .quote znc AddTrustedServerFingerprint $2 otr-znc-ssl-certificate-unset .timer 1 1 .quote znc connect } on *:dialog:otr-znc-ssl-certificate-trust:sclick:2: { otr-verbose ssl-accept-permanently var %footer $replace(%otr-znc-ssl-certificate-footer,AddTrustedServerFingerprint,$chr(8)) tokenize 8 %footer ; get the fingerprint $1 .dialog -x otr-znc-ssl-certificate-trust .quote znc AddTrustedServerFingerprint $2 otr-znc-ssl-certificate-unset .timer 1 1 .quote znc saveconfig .timer 1 2 .quote znc connect } on *:dialog:otr-znc-ssl-certificate-trust:sclick:3: { .dialog -x otr-znc-ssl-certificate-trust otr-znc-ssl-certificate-unset } on *:dialog:otr-znc-ssl-certificate-trust:sclick:4: { .dialog -x otr-znc-ssl-certificate-trust otr-znc-ssl-certificate-unset } on *:dialog:otr-znc-ssl-certificate-trust:init:0: { var %i 1 tokenize 40 %otr-znc-ssl-certificate-header tokenize 41 $2 did -a otr-znc-ssl-certificate-trust 29 $1 while ( %i <= $calc(%otr-znc-ssl-certificate-listener-count - 3) ) { did -a otr-znc-ssl-certificate-trust 27 %otr-znc-ssl-certificate-listener-content. [ $+ [ %i ] ] if ( %i != $calc(%otr-znc-ssl-certificate-listener-count - 3 ) ) { did -a otr-znc-ssl-certificate-trust 27 $crlf } inc %i } while ( %otr-znc-ssl-certificate-listener-count > 0 ) { unset %otr-znc-ssl-certificate-listener-content. $+ %otr-znc-ssl-certificate-listener-count dec %otr-znc-ssl-certificate-listener-count } } dialog otr-auth-qa { title "OTR - Authentication" size -1 -1 132 94 option dbu box "Question and Answer", 10, 4 4 124 64 text "Enter question here:", 6, 18 18 113 6 edit "", 31, 17 25 99 9, %otr-qa-question text "Enter secret answer here (case sensitive):", 7, 18 42 113 6 edit "", 21, 17 49 99 9, %otr-qa-answer text "note: to cancel.. leave both fields empty.", 67, 26 70 113 6 button "OK", 2, 45 78 40 12, ok } dialog otr-auth-ss { title "OTR - Authentication" size -1 -1 132 94 option dbu box "Shared Secret", 10, 4 4 124 64 text "Enter shared secret here (case sensitive):", 7, 18 30 113 6 edit "", 21, 17 37 99 9, %otr-qa-answer text "note: to cancel.. leave field empty.", 67, 31 70 113 6 button "OK", 2, 45 78 40 12, ok } dialog otr-auth-fp { title "OTR - Authentication" size -1 -1 202 117 option dbu text "Send *your* fingerprint to your buddy via GPG e-mail.. and have your buddy send their fingerprint to you. If their fingerprint matches their purported fingerprint listed below.. set their fingerprint to *trust* ..otherwise set their fingerprint as *distrust*", 86, 18 18 163 30 box "Manual Fingerprint Verification", 10, 4 4 194 94 text "Your fingerprint:", 6, 18 48 113 6 edit "", 99, 17 55 169 9, %otr-qa-question text "Their purported fingerprint:", 7, 18 72 183 6 edit "", 88, 17 79 169 9, %otr-qa-answer button "Done", 2, 82 101 40 12, ok } on *:dialog:otr-auth-fp:init:0: { did -a otr-auth-fp 88 %otr-fingerprint-id-their did -a otr-auth-fp 99 %otr-fingerprint-id-your unset %otr-fingerprint-id-their. $+ %otr-auth-fingerprint-listener-temp unset %otr-fingerprint-id-your unset %otr-fingerprint-id-their unset %otr-auth-fingerprint-listener-temp } alias otr-authentication-fingerprint-callback { dialog -m otr-auth-fp otr-auth-fp } alias otr-authentication-challenge-request { var %nick $1 var %mode $2 if ( %mode = qa ) { $dialog(name,otr-auth-qa) if ( %otr-qa-answer != $null ) && ( %otr-qa-question != $null ) { set %otr-challenge-type. $+ %nick qa .msg *otr authq %nick $chr(91) $+ %otr-qa-question $+ $chr(93) %otr-qa-answer } elseif ( %otr-qa-answer == $null ) && ( %otr-qa-question == $null ) { otr-verbose error-request-missing } elseif ( %otr-qa-answer == $null ) { otr-verbose error-request-missing-answer } else { otr-verbose error-request-missing-question } } elseif ( %mode = ss ) { $dialog(name,otr-auth-ss) if ( %otr-qa-answer != $null ) { set %otr-challenge-type. $+ %nick ss .msg *otr auth %nick %otr-qa-answer } else { otr-verbose error-request-missing } } elseif ( %mode = fp ) { ; fetched info via otr--neatly present tokenize 32 %otr-fingerprint-id-your set %otr-fingerprint-id-your $5-9 tokenize 32 %otr-fingerprint-id-their. [ $+ [ %nick ] ] set %otr-fingerprint-id-their $replace($2-6,.,) .timer -m 1 20 otr-authentication-fingerprint-callback } ; unset qa, ss, fp unset %otr-qa-answer unset %otr-qa-question } alias -l otr-authentication-challenge-response { var %nick $1 var %type $2 var %query $3- ; type ; . qa (question and answer) ; . ss (shared secret) ; . fp (fingerprint) if ( %type = qa ) { var %answer = $?=" $+ $& [OTR - Off the Record] $+ $crlf $+ $& $crlf $+ $& %nick wants to authenticate. $+ $crlf $+ $& To complete, answer the following question (case sensitive): $+ $crlf $+ $& $crlf $+ $& %query " if ( %answer == $null ) { .msg *otr authabort %nick } else { .msg *otr auth %nick %answer } } elseif ( %type = ss ) { var %answer = $?=" $+ $& [OTR - Off the Record] $+ $crlf $+ $& $crlf $+ $& %nick wants to authenticate. $+ $crlf $+ $& To complete, type the shared secret (case sensitive): $+ $crlf $+ $& $crlf $+ $& %query " if ( %answer == $null ) { .msg *otr authabort %nick } else { .msg *otr auth %nick %answer } } unset %otr-auth-incoming-prompt. $+ %nick } alias -l otr-znc-ssl-certificate-reset { unset %otr-znc-ssl-certificate-ready } alias -l otr-znc-system-messages { var %nick $1 var %text $2- var %recp $replacecs($2,$chr(91),,$chr(93),) var %text-sn $3- if ( $nick = $chr(42) $+ status ) { if ( already loaded isin %text ) { ;snub } else { echo -at $chr(3) $+ 10 $+ [ZNC] %text } if ( disconnected from IRC. Use isin %text ) { if ( $port = 1299 ) { .quote znc connect } } if ( Disconnected from IRC isin %text ) && ( SSL certificate isin %text ) { ; start listener ; capture this line after Invalid SSL certificate set %otr-znc-ssl-certificate-header %text set %otr-znc-ssl-certificate-listener $true } if ( $chr(124) $+ Certificate isin %text ) && ( %otr-znc-ssl-certificate-listener == $true ) { set %otr-znc-ssl-certificate-found $true set %otr-znc-ssl-certificate-listener-count 0 } if ( %otr-znc-ssl-certificate-listener == $true ) { inc %otr-znc-ssl-certificate-listener-count set %otr-znc-ssl-certificate-listener-content. $+ %otr-znc-ssl-certificate-listener-count %text } if ( Disconnected from IRC isin %text ) && ( Reconnecting isin %text ) { if ( %otr-znc-ssl-certificate-found == $true ) { if ( $port = 1299 ) { .quote znc disconnect } .timer -m 1 50 otr-znc-ssl-certificate-trust } } if ( If you trust this certificate isin %text ) && ( AddTrustedServerFingerprint isin %text ) && ( %otr-znc-ssl-certificate-listener == $true ) { ; end listener ; capture this line after /znc set %otr-znc-ssl-certificate-footer %text } if ( You are currently disconnected from IRC. isin %text ) { if ( $port = 1299 ) { .quote znc connect } } } elseif ( %nick = $chr(42) $+ status ) { echo -at $chr(3) $+ 10[ZNC] %text haltdef } elseif ( %nick = $chr(42) $+ otr ) && ( %otr-auth-fingerprint-listener. [ $+ [ %otr-auth-fingerprint-listener-temp ] ] == $true ) { if ( Peer $chr(124) State isin %text ) { set %otr-auth-fingerprint-found. $+ %otr-auth-fingerprint-listener-temp $false ; snub } elseif ( $chr(61) $+ $chr(61) $+ $chr(61) isin %text ) { ; snub } elseif ( Your fingerprint $+ $chr(58) isin %text ) { ; store your fingerprint ; done.. terminate listener.. open fingerprint dialog if ( %otr-auth-fingerprint-found. [ $+ [ %otr-auth-fingerprint-listener-temp ] ] == $true ) { set %otr-fingerprint-id-their. $+ %otr-auth-fingerprint-listener-temp %text-sn otr-authentication-challenge-request %otr-auth-fingerprint-listener-temp fp } else { otr-verbose error-fingerprint-notfound %otr-auth-fingerprint-listener-temp } ; if their fp not found display not found unset %otr-fingerprint-listener. $+ %otr-auth-fingerprint-listener-temp } else { ; store their fingerprint if ( $chr(124) %otr-auth-fingerprint-listener-temp $chr(124) isin %text ) && ( %otr-auth-fingerprint-found. [ $+ [ %otr-auth-fingerprint-listener-temp ] ] == $false ) { set %otr-fingerprint-id-your %text-sn set %otr-auth-fingerprint-found. $+ %otr-auth-fingerprint-listener-temp $true } } } elseif ( %nick = $chr(42) $+ otr ) && ( %otr-auth-incoming-listener. [ $+ [ %recp ] ] == $true ) { ; otr incoming authentication challenge ; set challenge/question until prompt.. then unset set %otr-auth-incoming-prompt. $+ %recp %text-sn set %otr-auth-incoming-listener. $+ %recp $false } elseif ( %nick = $chr(42) $+ otr ) { if ( Received an unencrypted message isin %text ) { .set %otr-error-plaintext. $+ %recp $true otr-verbose error-plaintext %recp %text-sn } elseif ( peer wants to isin %text ) && ( type isin %text ) && ( secret isin %text ) { .set %otr-challenge-type. $+ %recp ss .timer -m 1 50 otr-authentication-challenge-response %recp ss } elseif ( Answer by typing auth isin %text ) { .set %otr-challenge-type. $+ %recp qa .timer -m 1 50 otr-authentication-challenge-response %recp qa %otr-auth-incoming-prompt. [ $+ [ %recp ] ] } elseif ( Peer wants to authenticate isin %text ) { set %otr-auth-incoming. $+ %recp $true set %otr-auth-incoming-listener. $+ %recp $true } elseif ( Peer replied to authentication request isin %text ) { set %otr-auth-outgoing. $+ %recp $true otr-verbose authentication-response %recp } elseif ( fingerprint isin %text) && ( distrusted! isin %text ) { set %otr-trust. $+ %recp $false otr-verbose authentication-distrust %recp %text-sn } elseif ( already not trusting isin %text ) { set %otr-trust. $+ %recp $false otr-verbose authentication-distrust %recp %text-sn } elseif ( fingerprint isin %text) && ( trusted isin %text ) { set %otr-trust. $+ %recp $true otr-verbose authentication-trust %recp %text-sn } elseif ( Successfully authenticated. isin %text ) && ( %otr-auth-incoming. [ $+ [ %recp ] ] == $true ) { set %otr-trust-self. $+ %recp $true set %otr-auth-incoming. $+ %recp $false if ( %otr-challenge-type. [ $+ [ %recp ] ] = ss ) { set %otr-trust. $+ %recp $true otr-verbose authentication-success %recp } else { otr-verbose authentication-success-reminder %recp } unset %otr-challenge-type. $+ %recp } elseif ( Successfully authenticated. isin %text ) && ( %otr-auth-outgoing. [ $+ [ %recp ] ] == $true ) { if ( %otr-challenge-type. [ $+ [ %recp ] ] = ss ) { set %otr-trust-self. $+ %recp $true } set %otr-trust. $+ %recp $true set %otr-auth-outgoing. $+ %recp $false otr-verbose authentication-success %recp unset %otr-challenge-type. $+ %recp } elseif ( Authentication failed isin %text ) && ( %otr-auth-incoming. [ $+ [ %recp ] ] == $true ) { if ( %otr-challenge-type. [ $+ [ %recp ] ] = ss ) { set %otr-trust. $+ %recp $false } set %otr-trust-self. $+ %recp $false set %otr-auth-incoming. $+ %recp $false otr-verbose authentication-fail %recp unset %otr-challenge-type. $+ %recp } elseif ( Authentication failed isin %text ) && ( %otr-auth-outgoing. [ $+ [ %recp ] ] == $true ) { if ( %otr-challenge-type. [ $+ [ %recp ] ] = ss ) { set %otr-trust-self. $+ %recp $false } set %otr-trust. $+ %recp $false set %otr-auth-outgoing. $+ %recp $false otr-verbose authentication-fail %recp unset %otr-challenge-type. $+ %recp } elseif ( Authentication aborted isin %text ) && ( %otr-auth-incoming. [ $+ [ %recp ] ] == $true ) { set %otr-auth-incoming. $+ %recp $false otr-verbose authentication-abort %recp unset %otr-challenge-type. $+ %recp } elseif ( Authentication aborted isin %text ) && ( %otr-auth-outgoing. [ $+ [ %recp ] ] == $true ) { set %otr-auth-outgoing. $+ %recp $false otr-verbose authentication-abort %recp unset %otr-challenge-type. $+ %recp } elseif ( No private key found. isin %text ) { otr-verbose genkey } elseif ( Conversation finished isin %text ) { otr-verbose finish %recp } elseif ( Private key already exists isin %text ) { otr-verbose genkey-overwrite } elseif ( Please make sure logging isin %text ) { .set %otr-error-plaintext. $+ %recp $false otr-verbose secure %recp } elseif ( Still isin %text ) && ( restarted by us isin %text ) { .set %otr-error-plaintext. $+ %recp $false otr-verbose secure-reconnect %recp } elseif ( Peer is not authenticated isin %text ) { otr-verbose authentication-no %recp } elseif ( Agree on a common secret isin %text ) || ( Compare their fingerprint over isin %text ) { ; do nothing } elseif ( Your fingerprint: isin %text ) { ; do nothing } elseif ( Their fingerprint: isin %text ) { ; do nothing } else { if ( $chr(91) isin $2 ) && ( $chr(93) isin $2 ) { ; addressed to a specific nick var %target %recp echo -t= %target $chr(3) $+ 3[OTR] $+ $chr(3) $+ 09 $3- } else { ; not addressed to a specific nick echo -at $chr(3) $+ 3[OTR] $+ $chr(3) $+ 09 %text } } haltdef } } alias otr-znc-active { if ( $1 != $null ) { set %otr-znc-query-queue $1 } sockopen zncotr 127.0.0.1 1299 } on *:connect: { if ( $port = 1299 ) { if ( %otr-znc-query-queue != $null ) { .quote znc loadmod otr query %otr-znc-query-queue otr-verbose otr-howto } } } on *:sockopen:zncotr: { if ($sockerr) { run $otr-znc-exe echo -at * Loading ZNC.. Please wait a few moments.. .timer 1 2 server -m $otr-znc-server-login() } else { server -m $otr-znc-server-login() } sockclose $sockname } on ^*:open:?: { if ( $nick = $chr(42) $+ status ) || ( $nick = $chr(42) $+ otr ) { ; query windows for *otr and *status should never be visible.. otr-znc-system-messages $nick $1- close -m $nick haltdef } } on ^*:text:*:?: { if ( $nick = $chr(42) $+ status ) || ( $nick = $chr(42) $+ otr ) { ; ..but if they are for some reason.. handle it here otr-znc-system-messages $nick $1- close -m $nick haltdef } if ( %otr-nick. [ $+ [ $nick ] ] == $true ) { if ( $port = 1299 ) { if ( %otr-error-plaintext. [ $+ [ $nick ] ] == $true ) { ; snub this message -- an OTR system message will take care of this incoming message } else { if ( %otr-trust. [ $+ [ $nick ] ] == $true ) { ; denotes authenticated otr text echo -t= $nick $chr(3) $+ 9< $+ $nick $+ > $+ $chr(3) $1- } else { ; denotes non-authenticated otr text echo -t= $nick $chr(3) $+ 9< $+ $chr(3) $+ $nick $+ $chr(3) $+ 9> $+ $chr(3) $1- } } } else { halt ; edge case where local ZNC account uses same remote ZNC shared via mIRC ; uncomment next line to make visible raw OTR for debugging ; echo -t= $nick $chr(3) $+ 4< $+ $nick $+ > $1- } haltdef } if ( $port != 1299 ) { if ( $left($1,4) = ?OTR ) && ( $right($1,1) = ? ) && ( $1 = $1- ) { ; incoming OTR request -- but not on your ZNC/OTR connection .set %otr-znc-plugin-missing. $+ $nick $true .timer 1 1 unset %otr-znc-plugin-missing. $+ $nick otr-verbose otr-request-alert $nick halt } if ( %otr-znc-plugin-missing. [ $+ [ $nick ] ] == $true ) { if ( has requested an isin $1- ) && ( you do not have a plugin to support isin $1- ) { halt } if ( for more information isin $1- ) { halt } } } } on 1:close:?: { if ( %otr-nick. [ $+ [ $active ] ] == $true ) && ( $port = 1299 ) { otr-session-request $active $false } } on *:exit: { ; prevent the local znc instance from lingering in the bg after mirc is closed.. ; this should probably be handled more cleanly but will suffice for now.. run taskkill /im znc.exe /f } on *:input:?: { if ( $left($1,1) = / ) { } elseif ( %otr-nick. [ $+ [ $active ] ] == $true ) && ( $port = 1299 ) { if ( %otr-trust-self. [ $+ [ $active ] ] == $true ) { echo -at $chr(3) $+ 9< $+ $me $+ > $+ $chr(3) $1- } else { echo -at $chr(3) $+ 9< $+ $chr(3) $+ $me $+ $chr(3) $+ 9> $+ $chr(3) $1- } .msg $active $1- halt } }