View difference between Paste ID: tGQPMaXh and T2euQn8W
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
}