realJoshByrnes revised this gist . Go to revision
1 file changed, 1 insertion, 2 deletions
IRC8.mrc
| @@ -52,8 +52,7 @@ on 1:PARSELINE:in:*:{ | |||
| 52 | 52 | } | |
| 53 | 53 | } | |
| 54 | 54 | elseif ($2 == PRIVMSG) { | |
| 55 | - | if ($regex($4-, /^:\x01S\s([^\\]|\\.)([^\\]|\\.)(.*?);(\d+)\s(.*?)\x01?$/) > 0) { | |
| 56 | - | echo -at SUCCESS | |
| 55 | + | if ($regex($4-, /^:\x01S\s([^\\]|\\.)([^\\]|\\.)(.*?);(\d+)\s(.*?)\x01?$/) > 0) { | |
| 57 | 56 | ; Notes: | |
| 58 | 57 | ; Font stored in: $regsubex($regml(3), /([^\\]|\\.)/gu, $chr($gk.asc(\1))) | |
| 59 | 58 | ; Script number stored in: $regml(4) - See also https://learn.microsoft.com/pl-pl/dotnet/api/system.windows.forms.visualstyles.textmetricscharacterset | |
realJoshByrnes revised this gist . Go to revision
1 file changed, 2 insertions, 2 deletions
IRC8.mrc
| @@ -53,13 +53,13 @@ on 1:PARSELINE:in:*:{ | |||
| 53 | 53 | } | |
| 54 | 54 | elseif ($2 == PRIVMSG) { | |
| 55 | 55 | if ($regex($4-, /^:\x01S\s([^\\]|\\.)([^\\]|\\.)(.*?);(\d+)\s(.*?)\x01?$/) > 0) { | |
| 56 | + | echo -at SUCCESS | |
| 56 | 57 | ; Notes: | |
| 57 | 58 | ; Font stored in: $regsubex($regml(3), /([^\\]|\\.)/gu, $chr($gk.asc(\1))) | |
| 58 | 59 | ; Script number stored in: $regml(4) - See also https://learn.microsoft.com/pl-pl/dotnet/api/system.windows.forms.visualstyles.textmetricscharacterset | |
| 59 | 60 | var %msg : | |
| 60 | 61 | var %color $gk.msn2irc($calc($gk.asc($regml(1)) - 1)) | |
| 61 | - | if (%color) | |
| 62 | - | %msg = $+(%msg, $chr(3), $base(%color, 10, 10, 2)) | |
| 62 | + | if (%color) %msg = $+(%msg, $chr(3), $base(%color, 10, 10, 2)) | |
| 63 | 63 | var %style $calc($gk.asc($regml(2)) - 1) | |
| 64 | 64 | if (%style & 1) %msg = %msg $+ $chr(2) | |
| 65 | 65 | if (%style & 2) %msg = %msg $+ $chr(29) | |
realJoshByrnes revised this gist . Go to revision
2 files changed, 36 insertions, 6 deletions
IRC8.mrc
| @@ -79,7 +79,7 @@ on 1:PARSELINE:in:*:{ | |||
| 79 | 79 | var %user = $gettok(%original, %i, 32) | |
| 80 | 80 | %new = %new $gettok(%user, $numtok(%user, 44), 44) | |
| 81 | 81 | if ($numtok(%user, 44) = 4) { | |
| 82 | - | .parseline -itq : $+ $gettok(%user, $numtok(%user, 44), 44) AWAY $iif($gettok(%user, 1, 44) == G,:Away) | |
| 82 | + | .parseline -itq : $+ $remove($gettok(%user, $numtok(%user, 44), 44), +, @, .) AWAY $iif($gettok(%user, 1, 44) == G,:Away) | |
| 83 | 83 | } | |
| 84 | 84 | inc %i | |
| 85 | 85 | } | |
| @@ -93,8 +93,19 @@ on 1:PARSELINE:in:*:{ | |||
| 93 | 93 | } | |
| 94 | 94 | } | |
| 95 | 95 | ||
| 96 | - | ; 3/6 matches | |
| 97 | - | alias gk.msn2irc return $gettok(1 0 5 3 2 7 6 10 15 14 4 9 12 8 13 11, $calc($1 + 1), 32) | |
| 96 | + | on 1:PARSELINE:out:*:{ | |
| 97 | + | tokenize 32 $iif($asc($right($parseline, 1)) == 10, $left($parseline, -1), $parseline) | |
| 98 | + | ||
| 99 | + | ; JOIN without key/hostkey/ownerkey | |
| 100 | + | if ($1 == JOIN && $3 == $null) { | |
| 101 | + | if (!$2) return | |
| 102 | + | if ($gk.config($2, OWNERKEY)) .parseline -otn $1-2 $ifmatch | |
| 103 | + | elseif ($gk.config($2, HOSTKEY)) .parseline -otn $1-2 $ifmatch | |
| 104 | + | else .parseline -otn $1-2 $gk.ud | |
| 105 | + | } | |
| 106 | + | } | |
| 107 | + | ||
| 108 | + | alias -l gk.msn2irc return $gettok(1 0 5 3 2 7 6 10 15 14 4 9 12 8 13 11, $calc($1 + 1), 32) | |
| 98 | 109 | ||
| 99 | 110 | ; Usage: $gk.header(sequence) - Returns GateKeeper v3 header with specified sequence (1 or 3 for client) | |
| 100 | 111 | alias -l gk.header return $+(GKSSP\0JD,$chr(3),\0\0\0,$chr($$1),\0\0\0) | |
| @@ -114,7 +125,7 @@ alias -l gk.hex2chr { | |||
| 114 | 125 | ; Normalise - Remove zero padding | |
| 115 | 126 | var %h = $base($1, 16, 16) | |
| 116 | 127 | ||
| 117 | - | ; Chars need escapinh | |
| 128 | + | ; Chars need escaping | |
| 118 | 129 | if (%h == 0) return \0 | |
| 119 | 130 | elseif (%h == 9) return \t | |
| 120 | 131 | elseif (%h == A) return \n | |
| @@ -122,14 +133,32 @@ alias -l gk.hex2chr { | |||
| 122 | 133 | elseif (%h == 20) return \b | |
| 123 | 134 | elseif (%h == 2C) return \c | |
| 124 | 135 | elseif (%h == 5C) return \\ | |
| 136 | + | ||
| 125 | 137 | ; Chars don't need escaping | |
| 126 | 138 | else return $chr($base($1, 16, 10)) | |
| 127 | 139 | } | |
| 128 | 140 | ||
| 129 | 141 | alias -l gk.guid { | |
| 130 | 142 | if ($1 == GateKeeperPassport) return $str(00,16) | |
| 131 | - | if (!$var(%GK.GUID)) set %GK.GUID $md5($time $date $gmt $ctime $ticks) | |
| 132 | - | return %GK.GUID | |
| 143 | + | if ($gk.config(settings, GUID)) return $ifmatch | |
| 144 | + | var %guid = $md5($time $date $gmt $ctime $ticks) | |
| 145 | + | gk.config settings GUID %guid | |
| 146 | + | return %guid | |
| 147 | + | } | |
| 148 | + | ||
| 149 | + | alias -l gk.ud { | |
| 150 | + | if ($gk.config(settings, UserData1)) return $ifmatch | |
| 151 | + | var %ud = $regsubex($str(-, 31), /-/g, $chr($r(33, 126))) | |
| 152 | + | gk.config settings UserData1 %ud | |
| 153 | + | return %ud | |
| 154 | + | } | |
| 155 | + | ||
| 156 | + | ; Usage: $gk.config(section, key) | |
| 157 | + | ; /gk.config <section> <key> <data> | |
| 158 | + | alias gk.config { | |
| 159 | + | var %fn $scriptdir $+ gk.settings.ini | |
| 160 | + | if ($isid) return $readini(%fn, $1, $2) | |
| 161 | + | writeini %fn $1- | |
| 133 | 162 | } | |
| 134 | 163 | ||
| 135 | 164 | ; Adds $username for mIRC (Built-in for AdiIRC) | |
README.md
| @@ -9,6 +9,7 @@ | |||
| 9 | 9 | * [X] Supports IRC8 names reply (353) | |
| 10 | 10 | * [X] Supports IRC8 away/unaway notifications (821/822/JOIN/353) | |
| 11 | 11 | * [X] Supports MSN Chat colors and styles (bold/italic/underline) | |
| 12 | + | * [X] Support MSN Chat UserData1 / Ownerkey (and HostKey) | |
| 12 | 13 | ||
| 13 | 14 | ## Nice to haves (might be implemented) | |
| 14 | 15 | ||
realJoshByrnes revised this gist . Go to revision
2 files changed, 8 insertions, 9 deletions
IRC8.mrc
| @@ -46,19 +46,16 @@ on 1:PARSELINE:in:*:{ | |||
| 46 | 46 | } | |
| 47 | 47 | elseif ($2 == JOIN) { | |
| 48 | 48 | .parseline -it $1-2 $4- | |
| 49 | + | .parseline -itq $1 AWAY $iif($gettok($3, 1, 44) == G,:Away) | |
| 49 | 50 | if ($gettok($3, 4, 44) isin +@.) { | |
| 50 | 51 | .parseline -itq $+($1 MODE $right($4, -1) +, $replace($gettok($3, 4, 44), +, v, @, o, ., q) $right($gettok($1, 1, 33), -1)) | |
| 51 | 52 | } | |
| 52 | 53 | } | |
| 53 | 54 | elseif ($2 == PRIVMSG) { | |
| 54 | - | :>JD!07215E4B28474ECBBCEF373752CAA2D1@GateKeeper PRIVMSG %#The\bLobby :S Tahoma;0 test | |
| 55 | - | if ($left($4-, 2) == : $+ $chr(1) && $len($4-) > 2) { | |
| 56 | - | echo -a CTCP | |
| 57 | - | } | |
| 58 | 55 | if ($regex($4-, /^:\x01S\s([^\\]|\\.)([^\\]|\\.)(.*?);(\d+)\s(.*?)\x01?$/) > 0) { | |
| 59 | - | ; Notes: | |
| 60 | - | ; Font stored in: $regsubex($regml(3), /([^\\]|\\.)/gu, $chr($gk.asc(\1))) | |
| 61 | - | ; Script number stored in: $regml(4) - See also https://learn.microsoft.com/pl-pl/dotnet/api/system.windows.forms.visualstyles.textmetricscharacterset | |
| 56 | + | ; Notes: | |
| 57 | + | ; Font stored in: $regsubex($regml(3), /([^\\]|\\.)/gu, $chr($gk.asc(\1))) | |
| 58 | + | ; Script number stored in: $regml(4) - See also https://learn.microsoft.com/pl-pl/dotnet/api/system.windows.forms.visualstyles.textmetricscharacterset | |
| 62 | 59 | var %msg : | |
| 63 | 60 | var %color $gk.msn2irc($calc($gk.asc($regml(1)) - 1)) | |
| 64 | 61 | if (%color) | |
| @@ -81,6 +78,9 @@ on 1:PARSELINE:in:*:{ | |||
| 81 | 78 | while (%i <= $numtok(%original, 32)) { | |
| 82 | 79 | var %user = $gettok(%original, %i, 32) | |
| 83 | 80 | %new = %new $gettok(%user, $numtok(%user, 44), 44) | |
| 81 | + | if ($numtok(%user, 44) = 4) { | |
| 82 | + | .parseline -itq : $+ $gettok(%user, $numtok(%user, 44), 44) AWAY $iif($gettok(%user, 1, 44) == G,:Away) | |
| 83 | + | } | |
| 84 | 84 | inc %i | |
| 85 | 85 | } | |
| 86 | 86 | .parseline -it $1-5 : $+ %new | |
README.md
| @@ -7,13 +7,12 @@ | |||
| 7 | 7 | * [X] Supports IRC8 JOIN messages | |
| 8 | 8 | * [X] Supports MODE on JOIN via IRCX access entries | |
| 9 | 9 | * [X] Supports IRC8 names reply (353) | |
| 10 | - | * [X] Supports IRC8 away/unaway notifications (821/822) | |
| 10 | + | * [X] Supports IRC8 away/unaway notifications (821/822/JOIN/353) | |
| 11 | 11 | * [X] Supports MSN Chat colors and styles (bold/italic/underline) | |
| 12 | 12 | ||
| 13 | 13 | ## Nice to haves (might be implemented) | |
| 14 | 14 | ||
| 15 | 15 | * [ ] IRC8 Profiles (818) | |
| 16 | - | * [ ] Support away information from 353/JOIN | |
| 17 | 16 | * [ ] Support WHISPER (and convert PRIVMSG to & from WHISPER) | |
| 18 | 17 | * [ ] Support CTCP "ERR NOUSERWHISPER". | |
| 19 | 18 | * [ ] Don't default to IRC8 | |
realJoshByrnes revised this gist . Go to revision
1 file changed, 1 insertion, 1 deletion
README.md
| @@ -2,7 +2,7 @@ | |||
| 2 | 2 | ||
| 3 | 3 | ## Features | |
| 4 | 4 | ||
| 5 | - | * [ ] Works with both mIRC and AdiIRC | |
| 5 | + | * [X] Works with both mIRC and AdiIRC | |
| 6 | 6 | * [X] Native GateKeeper & GateKeeperPassport Authentication | |
| 7 | 7 | * [X] Supports IRC8 JOIN messages | |
| 8 | 8 | * [X] Supports MODE on JOIN via IRCX access entries | |
realJoshByrnes revised this gist . Go to revision
1 file changed, 8 insertions, 8 deletions
README.md
| @@ -2,13 +2,13 @@ | |||
| 2 | 2 | ||
| 3 | 3 | ## Features | |
| 4 | 4 | ||
| 5 | - | * [x] Works with both mIRC and AdiIRC | |
| 6 | - | * [x] Native GateKeeper & GateKeeperPassport Authentication | |
| 7 | - | * [x] Supports IRC8 JOIN messages | |
| 8 | - | * [x] Supports MODE on JOIN via IRCX access entries | |
| 9 | - | * [x] Supports IRC8 names reply (353) | |
| 10 | - | * [x] Supports IRC8 away/unaway notifications (821/822) | |
| 11 | - | * [x] Supports MSN Chat colors and styles (bold/italic/underline) | |
| 5 | + | * [ ] Works with both mIRC and AdiIRC | |
| 6 | + | * [X] Native GateKeeper & GateKeeperPassport Authentication | |
| 7 | + | * [X] Supports IRC8 JOIN messages | |
| 8 | + | * [X] Supports MODE on JOIN via IRCX access entries | |
| 9 | + | * [X] Supports IRC8 names reply (353) | |
| 10 | + | * [X] Supports IRC8 away/unaway notifications (821/822) | |
| 11 | + | * [X] Supports MSN Chat colors and styles (bold/italic/underline) | |
| 12 | 12 | ||
| 13 | 13 | ## Nice to haves (might be implemented) | |
| 14 | 14 | ||
| @@ -19,4 +19,4 @@ | |||
| 19 | 19 | * [ ] Don't default to IRC8 | |
| 20 | 20 | ||
| 21 | 21 | ## Known Issues | |
| 22 | - | * Auth doesn't always work with AdiIRC (probably due to UTF8 quirks) | |
| 22 | + | * Auth doesn't always work with AdiIRC (probably due to UTF8 quirks) | |
realJoshByrnes revised this gist . Go to revision
2 files changed, 26 insertions, 2 deletions
IRC8.mrc
| @@ -50,6 +50,27 @@ on 1:PARSELINE:in:*:{ | |||
| 50 | 50 | .parseline -itq $+($1 MODE $right($4, -1) +, $replace($gettok($3, 4, 44), +, v, @, o, ., q) $right($gettok($1, 1, 33), -1)) | |
| 51 | 51 | } | |
| 52 | 52 | } | |
| 53 | + | elseif ($2 == PRIVMSG) { | |
| 54 | + | :>JD!07215E4B28474ECBBCEF373752CAA2D1@GateKeeper PRIVMSG %#The\bLobby :S Tahoma;0 test | |
| 55 | + | if ($left($4-, 2) == : $+ $chr(1) && $len($4-) > 2) { | |
| 56 | + | echo -a CTCP | |
| 57 | + | } | |
| 58 | + | if ($regex($4-, /^:\x01S\s([^\\]|\\.)([^\\]|\\.)(.*?);(\d+)\s(.*?)\x01?$/) > 0) { | |
| 59 | + | ; Notes: | |
| 60 | + | ; Font stored in: $regsubex($regml(3), /([^\\]|\\.)/gu, $chr($gk.asc(\1))) | |
| 61 | + | ; Script number stored in: $regml(4) - See also https://learn.microsoft.com/pl-pl/dotnet/api/system.windows.forms.visualstyles.textmetricscharacterset | |
| 62 | + | var %msg : | |
| 63 | + | var %color $gk.msn2irc($calc($gk.asc($regml(1)) - 1)) | |
| 64 | + | if (%color) | |
| 65 | + | %msg = $+(%msg, $chr(3), $base(%color, 10, 10, 2)) | |
| 66 | + | var %style $calc($gk.asc($regml(2)) - 1) | |
| 67 | + | if (%style & 1) %msg = %msg $+ $chr(2) | |
| 68 | + | if (%style & 2) %msg = %msg $+ $chr(29) | |
| 69 | + | if (%style & 4) %msg = %msg $+ $chr(31) | |
| 70 | + | %msg = $+(%msg, $str($chr(2), 2), $regml(5)) | |
| 71 | + | .parseline -it $1-3 %msg | |
| 72 | + | } | |
| 73 | + | } | |
| 53 | 74 | elseif ($2 == 004) { | |
| 54 | 75 | .parseline -itq : $+ $server 005 $me PREFIX=(qov).@+ CHANTYPES=%# | |
| 55 | 76 | } | |
| @@ -72,6 +93,9 @@ on 1:PARSELINE:in:*:{ | |||
| 72 | 93 | } | |
| 73 | 94 | } | |
| 74 | 95 | ||
| 96 | + | ; 3/6 matches | |
| 97 | + | alias gk.msn2irc return $gettok(1 0 5 3 2 7 6 10 15 14 4 9 12 8 13 11, $calc($1 + 1), 32) | |
| 98 | + | ||
| 75 | 99 | ; Usage: $gk.header(sequence) - Returns GateKeeper v3 header with specified sequence (1 or 3 for client) | |
| 76 | 100 | alias -l gk.header return $+(GKSSP\0JD,$chr(3),\0\0\0,$chr($$1),\0\0\0) | |
| 77 | 101 | ||
| @@ -112,4 +136,4 @@ alias -l gk.guid { | |||
| 112 | 136 | alias -l username { | |
| 113 | 137 | if (@ isin $emailaddr) return $gettok($emailaddr, 1, 46) | |
| 114 | 138 | else return $me | |
| 115 | - | } | |
| 139 | + | } | |
README.md
| @@ -8,13 +8,13 @@ | |||
| 8 | 8 | * [x] Supports MODE on JOIN via IRCX access entries | |
| 9 | 9 | * [x] Supports IRC8 names reply (353) | |
| 10 | 10 | * [x] Supports IRC8 away/unaway notifications (821/822) | |
| 11 | + | * [x] Supports MSN Chat colors and styles (bold/italic/underline) | |
| 11 | 12 | ||
| 12 | 13 | ## Nice to haves (might be implemented) | |
| 13 | 14 | ||
| 14 | 15 | * [ ] IRC8 Profiles (818) | |
| 15 | 16 | * [ ] Support away information from 353/JOIN | |
| 16 | 17 | * [ ] Support WHISPER (and convert PRIVMSG to & from WHISPER) | |
| 17 | - | * [ ] Convert styled PRIVMSG to normal PRIVMSG (convert colors, etc) | |
| 18 | 18 | * [ ] Support CTCP "ERR NOUSERWHISPER". | |
| 19 | 19 | * [ ] Don't default to IRC8 | |
| 20 | 20 | ||
realJoshByrnes revised this gist . Go to revision
2 files changed, 22 insertions, 14 deletions
IRC8.mrc
| @@ -47,7 +47,7 @@ on 1:PARSELINE:in:*:{ | |||
| 47 | 47 | elseif ($2 == JOIN) { | |
| 48 | 48 | .parseline -it $1-2 $4- | |
| 49 | 49 | if ($gettok($3, 4, 44) isin +@.) { | |
| 50 | - | parseline -itq $+($1 MODE $right($4, -1) +, $replace($gettok($3, 4, 44), +, v, @, o, ., q) $right($gettok($1, 1, 33), -1)) | |
| 50 | + | .parseline -itq $+($1 MODE $right($4, -1) +, $replace($gettok($3, 4, 44), +, v, @, o, ., q) $right($gettok($1, 1, 33), -1)) | |
| 51 | 51 | } | |
| 52 | 52 | } | |
| 53 | 53 | elseif ($2 == 004) { | |
| @@ -64,6 +64,12 @@ on 1:PARSELINE:in:*:{ | |||
| 64 | 64 | } | |
| 65 | 65 | .parseline -it $1-5 : $+ %new | |
| 66 | 66 | } | |
| 67 | + | elseif ($2 == 821) { | |
| 68 | + | .parseline -it $1 AWAY | |
| 69 | + | } | |
| 70 | + | elseif ($2 == 822) { | |
| 71 | + | .parseline -it $1 AWAY $3- | |
| 72 | + | } | |
| 67 | 73 | } | |
| 68 | 74 | ||
| 69 | 75 | ; Usage: $gk.header(sequence) - Returns GateKeeper v3 header with specified sequence (1 or 3 for client) | |
| @@ -97,7 +103,7 @@ alias -l gk.hex2chr { | |||
| 97 | 103 | } | |
| 98 | 104 | ||
| 99 | 105 | alias -l gk.guid { | |
| 100 | - | if ($1 == GateKeeperPassport) return $str(00, 16) | |
| 106 | + | if ($1 == GateKeeperPassport) return $str(00,16) | |
| 101 | 107 | if (!$var(%GK.GUID)) set %GK.GUID $md5($time $date $gmt $ctime $ticks) | |
| 102 | 108 | return %GK.GUID | |
| 103 | 109 | } | |
| @@ -106,4 +112,4 @@ alias -l gk.guid { | |||
| 106 | 112 | alias -l username { | |
| 107 | 113 | if (@ isin $emailaddr) return $gettok($emailaddr, 1, 46) | |
| 108 | 114 | else return $me | |
| 109 | - | } | |
| 115 | + | } | |
README.md
| @@ -1,19 +1,21 @@ | |||
| 1 | 1 | # MSN (IRC8) compatible connection script | |
| 2 | 2 | ||
| 3 | - | ## Requirements | |
| 3 | + | ## Features | |
| 4 | 4 | ||
| 5 | - | * [x] AdiIRC-first - Works with both mIRC and AdiIRC | |
| 6 | - | * [x] Native GateKeeper / GateKeeperPassport Authentication | |
| 7 | - | * [ ] Support WHISPER (and converts WHISPER to & from PRIVMSG) | |
| 8 | - | * [x] Convert IRC8 JOIN to IRC JOIN | |
| 9 | - | * [x] Support MODE on IRC8 JOIN (+v/o/q) | |
| 10 | - | * [x] Convert IRC8 NAMES to IRC NAMES | |
| 5 | + | * [x] Works with both mIRC and AdiIRC | |
| 6 | + | * [x] Native GateKeeper & GateKeeperPassport Authentication | |
| 7 | + | * [x] Supports IRC8 JOIN messages | |
| 8 | + | * [x] Supports MODE on JOIN via IRCX access entries | |
| 9 | + | * [x] Supports IRC8 names reply (353) | |
| 10 | + | * [x] Supports IRC8 away/unaway notifications (821/822) | |
| 11 | 11 | ||
| 12 | - | ## Nice to haves | |
| 12 | + | ## Nice to haves (might be implemented) | |
| 13 | 13 | ||
| 14 | - | * [ ] Convert styled PRIVMSG to normal PRIVMSG | |
| 15 | - | * [ ] Supports CTCP "ERR NOUSERWHISPER". | |
| 16 | - | * [ ] Convert AWAY to IRCv3 AWAY (if it does something in clients) | |
| 14 | + | * [ ] IRC8 Profiles (818) | |
| 15 | + | * [ ] Support away information from 353/JOIN | |
| 16 | + | * [ ] Support WHISPER (and convert PRIVMSG to & from WHISPER) | |
| 17 | + | * [ ] Convert styled PRIVMSG to normal PRIVMSG (convert colors, etc) | |
| 18 | + | * [ ] Support CTCP "ERR NOUSERWHISPER". | |
| 17 | 19 | * [ ] Don't default to IRC8 | |
| 18 | 20 | ||
| 19 | 21 | ## Known Issues | |
realJoshByrnes revised this gist . Go to revision
2 files changed, 2 insertions, 1 deletion
IRC8.mrc
| @@ -97,7 +97,7 @@ alias -l gk.hex2chr { | |||
| 97 | 97 | } | |
| 98 | 98 | ||
| 99 | 99 | alias -l gk.guid { | |
| 100 | - | if ($1 == GateKeeperPassport) return $str(00,16) | |
| 100 | + | if ($1 == GateKeeperPassport) return $str(00, 16) | |
| 101 | 101 | if (!$var(%GK.GUID)) set %GK.GUID $md5($time $date $gmt $ctime $ticks) | |
| 102 | 102 | return %GK.GUID | |
| 103 | 103 | } | |
README.md
| @@ -14,6 +14,7 @@ | |||
| 14 | 14 | * [ ] Convert styled PRIVMSG to normal PRIVMSG | |
| 15 | 15 | * [ ] Supports CTCP "ERR NOUSERWHISPER". | |
| 16 | 16 | * [ ] Convert AWAY to IRCv3 AWAY (if it does something in clients) | |
| 17 | + | * [ ] Don't default to IRC8 | |
| 17 | 18 | ||
| 18 | 19 | ## Known Issues | |
| 19 | 20 | * Auth doesn't always work with AdiIRC (probably due to UTF8 quirks) | |
realJoshByrnes revised this gist . Go to revision
2 files changed, 24 insertions, 3 deletions
IRC8.mrc
| @@ -44,6 +44,26 @@ on 1:PARSELINE:in:*:{ | |||
| 44 | 44 | echo $color(info2) -t * ERROR: Unknown Authentication Package $+($chr(40),$2,$chr(41)) | |
| 45 | 45 | } | |
| 46 | 46 | } | |
| 47 | + | elseif ($2 == JOIN) { | |
| 48 | + | .parseline -it $1-2 $4- | |
| 49 | + | if ($gettok($3, 4, 44) isin +@.) { | |
| 50 | + | parseline -itq $+($1 MODE $right($4, -1) +, $replace($gettok($3, 4, 44), +, v, @, o, ., q) $right($gettok($1, 1, 33), -1)) | |
| 51 | + | } | |
| 52 | + | } | |
| 53 | + | elseif ($2 == 004) { | |
| 54 | + | .parseline -itq : $+ $server 005 $me PREFIX=(qov).@+ CHANTYPES=%# | |
| 55 | + | } | |
| 56 | + | elseif ($2 == 353) { | |
| 57 | + | var %original = $right($6-, -1) | |
| 58 | + | var %new | |
| 59 | + | var %i = 1 | |
| 60 | + | while (%i <= $numtok(%original, 32)) { | |
| 61 | + | var %user = $gettok(%original, %i, 32) | |
| 62 | + | %new = %new $gettok(%user, $numtok(%user, 44), 44) | |
| 63 | + | inc %i | |
| 64 | + | } | |
| 65 | + | .parseline -it $1-5 : $+ %new | |
| 66 | + | } | |
| 47 | 67 | } | |
| 48 | 68 | ||
| 49 | 69 | ; Usage: $gk.header(sequence) - Returns GateKeeper v3 header with specified sequence (1 or 3 for client) | |
README.md
| @@ -5,14 +5,15 @@ | |||
| 5 | 5 | * [x] AdiIRC-first - Works with both mIRC and AdiIRC | |
| 6 | 6 | * [x] Native GateKeeper / GateKeeperPassport Authentication | |
| 7 | 7 | * [ ] Support WHISPER (and converts WHISPER to & from PRIVMSG) | |
| 8 | - | * [ ] Convert IRC8 JOIN to IRC JOIN | |
| 9 | - | * [ ] Support MODE on IRC8 JOIN (+v/o/q) | |
| 10 | - | * [ ] Convert IRC8 NAMES to IRC NAMES | |
| 8 | + | * [x] Convert IRC8 JOIN to IRC JOIN | |
| 9 | + | * [x] Support MODE on IRC8 JOIN (+v/o/q) | |
| 10 | + | * [x] Convert IRC8 NAMES to IRC NAMES | |
| 11 | 11 | ||
| 12 | 12 | ## Nice to haves | |
| 13 | 13 | ||
| 14 | 14 | * [ ] Convert styled PRIVMSG to normal PRIVMSG | |
| 15 | 15 | * [ ] Supports CTCP "ERR NOUSERWHISPER". | |
| 16 | + | * [ ] Convert AWAY to IRCv3 AWAY (if it does something in clients) | |
| 16 | 17 | ||
| 17 | 18 | ## Known Issues | |
| 18 | 19 | * Auth doesn't always work with AdiIRC (probably due to UTF8 quirks) | |