SHOW:
|
|
- or go back to the newest paste.
| 1 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | |
| 2 | ;;;;;;;;; Oasiz IRCX API Auth Tool ;;;;;;;;;; | |
| 3 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | |
| 4 | ||
| 5 | ;; VERSION 2.1 | |
| 6 | ;; AUTHOR Rob Hildyard | |
| 7 | ;; DATE 15.11.15 | |
| 8 | ;; SITE www.oasiz.com | |
| 9 | ||
| 10 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | |
| 11 | ||
| 12 | ;; IMPORTANT: This script requires Oasiz IRCX | |
| 13 | ;; API v2 Auth: http://oasiz.co/c | |
| 14 | ||
| 15 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | |
| 16 | ||
| 17 | menu status {
| |
| 18 | Oasiz API Auth: if (!$dialog(oasiz)) dialog -m oasiz.api oasiz.api | |
| 19 | } | |
| 20 | ||
| 21 | dialog oasiz.api {
| |
| 22 | ;; ID , LEFT, TOP, WIDTH, HEIGHT | |
| 23 | title "Oasiz IRCX Auth Tool v2.1" | |
| 24 | size -1 -1 123 147 | |
| 25 | option dbu | |
| 26 | ||
| 27 | text "API Information:", 42, 6 4 40 8, left | |
| 28 | link "click here", 812, 47 4 60 8 | |
| 29 | ||
| 30 | list 1,5 15 112 45 | |
| 31 | ||
| 32 | text "Last Updated:", 10, 6 60 40 8, left | |
| 33 | text "N/A", 45, 45 60 75 8, left | |
| 34 | ||
| 35 | button "Add", 346, 5 70 36 11, | |
| 36 | button "Delete", 365, 43 70 36 11, | |
| 37 | button "Update", 8, 82 70 36 11, | |
| 38 | ||
| 39 | text "Server:", 100, 6 87 35 8, left | |
| 40 | check "Main", 110, 27 87 23 8, | |
| 41 | check "Groups", 130, 50 87 26 8, | |
| 42 | button "Connect", 34, 82 85 36 11, | |
| 43 | ||
| 44 | box "Status", 4, 6 98 112 33, read multi left | |
| 45 | edit -, 44, 11 107 102 19, read multi left | |
| 46 | text "Copyright © 2015", 9, 24 134 46 8, left | |
| 47 | link "Oasiz", 12, 70 134 30 8 | |
| 48 | } | |
| 49 | ||
| 50 | on *:dialog:oasiz.api:init:*: {
| |
| 51 | ;; Server check boxes | |
| 52 | if ( $readini(oasiz.api.ini,n,settings,s) === M ) { did -c $dname 110 }
| |
| 53 | if ( $readini(oasiz.api.ini,n,settings,s) === G ) { did -c $dname 130 }
| |
| 54 | if ( $readini(oasiz.api.ini,n,settings,s) === B ) { did -c $dname 110 | did -c $dname 130 }
| |
| 55 | var %dolist = $oasiz.authtool.apidata(list) | |
| 56 | } | |
| 57 | ||
| 58 | on *:dialog:oasiz.api:sclick:1: {
| |
| 59 | ;; Selecting account API in list | |
| 60 | var %a = $oasiz.authtool.apidata(match, $did($dname,1).seltext) | |
| 61 | if ( %a !== $null ) {
| |
| 62 | ;; enable "update/delete" button | |
| 63 | did -e $dname 8 | did -e $dname 365 | |
| 64 | writeini -n oasiz.api.ini settings current_api %a | |
| 65 | %_oa.authcode = $readini(oasiz.api.ini,n,%a,a) | |
| 66 | $oasiz.authtool.lastupdated($oasiz.authtool.apidata(match, $did($dname,1).seltext)) | |
| 67 | } | |
| 68 | var %checkbtn = $oasiz.authtool.checkbutton | |
| 69 | } | |
| 70 | ||
| 71 | ;;; Add new account API data | |
| 72 | on *:dialog:oasiz.api:sclick:346: {
| |
| 73 | var %n = $$?="Step 1 of 3: Enter a(ny) name/reference for this account.", %k = $$?="Step 2 of 3: Enter API key:", %p = $$?*="Step 3 of 3: Enter API password:" | |
| 74 | ;; Validate data | |
| 75 | var %a = $iif( $readini(oasiz.api.ini,n,%k,k), added, updated ) | |
| 76 | if ( $len(%k) != 36 || $len(%p) != 32 ) { $oasiz.authtool.msg( Input error: Invalid API key/password detected ) | return }
| |
| 77 | ;; Looks like we made it. Let's get it updated.. | |
| 78 | writeini -n oasiz.api.ini %k n %n | |
| 79 | writeini -n oasiz.api.ini %k k %k | |
| 80 | writeini -n oasiz.api.ini %k p %p | |
| 81 | writeini -n oasiz.api.ini %k a 0 | |
| 82 | writeini -n oasiz.api.ini %k u 0 | |
| 83 | $oasiz.authtool.msg( %a ) | |
| 84 | writeini -n oasiz.api.ini settings current_api %k | |
| 85 | $oasiz.authtool.apidata(list) | |
| 86 | $oasiz.authtool.update | |
| 87 | } | |
| 88 | ||
| 89 | ;;; Delete account API data | |
| 90 | on *:dialog:oasiz.api:sclick:365: {
| |
| 91 | if ($?!="Are you sure you want to remove this entry?" === $true) {
| |
| 92 | remini oasiz.api.ini $oasiz.authtool.apidata(match, $did($dname,1).seltext) | |
| 93 | ;; Update/refresh list | |
| 94 | $oasiz.authtool.apidata(list) | |
| 95 | } | |
| 96 | } | |
| 97 | ||
| 98 | ;;; Update account API data | |
| 99 | on *:dialog:oasiz.api:sclick:8: {
| |
| 100 | $oasiz.authtool.update | |
| 101 | } | |
| 102 | ||
| 103 | ;;; Server choice (main) | |
| 104 | on *:dialog:oasiz.api:sclick:110: {
| |
| 105 | $oasiz.authtool.setserver | |
| 106 | } | |
| 107 | ||
| 108 | ;;; Server choice (groups) | |
| 109 | on *:dialog:oasiz.api:sclick:130: {
| |
| 110 | $oasiz.authtool.setserver | |
| 111 | } | |
| 112 | ||
| 113 | ;;; connect button | |
| 114 | on *:dialog:oasiz.api:sclick:34: {
| |
| 115 | $oasiz.authtool.connect | |
| 116 | dialog -x oasiz.api | |
| 117 | } | |
| 118 | ||
| 119 | ;; URLs | |
| 120 | on *:dialog:oasiz.api:sclick:12: { url -an http://www.oasiz.com }
| |
| 121 | on *:dialog:oasiz.api:sclick:812: { url -an http://chat.oasiz.net/chat_api_key }
| |
| 122 | ||
| 123 | ;; Checks if connect button needs to be enabled/disabled | |
| 124 | alias oasiz.authtool.checkbutton {
| |
| 125 | ;; Enable "connect" button if: we have an account selected, we've updated it, we have a server selected | |
| 126 | if ( ( $did(oasiz.api,1).seltext !== $null && $readini(oasiz.api.ini,n,$oasiz.authtool.apidata(match, $did($dname,1).seltext),u) !== 0 ) && ( $did(oasiz.api,110).state === 1 || $did(oasiz.api,130).state === 1) ) {
| |
| 127 | did -e oasiz.api 34 | |
| 128 | return 1 | |
| 129 | } | |
| 130 | else {
| |
| 131 | did -b oasiz.api 34 | |
| 132 | return 0 | |
| 133 | } | |
| 134 | } | |
| 135 | ||
| 136 | alias oasiz.authtool.msg {
| |
| 137 | if (!$dialog(oasiz.api)) { echo -s $1- | return }
| |
| 138 | did -r oasiz.api 44 | |
| 139 | did -a oasiz.api 44 $1- | |
| 140 | } | |
| 141 | ||
| 142 | ;; Last Updated | |
| 143 | alias oasiz.authtool.lastupdated {
| |
| 144 | did -r oasiz.api 45 | |
| 145 | var %t = $readini(oasiz.api.ini,n,$1,u) | |
| 146 | did -a oasiz.api 45 $iif($1 === reset,N/A, $iif(%t != 0, %t, N/A)) | |
| 147 | } | |
| 148 | ||
| 149 | alias oasiz.authtool.update {
| |
| 150 | ;; Disable "add/delete/connect/update" buttons whilst we update | |
| 151 | did -b oasiz.api 346 | did -b oasiz.api 365 | did -b oasiz.api 8 | did -b oasiz.api 34 | |
| 152 | $oasiz.authtool.api.update | |
| 153 | } | |
| 154 | ||
| 155 | alias oasiz.authtool.apidata {
| |
| 156 | ;; Reset API data list | |
| 157 | if ( $1 === list ) {
| |
| 158 | did -r oasiz.api 1 | |
| 159 | } | |
| 160 | var %api_keys = 0, %x = 0, %c = 0, %s = 0 | |
| 161 | while ( %x <= $ini(oasiz.api.ini,0) ) {
| |
| 162 | if ( $len($ini(oasiz.api.ini,%x)) === 36 ) {
| |
| 163 | if (%s === 0) { %s = $ini(oasiz.api.ini,%x) }
| |
| 164 | if ( $1 === list ) {
| |
| 165 | if ( $ini(oasiz.api.ini,%x) === $readini(oasiz.api.ini, n, settings, current_api) ) {
| |
| 166 | %c = %x | |
| 167 | %s = $ini(oasiz.api.ini,%x) | |
| 168 | } | |
| 169 | did -a oasiz.api 1 $readini(oasiz.api.ini, n, $ini(oasiz.api.ini,%x), n) | |
| 170 | } | |
| 171 | if ( $1 === match ) {
| |
| 172 | if ( $readini(oasiz.api.ini, n, $ini(oasiz.api.ini,%x), n) === $2- ) {
| |
| 173 | return $ini(oasiz.api.ini,%x) | |
| 174 | } | |
| 175 | } | |
| 176 | inc %api_keys | |
| 177 | } | |
| 178 | inc %x | |
| 179 | } | |
| 180 | ;; Return null if no match found | |
| 181 | if ( $1 === match ) return 0 | |
| 182 | if ( $1 === list ) {
| |
| 183 | if ( %api_keys > 0 ) {
| |
| 184 | ;; Select the last selected API account data in the list, or the first item in the list if we have none set | |
| 185 | did -c oasiz.api 1 $calc(%c - 1) | |
| 186 | writeini -n oasiz.api.ini settings current_api %s | |
| 187 | ||
| 188 | ;; Check connect button | |
| 189 | var %checkbtn = $oasiz.authtool.checkbutton | |
| 190 | } | |
| 191 | else {
| |
| 192 | ;; There's no API data stored, let's be nice and advise them | |
| 193 | $oasiz.authtool.msg(Click "Add" to store your first Oasiz API account details) | |
| 194 | ||
| 195 | ;; We should also disable the delete/update/connect buttons.. | |
| 196 | did -b $dname 365 | did -b $dname 8 | did -b $dname 34 | |
| 197 | } | |
| 198 | $oasiz.authtool.lastupdated($readini(oasiz.api.ini, n, settings, current_api)) | |
| 199 | if ( $did(oasiz.api,1).seltext === $null ) {
| |
| 200 | ;; Only shown after deleting API account. I think. | |
| 201 | ;; No API account data selected - disable delete, update and connect buttons | |
| 202 | did -b oasiz.api 365 | did -b oasiz.api 8 | did -b oasiz.api 34 | |
| 203 | $oasiz.authtool.lastupdated(reset) | |
| 204 | } | |
| 205 | else {
| |
| 206 | ;; We have an API account selected | |
| 207 | ;; Enable "delete/update" buttons | |
| 208 | did -e oasiz.api 365 | did -e oasiz.api 8 | |
| 209 | } | |
| 210 | } | |
| 211 | } | |
| 212 | ||
| 213 | ;; Send API call to authorisation script | |
| 214 | alias oasiz.authtool.api.update {
| |
| 215 | $api(ADD, $readini(oasiz.api.ini, n, $readini(oasiz.api.ini, n, settings, current_api), k), $readini(oasiz.api.ini, n, $readini(oasiz.api.ini, n, settings, current_api), p)) | |
| 216 | } | |
| 217 | ||
| 218 | alias oasiz.authtool.setserver {
| |
| 219 | var %c = 0 | |
| 220 | if ( $did($dname,110).state === 1 ) %c = 3 | |
| 221 | if ( $did($dname,130).state === 1 ) %c = %c + 5 | |
| 222 | if ( %c === 3 ) %c = M | |
| 223 | if ( %c === 5 ) %c = G | |
| 224 | if ( %c === 8 ) %c = B | |
| 225 | writeini -n oasiz.api.ini settings s %c | |
| 226 | var %checkbtn = $oasiz.authtool.checkbutton | |
| 227 | } | |
| 228 | ||
| 229 | alias oasiz.authtool.getserver {
| |
| 230 | if ($1 === G) return 96.47.35.82 | |
| 231 | return 96.47.35.81 | |
| 232 | } | |
| 233 | ||
| 234 | alias oasiz.authtool.connect {
| |
| 235 | var %svr = $readini(oasiz.api.ini,n,settings,s) | |
| 236 | if ( %svr !== B ) {
| |
| 237 | server $oasiz.authtool.getserver(%svr) | |
| 238 | } | |
| 239 | else {
| |
| 240 | server $oasiz.authtool.getserver(M) | |
| 241 | server -m $oasiz.authtool.getserver(G) | |
| 242 | } | |
| 243 | } | |
| 244 | ||
| 245 | alias oasiz.api.callback {
| |
| 246 | if ( $1 === 1 ) {
| |
| 247 | ;; Loading API data | |
| 248 | $oasiz.authtool.msg($2-) | |
| 249 | } | |
| 250 | elseif ( $1 === 2 ) {
| |
| 251 | ;; Successfully loaded API data | |
| 252 | ||
| 253 | writeini -n oasiz.api.ini $readini(oasiz.api.ini, n, settings, current_api) a $2 | |
| 254 | writeini -n oasiz.api.ini $readini(oasiz.api.ini, n, settings, current_api) u $asctime(dd/mm/yy h:nnTT) | |
| 255 | ||
| 256 | if ( $dialog(oasiz.api) ) {
| |
| 257 | var %st = Authentication data successfully loaded. | |
| 258 | ;; Enable add/delete buttons | |
| 259 | did -e oasiz.api 346 | did -e oasiz.api 365 | |
| 260 | ;; Enable connect button IF we have a server selected | |
| 261 | var %checkbtn = $oasiz.authtool.checkbutton | |
| 262 | if ( %checkbtn === $null ) {
| |
| 263 | %st = %st $+ $chr(32) $+ Select server(s) to join. | |
| 264 | } | |
| 265 | $oasiz.authtool.msg(%st) | |
| 266 | $oasiz.authtool.lastupdated($readini(oasiz.api.ini, n, settings, current_api)) | |
| 267 | } | |
| 268 | else {
| |
| 269 | ;; This is likely to be a failed-auth reconnection, let's try and reconnect here | |
| 270 | echo -a Reconnecting.. | |
| 271 | .oasiz.authtool.connect | |
| 272 | } | |
| 273 | } | |
| 274 | elseif ( $1 === 7 ) {
| |
| 275 | ;; API Authentication error | |
| 276 | $oasiz.authtool.msg(API Error: $2) | |
| 277 | ;; Enable add/delete buttons | |
| 278 | if ( $dialog(oasiz.api) ) {
| |
| 279 | did -e oasiz.api 346 | did -e oasiz.api 365 | |
| 280 | } | |
| 281 | .disconnect | |
| 282 | } | |
| 283 | elseif ( $1 === 8 ) {
| |
| 284 | ;; IRCx Authentication failed, $2 = raw 910 or 911 | |
| 285 | echo -a Authentication failed. Updating passport.. | |
| 286 | $oasiz.authtool.api.update | |
| 287 | } | |
| 288 | else {
| |
| 289 | ;; echo -s Unknown API error code ( $+ $1 $+ ) | |
| 290 | } | |
| 291 | } |