Check-in [fc7477ac04]
Not logged in
Overview
Comment:Add support for custom (private?) backend package file servers using overridden URNs for login, download, and logout.
Downloads: Tarball | ZIP archive | SQL archive
Timelines: family | ancestors | descendants | both | trunk
Files: files | file ages | folders
SHA1: fc7477ac04afda01c123f01e516fc3506eafb2d3
User & Date: mistachkin on 2016-10-18 19:49:08
Other Links: manifest | tags
Context
2016-10-18
23:58
Breaking change to the public 'downloadFiles' package downloader procedure: use a single options dictionary instead of boolean arguments. Add the '-allowUpdate' option. check-in: 8406634ad4 user: mistachkin tags: trunk
19:49
Add support for custom (private?) backend package file servers using overridden URNs for login, download, and logout. check-in: fc7477ac04 user: mistachkin tags: trunk
07:29
Prevent stray diagnostic messages. check-in: 34f44d121a user: mistachkin tags: trunk
Changes

Modified client/1.0/pkgd.eagle from [5880778674] to [809fd86192].

16
17
18
19
20
21
22
23


























































































24
25
26

27
28
29
30
31
32
33

#
# 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 configuration
  #       parameters used by the package downloader client.  There are no
  #       arguments.

  #
  proc setupDownloadVars { script } {
    #
    # NOTE: What is the fully qualified path to the directory containing the
    #       package downloader client?
    #
    variable clientDirectory








>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>

|
|
>







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124

#
# 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.  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?
    #
    variable clientDirectory
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
    #
    variable quiet; # DEFAULT: true

    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

    if {![info exists publicUserName]} then {







<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<







143
144
145
146
147
148
149












































150
151
152
153
154
155
156
    #
    variable quiet; # DEFAULT: true

    if {![info exists quiet]} then {
      set quiet true
    }













































    #
    # 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

    if {![info exists publicUserName]} then {
149
150
151
152
153
154
155



































156
157
158
159
160
161
162
    #
    variable viaInstall; # DEFAULT: false

    if {![info exists viaInstall]} then {
      set viaInstall false
    }
  }




































  #
  # 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.
  #
  proc uriEscape { name value } {







>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>







196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
    #
    variable viaInstall; # DEFAULT: false

    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.
  #
  # <public>
  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.
  #
  proc uriEscape { name value } {
652
653
654
655
656
657
658

659
660
661
662
663
664
665
  #       password that is associated with the specified user name.
  #
  # <public>
  proc resetCookieAndLogin { userName password } {
    variable baseUri
    variable loginCookie
    variable loginUri


    #
    # NOTE: Build the full URI for the login request.
    #
    set uri [subst $loginUri]

    #







>







734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
  #       password that is associated with the specified user name.
  #
  # <public>
  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]

    #
702
703
704
705
706
707
708

709
710
711
712
713
714
715
  #       are no arguments.  This procedure may raise a script error.
  #
  # <public>
  proc logoutAndResetCookie {} {
    variable baseUri
    variable loginCookie
    variable logoutUri


    #
    # NOTE: Attempt to verify that we are currently logged in.
    #
    if {![info exists loginCookie] || [llength $loginCookie] != 2} then {
      error "missing or invalid login cookie"
    }







>







785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
  #       are no arguments.  This procedure may raise a script error.
  #
  # <public>
  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 {
      error "missing or invalid login cookie"
    }
820
821
822
823
824
825
826

827
828
829
830
831
832
833
  #       where the downloaded file should be written.  The usePgp argument
  #       should be non-zero when an OpenPGP signature file needs to be
  #       downloaded and verified for the downloaded file.
  #
  proc downloadOneFile { language version fileName localFileName usePgp } {
    variable baseUri
    variable downloadUri


    #
    # NOTE: First, build the full relative file name to download from
    #       the remote package repository.
    #
    set fileName [file join $language $version $fileName]
    set uri [subst $downloadUri]







>







904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
  #       where the downloaded file should be written.  The usePgp argument
  #       should be non-zero when an OpenPGP signature file needs to be
  #       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.
    #
    set fileName [file join $language $version $fileName]
    set uri [subst $downloadUri]
1067
1068
1069
1070
1071
1072
1073






1074
1075
1076
1077
1078
1079
1080
  ::PackageRepository::maybeReadSettingsFile [info script]

  #
  # NOTE: Setup the variables, within this namespace, used by this script.
  #
  setupDownloadVars [info script]







  #
  # 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.
  #
  variable persistentRootDirectory








>
>
>
>
>
>







1152
1153
1154
1155
1156
1157
1158
1159
1160
1161
1162
1163
1164
1165
1166
1167
1168
1169
1170
1171
  ::PackageRepository::maybeReadSettingsFile [info script]

  #
  # 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.
  #
  variable persistentRootDirectory

Modified client/1.0/pkgd.eagle.asc from [a13a74f362] to [3a11f23a23].

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
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
-----END PGP SIGNATURE-----




|
|
|
|
|
|
|
|
|
|
|
|
|

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v2
Comment: Eagle Package Repository

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-----

Modified client/1.0/pkgd.eagle.harpy from [878b855663] to [cd46d9146c].

17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
    THE ASSOCIATED SOFTWARE MAY NOT WORK PROPERLY IF THIS FILE IS ALTERED.
-->
<Certificate xmlns="https://eagle.to/2011/harpy"
             xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
             xmlns:xsd="http://www.w3.org/2001/XMLSchema">
  <Protocol>None</Protocol>
  <Vendor>Mistachkin Systems</Vendor>
  <Id>c8044773-7513-461e-801f-6f5a2dd5743f</Id>
  <HashAlgorithm>SHA512</HashAlgorithm>
  <EntityType>Script</EntityType>
  <TimeStamp>2016-10-18T06:08:23.4552031Z</TimeStamp>
  <Duration>-1.00:00:00</Duration>
  <Key>0x9559f6017247e3e2</Key>
  <Signature>
    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
  </Signature>
</Certificate>







|


|



|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|


17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
    THE ASSOCIATED SOFTWARE MAY NOT WORK PROPERLY IF THIS FILE IS ALTERED.
-->
<Certificate xmlns="https://eagle.to/2011/harpy"
             xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
             xmlns:xsd="http://www.w3.org/2001/XMLSchema">
  <Protocol>None</Protocol>
  <Vendor>Mistachkin Systems</Vendor>
  <Id>41bb98f8-a037-4533-9f6c-6d8d647b97a5</Id>
  <HashAlgorithm>SHA512</HashAlgorithm>
  <EntityType>Script</EntityType>
  <TimeStamp>2016-10-18T19:46:18.4688750Z</TimeStamp>
  <Duration>-1.00:00:00</Duration>
  <Key>0x9559f6017247e3e2</Key>
  <Signature>
    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
  </Signature>
</Certificate>

Modified client/1.0/pkgd.eagle.harpy.asc from [7c677e3909] to [2090134fd5].

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
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
-----END PGP SIGNATURE-----




|
|
|
|
|
|
|
|
|
|
|
|
|

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v2
Comment: Eagle Package Repository

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-----

Modified client/1.0/pkgr.eagle from [de1c724aac] to [eebf0a8831].

132
133
134
135
136
137
138
139

140
141
142
143
144
145
146
      2 {set codeString return}
      3 {set codeString break}
      4 {set codeString continue}
      default {set codeString [appendArgs unknown( $code )]}
    }

    if {[string length $result] > 0} then {
      return [appendArgs $codeString ", " [list $result]]

    } else {
      return $codeString
    }
  }

  #
  # NOTE: This procedure emits a message to the package repository client







|
>







132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
      2 {set codeString return}
      3 {set codeString break}
      4 {set codeString continue}
      default {set codeString [appendArgs unknown( $code )]}
    }

    if {[string length $result] > 0} then {
      return [appendArgs \
          "code " $codeString ", result " [list $result]]
    } else {
      return $codeString
    }
  }

  #
  # NOTE: This procedure emits a message to the package repository client

Modified client/1.0/pkgr.eagle.asc from [7ea0d74eb6] to [73ba974b1c].

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
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
-----END PGP SIGNATURE-----




|
|
|
|
|
|
|
|
|
|
|
|
|

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v2
Comment: Eagle Package Repository

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-----

Modified client/1.0/pkgr.eagle.harpy from [3a0cdd12a1] to [6fa1a92953].

17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
    THE ASSOCIATED SOFTWARE MAY NOT WORK PROPERLY IF THIS FILE IS ALTERED.
-->
<Certificate xmlns="https://eagle.to/2011/harpy"
             xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
             xmlns:xsd="http://www.w3.org/2001/XMLSchema">
  <Protocol>None</Protocol>
  <Vendor>Mistachkin Systems</Vendor>
  <Id>56c70837-ef83-48bf-9d94-5b0225518222</Id>
  <HashAlgorithm>SHA512</HashAlgorithm>
  <EntityType>Script</EntityType>
  <TimeStamp>2016-10-18T07:28:03.1622344Z</TimeStamp>
  <Duration>-1.00:00:00</Duration>
  <Key>0x9559f6017247e3e2</Key>
  <Signature>
    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
  </Signature>
</Certificate>







|


|



|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|


17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
    THE ASSOCIATED SOFTWARE MAY NOT WORK PROPERLY IF THIS FILE IS ALTERED.
-->
<Certificate xmlns="https://eagle.to/2011/harpy"
             xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
             xmlns:xsd="http://www.w3.org/2001/XMLSchema">
  <Protocol>None</Protocol>
  <Vendor>Mistachkin Systems</Vendor>
  <Id>ea38750b-6e4e-42d8-9f4c-278c3acc81a4</Id>
  <HashAlgorithm>SHA512</HashAlgorithm>
  <EntityType>Script</EntityType>
  <TimeStamp>2016-10-18T19:46:50.5714141Z</TimeStamp>
  <Duration>-1.00:00:00</Duration>
  <Key>0x9559f6017247e3e2</Key>
  <Signature>
    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
  </Signature>
</Certificate>

Modified client/1.0/pkgr.eagle.harpy.asc from [b17d7350d7] to [ffea03a64c].

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
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
-----END PGP SIGNATURE-----




|
|
|
|
|
|
|
|
|
|
|
|
|

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v2
Comment: Eagle Package Repository

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-----