├── .gitignore ├── .idea ├── codeStyles │ └── Project.xml ├── kyo-rs.iml ├── markdown-navigator.xml ├── markdown-navigator │ └── profiles_settings.xml ├── misc.xml ├── modules.xml └── vcs.xml ├── Cargo.lock ├── Cargo.toml ├── LICENSE.txt ├── README.md ├── build.rs ├── resources ├── img │ ├── background.jpg │ ├── background.jpg.base64 │ └── button.svg ├── index.css ├── index.html ├── index.js └── manifest.xml └── src ├── cert.rs ├── hosts.rs ├── main.rs └── platform_utils ├── mod.rs ├── nix.rs └── win32.rs /.gitignore: -------------------------------------------------------------------------------- 1 | /target 2 | **/*.rs.bk 3 | -------------------------------------------------------------------------------- /.idea/codeStyles/Project.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 15 | 16 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | -------------------------------------------------------------------------------- /.idea/kyo-rs.iml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /.idea/markdown-navigator.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 36 | 37 | 59 | 60 | 61 | 62 | 63 | 64 | 65 | 66 | 67 | 68 | 69 | 70 | 71 | 72 | 73 | 74 | 75 | 76 | 77 | 78 | 79 | 80 | 81 | 82 | -------------------------------------------------------------------------------- /.idea/markdown-navigator/profiles_settings.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /.idea/misc.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 9 | 10 | 12 | -------------------------------------------------------------------------------- /.idea/modules.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /.idea/vcs.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /Cargo.lock: -------------------------------------------------------------------------------- 1 | [[package]] 2 | name = "adler32" 3 | version = "1.0.3" 4 | source = "registry+https://github.com/rust-lang/crates.io-index" 5 | 6 | [[package]] 7 | name = "arrayvec" 8 | version = "0.4.7" 9 | source = "registry+https://github.com/rust-lang/crates.io-index" 10 | dependencies = [ 11 | "nodrop 0.1.12 (registry+https://github.com/rust-lang/crates.io-index)", 12 | ] 13 | 14 | [[package]] 15 | name = "backtrace" 16 | version = "0.3.9" 17 | source = "registry+https://github.com/rust-lang/crates.io-index" 18 | dependencies = [ 19 | "backtrace-sys 0.1.24 (registry+https://github.com/rust-lang/crates.io-index)", 20 | "cfg-if 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)", 21 | "libc 0.2.43 (registry+https://github.com/rust-lang/crates.io-index)", 22 | "rustc-demangle 0.1.9 (registry+https://github.com/rust-lang/crates.io-index)", 23 | "winapi 0.3.6 (registry+https://github.com/rust-lang/crates.io-index)", 24 | ] 25 | 26 | [[package]] 27 | name = "backtrace-sys" 28 | version = "0.1.24" 29 | source = "registry+https://github.com/rust-lang/crates.io-index" 30 | dependencies = [ 31 | "cc 1.0.25 (registry+https://github.com/rust-lang/crates.io-index)", 32 | "libc 0.2.43 (registry+https://github.com/rust-lang/crates.io-index)", 33 | ] 34 | 35 | [[package]] 36 | name = "base64" 37 | version = "0.9.3" 38 | source = "registry+https://github.com/rust-lang/crates.io-index" 39 | dependencies = [ 40 | "byteorder 1.2.6 (registry+https://github.com/rust-lang/crates.io-index)", 41 | "safemem 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)", 42 | ] 43 | 44 | [[package]] 45 | name = "bitflags" 46 | version = "0.9.1" 47 | source = "registry+https://github.com/rust-lang/crates.io-index" 48 | 49 | [[package]] 50 | name = "bitflags" 51 | version = "1.0.4" 52 | source = "registry+https://github.com/rust-lang/crates.io-index" 53 | 54 | [[package]] 55 | name = "block" 56 | version = "0.1.6" 57 | source = "registry+https://github.com/rust-lang/crates.io-index" 58 | 59 | [[package]] 60 | name = "build_const" 61 | version = "0.2.1" 62 | source = "registry+https://github.com/rust-lang/crates.io-index" 63 | 64 | [[package]] 65 | name = "byteorder" 66 | version = "1.2.6" 67 | source = "registry+https://github.com/rust-lang/crates.io-index" 68 | 69 | [[package]] 70 | name = "bytes" 71 | version = "0.4.10" 72 | source = "registry+https://github.com/rust-lang/crates.io-index" 73 | dependencies = [ 74 | "byteorder 1.2.6 (registry+https://github.com/rust-lang/crates.io-index)", 75 | "iovec 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)", 76 | ] 77 | 78 | [[package]] 79 | name = "cc" 80 | version = "1.0.25" 81 | source = "registry+https://github.com/rust-lang/crates.io-index" 82 | 83 | [[package]] 84 | name = "cfg-if" 85 | version = "0.1.5" 86 | source = "registry+https://github.com/rust-lang/crates.io-index" 87 | 88 | [[package]] 89 | name = "chrono" 90 | version = "0.4.6" 91 | source = "registry+https://github.com/rust-lang/crates.io-index" 92 | dependencies = [ 93 | "num-integer 0.1.39 (registry+https://github.com/rust-lang/crates.io-index)", 94 | "num-traits 0.2.6 (registry+https://github.com/rust-lang/crates.io-index)", 95 | "time 0.1.40 (registry+https://github.com/rust-lang/crates.io-index)", 96 | ] 97 | 98 | [[package]] 99 | name = "cloudabi" 100 | version = "0.0.3" 101 | source = "registry+https://github.com/rust-lang/crates.io-index" 102 | dependencies = [ 103 | "bitflags 1.0.4 (registry+https://github.com/rust-lang/crates.io-index)", 104 | ] 105 | 106 | [[package]] 107 | name = "core-foundation" 108 | version = "0.5.1" 109 | source = "registry+https://github.com/rust-lang/crates.io-index" 110 | dependencies = [ 111 | "core-foundation-sys 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)", 112 | "libc 0.2.43 (registry+https://github.com/rust-lang/crates.io-index)", 113 | ] 114 | 115 | [[package]] 116 | name = "core-foundation-sys" 117 | version = "0.5.1" 118 | source = "registry+https://github.com/rust-lang/crates.io-index" 119 | dependencies = [ 120 | "libc 0.2.43 (registry+https://github.com/rust-lang/crates.io-index)", 121 | ] 122 | 123 | [[package]] 124 | name = "crc" 125 | version = "1.8.1" 126 | source = "registry+https://github.com/rust-lang/crates.io-index" 127 | dependencies = [ 128 | "build_const 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)", 129 | ] 130 | 131 | [[package]] 132 | name = "crossbeam-deque" 133 | version = "0.6.1" 134 | source = "registry+https://github.com/rust-lang/crates.io-index" 135 | dependencies = [ 136 | "crossbeam-epoch 0.5.2 (registry+https://github.com/rust-lang/crates.io-index)", 137 | "crossbeam-utils 0.5.0 (registry+https://github.com/rust-lang/crates.io-index)", 138 | ] 139 | 140 | [[package]] 141 | name = "crossbeam-epoch" 142 | version = "0.5.2" 143 | source = "registry+https://github.com/rust-lang/crates.io-index" 144 | dependencies = [ 145 | "arrayvec 0.4.7 (registry+https://github.com/rust-lang/crates.io-index)", 146 | "cfg-if 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)", 147 | "crossbeam-utils 0.5.0 (registry+https://github.com/rust-lang/crates.io-index)", 148 | "lazy_static 1.1.0 (registry+https://github.com/rust-lang/crates.io-index)", 149 | "memoffset 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)", 150 | "scopeguard 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)", 151 | ] 152 | 153 | [[package]] 154 | name = "crossbeam-utils" 155 | version = "0.5.0" 156 | source = "registry+https://github.com/rust-lang/crates.io-index" 157 | 158 | [[package]] 159 | name = "dbus" 160 | version = "0.4.1" 161 | source = "registry+https://github.com/rust-lang/crates.io-index" 162 | dependencies = [ 163 | "libc 0.2.43 (registry+https://github.com/rust-lang/crates.io-index)", 164 | "pkg-config 0.3.14 (registry+https://github.com/rust-lang/crates.io-index)", 165 | ] 166 | 167 | [[package]] 168 | name = "dtoa" 169 | version = "0.4.3" 170 | source = "registry+https://github.com/rust-lang/crates.io-index" 171 | 172 | [[package]] 173 | name = "encoding_rs" 174 | version = "0.8.7" 175 | source = "registry+https://github.com/rust-lang/crates.io-index" 176 | dependencies = [ 177 | "cfg-if 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)", 178 | ] 179 | 180 | [[package]] 181 | name = "error-chain" 182 | version = "0.10.0" 183 | source = "registry+https://github.com/rust-lang/crates.io-index" 184 | dependencies = [ 185 | "backtrace 0.3.9 (registry+https://github.com/rust-lang/crates.io-index)", 186 | ] 187 | 188 | [[package]] 189 | name = "fnv" 190 | version = "1.0.6" 191 | source = "registry+https://github.com/rust-lang/crates.io-index" 192 | 193 | [[package]] 194 | name = "foreign-types" 195 | version = "0.3.2" 196 | source = "registry+https://github.com/rust-lang/crates.io-index" 197 | dependencies = [ 198 | "foreign-types-shared 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", 199 | ] 200 | 201 | [[package]] 202 | name = "foreign-types-shared" 203 | version = "0.1.1" 204 | source = "registry+https://github.com/rust-lang/crates.io-index" 205 | 206 | [[package]] 207 | name = "fuchsia-zircon" 208 | version = "0.3.3" 209 | source = "registry+https://github.com/rust-lang/crates.io-index" 210 | dependencies = [ 211 | "bitflags 1.0.4 (registry+https://github.com/rust-lang/crates.io-index)", 212 | "fuchsia-zircon-sys 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)", 213 | ] 214 | 215 | [[package]] 216 | name = "fuchsia-zircon-sys" 217 | version = "0.3.3" 218 | source = "registry+https://github.com/rust-lang/crates.io-index" 219 | 220 | [[package]] 221 | name = "futures" 222 | version = "0.1.24" 223 | source = "registry+https://github.com/rust-lang/crates.io-index" 224 | 225 | [[package]] 226 | name = "futures-cpupool" 227 | version = "0.1.8" 228 | source = "registry+https://github.com/rust-lang/crates.io-index" 229 | dependencies = [ 230 | "futures 0.1.24 (registry+https://github.com/rust-lang/crates.io-index)", 231 | "num_cpus 1.8.0 (registry+https://github.com/rust-lang/crates.io-index)", 232 | ] 233 | 234 | [[package]] 235 | name = "gcc" 236 | version = "0.3.54" 237 | source = "registry+https://github.com/rust-lang/crates.io-index" 238 | 239 | [[package]] 240 | name = "h2" 241 | version = "0.1.12" 242 | source = "registry+https://github.com/rust-lang/crates.io-index" 243 | dependencies = [ 244 | "byteorder 1.2.6 (registry+https://github.com/rust-lang/crates.io-index)", 245 | "bytes 0.4.10 (registry+https://github.com/rust-lang/crates.io-index)", 246 | "fnv 1.0.6 (registry+https://github.com/rust-lang/crates.io-index)", 247 | "futures 0.1.24 (registry+https://github.com/rust-lang/crates.io-index)", 248 | "http 0.1.13 (registry+https://github.com/rust-lang/crates.io-index)", 249 | "indexmap 1.0.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 | "slab 0.4.1 (registry+https://github.com/rust-lang/crates.io-index)", 252 | "string 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", 253 | "tokio-io 0.1.9 (registry+https://github.com/rust-lang/crates.io-index)", 254 | ] 255 | 256 | [[package]] 257 | name = "html-minifier" 258 | version = "1.1.2" 259 | source = "registry+https://github.com/rust-lang/crates.io-index" 260 | dependencies = [ 261 | "minifier 0.0.19 (registry+https://github.com/rust-lang/crates.io-index)", 262 | ] 263 | 264 | [[package]] 265 | name = "http" 266 | version = "0.1.13" 267 | source = "registry+https://github.com/rust-lang/crates.io-index" 268 | dependencies = [ 269 | "bytes 0.4.10 (registry+https://github.com/rust-lang/crates.io-index)", 270 | "fnv 1.0.6 (registry+https://github.com/rust-lang/crates.io-index)", 271 | "itoa 0.4.3 (registry+https://github.com/rust-lang/crates.io-index)", 272 | ] 273 | 274 | [[package]] 275 | name = "httparse" 276 | version = "1.3.3" 277 | source = "registry+https://github.com/rust-lang/crates.io-index" 278 | 279 | [[package]] 280 | name = "hyper" 281 | version = "0.12.11" 282 | source = "registry+https://github.com/rust-lang/crates.io-index" 283 | dependencies = [ 284 | "bytes 0.4.10 (registry+https://github.com/rust-lang/crates.io-index)", 285 | "futures 0.1.24 (registry+https://github.com/rust-lang/crates.io-index)", 286 | "futures-cpupool 0.1.8 (registry+https://github.com/rust-lang/crates.io-index)", 287 | "h2 0.1.12 (registry+https://github.com/rust-lang/crates.io-index)", 288 | "http 0.1.13 (registry+https://github.com/rust-lang/crates.io-index)", 289 | "httparse 1.3.3 (registry+https://github.com/rust-lang/crates.io-index)", 290 | "iovec 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)", 291 | "itoa 0.4.3 (registry+https://github.com/rust-lang/crates.io-index)", 292 | "log 0.4.5 (registry+https://github.com/rust-lang/crates.io-index)", 293 | "net2 0.2.33 (registry+https://github.com/rust-lang/crates.io-index)", 294 | "time 0.1.40 (registry+https://github.com/rust-lang/crates.io-index)", 295 | "tokio 0.1.11 (registry+https://github.com/rust-lang/crates.io-index)", 296 | "tokio-executor 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)", 297 | "tokio-io 0.1.9 (registry+https://github.com/rust-lang/crates.io-index)", 298 | "tokio-reactor 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)", 299 | "tokio-tcp 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)", 300 | "tokio-timer 0.2.7 (registry+https://github.com/rust-lang/crates.io-index)", 301 | "want 0.0.6 (registry+https://github.com/rust-lang/crates.io-index)", 302 | ] 303 | 304 | [[package]] 305 | name = "hyper-tls" 306 | version = "0.3.0" 307 | source = "registry+https://github.com/rust-lang/crates.io-index" 308 | dependencies = [ 309 | "bytes 0.4.10 (registry+https://github.com/rust-lang/crates.io-index)", 310 | "futures 0.1.24 (registry+https://github.com/rust-lang/crates.io-index)", 311 | "hyper 0.12.11 (registry+https://github.com/rust-lang/crates.io-index)", 312 | "native-tls 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)", 313 | "tokio-io 0.1.9 (registry+https://github.com/rust-lang/crates.io-index)", 314 | ] 315 | 316 | [[package]] 317 | name = "idna" 318 | version = "0.1.5" 319 | source = "registry+https://github.com/rust-lang/crates.io-index" 320 | dependencies = [ 321 | "matches 0.1.8 (registry+https://github.com/rust-lang/crates.io-index)", 322 | "unicode-bidi 0.3.4 (registry+https://github.com/rust-lang/crates.io-index)", 323 | "unicode-normalization 0.1.7 (registry+https://github.com/rust-lang/crates.io-index)", 324 | ] 325 | 326 | [[package]] 327 | name = "indexmap" 328 | version = "1.0.1" 329 | source = "registry+https://github.com/rust-lang/crates.io-index" 330 | 331 | [[package]] 332 | name = "iovec" 333 | version = "0.1.2" 334 | source = "registry+https://github.com/rust-lang/crates.io-index" 335 | dependencies = [ 336 | "libc 0.2.43 (registry+https://github.com/rust-lang/crates.io-index)", 337 | "winapi 0.2.8 (registry+https://github.com/rust-lang/crates.io-index)", 338 | ] 339 | 340 | [[package]] 341 | name = "itoa" 342 | version = "0.4.3" 343 | source = "registry+https://github.com/rust-lang/crates.io-index" 344 | 345 | [[package]] 346 | name = "kernel32-sys" 347 | version = "0.2.2" 348 | source = "registry+https://github.com/rust-lang/crates.io-index" 349 | dependencies = [ 350 | "winapi 0.2.8 (registry+https://github.com/rust-lang/crates.io-index)", 351 | "winapi-build 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", 352 | ] 353 | 354 | [[package]] 355 | name = "kyo-rs" 356 | version = "0.0.1" 357 | dependencies = [ 358 | "base64 0.9.3 (registry+https://github.com/rust-lang/crates.io-index)", 359 | "html-minifier 1.1.2 (registry+https://github.com/rust-lang/crates.io-index)", 360 | "hyper 0.12.11 (registry+https://github.com/rust-lang/crates.io-index)", 361 | "libc 0.2.43 (registry+https://github.com/rust-lang/crates.io-index)", 362 | "notify-rust 3.4.2 (registry+https://github.com/rust-lang/crates.io-index)", 363 | "reqwest 0.9.2 (registry+https://github.com/rust-lang/crates.io-index)", 364 | "serde_json 1.0.31 (registry+https://github.com/rust-lang/crates.io-index)", 365 | "user32-sys 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)", 366 | "web-view 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)", 367 | "winapi 0.3.6 (registry+https://github.com/rust-lang/crates.io-index)", 368 | "winres 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)", 369 | "winrt 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)", 370 | "winrt-notification 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)", 371 | ] 372 | 373 | [[package]] 374 | name = "lazy_static" 375 | version = "1.1.0" 376 | source = "registry+https://github.com/rust-lang/crates.io-index" 377 | dependencies = [ 378 | "version_check 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)", 379 | ] 380 | 381 | [[package]] 382 | name = "lazycell" 383 | version = "1.2.0" 384 | source = "registry+https://github.com/rust-lang/crates.io-index" 385 | 386 | [[package]] 387 | name = "libc" 388 | version = "0.2.43" 389 | source = "registry+https://github.com/rust-lang/crates.io-index" 390 | 391 | [[package]] 392 | name = "libflate" 393 | version = "0.1.18" 394 | source = "registry+https://github.com/rust-lang/crates.io-index" 395 | dependencies = [ 396 | "adler32 1.0.3 (registry+https://github.com/rust-lang/crates.io-index)", 397 | "byteorder 1.2.6 (registry+https://github.com/rust-lang/crates.io-index)", 398 | "crc 1.8.1 (registry+https://github.com/rust-lang/crates.io-index)", 399 | ] 400 | 401 | [[package]] 402 | name = "lock_api" 403 | version = "0.1.4" 404 | source = "registry+https://github.com/rust-lang/crates.io-index" 405 | dependencies = [ 406 | "owning_ref 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)", 407 | "scopeguard 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)", 408 | ] 409 | 410 | [[package]] 411 | name = "log" 412 | version = "0.4.5" 413 | source = "registry+https://github.com/rust-lang/crates.io-index" 414 | dependencies = [ 415 | "cfg-if 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)", 416 | ] 417 | 418 | [[package]] 419 | name = "mac-notification-sys" 420 | version = "0.1.3" 421 | source = "registry+https://github.com/rust-lang/crates.io-index" 422 | dependencies = [ 423 | "chrono 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)", 424 | "error-chain 0.10.0 (registry+https://github.com/rust-lang/crates.io-index)", 425 | "gcc 0.3.54 (registry+https://github.com/rust-lang/crates.io-index)", 426 | "objc-foundation 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", 427 | ] 428 | 429 | [[package]] 430 | name = "macro-utils" 431 | version = "0.1.2" 432 | source = "registry+https://github.com/rust-lang/crates.io-index" 433 | 434 | [[package]] 435 | name = "malloc_buf" 436 | version = "0.0.6" 437 | source = "registry+https://github.com/rust-lang/crates.io-index" 438 | dependencies = [ 439 | "libc 0.2.43 (registry+https://github.com/rust-lang/crates.io-index)", 440 | ] 441 | 442 | [[package]] 443 | name = "matches" 444 | version = "0.1.8" 445 | source = "registry+https://github.com/rust-lang/crates.io-index" 446 | 447 | [[package]] 448 | name = "memoffset" 449 | version = "0.2.1" 450 | source = "registry+https://github.com/rust-lang/crates.io-index" 451 | 452 | [[package]] 453 | name = "mime" 454 | version = "0.3.9" 455 | source = "registry+https://github.com/rust-lang/crates.io-index" 456 | dependencies = [ 457 | "unicase 2.1.0 (registry+https://github.com/rust-lang/crates.io-index)", 458 | ] 459 | 460 | [[package]] 461 | name = "mime_guess" 462 | version = "2.0.0-alpha.6" 463 | source = "registry+https://github.com/rust-lang/crates.io-index" 464 | dependencies = [ 465 | "mime 0.3.9 (registry+https://github.com/rust-lang/crates.io-index)", 466 | "phf 0.7.23 (registry+https://github.com/rust-lang/crates.io-index)", 467 | "phf_codegen 0.7.23 (registry+https://github.com/rust-lang/crates.io-index)", 468 | "unicase 1.4.2 (registry+https://github.com/rust-lang/crates.io-index)", 469 | ] 470 | 471 | [[package]] 472 | name = "minifier" 473 | version = "0.0.19" 474 | source = "registry+https://github.com/rust-lang/crates.io-index" 475 | dependencies = [ 476 | "macro-utils 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)", 477 | ] 478 | 479 | [[package]] 480 | name = "mio" 481 | version = "0.6.16" 482 | source = "registry+https://github.com/rust-lang/crates.io-index" 483 | dependencies = [ 484 | "fuchsia-zircon 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)", 485 | "fuchsia-zircon-sys 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)", 486 | "iovec 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)", 487 | "kernel32-sys 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)", 488 | "lazycell 1.2.0 (registry+https://github.com/rust-lang/crates.io-index)", 489 | "libc 0.2.43 (registry+https://github.com/rust-lang/crates.io-index)", 490 | "log 0.4.5 (registry+https://github.com/rust-lang/crates.io-index)", 491 | "miow 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)", 492 | "net2 0.2.33 (registry+https://github.com/rust-lang/crates.io-index)", 493 | "slab 0.4.1 (registry+https://github.com/rust-lang/crates.io-index)", 494 | "winapi 0.2.8 (registry+https://github.com/rust-lang/crates.io-index)", 495 | ] 496 | 497 | [[package]] 498 | name = "mio-uds" 499 | version = "0.6.7" 500 | source = "registry+https://github.com/rust-lang/crates.io-index" 501 | dependencies = [ 502 | "iovec 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)", 503 | "libc 0.2.43 (registry+https://github.com/rust-lang/crates.io-index)", 504 | "mio 0.6.16 (registry+https://github.com/rust-lang/crates.io-index)", 505 | ] 506 | 507 | [[package]] 508 | name = "miow" 509 | version = "0.2.1" 510 | source = "registry+https://github.com/rust-lang/crates.io-index" 511 | dependencies = [ 512 | "kernel32-sys 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)", 513 | "net2 0.2.33 (registry+https://github.com/rust-lang/crates.io-index)", 514 | "winapi 0.2.8 (registry+https://github.com/rust-lang/crates.io-index)", 515 | "ws2_32-sys 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)", 516 | ] 517 | 518 | [[package]] 519 | name = "native-tls" 520 | version = "0.2.1" 521 | source = "registry+https://github.com/rust-lang/crates.io-index" 522 | dependencies = [ 523 | "lazy_static 1.1.0 (registry+https://github.com/rust-lang/crates.io-index)", 524 | "libc 0.2.43 (registry+https://github.com/rust-lang/crates.io-index)", 525 | "openssl 0.10.12 (registry+https://github.com/rust-lang/crates.io-index)", 526 | "openssl-probe 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)", 527 | "openssl-sys 0.9.36 (registry+https://github.com/rust-lang/crates.io-index)", 528 | "schannel 0.1.14 (registry+https://github.com/rust-lang/crates.io-index)", 529 | "security-framework 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)", 530 | "security-framework-sys 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)", 531 | "tempfile 3.0.4 (registry+https://github.com/rust-lang/crates.io-index)", 532 | ] 533 | 534 | [[package]] 535 | name = "net2" 536 | version = "0.2.33" 537 | source = "registry+https://github.com/rust-lang/crates.io-index" 538 | dependencies = [ 539 | "cfg-if 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)", 540 | "libc 0.2.43 (registry+https://github.com/rust-lang/crates.io-index)", 541 | "winapi 0.3.6 (registry+https://github.com/rust-lang/crates.io-index)", 542 | ] 543 | 544 | [[package]] 545 | name = "nodrop" 546 | version = "0.1.12" 547 | source = "registry+https://github.com/rust-lang/crates.io-index" 548 | 549 | [[package]] 550 | name = "notify-rust" 551 | version = "3.4.2" 552 | source = "registry+https://github.com/rust-lang/crates.io-index" 553 | dependencies = [ 554 | "dbus 0.4.1 (registry+https://github.com/rust-lang/crates.io-index)", 555 | "error-chain 0.10.0 (registry+https://github.com/rust-lang/crates.io-index)", 556 | "mac-notification-sys 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)", 557 | ] 558 | 559 | [[package]] 560 | name = "num-integer" 561 | version = "0.1.39" 562 | source = "registry+https://github.com/rust-lang/crates.io-index" 563 | dependencies = [ 564 | "num-traits 0.2.6 (registry+https://github.com/rust-lang/crates.io-index)", 565 | ] 566 | 567 | [[package]] 568 | name = "num-traits" 569 | version = "0.2.6" 570 | source = "registry+https://github.com/rust-lang/crates.io-index" 571 | 572 | [[package]] 573 | name = "num_cpus" 574 | version = "1.8.0" 575 | source = "registry+https://github.com/rust-lang/crates.io-index" 576 | dependencies = [ 577 | "libc 0.2.43 (registry+https://github.com/rust-lang/crates.io-index)", 578 | ] 579 | 580 | [[package]] 581 | name = "objc" 582 | version = "0.2.5" 583 | source = "registry+https://github.com/rust-lang/crates.io-index" 584 | dependencies = [ 585 | "malloc_buf 0.0.6 (registry+https://github.com/rust-lang/crates.io-index)", 586 | ] 587 | 588 | [[package]] 589 | name = "objc-foundation" 590 | version = "0.1.1" 591 | source = "registry+https://github.com/rust-lang/crates.io-index" 592 | dependencies = [ 593 | "block 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)", 594 | "objc 0.2.5 (registry+https://github.com/rust-lang/crates.io-index)", 595 | "objc_id 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", 596 | ] 597 | 598 | [[package]] 599 | name = "objc_id" 600 | version = "0.1.1" 601 | source = "registry+https://github.com/rust-lang/crates.io-index" 602 | dependencies = [ 603 | "objc 0.2.5 (registry+https://github.com/rust-lang/crates.io-index)", 604 | ] 605 | 606 | [[package]] 607 | name = "openssl" 608 | version = "0.10.12" 609 | source = "registry+https://github.com/rust-lang/crates.io-index" 610 | dependencies = [ 611 | "bitflags 1.0.4 (registry+https://github.com/rust-lang/crates.io-index)", 612 | "cfg-if 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)", 613 | "foreign-types 0.3.2 (registry+https://github.com/rust-lang/crates.io-index)", 614 | "lazy_static 1.1.0 (registry+https://github.com/rust-lang/crates.io-index)", 615 | "libc 0.2.43 (registry+https://github.com/rust-lang/crates.io-index)", 616 | "openssl-sys 0.9.36 (registry+https://github.com/rust-lang/crates.io-index)", 617 | ] 618 | 619 | [[package]] 620 | name = "openssl-probe" 621 | version = "0.1.2" 622 | source = "registry+https://github.com/rust-lang/crates.io-index" 623 | 624 | [[package]] 625 | name = "openssl-sys" 626 | version = "0.9.36" 627 | source = "registry+https://github.com/rust-lang/crates.io-index" 628 | dependencies = [ 629 | "cc 1.0.25 (registry+https://github.com/rust-lang/crates.io-index)", 630 | "libc 0.2.43 (registry+https://github.com/rust-lang/crates.io-index)", 631 | "pkg-config 0.3.14 (registry+https://github.com/rust-lang/crates.io-index)", 632 | "vcpkg 0.2.6 (registry+https://github.com/rust-lang/crates.io-index)", 633 | ] 634 | 635 | [[package]] 636 | name = "owning_ref" 637 | version = "0.3.3" 638 | source = "registry+https://github.com/rust-lang/crates.io-index" 639 | dependencies = [ 640 | "stable_deref_trait 1.1.1 (registry+https://github.com/rust-lang/crates.io-index)", 641 | ] 642 | 643 | [[package]] 644 | name = "parking_lot" 645 | version = "0.6.4" 646 | source = "registry+https://github.com/rust-lang/crates.io-index" 647 | dependencies = [ 648 | "lock_api 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)", 649 | "parking_lot_core 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)", 650 | ] 651 | 652 | [[package]] 653 | name = "parking_lot_core" 654 | version = "0.3.1" 655 | source = "registry+https://github.com/rust-lang/crates.io-index" 656 | dependencies = [ 657 | "libc 0.2.43 (registry+https://github.com/rust-lang/crates.io-index)", 658 | "rand 0.5.5 (registry+https://github.com/rust-lang/crates.io-index)", 659 | "rustc_version 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)", 660 | "smallvec 0.6.5 (registry+https://github.com/rust-lang/crates.io-index)", 661 | "winapi 0.3.6 (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.23" 672 | source = "registry+https://github.com/rust-lang/crates.io-index" 673 | dependencies = [ 674 | "phf_shared 0.7.23 (registry+https://github.com/rust-lang/crates.io-index)", 675 | ] 676 | 677 | [[package]] 678 | name = "phf_codegen" 679 | version = "0.7.23" 680 | source = "registry+https://github.com/rust-lang/crates.io-index" 681 | dependencies = [ 682 | "phf_generator 0.7.23 (registry+https://github.com/rust-lang/crates.io-index)", 683 | "phf_shared 0.7.23 (registry+https://github.com/rust-lang/crates.io-index)", 684 | ] 685 | 686 | [[package]] 687 | name = "phf_generator" 688 | version = "0.7.23" 689 | source = "registry+https://github.com/rust-lang/crates.io-index" 690 | dependencies = [ 691 | "phf_shared 0.7.23 (registry+https://github.com/rust-lang/crates.io-index)", 692 | "rand 0.5.5 (registry+https://github.com/rust-lang/crates.io-index)", 693 | ] 694 | 695 | [[package]] 696 | name = "phf_shared" 697 | version = "0.7.23" 698 | source = "registry+https://github.com/rust-lang/crates.io-index" 699 | dependencies = [ 700 | "siphasher 0.2.3 (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.14" 707 | source = "registry+https://github.com/rust-lang/crates.io-index" 708 | 709 | [[package]] 710 | name = "quote" 711 | version = "0.3.15" 712 | source = "registry+https://github.com/rust-lang/crates.io-index" 713 | 714 | [[package]] 715 | name = "rand" 716 | version = "0.5.5" 717 | source = "registry+https://github.com/rust-lang/crates.io-index" 718 | dependencies = [ 719 | "cloudabi 0.0.3 (registry+https://github.com/rust-lang/crates.io-index)", 720 | "fuchsia-zircon 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)", 721 | "libc 0.2.43 (registry+https://github.com/rust-lang/crates.io-index)", 722 | "rand_core 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)", 723 | "winapi 0.3.6 (registry+https://github.com/rust-lang/crates.io-index)", 724 | ] 725 | 726 | [[package]] 727 | name = "rand_core" 728 | version = "0.2.1" 729 | source = "registry+https://github.com/rust-lang/crates.io-index" 730 | 731 | [[package]] 732 | name = "redox_syscall" 733 | version = "0.1.40" 734 | source = "registry+https://github.com/rust-lang/crates.io-index" 735 | 736 | [[package]] 737 | name = "remove_dir_all" 738 | version = "0.5.1" 739 | source = "registry+https://github.com/rust-lang/crates.io-index" 740 | dependencies = [ 741 | "winapi 0.3.6 (registry+https://github.com/rust-lang/crates.io-index)", 742 | ] 743 | 744 | [[package]] 745 | name = "reqwest" 746 | version = "0.9.2" 747 | source = "registry+https://github.com/rust-lang/crates.io-index" 748 | dependencies = [ 749 | "base64 0.9.3 (registry+https://github.com/rust-lang/crates.io-index)", 750 | "bytes 0.4.10 (registry+https://github.com/rust-lang/crates.io-index)", 751 | "encoding_rs 0.8.7 (registry+https://github.com/rust-lang/crates.io-index)", 752 | "futures 0.1.24 (registry+https://github.com/rust-lang/crates.io-index)", 753 | "http 0.1.13 (registry+https://github.com/rust-lang/crates.io-index)", 754 | "hyper 0.12.11 (registry+https://github.com/rust-lang/crates.io-index)", 755 | "hyper-tls 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)", 756 | "libflate 0.1.18 (registry+https://github.com/rust-lang/crates.io-index)", 757 | "log 0.4.5 (registry+https://github.com/rust-lang/crates.io-index)", 758 | "mime 0.3.9 (registry+https://github.com/rust-lang/crates.io-index)", 759 | "mime_guess 2.0.0-alpha.6 (registry+https://github.com/rust-lang/crates.io-index)", 760 | "native-tls 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)", 761 | "serde 1.0.79 (registry+https://github.com/rust-lang/crates.io-index)", 762 | "serde_json 1.0.31 (registry+https://github.com/rust-lang/crates.io-index)", 763 | "serde_urlencoded 0.5.3 (registry+https://github.com/rust-lang/crates.io-index)", 764 | "tokio 0.1.11 (registry+https://github.com/rust-lang/crates.io-index)", 765 | "tokio-io 0.1.9 (registry+https://github.com/rust-lang/crates.io-index)", 766 | "url 1.7.1 (registry+https://github.com/rust-lang/crates.io-index)", 767 | "uuid 0.7.1 (registry+https://github.com/rust-lang/crates.io-index)", 768 | ] 769 | 770 | [[package]] 771 | name = "rustc-demangle" 772 | version = "0.1.9" 773 | source = "registry+https://github.com/rust-lang/crates.io-index" 774 | 775 | [[package]] 776 | name = "rustc_version" 777 | version = "0.2.3" 778 | source = "registry+https://github.com/rust-lang/crates.io-index" 779 | dependencies = [ 780 | "semver 0.9.0 (registry+https://github.com/rust-lang/crates.io-index)", 781 | ] 782 | 783 | [[package]] 784 | name = "ryu" 785 | version = "0.2.6" 786 | source = "registry+https://github.com/rust-lang/crates.io-index" 787 | 788 | [[package]] 789 | name = "safemem" 790 | version = "0.3.0" 791 | source = "registry+https://github.com/rust-lang/crates.io-index" 792 | 793 | [[package]] 794 | name = "schannel" 795 | version = "0.1.14" 796 | source = "registry+https://github.com/rust-lang/crates.io-index" 797 | dependencies = [ 798 | "lazy_static 1.1.0 (registry+https://github.com/rust-lang/crates.io-index)", 799 | "winapi 0.3.6 (registry+https://github.com/rust-lang/crates.io-index)", 800 | ] 801 | 802 | [[package]] 803 | name = "scopeguard" 804 | version = "0.3.3" 805 | source = "registry+https://github.com/rust-lang/crates.io-index" 806 | 807 | [[package]] 808 | name = "security-framework" 809 | version = "0.2.1" 810 | source = "registry+https://github.com/rust-lang/crates.io-index" 811 | dependencies = [ 812 | "core-foundation 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)", 813 | "core-foundation-sys 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)", 814 | "libc 0.2.43 (registry+https://github.com/rust-lang/crates.io-index)", 815 | "security-framework-sys 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)", 816 | ] 817 | 818 | [[package]] 819 | name = "security-framework-sys" 820 | version = "0.2.1" 821 | source = "registry+https://github.com/rust-lang/crates.io-index" 822 | dependencies = [ 823 | "core-foundation-sys 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)", 824 | "libc 0.2.43 (registry+https://github.com/rust-lang/crates.io-index)", 825 | ] 826 | 827 | [[package]] 828 | name = "semver" 829 | version = "0.9.0" 830 | source = "registry+https://github.com/rust-lang/crates.io-index" 831 | dependencies = [ 832 | "semver-parser 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)", 833 | ] 834 | 835 | [[package]] 836 | name = "semver-parser" 837 | version = "0.7.0" 838 | source = "registry+https://github.com/rust-lang/crates.io-index" 839 | 840 | [[package]] 841 | name = "serde" 842 | version = "1.0.79" 843 | source = "registry+https://github.com/rust-lang/crates.io-index" 844 | 845 | [[package]] 846 | name = "serde_json" 847 | version = "1.0.31" 848 | source = "registry+https://github.com/rust-lang/crates.io-index" 849 | dependencies = [ 850 | "itoa 0.4.3 (registry+https://github.com/rust-lang/crates.io-index)", 851 | "ryu 0.2.6 (registry+https://github.com/rust-lang/crates.io-index)", 852 | "serde 1.0.79 (registry+https://github.com/rust-lang/crates.io-index)", 853 | ] 854 | 855 | [[package]] 856 | name = "serde_urlencoded" 857 | version = "0.5.3" 858 | source = "registry+https://github.com/rust-lang/crates.io-index" 859 | dependencies = [ 860 | "dtoa 0.4.3 (registry+https://github.com/rust-lang/crates.io-index)", 861 | "itoa 0.4.3 (registry+https://github.com/rust-lang/crates.io-index)", 862 | "serde 1.0.79 (registry+https://github.com/rust-lang/crates.io-index)", 863 | "url 1.7.1 (registry+https://github.com/rust-lang/crates.io-index)", 864 | ] 865 | 866 | [[package]] 867 | name = "siphasher" 868 | version = "0.2.3" 869 | source = "registry+https://github.com/rust-lang/crates.io-index" 870 | 871 | [[package]] 872 | name = "slab" 873 | version = "0.4.1" 874 | source = "registry+https://github.com/rust-lang/crates.io-index" 875 | 876 | [[package]] 877 | name = "smallvec" 878 | version = "0.6.5" 879 | source = "registry+https://github.com/rust-lang/crates.io-index" 880 | dependencies = [ 881 | "unreachable 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)", 882 | ] 883 | 884 | [[package]] 885 | name = "stable_deref_trait" 886 | version = "1.1.1" 887 | source = "registry+https://github.com/rust-lang/crates.io-index" 888 | 889 | [[package]] 890 | name = "string" 891 | version = "0.1.1" 892 | source = "registry+https://github.com/rust-lang/crates.io-index" 893 | 894 | [[package]] 895 | name = "strum" 896 | version = "0.8.0" 897 | source = "registry+https://github.com/rust-lang/crates.io-index" 898 | 899 | [[package]] 900 | name = "strum_macros" 901 | version = "0.8.0" 902 | source = "registry+https://github.com/rust-lang/crates.io-index" 903 | dependencies = [ 904 | "quote 0.3.15 (registry+https://github.com/rust-lang/crates.io-index)", 905 | "syn 0.11.11 (registry+https://github.com/rust-lang/crates.io-index)", 906 | ] 907 | 908 | [[package]] 909 | name = "syn" 910 | version = "0.11.11" 911 | source = "registry+https://github.com/rust-lang/crates.io-index" 912 | dependencies = [ 913 | "quote 0.3.15 (registry+https://github.com/rust-lang/crates.io-index)", 914 | "synom 0.11.3 (registry+https://github.com/rust-lang/crates.io-index)", 915 | "unicode-xid 0.0.4 (registry+https://github.com/rust-lang/crates.io-index)", 916 | ] 917 | 918 | [[package]] 919 | name = "synom" 920 | version = "0.11.3" 921 | source = "registry+https://github.com/rust-lang/crates.io-index" 922 | dependencies = [ 923 | "unicode-xid 0.0.4 (registry+https://github.com/rust-lang/crates.io-index)", 924 | ] 925 | 926 | [[package]] 927 | name = "tempfile" 928 | version = "3.0.4" 929 | source = "registry+https://github.com/rust-lang/crates.io-index" 930 | dependencies = [ 931 | "cfg-if 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)", 932 | "libc 0.2.43 (registry+https://github.com/rust-lang/crates.io-index)", 933 | "rand 0.5.5 (registry+https://github.com/rust-lang/crates.io-index)", 934 | "redox_syscall 0.1.40 (registry+https://github.com/rust-lang/crates.io-index)", 935 | "remove_dir_all 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)", 936 | "winapi 0.3.6 (registry+https://github.com/rust-lang/crates.io-index)", 937 | ] 938 | 939 | [[package]] 940 | name = "time" 941 | version = "0.1.40" 942 | source = "registry+https://github.com/rust-lang/crates.io-index" 943 | dependencies = [ 944 | "libc 0.2.43 (registry+https://github.com/rust-lang/crates.io-index)", 945 | "redox_syscall 0.1.40 (registry+https://github.com/rust-lang/crates.io-index)", 946 | "winapi 0.3.6 (registry+https://github.com/rust-lang/crates.io-index)", 947 | ] 948 | 949 | [[package]] 950 | name = "tokio" 951 | version = "0.1.11" 952 | source = "registry+https://github.com/rust-lang/crates.io-index" 953 | dependencies = [ 954 | "bytes 0.4.10 (registry+https://github.com/rust-lang/crates.io-index)", 955 | "futures 0.1.24 (registry+https://github.com/rust-lang/crates.io-index)", 956 | "mio 0.6.16 (registry+https://github.com/rust-lang/crates.io-index)", 957 | "tokio-codec 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", 958 | "tokio-current-thread 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)", 959 | "tokio-executor 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)", 960 | "tokio-fs 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)", 961 | "tokio-io 0.1.9 (registry+https://github.com/rust-lang/crates.io-index)", 962 | "tokio-reactor 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)", 963 | "tokio-tcp 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)", 964 | "tokio-threadpool 0.1.7 (registry+https://github.com/rust-lang/crates.io-index)", 965 | "tokio-timer 0.2.7 (registry+https://github.com/rust-lang/crates.io-index)", 966 | "tokio-udp 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)", 967 | "tokio-uds 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)", 968 | ] 969 | 970 | [[package]] 971 | name = "tokio-codec" 972 | version = "0.1.1" 973 | source = "registry+https://github.com/rust-lang/crates.io-index" 974 | dependencies = [ 975 | "bytes 0.4.10 (registry+https://github.com/rust-lang/crates.io-index)", 976 | "futures 0.1.24 (registry+https://github.com/rust-lang/crates.io-index)", 977 | "tokio-io 0.1.9 (registry+https://github.com/rust-lang/crates.io-index)", 978 | ] 979 | 980 | [[package]] 981 | name = "tokio-current-thread" 982 | version = "0.1.3" 983 | source = "registry+https://github.com/rust-lang/crates.io-index" 984 | dependencies = [ 985 | "futures 0.1.24 (registry+https://github.com/rust-lang/crates.io-index)", 986 | "tokio-executor 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)", 987 | ] 988 | 989 | [[package]] 990 | name = "tokio-executor" 991 | version = "0.1.5" 992 | source = "registry+https://github.com/rust-lang/crates.io-index" 993 | dependencies = [ 994 | "futures 0.1.24 (registry+https://github.com/rust-lang/crates.io-index)", 995 | ] 996 | 997 | [[package]] 998 | name = "tokio-fs" 999 | version = "0.1.3" 1000 | source = "registry+https://github.com/rust-lang/crates.io-index" 1001 | dependencies = [ 1002 | "futures 0.1.24 (registry+https://github.com/rust-lang/crates.io-index)", 1003 | "tokio-io 0.1.9 (registry+https://github.com/rust-lang/crates.io-index)", 1004 | "tokio-threadpool 0.1.7 (registry+https://github.com/rust-lang/crates.io-index)", 1005 | ] 1006 | 1007 | [[package]] 1008 | name = "tokio-io" 1009 | version = "0.1.9" 1010 | source = "registry+https://github.com/rust-lang/crates.io-index" 1011 | dependencies = [ 1012 | "bytes 0.4.10 (registry+https://github.com/rust-lang/crates.io-index)", 1013 | "futures 0.1.24 (registry+https://github.com/rust-lang/crates.io-index)", 1014 | "log 0.4.5 (registry+https://github.com/rust-lang/crates.io-index)", 1015 | ] 1016 | 1017 | [[package]] 1018 | name = "tokio-reactor" 1019 | version = "0.1.6" 1020 | source = "registry+https://github.com/rust-lang/crates.io-index" 1021 | dependencies = [ 1022 | "crossbeam-utils 0.5.0 (registry+https://github.com/rust-lang/crates.io-index)", 1023 | "futures 0.1.24 (registry+https://github.com/rust-lang/crates.io-index)", 1024 | "lazy_static 1.1.0 (registry+https://github.com/rust-lang/crates.io-index)", 1025 | "log 0.4.5 (registry+https://github.com/rust-lang/crates.io-index)", 1026 | "mio 0.6.16 (registry+https://github.com/rust-lang/crates.io-index)", 1027 | "num_cpus 1.8.0 (registry+https://github.com/rust-lang/crates.io-index)", 1028 | "parking_lot 0.6.4 (registry+https://github.com/rust-lang/crates.io-index)", 1029 | "slab 0.4.1 (registry+https://github.com/rust-lang/crates.io-index)", 1030 | "tokio-executor 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)", 1031 | "tokio-io 0.1.9 (registry+https://github.com/rust-lang/crates.io-index)", 1032 | ] 1033 | 1034 | [[package]] 1035 | name = "tokio-tcp" 1036 | version = "0.1.2" 1037 | source = "registry+https://github.com/rust-lang/crates.io-index" 1038 | dependencies = [ 1039 | "bytes 0.4.10 (registry+https://github.com/rust-lang/crates.io-index)", 1040 | "futures 0.1.24 (registry+https://github.com/rust-lang/crates.io-index)", 1041 | "iovec 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)", 1042 | "mio 0.6.16 (registry+https://github.com/rust-lang/crates.io-index)", 1043 | "tokio-io 0.1.9 (registry+https://github.com/rust-lang/crates.io-index)", 1044 | "tokio-reactor 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)", 1045 | ] 1046 | 1047 | [[package]] 1048 | name = "tokio-threadpool" 1049 | version = "0.1.7" 1050 | source = "registry+https://github.com/rust-lang/crates.io-index" 1051 | dependencies = [ 1052 | "crossbeam-deque 0.6.1 (registry+https://github.com/rust-lang/crates.io-index)", 1053 | "crossbeam-utils 0.5.0 (registry+https://github.com/rust-lang/crates.io-index)", 1054 | "futures 0.1.24 (registry+https://github.com/rust-lang/crates.io-index)", 1055 | "log 0.4.5 (registry+https://github.com/rust-lang/crates.io-index)", 1056 | "num_cpus 1.8.0 (registry+https://github.com/rust-lang/crates.io-index)", 1057 | "rand 0.5.5 (registry+https://github.com/rust-lang/crates.io-index)", 1058 | "tokio-executor 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)", 1059 | ] 1060 | 1061 | [[package]] 1062 | name = "tokio-timer" 1063 | version = "0.2.7" 1064 | source = "registry+https://github.com/rust-lang/crates.io-index" 1065 | dependencies = [ 1066 | "crossbeam-utils 0.5.0 (registry+https://github.com/rust-lang/crates.io-index)", 1067 | "futures 0.1.24 (registry+https://github.com/rust-lang/crates.io-index)", 1068 | "slab 0.4.1 (registry+https://github.com/rust-lang/crates.io-index)", 1069 | "tokio-executor 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)", 1070 | ] 1071 | 1072 | [[package]] 1073 | name = "tokio-udp" 1074 | version = "0.1.2" 1075 | source = "registry+https://github.com/rust-lang/crates.io-index" 1076 | dependencies = [ 1077 | "bytes 0.4.10 (registry+https://github.com/rust-lang/crates.io-index)", 1078 | "futures 0.1.24 (registry+https://github.com/rust-lang/crates.io-index)", 1079 | "log 0.4.5 (registry+https://github.com/rust-lang/crates.io-index)", 1080 | "mio 0.6.16 (registry+https://github.com/rust-lang/crates.io-index)", 1081 | "tokio-codec 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", 1082 | "tokio-io 0.1.9 (registry+https://github.com/rust-lang/crates.io-index)", 1083 | "tokio-reactor 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)", 1084 | ] 1085 | 1086 | [[package]] 1087 | name = "tokio-uds" 1088 | version = "0.2.2" 1089 | source = "registry+https://github.com/rust-lang/crates.io-index" 1090 | dependencies = [ 1091 | "bytes 0.4.10 (registry+https://github.com/rust-lang/crates.io-index)", 1092 | "futures 0.1.24 (registry+https://github.com/rust-lang/crates.io-index)", 1093 | "iovec 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)", 1094 | "libc 0.2.43 (registry+https://github.com/rust-lang/crates.io-index)", 1095 | "log 0.4.5 (registry+https://github.com/rust-lang/crates.io-index)", 1096 | "mio 0.6.16 (registry+https://github.com/rust-lang/crates.io-index)", 1097 | "mio-uds 0.6.7 (registry+https://github.com/rust-lang/crates.io-index)", 1098 | "tokio-io 0.1.9 (registry+https://github.com/rust-lang/crates.io-index)", 1099 | "tokio-reactor 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)", 1100 | ] 1101 | 1102 | [[package]] 1103 | name = "toml" 1104 | version = "0.4.7" 1105 | source = "registry+https://github.com/rust-lang/crates.io-index" 1106 | dependencies = [ 1107 | "serde 1.0.79 (registry+https://github.com/rust-lang/crates.io-index)", 1108 | ] 1109 | 1110 | [[package]] 1111 | name = "try-lock" 1112 | version = "0.2.2" 1113 | source = "registry+https://github.com/rust-lang/crates.io-index" 1114 | 1115 | [[package]] 1116 | name = "unicase" 1117 | version = "1.4.2" 1118 | source = "registry+https://github.com/rust-lang/crates.io-index" 1119 | dependencies = [ 1120 | "version_check 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)", 1121 | ] 1122 | 1123 | [[package]] 1124 | name = "unicase" 1125 | version = "2.1.0" 1126 | source = "registry+https://github.com/rust-lang/crates.io-index" 1127 | dependencies = [ 1128 | "version_check 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)", 1129 | ] 1130 | 1131 | [[package]] 1132 | name = "unicode-bidi" 1133 | version = "0.3.4" 1134 | source = "registry+https://github.com/rust-lang/crates.io-index" 1135 | dependencies = [ 1136 | "matches 0.1.8 (registry+https://github.com/rust-lang/crates.io-index)", 1137 | ] 1138 | 1139 | [[package]] 1140 | name = "unicode-normalization" 1141 | version = "0.1.7" 1142 | source = "registry+https://github.com/rust-lang/crates.io-index" 1143 | 1144 | [[package]] 1145 | name = "unicode-xid" 1146 | version = "0.0.4" 1147 | source = "registry+https://github.com/rust-lang/crates.io-index" 1148 | 1149 | [[package]] 1150 | name = "unreachable" 1151 | version = "1.0.0" 1152 | source = "registry+https://github.com/rust-lang/crates.io-index" 1153 | dependencies = [ 1154 | "void 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)", 1155 | ] 1156 | 1157 | [[package]] 1158 | name = "url" 1159 | version = "1.7.1" 1160 | source = "registry+https://github.com/rust-lang/crates.io-index" 1161 | dependencies = [ 1162 | "idna 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)", 1163 | "matches 0.1.8 (registry+https://github.com/rust-lang/crates.io-index)", 1164 | "percent-encoding 1.0.1 (registry+https://github.com/rust-lang/crates.io-index)", 1165 | ] 1166 | 1167 | [[package]] 1168 | name = "urlencoding" 1169 | version = "1.0.0" 1170 | source = "registry+https://github.com/rust-lang/crates.io-index" 1171 | 1172 | [[package]] 1173 | name = "user32-sys" 1174 | version = "0.2.0" 1175 | source = "registry+https://github.com/rust-lang/crates.io-index" 1176 | dependencies = [ 1177 | "winapi 0.2.8 (registry+https://github.com/rust-lang/crates.io-index)", 1178 | "winapi-build 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", 1179 | ] 1180 | 1181 | [[package]] 1182 | name = "uuid" 1183 | version = "0.7.1" 1184 | source = "registry+https://github.com/rust-lang/crates.io-index" 1185 | dependencies = [ 1186 | "rand 0.5.5 (registry+https://github.com/rust-lang/crates.io-index)", 1187 | ] 1188 | 1189 | [[package]] 1190 | name = "vcpkg" 1191 | version = "0.2.6" 1192 | source = "registry+https://github.com/rust-lang/crates.io-index" 1193 | 1194 | [[package]] 1195 | name = "version_check" 1196 | version = "0.1.5" 1197 | source = "registry+https://github.com/rust-lang/crates.io-index" 1198 | 1199 | [[package]] 1200 | name = "void" 1201 | version = "1.0.2" 1202 | source = "registry+https://github.com/rust-lang/crates.io-index" 1203 | 1204 | [[package]] 1205 | name = "want" 1206 | version = "0.0.6" 1207 | source = "registry+https://github.com/rust-lang/crates.io-index" 1208 | dependencies = [ 1209 | "futures 0.1.24 (registry+https://github.com/rust-lang/crates.io-index)", 1210 | "log 0.4.5 (registry+https://github.com/rust-lang/crates.io-index)", 1211 | "try-lock 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)", 1212 | ] 1213 | 1214 | [[package]] 1215 | name = "web-view" 1216 | version = "0.2.1" 1217 | source = "registry+https://github.com/rust-lang/crates.io-index" 1218 | dependencies = [ 1219 | "fnv 1.0.6 (registry+https://github.com/rust-lang/crates.io-index)", 1220 | "urlencoding 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)", 1221 | "webview-sys 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)", 1222 | ] 1223 | 1224 | [[package]] 1225 | name = "webview-sys" 1226 | version = "0.1.0" 1227 | source = "registry+https://github.com/rust-lang/crates.io-index" 1228 | dependencies = [ 1229 | "bitflags 1.0.4 (registry+https://github.com/rust-lang/crates.io-index)", 1230 | "cc 1.0.25 (registry+https://github.com/rust-lang/crates.io-index)", 1231 | "pkg-config 0.3.14 (registry+https://github.com/rust-lang/crates.io-index)", 1232 | ] 1233 | 1234 | [[package]] 1235 | name = "winapi" 1236 | version = "0.2.8" 1237 | source = "registry+https://github.com/rust-lang/crates.io-index" 1238 | 1239 | [[package]] 1240 | name = "winapi" 1241 | version = "0.3.6" 1242 | source = "registry+https://github.com/rust-lang/crates.io-index" 1243 | dependencies = [ 1244 | "winapi-i686-pc-windows-gnu 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)", 1245 | "winapi-x86_64-pc-windows-gnu 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)", 1246 | ] 1247 | 1248 | [[package]] 1249 | name = "winapi-build" 1250 | version = "0.1.1" 1251 | source = "registry+https://github.com/rust-lang/crates.io-index" 1252 | 1253 | [[package]] 1254 | name = "winapi-i686-pc-windows-gnu" 1255 | version = "0.4.0" 1256 | source = "registry+https://github.com/rust-lang/crates.io-index" 1257 | 1258 | [[package]] 1259 | name = "winapi-x86_64-pc-windows-gnu" 1260 | version = "0.4.0" 1261 | source = "registry+https://github.com/rust-lang/crates.io-index" 1262 | 1263 | [[package]] 1264 | name = "winres" 1265 | version = "0.1.6" 1266 | source = "registry+https://github.com/rust-lang/crates.io-index" 1267 | dependencies = [ 1268 | "toml 0.4.7 (registry+https://github.com/rust-lang/crates.io-index)", 1269 | ] 1270 | 1271 | [[package]] 1272 | name = "winrt" 1273 | version = "0.4.0" 1274 | source = "registry+https://github.com/rust-lang/crates.io-index" 1275 | dependencies = [ 1276 | "winapi 0.3.6 (registry+https://github.com/rust-lang/crates.io-index)", 1277 | ] 1278 | 1279 | [[package]] 1280 | name = "winrt" 1281 | version = "0.5.1" 1282 | source = "registry+https://github.com/rust-lang/crates.io-index" 1283 | dependencies = [ 1284 | "winapi 0.3.6 (registry+https://github.com/rust-lang/crates.io-index)", 1285 | ] 1286 | 1287 | [[package]] 1288 | name = "winrt-notification" 1289 | version = "0.2.2" 1290 | source = "registry+https://github.com/rust-lang/crates.io-index" 1291 | dependencies = [ 1292 | "strum 0.8.0 (registry+https://github.com/rust-lang/crates.io-index)", 1293 | "strum_macros 0.8.0 (registry+https://github.com/rust-lang/crates.io-index)", 1294 | "winapi 0.3.6 (registry+https://github.com/rust-lang/crates.io-index)", 1295 | "winrt 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)", 1296 | "xml-rs 0.6.1 (registry+https://github.com/rust-lang/crates.io-index)", 1297 | ] 1298 | 1299 | [[package]] 1300 | name = "ws2_32-sys" 1301 | version = "0.2.1" 1302 | source = "registry+https://github.com/rust-lang/crates.io-index" 1303 | dependencies = [ 1304 | "winapi 0.2.8 (registry+https://github.com/rust-lang/crates.io-index)", 1305 | "winapi-build 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", 1306 | ] 1307 | 1308 | [[package]] 1309 | name = "xml-rs" 1310 | version = "0.6.1" 1311 | source = "registry+https://github.com/rust-lang/crates.io-index" 1312 | dependencies = [ 1313 | "bitflags 0.9.1 (registry+https://github.com/rust-lang/crates.io-index)", 1314 | ] 1315 | 1316 | [metadata] 1317 | "checksum adler32 1.0.3 (registry+https://github.com/rust-lang/crates.io-index)" = "7e522997b529f05601e05166c07ed17789691f562762c7f3b987263d2dedee5c" 1318 | "checksum arrayvec 0.4.7 (registry+https://github.com/rust-lang/crates.io-index)" = "a1e964f9e24d588183fcb43503abda40d288c8657dfc27311516ce2f05675aef" 1319 | "checksum backtrace 0.3.9 (registry+https://github.com/rust-lang/crates.io-index)" = "89a47830402e9981c5c41223151efcced65a0510c13097c769cede7efb34782a" 1320 | "checksum backtrace-sys 0.1.24 (registry+https://github.com/rust-lang/crates.io-index)" = "c66d56ac8dabd07f6aacdaf633f4b8262f5b3601a810a0dcddffd5c22c69daa0" 1321 | "checksum base64 0.9.3 (registry+https://github.com/rust-lang/crates.io-index)" = "489d6c0ed21b11d038c31b6ceccca973e65d73ba3bd8ecb9a2babf5546164643" 1322 | "checksum bitflags 0.9.1 (registry+https://github.com/rust-lang/crates.io-index)" = "4efd02e230a02e18f92fc2735f44597385ed02ad8f831e7c1c1156ee5e1ab3a5" 1323 | "checksum bitflags 1.0.4 (registry+https://github.com/rust-lang/crates.io-index)" = "228047a76f468627ca71776ecdebd732a3423081fcf5125585bcd7c49886ce12" 1324 | "checksum block 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)" = "0d8c1fef690941d3e7788d328517591fecc684c084084702d6ff1641e993699a" 1325 | "checksum build_const 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)" = "39092a32794787acd8525ee150305ff051b0aa6cc2abaf193924f5ab05425f39" 1326 | "checksum byteorder 1.2.6 (registry+https://github.com/rust-lang/crates.io-index)" = "90492c5858dd7d2e78691cfb89f90d273a2800fc11d98f60786e5d87e2f83781" 1327 | "checksum bytes 0.4.10 (registry+https://github.com/rust-lang/crates.io-index)" = "0ce55bd354b095246fc34caf4e9e242f5297a7fd938b090cadfea6eee614aa62" 1328 | "checksum cc 1.0.25 (registry+https://github.com/rust-lang/crates.io-index)" = "f159dfd43363c4d08055a07703eb7a3406b0dac4d0584d96965a3262db3c9d16" 1329 | "checksum cfg-if 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)" = "0c4e7bb64a8ebb0d856483e1e682ea3422f883c5f5615a90d51a2c82fe87fdd3" 1330 | "checksum chrono 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)" = "45912881121cb26fad7c38c17ba7daa18764771836b34fab7d3fbd93ed633878" 1331 | "checksum cloudabi 0.0.3 (registry+https://github.com/rust-lang/crates.io-index)" = "ddfc5b9aa5d4507acaf872de71051dfd0e309860e88966e1051e462a077aac4f" 1332 | "checksum core-foundation 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)" = "286e0b41c3a20da26536c6000a280585d519fd07b3956b43aed8a79e9edce980" 1333 | "checksum core-foundation-sys 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)" = "716c271e8613ace48344f723b60b900a93150271e5be206212d052bbc0883efa" 1334 | "checksum crc 1.8.1 (registry+https://github.com/rust-lang/crates.io-index)" = "d663548de7f5cca343f1e0a48d14dcfb0e9eb4e079ec58883b7251539fa10aeb" 1335 | "checksum crossbeam-deque 0.6.1 (registry+https://github.com/rust-lang/crates.io-index)" = "3486aefc4c0487b9cb52372c97df0a48b8c249514af1ee99703bf70d2f2ceda1" 1336 | "checksum crossbeam-epoch 0.5.2 (registry+https://github.com/rust-lang/crates.io-index)" = "30fecfcac6abfef8771151f8be4abc9e4edc112c2bcb233314cafde2680536e9" 1337 | "checksum crossbeam-utils 0.5.0 (registry+https://github.com/rust-lang/crates.io-index)" = "677d453a17e8bd2b913fa38e8b9cf04bcdbb5be790aa294f2389661d72036015" 1338 | "checksum dbus 0.4.1 (registry+https://github.com/rust-lang/crates.io-index)" = "58ec7b4cac6f79f36af1cd9cfdb9b935fc5a4e899f494ee03a3a6165f7d10b4b" 1339 | "checksum dtoa 0.4.3 (registry+https://github.com/rust-lang/crates.io-index)" = "6d301140eb411af13d3115f9a562c85cc6b541ade9dfa314132244aaee7489dd" 1340 | "checksum encoding_rs 0.8.7 (registry+https://github.com/rust-lang/crates.io-index)" = "21a550ec129ca2f8593227888625c7c5331c6ad878e2cee6b7ac25e1c7d05746" 1341 | "checksum error-chain 0.10.0 (registry+https://github.com/rust-lang/crates.io-index)" = "d9435d864e017c3c6afeac1654189b06cdb491cf2ff73dbf0d73b0f292f42ff8" 1342 | "checksum fnv 1.0.6 (registry+https://github.com/rust-lang/crates.io-index)" = "2fad85553e09a6f881f739c29f0b00b0f01357c743266d478b68951ce23285f3" 1343 | "checksum foreign-types 0.3.2 (registry+https://github.com/rust-lang/crates.io-index)" = "f6f339eb8adc052cd2ca78910fda869aefa38d22d5cb648e6485e4d3fc06f3b1" 1344 | "checksum foreign-types-shared 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "00b0228411908ca8685dba7fc2cdd70ec9990a6e753e89b6ac91a84c40fbaf4b" 1345 | "checksum fuchsia-zircon 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)" = "2e9763c69ebaae630ba35f74888db465e49e259ba1bc0eda7d06f4a067615d82" 1346 | "checksum fuchsia-zircon-sys 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)" = "3dcaa9ae7725d12cdb85b3ad99a434db70b468c09ded17e012d86b5c1010f7a7" 1347 | "checksum futures 0.1.24 (registry+https://github.com/rust-lang/crates.io-index)" = "0c84b40c7e2de99ffd70602db314a7a8c26b2b3d830e6f7f7a142a8860ab3ca4" 1348 | "checksum futures-cpupool 0.1.8 (registry+https://github.com/rust-lang/crates.io-index)" = "ab90cde24b3319636588d0c35fe03b1333857621051837ed769faefb4c2162e4" 1349 | "checksum gcc 0.3.54 (registry+https://github.com/rust-lang/crates.io-index)" = "5e33ec290da0d127825013597dbdfc28bee4964690c7ce1166cbc2a7bd08b1bb" 1350 | "checksum h2 0.1.12 (registry+https://github.com/rust-lang/crates.io-index)" = "a27e7ed946e8335bdf9a191bc1b9b14a03ba822d013d2f58437f4fabcbd7fc2c" 1351 | "checksum html-minifier 1.1.2 (registry+https://github.com/rust-lang/crates.io-index)" = "f994b190481219347c266fa6e1c088b1cf73796fb776b3861751b4d2ec5e468d" 1352 | "checksum http 0.1.13 (registry+https://github.com/rust-lang/crates.io-index)" = "24f58e8c2d8e886055c3ead7b28793e1455270b5fb39650984c224bc538ba581" 1353 | "checksum httparse 1.3.3 (registry+https://github.com/rust-lang/crates.io-index)" = "e8734b0cfd3bc3e101ec59100e101c2eecd19282202e87808b3037b442777a83" 1354 | "checksum hyper 0.12.11 (registry+https://github.com/rust-lang/crates.io-index)" = "78d50abbd1790e0f4c74cb1d4a2211b439bac661d54107ad5564c55e77906762" 1355 | "checksum hyper-tls 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)" = "caaee4dea92794a9e697038bd401e264307d1f22c883dbcb6f6618ba0d3b3bd3" 1356 | "checksum idna 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)" = "38f09e0f0b1fb55fdee1f17470ad800da77af5186a1a76c026b679358b7e844e" 1357 | "checksum indexmap 1.0.1 (registry+https://github.com/rust-lang/crates.io-index)" = "08173ba1e906efb6538785a8844dd496f5d34f0a2d88038e95195172fc667220" 1358 | "checksum iovec 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)" = "dbe6e417e7d0975db6512b90796e8ce223145ac4e33c377e4a42882a0e88bb08" 1359 | "checksum itoa 0.4.3 (registry+https://github.com/rust-lang/crates.io-index)" = "1306f3464951f30e30d12373d31c79fbd52d236e5e896fd92f96ec7babbbe60b" 1360 | "checksum kernel32-sys 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)" = "7507624b29483431c0ba2d82aece8ca6cdba9382bff4ddd0f7490560c056098d" 1361 | "checksum lazy_static 1.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "ca488b89a5657b0a2ecd45b95609b3e848cf1755da332a0da46e2b2b1cb371a7" 1362 | "checksum lazycell 1.2.0 (registry+https://github.com/rust-lang/crates.io-index)" = "ddba4c30a78328befecec92fc94970e53b3ae385827d28620f0f5bb2493081e0" 1363 | "checksum libc 0.2.43 (registry+https://github.com/rust-lang/crates.io-index)" = "76e3a3ef172f1a0b9a9ff0dd1491ae5e6c948b94479a3021819ba7d860c8645d" 1364 | "checksum libflate 0.1.18 (registry+https://github.com/rust-lang/crates.io-index)" = "21138fc6669f438ed7ae3559d5789a5f0ba32f28c1f0608d1e452b0bb06ee936" 1365 | "checksum lock_api 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)" = "775751a3e69bde4df9b38dd00a1b5d6ac13791e4223d4a0506577f0dd27cfb7a" 1366 | "checksum log 0.4.5 (registry+https://github.com/rust-lang/crates.io-index)" = "d4fcce5fa49cc693c312001daf1d13411c4a5283796bac1084299ea3e567113f" 1367 | "checksum mac-notification-sys 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)" = "6a3639b6caa2db7443e5df80e12c450982f77fc3c140f53d6e48be91f965ea66" 1368 | "checksum macro-utils 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)" = "f2c4deaccc2ead6a28c16c0ba82f07d52b6475397415ce40876e559b0b0ea510" 1369 | "checksum malloc_buf 0.0.6 (registry+https://github.com/rust-lang/crates.io-index)" = "62bb907fe88d54d8d9ce32a3cceab4218ed2f6b7d35617cafe9adf84e43919cb" 1370 | "checksum matches 0.1.8 (registry+https://github.com/rust-lang/crates.io-index)" = "7ffc5c5338469d4d3ea17d269fa8ea3512ad247247c30bd2df69e68309ed0a08" 1371 | "checksum memoffset 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)" = "0f9dc261e2b62d7a622bf416ea3c5245cdd5d9a7fcc428c0d06804dfce1775b3" 1372 | "checksum mime 0.3.9 (registry+https://github.com/rust-lang/crates.io-index)" = "4b082692d3f6cf41b453af73839ce3dfc212c4411cbb2441dff80a716e38bd79" 1373 | "checksum mime_guess 2.0.0-alpha.6 (registry+https://github.com/rust-lang/crates.io-index)" = "30de2e4613efcba1ec63d8133f344076952090c122992a903359be5a4f99c3ed" 1374 | "checksum minifier 0.0.19 (registry+https://github.com/rust-lang/crates.io-index)" = "9908ed7c62f990c21ab41fdca53a864a3ada0da69d8729c4de727b397e27bc11" 1375 | "checksum mio 0.6.16 (registry+https://github.com/rust-lang/crates.io-index)" = "71646331f2619b1026cc302f87a2b8b648d5c6dd6937846a16cc8ce0f347f432" 1376 | "checksum mio-uds 0.6.7 (registry+https://github.com/rust-lang/crates.io-index)" = "966257a94e196b11bb43aca423754d87429960a768de9414f3691d6957abf125" 1377 | "checksum miow 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)" = "8c1f2f3b1cf331de6896aabf6e9d55dca90356cc9960cca7eaaf408a355ae919" 1378 | "checksum native-tls 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)" = "8b0a7bd714e83db15676d31caf968ad7318e9cc35f93c85a90231c8f22867549" 1379 | "checksum net2 0.2.33 (registry+https://github.com/rust-lang/crates.io-index)" = "42550d9fb7b6684a6d404d9fa7250c2eb2646df731d1c06afc06dcee9e1bcf88" 1380 | "checksum nodrop 0.1.12 (registry+https://github.com/rust-lang/crates.io-index)" = "9a2228dca57108069a5262f2ed8bd2e82496d2e074a06d1ccc7ce1687b6ae0a2" 1381 | "checksum notify-rust 3.4.2 (registry+https://github.com/rust-lang/crates.io-index)" = "0e58d0671a337f5616ada6b4fca9d792948c5ab03e6ce9376f9b7f31aa31545c" 1382 | "checksum num-integer 0.1.39 (registry+https://github.com/rust-lang/crates.io-index)" = "e83d528d2677f0518c570baf2b7abdcf0cd2d248860b68507bdcb3e91d4c0cea" 1383 | "checksum num-traits 0.2.6 (registry+https://github.com/rust-lang/crates.io-index)" = "0b3a5d7cc97d6d30d8b9bc8fa19bf45349ffe46241e8816f50f62f6d6aaabee1" 1384 | "checksum num_cpus 1.8.0 (registry+https://github.com/rust-lang/crates.io-index)" = "c51a3322e4bca9d212ad9a158a02abc6934d005490c054a2778df73a70aa0a30" 1385 | "checksum objc 0.2.5 (registry+https://github.com/rust-lang/crates.io-index)" = "9833ab0efe5361b1e2122a0544a5d3359576911a42cb098c2e59be8650807367" 1386 | "checksum objc-foundation 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "1add1b659e36c9607c7aab864a76c7a4c2760cd0cd2e120f3fb8b952c7e22bf9" 1387 | "checksum objc_id 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "c92d4ddb4bd7b50d730c215ff871754d0da6b2178849f8a2a2ab69712d0c073b" 1388 | "checksum openssl 0.10.12 (registry+https://github.com/rust-lang/crates.io-index)" = "5e2e79eede055813a3ac52fb3915caf8e1c9da2dec1587871aec9f6f7b48508d" 1389 | "checksum openssl-probe 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)" = "77af24da69f9d9341038eba93a073b1fdaaa1b788221b00a69bce9e762cb32de" 1390 | "checksum openssl-sys 0.9.36 (registry+https://github.com/rust-lang/crates.io-index)" = "409d77eeb492a1aebd6eb322b2ee72ff7c7496b4434d98b3bf8be038755de65e" 1391 | "checksum owning_ref 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)" = "cdf84f41639e037b484f93433aa3897863b561ed65c6e59c7073d7c561710f37" 1392 | "checksum parking_lot 0.6.4 (registry+https://github.com/rust-lang/crates.io-index)" = "f0802bff09003b291ba756dc7e79313e51cc31667e94afbe847def490424cde5" 1393 | "checksum parking_lot_core 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)" = "ad7f7e6ebdc79edff6fdcb87a55b620174f7a989e3eb31b65231f4af57f00b8c" 1394 | "checksum percent-encoding 1.0.1 (registry+https://github.com/rust-lang/crates.io-index)" = "31010dd2e1ac33d5b46a5b413495239882813e0369f8ed8a5e266f173602f831" 1395 | "checksum phf 0.7.23 (registry+https://github.com/rust-lang/crates.io-index)" = "cec29da322b242f4c3098852c77a0ca261c9c01b806cae85a5572a1eb94db9a6" 1396 | "checksum phf_codegen 0.7.23 (registry+https://github.com/rust-lang/crates.io-index)" = "7d187f00cd98d5afbcd8898f6cf181743a449162aeb329dcd2f3849009e605ad" 1397 | "checksum phf_generator 0.7.23 (registry+https://github.com/rust-lang/crates.io-index)" = "03dc191feb9b08b0dc1330d6549b795b9d81aec19efe6b4a45aec8d4caee0c4b" 1398 | "checksum phf_shared 0.7.23 (registry+https://github.com/rust-lang/crates.io-index)" = "b539898d22d4273ded07f64a05737649dc69095d92cb87c7097ec68e3f150b93" 1399 | "checksum pkg-config 0.3.14 (registry+https://github.com/rust-lang/crates.io-index)" = "676e8eb2b1b4c9043511a9b7bea0915320d7e502b0a079fb03f9635a5252b18c" 1400 | "checksum quote 0.3.15 (registry+https://github.com/rust-lang/crates.io-index)" = "7a6e920b65c65f10b2ae65c831a81a073a89edd28c7cce89475bff467ab4167a" 1401 | "checksum rand 0.5.5 (registry+https://github.com/rust-lang/crates.io-index)" = "e464cd887e869cddcae8792a4ee31d23c7edd516700695608f5b98c67ee0131c" 1402 | "checksum rand_core 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)" = "edecf0f94da5551fc9b492093e30b041a891657db7940ee221f9d2f66e82eef2" 1403 | "checksum redox_syscall 0.1.40 (registry+https://github.com/rust-lang/crates.io-index)" = "c214e91d3ecf43e9a4e41e578973adeb14b474f2bee858742d127af75a0112b1" 1404 | "checksum remove_dir_all 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)" = "3488ba1b9a2084d38645c4c08276a1752dcbf2c7130d74f1569681ad5d2799c5" 1405 | "checksum reqwest 0.9.2 (registry+https://github.com/rust-lang/crates.io-index)" = "1d68c7bf0b1dc3860b80c6d31d05808bf54cdc1bfc70a4680893791becd083ae" 1406 | "checksum rustc-demangle 0.1.9 (registry+https://github.com/rust-lang/crates.io-index)" = "bcfe5b13211b4d78e5c2cadfebd7769197d95c639c35a50057eb4c05de811395" 1407 | "checksum rustc_version 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)" = "138e3e0acb6c9fb258b19b67cb8abd63c00679d2851805ea151465464fe9030a" 1408 | "checksum ryu 0.2.6 (registry+https://github.com/rust-lang/crates.io-index)" = "7153dd96dade874ab973e098cb62fcdbb89a03682e46b144fd09550998d4a4a7" 1409 | "checksum safemem 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)" = "8dca453248a96cb0749e36ccdfe2b0b4e54a61bfef89fb97ec621eb8e0a93dd9" 1410 | "checksum schannel 0.1.14 (registry+https://github.com/rust-lang/crates.io-index)" = "0e1a231dc10abf6749cfa5d7767f25888d484201accbd919b66ab5413c502d56" 1411 | "checksum scopeguard 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)" = "94258f53601af11e6a49f722422f6e3425c52b06245a5cf9bc09908b174f5e27" 1412 | "checksum security-framework 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)" = "697d3f3c23a618272ead9e1fb259c1411102b31c6af8b93f1d64cca9c3b0e8e0" 1413 | "checksum security-framework-sys 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)" = "ab01dfbe5756785b5b4d46e0289e5a18071dfa9a7c2b24213ea00b9ef9b665bf" 1414 | "checksum semver 0.9.0 (registry+https://github.com/rust-lang/crates.io-index)" = "1d7eb9ef2c18661902cc47e535f9bc51b78acd254da71d375c2f6720d9a40403" 1415 | "checksum semver-parser 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)" = "388a1df253eca08550bef6c72392cfe7c30914bf41df5269b68cbd6ff8f570a3" 1416 | "checksum serde 1.0.79 (registry+https://github.com/rust-lang/crates.io-index)" = "84257ccd054dc351472528c8587b4de2dbf0dc0fe2e634030c1a90bfdacebaa9" 1417 | "checksum serde_json 1.0.31 (registry+https://github.com/rust-lang/crates.io-index)" = "bb47a3d5c84320222f66d7db21157c4a7407755de41798f9b4c1c40593397b1a" 1418 | "checksum serde_urlencoded 0.5.3 (registry+https://github.com/rust-lang/crates.io-index)" = "aaed41d9fb1e2f587201b863356590c90c1157495d811430a0c0325fe8169650" 1419 | "checksum siphasher 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)" = "0b8de496cf83d4ed58b6be86c3a275b8602f6ffe98d3024a869e124147a9a3ac" 1420 | "checksum slab 0.4.1 (registry+https://github.com/rust-lang/crates.io-index)" = "5f9776d6b986f77b35c6cf846c11ad986ff128fe0b2b63a3628e3755e8d3102d" 1421 | "checksum smallvec 0.6.5 (registry+https://github.com/rust-lang/crates.io-index)" = "153ffa32fd170e9944f7e0838edf824a754ec4c1fc64746fcc9fe1f8fa602e5d" 1422 | "checksum stable_deref_trait 1.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "dba1a27d3efae4351c8051072d619e3ade2820635c3958d826bfea39d59b54c8" 1423 | "checksum string 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "00caf261d6f90f588f8450b8e1230fa0d5be49ee6140fdfbcb55335aff350970" 1424 | "checksum strum 0.8.0 (registry+https://github.com/rust-lang/crates.io-index)" = "4ca6e4730f517e041e547ffe23d29daab8de6b73af4b6ae2a002108169f5e7da" 1425 | "checksum strum_macros 0.8.0 (registry+https://github.com/rust-lang/crates.io-index)" = "3384590878eb0cab3b128e844412e2d010821e7e091211b9d87324173ada7db8" 1426 | "checksum syn 0.11.11 (registry+https://github.com/rust-lang/crates.io-index)" = "d3b891b9015c88c576343b9b3e41c2c11a51c219ef067b264bd9c8aa9b441dad" 1427 | "checksum synom 0.11.3 (registry+https://github.com/rust-lang/crates.io-index)" = "a393066ed9010ebaed60b9eafa373d4b1baac186dd7e008555b0f702b51945b6" 1428 | "checksum tempfile 3.0.4 (registry+https://github.com/rust-lang/crates.io-index)" = "55c1195ef8513f3273d55ff59fe5da6940287a0d7a98331254397f464833675b" 1429 | "checksum time 0.1.40 (registry+https://github.com/rust-lang/crates.io-index)" = "d825be0eb33fda1a7e68012d51e9c7f451dc1a69391e7fdc197060bb8c56667b" 1430 | "checksum tokio 0.1.11 (registry+https://github.com/rust-lang/crates.io-index)" = "6e93c78d23cc61aa245a8acd2c4a79c4d7fa7fb5c3ca90d5737029f043a84895" 1431 | "checksum tokio-codec 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "5c501eceaf96f0e1793cf26beb63da3d11c738c4a943fdf3746d81d64684c39f" 1432 | "checksum tokio-current-thread 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)" = "f90fcd90952f0a496d438a976afba8e5c205fb12123f813d8ab3aa1c8436638c" 1433 | "checksum tokio-executor 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)" = "c117b6cf86bb730aab4834f10df96e4dd586eff2c3c27d3781348da49e255bde" 1434 | "checksum tokio-fs 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)" = "b5cbe4ca6e71cb0b62a66e4e6f53a8c06a6eefe46cc5f665ad6f274c9906f135" 1435 | "checksum tokio-io 0.1.9 (registry+https://github.com/rust-lang/crates.io-index)" = "8b8a85fffbec3c5ab1ab62324570230dcd37ee5996a7859da5caf7b9d45e3e8c" 1436 | "checksum tokio-reactor 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)" = "4b26fd37f1125738b2170c80b551f69ff6fecb277e6e5ca885e53eec2b005018" 1437 | "checksum tokio-tcp 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)" = "7ad235e9dadd126b2d47f6736f65aa1fdcd6420e66ca63f44177bc78df89f912" 1438 | "checksum tokio-threadpool 0.1.7 (registry+https://github.com/rust-lang/crates.io-index)" = "bbd8a8b911301c60cbfaa2a6588fb210e5c1038375b8bdecc47aa09a94c3c05f" 1439 | "checksum tokio-timer 0.2.7 (registry+https://github.com/rust-lang/crates.io-index)" = "3a52f00c97fedb6d535d27f65cccb7181c8dd4c6edc3eda9ea93f6d45d05168e" 1440 | "checksum tokio-udp 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)" = "da941144b816d0dcda4db3a1ba87596e4df5e860a72b70783fe435891f80601c" 1441 | "checksum tokio-uds 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)" = "22e3aa6d1fcc19e635418dc0a30ab5bd65d347973d6f43f1a37bf8d9d1335fc9" 1442 | "checksum toml 0.4.7 (registry+https://github.com/rust-lang/crates.io-index)" = "b7e7d59d55f36979a9dd86d71ae54657a5e9c7fdb4fa2212f4064e2d32f9dcda" 1443 | "checksum try-lock 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)" = "e604eb7b43c06650e854be16a2a03155743d3752dd1c943f6829e26b7a36e382" 1444 | "checksum unicase 1.4.2 (registry+https://github.com/rust-lang/crates.io-index)" = "7f4765f83163b74f957c797ad9253caf97f103fb064d3999aea9568d09fc8a33" 1445 | "checksum unicase 2.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "284b6d3db520d67fbe88fd778c21510d1b0ba4a551e5d0fbb023d33405f6de8a" 1446 | "checksum unicode-bidi 0.3.4 (registry+https://github.com/rust-lang/crates.io-index)" = "49f2bd0c6468a8230e1db229cff8029217cf623c767ea5d60bfbd42729ea54d5" 1447 | "checksum unicode-normalization 0.1.7 (registry+https://github.com/rust-lang/crates.io-index)" = "6a0180bc61fc5a987082bfa111f4cc95c4caff7f9799f3e46df09163a937aa25" 1448 | "checksum unicode-xid 0.0.4 (registry+https://github.com/rust-lang/crates.io-index)" = "8c1f860d7d29cf02cb2f3f359fd35991af3d30bac52c57d265a3c461074cb4dc" 1449 | "checksum unreachable 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)" = "382810877fe448991dfc7f0dd6e3ae5d58088fd0ea5e35189655f84e6814fa56" 1450 | "checksum url 1.7.1 (registry+https://github.com/rust-lang/crates.io-index)" = "2a321979c09843d272956e73700d12c4e7d3d92b2ee112b31548aef0d4efc5a6" 1451 | "checksum urlencoding 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)" = "3df3561629a8bb4c57e5a2e4c43348d9e29c7c29d9b1c4c1f47166deca8f37ed" 1452 | "checksum user32-sys 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)" = "4ef4711d107b21b410a3a974b1204d9accc8b10dad75d8324b5d755de1617d47" 1453 | "checksum uuid 0.7.1 (registry+https://github.com/rust-lang/crates.io-index)" = "dab5c5526c5caa3d106653401a267fed923e7046f35895ffcb5ca42db64942e6" 1454 | "checksum vcpkg 0.2.6 (registry+https://github.com/rust-lang/crates.io-index)" = "def296d3eb3b12371b2c7d0e83bfe1403e4db2d7a0bba324a12b21c4ee13143d" 1455 | "checksum version_check 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)" = "914b1a6776c4c929a602fafd8bc742e06365d4bcbe48c30f9cca5824f70dc9dd" 1456 | "checksum void 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)" = "6a02e4885ed3bc0f2de90ea6dd45ebcbb66dacffe03547fadbb0eeae2770887d" 1457 | "checksum want 0.0.6 (registry+https://github.com/rust-lang/crates.io-index)" = "797464475f30ddb8830cc529aaaae648d581f99e2036a928877dfde027ddf6b3" 1458 | "checksum web-view 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)" = "ce816fef17af3518d15417a2ca31076ce720704fd91f1aa9a2807b8ce933dc9f" 1459 | "checksum webview-sys 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "cf132b1194e12c43eb22cb73a93d7a258d2c0bf73e638e2f0de21f5016a783e4" 1460 | "checksum winapi 0.2.8 (registry+https://github.com/rust-lang/crates.io-index)" = "167dc9d6949a9b857f3451275e911c3f44255842c1f7a76f33c55103a909087a" 1461 | "checksum winapi 0.3.6 (registry+https://github.com/rust-lang/crates.io-index)" = "92c1eb33641e276cfa214a0522acad57be5c56b10cb348b3c5117db75f3ac4b0" 1462 | "checksum winapi-build 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "2d315eee3b34aca4797b2da6b13ed88266e6d612562a0c46390af8299fc699bc" 1463 | "checksum winapi-i686-pc-windows-gnu 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)" = "ac3b87c63620426dd9b991e5ce0329eff545bccbbb34f3be09ff6fb6ab51b7b6" 1464 | "checksum winapi-x86_64-pc-windows-gnu 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)" = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f" 1465 | "checksum winres 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)" = "f07dabda4e79413ecac65bc9a2234ad3d85dc49f9d289f868cd9d8611d88f28d" 1466 | "checksum winrt 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)" = "7e30cba82e22b083dc5a422c2ee77e20dc7927271a0dc981360c57c1453cb48d" 1467 | "checksum winrt 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)" = "0c4c01eac5a45f4fcb31db47886257ff0b0ec8958b581ff841b0d992a7e97f94" 1468 | "checksum winrt-notification 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)" = "6c31a65da50d792c6f9bd2e3216249566c4fb1d2d34f9b7d2d66d2e93f62a242" 1469 | "checksum ws2_32-sys 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)" = "d59cefebd0c892fa2dd6de581e937301d8552cb44489cdff035c6187cb63fa5e" 1470 | "checksum xml-rs 0.6.1 (registry+https://github.com/rust-lang/crates.io-index)" = "e1945e12e16b951721d7976520b0832496ef79c31602c7a29d950de79ba74621" 1471 | -------------------------------------------------------------------------------- /Cargo.toml: -------------------------------------------------------------------------------- 1 | # 2 | # kyo-rs - Rust rewrite of kyo, a modern osu! server switcher 3 | # Copyright (C) 2018 Marc3842h 4 | # 5 | # This program is free software: you can redistribute it and/or modify 6 | # it under the terms of the GNU Lesser General Public License as published 7 | # by the Free Software Foundation, either version 3 of the License, or 8 | # (at your option) any later version. 9 | # 10 | # This program is distributed in the hope that it will be useful, 11 | # but WITHOUT ANY WARRANTY; without even the implied warranty of 12 | # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 | # GNU Lesser General Public License for more details. 14 | # 15 | # You should have received a copy of the GNU Lesser General Public License 16 | # along with this program. If not, see . 17 | # 18 | 19 | [package] 20 | name = "kyo-rs" 21 | version = "0.0.1" 22 | authors = [ "Marc3842h " ] 23 | readme = "README.md" 24 | publish = false 25 | build = "build.rs" 26 | 27 | [dependencies] 28 | web-view = "0.2.1" 29 | serde_json = "1.0.31" 30 | libc = "0.2.43" 31 | hyper = "0.12.11" 32 | reqwest = "0.9.2" 33 | 34 | [build-dependencies] 35 | html-minifier = "1.1.2" 36 | base64 = "0.9.3" 37 | 38 | [target.'cfg(windows)'.dependencies] 39 | winapi = { version = "0.3.6", features = [ "shellapi", "wincrypt" ] } 40 | user32-sys = "0.2.0" 41 | winrt = { version = "0.5.1", features = [ "windows-data", "windows-ui" ] } 42 | winrt-notification = "0.2.2" 43 | 44 | [target.'cfg(windows)'.build-dependencies] 45 | winres = "0.1.6" 46 | 47 | [target.'cfg(unix)'.dependencies] 48 | notify-rust = "3.4.2" 49 | -------------------------------------------------------------------------------- /LICENSE.txt: -------------------------------------------------------------------------------- 1 | GNU LESSER GENERAL PUBLIC LICENSE 2 | Version 3, 29 June 2007 3 | 4 | Copyright (C) 2007 Free Software Foundation, Inc. 5 | Everyone is permitted to copy and distribute verbatim copies 6 | of this license document, but changing it is not allowed. 7 | 8 | 9 | This version of the GNU Lesser General Public License incorporates 10 | the terms and conditions of version 3 of the GNU General Public 11 | License, supplemented by the additional permissions listed below. 12 | 13 | 0. Additional Definitions. 14 | 15 | As used herein, "this License" refers to version 3 of the GNU Lesser 16 | General Public License, and the "GNU GPL" refers to version 3 of the GNU 17 | General Public License. 18 | 19 | "The Library" refers to a covered work governed by this License, 20 | other than an Application or a Combined Work as defined below. 21 | 22 | An "Application" is any work that makes use of an interface provided 23 | by the Library, but which is not otherwise based on the Library. 24 | Defining a subclass of a class defined by the Library is deemed a mode 25 | of using an interface provided by the Library. 26 | 27 | A "Combined Work" is a work produced by combining or linking an 28 | Application with the Library. The particular version of the Library 29 | with which the Combined Work was made is also called the "Linked 30 | Version". 31 | 32 | The "Minimal Corresponding Source" for a Combined Work means the 33 | Corresponding Source for the Combined Work, excluding any source code 34 | for portions of the Combined Work that, considered in isolation, are 35 | based on the Application, and not on the Linked Version. 36 | 37 | The "Corresponding Application Code" for a Combined Work means the 38 | object code and/or source code for the Application, including any data 39 | and utility programs needed for reproducing the Combined Work from the 40 | Application, but excluding the System Libraries of the Combined Work. 41 | 42 | 1. Exception to Section 3 of the GNU GPL. 43 | 44 | You may convey a covered work under sections 3 and 4 of this License 45 | without being bound by section 3 of the GNU GPL. 46 | 47 | 2. Conveying Modified Versions. 48 | 49 | If you modify a copy of the Library, and, in your modifications, a 50 | facility refers to a function or data to be supplied by an Application 51 | that uses the facility (other than as an argument passed when the 52 | facility is invoked), then you may convey a copy of the modified 53 | version: 54 | 55 | a) under this License, provided that you make a good faith effort to 56 | ensure that, in the event an Application does not supply the 57 | function or data, the facility still operates, and performs 58 | whatever part of its purpose remains meaningful, or 59 | 60 | b) under the GNU GPL, with none of the additional permissions of 61 | this License applicable to that copy. 62 | 63 | 3. Object Code Incorporating Material from Library Header Files. 64 | 65 | The object code form of an Application may incorporate material from 66 | a header file that is part of the Library. You may convey such object 67 | code under terms of your choice, provided that, if the incorporated 68 | material is not limited to numerical parameters, data structure 69 | layouts and accessors, or small macros, inline functions and templates 70 | (ten or fewer lines in length), you do both of the following: 71 | 72 | a) Give prominent notice with each copy of the object code that the 73 | Library is used in it and that the Library and its use are 74 | covered by this License. 75 | 76 | b) Accompany the object code with a copy of the GNU GPL and this license 77 | document. 78 | 79 | 4. Combined Works. 80 | 81 | You may convey a Combined Work under terms of your choice that, 82 | taken together, effectively do not restrict modification of the 83 | portions of the Library contained in the Combined Work and reverse 84 | engineering for debugging such modifications, if you also do each of 85 | the following: 86 | 87 | a) Give prominent notice with each copy of the Combined Work that 88 | the Library is used in it and that the Library and its use are 89 | covered by this License. 90 | 91 | b) Accompany the Combined Work with a copy of the GNU GPL and this license 92 | document. 93 | 94 | c) For a Combined Work that displays copyright notices during 95 | execution, include the copyright notice for the Library among 96 | these notices, as well as a reference directing the user to the 97 | copies of the GNU GPL and this license document. 98 | 99 | d) Do one of the following: 100 | 101 | 0) Convey the Minimal Corresponding Source under the terms of this 102 | License, and the Corresponding Application Code in a form 103 | suitable for, and under terms that permit, the user to 104 | recombine or relink the Application with a modified version of 105 | the Linked Version to produce a modified Combined Work, in the 106 | manner specified by section 6 of the GNU GPL for conveying 107 | Corresponding Source. 108 | 109 | 1) Use a suitable shared library mechanism for linking with the 110 | Library. A suitable mechanism is one that (a) uses at run time 111 | a copy of the Library already present on the user's computer 112 | system, and (b) will operate properly with a modified version 113 | of the Library that is interface-compatible with the Linked 114 | Version. 115 | 116 | e) Provide Installation Information, but only if you would otherwise 117 | be required to provide such information under section 6 of the 118 | GNU GPL, and only to the extent that such information is 119 | necessary to install and execute a modified version of the 120 | Combined Work produced by recombining or relinking the 121 | Application with a modified version of the Linked Version. (If 122 | you use option 4d0, the Installation Information must accompany 123 | the Minimal Corresponding Source and Corresponding Application 124 | Code. If you use option 4d1, you must provide the Installation 125 | Information in the manner specified by section 6 of the GNU GPL 126 | for conveying Corresponding Source.) 127 | 128 | 5. Combined Libraries. 129 | 130 | You may place library facilities that are a work based on the 131 | Library side by side in a single library together with other library 132 | facilities that are not Applications and are not covered by this 133 | License, and convey such a combined library under terms of your 134 | choice, if you do both of the following: 135 | 136 | a) Accompany the combined library with a copy of the same work based 137 | on the Library, uncombined with any other library facilities, 138 | conveyed under the terms of this License. 139 | 140 | b) Give prominent notice with the combined library that part of it 141 | is a work based on the Library, and explaining where to find the 142 | accompanying uncombined form of the same work. 143 | 144 | 6. Revised Versions of the GNU Lesser General Public License. 145 | 146 | The Free Software Foundation may publish revised and/or new versions 147 | of the GNU Lesser General Public License from time to time. Such new 148 | versions will be similar in spirit to the present version, but may 149 | differ in detail to address new problems or concerns. 150 | 151 | Each version is given a distinguishing version number. If the 152 | Library as you received it specifies that a certain numbered version 153 | of the GNU Lesser General Public License "or any later version" 154 | applies to it, you have the option of following the terms and 155 | conditions either of that published version or of any later version 156 | published by the Free Software Foundation. If the Library as you 157 | received it does not specify a version number of the GNU Lesser 158 | General Public License, you may choose any version of the GNU Lesser 159 | General Public License ever published by the Free Software Foundation. 160 | 161 | If the Library as you received it specifies that a proxy can decide 162 | whether future versions of the GNU Lesser General Public License shall 163 | apply, that proxy's public statement of acceptance of any version is 164 | permanent authorization for you to choose that version for the 165 | Library. 166 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # kyo-rs 2 | 3 | The next generation of kyo, a fully featured and modern 4 | osu! server switcher - fully rewritten from ground up in Rust. 5 | 6 | ![Screenshot](https://i.imgur.com/OaXd1KY.gif) 7 | -------------------------------------------------------------------------------- /build.rs: -------------------------------------------------------------------------------- 1 | /* 2 | * kyo-rs - Rust rewrite of kyo, a modern osu! server switcher 3 | * Copyright (C) 2018 Marc3842h 4 | * 5 | * This program is free software: you can redistribute it and/or modify 6 | * it under the terms of the GNU Lesser General Public License as published 7 | * by the Free Software Foundation, either version 3 of the License, or 8 | * (at your option) any later version. 9 | * 10 | * This program is distributed in the hope that it will be useful, 11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 | * GNU Lesser General Public License for more details. 14 | * 15 | * You should have received a copy of the GNU Lesser General Public License 16 | * along with this program. If not, see . 17 | */ 18 | 19 | extern crate base64; 20 | extern crate html_minifier; 21 | 22 | #[cfg(windows)] 23 | extern crate winres; 24 | 25 | fn main() { 26 | // Minify and pack frontend .html, .css and .js files (as well as backgrounds and stuff) 27 | let css = ""; 28 | let js = ""; 29 | let background_jpg = "data:image/jpeg;base64,".to_owned() + include_str!("resources/img/background.jpg.base64"); 30 | let button_svg = "data:image/svg+xml;base64,".to_owned() + &base64::encode(include_str!("resources/img/button.svg")); 31 | 32 | let fixed_css = &str::replace(include_str!("resources/index.html"), r#""#, css.as_str()); 33 | let fixed_js = &str::replace(fixed_css, r#""#, js.as_str()); 34 | let fixed_bg = &str::replace(fixed_js, r#"img/background.jpg"#, background_jpg.as_str()); 35 | let fixed_btn = &str::replace(fixed_bg, r#"img/button.svg"#, button_svg.as_str()); 36 | 37 | let mut minifier = html_minifier::HTMLMinifier::new(); 38 | minifier.digest(fixed_btn).unwrap(); 39 | 40 | let html: String = minifier.get_html().chars().skip(5).collect(); 41 | 42 | std::fs::write("resources/index.include.html", html).unwrap(); 43 | 44 | // Set Windows manifest 45 | install_manifest(); 46 | } 47 | 48 | #[cfg(windows)] 49 | fn install_manifest() { 50 | let mut res = winres::WindowsResource::new(); 51 | 52 | res.set_manifest(include_str!("resources/manifest.xml")); 53 | //res.set_icon("resources/icon.ico"); 54 | 55 | res.compile().unwrap(); 56 | } 57 | 58 | #[cfg(unix)] 59 | fn install_manifest() { 60 | 61 | } 62 | -------------------------------------------------------------------------------- /resources/img/background.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mellowagain/kyo-rs/9831168ff7bfb837983c275880f503bae552edf5/resources/img/background.jpg -------------------------------------------------------------------------------- /resources/img/button.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | 48 | 49 | 50 | 51 | 52 | 53 | 54 | 55 | 56 | 57 | 58 | 59 | 60 | 61 | 62 | 63 | 64 | 65 | 66 | 67 | 68 | 69 | 70 | 71 | 72 | 73 | 74 | 75 | 76 | 77 | 78 | -------------------------------------------------------------------------------- /resources/index.css: -------------------------------------------------------------------------------- 1 | /* 2 | * kyo-rs - Rust rewrite of kyo, a modern osu! server switcher 3 | * Copyright (C) 2018 Marc3842h, czapek 4 | * 5 | * This program is free software: you can redistribute it and/or modify 6 | * it under the terms of the GNU Lesser General Public License as published 7 | * by the Free Software Foundation, either version 3 of the License, or 8 | * (at your option) any later version. 9 | * 10 | * This program is distributed in the hope that it will be useful, 11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 | * GNU Lesser General Public License for more details. 14 | * 15 | * You should have received a copy of the GNU Lesser General Public License 16 | * along with this program. If not, see . 17 | */ 18 | 19 | * { 20 | margin: 0; 21 | padding: 0; 22 | -webkit-touch-callout: none; 23 | -webkit-user-select: none; 24 | -khtml-user-select: none; 25 | -moz-user-select: none; 26 | -ms-user-select: none; 27 | user-select: none; 28 | } 29 | 30 | body { 31 | background: #222; 32 | font-family: "Exo 2", sans-serif; 33 | user-select: none; 34 | } 35 | 36 | .background { 37 | position: absolute; 38 | width: 100%; 39 | height: 100%; 40 | top: 50%; 41 | left: 50%; 42 | transform: translate(-50%, -50%); 43 | background-size: cover; 44 | background: url("img/background.jpg") center center; 45 | } 46 | 47 | .background-overlay { 48 | position: absolute; 49 | width: 100%; 50 | height: 100%; 51 | top: 50%; 52 | left: 50%; 53 | transform: translate(-50%, -50%); 54 | background: rgba(0, 0, 0, 0.75); 55 | } 56 | 57 | .content { 58 | position: absolute; 59 | top: 50%; 60 | left: 50%; 61 | transform: translate(-50%, -50%); 62 | width: 260px; 63 | } 64 | 65 | .content .button { 66 | cursor: pointer; 67 | color: #fff; 68 | border-radius: 6px; 69 | background-size: 175%; 70 | background: url("img/button.svg") 50%; 71 | font-size: 12px; 72 | font-weight: 700; 73 | margin: 10px 0 3px; 74 | padding: 10px 20px; 75 | display: -webkit-box; 76 | display: -ms-flexbox; 77 | display: flex; 78 | -webkit-transition: all .12s ease-in-out; 79 | transition: all .12s ease-in-out; 80 | -webkit-transform: translateZ(0); 81 | transform: translateZ(0); 82 | } 83 | 84 | .button.pink { 85 | background-color: #b17; 86 | -webkit-box-shadow: 0 3px #8c0d59, 0 4px 3px rgba(0,0,0,.25); 87 | box-shadow: 0 3px #8c0d59, 0 4px 3px rgba(0,0,0,.25); 88 | } 89 | 90 | .button.blue { 91 | background-color: #29b; 92 | -webkit-box-shadow: 0 3px #1a7690,0 4px 3px rgba(0,0,0,.25); 93 | box-shadow: 0 3px #1a7690,0 4px 3px rgba(0,0,0,.25) 94 | } 95 | 96 | .button.pink:focus { 97 | background: #d21386 calc(50% - 10px) 50%; 98 | } 99 | 100 | .button.blue:focus { 101 | background: #26abd1 calc(50% - 10px) 50%; 102 | } 103 | 104 | .button.pink:hover { 105 | background: #ea1595 calc(50% - 20px) 50%; 106 | } 107 | 108 | .button.pink:active { 109 | -webkit-transform: translateY(2px); 110 | transform: translateY(2px); 111 | background-position: calc(50% - 20px) 50%; 112 | -webkit-box-shadow: 0 1px #8c0d59,0 2px 3px rgba(0,0,0,.25); 113 | box-shadow: 0 1px #8c0d59,0 2px 3px rgba(0,0,0,.25) 114 | } 115 | 116 | .button.blue:hover { 117 | background-color: #36b6da 118 | } 119 | 120 | .button.blue:active,.button.blue:hover { 121 | background-position: calc(50% - 20px) 50% 122 | } 123 | 124 | .button.blue:active { 125 | -webkit-transform: translateY(2px); 126 | transform: translateY(2px); 127 | -webkit-box-shadow: 0 1px #1a7690,0 2px 3px rgba(0,0,0,.25); 128 | box-shadow: 0 1px #1a7690,0 2px 3px rgba(0,0,0,.25) 129 | } 130 | 131 | .button.green { 132 | background-color: #88b300; 133 | -webkit-box-shadow: 0 3px #618000,0 4px 3px rgba(0,0,0,.25); 134 | box-shadow: 0 3px #618000,0 4px 3px rgba(0,0,0,.25) 135 | } 136 | 137 | .button.green:focus { 138 | background: #9bcc00 calc(50% - 10px) 50%; 139 | } 140 | 141 | .button.green:hover { 142 | background: #afe600 calc(50% - 20px) 50%; 143 | } 144 | 145 | .button.green:active { 146 | -webkit-transform: translateY(2px); 147 | transform: translateY(2px); 148 | background-position: calc(50% - 20px) 50%; 149 | -webkit-box-shadow: 0 1px #618000,0 2px 3px rgba(0,0,0,.25); 150 | box-shadow: 0 1px #618000,0 2px 3px rgba(0,0,0,.25) 151 | } 152 | 153 | .button span.text { 154 | -webkit-box-flex: 1; 155 | -ms-flex: 1; 156 | flex: 1; 157 | } 158 | 159 | .button span.icon { 160 | font-size: 150%; 161 | -webkit-box-flex: 0; 162 | -ms-flex: none; 163 | flex: none; 164 | line-height: 0.1; 165 | } 166 | 167 | .input { 168 | margin-bottom: 30px; 169 | margin-left: auto; 170 | } 171 | 172 | .input input { 173 | border-radius: 4px; 174 | background-color: rgba(0,0,0,.5); 175 | padding: 10px; 176 | text-align: center; 177 | -webkit-transition: all .12s ease-in-out; 178 | transition: all .12s ease-in-out; 179 | width: 90%; 180 | font-family: "Noto Sans", sans-serif; 181 | outline: none; 182 | border: 2px solid #fc2; 183 | color: #fff; 184 | } 185 | 186 | .input.shake { 187 | animation: shake 0.82s cubic-bezier(.36,.07,.19,.97) both; 188 | } 189 | 190 | @keyframes shake { 191 | 10%, 90% { 192 | transform: translate3d(-1px, 0, 0); 193 | } 194 | 195 | 20%, 80% { 196 | transform: translate3d(2px, 0, 0); 197 | } 198 | 199 | 30%, 50%, 70% { 200 | transform: translate3d(-4px, 0, 0); 201 | } 202 | 203 | 40%, 60% { 204 | transform: translate3d(4px, 0, 0); 205 | } 206 | } 207 | -------------------------------------------------------------------------------- /resources/index.html: -------------------------------------------------------------------------------- 1 | 20 | 21 | 22 | 23 | 24 | kyo-rs 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 |
34 |
35 |
36 |
37 | 40 |
41 |
42 | Switch to Shiro 43 | 44 | 45 | 46 |
47 |
48 | Install certificate 49 | 50 | 51 | 52 |
53 |
54 | 55 | 56 | 57 | -------------------------------------------------------------------------------- /resources/index.js: -------------------------------------------------------------------------------- 1 | /* 2 | * kyo-rs - Rust rewrite of kyo, a modern osu! server switcher 3 | * Copyright (C) 2018 Marc3842h, czapek 4 | * 5 | * This program is free software: you can redistribute it and/or modify 6 | * it under the terms of the GNU Lesser General Public License as published 7 | * by the Free Software Foundation, either version 3 of the License, or 8 | * (at your option) any later version. 9 | * 10 | * This program is distributed in the hope that it will be useful, 11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 | * GNU Lesser General Public License for more details. 14 | * 15 | * You should have received a copy of the GNU Lesser General Public License 16 | * along with this program. If not, see . 17 | */ 18 | 19 | // Invoked by frontend 20 | 21 | function updateData() { 22 | invokeBackend( 23 | { 24 | cmd: "update" 25 | } 26 | ); 27 | } 28 | 29 | function connectShiro() { 30 | invokeBackend( 31 | { 32 | cmd: "connect", 33 | address: document.getElementById("connect-address").value 34 | } 35 | ); 36 | } 37 | 38 | function connectBancho() { 39 | invokeBackend( 40 | { 41 | cmd: "disconnect" 42 | } 43 | ); 44 | } 45 | 46 | function installCertificate() { 47 | invokeBackend( 48 | { 49 | cmd: "install" 50 | } 51 | ); 52 | } 53 | 54 | function invokeBackend(args) { 55 | window.external.invoke(JSON.stringify(args)); 56 | } 57 | 58 | // Invoked by backend 59 | 60 | function toggleConnectButton() { 61 | let connectButton = document.getElementById("btn-connect"); 62 | 63 | connectButton.classList.toggle("pink"); 64 | connectButton.classList.toggle("blue"); 65 | 66 | // We just switched to Shiro 67 | if (connectButton.classList.contains("blue")) { 68 | document.getElementById("text-connect").innerHTML = "Switch to Bancho"; 69 | document.getElementById("icon-switch").className = "fas fa-unlink"; 70 | connectButton.onclick = connectBancho; 71 | } 72 | 73 | // We just switched back to Bancho 74 | if (connectButton.classList.contains("pink")) { 75 | document.getElementById("text-connect").innerHTML = "Switch to Shiro"; 76 | document.getElementById("icon-switch").className = "fas fa-sync-alt"; 77 | connectButton.onclick = connectShiro; 78 | } 79 | } 80 | 81 | function displayError() { 82 | let input = document.getElementById("input-address"); 83 | input.classList.add("shake"); 84 | 85 | setTimeout(function() { 86 | input.classList.remove("shake"); 87 | }, 820); 88 | } 89 | 90 | // Listeners 91 | 92 | let previousValue = ""; 93 | 94 | document.onkeydown = function (event) { 95 | event = event || window.event; 96 | 97 | if (event.keyCode === 17) { 98 | previousValue = document.getElementById("connect-address").value; 99 | document.getElementById("connect-address").value = "127.0.0.1"; 100 | } 101 | }; 102 | 103 | document.onkeyup = function (event) { 104 | event = event || window.event; 105 | 106 | if (event.keyCode === 17) { 107 | document.getElementById("connect-address").value = previousValue; 108 | } 109 | }; 110 | 111 | // Init 112 | 113 | updateData(); 114 | document.getElementById("connect-address").focus(); 115 | -------------------------------------------------------------------------------- /resources/manifest.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | -------------------------------------------------------------------------------- /src/cert.rs: -------------------------------------------------------------------------------- 1 | /* 2 | * kyo-rs - Rust rewrite of kyo, a modern osu! server switcher 3 | * Copyright (C) 2018 Marc3842h 4 | * 5 | * This program is free software: you can redistribute it and/or modify 6 | * it under the terms of the GNU Lesser General Public License as published 7 | * by the Free Software Foundation, either version 3 of the License, or 8 | * (at your option) any later version. 9 | * 10 | * This program is distributed in the hope that it will be useful, 11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 | * GNU Lesser General Public License for more details. 14 | * 15 | * You should have received a copy of the GNU Lesser General Public License 16 | * along with this program. If not, see . 17 | */ 18 | 19 | extern crate std; 20 | extern crate hyper; 21 | extern crate reqwest; 22 | 23 | use std::io::Read; 24 | 25 | pub fn install_cert() { 26 | std::thread::spawn(move || { 27 | if download_cert() { 28 | super::utils::send_notify("Certificate has been successfully installed."); 29 | } 30 | }); 31 | } 32 | 33 | fn download_cert() -> bool { 34 | let mut response = reqwest::get(super::CERT_URL).unwrap(); 35 | 36 | if !response.status().is_success() { 37 | super::utils::send_notify(format!( 38 | "Certificate could not be downloaded. Remote server returned {}.", response.status() 39 | ).as_str()); 40 | 41 | return false; 42 | } 43 | 44 | let mut content = String::new(); 45 | response.read_to_string(&mut content).expect("Unable to read response."); 46 | 47 | super::utils::install_cert(content.as_str()); 48 | 49 | return true; 50 | } 51 | -------------------------------------------------------------------------------- /src/hosts.rs: -------------------------------------------------------------------------------- 1 | /* 2 | * kyo-rs - Rust rewrite of kyo, a modern osu! server switcher 3 | * Copyright (C) 2018 Marc3842h 4 | * 5 | * This program is free software: you can redistribute it and/or modify 6 | * it under the terms of the GNU Lesser General Public License as published 7 | * by the Free Software Foundation, either version 3 of the License, or 8 | * (at your option) any later version. 9 | * 10 | * This program is distributed in the hope that it will be useful, 11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 | * GNU Lesser General Public License for more details. 14 | * 15 | * You should have received a copy of the GNU Lesser General Public License 16 | * along with this program. If not, see . 17 | */ 18 | 19 | extern crate std; 20 | extern crate reqwest; 21 | 22 | use std::io::BufRead; 23 | 24 | #[cfg(windows)] 25 | static HOSTS_PATH: &'static str = r#"C:\Windows\System32\drivers\etc\hosts"#; 26 | #[cfg(windows)] 27 | static NEW_LINE: &'static str = "\r\n"; 28 | 29 | #[cfg(unix)] 30 | static HOSTS_PATH: &'static str = r#"/etc/hosts"#; 31 | #[cfg(unix)] 32 | static NEW_LINE: &'static str = "\n"; 33 | 34 | pub fn overwrite(address: &str) -> bool { 35 | let mut changed_perms = false; 36 | 37 | if address.is_empty() { 38 | super::utils::send_notify("Target address is empty."); 39 | return false; 40 | } 41 | 42 | if is_connected() { 43 | super::utils::send_notify("You are already connected."); 44 | return true; 45 | } 46 | 47 | if is_read_only(HOSTS_PATH) { 48 | set_read_only(HOSTS_PATH, false); 49 | changed_perms = true; 50 | } 51 | 52 | let full_url_str_shiro = "http://".to_owned() + super::SHIRO_IP; 53 | let full_url_str_mirror = "http://".to_owned() + super::MIRROR_IP; 54 | 55 | let full_url_shiro: &str = full_url_str_shiro.as_str(); 56 | let full_url_mirror: &str = full_url_str_mirror.as_str(); 57 | 58 | let response_shiro = reqwest::get(full_url_shiro).unwrap(); 59 | let response_mirror = reqwest::get(full_url_mirror).unwrap(); 60 | 61 | if !response_shiro.status().is_success() || !response_mirror.status().is_success() { 62 | super::utils::send_notify("The server or the beatmap mirror is currently offline."); 63 | return false; 64 | } 65 | 66 | // 1. Remove all other entries for ppy.sh 67 | // 2. Add new entry for ppy.sh 68 | let lines = read_file_lines(HOSTS_PATH); 69 | let mut hosts = lines.clone(); 70 | 71 | for (i, line) in lines.iter().enumerate() { 72 | if !line.starts_with("#") && line.contains("ppy.sh") { 73 | hosts[i] = "#".to_owned() + line; 74 | } 75 | } 76 | 77 | hosts.push("# Added by kyo-rs, a modern osu! server switcher".to_owned()); 78 | hosts.push(format!("{} osu.ppy.sh", address)); 79 | hosts.push(format!("{} c.ppy.sh", address)); 80 | hosts.push(format!("{} ce.ppy.sh", address)); 81 | 82 | for i in 1..7 { 83 | if i == 2 { 84 | continue; 85 | } 86 | 87 | hosts.push(format!("{} c{}.ppy.sh", address, i)); 88 | } 89 | 90 | hosts.push(format!("{} a.ppy.sh", address)); 91 | hosts.push(format!("{} i.ppy.sh", address)); 92 | 93 | for i in 4..7 { 94 | hosts.push(format!("{} bm{}.ppy.sh", super::MIRROR_IP, i)); 95 | } 96 | 97 | 98 | hosts.push(NEW_LINE.to_owned()); 99 | 100 | let result = hosts.join(NEW_LINE); 101 | 102 | let file = std::fs::File::create(HOSTS_PATH).unwrap(); 103 | file.set_len(0).unwrap(); 104 | 105 | std::fs::write(HOSTS_PATH, result).unwrap(); 106 | 107 | if changed_perms { 108 | set_read_only(HOSTS_PATH, true); 109 | } 110 | 111 | return true; 112 | } 113 | 114 | pub fn revert() -> bool { 115 | let mut changed_perms = false; 116 | 117 | if !is_connected() { 118 | super::utils::send_notify("You are already disconnected."); 119 | return true; 120 | } 121 | 122 | if is_read_only(HOSTS_PATH) { 123 | set_read_only(HOSTS_PATH, false); 124 | changed_perms = true; 125 | } 126 | 127 | let lines = read_file_lines(HOSTS_PATH); 128 | let mut hosts = lines.clone(); 129 | 130 | for (i, line) in lines.iter().enumerate() { 131 | if line.starts_with("#") && line.contains("kyo-rs") { 132 | for j in i..(i + 8) { 133 | hosts[j] = "removed by kyo-rs".to_owned(); 134 | } 135 | 136 | break; 137 | } 138 | } 139 | 140 | hosts.retain(|s| s != "removed by kyo-rs"); 141 | 142 | let result = hosts.join(NEW_LINE); 143 | 144 | let file = std::fs::File::create(HOSTS_PATH).unwrap(); 145 | file.set_len(0).unwrap(); 146 | 147 | std::fs::write(HOSTS_PATH, result).unwrap(); 148 | 149 | if changed_perms { 150 | set_read_only(HOSTS_PATH, true); 151 | } 152 | 153 | return true; 154 | } 155 | 156 | pub fn is_connected() -> bool { 157 | let file = std::fs::File::open(HOSTS_PATH).unwrap(); 158 | 159 | for content in std::io::BufReader::new(file).lines() { 160 | let unwrapped = content.unwrap(); 161 | let line = unwrapped.as_str(); 162 | 163 | if line.starts_with("#") || !line.contains("ppy.sh") { 164 | continue; 165 | } 166 | 167 | if line.contains(super::SHIRO_IP) || line.contains(super::MIRROR_IP) { 168 | return true; 169 | } 170 | } 171 | 172 | return false; 173 | } 174 | 175 | fn is_read_only(file: &str) -> bool { 176 | let perms = std::fs::metadata(file).unwrap().permissions(); 177 | return perms.readonly(); 178 | } 179 | 180 | fn set_read_only(file: &str, read_only: bool) { 181 | let mut perms = std::fs::metadata(file).unwrap().permissions(); 182 | perms.set_readonly(read_only); 183 | std::fs::set_permissions(file, perms).unwrap(); 184 | } 185 | 186 | fn read_file_lines

