Index: client/1.0/pkgd.eagle ================================================================== --- client/1.0/pkgd.eagle +++ client/1.0/pkgd.eagle @@ -18,14 +18,105 @@ # NOTE: Use our own namespace here because even though we do not directly # support namespaces ourselves, we do not want to pollute the global # namespace if this script actually ends up being evaluated in Tcl. # namespace eval ::PackageDownloader { + # + # NOTE: This procedure sets up the default values for all URN configuration + # parameters used by the package downloader client. If the force + # argument is non-zero, any existing values will be overwritten and + # set back to their default values. + # + proc setupDownloadUrnVars { force } { + # + # NOTE: The URN, relative to the base URI, where a login request may + # be sent. + # + variable loginUrn; # DEFAULT: pkgd_login + + if {$force || ![info exists loginUrn]} then { + set loginUrn pkgd_login + } + + # + # NOTE: The URN, relative to the base URI, where a single package file + # may be found. + # + variable downloadUrn; # DEFAULT: pkgd_file + + if {$force || ![info exists downloadUrn]} then { + set downloadUrn pkgd_file + } + + # + # NOTE: The URN, relative to the base URI, where a logout request may + # be sent. + # + variable logoutUrn; # DEFAULT: pkgd_logout + + if {$force || ![info exists logoutUrn]} then { + set logoutUrn pkgd_logout + } + } + + # + # NOTE: This procedure sets up the default values for all URI configuration + # parameters used by the package downloader client. If the force + # argument is non-zero, any existing values will be overwritten and + # set back to their default values. + # + proc setupDownloadUriVars { force } { + # + # NOTE: The base URI used to build the URIs for the package file server. + # + variable baseUri; # DEFAULT: https://urn.to/r + + if {$force || ![info exists baseUri]} then { + set baseUri https://urn.to/r + } + + # + # NOTE: The URI where a login request may be sent. This should return a + # payload containing the necessary HTTP(S) cookie information. + # + variable loginUri; # DEFAULT: ${baseUri}/${loginUrn}?... + + if {$force || ![info exists loginUri]} then { + set loginUri [appendArgs \ + {${baseUri}/${loginUrn}?} {[uriEscape name $userName]} & \ + {[uriEscape password $password]}] + } + + # + # NOTE: The URI where a single package file may be found. This file will + # belong to a specific version of one package. + # + variable downloadUri; # DEFAULT: ${baseUri}/${downloadUrn}?... + + if {$force || ![info exists downloadUri]} then { + set downloadUri [appendArgs \ + {${baseUri}/${downloadUrn}?download&ci=trunk&} \ + {[uriEscape filename $fileName]}] + } + + # + # NOTE: The URI where a logout request should be sent. This should + # return a payload indicating that the logout was successful. + # + variable logoutUri; # DEFAULT: ${baseUri}/${logoutUrn}?... + + if {$force || ![info exists logoutUri]} then { + set logoutUri [appendArgs \ + {${baseUri}/${logoutUrn}?} {[uriEscape authToken $authToken]}] + } + } + # # NOTE: This procedure sets up the default values for all configuration - # parameters used by the package downloader client. There are no - # arguments. + # parameters used by the package downloader client. The script + # argument is the fully qualified path and file name for the script + # being evaluated. # proc setupDownloadVars { script } { # # NOTE: What is the fully qualified path to the directory containing the # package downloader client? @@ -54,54 +145,10 @@ if {![info exists quiet]} then { set quiet true } - # - # NOTE: The base URI used to build the URIs for the package file server. - # - variable baseUri; # DEFAULT: https://urn.to/r - - if {![info exists baseUri]} then { - set baseUri https://urn.to/r - } - - # - # NOTE: The URI where a login request may be sent. This should return a - # payload containing the necessary HTTP(S) cookie information. - # - variable loginUri; # DEFAULT: ${baseUri}/pkgd_login?... - - if {![info exists loginUri]} then { - set loginUri [appendArgs \ - {${baseUri}/pkgd_login?} {[uriEscape name $userName]} & \ - {[uriEscape password $password]}] - } - - # - # NOTE: The URI where a single package file may be found. This file will - # belong to a specific version of one package. - # - variable downloadUri; # DEFAULT: ${baseUri}/pkgd_file?... - - if {![info exists downloadUri]} then { - set downloadUri [appendArgs \ - {${baseUri}/pkgd_file?download&ci=trunk&} \ - {[uriEscape filename $fileName]}] - } - - # - # NOTE: The URI where the logout request should be sent. This should - # return a payload indicating that the logout was successful. - # - variable logoutUri; # DEFAULT: ${baseUri}/pkgd_logout?... - - if {![info exists logoutUri]} then { - set logoutUri [appendArgs \ - {${baseUri}/pkgd_logout?} {[uriEscape authToken $authToken]}] - } - # # NOTE: The user name for the public account on the package file server. # If this is an empty string, there is no public account. # variable publicUserName; # DEFAULT: public @@ -151,10 +198,45 @@ if {![info exists viaInstall]} then { set viaInstall false } } + + # + # NOTE: This procedure modifies the URN variables used by the package + # downloader client so that one or more alternative (private?) + # backend file servers may be used. The serverId argument must + # consist only of alphanumeric characters and it must begin with + # a letter. + # + # + proc useServerId { {serverId ""} } { + variable downloadUrn + variable loginUrn + variable logoutUrn + + if {[string length $serverId] > 0 && \ + ![regexp -nocase -- {^[A-Z][0-9A-Z]*$} $serverId]} then { + error "server Id must be alphanumeric and start with a letter" + } + + if {[string length $serverId] > 0} then { + # + # NOTE: Set the URN variables to values that should cause the + # specified server Id to be used (assume the server Id + # itself is valid and active). + # + set loginUrn [appendArgs pkgd_login_ $serverId] + set downloadUrn [appendArgs pkgd_file_ $serverId] + set logoutUrn [appendArgs pkgd_logout_ $serverId] + } else { + # + # NOTE: Forcibly reset URN variables to their default values. + # + setupDownloadUrnVars true + } + } # # NOTE: This procedure escapes a single name/value pair for use in a URI # query string. The name argument is the name of the parameter. # The value argument is the value of the parameter. @@ -654,10 +736,11 @@ # proc resetCookieAndLogin { userName password } { variable baseUri variable loginCookie variable loginUri + variable loginUrn # # NOTE: Build the full URI for the login request. # set uri [subst $loginUri] @@ -704,10 +787,11 @@ # proc logoutAndResetCookie {} { variable baseUri variable loginCookie variable logoutUri + variable logoutUrn # # NOTE: Attempt to verify that we are currently logged in. # if {![info exists loginCookie] || [llength $loginCookie] != 2} then { @@ -822,10 +906,11 @@ # downloaded and verified for the downloaded file. # proc downloadOneFile { language version fileName localFileName usePgp } { variable baseUri variable downloadUri + variable downloadUrn # # NOTE: First, build the full relative file name to download from # the remote package repository. # @@ -1069,10 +1154,16 @@ # # NOTE: Setup the variables, within this namespace, used by this script. # setupDownloadVars [info script] + # + # NOTE: Setup the URI and URN variables, within this namespace, used by + # this script. + # + setupDownloadUriVars false; setupDownloadUrnVars false + # # NOTE: If necessary, add the package persistence root directory to the # auto-path for the current language. This will only be done if # it falls outside of the existing auto-path. # Index: client/1.0/pkgd.eagle.asc ================================================================== --- client/1.0/pkgd.eagle.asc +++ client/1.0/pkgd.eagle.asc @@ -1,18 +1,18 @@ -----BEGIN PGP SIGNATURE----- Version: GnuPG v2 Comment: Eagle Package Repository -iQIcBAABCAAGBQJYBbyqAAoJEFAslq9JXcLZD+0P/R0+wiq9wPGIEPsNANhNJhuf -S+GEjsDzrmqXSR8hA9ag4VWmS8GCPEomaeygbc2mcax0hWpXwyQAfhp5L1KJ80oF -NGUUm1A+qh0uUMaeYnz+4xseiLpNEdkFLr4/pnOaPEsfEvExNSe/86Mq4KsRk2lR -uShsgKY0iRESiW1Lwxzd6sRwL60Lx3RpThOttdOlBt8FDOhDpnlirvJIMOigeFZm -BLjlPWofjzzRTAQf9crv7DGN2R7wKDEmVLT6BPjGejY6I1KyjChBnFKI058HEC76 -C7YeVTrLMUK3QryJU4JEq1/kWSIyHIBjPGRxWQSnorDCXxKOHrjKgPV5UeLbiPkW -T1bNvjzzjs+vL3OtVLW4J/PIwpF+RxuJdqyOnajuqmPI7nxDwBFO6fsbIhc/UeKA -ELCwpA3sG4xS8vRA7zI9Wcq2jlRRMUaqano+m22MLpAGDlUb8VIG8ceVyfW1c29A -HTp4GFF8nNExjOLN+0MAfHtYE2ZV1NWu1bF5AOeHetcAJKqfSsEGVW+DbmsxH25k -Sw9mqY68EGrXlLnTpdBvafUfosZS8MkShdBJop2krAQspjTSaRq7i4kKkx9PBbvF -a6pfxdSTWrrSVjxtsr7lWn4VJMtX4SxDAJizLGWlbfDvklkWqW+27892E7LRYjWv -SllD69H5uc/W5E8Y7vfM -=yY/2 +iQIcBAABCAAGBQJYBnwfAAoJEFAslq9JXcLZnZgP/2Fj/Nk8TFnBGYuFBi61PEb8 +8PDfeQwsKVyhdYpQ3I3b1v3x2XNFY5vVKELwnU+j4YdJJeV9iIcMoP0FuV2HukA7 +5AU+Wa/gFbAdsqEjJDUe7Z2wtXwX/mssy4Hiql6z+el0iv4pC40kJ3SxvtbtrH9C +o1SdBNSdxxkprfgfYKS3jnk6yZ0qrpbAZzTBLa/Y5Es9Va3kcJBXNaCCLWze2KxK +pUbiwlrbuoI+m8FIg0aVT11gtO7cMQMaNtHj8kKLXiUfrHn83nLtA8NQcXaVDPs9 +3Jq2IrBX+FV2EImRn7Cw3mvhTqDSatxuwRm9twFnb1+oXhAV0oDWWZylPAL+J9FM +BOCR8ApeWQ2i06QZDef7DCj7lZpcDY3738PRSS8hik2PE43/epadAN5s3rz7gBAj +N+kkjnrx26U6a93fZZMrX+sxQje/sEhfGw5EMHMwM/5Nql7fMs99J2Pb2UzKLqHn +H4HqmOXkfWh6VJ1wOlWU3kPJc83yiyLtKjuBx9+QnvXT/I1ENs8390py2V9BSSFV +tOmS8e14UBr/xciO6LYfTsIwgpOC8ajgbOLLByF7KIvKzX5FXByhgyfeQRywJKa5 +DwV/k2svs4rlgc/P+VEA84ZGeMNLA400pBnw5gcDI4yKdqi4krSNjiU+QF6Hte6B +W4X4aozI+mRbcrb7jmxy +=BeBX -----END PGP SIGNATURE----- Index: client/1.0/pkgd.eagle.harpy ================================================================== --- client/1.0/pkgd.eagle.harpy +++ client/1.0/pkgd.eagle.harpy @@ -19,50 +19,50 @@ None Mistachkin Systems - c8044773-7513-461e-801f-6f5a2dd5743f + 41bb98f8-a037-4533-9f6c-6d8d647b97a5 SHA512 Script - 2016-10-18T06:08:23.4552031Z + 2016-10-18T19:46:18.4688750Z -1.00:00:00 0x9559f6017247e3e2 - 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 Index: client/1.0/pkgd.eagle.harpy.asc ================================================================== --- client/1.0/pkgd.eagle.harpy.asc +++ client/1.0/pkgd.eagle.harpy.asc @@ -1,18 +1,18 @@ -----BEGIN PGP SIGNATURE----- Version: GnuPG v2 Comment: Eagle Package Repository -iQIcBAABCAAGBQJYBbytAAoJEFAslq9JXcLZGjYP/2wbw3JSqrmi8bG+7pL2Solm -6ZsGVpxrD4+PszY1MghchznNB25oEN9lUl53Kf47iAhDxlBEpT12ygyqhuUFtwq3 -8M3y9qSwi09qiVUlaTn+j3YaEDWoYEsb8+nflJX6/hZFbBETCY8ZuSZJAs3LgT5o -1wWy3kqKQVx8XtmrUu3jNIjMnOSdU7rhBZj3NdJzjCT72RD5MLMYFyEpYt+nbuCb -RBbfsVzzxliev1jLBP+iYHWzR7kb6yFli6Hkg76FnveADjYe9SNt0NFJH6Q1+omv -ZNtGN+T+gwBSbn0BCRL61nQwmukOmp+qL+LJxsAGe+P8gpBs7KWI6ywWOAddvJR0 -BJ/kBVeUPAZhgaaYsBmhdEZzaZsRXqZ+esnBxSuyKimIH3EY0DRX2sj9j944pFvn -MC8awmeKc7eihsUuAE0nBuL77um4kVUi3ILMYYQf7f5kIE09k8fVPCrOYmyWRqa3 -XGQKRy6PMOUVBPDqCZ/2wCECcdSl115BcZhKqcD3FilX9DtvUj7jEOOe8jTeaqJ7 -h6OMgbeoAXIv8XE39RV9H4aezkXLkA8nOragM2BJaosD/gsHZfrOgF2pNivxUwGV -dJrkdMAhMZja0pSB3ntT1JRbj3Dt3ofUmstmWR1Mje2FRqxLiaNy8M/65jvbPf1r -M7P82UtW1MtOC9DVBtLM -=Lx9S +iQIcBAABCAAGBQJYBnwgAAoJEFAslq9JXcLZFt4P/RJXskGeOawNGD8r37FVCsqr +BJlRKzmeH6pG6TNMcC0IIJSo4GQ0lbX+cCGXhvdM3M84+TYgnJ8jszkKWTFRamoB +sZOke1p5CN1pb8OEgWvuVNxlZPYk25P3MccBAAxkDThi/2CDpu9Sq4LqTAwwqy09 +FMtvS0SZUnJ63bz1gp0f6HAuI5JZMjJSWvKh1U/hRwY4DJn8NP2gCX9QM/gMH+5x +Mr66BejiYbSLq46nZERaowJM3zh19wdliZmai8tNnZ4lBhzA3q4qg2O1V59gA/4K +sn/honjfHF/ql6rITSMhHFglNyxur0VvVEeMcBw4AlxTbMV1auJw7IM2JzGjeca9 +s+w9DAYZDbpgQ05OVqXWZBGuOGDqNhZJMxm1KT20xTZHz/Gxh2qnpZnXu0n8xfok +Xgl3FskWgEeqakIXu6Ms5ud/mdJ6jHTaHF+AXrVdfGmflLKFhR3xwGM0sKpEJR5a +aG+WXOlTJ6SI6x2JL6COZnjHh4/0YulPoIjcZwbN6nQxjbiFQeMWPC0wHkvLWeJd +SWG1NYyJkLBz1fM7Fuq8jQ/lodUk3rFh4m+OBFN2VtdwVmmqhFaUUTneu4juQ7ml +4gEt4QPVh1m3OoLxCYmg30ut79SyaY4tErHQcCJMl8tRpSkeft8qOKfVQe3SqzGD +4KMJD+5Z4rwqbprTtcJk +=WoGT -----END PGP SIGNATURE----- Index: client/1.0/pkgr.eagle ================================================================== --- client/1.0/pkgr.eagle +++ client/1.0/pkgr.eagle @@ -134,11 +134,12 @@ 4 {set codeString continue} default {set codeString [appendArgs unknown( $code )]} } if {[string length $result] > 0} then { - return [appendArgs $codeString ", " [list $result]] + return [appendArgs \ + "code " $codeString ", result " [list $result]] } else { return $codeString } } Index: client/1.0/pkgr.eagle.asc ================================================================== --- client/1.0/pkgr.eagle.asc +++ client/1.0/pkgr.eagle.asc @@ -1,18 +1,18 @@ -----BEGIN PGP SIGNATURE----- Version: GnuPG v2 Comment: Eagle Package Repository -iQIcBAABCAAGBQJYBc8YAAoJEFAslq9JXcLZwWIP/0sGpFR/aT7t7CifZSklXuxS -mR8Gfzi19aKE/H/18Rj4IeFUrolwJlnW6ujmSMe7CvLkfyERTDP52lNx95UasmSz -z3xCiP8o/tFNKcCgSHPk2F2lRj8FGKgSSB6YOaTVgIOlzEISR0xoBjryguM4zT5u -navqoq5OsWenro3F95/st0aX1PU/rEDmAR97cl743i8GD+cnTGDd4fmpShQ/aO0P -5xRiiGYSQrXu7abO53YNE/pnTPStShIjoX0tzccrHiqcF+TOZblA2LNNxlyQ4N4F -21rpKU3ucvWWDNyU2AtpOzcmD0qxuQPlW0BQS2pBTfsdv48Ao9hSegAbNKYnL6m7 -45ZuoWMHDCvR594hnI1I4jAN8xrcRiFuYbK4rFAu7ZKKWQg5Cyn3J95CJOJQ+OpP -bFO8pHmGH3obbJ+rTwRdo6CHDqHWdyiTpD9sQ8p/SLE6AOqfh73J6ewT4G/Bi7Np -qdcJjgvLcDwUj0lMKWru4jiuO6KNttMRQjwe5ovteP7nPxySxa/LZTTV2dlxZmxL -E7Og0mlbYGBBReyF+E178XGKR1e6kNV6Zg/XesV238HQguq3MvVlmmylMpiipF6p -eL9NjCPd0iiyjT2EFZENlkIV+ucyJbPfn+91TSc7UhPjyXPuMSFXfrBIGX2Gqb5E -xx6/JKppdzJA+uWEd7qs -=7oE3 +iQIcBAABCAAGBQJYBnw+AAoJEFAslq9JXcLZM1oQAK+4pYNqcVQKqMkaajj5Ag59 +ME217Vyrxdq9KcvWaMA8UHG+pw1SilKdY9xX14yYEhTNO8Zx/I8xPMLGfXUFDYas +4OKnX/zQtR1KmuFGVjSCkU8WCnXUbg+q6xgZM1oBHXe44iRhDi7w1n991JUs9GlD +/Mmfi1QQim2HoK4n4N0fsz0c7bEQsHfJscQH5+66wmowu0fEqbOGqUcSmf4yUstY +8rQjYzyrTNrEOgo4kCTCeO9f2bxZlBFMOUIDlf077uTqR9pX0vtS8mWH8VVfPa6N +aPjJlskeTMKQTg4B24STcLzqsDDKeKCWs6cbycVVtuhOMkRaw4MBfTPQrXvWyrNK +rYbPw3LWQx2zdfjh1q9wm+8hWnJe2eq1QchlEPYCwP2+bil41Um4ox/zn8aXRSra +wBL3tpTJD7P4a2jpfjyWK2PoTJG79JRx48DHc0E51UMFaVbHv1yCimr4b6MhxC1r +8kgtYvQhDybvX+9ss9lzp8wMUfTY2X0aAZeawE25oDxM3SbDjzjHtDWVPCnSOxeA +HrPf8NGtF80WkNcRsJk9448hsK254P8s7R9B6IC2seryW6YNCih99xL1N4dtZDKD +R/P3tCAPSKWVnlX7Ogd8fr6BU95KI5YLwlvYpPINQw3I4aUnTypVmwJh2Fh0C+6k +jWWjKGs+AQZjtOx7EEr1 +=Z7kg -----END PGP SIGNATURE----- Index: client/1.0/pkgr.eagle.harpy ================================================================== --- client/1.0/pkgr.eagle.harpy +++ client/1.0/pkgr.eagle.harpy @@ -19,50 +19,50 @@ None Mistachkin Systems - 56c70837-ef83-48bf-9d94-5b0225518222 + ea38750b-6e4e-42d8-9f4c-278c3acc81a4 SHA512 Script - 2016-10-18T07:28:03.1622344Z + 2016-10-18T19:46:50.5714141Z -1.00:00:00 0x9559f6017247e3e2 - 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 Index: client/1.0/pkgr.eagle.harpy.asc ================================================================== --- client/1.0/pkgr.eagle.harpy.asc +++ client/1.0/pkgr.eagle.harpy.asc @@ -1,18 +1,18 @@ -----BEGIN PGP SIGNATURE----- Version: GnuPG v2 Comment: Eagle Package Repository -iQIcBAABCAAGBQJYBc8aAAoJEFAslq9JXcLZ0KwP/jCx+EpohcA+AoZX4cOdvkpm -X3DAyVcvInxt4UPAG5NUJK3K4sgOHA4Q9kQ9f0jUWxznItQzvfkF1mYJOqLe6irk -QQYDOEajRa5Maxj6gdCrDIKfECvzIlbZ4d5T3dd9WeIMyhkjBO8ZJNea7aS/1mGP -hOqv+PbfFT87dpo+KRw9Us8N7bIg1/uHyWCa1zDgNSa1gmJPJvYfyA26A3fPx/+n -Il9PrNlFS7DopB2G8/caWTSk33z4ayvtxU/9T4tl7DSeaHpisgbyJVlPlQOgQEGL -DN0beBoNxR6W1WQznzxSGiDCqB5vvhV6crnLDALFFoXCqngO2CnDnHtoiOoXpLDT -qVx4U+Qe6jb8f7Y7qkXlR+3cd0NO1F7FJEJhQzWsh5hco7aKrJ5WuShzHP0NDnqQ -dlSUphmPmXpNoMwd7/AtlDVAZj981V+VbMwKpy3bI+SLrk+TnwD24th7j6swGYsF -emifB+sgRoWa9YAr4CfMEUtmYHcCMgCvHxbv1b5g0ueK/LqlXYCMBVrUpRUwrGCu -RL1uWlQCHoBiB6AVaEzwbbo8/9Q6sGO1CCtnnlrFDJ1vLSnT7YDTjL5J1qJHhqp5 -IWbqW9vPhoL29MBqsYoTOy8MeQXJhku7XNsDGTJ5yjgPGILwwKrMeOgBJ0CYKPbO -8Rq7iBob9sTBkfpJepQ3 -=RPia +iQIcBAABCAAGBQJYBnxAAAoJEFAslq9JXcLZUb0QAMIOz2xudJDuYG6PBqgZB3tm +T+MdzKQmu6aKXd5M7f84o+mCb7BDSkpBsPaZ0OwL52aVceXNAC8XPgnaD08lPEhG +8Pv1Vf7pjomFydjMSxmyyQLHKG5PklPOtAxAXImivQO4qOTEiwFUYbdP3U78HIR8 +6hRE+qr/wXz1xD2VvwTBiok0bEdiyF6C3s307lJ7EXBtGDbYSYS5GkhMSfr3Ou2M +W0ko6+WrUK+mhnF0KZNC+JFOa0SB3TM5xs03h0SRR9jSu/5PxlhfQ+ysTFcHgqxl +eL64fD2AolfIzauWD5dyKQXniH/TW8fyWoAmul2os6ab9GqesLTkU0l4hqvmhJQC +W2loUoKfVB8v3GUI0M5AxlwU+8Vi9uFr7HW2PpzrDQznSfm6o0WNxWGE6qE/z9QA +R9nYgBxL+yOP8oWDhvKKtyEo2qr50VCAOL6C7whdJPEY09IyJNGCBrfsbuwWlyOF +cbM5pBCzaCFaeGh45MjWB6gbHBpPfxTskK0Vdm0bBtLUSxFPOvjqGWMUYg/OXGC7 +3IwEDnYp0bKnxlc+YLa/08usw7pHFx3EHRciuZk8jE232YjDJUCHB7i1C91MPj78 +SxTHOaAf6MKohbVdKKcfOPMnLRdXJRu+sdW+UizXK4DViVyWFijFhDTPEOp7K5Ep +79JVIWb5MaNW4fBiTIaI +=m8VF -----END PGP SIGNATURE-----