Overview
References
Context
Changes
Modified appfsd.tcl
from [ced6c30241]
to [15b349e52e] .
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
-
-
+
+
-
-
-
-
-
-
+
+
+
+
+
+
set ::appfs::init_called 1
# Add a default CA to list of trusted CAs
lappend ::appfs::trusted_cas [::pki::x509::parse_cert {
-----BEGIN CERTIFICATE-----
MIIC7DCCAdSgAwIBAgIBATANBgkqhkiG9w0BAQUFADAvMRIwEAYDVQQKEwlSb3kg
S2VlbmUxGTAXBgNVBAMTEEFwcEZTIEtleSBNYXN0ZXIwHhcNMTQxMTE3MjAxNzI4
WhcNMTkxMTE3MjAxNzI4WjAvMRIwEAYDVQQKEwlSb3kgS2VlbmUxGTAXBgNVBAMT
S2VlbmUxGTAXBgNVBAMTEEFwcEZTIEtleSBNYXN0ZXIwHhcNMTk xMjEy MjM1OTI z
WhcNMzQ xMjEy MjM1OTI zWjAvMRIwEAYDVQQKEwlSb3kgS2VlbmUxGTAXBgNVBAMT
EEFwcEZTIEtleSBNYXN0ZXIwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIB
AQCq6uSK46yG5b6RJWwRlvw5glAnjsc1GiX3duXA0vG4qnKUnDtl/jcMmq2GMOB9
Iy1tjabEHA0MhW2j7Vwe/O9MLFJkJ30M1PVD7YZRRNaAsz3UWIKEjPI7BBc32KOm
BL3CTXCCdzllL1HhVbnM5iCAmgHcg1DUk/EvWXvnEDxXRy2lV9mQsmDedrffY7Wl
Or57nlczaMuPLpyRSkv75PAnjQJxT3sWlBpy+/H9ImudQdpJNf/FtxcqN7iDwH5B
vIceYEtDVxFsvo5HOVkSl9jeo5E4Gpe3wyfRhoqB2UkaW1Kq0iH5R+00S760xQMx
LL9L1duhu1dL7HsmEw7IeYURAgMBAAGjEzARMA8GA1UdEwEB/wQFMAMBAf8wDQYJ
KoZIhvcNAQEFBQADggEBAKhO4ZSzYP37BqixNHKK9+gSeC6Fga85iLWhwpPW0kSl
z03hal80KZ+kPMzb8C52N283tQNAqJ9Q8akDPZxSzzMUVOGpGw2pJ7ZswKDz0ZTa
0edq/gdT/HrdegvNtDPc2jona5FVOYqwdcz5kbl1UWBaBp3VXUgcYjXSRaBK43Wd
cveiDUeZw7gHqRSN/AyYUCtJzWmvGsJuIFhMBonuz8jylhyMJCYJFT4iMUC8MNIw
niX1xx+Nu6fPV5ZZHj9rbhiBaLjm+tkDwtPgA3j2pxvHKYptuWxeYO+9DDNa9sCb
E5AnJIlOnd/tGe0Chf0sFQg+l9nNiNrWGgzdd9ZPJK4=
KoZIhvcNAQEFBQADggEBAIQW2OHDS9rIZUqaFdRqt hqhYxESi9Yz9S O1LHWJ6Wy S
edqkMIWnX aC2Gq 8JT CLcI wK4VRv DqwuHz2TQj9cqbQ+FrnxtSM3kVXrsfehD4cqz
pMNKfoi+XaP efB9YbSBbcI4IvOPbP HtZz9++pW5 vUwKj p3BiA1xNL9x9 SnoehME d
BQM75CMQ ckwmnlII1yhStRDCcgIaMp v7L6vut mvdvN0Q MJKnX/5papLrd iHu1Nt7
bSf8agpRgIQKKSyuwFjp3zT8oeAzEzL4HdOBCveQ5EamCqvV6EDIuIR7b+4Z nYoL
3qh0YR O/9jrtb786iqW GexZ1JBjiSMhYA1 CcvJtR/v Q=
-----END CERTIFICATE-----
}]
# Load configuration file
set config_file [file join $::appfs::cachedir config]
if {[file exists $config_file]} {
source $config_file
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
+
-
+
+
+
return -code error "Invalid or unacceptable path: $dir"
}
proc getattr {path} {
array set pathinfo [_parsepath $path]
array set retval [list]
set fetchIndexError "no fetch error"
catch {
if {[ catch {
::appfs::getindex $pathinfo(hostname)
::appfs::getpkgmanifest $pathinfo(hostname) $pathinfo(package_sha1)
} fetchIndexErrorRaw]} {
set fetchIndexError $fetchIndexErrorRaw
}
set retval(path_type) $pathinfo(_type)
switch -- $pathinfo(_type) {
"toplevel" {
set retval(type) directory
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
-
+
}
}
}
}
if {![info exists retval(type)]} {
return -code error "No such file or directory"
return -code error "No such file or directory ($fetchIndexError) "
}
return [array get retval]
}
proc openpath {path mode} {
array set pathinfo [_parsepath $path]