(filename: P) -> Vec where P: AsRef, { 187 | let file = std::fs::File::open(filename).unwrap(); 188 | let buf = std::io::BufReader::new(file); 189 | buf.lines() 190 | .map(|l| l.unwrap()) 191 | .collect() 192 | } 193 | -------------------------------------------------------------------------------- /src/main.rs: -------------------------------------------------------------------------------- 1 | /* 2 | * kyo-rs - Rust rewrite of kyo, a modern osu! server switcher 3 | * Copyright (C) 2018 Marc3842h 4 | * 5 | * This program is free software: you can redistribute it and/or modify 6 | * it under the terms of the GNU Lesser General Public License as published 7 | * by the Free Software Foundation, either version 3 of the License, or 8 | * (at your option) any later version. 9 | * 10 | * This program is distributed in the hope that it will be useful, 11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 | * GNU Lesser General Public License for more details. 14 | * 15 | * You should have received a copy of the GNU Lesser General Public License 16 | * along with this program. If not, see . 17 | */ 18 | 19 | extern crate web_view; 20 | extern crate serde_json; 21 | 22 | #[cfg(windows)] 23 | extern crate winrt_notification; 24 | #[cfg(windows)] 25 | extern crate winapi; 26 | 27 | mod cert; 28 | mod hosts; 29 | mod platform_utils; 30 | 31 | #[cfg(windows)] 32 | use platform_utils::win32 as utils; 33 | 34 | #[cfg(unix)] 35 | use platform_utils::nix as utils; 36 | 37 | static SHIRO_IP: &'static str = r#"209.97.182.162"#; 38 | static MIRROR_IP: &'static str = r#"209.97.182.162"#; // Won't be displayed to user but put in hosts regardless 39 | static CERT_URL: &'static str = r#"https://shiro.host/cert.pem"#; 40 | static RESULT_CERT_NAME: &'static str = r#"shiro.crt"#; // Always needs to end in .crt 41 | static CONTENT: &'static str = include_str!("../resources/index.include.html"); 42 | 43 | fn main() { 44 | if !utils::is_root() { 45 | utils::send_notify("Please run this program with elevated permissions. (Administrator or root)"); 46 | std::process::exit(1); 47 | } 48 | 49 | let user_data = (); 50 | 51 | web_view::run( 52 | "kyo-rs", 53 | web_view::Content::Html(CONTENT), 54 | Some((400, 260)), 55 | false, 56 | true, 57 | move |_web_view| {}, 58 | move |web_view, args, _user_data| { 59 | let json: serde_json::Value = serde_json::from_str(args).unwrap(); 60 | let cmd = json["cmd"].as_str().unwrap(); 61 | let address = json["address"].as_str().unwrap_or_default(); 62 | 63 | match cmd { 64 | "update" => { 65 | let connected = hosts::is_connected(); 66 | let connect_address = format!("document.getElementById('connect-address').value = '{}';", SHIRO_IP); 67 | let button_changer = if connected { "toggleConnectButton();" } else { "" }; 68 | 69 | let js = &format!("{}{}", connect_address, button_changer); 70 | web_view.eval(js); 71 | } 72 | "connect" => { 73 | web_view.eval(if hosts::overwrite(address) { "toggleConnectButton();" } else { "displayError();" }); 74 | } 75 | "disconnect" => { 76 | web_view.eval(if hosts::revert() { "toggleConnectButton();" } else { "displayError();" }); 77 | } 78 | "install" => { 79 | cert::install_cert(); 80 | } 81 | _ => unimplemented!() 82 | } 83 | }, 84 | user_data 85 | ); 86 | } 87 | -------------------------------------------------------------------------------- /src/platform_utils/mod.rs: -------------------------------------------------------------------------------- 1 | /* 2 | * kyo-rs - Rust rewrite of kyo, a modern osu! server switcher 3 | * Copyright (C) 2018 Marc3842h 4 | * 5 | * This program is free software: you can redistribute it and/or modify 6 | * it under the terms of the GNU Lesser General Public License as published 7 | * by the Free Software Foundation, either version 3 of the License, or 8 | * (at your option) any later version. 9 | * 10 | * This program is distributed in the hope that it will be useful, 11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 | * GNU Lesser General Public License for more details. 14 | * 15 | * You should have received a copy of the GNU Lesser General Public License 16 | * along with this program. If not, see . 17 | */ 18 | 19 | use RESULT_CERT_NAME; 20 | 21 | #[cfg(windows)] 22 | pub mod win32; 23 | 24 | #[cfg(unix)] 25 | pub mod nix; 26 | -------------------------------------------------------------------------------- /src/platform_utils/nix.rs: -------------------------------------------------------------------------------- 1 | /* 2 | * kyo-rs - Rust rewrite of kyo, a modern osu! server switcher 3 | * Copyright (C) 2018 Marc3842h 4 | * 5 | * This program is free software: you can redistribute it and/or modify 6 | * it under the terms of the GNU Lesser General Public License as published 7 | * by the Free Software Foundation, either version 3 of the License, or 8 | * (at your option) any later version. 9 | * 10 | * This program is distributed in the hope that it will be useful, 11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 | * GNU Lesser General Public License for more details. 14 | * 15 | * You should have received a copy of the GNU Lesser General Public License 16 | * along with this program. If not, see . 17 | */ 18 | 19 | extern crate std; 20 | extern crate libc; 21 | extern crate notify_rust; 22 | 23 | pub fn is_root() -> bool { 24 | unsafe { 25 | libc::getuid() == 0 26 | } 27 | } 28 | 29 | pub fn install_cert(cert: &str) { 30 | let fmt_path = format!( 31 | "/etc/ca-certificates/trust-source/anchors/{}", super::RESULT_CERT_NAME 32 | ); 33 | 34 | let result_path = std::path::Path::new(&fmt_path); 35 | 36 | if result_path.exists() { 37 | send_notify("The certificate has already been installed."); 38 | return; 39 | } 40 | 41 | std::fs::write(result_path, cert).expect("Unable to write certificate to disk."); 42 | 43 | let status_code = std::process::Command::new("trust") 44 | .arg("extract-compat") 45 | .status() 46 | .expect("Unable to execute trust extract-compat command."); 47 | 48 | if status_code.code().unwrap() != 0 { 49 | send_notify(format!( 50 | "Trust store could not be refreshed. Trust exited with exit code {}.", status_code.code().unwrap() 51 | ).as_str()); 52 | } 53 | } 54 | 55 | pub fn send_notify(msg: &str) { 56 | notify_rust::Notification::new() 57 | .appname("kyo-rs") 58 | .summary("kyo-rs") 59 | .body(msg) 60 | .auto_icon() 61 | .show() 62 | .unwrap(); 63 | } 64 | -------------------------------------------------------------------------------- /src/platform_utils/win32.rs: -------------------------------------------------------------------------------- 1 | /* 2 | * kyo-rs - Rust rewrite of kyo, a modern osu! server switcher 3 | * Copyright (C) 2018 Marc3842h 4 | * 5 | * This program is free software: you can redistribute it and/or modify 6 | * it under the terms of the GNU Lesser General Public License as published 7 | * by the Free Software Foundation, either version 3 of the License, or 8 | * (at your option) any later version. 9 | * 10 | * This program is distributed in the hope that it will be useful, 11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 | * GNU Lesser General Public License for more details. 14 | * 15 | * You should have received a copy of the GNU Lesser General Public License 16 | * along with this program. If not, see . 17 | */ 18 | 19 | extern crate std; 20 | extern crate user32; 21 | extern crate winapi; 22 | extern crate winrt; 23 | extern crate winrt_notification; 24 | 25 | use winapi::um::wincrypt::*; 26 | use winrt_notification::{Duration, Toast}; 27 | 28 | pub fn is_root() -> bool { 29 | /*unsafe { 30 | winapi::vc::shell::IsUserAnAdmin() 31 | }*/ 32 | 33 | // The current method above is not implemented in the winapi crate 34 | // Workaround this by *requiring* the program to be started 35 | // with admin permissions by specifying it in the manifest. 36 | true 37 | } 38 | 39 | pub fn install_cert(cert: &str) { 40 | /*unsafe { 41 | let root_str = std::ffi::CString::new("ROOT").unwrap(); 42 | let cert_str = std::ffi::CString::new(cert).unwrap(); 43 | 44 | let context_ptr: *mut PCCERT_CONTEXT = std::ptr::null_mut(); 45 | let cert_store: HCERTSTORE = CertOpenSystemStoreA(0, root_str.as_ptr()); 46 | 47 | CertAddEncodedCertificateToStore( 48 | cert_store, 49 | X509_ASN_ENCODING | PKCS_7_ASN_ENCODING, 50 | cert_str.as_ptr() as *const _, 51 | cert.len() as u32, 52 | CERT_STORE_ADD_USE_EXISTING, 53 | context_ptr 54 | ); 55 | 56 | CertCloseStore(cert_store, 0); 57 | }*/ 58 | 59 | let mut file = std::env::temp_dir(); 60 | file.push(super::RESULT_CERT_NAME); 61 | 62 | let path = file.as_path(); 63 | let path_str = path.to_str().unwrap(); 64 | 65 | std::fs::write(path, cert).expect("Unable to write certificate to disk."); 66 | 67 | std::process::Command::new("certutil.exe") 68 | .arg("-addstore") 69 | .arg("Root") 70 | .arg(path_str) 71 | .status() 72 | .expect("Unable to install certificate in root certificate authorities."); 73 | } 74 | 75 | pub fn send_notify(msg: &str) { 76 | Toast::new(Toast::POWERSHELL_APP_ID) 77 | .title("kyo-rs") 78 | .text1(msg) 79 | .duration(Duration::Short) 80 | .show() 81 | .unwrap(); 82 | } 83 | --------------------------------------------------------------------------------