├── .gitignore ├── .travis.yml ├── CHANGELOG.md ├── Cargo.lock ├── Cargo.toml ├── LICENSE ├── README.md ├── src ├── bin │ └── host.rs ├── client.rs ├── error.rs └── lib.rs └── tests └── upstream_server.rs /.gitignore: -------------------------------------------------------------------------------- 1 | /target/ 2 | **/*.rs.bk 3 | -------------------------------------------------------------------------------- /.travis.yml: -------------------------------------------------------------------------------- 1 | language: rust 2 | sudo: false 3 | 4 | env: RUST_BACKTRACE=1 5 | 6 | matrix: 7 | include: 8 | - rust: stable 9 | - rust: beta 10 | - rust: nightly 11 | - rust: stable 12 | env: "EXTRAARGS=--ignored" 13 | 14 | allow_failures: 15 | - env: "EXTRAARGS=--ignored" 16 | 17 | script: 18 | - cargo test -- "$EXTRAARGS" 19 | 20 | notifications: 21 | email: false 22 | -------------------------------------------------------------------------------- /CHANGELOG.md: -------------------------------------------------------------------------------- 1 | # v0.6.0 (2018-09-21) 2 | 3 | * Update dependencies 4 | 5 | # v0.5.0 (2018-06-05) 6 | 7 | * Update to version 7 of the draft (updated content-type) 8 | * Added tests against known public servers 9 | 10 | # v0.4.0 (2018-04-01) 11 | 12 | * Switch to 1.1.1.1 as the default 13 | 14 | # v0.3.0 (2018-03-30) 15 | 16 | * Use POST requests and don't encode in base64 17 | * Instantiation returns a Result now 18 | 19 | # v0.2.0 (2018-03-30) 20 | 21 | * Updated query parameter according to version 3 of the draft 22 | 23 | # v0.1.0 (2018-02-06) 24 | 25 | * Initial release! 26 | -------------------------------------------------------------------------------- /Cargo.lock: -------------------------------------------------------------------------------- 1 | [[package]] 2 | name = "adler32" 3 | version = "1.0.2" 4 | source = "registry+https://github.com/rust-lang/crates.io-index" 5 | 6 | [[package]] 7 | name = "aho-corasick" 8 | version = "0.6.4" 9 | source = "registry+https://github.com/rust-lang/crates.io-index" 10 | dependencies = [ 11 | "memchr 2.0.1 (registry+https://github.com/rust-lang/crates.io-index)", 12 | ] 13 | 14 | [[package]] 15 | name = "arrayvec" 16 | version = "0.4.7" 17 | source = "registry+https://github.com/rust-lang/crates.io-index" 18 | dependencies = [ 19 | "nodrop 0.1.12 (registry+https://github.com/rust-lang/crates.io-index)", 20 | ] 21 | 22 | [[package]] 23 | name = "atty" 24 | version = "0.2.8" 25 | source = "registry+https://github.com/rust-lang/crates.io-index" 26 | dependencies = [ 27 | "libc 0.2.43 (registry+https://github.com/rust-lang/crates.io-index)", 28 | "termion 1.5.1 (registry+https://github.com/rust-lang/crates.io-index)", 29 | "winapi 0.3.4 (registry+https://github.com/rust-lang/crates.io-index)", 30 | ] 31 | 32 | [[package]] 33 | name = "backtrace" 34 | version = "0.2.3" 35 | source = "registry+https://github.com/rust-lang/crates.io-index" 36 | dependencies = [ 37 | "backtrace-sys 0.1.16 (registry+https://github.com/rust-lang/crates.io-index)", 38 | "cfg-if 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)", 39 | "dbghelp-sys 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)", 40 | "kernel32-sys 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)", 41 | "libc 0.2.43 (registry+https://github.com/rust-lang/crates.io-index)", 42 | "rustc-demangle 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)", 43 | "winapi 0.2.8 (registry+https://github.com/rust-lang/crates.io-index)", 44 | ] 45 | 46 | [[package]] 47 | name = "backtrace" 48 | version = "0.3.5" 49 | source = "registry+https://github.com/rust-lang/crates.io-index" 50 | dependencies = [ 51 | "backtrace-sys 0.1.16 (registry+https://github.com/rust-lang/crates.io-index)", 52 | "cfg-if 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)", 53 | "libc 0.2.43 (registry+https://github.com/rust-lang/crates.io-index)", 54 | "rustc-demangle 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)", 55 | "winapi 0.3.4 (registry+https://github.com/rust-lang/crates.io-index)", 56 | ] 57 | 58 | [[package]] 59 | name = "backtrace-sys" 60 | version = "0.1.16" 61 | source = "registry+https://github.com/rust-lang/crates.io-index" 62 | dependencies = [ 63 | "cc 1.0.4 (registry+https://github.com/rust-lang/crates.io-index)", 64 | "libc 0.2.43 (registry+https://github.com/rust-lang/crates.io-index)", 65 | ] 66 | 67 | [[package]] 68 | name = "base64" 69 | version = "0.9.0" 70 | source = "registry+https://github.com/rust-lang/crates.io-index" 71 | dependencies = [ 72 | "byteorder 1.2.1 (registry+https://github.com/rust-lang/crates.io-index)", 73 | "safemem 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)", 74 | ] 75 | 76 | [[package]] 77 | name = "bitflags" 78 | version = "1.0.1" 79 | source = "registry+https://github.com/rust-lang/crates.io-index" 80 | 81 | [[package]] 82 | name = "build_const" 83 | version = "0.2.0" 84 | source = "registry+https://github.com/rust-lang/crates.io-index" 85 | 86 | [[package]] 87 | name = "byteorder" 88 | version = "1.2.1" 89 | source = "registry+https://github.com/rust-lang/crates.io-index" 90 | 91 | [[package]] 92 | name = "bytes" 93 | version = "0.4.10" 94 | source = "registry+https://github.com/rust-lang/crates.io-index" 95 | dependencies = [ 96 | "byteorder 1.2.1 (registry+https://github.com/rust-lang/crates.io-index)", 97 | "iovec 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)", 98 | ] 99 | 100 | [[package]] 101 | name = "cc" 102 | version = "1.0.4" 103 | source = "registry+https://github.com/rust-lang/crates.io-index" 104 | 105 | [[package]] 106 | name = "cfg-if" 107 | version = "0.1.2" 108 | source = "registry+https://github.com/rust-lang/crates.io-index" 109 | 110 | [[package]] 111 | name = "chrono" 112 | version = "0.4.0" 113 | source = "registry+https://github.com/rust-lang/crates.io-index" 114 | dependencies = [ 115 | "num 0.1.41 (registry+https://github.com/rust-lang/crates.io-index)", 116 | "time 0.1.39 (registry+https://github.com/rust-lang/crates.io-index)", 117 | ] 118 | 119 | [[package]] 120 | name = "cloudabi" 121 | version = "0.0.3" 122 | source = "registry+https://github.com/rust-lang/crates.io-index" 123 | dependencies = [ 124 | "bitflags 1.0.1 (registry+https://github.com/rust-lang/crates.io-index)", 125 | ] 126 | 127 | [[package]] 128 | name = "core-foundation" 129 | version = "0.5.1" 130 | source = "registry+https://github.com/rust-lang/crates.io-index" 131 | dependencies = [ 132 | "core-foundation-sys 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)", 133 | "libc 0.2.43 (registry+https://github.com/rust-lang/crates.io-index)", 134 | ] 135 | 136 | [[package]] 137 | name = "core-foundation-sys" 138 | version = "0.5.1" 139 | source = "registry+https://github.com/rust-lang/crates.io-index" 140 | dependencies = [ 141 | "libc 0.2.43 (registry+https://github.com/rust-lang/crates.io-index)", 142 | ] 143 | 144 | [[package]] 145 | name = "crc" 146 | version = "1.7.0" 147 | source = "registry+https://github.com/rust-lang/crates.io-index" 148 | dependencies = [ 149 | "build_const 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)", 150 | ] 151 | 152 | [[package]] 153 | name = "crossbeam-deque" 154 | version = "0.6.1" 155 | source = "registry+https://github.com/rust-lang/crates.io-index" 156 | dependencies = [ 157 | "crossbeam-epoch 0.5.2 (registry+https://github.com/rust-lang/crates.io-index)", 158 | "crossbeam-utils 0.5.0 (registry+https://github.com/rust-lang/crates.io-index)", 159 | ] 160 | 161 | [[package]] 162 | name = "crossbeam-epoch" 163 | version = "0.5.2" 164 | source = "registry+https://github.com/rust-lang/crates.io-index" 165 | dependencies = [ 166 | "arrayvec 0.4.7 (registry+https://github.com/rust-lang/crates.io-index)", 167 | "cfg-if 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)", 168 | "crossbeam-utils 0.5.0 (registry+https://github.com/rust-lang/crates.io-index)", 169 | "lazy_static 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)", 170 | "memoffset 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)", 171 | "scopeguard 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)", 172 | ] 173 | 174 | [[package]] 175 | name = "crossbeam-utils" 176 | version = "0.5.0" 177 | source = "registry+https://github.com/rust-lang/crates.io-index" 178 | 179 | [[package]] 180 | name = "data-encoding" 181 | version = "2.1.1" 182 | source = "registry+https://github.com/rust-lang/crates.io-index" 183 | 184 | [[package]] 185 | name = "data-encoding-macro" 186 | version = "0.1.1" 187 | source = "registry+https://github.com/rust-lang/crates.io-index" 188 | dependencies = [ 189 | "data-encoding 2.1.1 (registry+https://github.com/rust-lang/crates.io-index)", 190 | "data-encoding-macro-internal 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", 191 | "proc-macro-hack 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)", 192 | ] 193 | 194 | [[package]] 195 | name = "data-encoding-macro-internal" 196 | version = "0.1.1" 197 | source = "registry+https://github.com/rust-lang/crates.io-index" 198 | dependencies = [ 199 | "data-encoding 2.1.1 (registry+https://github.com/rust-lang/crates.io-index)", 200 | "proc-macro-hack 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)", 201 | "syn 0.11.11 (registry+https://github.com/rust-lang/crates.io-index)", 202 | ] 203 | 204 | [[package]] 205 | name = "dbghelp-sys" 206 | version = "0.2.0" 207 | source = "registry+https://github.com/rust-lang/crates.io-index" 208 | dependencies = [ 209 | "winapi 0.2.8 (registry+https://github.com/rust-lang/crates.io-index)", 210 | "winapi-build 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", 211 | ] 212 | 213 | [[package]] 214 | name = "dnsoverhttps" 215 | version = "0.6.0" 216 | dependencies = [ 217 | "env_logger 0.5.6 (registry+https://github.com/rust-lang/crates.io-index)", 218 | "failure 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)", 219 | "log 0.4.5 (registry+https://github.com/rust-lang/crates.io-index)", 220 | "reqwest 0.9.1 (registry+https://github.com/rust-lang/crates.io-index)", 221 | "trust-dns 0.14.0 (registry+https://github.com/rust-lang/crates.io-index)", 222 | "trust-dns-proto 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)", 223 | ] 224 | 225 | [[package]] 226 | name = "dtoa" 227 | version = "0.4.2" 228 | source = "registry+https://github.com/rust-lang/crates.io-index" 229 | 230 | [[package]] 231 | name = "encoding_rs" 232 | version = "0.8.6" 233 | source = "registry+https://github.com/rust-lang/crates.io-index" 234 | dependencies = [ 235 | "cfg-if 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)", 236 | ] 237 | 238 | [[package]] 239 | name = "endian-type" 240 | version = "0.1.2" 241 | source = "registry+https://github.com/rust-lang/crates.io-index" 242 | 243 | [[package]] 244 | name = "env_logger" 245 | version = "0.5.6" 246 | source = "registry+https://github.com/rust-lang/crates.io-index" 247 | dependencies = [ 248 | "atty 0.2.8 (registry+https://github.com/rust-lang/crates.io-index)", 249 | "humantime 1.1.1 (registry+https://github.com/rust-lang/crates.io-index)", 250 | "log 0.4.5 (registry+https://github.com/rust-lang/crates.io-index)", 251 | "regex 0.2.10 (registry+https://github.com/rust-lang/crates.io-index)", 252 | "termcolor 0.3.6 (registry+https://github.com/rust-lang/crates.io-index)", 253 | ] 254 | 255 | [[package]] 256 | name = "error-chain" 257 | version = "0.1.12" 258 | source = "registry+https://github.com/rust-lang/crates.io-index" 259 | dependencies = [ 260 | "backtrace 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)", 261 | ] 262 | 263 | [[package]] 264 | name = "failure" 265 | version = "0.1.2" 266 | source = "registry+https://github.com/rust-lang/crates.io-index" 267 | dependencies = [ 268 | "backtrace 0.3.5 (registry+https://github.com/rust-lang/crates.io-index)", 269 | "failure_derive 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)", 270 | ] 271 | 272 | [[package]] 273 | name = "failure_derive" 274 | version = "0.1.2" 275 | source = "registry+https://github.com/rust-lang/crates.io-index" 276 | dependencies = [ 277 | "proc-macro2 0.4.19 (registry+https://github.com/rust-lang/crates.io-index)", 278 | "quote 0.6.8 (registry+https://github.com/rust-lang/crates.io-index)", 279 | "syn 0.14.9 (registry+https://github.com/rust-lang/crates.io-index)", 280 | "synstructure 0.9.0 (registry+https://github.com/rust-lang/crates.io-index)", 281 | ] 282 | 283 | [[package]] 284 | name = "fnv" 285 | version = "1.0.6" 286 | source = "registry+https://github.com/rust-lang/crates.io-index" 287 | 288 | [[package]] 289 | name = "foreign-types" 290 | version = "0.3.2" 291 | source = "registry+https://github.com/rust-lang/crates.io-index" 292 | dependencies = [ 293 | "foreign-types-shared 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", 294 | ] 295 | 296 | [[package]] 297 | name = "foreign-types-shared" 298 | version = "0.1.1" 299 | source = "registry+https://github.com/rust-lang/crates.io-index" 300 | 301 | [[package]] 302 | name = "fuchsia-zircon" 303 | version = "0.3.3" 304 | source = "registry+https://github.com/rust-lang/crates.io-index" 305 | dependencies = [ 306 | "bitflags 1.0.1 (registry+https://github.com/rust-lang/crates.io-index)", 307 | "fuchsia-zircon-sys 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)", 308 | ] 309 | 310 | [[package]] 311 | name = "fuchsia-zircon-sys" 312 | version = "0.3.3" 313 | source = "registry+https://github.com/rust-lang/crates.io-index" 314 | 315 | [[package]] 316 | name = "futures" 317 | version = "0.1.24" 318 | source = "registry+https://github.com/rust-lang/crates.io-index" 319 | 320 | [[package]] 321 | name = "futures-cpupool" 322 | version = "0.1.8" 323 | source = "registry+https://github.com/rust-lang/crates.io-index" 324 | dependencies = [ 325 | "futures 0.1.24 (registry+https://github.com/rust-lang/crates.io-index)", 326 | "num_cpus 1.8.0 (registry+https://github.com/rust-lang/crates.io-index)", 327 | ] 328 | 329 | [[package]] 330 | name = "h2" 331 | version = "0.1.12" 332 | source = "registry+https://github.com/rust-lang/crates.io-index" 333 | dependencies = [ 334 | "byteorder 1.2.1 (registry+https://github.com/rust-lang/crates.io-index)", 335 | "bytes 0.4.10 (registry+https://github.com/rust-lang/crates.io-index)", 336 | "fnv 1.0.6 (registry+https://github.com/rust-lang/crates.io-index)", 337 | "futures 0.1.24 (registry+https://github.com/rust-lang/crates.io-index)", 338 | "http 0.1.13 (registry+https://github.com/rust-lang/crates.io-index)", 339 | "indexmap 1.0.1 (registry+https://github.com/rust-lang/crates.io-index)", 340 | "log 0.4.5 (registry+https://github.com/rust-lang/crates.io-index)", 341 | "slab 0.4.1 (registry+https://github.com/rust-lang/crates.io-index)", 342 | "string 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", 343 | "tokio-io 0.1.8 (registry+https://github.com/rust-lang/crates.io-index)", 344 | ] 345 | 346 | [[package]] 347 | name = "http" 348 | version = "0.1.13" 349 | source = "registry+https://github.com/rust-lang/crates.io-index" 350 | dependencies = [ 351 | "bytes 0.4.10 (registry+https://github.com/rust-lang/crates.io-index)", 352 | "fnv 1.0.6 (registry+https://github.com/rust-lang/crates.io-index)", 353 | "itoa 0.4.3 (registry+https://github.com/rust-lang/crates.io-index)", 354 | ] 355 | 356 | [[package]] 357 | name = "httparse" 358 | version = "1.2.4" 359 | source = "registry+https://github.com/rust-lang/crates.io-index" 360 | 361 | [[package]] 362 | name = "humantime" 363 | version = "1.1.1" 364 | source = "registry+https://github.com/rust-lang/crates.io-index" 365 | dependencies = [ 366 | "quick-error 1.2.1 (registry+https://github.com/rust-lang/crates.io-index)", 367 | ] 368 | 369 | [[package]] 370 | name = "hyper" 371 | version = "0.12.10" 372 | source = "registry+https://github.com/rust-lang/crates.io-index" 373 | dependencies = [ 374 | "bytes 0.4.10 (registry+https://github.com/rust-lang/crates.io-index)", 375 | "futures 0.1.24 (registry+https://github.com/rust-lang/crates.io-index)", 376 | "futures-cpupool 0.1.8 (registry+https://github.com/rust-lang/crates.io-index)", 377 | "h2 0.1.12 (registry+https://github.com/rust-lang/crates.io-index)", 378 | "http 0.1.13 (registry+https://github.com/rust-lang/crates.io-index)", 379 | "httparse 1.2.4 (registry+https://github.com/rust-lang/crates.io-index)", 380 | "iovec 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)", 381 | "itoa 0.4.3 (registry+https://github.com/rust-lang/crates.io-index)", 382 | "log 0.4.5 (registry+https://github.com/rust-lang/crates.io-index)", 383 | "net2 0.2.33 (registry+https://github.com/rust-lang/crates.io-index)", 384 | "rustc_version 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)", 385 | "time 0.1.39 (registry+https://github.com/rust-lang/crates.io-index)", 386 | "tokio 0.1.8 (registry+https://github.com/rust-lang/crates.io-index)", 387 | "tokio-executor 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)", 388 | "tokio-io 0.1.8 (registry+https://github.com/rust-lang/crates.io-index)", 389 | "tokio-reactor 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)", 390 | "tokio-tcp 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", 391 | "tokio-timer 0.2.6 (registry+https://github.com/rust-lang/crates.io-index)", 392 | "want 0.0.6 (registry+https://github.com/rust-lang/crates.io-index)", 393 | ] 394 | 395 | [[package]] 396 | name = "hyper-tls" 397 | version = "0.3.0" 398 | source = "registry+https://github.com/rust-lang/crates.io-index" 399 | dependencies = [ 400 | "bytes 0.4.10 (registry+https://github.com/rust-lang/crates.io-index)", 401 | "futures 0.1.24 (registry+https://github.com/rust-lang/crates.io-index)", 402 | "hyper 0.12.10 (registry+https://github.com/rust-lang/crates.io-index)", 403 | "native-tls 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)", 404 | "tokio-io 0.1.8 (registry+https://github.com/rust-lang/crates.io-index)", 405 | ] 406 | 407 | [[package]] 408 | name = "idna" 409 | version = "0.1.4" 410 | source = "registry+https://github.com/rust-lang/crates.io-index" 411 | dependencies = [ 412 | "matches 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)", 413 | "unicode-bidi 0.3.4 (registry+https://github.com/rust-lang/crates.io-index)", 414 | "unicode-normalization 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)", 415 | ] 416 | 417 | [[package]] 418 | name = "indexmap" 419 | version = "1.0.1" 420 | source = "registry+https://github.com/rust-lang/crates.io-index" 421 | 422 | [[package]] 423 | name = "iovec" 424 | version = "0.1.2" 425 | source = "registry+https://github.com/rust-lang/crates.io-index" 426 | dependencies = [ 427 | "libc 0.2.43 (registry+https://github.com/rust-lang/crates.io-index)", 428 | "winapi 0.2.8 (registry+https://github.com/rust-lang/crates.io-index)", 429 | ] 430 | 431 | [[package]] 432 | name = "itoa" 433 | version = "0.3.4" 434 | source = "registry+https://github.com/rust-lang/crates.io-index" 435 | 436 | [[package]] 437 | name = "itoa" 438 | version = "0.4.3" 439 | source = "registry+https://github.com/rust-lang/crates.io-index" 440 | 441 | [[package]] 442 | name = "kernel32-sys" 443 | version = "0.2.2" 444 | source = "registry+https://github.com/rust-lang/crates.io-index" 445 | dependencies = [ 446 | "winapi 0.2.8 (registry+https://github.com/rust-lang/crates.io-index)", 447 | "winapi-build 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", 448 | ] 449 | 450 | [[package]] 451 | name = "lazy_static" 452 | version = "1.0.0" 453 | source = "registry+https://github.com/rust-lang/crates.io-index" 454 | 455 | [[package]] 456 | name = "lazycell" 457 | version = "1.2.0" 458 | source = "registry+https://github.com/rust-lang/crates.io-index" 459 | 460 | [[package]] 461 | name = "libc" 462 | version = "0.2.43" 463 | source = "registry+https://github.com/rust-lang/crates.io-index" 464 | 465 | [[package]] 466 | name = "libflate" 467 | version = "0.1.14" 468 | source = "registry+https://github.com/rust-lang/crates.io-index" 469 | dependencies = [ 470 | "adler32 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)", 471 | "byteorder 1.2.1 (registry+https://github.com/rust-lang/crates.io-index)", 472 | "crc 1.7.0 (registry+https://github.com/rust-lang/crates.io-index)", 473 | ] 474 | 475 | [[package]] 476 | name = "log" 477 | version = "0.4.5" 478 | source = "registry+https://github.com/rust-lang/crates.io-index" 479 | dependencies = [ 480 | "cfg-if 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)", 481 | ] 482 | 483 | [[package]] 484 | name = "matches" 485 | version = "0.1.6" 486 | source = "registry+https://github.com/rust-lang/crates.io-index" 487 | 488 | [[package]] 489 | name = "memchr" 490 | version = "2.0.1" 491 | source = "registry+https://github.com/rust-lang/crates.io-index" 492 | dependencies = [ 493 | "libc 0.2.43 (registry+https://github.com/rust-lang/crates.io-index)", 494 | ] 495 | 496 | [[package]] 497 | name = "memoffset" 498 | version = "0.2.1" 499 | source = "registry+https://github.com/rust-lang/crates.io-index" 500 | 501 | [[package]] 502 | name = "mime" 503 | version = "0.3.9" 504 | source = "registry+https://github.com/rust-lang/crates.io-index" 505 | dependencies = [ 506 | "unicase 2.1.0 (registry+https://github.com/rust-lang/crates.io-index)", 507 | ] 508 | 509 | [[package]] 510 | name = "mime_guess" 511 | version = "2.0.0-alpha.6" 512 | source = "registry+https://github.com/rust-lang/crates.io-index" 513 | dependencies = [ 514 | "mime 0.3.9 (registry+https://github.com/rust-lang/crates.io-index)", 515 | "phf 0.7.21 (registry+https://github.com/rust-lang/crates.io-index)", 516 | "phf_codegen 0.7.21 (registry+https://github.com/rust-lang/crates.io-index)", 517 | "unicase 1.4.2 (registry+https://github.com/rust-lang/crates.io-index)", 518 | ] 519 | 520 | [[package]] 521 | name = "mio" 522 | version = "0.6.16" 523 | source = "registry+https://github.com/rust-lang/crates.io-index" 524 | dependencies = [ 525 | "fuchsia-zircon 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)", 526 | "fuchsia-zircon-sys 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)", 527 | "iovec 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)", 528 | "kernel32-sys 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)", 529 | "lazycell 1.2.0 (registry+https://github.com/rust-lang/crates.io-index)", 530 | "libc 0.2.43 (registry+https://github.com/rust-lang/crates.io-index)", 531 | "log 0.4.5 (registry+https://github.com/rust-lang/crates.io-index)", 532 | "miow 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)", 533 | "net2 0.2.33 (registry+https://github.com/rust-lang/crates.io-index)", 534 | "slab 0.4.1 (registry+https://github.com/rust-lang/crates.io-index)", 535 | "winapi 0.2.8 (registry+https://github.com/rust-lang/crates.io-index)", 536 | ] 537 | 538 | [[package]] 539 | name = "mio-uds" 540 | version = "0.6.7" 541 | source = "registry+https://github.com/rust-lang/crates.io-index" 542 | dependencies = [ 543 | "iovec 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)", 544 | "libc 0.2.43 (registry+https://github.com/rust-lang/crates.io-index)", 545 | "mio 0.6.16 (registry+https://github.com/rust-lang/crates.io-index)", 546 | ] 547 | 548 | [[package]] 549 | name = "miow" 550 | version = "0.2.1" 551 | source = "registry+https://github.com/rust-lang/crates.io-index" 552 | dependencies = [ 553 | "kernel32-sys 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)", 554 | "net2 0.2.33 (registry+https://github.com/rust-lang/crates.io-index)", 555 | "winapi 0.2.8 (registry+https://github.com/rust-lang/crates.io-index)", 556 | "ws2_32-sys 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)", 557 | ] 558 | 559 | [[package]] 560 | name = "native-tls" 561 | version = "0.2.1" 562 | source = "registry+https://github.com/rust-lang/crates.io-index" 563 | dependencies = [ 564 | "lazy_static 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)", 565 | "libc 0.2.43 (registry+https://github.com/rust-lang/crates.io-index)", 566 | "openssl 0.10.12 (registry+https://github.com/rust-lang/crates.io-index)", 567 | "openssl-probe 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)", 568 | "openssl-sys 0.9.36 (registry+https://github.com/rust-lang/crates.io-index)", 569 | "schannel 0.1.13 (registry+https://github.com/rust-lang/crates.io-index)", 570 | "security-framework 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)", 571 | "security-framework-sys 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)", 572 | "tempfile 3.0.4 (registry+https://github.com/rust-lang/crates.io-index)", 573 | ] 574 | 575 | [[package]] 576 | name = "net2" 577 | version = "0.2.33" 578 | source = "registry+https://github.com/rust-lang/crates.io-index" 579 | dependencies = [ 580 | "cfg-if 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)", 581 | "libc 0.2.43 (registry+https://github.com/rust-lang/crates.io-index)", 582 | "winapi 0.3.4 (registry+https://github.com/rust-lang/crates.io-index)", 583 | ] 584 | 585 | [[package]] 586 | name = "nibble_vec" 587 | version = "0.0.4" 588 | source = "registry+https://github.com/rust-lang/crates.io-index" 589 | 590 | [[package]] 591 | name = "nodrop" 592 | version = "0.1.12" 593 | source = "registry+https://github.com/rust-lang/crates.io-index" 594 | 595 | [[package]] 596 | name = "num" 597 | version = "0.1.41" 598 | source = "registry+https://github.com/rust-lang/crates.io-index" 599 | dependencies = [ 600 | "num-integer 0.1.35 (registry+https://github.com/rust-lang/crates.io-index)", 601 | "num-iter 0.1.34 (registry+https://github.com/rust-lang/crates.io-index)", 602 | "num-traits 0.1.42 (registry+https://github.com/rust-lang/crates.io-index)", 603 | ] 604 | 605 | [[package]] 606 | name = "num-integer" 607 | version = "0.1.35" 608 | source = "registry+https://github.com/rust-lang/crates.io-index" 609 | dependencies = [ 610 | "num-traits 0.1.42 (registry+https://github.com/rust-lang/crates.io-index)", 611 | ] 612 | 613 | [[package]] 614 | name = "num-iter" 615 | version = "0.1.34" 616 | source = "registry+https://github.com/rust-lang/crates.io-index" 617 | dependencies = [ 618 | "num-integer 0.1.35 (registry+https://github.com/rust-lang/crates.io-index)", 619 | "num-traits 0.1.42 (registry+https://github.com/rust-lang/crates.io-index)", 620 | ] 621 | 622 | [[package]] 623 | name = "num-traits" 624 | version = "0.1.42" 625 | source = "registry+https://github.com/rust-lang/crates.io-index" 626 | 627 | [[package]] 628 | name = "num_cpus" 629 | version = "1.8.0" 630 | source = "registry+https://github.com/rust-lang/crates.io-index" 631 | dependencies = [ 632 | "libc 0.2.43 (registry+https://github.com/rust-lang/crates.io-index)", 633 | ] 634 | 635 | [[package]] 636 | name = "openssl" 637 | version = "0.10.12" 638 | source = "registry+https://github.com/rust-lang/crates.io-index" 639 | dependencies = [ 640 | "bitflags 1.0.1 (registry+https://github.com/rust-lang/crates.io-index)", 641 | "cfg-if 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)", 642 | "foreign-types 0.3.2 (registry+https://github.com/rust-lang/crates.io-index)", 643 | "lazy_static 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)", 644 | "libc 0.2.43 (registry+https://github.com/rust-lang/crates.io-index)", 645 | "openssl-sys 0.9.36 (registry+https://github.com/rust-lang/crates.io-index)", 646 | ] 647 | 648 | [[package]] 649 | name = "openssl-probe" 650 | version = "0.1.2" 651 | source = "registry+https://github.com/rust-lang/crates.io-index" 652 | 653 | [[package]] 654 | name = "openssl-sys" 655 | version = "0.9.36" 656 | source = "registry+https://github.com/rust-lang/crates.io-index" 657 | dependencies = [ 658 | "cc 1.0.4 (registry+https://github.com/rust-lang/crates.io-index)", 659 | "libc 0.2.43 (registry+https://github.com/rust-lang/crates.io-index)", 660 | "pkg-config 0.3.9 (registry+https://github.com/rust-lang/crates.io-index)", 661 | "vcpkg 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)", 662 | ] 663 | 664 | [[package]] 665 | name = "percent-encoding" 666 | version = "1.0.1" 667 | source = "registry+https://github.com/rust-lang/crates.io-index" 668 | 669 | [[package]] 670 | name = "phf" 671 | version = "0.7.21" 672 | source = "registry+https://github.com/rust-lang/crates.io-index" 673 | dependencies = [ 674 | "phf_shared 0.7.21 (registry+https://github.com/rust-lang/crates.io-index)", 675 | ] 676 | 677 | [[package]] 678 | name = "phf_codegen" 679 | version = "0.7.21" 680 | source = "registry+https://github.com/rust-lang/crates.io-index" 681 | dependencies = [ 682 | "phf_generator 0.7.21 (registry+https://github.com/rust-lang/crates.io-index)", 683 | "phf_shared 0.7.21 (registry+https://github.com/rust-lang/crates.io-index)", 684 | ] 685 | 686 | [[package]] 687 | name = "phf_generator" 688 | version = "0.7.21" 689 | source = "registry+https://github.com/rust-lang/crates.io-index" 690 | dependencies = [ 691 | "phf_shared 0.7.21 (registry+https://github.com/rust-lang/crates.io-index)", 692 | "rand 0.3.22 (registry+https://github.com/rust-lang/crates.io-index)", 693 | ] 694 | 695 | [[package]] 696 | name = "phf_shared" 697 | version = "0.7.21" 698 | source = "registry+https://github.com/rust-lang/crates.io-index" 699 | dependencies = [ 700 | "siphasher 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)", 701 | "unicase 1.4.2 (registry+https://github.com/rust-lang/crates.io-index)", 702 | ] 703 | 704 | [[package]] 705 | name = "pkg-config" 706 | version = "0.3.9" 707 | source = "registry+https://github.com/rust-lang/crates.io-index" 708 | 709 | [[package]] 710 | name = "proc-macro-hack" 711 | version = "0.4.0" 712 | source = "registry+https://github.com/rust-lang/crates.io-index" 713 | dependencies = [ 714 | "proc-macro-hack-impl 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)", 715 | ] 716 | 717 | [[package]] 718 | name = "proc-macro-hack-impl" 719 | version = "0.4.0" 720 | source = "registry+https://github.com/rust-lang/crates.io-index" 721 | 722 | [[package]] 723 | name = "proc-macro2" 724 | version = "0.4.19" 725 | source = "registry+https://github.com/rust-lang/crates.io-index" 726 | dependencies = [ 727 | "unicode-xid 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)", 728 | ] 729 | 730 | [[package]] 731 | name = "quick-error" 732 | version = "1.2.1" 733 | source = "registry+https://github.com/rust-lang/crates.io-index" 734 | 735 | [[package]] 736 | name = "quote" 737 | version = "0.3.15" 738 | source = "registry+https://github.com/rust-lang/crates.io-index" 739 | 740 | [[package]] 741 | name = "quote" 742 | version = "0.6.8" 743 | source = "registry+https://github.com/rust-lang/crates.io-index" 744 | dependencies = [ 745 | "proc-macro2 0.4.19 (registry+https://github.com/rust-lang/crates.io-index)", 746 | ] 747 | 748 | [[package]] 749 | name = "radix_trie" 750 | version = "0.1.3" 751 | source = "registry+https://github.com/rust-lang/crates.io-index" 752 | dependencies = [ 753 | "endian-type 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)", 754 | "nibble_vec 0.0.4 (registry+https://github.com/rust-lang/crates.io-index)", 755 | ] 756 | 757 | [[package]] 758 | name = "rand" 759 | version = "0.3.22" 760 | source = "registry+https://github.com/rust-lang/crates.io-index" 761 | dependencies = [ 762 | "fuchsia-zircon 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)", 763 | "libc 0.2.43 (registry+https://github.com/rust-lang/crates.io-index)", 764 | "rand 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)", 765 | ] 766 | 767 | [[package]] 768 | name = "rand" 769 | version = "0.4.2" 770 | source = "registry+https://github.com/rust-lang/crates.io-index" 771 | dependencies = [ 772 | "fuchsia-zircon 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)", 773 | "libc 0.2.43 (registry+https://github.com/rust-lang/crates.io-index)", 774 | "winapi 0.3.4 (registry+https://github.com/rust-lang/crates.io-index)", 775 | ] 776 | 777 | [[package]] 778 | name = "rand" 779 | version = "0.5.5" 780 | source = "registry+https://github.com/rust-lang/crates.io-index" 781 | dependencies = [ 782 | "cloudabi 0.0.3 (registry+https://github.com/rust-lang/crates.io-index)", 783 | "fuchsia-zircon 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)", 784 | "libc 0.2.43 (registry+https://github.com/rust-lang/crates.io-index)", 785 | "rand_core 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)", 786 | "winapi 0.3.4 (registry+https://github.com/rust-lang/crates.io-index)", 787 | ] 788 | 789 | [[package]] 790 | name = "rand_core" 791 | version = "0.2.1" 792 | source = "registry+https://github.com/rust-lang/crates.io-index" 793 | 794 | [[package]] 795 | name = "redox_syscall" 796 | version = "0.1.40" 797 | source = "registry+https://github.com/rust-lang/crates.io-index" 798 | 799 | [[package]] 800 | name = "redox_termios" 801 | version = "0.1.1" 802 | source = "registry+https://github.com/rust-lang/crates.io-index" 803 | dependencies = [ 804 | "redox_syscall 0.1.40 (registry+https://github.com/rust-lang/crates.io-index)", 805 | ] 806 | 807 | [[package]] 808 | name = "regex" 809 | version = "0.2.10" 810 | source = "registry+https://github.com/rust-lang/crates.io-index" 811 | dependencies = [ 812 | "aho-corasick 0.6.4 (registry+https://github.com/rust-lang/crates.io-index)", 813 | "memchr 2.0.1 (registry+https://github.com/rust-lang/crates.io-index)", 814 | "regex-syntax 0.5.3 (registry+https://github.com/rust-lang/crates.io-index)", 815 | "thread_local 0.3.5 (registry+https://github.com/rust-lang/crates.io-index)", 816 | "utf8-ranges 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)", 817 | ] 818 | 819 | [[package]] 820 | name = "regex-syntax" 821 | version = "0.5.3" 822 | source = "registry+https://github.com/rust-lang/crates.io-index" 823 | dependencies = [ 824 | "ucd-util 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", 825 | ] 826 | 827 | [[package]] 828 | name = "remove_dir_all" 829 | version = "0.5.1" 830 | source = "registry+https://github.com/rust-lang/crates.io-index" 831 | dependencies = [ 832 | "winapi 0.3.4 (registry+https://github.com/rust-lang/crates.io-index)", 833 | ] 834 | 835 | [[package]] 836 | name = "reqwest" 837 | version = "0.9.1" 838 | source = "registry+https://github.com/rust-lang/crates.io-index" 839 | dependencies = [ 840 | "base64 0.9.0 (registry+https://github.com/rust-lang/crates.io-index)", 841 | "bytes 0.4.10 (registry+https://github.com/rust-lang/crates.io-index)", 842 | "encoding_rs 0.8.6 (registry+https://github.com/rust-lang/crates.io-index)", 843 | "futures 0.1.24 (registry+https://github.com/rust-lang/crates.io-index)", 844 | "http 0.1.13 (registry+https://github.com/rust-lang/crates.io-index)", 845 | "hyper 0.12.10 (registry+https://github.com/rust-lang/crates.io-index)", 846 | "hyper-tls 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)", 847 | "libflate 0.1.14 (registry+https://github.com/rust-lang/crates.io-index)", 848 | "log 0.4.5 (registry+https://github.com/rust-lang/crates.io-index)", 849 | "mime 0.3.9 (registry+https://github.com/rust-lang/crates.io-index)", 850 | "mime_guess 2.0.0-alpha.6 (registry+https://github.com/rust-lang/crates.io-index)", 851 | "native-tls 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)", 852 | "serde 1.0.27 (registry+https://github.com/rust-lang/crates.io-index)", 853 | "serde_json 1.0.9 (registry+https://github.com/rust-lang/crates.io-index)", 854 | "serde_urlencoded 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)", 855 | "tokio 0.1.8 (registry+https://github.com/rust-lang/crates.io-index)", 856 | "tokio-io 0.1.8 (registry+https://github.com/rust-lang/crates.io-index)", 857 | "url 1.6.0 (registry+https://github.com/rust-lang/crates.io-index)", 858 | "uuid 0.7.1 (registry+https://github.com/rust-lang/crates.io-index)", 859 | ] 860 | 861 | [[package]] 862 | name = "rustc-demangle" 863 | version = "0.1.5" 864 | source = "registry+https://github.com/rust-lang/crates.io-index" 865 | 866 | [[package]] 867 | name = "rustc_version" 868 | version = "0.2.3" 869 | source = "registry+https://github.com/rust-lang/crates.io-index" 870 | dependencies = [ 871 | "semver 0.9.0 (registry+https://github.com/rust-lang/crates.io-index)", 872 | ] 873 | 874 | [[package]] 875 | name = "safemem" 876 | version = "0.2.0" 877 | source = "registry+https://github.com/rust-lang/crates.io-index" 878 | 879 | [[package]] 880 | name = "schannel" 881 | version = "0.1.13" 882 | source = "registry+https://github.com/rust-lang/crates.io-index" 883 | dependencies = [ 884 | "lazy_static 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)", 885 | "winapi 0.3.4 (registry+https://github.com/rust-lang/crates.io-index)", 886 | ] 887 | 888 | [[package]] 889 | name = "scopeguard" 890 | version = "0.3.3" 891 | source = "registry+https://github.com/rust-lang/crates.io-index" 892 | 893 | [[package]] 894 | name = "security-framework" 895 | version = "0.2.1" 896 | source = "registry+https://github.com/rust-lang/crates.io-index" 897 | dependencies = [ 898 | "core-foundation 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)", 899 | "core-foundation-sys 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)", 900 | "libc 0.2.43 (registry+https://github.com/rust-lang/crates.io-index)", 901 | "security-framework-sys 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)", 902 | ] 903 | 904 | [[package]] 905 | name = "security-framework-sys" 906 | version = "0.2.1" 907 | source = "registry+https://github.com/rust-lang/crates.io-index" 908 | dependencies = [ 909 | "core-foundation-sys 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)", 910 | "libc 0.2.43 (registry+https://github.com/rust-lang/crates.io-index)", 911 | ] 912 | 913 | [[package]] 914 | name = "semver" 915 | version = "0.9.0" 916 | source = "registry+https://github.com/rust-lang/crates.io-index" 917 | dependencies = [ 918 | "semver-parser 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)", 919 | ] 920 | 921 | [[package]] 922 | name = "semver-parser" 923 | version = "0.7.0" 924 | source = "registry+https://github.com/rust-lang/crates.io-index" 925 | 926 | [[package]] 927 | name = "serde" 928 | version = "1.0.27" 929 | source = "registry+https://github.com/rust-lang/crates.io-index" 930 | 931 | [[package]] 932 | name = "serde_json" 933 | version = "1.0.9" 934 | source = "registry+https://github.com/rust-lang/crates.io-index" 935 | dependencies = [ 936 | "dtoa 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)", 937 | "itoa 0.3.4 (registry+https://github.com/rust-lang/crates.io-index)", 938 | "num-traits 0.1.42 (registry+https://github.com/rust-lang/crates.io-index)", 939 | "serde 1.0.27 (registry+https://github.com/rust-lang/crates.io-index)", 940 | ] 941 | 942 | [[package]] 943 | name = "serde_urlencoded" 944 | version = "0.5.1" 945 | source = "registry+https://github.com/rust-lang/crates.io-index" 946 | dependencies = [ 947 | "dtoa 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)", 948 | "itoa 0.3.4 (registry+https://github.com/rust-lang/crates.io-index)", 949 | "serde 1.0.27 (registry+https://github.com/rust-lang/crates.io-index)", 950 | "url 1.6.0 (registry+https://github.com/rust-lang/crates.io-index)", 951 | ] 952 | 953 | [[package]] 954 | name = "siphasher" 955 | version = "0.2.2" 956 | source = "registry+https://github.com/rust-lang/crates.io-index" 957 | 958 | [[package]] 959 | name = "slab" 960 | version = "0.4.1" 961 | source = "registry+https://github.com/rust-lang/crates.io-index" 962 | 963 | [[package]] 964 | name = "smallvec" 965 | version = "0.6.5" 966 | source = "registry+https://github.com/rust-lang/crates.io-index" 967 | dependencies = [ 968 | "unreachable 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)", 969 | ] 970 | 971 | [[package]] 972 | name = "socket2" 973 | version = "0.3.8" 974 | source = "registry+https://github.com/rust-lang/crates.io-index" 975 | dependencies = [ 976 | "cfg-if 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)", 977 | "libc 0.2.43 (registry+https://github.com/rust-lang/crates.io-index)", 978 | "redox_syscall 0.1.40 (registry+https://github.com/rust-lang/crates.io-index)", 979 | "winapi 0.3.4 (registry+https://github.com/rust-lang/crates.io-index)", 980 | ] 981 | 982 | [[package]] 983 | name = "string" 984 | version = "0.1.1" 985 | source = "registry+https://github.com/rust-lang/crates.io-index" 986 | 987 | [[package]] 988 | name = "syn" 989 | version = "0.11.11" 990 | source = "registry+https://github.com/rust-lang/crates.io-index" 991 | dependencies = [ 992 | "quote 0.3.15 (registry+https://github.com/rust-lang/crates.io-index)", 993 | "synom 0.11.3 (registry+https://github.com/rust-lang/crates.io-index)", 994 | "unicode-xid 0.0.4 (registry+https://github.com/rust-lang/crates.io-index)", 995 | ] 996 | 997 | [[package]] 998 | name = "syn" 999 | version = "0.14.9" 1000 | source = "registry+https://github.com/rust-lang/crates.io-index" 1001 | dependencies = [ 1002 | "proc-macro2 0.4.19 (registry+https://github.com/rust-lang/crates.io-index)", 1003 | "quote 0.6.8 (registry+https://github.com/rust-lang/crates.io-index)", 1004 | "unicode-xid 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)", 1005 | ] 1006 | 1007 | [[package]] 1008 | name = "synom" 1009 | version = "0.11.3" 1010 | source = "registry+https://github.com/rust-lang/crates.io-index" 1011 | dependencies = [ 1012 | "unicode-xid 0.0.4 (registry+https://github.com/rust-lang/crates.io-index)", 1013 | ] 1014 | 1015 | [[package]] 1016 | name = "synstructure" 1017 | version = "0.9.0" 1018 | source = "registry+https://github.com/rust-lang/crates.io-index" 1019 | dependencies = [ 1020 | "proc-macro2 0.4.19 (registry+https://github.com/rust-lang/crates.io-index)", 1021 | "quote 0.6.8 (registry+https://github.com/rust-lang/crates.io-index)", 1022 | "syn 0.14.9 (registry+https://github.com/rust-lang/crates.io-index)", 1023 | "unicode-xid 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)", 1024 | ] 1025 | 1026 | [[package]] 1027 | name = "tempfile" 1028 | version = "3.0.4" 1029 | source = "registry+https://github.com/rust-lang/crates.io-index" 1030 | dependencies = [ 1031 | "cfg-if 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)", 1032 | "libc 0.2.43 (registry+https://github.com/rust-lang/crates.io-index)", 1033 | "rand 0.5.5 (registry+https://github.com/rust-lang/crates.io-index)", 1034 | "redox_syscall 0.1.40 (registry+https://github.com/rust-lang/crates.io-index)", 1035 | "remove_dir_all 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)", 1036 | "winapi 0.3.4 (registry+https://github.com/rust-lang/crates.io-index)", 1037 | ] 1038 | 1039 | [[package]] 1040 | name = "termcolor" 1041 | version = "0.3.6" 1042 | source = "registry+https://github.com/rust-lang/crates.io-index" 1043 | dependencies = [ 1044 | "wincolor 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)", 1045 | ] 1046 | 1047 | [[package]] 1048 | name = "termion" 1049 | version = "1.5.1" 1050 | source = "registry+https://github.com/rust-lang/crates.io-index" 1051 | dependencies = [ 1052 | "libc 0.2.43 (registry+https://github.com/rust-lang/crates.io-index)", 1053 | "redox_syscall 0.1.40 (registry+https://github.com/rust-lang/crates.io-index)", 1054 | "redox_termios 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", 1055 | ] 1056 | 1057 | [[package]] 1058 | name = "thread_local" 1059 | version = "0.3.5" 1060 | source = "registry+https://github.com/rust-lang/crates.io-index" 1061 | dependencies = [ 1062 | "lazy_static 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)", 1063 | "unreachable 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)", 1064 | ] 1065 | 1066 | [[package]] 1067 | name = "time" 1068 | version = "0.1.39" 1069 | source = "registry+https://github.com/rust-lang/crates.io-index" 1070 | dependencies = [ 1071 | "libc 0.2.43 (registry+https://github.com/rust-lang/crates.io-index)", 1072 | "redox_syscall 0.1.40 (registry+https://github.com/rust-lang/crates.io-index)", 1073 | "winapi 0.3.4 (registry+https://github.com/rust-lang/crates.io-index)", 1074 | ] 1075 | 1076 | [[package]] 1077 | name = "tokio" 1078 | version = "0.1.8" 1079 | source = "registry+https://github.com/rust-lang/crates.io-index" 1080 | dependencies = [ 1081 | "futures 0.1.24 (registry+https://github.com/rust-lang/crates.io-index)", 1082 | "mio 0.6.16 (registry+https://github.com/rust-lang/crates.io-index)", 1083 | "tokio-codec 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)", 1084 | "tokio-current-thread 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", 1085 | "tokio-executor 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)", 1086 | "tokio-fs 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)", 1087 | "tokio-io 0.1.8 (registry+https://github.com/rust-lang/crates.io-index)", 1088 | "tokio-reactor 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)", 1089 | "tokio-tcp 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", 1090 | "tokio-threadpool 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)", 1091 | "tokio-timer 0.2.6 (registry+https://github.com/rust-lang/crates.io-index)", 1092 | "tokio-udp 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)", 1093 | "tokio-uds 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)", 1094 | ] 1095 | 1096 | [[package]] 1097 | name = "tokio-codec" 1098 | version = "0.1.0" 1099 | source = "registry+https://github.com/rust-lang/crates.io-index" 1100 | dependencies = [ 1101 | "bytes 0.4.10 (registry+https://github.com/rust-lang/crates.io-index)", 1102 | "futures 0.1.24 (registry+https://github.com/rust-lang/crates.io-index)", 1103 | "tokio-io 0.1.8 (registry+https://github.com/rust-lang/crates.io-index)", 1104 | ] 1105 | 1106 | [[package]] 1107 | name = "tokio-current-thread" 1108 | version = "0.1.1" 1109 | source = "registry+https://github.com/rust-lang/crates.io-index" 1110 | dependencies = [ 1111 | "futures 0.1.24 (registry+https://github.com/rust-lang/crates.io-index)", 1112 | "tokio-executor 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)", 1113 | ] 1114 | 1115 | [[package]] 1116 | name = "tokio-executor" 1117 | version = "0.1.4" 1118 | source = "registry+https://github.com/rust-lang/crates.io-index" 1119 | dependencies = [ 1120 | "futures 0.1.24 (registry+https://github.com/rust-lang/crates.io-index)", 1121 | ] 1122 | 1123 | [[package]] 1124 | name = "tokio-fs" 1125 | version = "0.1.3" 1126 | source = "registry+https://github.com/rust-lang/crates.io-index" 1127 | dependencies = [ 1128 | "futures 0.1.24 (registry+https://github.com/rust-lang/crates.io-index)", 1129 | "tokio-io 0.1.8 (registry+https://github.com/rust-lang/crates.io-index)", 1130 | "tokio-threadpool 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)", 1131 | ] 1132 | 1133 | [[package]] 1134 | name = "tokio-io" 1135 | version = "0.1.8" 1136 | source = "registry+https://github.com/rust-lang/crates.io-index" 1137 | dependencies = [ 1138 | "bytes 0.4.10 (registry+https://github.com/rust-lang/crates.io-index)", 1139 | "futures 0.1.24 (registry+https://github.com/rust-lang/crates.io-index)", 1140 | "log 0.4.5 (registry+https://github.com/rust-lang/crates.io-index)", 1141 | ] 1142 | 1143 | [[package]] 1144 | name = "tokio-reactor" 1145 | version = "0.1.3" 1146 | source = "registry+https://github.com/rust-lang/crates.io-index" 1147 | dependencies = [ 1148 | "futures 0.1.24 (registry+https://github.com/rust-lang/crates.io-index)", 1149 | "log 0.4.5 (registry+https://github.com/rust-lang/crates.io-index)", 1150 | "mio 0.6.16 (registry+https://github.com/rust-lang/crates.io-index)", 1151 | "slab 0.4.1 (registry+https://github.com/rust-lang/crates.io-index)", 1152 | "tokio-executor 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)", 1153 | "tokio-io 0.1.8 (registry+https://github.com/rust-lang/crates.io-index)", 1154 | ] 1155 | 1156 | [[package]] 1157 | name = "tokio-tcp" 1158 | version = "0.1.1" 1159 | source = "registry+https://github.com/rust-lang/crates.io-index" 1160 | dependencies = [ 1161 | "bytes 0.4.10 (registry+https://github.com/rust-lang/crates.io-index)", 1162 | "futures 0.1.24 (registry+https://github.com/rust-lang/crates.io-index)", 1163 | "iovec 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)", 1164 | "mio 0.6.16 (registry+https://github.com/rust-lang/crates.io-index)", 1165 | "tokio-io 0.1.8 (registry+https://github.com/rust-lang/crates.io-index)", 1166 | "tokio-reactor 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)", 1167 | ] 1168 | 1169 | [[package]] 1170 | name = "tokio-threadpool" 1171 | version = "0.1.6" 1172 | source = "registry+https://github.com/rust-lang/crates.io-index" 1173 | dependencies = [ 1174 | "crossbeam-deque 0.6.1 (registry+https://github.com/rust-lang/crates.io-index)", 1175 | "crossbeam-utils 0.5.0 (registry+https://github.com/rust-lang/crates.io-index)", 1176 | "futures 0.1.24 (registry+https://github.com/rust-lang/crates.io-index)", 1177 | "log 0.4.5 (registry+https://github.com/rust-lang/crates.io-index)", 1178 | "num_cpus 1.8.0 (registry+https://github.com/rust-lang/crates.io-index)", 1179 | "rand 0.5.5 (registry+https://github.com/rust-lang/crates.io-index)", 1180 | "tokio-executor 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)", 1181 | ] 1182 | 1183 | [[package]] 1184 | name = "tokio-timer" 1185 | version = "0.2.6" 1186 | source = "registry+https://github.com/rust-lang/crates.io-index" 1187 | dependencies = [ 1188 | "crossbeam-utils 0.5.0 (registry+https://github.com/rust-lang/crates.io-index)", 1189 | "futures 0.1.24 (registry+https://github.com/rust-lang/crates.io-index)", 1190 | "slab 0.4.1 (registry+https://github.com/rust-lang/crates.io-index)", 1191 | "tokio-executor 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)", 1192 | ] 1193 | 1194 | [[package]] 1195 | name = "tokio-udp" 1196 | version = "0.1.2" 1197 | source = "registry+https://github.com/rust-lang/crates.io-index" 1198 | dependencies = [ 1199 | "bytes 0.4.10 (registry+https://github.com/rust-lang/crates.io-index)", 1200 | "futures 0.1.24 (registry+https://github.com/rust-lang/crates.io-index)", 1201 | "log 0.4.5 (registry+https://github.com/rust-lang/crates.io-index)", 1202 | "mio 0.6.16 (registry+https://github.com/rust-lang/crates.io-index)", 1203 | "tokio-codec 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)", 1204 | "tokio-io 0.1.8 (registry+https://github.com/rust-lang/crates.io-index)", 1205 | "tokio-reactor 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)", 1206 | ] 1207 | 1208 | [[package]] 1209 | name = "tokio-uds" 1210 | version = "0.2.1" 1211 | source = "registry+https://github.com/rust-lang/crates.io-index" 1212 | dependencies = [ 1213 | "bytes 0.4.10 (registry+https://github.com/rust-lang/crates.io-index)", 1214 | "futures 0.1.24 (registry+https://github.com/rust-lang/crates.io-index)", 1215 | "iovec 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)", 1216 | "libc 0.2.43 (registry+https://github.com/rust-lang/crates.io-index)", 1217 | "log 0.4.5 (registry+https://github.com/rust-lang/crates.io-index)", 1218 | "mio 0.6.16 (registry+https://github.com/rust-lang/crates.io-index)", 1219 | "mio-uds 0.6.7 (registry+https://github.com/rust-lang/crates.io-index)", 1220 | "tokio-io 0.1.8 (registry+https://github.com/rust-lang/crates.io-index)", 1221 | "tokio-reactor 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)", 1222 | ] 1223 | 1224 | [[package]] 1225 | name = "trust-dns" 1226 | version = "0.14.0" 1227 | source = "registry+https://github.com/rust-lang/crates.io-index" 1228 | dependencies = [ 1229 | "chrono 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)", 1230 | "data-encoding 2.1.1 (registry+https://github.com/rust-lang/crates.io-index)", 1231 | "data-encoding-macro 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", 1232 | "error-chain 0.1.12 (registry+https://github.com/rust-lang/crates.io-index)", 1233 | "futures 0.1.24 (registry+https://github.com/rust-lang/crates.io-index)", 1234 | "lazy_static 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)", 1235 | "log 0.4.5 (registry+https://github.com/rust-lang/crates.io-index)", 1236 | "radix_trie 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)", 1237 | "rand 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)", 1238 | "tokio 0.1.8 (registry+https://github.com/rust-lang/crates.io-index)", 1239 | "tokio-tcp 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", 1240 | "trust-dns-proto 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)", 1241 | ] 1242 | 1243 | [[package]] 1244 | name = "trust-dns-proto" 1245 | version = "0.4.0" 1246 | source = "registry+https://github.com/rust-lang/crates.io-index" 1247 | dependencies = [ 1248 | "byteorder 1.2.1 (registry+https://github.com/rust-lang/crates.io-index)", 1249 | "data-encoding 2.1.1 (registry+https://github.com/rust-lang/crates.io-index)", 1250 | "error-chain 0.1.12 (registry+https://github.com/rust-lang/crates.io-index)", 1251 | "futures 0.1.24 (registry+https://github.com/rust-lang/crates.io-index)", 1252 | "idna 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)", 1253 | "lazy_static 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)", 1254 | "log 0.4.5 (registry+https://github.com/rust-lang/crates.io-index)", 1255 | "rand 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)", 1256 | "smallvec 0.6.5 (registry+https://github.com/rust-lang/crates.io-index)", 1257 | "socket2 0.3.8 (registry+https://github.com/rust-lang/crates.io-index)", 1258 | "tokio-executor 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)", 1259 | "tokio-io 0.1.8 (registry+https://github.com/rust-lang/crates.io-index)", 1260 | "tokio-reactor 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)", 1261 | "tokio-tcp 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", 1262 | "tokio-timer 0.2.6 (registry+https://github.com/rust-lang/crates.io-index)", 1263 | "tokio-udp 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)", 1264 | "url 1.6.0 (registry+https://github.com/rust-lang/crates.io-index)", 1265 | ] 1266 | 1267 | [[package]] 1268 | name = "try-lock" 1269 | version = "0.2.2" 1270 | source = "registry+https://github.com/rust-lang/crates.io-index" 1271 | 1272 | [[package]] 1273 | name = "ucd-util" 1274 | version = "0.1.1" 1275 | source = "registry+https://github.com/rust-lang/crates.io-index" 1276 | 1277 | [[package]] 1278 | name = "unicase" 1279 | version = "1.4.2" 1280 | source = "registry+https://github.com/rust-lang/crates.io-index" 1281 | dependencies = [ 1282 | "version_check 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)", 1283 | ] 1284 | 1285 | [[package]] 1286 | name = "unicase" 1287 | version = "2.1.0" 1288 | source = "registry+https://github.com/rust-lang/crates.io-index" 1289 | dependencies = [ 1290 | "version_check 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)", 1291 | ] 1292 | 1293 | [[package]] 1294 | name = "unicode-bidi" 1295 | version = "0.3.4" 1296 | source = "registry+https://github.com/rust-lang/crates.io-index" 1297 | dependencies = [ 1298 | "matches 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)", 1299 | ] 1300 | 1301 | [[package]] 1302 | name = "unicode-normalization" 1303 | version = "0.1.5" 1304 | source = "registry+https://github.com/rust-lang/crates.io-index" 1305 | 1306 | [[package]] 1307 | name = "unicode-xid" 1308 | version = "0.0.4" 1309 | source = "registry+https://github.com/rust-lang/crates.io-index" 1310 | 1311 | [[package]] 1312 | name = "unicode-xid" 1313 | version = "0.1.0" 1314 | source = "registry+https://github.com/rust-lang/crates.io-index" 1315 | 1316 | [[package]] 1317 | name = "unreachable" 1318 | version = "1.0.0" 1319 | source = "registry+https://github.com/rust-lang/crates.io-index" 1320 | dependencies = [ 1321 | "void 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)", 1322 | ] 1323 | 1324 | [[package]] 1325 | name = "url" 1326 | version = "1.6.0" 1327 | source = "registry+https://github.com/rust-lang/crates.io-index" 1328 | dependencies = [ 1329 | "idna 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)", 1330 | "matches 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)", 1331 | "percent-encoding 1.0.1 (registry+https://github.com/rust-lang/crates.io-index)", 1332 | ] 1333 | 1334 | [[package]] 1335 | name = "utf8-ranges" 1336 | version = "1.0.0" 1337 | source = "registry+https://github.com/rust-lang/crates.io-index" 1338 | 1339 | [[package]] 1340 | name = "uuid" 1341 | version = "0.7.1" 1342 | source = "registry+https://github.com/rust-lang/crates.io-index" 1343 | dependencies = [ 1344 | "rand 0.5.5 (registry+https://github.com/rust-lang/crates.io-index)", 1345 | ] 1346 | 1347 | [[package]] 1348 | name = "vcpkg" 1349 | version = "0.2.2" 1350 | source = "registry+https://github.com/rust-lang/crates.io-index" 1351 | 1352 | [[package]] 1353 | name = "version_check" 1354 | version = "0.1.3" 1355 | source = "registry+https://github.com/rust-lang/crates.io-index" 1356 | 1357 | [[package]] 1358 | name = "void" 1359 | version = "1.0.2" 1360 | source = "registry+https://github.com/rust-lang/crates.io-index" 1361 | 1362 | [[package]] 1363 | name = "want" 1364 | version = "0.0.6" 1365 | source = "registry+https://github.com/rust-lang/crates.io-index" 1366 | dependencies = [ 1367 | "futures 0.1.24 (registry+https://github.com/rust-lang/crates.io-index)", 1368 | "log 0.4.5 (registry+https://github.com/rust-lang/crates.io-index)", 1369 | "try-lock 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)", 1370 | ] 1371 | 1372 | [[package]] 1373 | name = "winapi" 1374 | version = "0.2.8" 1375 | source = "registry+https://github.com/rust-lang/crates.io-index" 1376 | 1377 | [[package]] 1378 | name = "winapi" 1379 | version = "0.3.4" 1380 | source = "registry+https://github.com/rust-lang/crates.io-index" 1381 | dependencies = [ 1382 | "winapi-i686-pc-windows-gnu 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)", 1383 | "winapi-x86_64-pc-windows-gnu 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)", 1384 | ] 1385 | 1386 | [[package]] 1387 | name = "winapi-build" 1388 | version = "0.1.1" 1389 | source = "registry+https://github.com/rust-lang/crates.io-index" 1390 | 1391 | [[package]] 1392 | name = "winapi-i686-pc-windows-gnu" 1393 | version = "0.4.0" 1394 | source = "registry+https://github.com/rust-lang/crates.io-index" 1395 | 1396 | [[package]] 1397 | name = "winapi-x86_64-pc-windows-gnu" 1398 | version = "0.4.0" 1399 | source = "registry+https://github.com/rust-lang/crates.io-index" 1400 | 1401 | [[package]] 1402 | name = "wincolor" 1403 | version = "0.1.6" 1404 | source = "registry+https://github.com/rust-lang/crates.io-index" 1405 | dependencies = [ 1406 | "winapi 0.3.4 (registry+https://github.com/rust-lang/crates.io-index)", 1407 | ] 1408 | 1409 | [[package]] 1410 | name = "ws2_32-sys" 1411 | version = "0.2.1" 1412 | source = "registry+https://github.com/rust-lang/crates.io-index" 1413 | dependencies = [ 1414 | "winapi 0.2.8 (registry+https://github.com/rust-lang/crates.io-index)", 1415 | "winapi-build 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", 1416 | ] 1417 | 1418 | [metadata] 1419 | "checksum adler32 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)" = "6cbd0b9af8587c72beadc9f72d35b9fbb070982c9e6203e46e93f10df25f8f45" 1420 | "checksum aho-corasick 0.6.4 (registry+https://github.com/rust-lang/crates.io-index)" = "d6531d44de723825aa81398a6415283229725a00fa30713812ab9323faa82fc4" 1421 | "checksum arrayvec 0.4.7 (registry+https://github.com/rust-lang/crates.io-index)" = "a1e964f9e24d588183fcb43503abda40d288c8657dfc27311516ce2f05675aef" 1422 | "checksum atty 0.2.8 (registry+https://github.com/rust-lang/crates.io-index)" = "af80143d6f7608d746df1520709e5d141c96f240b0e62b0aa41bdfb53374d9d4" 1423 | "checksum backtrace 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)" = "346d7644f0b5f9bc73082d3b2236b69a05fd35cce0cfa3724e184e6a5c9e2a2f" 1424 | "checksum backtrace 0.3.5 (registry+https://github.com/rust-lang/crates.io-index)" = "ebbbf59b1c43eefa8c3ede390fcc36820b4999f7914104015be25025e0d62af2" 1425 | "checksum backtrace-sys 0.1.16 (registry+https://github.com/rust-lang/crates.io-index)" = "44585761d6161b0f57afc49482ab6bd067e4edef48c12a152c237eb0203f7661" 1426 | "checksum base64 0.9.0 (registry+https://github.com/rust-lang/crates.io-index)" = "229d032f1a99302697f10b27167ae6d03d49d032e6a8e2550e8d3fc13356d2b4" 1427 | "checksum bitflags 1.0.1 (registry+https://github.com/rust-lang/crates.io-index)" = "b3c30d3802dfb7281680d6285f2ccdaa8c2d8fee41f93805dba5c4cf50dc23cf" 1428 | "checksum build_const 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)" = "e90dc84f5e62d2ebe7676b83c22d33b6db8bd27340fb6ffbff0a364efa0cb9c9" 1429 | "checksum byteorder 1.2.1 (registry+https://github.com/rust-lang/crates.io-index)" = "652805b7e73fada9d85e9a6682a4abd490cb52d96aeecc12e33a0de34dfd0d23" 1430 | "checksum bytes 0.4.10 (registry+https://github.com/rust-lang/crates.io-index)" = "0ce55bd354b095246fc34caf4e9e242f5297a7fd938b090cadfea6eee614aa62" 1431 | "checksum cc 1.0.4 (registry+https://github.com/rust-lang/crates.io-index)" = "deaf9ec656256bb25b404c51ef50097207b9cbb29c933d31f92cae5a8a0ffee0" 1432 | "checksum cfg-if 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)" = "d4c819a1287eb618df47cc647173c5c4c66ba19d888a6e50d605672aed3140de" 1433 | "checksum chrono 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)" = "7c20ebe0b2b08b0aeddba49c609fe7957ba2e33449882cb186a180bc60682fa9" 1434 | "checksum cloudabi 0.0.3 (registry+https://github.com/rust-lang/crates.io-index)" = "ddfc5b9aa5d4507acaf872de71051dfd0e309860e88966e1051e462a077aac4f" 1435 | "checksum core-foundation 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)" = "286e0b41c3a20da26536c6000a280585d519fd07b3956b43aed8a79e9edce980" 1436 | "checksum core-foundation-sys 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)" = "716c271e8613ace48344f723b60b900a93150271e5be206212d052bbc0883efa" 1437 | "checksum crc 1.7.0 (registry+https://github.com/rust-lang/crates.io-index)" = "bd5d02c0aac6bd68393ed69e00bbc2457f3e89075c6349db7189618dc4ddc1d7" 1438 | "checksum crossbeam-deque 0.6.1 (registry+https://github.com/rust-lang/crates.io-index)" = "3486aefc4c0487b9cb52372c97df0a48b8c249514af1ee99703bf70d2f2ceda1" 1439 | "checksum crossbeam-epoch 0.5.2 (registry+https://github.com/rust-lang/crates.io-index)" = "30fecfcac6abfef8771151f8be4abc9e4edc112c2bcb233314cafde2680536e9" 1440 | "checksum crossbeam-utils 0.5.0 (registry+https://github.com/rust-lang/crates.io-index)" = "677d453a17e8bd2b913fa38e8b9cf04bcdbb5be790aa294f2389661d72036015" 1441 | "checksum data-encoding 2.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "67df0571a74bf0d97fb8b2ed22abdd9a48475c96bd327db968b7d9cace99655e" 1442 | "checksum data-encoding-macro 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "05d74fe5b9e438951801efbc8c2acca091f70008eebd6edef061f89105aa8cd7" 1443 | "checksum data-encoding-macro-internal 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "b9f31cd0086d3b61c74c6d5a678e47aa3ac8b0c648dfc9165f8f97ccf1925cf1" 1444 | "checksum dbghelp-sys 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)" = "97590ba53bcb8ac28279161ca943a924d1fd4a8fb3fa63302591647c4fc5b850" 1445 | "checksum dtoa 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)" = "09c3753c3db574d215cba4ea76018483895d7bff25a31b49ba45db21c48e50ab" 1446 | "checksum encoding_rs 0.8.6 (registry+https://github.com/rust-lang/crates.io-index)" = "2a91912d6f37c6a8fef8a2316a862542d036f13c923ad518b5aca7bcaac7544c" 1447 | "checksum endian-type 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)" = "c34f04666d835ff5d62e058c3995147c06f42fe86ff053337632bca83e42702d" 1448 | "checksum env_logger 0.5.6 (registry+https://github.com/rust-lang/crates.io-index)" = "0561146661ae44c579e993456bc76d11ce1e0c7d745e57b2fa7146b6e49fa2ad" 1449 | "checksum error-chain 0.1.12 (registry+https://github.com/rust-lang/crates.io-index)" = "faa976b4fd2e4c2b2f3f486874b19e61944d3de3de8b61c9fcf835d583871bcc" 1450 | "checksum failure 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)" = "7efb22686e4a466b1ec1a15c2898f91fa9cb340452496dca654032de20ff95b9" 1451 | "checksum failure_derive 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)" = "946d0e98a50d9831f5d589038d2ca7f8f455b1c21028c0db0e84116a12696426" 1452 | "checksum fnv 1.0.6 (registry+https://github.com/rust-lang/crates.io-index)" = "2fad85553e09a6f881f739c29f0b00b0f01357c743266d478b68951ce23285f3" 1453 | "checksum foreign-types 0.3.2 (registry+https://github.com/rust-lang/crates.io-index)" = "f6f339eb8adc052cd2ca78910fda869aefa38d22d5cb648e6485e4d3fc06f3b1" 1454 | "checksum foreign-types-shared 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "00b0228411908ca8685dba7fc2cdd70ec9990a6e753e89b6ac91a84c40fbaf4b" 1455 | "checksum fuchsia-zircon 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)" = "2e9763c69ebaae630ba35f74888db465e49e259ba1bc0eda7d06f4a067615d82" 1456 | "checksum fuchsia-zircon-sys 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)" = "3dcaa9ae7725d12cdb85b3ad99a434db70b468c09ded17e012d86b5c1010f7a7" 1457 | "checksum futures 0.1.24 (registry+https://github.com/rust-lang/crates.io-index)" = "0c84b40c7e2de99ffd70602db314a7a8c26b2b3d830e6f7f7a142a8860ab3ca4" 1458 | "checksum futures-cpupool 0.1.8 (registry+https://github.com/rust-lang/crates.io-index)" = "ab90cde24b3319636588d0c35fe03b1333857621051837ed769faefb4c2162e4" 1459 | "checksum h2 0.1.12 (registry+https://github.com/rust-lang/crates.io-index)" = "a27e7ed946e8335bdf9a191bc1b9b14a03ba822d013d2f58437f4fabcbd7fc2c" 1460 | "checksum http 0.1.13 (registry+https://github.com/rust-lang/crates.io-index)" = "24f58e8c2d8e886055c3ead7b28793e1455270b5fb39650984c224bc538ba581" 1461 | "checksum httparse 1.2.4 (registry+https://github.com/rust-lang/crates.io-index)" = "c2f407128745b78abc95c0ffbe4e5d37427fdc0d45470710cfef8c44522a2e37" 1462 | "checksum humantime 1.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "0484fda3e7007f2a4a0d9c3a703ca38c71c54c55602ce4660c419fd32e188c9e" 1463 | "checksum hyper 0.12.10 (registry+https://github.com/rust-lang/crates.io-index)" = "529d00e4c998cced1a15ffd53bbe203917b39ed6071281c16184ab0014ca6ff3" 1464 | "checksum hyper-tls 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)" = "caaee4dea92794a9e697038bd401e264307d1f22c883dbcb6f6618ba0d3b3bd3" 1465 | "checksum idna 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)" = "014b298351066f1512874135335d62a789ffe78a9974f94b43ed5621951eaf7d" 1466 | "checksum indexmap 1.0.1 (registry+https://github.com/rust-lang/crates.io-index)" = "08173ba1e906efb6538785a8844dd496f5d34f0a2d88038e95195172fc667220" 1467 | "checksum iovec 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)" = "dbe6e417e7d0975db6512b90796e8ce223145ac4e33c377e4a42882a0e88bb08" 1468 | "checksum itoa 0.3.4 (registry+https://github.com/rust-lang/crates.io-index)" = "8324a32baf01e2ae060e9de58ed0bc2320c9a2833491ee36cd3b4c414de4db8c" 1469 | "checksum itoa 0.4.3 (registry+https://github.com/rust-lang/crates.io-index)" = "1306f3464951f30e30d12373d31c79fbd52d236e5e896fd92f96ec7babbbe60b" 1470 | "checksum kernel32-sys 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)" = "7507624b29483431c0ba2d82aece8ca6cdba9382bff4ddd0f7490560c056098d" 1471 | "checksum lazy_static 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)" = "c8f31047daa365f19be14b47c29df4f7c3b581832407daabe6ae77397619237d" 1472 | "checksum lazycell 1.2.0 (registry+https://github.com/rust-lang/crates.io-index)" = "ddba4c30a78328befecec92fc94970e53b3ae385827d28620f0f5bb2493081e0" 1473 | "checksum libc 0.2.43 (registry+https://github.com/rust-lang/crates.io-index)" = "76e3a3ef172f1a0b9a9ff0dd1491ae5e6c948b94479a3021819ba7d860c8645d" 1474 | "checksum libflate 0.1.14 (registry+https://github.com/rust-lang/crates.io-index)" = "1a429b86418868c7ea91ee50e9170683f47fd9d94f5375438ec86ec3adb74e8e" 1475 | "checksum log 0.4.5 (registry+https://github.com/rust-lang/crates.io-index)" = "d4fcce5fa49cc693c312001daf1d13411c4a5283796bac1084299ea3e567113f" 1476 | "checksum matches 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)" = "100aabe6b8ff4e4a7e32c1c13523379802df0772b82466207ac25b013f193376" 1477 | "checksum memchr 2.0.1 (registry+https://github.com/rust-lang/crates.io-index)" = "796fba70e76612589ed2ce7f45282f5af869e0fdd7cc6199fa1aa1f1d591ba9d" 1478 | "checksum memoffset 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)" = "0f9dc261e2b62d7a622bf416ea3c5245cdd5d9a7fcc428c0d06804dfce1775b3" 1479 | "checksum mime 0.3.9 (registry+https://github.com/rust-lang/crates.io-index)" = "4b082692d3f6cf41b453af73839ce3dfc212c4411cbb2441dff80a716e38bd79" 1480 | "checksum mime_guess 2.0.0-alpha.6 (registry+https://github.com/rust-lang/crates.io-index)" = "30de2e4613efcba1ec63d8133f344076952090c122992a903359be5a4f99c3ed" 1481 | "checksum mio 0.6.16 (registry+https://github.com/rust-lang/crates.io-index)" = "71646331f2619b1026cc302f87a2b8b648d5c6dd6937846a16cc8ce0f347f432" 1482 | "checksum mio-uds 0.6.7 (registry+https://github.com/rust-lang/crates.io-index)" = "966257a94e196b11bb43aca423754d87429960a768de9414f3691d6957abf125" 1483 | "checksum miow 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)" = "8c1f2f3b1cf331de6896aabf6e9d55dca90356cc9960cca7eaaf408a355ae919" 1484 | "checksum native-tls 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)" = "8b0a7bd714e83db15676d31caf968ad7318e9cc35f93c85a90231c8f22867549" 1485 | "checksum net2 0.2.33 (registry+https://github.com/rust-lang/crates.io-index)" = "42550d9fb7b6684a6d404d9fa7250c2eb2646df731d1c06afc06dcee9e1bcf88" 1486 | "checksum nibble_vec 0.0.4 (registry+https://github.com/rust-lang/crates.io-index)" = "c8d77f3db4bce033f4d04db08079b2ef1c3d02b44e86f25d08886fafa7756ffa" 1487 | "checksum nodrop 0.1.12 (registry+https://github.com/rust-lang/crates.io-index)" = "9a2228dca57108069a5262f2ed8bd2e82496d2e074a06d1ccc7ce1687b6ae0a2" 1488 | "checksum num 0.1.41 (registry+https://github.com/rust-lang/crates.io-index)" = "cc4083e14b542ea3eb9b5f33ff48bd373a92d78687e74f4cc0a30caeb754f0ca" 1489 | "checksum num-integer 0.1.35 (registry+https://github.com/rust-lang/crates.io-index)" = "d1452e8b06e448a07f0e6ebb0bb1d92b8890eea63288c0b627331d53514d0fba" 1490 | "checksum num-iter 0.1.34 (registry+https://github.com/rust-lang/crates.io-index)" = "7485fcc84f85b4ecd0ea527b14189281cf27d60e583ae65ebc9c088b13dffe01" 1491 | "checksum num-traits 0.1.42 (registry+https://github.com/rust-lang/crates.io-index)" = "9936036cc70fe4a8b2d338ab665900323290efb03983c86cbe235ae800ad8017" 1492 | "checksum num_cpus 1.8.0 (registry+https://github.com/rust-lang/crates.io-index)" = "c51a3322e4bca9d212ad9a158a02abc6934d005490c054a2778df73a70aa0a30" 1493 | "checksum openssl 0.10.12 (registry+https://github.com/rust-lang/crates.io-index)" = "5e2e79eede055813a3ac52fb3915caf8e1c9da2dec1587871aec9f6f7b48508d" 1494 | "checksum openssl-probe 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)" = "77af24da69f9d9341038eba93a073b1fdaaa1b788221b00a69bce9e762cb32de" 1495 | "checksum openssl-sys 0.9.36 (registry+https://github.com/rust-lang/crates.io-index)" = "409d77eeb492a1aebd6eb322b2ee72ff7c7496b4434d98b3bf8be038755de65e" 1496 | "checksum percent-encoding 1.0.1 (registry+https://github.com/rust-lang/crates.io-index)" = "31010dd2e1ac33d5b46a5b413495239882813e0369f8ed8a5e266f173602f831" 1497 | "checksum phf 0.7.21 (registry+https://github.com/rust-lang/crates.io-index)" = "cb325642290f28ee14d8c6201159949a872f220c62af6e110a56ea914fbe42fc" 1498 | "checksum phf_codegen 0.7.21 (registry+https://github.com/rust-lang/crates.io-index)" = "d62594c0bb54c464f633175d502038177e90309daf2e0158be42ed5f023ce88f" 1499 | "checksum phf_generator 0.7.21 (registry+https://github.com/rust-lang/crates.io-index)" = "6b07ffcc532ccc85e3afc45865469bf5d9e4ef5bfcf9622e3cfe80c2d275ec03" 1500 | "checksum phf_shared 0.7.21 (registry+https://github.com/rust-lang/crates.io-index)" = "07e24b0ca9643bdecd0632f2b3da6b1b89bbb0030e0b992afc1113b23a7bc2f2" 1501 | "checksum pkg-config 0.3.9 (registry+https://github.com/rust-lang/crates.io-index)" = "3a8b4c6b8165cd1a1cd4b9b120978131389f64bdaf456435caa41e630edba903" 1502 | "checksum proc-macro-hack 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)" = "3ba8d4f9257b85eb6cdf13f055cea3190520aab1409ca2ab43493ea4820c25f0" 1503 | "checksum proc-macro-hack-impl 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)" = "d5cb6f960ad471404618e9817c0e5d10b1ae74cfdf01fab89ea0641fe7fb2892" 1504 | "checksum proc-macro2 0.4.19 (registry+https://github.com/rust-lang/crates.io-index)" = "ffe022fb8c8bd254524b0b3305906c1921fa37a84a644e29079a9e62200c3901" 1505 | "checksum quick-error 1.2.1 (registry+https://github.com/rust-lang/crates.io-index)" = "eda5fe9b71976e62bc81b781206aaa076401769b2143379d3eb2118388babac4" 1506 | "checksum quote 0.3.15 (registry+https://github.com/rust-lang/crates.io-index)" = "7a6e920b65c65f10b2ae65c831a81a073a89edd28c7cce89475bff467ab4167a" 1507 | "checksum quote 0.6.8 (registry+https://github.com/rust-lang/crates.io-index)" = "dd636425967c33af890042c483632d33fa7a18f19ad1d7ea72e8998c6ef8dea5" 1508 | "checksum radix_trie 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)" = "03d0d770481e8af620ca61d3d304bf014f965d7f78e923dc58545e6a545070a9" 1509 | "checksum rand 0.3.22 (registry+https://github.com/rust-lang/crates.io-index)" = "15a732abf9d20f0ad8eeb6f909bf6868722d9a06e1e50802b6a70351f40b4eb1" 1510 | "checksum rand 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)" = "eba5f8cb59cc50ed56be8880a5c7b496bfd9bd26394e176bc67884094145c2c5" 1511 | "checksum rand 0.5.5 (registry+https://github.com/rust-lang/crates.io-index)" = "e464cd887e869cddcae8792a4ee31d23c7edd516700695608f5b98c67ee0131c" 1512 | "checksum rand_core 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)" = "edecf0f94da5551fc9b492093e30b041a891657db7940ee221f9d2f66e82eef2" 1513 | "checksum redox_syscall 0.1.40 (registry+https://github.com/rust-lang/crates.io-index)" = "c214e91d3ecf43e9a4e41e578973adeb14b474f2bee858742d127af75a0112b1" 1514 | "checksum redox_termios 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "7e891cfe48e9100a70a3b6eb652fef28920c117d366339687bd5576160db0f76" 1515 | "checksum regex 0.2.10 (registry+https://github.com/rust-lang/crates.io-index)" = "aec3f58d903a7d2a9dc2bf0e41a746f4530e0cab6b615494e058f67a3ef947fb" 1516 | "checksum regex-syntax 0.5.3 (registry+https://github.com/rust-lang/crates.io-index)" = "b2550876c31dc914696a6c2e01cbce8afba79a93c8ae979d2fe051c0230b3756" 1517 | "checksum remove_dir_all 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)" = "3488ba1b9a2084d38645c4c08276a1752dcbf2c7130d74f1569681ad5d2799c5" 1518 | "checksum reqwest 0.9.1 (registry+https://github.com/rust-lang/crates.io-index)" = "c4265be4dad32ffa4be2cea9c8ecb5e096feca6b4ff024482bfc0f64b6019b2f" 1519 | "checksum rustc-demangle 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)" = "aee45432acc62f7b9a108cc054142dac51f979e69e71ddce7d6fc7adf29e817e" 1520 | "checksum rustc_version 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)" = "138e3e0acb6c9fb258b19b67cb8abd63c00679d2851805ea151465464fe9030a" 1521 | "checksum safemem 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)" = "e27a8b19b835f7aea908818e871f5cc3a5a186550c30773be987e155e8163d8f" 1522 | "checksum schannel 0.1.13 (registry+https://github.com/rust-lang/crates.io-index)" = "dc1fabf2a7b6483a141426e1afd09ad543520a77ac49bd03c286e7696ccfd77f" 1523 | "checksum scopeguard 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)" = "94258f53601af11e6a49f722422f6e3425c52b06245a5cf9bc09908b174f5e27" 1524 | "checksum security-framework 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)" = "697d3f3c23a618272ead9e1fb259c1411102b31c6af8b93f1d64cca9c3b0e8e0" 1525 | "checksum security-framework-sys 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)" = "ab01dfbe5756785b5b4d46e0289e5a18071dfa9a7c2b24213ea00b9ef9b665bf" 1526 | "checksum semver 0.9.0 (registry+https://github.com/rust-lang/crates.io-index)" = "1d7eb9ef2c18661902cc47e535f9bc51b78acd254da71d375c2f6720d9a40403" 1527 | "checksum semver-parser 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)" = "388a1df253eca08550bef6c72392cfe7c30914bf41df5269b68cbd6ff8f570a3" 1528 | "checksum serde 1.0.27 (registry+https://github.com/rust-lang/crates.io-index)" = "db99f3919e20faa51bb2996057f5031d8685019b5a06139b1ce761da671b8526" 1529 | "checksum serde_json 1.0.9 (registry+https://github.com/rust-lang/crates.io-index)" = "c9db7266c7d63a4c4b7fe8719656ccdd51acf1bed6124b174f933b009fb10bcb" 1530 | "checksum serde_urlencoded 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)" = "ce0fd303af908732989354c6f02e05e2e6d597152870f2c6990efb0577137480" 1531 | "checksum siphasher 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)" = "0df90a788073e8d0235a67e50441d47db7c8ad9debd91cbf43736a2a92d36537" 1532 | "checksum slab 0.4.1 (registry+https://github.com/rust-lang/crates.io-index)" = "5f9776d6b986f77b35c6cf846c11ad986ff128fe0b2b63a3628e3755e8d3102d" 1533 | "checksum smallvec 0.6.5 (registry+https://github.com/rust-lang/crates.io-index)" = "153ffa32fd170e9944f7e0838edf824a754ec4c1fc64746fcc9fe1f8fa602e5d" 1534 | "checksum socket2 0.3.8 (registry+https://github.com/rust-lang/crates.io-index)" = "c4d11a52082057d87cb5caa31ad812f4504b97ab44732cd8359df2e9ff9f48e7" 1535 | "checksum string 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "00caf261d6f90f588f8450b8e1230fa0d5be49ee6140fdfbcb55335aff350970" 1536 | "checksum syn 0.11.11 (registry+https://github.com/rust-lang/crates.io-index)" = "d3b891b9015c88c576343b9b3e41c2c11a51c219ef067b264bd9c8aa9b441dad" 1537 | "checksum syn 0.14.9 (registry+https://github.com/rust-lang/crates.io-index)" = "261ae9ecaa397c42b960649561949d69311f08eeaea86a65696e6e46517cf741" 1538 | "checksum synom 0.11.3 (registry+https://github.com/rust-lang/crates.io-index)" = "a393066ed9010ebaed60b9eafa373d4b1baac186dd7e008555b0f702b51945b6" 1539 | "checksum synstructure 0.9.0 (registry+https://github.com/rust-lang/crates.io-index)" = "85bb9b7550d063ea184027c9b8c20ac167cd36d3e06b3a40bceb9d746dc1a7b7" 1540 | "checksum tempfile 3.0.4 (registry+https://github.com/rust-lang/crates.io-index)" = "55c1195ef8513f3273d55ff59fe5da6940287a0d7a98331254397f464833675b" 1541 | "checksum termcolor 0.3.6 (registry+https://github.com/rust-lang/crates.io-index)" = "adc4587ead41bf016f11af03e55a624c06568b5a19db4e90fde573d805074f83" 1542 | "checksum termion 1.5.1 (registry+https://github.com/rust-lang/crates.io-index)" = "689a3bdfaab439fd92bc87df5c4c78417d3cbe537487274e9b0b2dce76e92096" 1543 | "checksum thread_local 0.3.5 (registry+https://github.com/rust-lang/crates.io-index)" = "279ef31c19ededf577bfd12dfae728040a21f635b06a24cd670ff510edd38963" 1544 | "checksum time 0.1.39 (registry+https://github.com/rust-lang/crates.io-index)" = "a15375f1df02096fb3317256ce2cee6a1f42fc84ea5ad5fc8c421cfe40c73098" 1545 | "checksum tokio 0.1.8 (registry+https://github.com/rust-lang/crates.io-index)" = "fbb6a6e9db2702097bfdfddcb09841211ad423b86c75b5ddaca1d62842ac492c" 1546 | "checksum tokio-codec 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "881e9645b81c2ce95fcb799ded2c29ffb9f25ef5bef909089a420e5961dd8ccb" 1547 | "checksum tokio-current-thread 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "8fdfb899688ac16f618076bd09215edbfda0fd5dfecb375b6942636cb31fa8a7" 1548 | "checksum tokio-executor 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)" = "84823b932d566bc3c6aa644df4ca36cb38593c50b7db06011fd4e12e31e4047e" 1549 | "checksum tokio-fs 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)" = "b5cbe4ca6e71cb0b62a66e4e6f53a8c06a6eefe46cc5f665ad6f274c9906f135" 1550 | "checksum tokio-io 0.1.8 (registry+https://github.com/rust-lang/crates.io-index)" = "8d6cc2de7725863c86ac71b0b9068476fec50834f055a243558ef1655bbd34cb" 1551 | "checksum tokio-reactor 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)" = "8703a5762ff6913510dc64272c714c4389ffd8c4b3cf602879b8bd14ff06b604" 1552 | "checksum tokio-tcp 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "5b4c329b47f071eb8a746040465fa751bd95e4716e98daef6a9b4e434c17d565" 1553 | "checksum tokio-threadpool 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)" = "a5758cecb6e0633cea5d563ac07c975e04961690b946b04fd84e7d6445a8f6af" 1554 | "checksum tokio-timer 0.2.6 (registry+https://github.com/rust-lang/crates.io-index)" = "d03fa701f9578a01b7014f106b47f0a363b4727a7f3f75d666e312ab7acbbf1c" 1555 | "checksum tokio-udp 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)" = "da941144b816d0dcda4db3a1ba87596e4df5e860a72b70783fe435891f80601c" 1556 | "checksum tokio-uds 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)" = "424c1ed15a0132251813ccea50640b224c809d6ceafb88154c1a8775873a0e89" 1557 | "checksum trust-dns 0.14.0 (registry+https://github.com/rust-lang/crates.io-index)" = "5a97b39064a4786506e855616a0f8869d461a1cb7449c6064a229eaea4e53b45" 1558 | "checksum trust-dns-proto 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)" = "32d7c204ee231f802aa821f9dc2195aa0d0269ef7e9f8c844208565c9e3981e4" 1559 | "checksum try-lock 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)" = "e604eb7b43c06650e854be16a2a03155743d3752dd1c943f6829e26b7a36e382" 1560 | "checksum ucd-util 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "fd2be2d6639d0f8fe6cdda291ad456e23629558d466e2789d2c3e9892bda285d" 1561 | "checksum unicase 1.4.2 (registry+https://github.com/rust-lang/crates.io-index)" = "7f4765f83163b74f957c797ad9253caf97f103fb064d3999aea9568d09fc8a33" 1562 | "checksum unicase 2.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "284b6d3db520d67fbe88fd778c21510d1b0ba4a551e5d0fbb023d33405f6de8a" 1563 | "checksum unicode-bidi 0.3.4 (registry+https://github.com/rust-lang/crates.io-index)" = "49f2bd0c6468a8230e1db229cff8029217cf623c767ea5d60bfbd42729ea54d5" 1564 | "checksum unicode-normalization 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)" = "51ccda9ef9efa3f7ef5d91e8f9b83bbe6955f9bf86aec89d5cce2c874625920f" 1565 | "checksum unicode-xid 0.0.4 (registry+https://github.com/rust-lang/crates.io-index)" = "8c1f860d7d29cf02cb2f3f359fd35991af3d30bac52c57d265a3c461074cb4dc" 1566 | "checksum unicode-xid 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "fc72304796d0818e357ead4e000d19c9c174ab23dc11093ac919054d20a6a7fc" 1567 | "checksum unreachable 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)" = "382810877fe448991dfc7f0dd6e3ae5d58088fd0ea5e35189655f84e6814fa56" 1568 | "checksum url 1.6.0 (registry+https://github.com/rust-lang/crates.io-index)" = "fa35e768d4daf1d85733418a49fb42e10d7f633e394fccab4ab7aba897053fe2" 1569 | "checksum utf8-ranges 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)" = "662fab6525a98beff2921d7f61a39e7d59e0b425ebc7d0d9e66d316e55124122" 1570 | "checksum uuid 0.7.1 (registry+https://github.com/rust-lang/crates.io-index)" = "dab5c5526c5caa3d106653401a267fed923e7046f35895ffcb5ca42db64942e6" 1571 | "checksum vcpkg 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)" = "9e0a7d8bed3178a8fb112199d466eeca9ed09a14ba8ad67718179b4fd5487d0b" 1572 | "checksum version_check 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)" = "6b772017e347561807c1aa192438c5fd74242a670a6cffacc40f2defd1dc069d" 1573 | "checksum void 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)" = "6a02e4885ed3bc0f2de90ea6dd45ebcbb66dacffe03547fadbb0eeae2770887d" 1574 | "checksum want 0.0.6 (registry+https://github.com/rust-lang/crates.io-index)" = "797464475f30ddb8830cc529aaaae648d581f99e2036a928877dfde027ddf6b3" 1575 | "checksum winapi 0.2.8 (registry+https://github.com/rust-lang/crates.io-index)" = "167dc9d6949a9b857f3451275e911c3f44255842c1f7a76f33c55103a909087a" 1576 | "checksum winapi 0.3.4 (registry+https://github.com/rust-lang/crates.io-index)" = "04e3bd221fcbe8a271359c04f21a76db7d0c6028862d1bb5512d85e1e2eb5bb3" 1577 | "checksum winapi-build 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "2d315eee3b34aca4797b2da6b13ed88266e6d612562a0c46390af8299fc699bc" 1578 | "checksum winapi-i686-pc-windows-gnu 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)" = "ac3b87c63620426dd9b991e5ce0329eff545bccbbb34f3be09ff6fb6ab51b7b6" 1579 | "checksum winapi-x86_64-pc-windows-gnu 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)" = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f" 1580 | "checksum wincolor 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)" = "eeb06499a3a4d44302791052df005d5232b927ed1a9658146d842165c4de7767" 1581 | "checksum ws2_32-sys 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)" = "d59cefebd0c892fa2dd6de581e937301d8552cb44489cdff035c6187cb63fa5e" 1582 | -------------------------------------------------------------------------------- /Cargo.toml: -------------------------------------------------------------------------------- 1 | [package] 2 | name = "dnsoverhttps" 3 | version = "0.6.0" 4 | description = "Resolve hostnames by sending DNS queries over HTTPS" 5 | authors = ["Jan-Erik Rediger "] 6 | 7 | readme = "README.md" 8 | license = "MIT" 9 | 10 | homepage = "https://github.com/badboy/dnsoverhttps" 11 | documentation = "https://docs.rs/dnsoverhttps" 12 | repository = "https://github.com/badboy/dnsoverhttps" 13 | 14 | include = [ 15 | "Cargo.toml", 16 | "README*", 17 | "LICENSE*", 18 | "src/**/*", 19 | "tests/**/*", 20 | "examples/**/*", 21 | ] 22 | 23 | [dependencies] 24 | reqwest = "0.9.1" 25 | trust-dns = "0.14.0" 26 | trust-dns-proto = "0.4.0" 27 | failure = "0.1.2" 28 | log = "0.4" 29 | env_logger = "0.5" 30 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | The MIT License (MIT) 2 | 3 | Copyright (c) 2018 Jan-Erik Rediger 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in 13 | all copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 21 | THE SOFTWARE. 22 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # dnsoverhttps - D'oh! 2 | 3 | [![crates.io](http://meritbadge.herokuapp.com/dnsoverhttps)](https://crates.io/crates/dnsoverhttps) 4 | 5 | Resolve hostnames by sending DNS queries over HTTPS. 6 | It uses `https://1.1.1.1` as the DNS resolver by default, hosted by Cloudflare. 7 | According to Cloudflare it is a privacy-first consumer DNS service. 8 | See for more information. 9 | 10 | Based on . 11 | 12 | ## Drawbacks 13 | 14 | * When specifing a URL, the hostname has to be specified as well for use in HTTP. 15 | The TLS Certificate received from the server is validated, but not checked for the correct hostname.. 16 | * Only handles A and AAAA records for now (IPv4 & IPv6, this implicitely handles CNAMES when they are resolved recursively) 17 | 18 | ## Example: Default resolver 19 | 20 | ```rust 21 | let addr = dnsoverhttps::resolve_host("example.com"); 22 | ``` 23 | 24 | ## Example: Custom resolver 25 | 26 | ```rust 27 | let client = dnsoverhttps::Client::from_url_with_hostname("https://172.217.21.110/experimental", "dns.google.com".to_string()).unwrap(); 28 | let addr = client.resolve_host("example.com"); 29 | ``` 30 | 31 | ## CLI Usage 32 | 33 | `dnsoverhttps` comes with a small CLI utility providing `host` functionality to resolve hostnames: 34 | 35 | ``` 36 | $ host example.com 37 | example.com has address 2606:2800:220:1:248:1893:25c8:1946 38 | example.com has address 93.184.216.34 39 | ``` 40 | 41 | To install: 42 | 43 | ``` 44 | cargo install dnsoverhttps 45 | ``` 46 | 47 | ## License 48 | 49 | MIT. See [LICENSE](LICENSE). 50 | -------------------------------------------------------------------------------- /src/bin/host.rs: -------------------------------------------------------------------------------- 1 | extern crate dnsoverhttps; 2 | extern crate env_logger; 3 | 4 | use dnsoverhttps::Client; 5 | 6 | fn main() { 7 | env_logger::init(); 8 | 9 | let mut args = std::env::args().skip(1); 10 | let name = match args.next() { 11 | Some(a) => a, 12 | None => { 13 | eprintln!("Usage: host hostname [DNS query url]"); 14 | eprintln!(); 15 | eprintln!("The DNS query URL defaults to https://1.1.1.1/dns-query"); 16 | ::std::process::exit(2); 17 | } 18 | }; 19 | 20 | let client = match args.next() { 21 | Some(a) => Client::from_url(&a).unwrap(), 22 | None => Client::default(), 23 | }; 24 | 25 | let addresses = match client.resolve_host(&name) { 26 | Ok(a) => a, 27 | Err(err) => { 28 | eprintln!("An error occured"); 29 | eprintln!("{}", err); 30 | ::std::process::exit(2); 31 | } 32 | }; 33 | 34 | if addresses.is_empty() { 35 | eprintln!("Host {} not found", name); 36 | ::std::process::exit(1); 37 | } 38 | 39 | for addr in addresses { 40 | println!("{} has address {}", name, addr); 41 | } 42 | } 43 | -------------------------------------------------------------------------------- /src/client.rs: -------------------------------------------------------------------------------- 1 | use std::net::IpAddr; 2 | use std::str::FromStr; 3 | 4 | use reqwest::{self, header, Url}; 5 | use trust_dns::op::{Message, Query}; 6 | use trust_dns::rr::{Name, RecordType}; 7 | use trust_dns::rr::RData::*; 8 | 9 | use error::Error; 10 | 11 | /// A DoH client 12 | /// 13 | /// It will use the configured DoH server to send all resolve queries to. 14 | /// 15 | /// ## Example 16 | /// 17 | /// ``` 18 | /// let client = dnsoverhttps::Client::from_url("https://1.1.1.1/dns-query").unwrap(); 19 | /// let addr = client.resolve_host("example.com"); 20 | /// ``` 21 | pub struct Client { 22 | url: Url, 23 | client: reqwest::Client, 24 | } 25 | 26 | impl Client { 27 | /// Create a new DoH client using the given query URL. 28 | /// The URL's host will be resolved using the system's resolver. 29 | /// The host will be queried using a `POST` request using the `application/dns-message` content-type for the body. 30 | pub fn from_url(url: &str) -> Result { 31 | trace!("New client with url '{}' (needs resolving)", url); 32 | let url = Url::from_str(url)?; 33 | 34 | let client = reqwest::Client::builder().build()?; 35 | 36 | Ok(Client { 37 | url: url, 38 | client: client, 39 | }) 40 | } 41 | 42 | /// Create a new DoH client using the given query URL and host. 43 | /// This should be used to bootstrap DoH resolving without the system's resolver. The URL can 44 | /// contain the host's IP and the hostname is used in the HTTP request. 45 | /// The host will be queried using a `POST` request using the `application/dns-message` content-type for the body. 46 | /// 47 | /// ## Caution 48 | /// This will disable hostname verification of the TLS server certificate. 49 | /// The certificate is still checked for validity. 50 | pub fn from_url_with_hostname(url: &str, host: String) -> Result { 51 | trace!("New client with url '{}' and host '{}'", url, host); 52 | let url = Url::from_str(url)?; 53 | 54 | let mut headers = header::HeaderMap::new(); 55 | headers.insert(header::HOST, header::HeaderValue::from_str(&host)?); 56 | let client = reqwest::Client::builder() 57 | .danger_accept_invalid_hostnames(true) 58 | .default_headers(headers) 59 | .build()?; 60 | 61 | Ok(Client { 62 | url: url, 63 | client: client, 64 | }) 65 | } 66 | 67 | /// Resolve the host specified by `host` as a list of `IpAddr`. 68 | /// 69 | /// This method queries the configured server over HTTPS for both IPv4 and IPv6 addresses. 70 | /// 71 | /// If the host cannot be found, the list will be empty. 72 | /// If any errors are encountered during the resolving, the error is returned. 73 | pub fn resolve_host(&self, host: &str) -> Result, Error> { 74 | trace!("Resolving '{}'", host); 75 | let mut ipv6 = resolve_host_family(&self.client, self.url.clone(), RecordType::AAAA, host)?; 76 | trace!("Found {} IPv6 addresses", ipv6.len()); 77 | let ipv4 = resolve_host_family(&self.client, self.url.clone(), RecordType::A, host)?; 78 | trace!("Found {} IPv4 addresses", ipv4.len()); 79 | 80 | ipv6.extend(ipv4); 81 | Ok(ipv6) 82 | } 83 | } 84 | 85 | fn resolve_host_family(client: &reqwest::Client, url: Url, af: RecordType, name: &str) -> Result, Error> { 86 | let qname = Name::from_str(name)?; 87 | let query = Query::query(qname, af); 88 | let mut msg = Message::new(); 89 | msg.set_recursion_desired(true); 90 | msg.add_query(query); 91 | 92 | let qbuf = msg.to_vec()?; 93 | 94 | let wireformat = "application/dns-message"; 95 | 96 | let mut resp = client.post(url) 97 | .header("content-type", wireformat) 98 | .header("accept", wireformat) 99 | .body(qbuf) 100 | .send()?; 101 | 102 | let mut body = Vec::new(); 103 | resp.copy_to(&mut body)?; 104 | trace!("Got response: {:?}", body); 105 | let msg = Message::from_vec(&body)?; 106 | 107 | let results = msg.answers() 108 | .iter() 109 | .map(|answer| answer.rdata()) 110 | .flat_map(|data| { 111 | match *data { 112 | A(ipv4) => Some(IpAddr::V4(ipv4)), 113 | AAAA(ipv6) => Some(IpAddr::V6(ipv6)), 114 | _ => None 115 | } 116 | }) 117 | .collect(); 118 | 119 | Ok(results) 120 | } 121 | 122 | impl Default for Client { 123 | fn default() -> Client { 124 | const DNS_QUERY_URL : &str = "https://1.1.1.1/dns-query"; 125 | 126 | Client::from_url(DNS_QUERY_URL).unwrap() 127 | } 128 | } 129 | -------------------------------------------------------------------------------- /src/error.rs: -------------------------------------------------------------------------------- 1 | use trust_dns_proto::error::ProtoError; 2 | use reqwest; 3 | 4 | #[derive(Fail, Debug)] 5 | pub enum Error { 6 | #[fail(display = "Failed to parse DNS protocol")] 7 | DnsProtoError, 8 | #[fail(display = "{}", _0)] 9 | Url(#[cause] reqwest::UrlError), 10 | #[fail(display = "{}", _0)] 11 | Reqwest(#[cause] reqwest::Error), 12 | #[fail(display = "{}", _0)] 13 | InvalidHeaderValue(#[cause] reqwest::header::InvalidHeaderValue), 14 | } 15 | 16 | impl From for Error { 17 | fn from(_error: ProtoError) -> Error { 18 | Error::DnsProtoError 19 | } 20 | } 21 | 22 | impl From for Error { 23 | fn from(error: reqwest::Error) -> Error { 24 | Error::Reqwest(error) 25 | } 26 | } 27 | 28 | impl From for Error { 29 | fn from(error: reqwest::UrlError) -> Error { 30 | Error::Url(error) 31 | } 32 | } 33 | 34 | impl From for Error { 35 | fn from(error: reqwest::header::InvalidHeaderValue) -> Error { 36 | Error::InvalidHeaderValue(error) 37 | } 38 | } 39 | -------------------------------------------------------------------------------- /src/lib.rs: -------------------------------------------------------------------------------- 1 | //! # dnsoverhttps - D'oh! 2 | //! 3 | //! Resolve hostnames by sending DNS queries over HTTPS. 4 | //! It uses `https://1.1.1.1` as the DNS resolver by default, hosted by Cloudflare. 5 | //! According to Cloudflare it is a privacy-first consumer DNS service. 6 | //! See for more information. 7 | //! 8 | //! Based on . 9 | //! 10 | //! ## Drawbacks 11 | //! 12 | //! * When specifing a URL, the hostname has to be specified as well for use in HTTP. 13 | //! The TLS Certificate received from the server is validated, but not checked for the correct hostname.. 14 | //! * Only handles A and AAAA records for now (IPv4 & IPv6, this implicitely handles CNAMES when they are resolved recursively) 15 | //! 16 | //! ## Example: Default resolver 17 | //! 18 | //! ``` 19 | //! let addr = dnsoverhttps::resolve_host("example.com"); 20 | //! ``` 21 | //! 22 | //! ## Example: Custom resolver 23 | //! 24 | //! ``` 25 | //! let client = dnsoverhttps::Client::from_url_with_hostname("https://172.217.21.110/experimental", "dns.google.com".to_string()).unwrap(); 26 | //! let addr = client.resolve_host("example.com"); 27 | //! ``` 28 | 29 | #![deny(missing_docs)] 30 | 31 | extern crate trust_dns; 32 | extern crate trust_dns_proto; 33 | extern crate reqwest; 34 | #[macro_use] 35 | extern crate failure; 36 | #[macro_use] 37 | extern crate log; 38 | 39 | use std::net::IpAddr; 40 | 41 | mod error; 42 | mod client; 43 | 44 | use error::Error; 45 | pub use client::Client; 46 | 47 | /// Resolve the host specified by `host` as a list of `IpAddr`. 48 | /// 49 | /// This method queries the pre-defined default server over HTTPS for both IPv4 and IPv6 addresses. 50 | /// 51 | /// If the host cannot be found, the list will be empty. 52 | /// If any errors are encountered during the resolving, the error is returned. 53 | /// 54 | /// ## Example 55 | /// 56 | /// ``` 57 | /// let addr = dnsoverhttps::resolve_host("example.com"); 58 | /// ``` 59 | pub fn resolve_host(host: &str) -> Result, Error> { 60 | Client::default().resolve_host(host) 61 | } 62 | -------------------------------------------------------------------------------- /tests/upstream_server.rs: -------------------------------------------------------------------------------- 1 | extern crate dnsoverhttps; 2 | 3 | use std::net::IpAddr; 4 | use dnsoverhttps::Client; 5 | 6 | const DOMAIN : &str = "fnordig.de"; 7 | 8 | fn valid_ips() -> Vec { 9 | vec![ 10 | "2a01:a700:4611::1fac:2a17".parse().unwrap(), 11 | "31.172.42.23".parse().unwrap(), 12 | ] 13 | } 14 | 15 | #[test] 16 | fn default() { 17 | let c = Client::default(); 18 | let addrs = c.resolve_host(DOMAIN).expect("hostname should be resolvable."); 19 | 20 | assert_eq!(valid_ips(), addrs); 21 | } 22 | 23 | #[test] 24 | fn oneoneoneone() { 25 | let c = Client::from_url("https://1.1.1.1/.well-known/dns-query") 26 | .expect("client should have been created from URL"); 27 | let addrs = c.resolve_host(DOMAIN).expect("hostname should be resolvable."); 28 | 29 | assert_eq!(valid_ips(), addrs); 30 | } 31 | 32 | #[test] 33 | fn cloudflare() { 34 | let c = Client::from_url("https://dns.cloudflare.com/.well-known/dns-query") 35 | .expect("client should have been created from URL"); 36 | let addrs = c.resolve_host(DOMAIN).expect("hostname should be resolvable."); 37 | 38 | assert_eq!(valid_ips(), addrs); 39 | } 40 | 41 | #[test] 42 | fn fnordig() { 43 | let c = Client::from_url("https://fnordig.de/dns-query") 44 | .expect("client should have been created from URL"); 45 | let addrs = c.resolve_host(DOMAIN).expect("hostname should be resolvable."); 46 | 47 | assert_eq!(valid_ips(), addrs); 48 | } 49 | 50 | #[test] 51 | fn cryptosx() { 52 | let c = Client::from_url("https://doh.crypto.sx/dns-query") 53 | .expect("client should have been created from URL"); 54 | let addrs = c.resolve_host(DOMAIN).expect("hostname should be resolvable."); 55 | 56 | assert_eq!(valid_ips(), addrs); 57 | } 58 | 59 | #[test] 60 | fn mozilla_cloudflare() { 61 | let c = Client::from_url("https://mozilla.cloudflare-dns.com/dns-query") 62 | .expect("client should have been created from URL"); 63 | let addrs = c.resolve_host(DOMAIN).expect("hostname should be resolvable."); 64 | 65 | assert_eq!(valid_ips(), addrs); 66 | } 67 | 68 | #[test] 69 | fn google() { 70 | let c = Client::from_url("https://dns.google.com/experimental") 71 | .expect("client should have been created from URL"); 72 | let addrs = c.resolve_host(DOMAIN).expect("hostname should be resolvable."); 73 | 74 | assert_eq!(valid_ips(), addrs); 75 | } 76 | --------------------------------------------------------------------------------