ADDED client/1.0/neutral/common.tcl Index: client/1.0/neutral/common.tcl ================================================================== --- client/1.0/neutral/common.tcl +++ client/1.0/neutral/common.tcl @@ -0,0 +1,479 @@ +############################################################################### +# +# common.tcl -- +# +# Extensible Adaptable Generalized Logic Engine (Eagle) +# Eagle Common Tools Package +# +# Copyright (c) 2007-2012 by Joe Mistachkin. All rights reserved. +# +# See the file "license.terms" for information on usage and redistribution of +# this file, and for a DISCLAIMER OF ALL WARRANTIES. +# +# RCS: @(#) $Id: $ +# +############################################################################### + +if {![package vsatisfies [package provide Tcl] 8.4]} then { + error "need Tcl 8.4 or higher" +} + +if {[catch {package present Eagle}] == 0} then { + error "need native Tcl" +} + +############################################################################### + +namespace eval ::Eagle::Tools::Common { + # + # NOTE: *HACK* Skip defining this procedure if it is already defined. + # + if {[llength [info commands ::appendArgs]] == 0} then { + # + # NOTE: This procedure was stolen from the "auxiliary.eagle" script. + # This procedure accepts an any number of arguments. The arguments + # are appended into one big string, verbatim. The resulting string + # is returned. Normally, this procedure is used to avoid undesired + # string interpolation operations. + # + proc appendArgs { args } { + eval append result $args + } + } + + # + # NOTE: *HACK* Skip defining this procedure if it is already defined. + # + if {[llength [info commands ::makeBinaryChannel]] == 0} then { + # + # NOTE: This procedure was stolen from the "file1.eagle" script. This + # procedure reconfigures the specified channel to full binary mode. + # + proc makeBinaryChannel { channel } { + fconfigure $channel -encoding binary -translation binary; # BINARY DATA + } + } + + # + # NOTE: *HACK* Skip defining this procedure if it is already defined. + # + if {[llength [info commands ::writeFile]] == 0} then { + # + # NOTE: This procedure was stolen from the "file1.eagle" script. This + # procedure writes all data to the specified binary file and returns + # an empty string. Previous data contained in the file, if any, is + # lost. + # + proc writeFile { fileName data } { + set channel [open $fileName {WRONLY CREAT TRUNC}] + makeBinaryChannel $channel + puts -nonewline $channel $data + close $channel + return "" + } + } + + # + # NOTE: This procedure was stolen from the "getEagle.tcl" script. This + # procedure sets up the default values for all HTTP configuration + # parameters used by this package. If the force argument is + # non-zero, any existing values will be overwritten and set back + # to their default values. + # + proc setupCommonVariables { force } { + # + # NOTE: Should the HTTP request processor attempt to force the use of + # HTTPS for URIs that were originally HTTP? This setting is only + # applicable to native Tcl. + # + variable forceSecureUri; # DEFAULT: true + + if {$force || ![info exists forceSecureUri]} then { + set forceSecureUri true + } + + # + # NOTE: Is this HTTP request processor allowed to use plain HTTP if/when + # the "tls" package is not available? This should only be changed + # if the "tls" package cannot be easily installed for use with the + # native Tcl interpreter in use. It should be noted here that the + # official package repository server reserves the right to refuse + # plain HTTP connections, which means that changing this setting + # may be totally pointless. + # + variable allowInsecureUri; # DEFAULT: false + + if {$force || ![info exists allowInsecureUri]} then { + set allowInsecureUri false + } + + # + # NOTE: Emit diagnostic messages when the [::http::geturl] procedure is + # about to be called? + # + variable verboseGetUrl; # DEFAULT: false + + if {$force || ![info exists verboseGetUrl]} then { + set verboseGetUrl false + } + + # + # NOTE: Is this HTTP request processor allowed to use plain HTTP if/when + # the server responds with an HTTP redirect location to an original + # URI that was HTTPS? Otherwise, a script error will result. + # + variable allowInsecureRedirect; # DEFAULT: false + + if {![info exists allowInsecureRedirect]} then { + set allowInsecureRedirect false + } + } + + # + # NOTE: This procedure was stolen from the "getEagle.tcl" script. It is + # designed to emit a message to the console. The channel argument + # is the channel where the message should be written. The string + # argument is the content of the message to emit. If the channel + # argument is an empty string, nothing is written. + # + proc pageOut { channel string } { + if {[string length $channel] > 0} then { + catch { + puts -nonewline $channel $string; flush $channel + } + } + } + + # + # NOTE: This procedure was stolen from the "getEagle.tcl" script. It is + # designed to emit a message to the HTTP client log. The string + # argument is the content of the message to emit. If the string + # argument is an empty string, nothing is written. + # + proc pageLog { string } { + if {[string length $string] > 0} then { + catch { + tclLog [appendArgs [pid] " : " [clock seconds] " : http : " $string] + } + } + } + + # + # NOTE: This procedure was stolen from the "getEagle.tcl" script. It is + # designed to emit a progress indicator while an HTTP request is + # being processed. The channel argument is the Tcl channel where + # the progress indicator should be emitted. The type argument is + # the single-character progress indicator. The milliseconds + # argument is the number of milliseconds to wait until the next + # periodic progress indicator should be emitted. This procedure + # reschedules its own execution. + # + proc pageProgress { channel type milliseconds } { + # + # NOTE: This variable is used to keep track of the currently scheduled + # (i.e. pending) [after] event. + # + variable afterForPageProgress + + # + # NOTE: Show that something is happening... + # + pageOut $channel $type + + # + # NOTE: Make sure that we are scheduled to run again, if requested. + # + if {$milliseconds > 0} then { + set afterForPageProgress [after $milliseconds \ + [namespace code [list pageProgress $channel $type \ + $milliseconds]]] + } else { + unset -nocomplain afterForPageProgress + } + } + + # + # NOTE: This procedure was stolen from the "getEagle.tcl" script. It is + # designed to process a single HTTP request, including any HTTP + # 3XX redirects (up to the specified limit), and return the raw + # HTTP response data. It may raise any number of script errors. + # + proc getFileViaHttp { uri redirectLimit channel quiet args } { + # + # NOTE: This global variable is used to check the running version of + # Tcl. + # + global tcl_version + + # + # NOTE: This variable is used to determine if plain HTTP URIs should be + # converted to HTTPS, if the "tls" package is available. + # + variable forceSecureUri + + # + # NOTE: This variable is used to determine if plain HTTP is allowed if + # the "tls" package is not available. + # + variable allowInsecureUri + + # + # NOTE: This variable is used to determine if a diagnostic message is + # emitted when [::http::geturl] is about to be called. + # + variable verboseGetUrl + + # + # NOTE: This variable is used to determine if plain HTTP is allowed if + # an HTTP redirect response contains an HTTP URI and the original + # URI was HTTPS. + # + variable allowInsecureRedirect + + # + # NOTE: This variable is used to keep track of the currently scheduled + # (i.e. pending) [after] event. + # + variable afterForPageProgress + + # + # NOTE: This procedure requires the modern version of the HTTP package, + # which is typically included with the Tcl core distribution. + # + package require http 2.0 + + # + # NOTE: Tcl 8.6 added support for IPv6; however, on some machines this + # support can cause sockets to hang for a long time. Therefore, + # for now, always force the use of IPv4. + # + if {[info exists tcl_version] && $tcl_version >= 8.6} then { + namespace eval ::tcl::unsupported {} + set ::tcl::unsupported::socketAF inet + } + + # + # NOTE: If the 'tls' package is available, always attempt to use HTTPS; + # otherwise, only attempt to use HTTP if explicitly allowed. + # + if {[catch {package require tls}] == 0} then { + ::http::register https 443 [list ::tls::socket -tls1 true] + + if {$forceSecureUri} then { + if {[string range $uri 0 6] eq "http://"} then { + set uri [appendArgs https:// [string range $uri 7 end]] + } + } + } else { + if {$allowInsecureUri} then { + if {[string range $uri 0 7] eq "https://"} then { + set uri [appendArgs http:// [string range $uri 8 end]] + } + } + } + + # + # NOTE: Unless the caller forbids it, display progress messages during + # the download. + # + if {!$quiet} then { + pageProgress $channel . 250 + } + + # + # NOTE: All downloads are handled synchronously, which is not ideal; + # however, it is simple. Keep going as long as there are less + # than X redirects. + # + set redirectCount 0 + + while {1} { + # + # NOTE: Issue the HTTP request now, grabbing the resulting token. + # + if {$verboseGetUrl} then { + # + # NOTE: Emit important diagnostic information related to this + # HTTP request here. This may be enhanced in the future. + # + pageLog [appendArgs \ + "attempting to download URL \"" $uri \"...] + } + + set token [eval ::http::geturl [list $uri] $args] + + # + # NOTE: Grab the HTTP response code and data now as they are needed + # in almost all cases. + # + set code [::http::ncode $token]; set data [::http::data $token] + + # + # NOTE: Check the HTTP response code, in order to follow any HTTP + # redirect responses. + # + switch -glob -- $code { + 100 - + 101 - + 102 { + ::http::cleanup $token; error [appendArgs \ + "unsupported informational HTTP response status code " \ + $code ", data: " $data] + } + 200 - + 201 - + 202 - + 203 - + 204 - + 205 - + 206 - + 207 - + 208 - + 226 { + # + # NOTE: Ok, the HTTP response is actual data of some kind (which + # may be empty). + # + ::http::cleanup $token; break + } + 301 - + 302 - + 303 - + 307 - + 308 { + # + # NOTE: Unless the caller forbids it, display progress messages + # when an HTTP redirect is returned. + # + if {!$quiet} then { + pageProgress $channel > 0 + } + + # + # NOTE: We hit another HTTP redirect. Stop if there are more + # than X. + # + incr redirectCount + + # + # TODO: Maybe make this limit more configurable? + # + if {$redirectCount > $redirectLimit} then { + # + # NOTE: Just "give up" and raise a script error. + # + ::http::cleanup $token; error [appendArgs \ + "redirection limit of " $redirectLimit " exceeded"] + } + + # + # NOTE: Grab the metadata associated with this HTTP response. + # + array set meta [::http::meta $token] + + # + # NOTE: Is there actually a new URI (location) to use? + # + if {[info exist meta(Location)]} then { + # + # NOTE: Ok, grab it now. Later, at the top of the loop, + # it will be used in the subsequent HTTP request. + # + set location $meta(Location); unset meta + + # + # NOTE: For security, by default, do NOT follow an HTTP + # redirect if it attempts to redirect from HTTPS + # to HTTP. + # + if {!$allowInsecureRedirect && \ + [string range $uri 0 7] eq "https://" && \ + [string range $location 0 7] ne "https://"} then { + # + # NOTE: Just "give up" and raise a script error. + # + ::http::cleanup $token; error [appendArgs \ + "refused insecure redirect from \"" $uri "\" to \"" \ + $location \"] + } + + # + # NOTE: Replace the original URI with the new one, for + # use in the next HTTP request. + # + set uri $location + + # + # NOTE: Cleanup the current HTTP token now beause a new + # one will be created for the next request. + # + ::http::cleanup $token + } else { + # + # NOTE: Just "give up" and raise a script error. + # + ::http::cleanup $token; error [appendArgs \ + "redirect from \"" $uri "\" missing location, code " \ + $code ", data: " $data] + } + } + 300 - + 304 - + 305 - + 306 { + ::http::cleanup $token; error [appendArgs \ + "unsupported redirection HTTP response status code " $code \ + ", data: " $data] + } + 4?? { + ::http::cleanup $token; error [appendArgs \ + "client error HTTP response status code " $code ", data: " \ + $data] + } + 5?? { + ::http::cleanup $token; error [appendArgs \ + "server error HTTP response status code " $code ", data: " \ + $data] + } + default { + ::http::cleanup $token; error [appendArgs \ + "unrecognized HTTP response status code " $code ", data: " \ + $data] + } + } + } + + # + # NOTE: If there is a currently scheduled [after] event, cancel it. + # + if {[info exists afterForPageProgress]} then { + catch {after cancel $afterForPageProgress} + unset -nocomplain afterForPageProgress + } + + # + # NOTE: If progress messages were emitted, start a fresh line. + # + if {!$quiet} then { + pageOut $channel [appendArgs " " $uri \n] + } + + return $data + } + + # + # NOTE: First, setup the variables associated with this package. + # + setupCommonVariables false + + # + # NOTE: Export the procedures from this namespace that are designed to be + # used by external scripts. + # + namespace export appendArgs getFileViaHttp pageOut writeFile + + # + # NOTE: Provide the package to the interpreter. + # + package provide Eagle.Tools.Common 1.0 +} ADDED client/1.0/neutral/common.tcl.asc Index: client/1.0/neutral/common.tcl.asc ================================================================== --- client/1.0/neutral/common.tcl.asc +++ client/1.0/neutral/common.tcl.asc @@ -0,0 +1,18 @@ +-----BEGIN PGP SIGNATURE----- +Version: GnuPG v2 +Comment: Eagle Package Repository + +iQIcBAABCAAGBQJYmodbAAoJEFAslq9JXcLZcd4QALETnIRwfNC8+PS0FeHsJCM4 +X2+NlGn/BSaAm/c+cOuiTIapynUxB4EFXgz5aAgQgjWCOr8z19Zo+WPNXY/KUMMd +njuSK3Rx7dJqKpzLjEc2fYkCh6BeBfN//9J/S9uRfn4QEJe8ZG4QTIHK4+1fZPSJ +7aUuDW8H9HiMCASK+bv4/pzmuJjtZkL57Qv8nuSVCxpwZw8+by8mZw5pER3IP0x8 +tP8HhF/qtSqJwngBLlsLMtAWdlZ/XPF5Sa5DUywCRuBmb0p4GBP8XqPIhxfnYm28 +uhu8sTiaSmWJaOBQr55ASDoNxsblXCS/Gb2t06uf+AX/2sZyQswojIjOHc5agLBp ++rMX9R52+ifbDFQmcNOEdaEBevsZ6Mtqq9v9usAkCv/QYONOqq1Ng+wEpZ2NWc8O +ZOWTWd/0Aj/Hb++4ZE8WJ/cviX6tMyZsYW1lH5DA4zg/zIbIL+h20aE4xqRTIFkr +1KO1XJVNB+eGo6ciuXHs4SgmvFaxLBmUIGbFLLDxX8VzGQ3k93JQ4xPrC6cWPBxb +cBx5BywVPwT3z+Vbzy58sDpjIfn4arbj7g3rOL27jDkKWY4pHCMhXJ54mMmWmshq +F15qlIWevXAhfaHTTLaKlSrz8jdc1Hll58YtSD0xq0+gZsk5OZ3sgC6yYY6yBkhh +t50qvQGhkxxYuDssugMm +=jhWs +-----END PGP SIGNATURE----- Index: client/1.0/neutral/pkgIndex.tcl ================================================================== --- client/1.0/neutral/pkgIndex.tcl +++ client/1.0/neutral/pkgIndex.tcl @@ -23,5 +23,8 @@ package ifneeded Eagle.Package.Downloader 1.0 \ [list source [file join $dir pkgd.eagle]] package ifneeded Eagle.Package.Uploader 1.0 \ [list source [file join $dir pkgu.eagle]] + +package ifneeded Eagle.Tools.Common 1.0 \ + [list source [file join $dir common.tcl]] Index: client/1.0/neutral/pkgIndex.tcl.asc ================================================================== --- client/1.0/neutral/pkgIndex.tcl.asc +++ client/1.0/neutral/pkgIndex.tcl.asc @@ -1,18 +1,18 @@ -----BEGIN PGP SIGNATURE----- Version: GnuPG v2 Comment: Eagle Package Repository -iQIcBAABCAAGBQJYXa0BAAoJEFAslq9JXcLZf7IP/jEyWM0eE6W4O5kDEattRIVq -1v1QWnRjtRAOxjh3tL4gL0fw12heD2GRvu8Bg878oVLafSiAaXV02cCGoPupA6R3 -cl+vYRJ8SiGkaUVD4SwP9oPo8ijGsHPhK3bZjUTPMia30lUhoVhEYbYYT4B64iHH -Jlu6E6ZQoMHbnIYSSDjbUJo69d8xi/YEUuOT8T0wKY1K3NUsVGIdYTYUXXDMHb4N -WhyFEvYnEWffdthgGOIK4LyOCI3sNEsRK9ptA0d7CqpqQSzQaSFAZqFVsgc5p6V0 -jXReoASO1WvGR3TcsN6azyBGI2xfZcg9I+li6Ass0edXcblUjlnhJJPZPfP8QDEy -+gWZSXFZbnrMuN7Xr09ZrwAmRf0FEbJhhLN82yY9P3jZbSk2lMftDNpD+HciOXvj -mz+2p9h91uOhgtrYeZ0cxYoIop7O4OjmOzF0sGAHrVXQitQuxvmtFPRZo7T284nT -rJmSG6VQYVkdxfcPIy9dgquvaaDehfYZeHxsaD2qGB8CZvEfHb3L+GQIuJHcgX1c -LfmLRvt6Ba3L+WD6u/4wpqdPskdlZXSPcRG72x57En53Bhc7U2YrRgE2FFEH68LC -QH453r++hjCbXZEP4lM5gAkpOtVChzpwCZSSA4P2GYUy+xVVexhIRjqOHxhTZGEk -8JEP7cd7Rgegi5aY5dO5 -=ryeC +iQIcBAABCAAGBQJYmpNEAAoJEFAslq9JXcLZ2qMP/2VG2WeyVA5wiD0v8RmtDfnm +EUeYchiq0hqnfJbp06BRD/+rzDTUskLGgb6SDadc+/A3JePQQteVe4q3xH9eXKM0 +S+z80Cet0ky5tHuW2cBPKDtl5o5a455ldyDn4ANOB4TKzLCX/iI6jTGLD9tljTPE +q1SFNSNEnnGE/1SfjAHsntCI8EIUAWdxkraqVI9F4FvbWN3W16f2WftP5+HRhbKv +Usz5aCZ7ar21efD/njCpb9M4Q/Ky8bcXW+aRCOSncIytjZQNawOgyvZc1g0EZhWC +z2/Ur6CNnGys6mHYWoVi+ZWep4bQtFy/T/9si3UF4/xfyCPA6itORt3WStNCdPRP +dB2loIxW9PdqjtEEdI46pSGxzbRYRiUnI12Wdtu00rkCnbLp0YOveVLdP395cbPb +pjGSx/FEFi5PieaxK268MHVGmJNQlpnTDmdC3HRPjrh+01EqClQEZJ2lEnDWmjV9 +SMc1iqdYAwFjoilqmp5c4EczUyoDA676A4H/Q8z/uQ7INL4ibu2qHomANC09OtLT +rMPo9Xj8YtfMJ8YZMcFSe+/gPq9wQHr1vUxB6zht7Z8PzUf7Qo8zVnNDo3wrDAbT +y+MX/p5mWCAa+r9q4h3Ja4rqbD+jPOBQG+npREMeims3GXi99/euhEbjFC1A+KyY +TFKiq4D7rrIWgAHxTx27 +=fVaE -----END PGP SIGNATURE----- Index: client/1.0/neutral/pkgr.eagle ================================================================== --- client/1.0/neutral/pkgr.eagle +++ client/1.0/neutral/pkgr.eagle @@ -83,11 +83,27 @@ ::Eagle::exportAndImportPackageCommands ::Eagle \ [list addToPath appendArgs getDictionaryValue \ isEagle isWindows readFile writeFile] false false } + # + # NOTE: Manually load package containing some common procedures that + # are needed by this package. + # + source [file join $pkgr_path common.tcl] + + # + # NOTE: Unset the "pkgr_path" variable as it will no longer be needed + # after this point. + # unset -nocomplain pkgr_path + + # + # NOTE: Attempt to import the procedures exposed by the common tools + # package. + # + namespace import ::Eagle::Tools::Common::getFileViaHttp } # # NOTE: This procedure is used to provide a TIP #194 compatible [apply] # command to the native Tcl 8.4 interpreter. Eagle and native Tcl @@ -2055,57 +2071,10 @@ # NOTE: This procedure sets up the default values for all configuration # parameters used by the package repository client. There are no # arguments. # proc setupPackageUnknownVars {} { - # - # NOTE: Should the HTTP request processor attempt to force the use of - # HTTPS for URIs that were originally HTTP? This setting is only - # applicable to native Tcl. - # - variable forceSecureUri; # DEFAULT: true - - if {![info exists forceSecureUri]} then { - set forceSecureUri true - } - - # - # NOTE: Is this HTTP request processor allowed to use plain HTTP if/when - # the "tls" package is not available? This should only be changed - # if the "tls" package cannot be easily installed for use with the - # native Tcl interpreter in use. It should be noted here that the - # official package repository server reserves the right to refuse - # plain HTTP connections, which means that changing this setting - # may be totally pointless. - # - variable allowInsecureUri; # DEFAULT: false - - if {![info exists allowInsecureUri]} then { - set allowInsecureUri false - } - - # - # NOTE: Emit diagnostic messages when the [::http::geturl] procedure is - # about to be called? - # - variable verboseGetUrl; # DEFAULT: false - - if {![info exists verboseGetUrl]} then { - set verboseGetUrl false - } - - # - # NOTE: Is this HTTP request processor allowed to use plain HTTP if/when - # the server responds with an HTTP redirect location to an original - # URI that was HTTPS? Otherwise, a script error will result. - # - variable allowInsecureRedirect; # DEFAULT: false - - if {![info exists allowInsecureRedirect]} then { - set allowInsecureRedirect false - } - # # NOTE: What is the default set of API keys if none were set explicitly? # This list is subject to change at any time -AND- may be empty or # may contain non-working API keys, please do not rely on it. # @@ -2391,347 +2360,10 @@ # extracted in the previous step. # processLookupMetadata metadata } - if {![isEagle]} then { - ########################################################################### - ############################# BEGIN Tcl ONLY ############################## - ########################################################################### - - # - # NOTE: This procedure was stolen from the "getEagle.tcl" script. It is - # designed to emit a message to the console. The channel argument - # is the channel where the message should be written. The string - # argument is the content of the message to emit. - # - proc pageOut { channel string } { - catch { - puts -nonewline $channel $string; flush $channel - } - } - - # - # NOTE: This procedure was stolen from the "getEagle.tcl" script. It is - # designed to emit a message to the HTTP client log. The string - # argument is the content of the message to emit. - # - proc pageLog { string } { - catch { - tclLog [appendArgs [pid] " : " [clock seconds] " : http : " $string] - } - } - - # - # NOTE: This procedure was stolen from the "getEagle.tcl" script. It is - # designed to emit a progress indicator while an HTTP request is - # being processed. The channel argument is the Tcl channel where - # the progress indicator should be emitted. The type argument is - # the single-character progress indicator. The milliseconds - # argument is the number of milliseconds to wait until the next - # periodic progress indicator should be emitted. This procedure - # reschedules its own execution. - # - proc pageProgress { channel type milliseconds } { - # - # NOTE: This variable is used to keep track of the currently scheduled - # (i.e. pending) [after] event. - # - variable afterForPageProgress - - # - # NOTE: Show that something is happening... - # - pageOut $channel $type - - # - # NOTE: Make sure that we are scheduled to run again, if requested. - # - if {$milliseconds > 0} then { - set afterForPageProgress [after $milliseconds \ - [namespace code [list pageProgress $channel $type \ - $milliseconds]]] - } else { - unset -nocomplain afterForPageProgress - } - } - - # - # NOTE: This procedure was stolen from the "getEagle.tcl" script. It is - # designed to process a single HTTP request, including any HTTP - # 3XX redirects (up to the specified limit), and return the raw - # HTTP response data. It may raise any number of script errors. - # - # - proc getFileViaHttp { uri redirectLimit channel quiet args } { - # - # NOTE: This global variable is used to check the running version of - # Tcl. - # - global tcl_version - - # - # NOTE: This variable is used to determine if plain HTTP URIs should be - # converted to HTTPS, if the "tls" package is available. - # - variable forceSecureUri - - # - # NOTE: This variable is used to determine if plain HTTP is allowed if - # the "tls" package is not available. - # - variable allowInsecureUri - - # - # NOTE: This variable is used to determine if a diagnostic message is - # emitted when [::http::geturl] is about to be called. - # - variable verboseGetUrl - - # - # NOTE: This variable is used to determine if plain HTTP is allowed if - # an HTTP redirect response contains an HTTP URI and the original - # URI was HTTPS. - # - variable allowInsecureRedirect - - # - # NOTE: This variable is used to keep track of the currently scheduled - # (i.e. pending) [after] event. - # - variable afterForPageProgress - - # - # NOTE: This procedure requires the modern version of the HTTP package, - # which is typically included with the Tcl core distribution. - # - package require http 2.0 - - # - # NOTE: Tcl 8.6 added support for IPv6; however, on some machines this - # support can cause sockets to hang for a long time. Therefore, - # for now, always force the use of IPv4. - # - if {[info exists tcl_version] && $tcl_version >= 8.6} then { - namespace eval ::tcl::unsupported {} - set ::tcl::unsupported::socketAF inet - } - - # - # NOTE: If the 'tls' package is available, always attempt to use HTTPS; - # otherwise, only attempt to use HTTP if explicitly allowed. - # - if {[catch {package require tls}] == 0} then { - ::http::register https 443 [list ::tls::socket -tls1 true] - - if {$forceSecureUri} then { - if {[string range $uri 0 6] eq "http://"} then { - set uri [appendArgs https:// [string range $uri 7 end]] - } - } - } else { - if {$allowInsecureUri} then { - if {[string range $uri 0 7] eq "https://"} then { - set uri [appendArgs http:// [string range $uri 8 end]] - } - } - } - - # - # NOTE: Unless the caller forbids it, display progress messages during - # the download. - # - if {!$quiet} then { - pageProgress $channel . 250 - } - - # - # NOTE: All downloads are handled synchronously, which is not ideal; - # however, it is simple. Keep going as long as there are less - # than X redirects. - # - set redirectCount 0 - - while {1} { - # - # NOTE: Issue the HTTP request now, grabbing the resulting token. - # - if {$verboseGetUrl} then { - # - # NOTE: Emit important diagnostic information related to this - # HTTP request here. This may be enhanced in the future. - # - pageLog [appendArgs \ - "attempting to download URL \"" $uri \"...] - } - - set token [eval ::http::geturl [list $uri] $args] - - # - # NOTE: Grab the HTTP response code and data now as they are needed - # in almost all cases. - # - set code [::http::ncode $token]; set data [::http::data $token] - - # - # NOTE: Check the HTTP response code, in order to follow any HTTP - # redirect responses. - # - switch -glob -- $code { - 100 - - 101 - - 102 { - ::http::cleanup $token; error [appendArgs \ - "unsupported informational HTTP response status code " \ - $code ", data: " $data] - } - 200 - - 201 - - 202 - - 203 - - 204 - - 205 - - 206 - - 207 - - 208 - - 226 { - # - # NOTE: Ok, the HTTP response is actual data of some kind (which - # may be empty). - # - ::http::cleanup $token; break - } - 301 - - 302 - - 303 - - 307 - - 308 { - # - # NOTE: Unless the caller forbids it, display progress messages - # when an HTTP redirect is returned. - # - if {!$quiet} then { - pageProgress $channel > 0 - } - - # - # NOTE: We hit another HTTP redirect. Stop if there are more - # than X. - # - incr redirectCount - - # - # TODO: Maybe make this limit more configurable? - # - if {$redirectCount > $redirectLimit} then { - # - # NOTE: Just "give up" and raise a script error. - # - ::http::cleanup $token; error [appendArgs \ - "redirection limit of " $redirectLimit " exceeded"] - } - - # - # NOTE: Grab the metadata associated with this HTTP response. - # - array set meta [::http::meta $token] - - # - # NOTE: Is there actually a new URI (location) to use? - # - if {[info exist meta(Location)]} then { - # - # NOTE: Ok, grab it now. Later, at the top of the loop, - # it will be used in the subsequent HTTP request. - # - set location $meta(Location); unset meta - - # - # NOTE: For security, by default, do NOT follow an HTTP - # redirect if it attempts to redirect from HTTPS - # to HTTP. - # - if {!$allowInsecureRedirect && \ - [string range $uri 0 7] eq "https://" && \ - [string range $location 0 7] ne "https://"} then { - # - # NOTE: Just "give up" and raise a script error. - # - ::http::cleanup $token; error [appendArgs \ - "refused insecure redirect from \"" $uri "\" to \"" \ - $location \"] - } - - # - # NOTE: Replace the original URI with the new one, for - # use in the next HTTP request. - # - set uri $location - - # - # NOTE: Cleanup the current HTTP token now beause a new - # one will be created for the next request. - # - ::http::cleanup $token - } else { - # - # NOTE: Just "give up" and raise a script error. - # - ::http::cleanup $token; error [appendArgs \ - "redirect from \"" $uri "\" missing location, code " \ - $code ", data: " $data] - } - } - 300 - - 304 - - 305 - - 306 { - ::http::cleanup $token; error [appendArgs \ - "unsupported redirection HTTP response status code " $code \ - ", data: " $data] - } - 4?? { - ::http::cleanup $token; error [appendArgs \ - "client error HTTP response status code " $code ", data: " \ - $data] - } - 5?? { - ::http::cleanup $token; error [appendArgs \ - "server error HTTP response status code " $code ", data: " \ - $data] - } - default { - ::http::cleanup $token; error [appendArgs \ - "unrecognized HTTP response status code " $code ", data: " \ - $data] - } - } - } - - # - # NOTE: If there is a currently scheduled [after] event, cancel it. - # - if {[info exists afterForPageProgress]} then { - catch {after cancel $afterForPageProgress} - unset -nocomplain afterForPageProgress - } - - # - # NOTE: If progress messages were emitted, start a fresh line. - # - if {!$quiet} then { - pageOut $channel [appendArgs " " $uri \n] - } - - return $data - } - - ########################################################################### - ############################## END Tcl ONLY ############################### - ########################################################################### - } - # # NOTE: This package requires that support for namespaces, which is an # optional feature of Eagle, must be enabled. # if {[isEagle] && ![namespace enable]} then { Index: client/1.0/neutral/pkgr.eagle.asc ================================================================== --- client/1.0/neutral/pkgr.eagle.asc +++ client/1.0/neutral/pkgr.eagle.asc @@ -1,18 +1,18 @@ -----BEGIN PGP SIGNATURE----- Version: GnuPG v2 Comment: Eagle Package Repository -iQIcBAABCAAGBQJYZ0biAAoJEFAslq9JXcLZilYP/R/VMCPvZREU4pSYdF2/NQLn -DFQgpp8jWqOd290MFmxYVcISYAWRQWxDQYL2q/8KEBeqHNvvUsa5+dGJatAfdtCP -/HJN2i2CIV0QStcnFc2akvtMLhTHrdJunTnV79yb3DUO4MAo3LaD1I6zBj+npUWm -QE7QDmxqyHjIExGtOJy6nu52+LcJSg+etygM0Z/X+lVPLg5uxIJTkDcTxzG8Q5d/ -SboHdW7NXMHtmTuoHOFg9yEfP4mwOecwkeG5nbQdIRyfK9IFztm60plG2SWLRsnd -21GtGXEG8dlbv3jESyT5fg5oYwsPcBuqMYd5OZdGTpetiJbzrRw2CIT7xYT39UGt -hvSEOkyvDnwQEycvcc38dx75Zbq06+pQ0Ac+FqWweAGuvHkFJlmcyS47eN9UhXZq -tp5tv97hjmeF6VLoc3d2qSIVRpb3FpTg29UzvC6TL2tH0g/JOo586r9RaPxm1KT7 -oMDsdH3odTnrkbmdx4NM4B/+DKGBfPlE/YjWjsa1TWckE8Xc14Egr8ocl+IqEhFB -En8ws8eeUXqjCmlzVbIAUADn+cpnGbOWJUfImA1a1Aq8Rms9x5zAMNCxgFXLPa0K -tMQfObT5p95+2M/DbJRVmlkrtrY9ymmpMepI6TuwTz9ivexG6lMcADc/f3KR9Rc4 -j1cfrza5nrjCaCGLMUAe -=aeXl +iQIcBAABCAAGBQJYmpMyAAoJEFAslq9JXcLZAsYP/i+tgDc19P656F3U2+ZwBI/q +SQr7h935UgrRmAITTBDxj/b5xACcLNu5VbnA9f7HBUlxKy5+TNkQErbTiIZMGWsl +H+kmwL+cR0Pz8GxVP66JRTLifsC0u+dDeGzCo0G/lIjs7tGCW9kw4YgBZnfxHu26 +RvIjLE35UoMrOJJCJMGNpjTA8SwjzU10Mprmq0ZeMpz2d3wEpY6daS6MiPLnUtoq +8mJwZFBVzFQ/+KbkeGWOCtov6zewLY6S7q39VzCRPy2U0k+U/HrPqWmFfON6TUKK +I7Zr3QbRCcLKCTBD5CZ5dGd24W5SA7s/NYWb+a0UdZ0W5qAvJVNtjUaT6vblN+R7 +uKM+uDAZeTkZWI8j2ITAEuz/A2gx3yPDmhROyTfAUSFp5KZeiC/Hd4FBs7rFngwp +aOJOnJXrsQEj2rrEDsZHLJ8Kh15pmd8/VgsHdwME70YcpEPcH0nh48sLwDtTF4Zo +KVn7Ic9sA0LetaZJN/SYZTCixRJ8IawjKAATh4zCBEL0jm7v/p91QnqHKR0Bzi0k +tIE3ANppoOxRT4S3nLqk7+ktDg8yZz40iviE1zYtMXJn8c6glWXznmKp/t1n2P7t +0fgtDKgdTbYcksuGPjyxUveu5fzR+8EO7v7m13vOSl4/vcIn55lkxpwk47TbRJAC +Y2fP6TVdk17OH74MbbY3 +=MMSi -----END PGP SIGNATURE----- Index: client/1.0/neutral/pkgr.eagle.harpy ================================================================== --- client/1.0/neutral/pkgr.eagle.harpy +++ client/1.0/neutral/pkgr.eagle.harpy @@ -19,50 +19,50 @@ None Mistachkin Systems - 51358c76-4324-4cec-9ba5-3c86d95f763c + a5b9447e-1fc9-4560-9ec0-918da8d3de80 SHA512 Script - 2016-12-31T05:48:43.2785781Z + 2017-02-08T03:39:28.2646484Z -1.00:00:00 0x9559f6017247e3e2 - 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 Index: client/1.0/neutral/pkgr.eagle.harpy.asc ================================================================== --- client/1.0/neutral/pkgr.eagle.harpy.asc +++ client/1.0/neutral/pkgr.eagle.harpy.asc @@ -1,18 +1,18 @@ -----BEGIN PGP SIGNATURE----- Version: GnuPG v2 Comment: Eagle Package Repository -iQIcBAABCAAGBQJYZ0bjAAoJEFAslq9JXcLZi4AP/ipA7oB0Yem0KM0N5aCGRqJD -3j65Mhg1ElzIuCUV/gnywOECD+aBNimsPggVIhERNziyOzT9NioXxbJ4I3qEBg4u -K3+IMLVwoLZ0SF7nH1P+f6Trk2B1V1oZZtpivQEfSU9/Vq4XxRottJ0TrzVd7Oo+ -visrRV5nyS+pHLTiyoMGvjAJj7wW81gi+QLa8+drqfvRbTnIhX+G0+kfO+A6N6rK -/KtiCUSkLHohqRkp99DcwqT8t75SgnI8a0oQqPptLx1LXVP5IoJkPCtVZreUHdmV -edKeGdcRvSEg1Fata79pHD+TVjHPKjAs4p3T39AQYsGitghooIT8S3ojSeVsL638 -uc5Arq9YslDjI6QJQGdQqzwyJqUxaHH1k76DWsds3p/QEudwge9C7GjdokQ+ecur -T3i8DPxU5S4NYeUSK691P5KHiB3D+Y/PmwUpoJ+Cp7o2O4CuQpuAqY87ZXBRiMuH -jQMfy+msdqQCOQWN3tCKXj950skYFX2Sth/btzohD2e13Mexctl/w6VeMA/ZSeqV -Q4fOslbruNeGmwr8JHZzxtWe2uDRb5bMe3ign1Qu7h1ZpumtRoiyIqyfrXalrE5r -YabgbShQYxIMUxrGjutjFL6F05abbYclQf5xti0VdN6HZ5nq6QIStK+siCp/XUum -V+f68Nxs7fLw3SBFLaxK -=8rkU +iQIcBAABCAAGBQJYmpMzAAoJEFAslq9JXcLZDrMP/jeMme8pmwUDDHG0kvGXt06c +M2pI0vyQfD9yfk45ldUp91OjiaijbAHVhENvlKu2InpzRR0rjubJretgFFiR1YJ7 +pmsQmu7Cn0gC45F8lMh6QwssuGpncBw7fqQsc3eIcez6qafLETFXiDAEEmyVjKgP +g3K2QQSuxDSklfHWkA86X/bfYkA6zCXfrRU7xVSf+KqjOED5UF9DiHM6w/NFiGcB +8pRgpVnXROZuqhmP83Srq9X52pZjyKb969zTU9w98ST3cWIH5McWvKGngeQ5yDXW +WhaHZWLAf/5fxi+tscpo4KxVGOeoZNl9cD9pfNrThMFct27Lq1thupu73FgGqYgo +4Pp1v8+iC4bVZWGqk2xflSJBznUyz+ZVVXrC78FYlvUeRNyQafE4ZDpHQGOy5mKi +i+vpOzXZLC215WqyDFhGbDfCDPnyf6PSjXL0AiXRlzcNu3KzNtd0/ENs4rr3XXzJ +IZYHi0Bvm0do7rAl+7eBLPdYIndjsqPdRacemSv0Q0Hp5VdXl9FbfaSeL188Qc7k +JG5w2FHq4CmI+QAB1sVpLZOn21pZHRmWWd1abJEpU8NCNocV86/sT7sHmTJZtjYK +W3eiorF7P33RpILy4P+aIyk+mZRDYU+ImXOjR+xdh96lcANQJMaef5jahwyaNwUA +fNmi4CnOZcOaQ+BJY08Q +=RESe -----END PGP SIGNATURE----- Index: client/1.0/neutral/pkgr.settings.mistachkin.eagle ================================================================== --- client/1.0/neutral/pkgr.settings.mistachkin.eagle +++ client/1.0/neutral/pkgr.settings.mistachkin.eagle @@ -17,16 +17,23 @@ # # TODO: Set this to your list of API keys. # # set ::pkgr_api_keys [list 0000000000000000000000000000000000000000] # -# TODO: When this setting is non-zero, only packages matching the current -# language will be handled via its custom [package unknown] handler. -# This is almost always what is actually wanted, hence non-zero is -# the default value. This setting can be set to zero in order to -# help with testing. -# -# variable strictUnknownLanguage false - -variable verboseGetUrl true -variable verboseUnknownResult true -variable verboseUriDownload true + +namespace eval ::Eagle::Tools::Common { + variable verboseGetUrl true +} + +namespace eval ::PackageRepository { + # + # TODO: When this setting is non-zero, only packages matching the current + # language will be handled via its custom [package unknown] handler. + # This is almost always what is actually wanted, hence non-zero is + # the default value. This setting can be set to zero in order to + # help with testing. + # + # variable strictUnknownLanguage false + + variable verboseUnknownResult true + variable verboseUriDownload true +} Index: client/1.0/neutral/pkgr.settings.mistachkin.eagle.asc ================================================================== --- client/1.0/neutral/pkgr.settings.mistachkin.eagle.asc +++ client/1.0/neutral/pkgr.settings.mistachkin.eagle.asc @@ -1,18 +1,18 @@ -----BEGIN PGP SIGNATURE----- Version: GnuPG v2 Comment: Eagle Package Repository -iQIcBAABCAAGBQJYGPYHAAoJEFAslq9JXcLZLt0P/3UwMc98AgjUWsmMfjilmGZO -r4YTjqQXxUJWilq+D5kV526fQlIEKliJPscBewf3Zz5rZVznyFXT8hhBp0wi9X4P -zcwBrQMAVDxZwZ7jvYvRqq89GlEZ9+UARg53V4J+gP7gglwjoVV8S7xsJEZYx+7D -ldVHox+aZUfHACl9oCiiUl4TJ8mFgDKpgPIKy23D9uJwF5btb1qYK98jubelWSrR -RnvewNOwN+nb0FC5Nle27vAtOoL1q1eXL+6CD1Y8hBbsN3wBFGis8ZfnzomF1S8o -rgxzV41YiQexWDqc6niFWw7O5YBSKi6b6FHv4m2fHtjeQN68zHtbQzWmfIz2J7p8 -jIR4I+lWir3l9ee3DBx+QFpoBoTJW9vAYbta5ATf4ZWbegkwEb8lV6+pc1G/ltSn -QSpEd/oWNCfxflPHegCCWuw+KZcdxmYTMPyg0auvop+cGyTD2J/jOgWk4NCtVhuQ -X3NqU42445TPpscADwe3z3Y/QhSKWg4ym45f4hB0jQudJRObim+rZ6WOxASkyw0j -rBplCAFykJ+oMi5MRJ922HTOvK5DfQsFXgw2xDFcWG7Y8HnBCiKBKXHEzFZrmL7l -RvIU9oTRJX4hdAE1C1ZatD6kUK0dGUguu4g6n9fX0S7N770fxUPSa5XI4azjsgMS -g/0KzQtxc9JQynBfLJ6F -=mohX +iQIcBAABCAAGBQJYmpM3AAoJEFAslq9JXcLZPssP/0QKnoK2FEG7kW60kOhnYMdm +ACLgbQYGzAhY75cw+P5OsaFf//4f1FBzoCSlE/aSvAILwGntSQbClNfiNnK1xMrl +cs919tnYVGVZjCRMoD9a0oRhWGxIuWh4II//qkwqss/rwVXN5dEoEEyWHcvuV3Yp +7GMcmB4VQMXDN5WKSWtBNK+hgukcwGwv10XdivyElpVC6jxFb6pCvi4bt6hSwIy7 +chOx26zEz7/92OCsrZP8gquisnxhz8O4SBp4CUU0SziYzNBWBDPNzywKI3XCY5oO +7emy5tXbZRYRpGoBsjuXdz4fjkCxOXC6AL2+qmrUgtIIE/N95UF9d8P5u7i5dIyV +TZmw/w//I85h90/shyAgHUNXJv+oVmy5V0Fw3OytPGxtEBXRATwPHtmLa8hRQ6CG +oNOpFYym6VG6kxc4fZjfB7oOD699Dh+8zkVOUH0YG0TCSJY3WiDq5GI51+6sR3IH +PeikXVghL/GkfpiWjGzMyJuCV8PWHL9Wz7/F1bFnBdd1TYasZk217faYrykuETpp +jkjwm4otB8LbXlD1Rm4nHmXxKWXq9bJ2ab3zMAM4vGnM03vnDTYebS37PDhMpzbA +v6EdQnEWkqNTlyFXabDRbV9uKIn4WjUm+HQB0jNXi3v9dCLTbFTasAMKMVPCKp/3 +swVz4fI+PK56VKi/Bk4s +=FDfk -----END PGP SIGNATURE----- Index: client/1.0/neutral/pkgr.settings.mistachkin.eagle.harpy ================================================================== --- client/1.0/neutral/pkgr.settings.mistachkin.eagle.harpy +++ client/1.0/neutral/pkgr.settings.mistachkin.eagle.harpy @@ -19,50 +19,50 @@ None Mistachkin Systems - 3a4fa33b-9bfe-4a2b-899e-c1d87bc15542 + b8035442-7dcf-41a4-8229-07013211cd44 SHA512 Script - 2016-11-01T20:07:03.3314766Z + 2017-02-08T03:40:04.5820312Z -1.00:00:00 0x9559f6017247e3e2 - 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 Index: client/1.0/neutral/pkgr.settings.mistachkin.eagle.harpy.asc ================================================================== --- client/1.0/neutral/pkgr.settings.mistachkin.eagle.harpy.asc +++ client/1.0/neutral/pkgr.settings.mistachkin.eagle.harpy.asc @@ -1,18 +1,18 @@ -----BEGIN PGP SIGNATURE----- Version: GnuPG v2 Comment: Eagle Package Repository -iQIcBAABCAAGBQJYGPYJAAoJEFAslq9JXcLZxEYP+wRqqfBq2NDlJfHPLawZxKM4 -50pBZOb/hNnHpG2RQVlJPQ4nfX6pA5eshht8YRyc94umHlGfokmE8oJHNeolK7/P -+Hfyvy86vz8y9TI/wcSdZB0oeGumRGXvFAI45QGo7PgJRS3orgaVxE38Lb80afsN -JSk2A5XquKIi8rHWyOQBsX4FhUUEkIQTYtKMLwzHHctjxq/nhjg3kFAQKodr0gP7 -r+rovPITBy4Ou3mdXTWPIrsg5It/T5VP79ZWOK5jecMSsyG4OTT2LKTWY5BjKbxh -7e/bv2qyVKzWtZHNcXEnZJC38b9VNt6hdsVK5bQ/tYDD3QvqlZnY+Txh19tGfR7T -7OS1Enz7QecX7Q56EOGR9A99Wgds08gprCXdTSPy32Y4cBtSR0nKOYHD6VImgXbY -xHHano/Z/fZM47hIlmAkDD7P4Af2W7e9oITaqRVedwQihb6LY55q5Xfl5cexGBBl -tGvyknjG7nLWFsbvj7Qi+EQ/0q+D93LUJtGKd51meIbpwoWGmEH4SD4yctjpgGO6 -VjbkcwxvvOJpdd1D5W0yUdZ+NonVyvSl1B/BHJNazrzCY7ZFQGvucnQNWRdNzf6d -KjvrMNWtObuzXcteXfuNieaL0b1RzRPANROxWGuceUk4a794uBgw+Dnuop5FzMZT -xsotuu0csCf8scxfVEow -=R2Te +iQIcBAABCAAGBQJYmpM4AAoJEFAslq9JXcLZquMP/iIrXSALAwhaBtjn5plmcWcS +BAqBuvWidBZevHg1rHp5Dyend7u4ZbMGGDs8zVcxcROMs7I2iCa1KZCg+y2/Atvk +c/D2qJmdtACK3P3oSAs1aHOf3/t/yBxX/0I0sxggdNOqjnv10a9+VFc4Vi+zoQTH +Yiir3hB6ESfWv8ztd1AYHzxYmWdHfpFwhHZnGsM1ZhwVzKu1Py5gIe3g89R6s1Te +ckDMNNaDMQ5OtvAN2ZzBjh8oLvoBXaK7aSNM1z/EvEPdOLfdLNzEAOgpd+FrGcQU +4Pi0hb4OpekclGwpLe9ZwV7xuMgHgDKe7EkQ5Qu6NIEXGi9DyCYEQMxJnIJ5Ywh1 +YSLqzMpvzVovrwQGKyU1oTESR9VUZJhmx4/3o2It6Blnj12ZfUZGrKSICj8WkdvD +8q6Yu0moUqvrFM1dLgisBk1xx4sCmuYl5fm4lxMWR82zU6tIP+m58wzLH7Ub5xy1 +3scA7VF9G+rQ79fkTpcScQvsinye3R1yNlrQOrVY3pOn3ZC+95zt3ZSJQuRi+7+y +XwvWnBmbkBCtMbgbBBPbbqB7CCO343oWlDPfQpPIBRuLlwLIC61iBt5LR9GEABmg +pVGheJlkDoZZIj8FqsieOl/2NA8sEC0okNbhnlgzbZsZEEr1pCy3KRRgoOMTcbuY +GUJCHrUa5F1qdyLwBovX +=UWXC -----END PGP SIGNATURE-----