comparison urllog.tcl @ 659:eddf0ff17fbd

urllog: Use new HTTP helpers from utillib.
author Matti Hamalainen <ccr@tnsp.org>
date Fri, 19 Feb 2021 21:03:26 +0200
parents 10ea2c1101b3
children afe4b1fe5e79
comparison
equal deleted inserted replaced
658:33580ee2579e 659:eddf0ff17fbd
209 return 1 209 return 1
210 } 210 }
211 211
212 212
213 #------------------------------------------------------------------------- 213 #-------------------------------------------------------------------------
214 proc urllog_clear_request { urlStatus urlSCode urlCode urlData urlMeta } { 214 proc urllog_do_request { urlNick urlChan urlStr urlStatus urlSCode urlCode urlData urlMeta } {
215 215
216 ### Clear the request data
217 upvar $urlStatus ustatus 216 upvar $urlStatus ustatus
218 upvar $urlSCode uscode 217 upvar $urlSCode uscode
219 upvar $urlCode ucode 218 upvar $urlCode ucode
220 upvar $urlData udata 219 upvar $urlData udata
221 upvar $urlMeta umeta 220 upvar $urlMeta umeta
222 221
223 unset ustatus
224 unset uscode
225 unset ucode
226 unset udata
227 array unset umeta
228 }
229
230
231 #-------------------------------------------------------------------------
232 proc urllog_do_request { urlNick urlChan urlStr urlStatus urlSCode urlCode urlData urlMeta } {
233
234 upvar $urlStatus ustatus
235 upvar $urlSCode uscode
236 upvar $urlCode ucode
237 upvar $urlData udata
238 upvar $urlMeta umeta
239
240 set urlHeaders {} 222 set urlHeaders {}
241 lappend urlHeaders "Accept-Encoding" "identity" 223 lappend urlHeaders "Accept-Encoding" "identity"
242 #lappend urlHeaders "Connection" "keep-alive" 224 #lappend urlHeaders "Connection" "keep-alive"
243 225
244 ### Perform request 226 set uresult [utl_http_do_request $urlHeaders $urlStr ustatus uscode ucode udata umeta]
245 if {[catch {set utoken [::http::geturl $urlStr -timeout 6000 -binary 1 -headers $urlHeaders]} uerrmsg]} { 227 if {$uresult == -1} {
246 urllog_verb_msg 1 $urlNick $urlChan "err_http_get" [list $urlStr $uerrmsg] 228 urllog_verb_msg 1 $urlNick $urlChan "err_http_get" [list $urlStr $uscode]
247 urllog_log "HTTP request failed: $uerrmsg" 229 urllog_log "HTTP request failed: $uscode"
248 return 0 230 return 0
249 } 231 } elseif {$uresult < 0} {
250
251 ### Check status
252 set ustatus [::http::status $utoken]
253 set uscode [::http::code $utoken]
254 set ucode [::http::ncode $utoken]
255
256 if {$ustatus != "ok"} {
257 urllog_verb_msg 1 $urlNick $urlChan "err_http_status" [list $urlStr $ustatus $uscode $ucode] 232 urllog_verb_msg 1 $urlNick $urlChan "err_http_status" [list $urlStr $ustatus $uscode $ucode]
258 urllog_log "Error in HTTP request: $ustatus / $uscode ($urlStr)" 233 urllog_log "Error in HTTP request: $ustatus / $uscode ($urlStr)"
259 return 0 234 return 0
260 }
261
262 ### Get data
263 set udata [::http::data $utoken]
264 array set umeta [::http::meta $utoken]
265 ::http::cleanup $utoken
266
267 ### Sanitize the metadata KEYS
268 foreach {ukey uvalue} [array get umeta] {
269 set ukey [string tolower $ukey]
270 set umeta($ukey) $uvalue
271 } 235 }
272 236
273 return 1 237 return 1
274 } 238 }
275 239
397 if {![urllog_validate_url $urlNick $urlChan ustr uproto uhostname]} { 361 if {![urllog_validate_url $urlNick $urlChan ustr uproto uhostname]} {
398 return 0 362 return 0
399 } 363 }
400 364
401 ### Attempt to fetch redirection target 365 ### Attempt to fetch redirection target
402 urllog_clear_request ustatus uscode ucode udata umeta 366 utl_http_clear_request ustatus uscode ucode udata umeta
367
403 if {![urllog_do_request $urlNick $urlChan $ustr ustatus uscode ucode udata umeta]} { 368 if {![urllog_do_request $urlNick $urlChan $ustr ustatus uscode ucode udata umeta]} {
404 urllog_verb_msg 1 $urlNick $urlChan "err_redirect_fail" [list $ustr $ustatus $uscode $ucode $urlRedirLevel] 369 urllog_verb_msg 1 $urlNick $urlChan "err_redirect_fail" [list $ustr $ustatus $uscode $ucode $urlRedirLevel]
405 urllog_log "Error fetching redirect: status=$ustatus, code=$ucode, scode=$uscode, url=$ustr, redirLevel=$urlRedirLevel" 370 urllog_log "Error fetching redirect: status=$ustatus, code=$ucode, scode=$uscode, url=$ustr, redirLevel=$urlRedirLevel"
406 return 0 371 return 0
407 } 372 }