├── Cargo.toml ├── .gitignore ├── README.md ├── LICENSE ├── src └── main.rs └── Cargo.lock /Cargo.toml: -------------------------------------------------------------------------------- 1 | [package] 2 | name = "tfrv" 3 | version = "0.1.0" 4 | edition = "2021" 5 | 6 | # See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html 7 | 8 | [dependencies] 9 | clap = "2.33" 10 | tokio = { version = "1", features = ["full"] } 11 | encoding_rs = "0.8" 12 | chrono = "0.4" 13 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | # Generated by Cargo 2 | # will have compiled files and executables 3 | debug/ 4 | target/ 5 | 6 | # Remove Cargo.lock from gitignore if creating an executable, leave it for libraries 7 | # More information here https://doc.rust-lang.org/cargo/guide/cargo-toml-vs-cargo-lock.html 8 | Cargo.lock 9 | 10 | # These are backup files generated by rustfmt 11 | **/*.rs.bk 12 | 13 | # MSVC Windows builds of rustc generate these, which store debugging information 14 | *.pdb 15 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | trfv: telnet電子公告ビューア 2 | === 3 | 4 | 概要 5 | --- 6 | 7 | 本プログラムはtelnetプロトコルとShift JISエンコーディングで提供される電子公告を、コンソールで閲覧・保存するプログラムです。コマンドライン引数なしで立ち上げた場合、デフォルトで[「一般社団法人サイバー技術・インターネット自由研究会」の電子公告システム](telnet://koukoku.shadan.open.ad.jp)を表示します。コマンドライン引数でその他のサーバーやポート番号を指定した場合、通常のtelnetクライアントと同様に、指定されたサイトに接続します。 8 | 5秒間、電子公告システムからのパケットが途絶えた場合、公告が終了したものと判断して、TCPセッション遮断時点の日時YYYYMMDDHHMM.txtというファイル名でログを保存してプログラムを終了します。 9 | 10 | 使い方 11 | --- 12 | 13 | 「一般社団法人サイバー技術・インターネット自由研究会」の電子公告システムを表示する場合 14 | 15 | ``` bash 16 | tfrv 17 | ``` 18 | 19 | その他のtelnetサーバーに接続する場合 20 | 21 | ``` bash 22 | tfrv [サーバー名] [ポート番号] 23 | ``` 24 | 25 | 残課題 26 | --- 27 | 28 | - Shift_JISで受信したデータをUTF-8で保存しているが、証跡保存として問題がないか。 29 | - セッションを終了した時間の日時をファイル名に含めているが、セッション開始時点の日時も含めてファイルに保存すべきか。 30 | 31 | ライセンス 32 | --- 33 | 34 | MIT License 35 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2023 Masanori Kusunoki 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | -------------------------------------------------------------------------------- /src/main.rs: -------------------------------------------------------------------------------- 1 | use clap::{App, Arg}; 2 | use encoding_rs::SHIFT_JIS; 3 | use std::error::Error; 4 | use std::fs::File; 5 | use std::io::{self, Write}; 6 | use tokio::io::{AsyncReadExt, AsyncWriteExt}; 7 | use tokio::net::TcpStream; 8 | use chrono::Local; 9 | use std::sync::Arc; 10 | use std::sync::atomic::{AtomicBool, Ordering}; 11 | 12 | #[tokio::main] 13 | async fn main() -> Result<(), Box> { 14 | let matches = App::new("Telnet Client") 15 | .version("1.0") 16 | .author("Masanori Kusunoki ") 17 | .about("trfv: telnet電子公告ビューア") 18 | .arg( 19 | Arg::with_name("SERVER") 20 | .help("Server address") 21 | .default_value("koukoku.shadan.open.ad.jp"), 22 | ) 23 | .arg( 24 | Arg::with_name("PORT") 25 | .help("Port number") 26 | .default_value("23"), 27 | ) 28 | .get_matches(); 29 | 30 | let server = matches.value_of("SERVER").unwrap(); 31 | let port = matches.value_of("PORT").unwrap(); 32 | let addr = format!("{}:{}", server, port); 33 | 34 | let stream = TcpStream::connect(&addr).await?; 35 | let (mut reader, mut writer) = stream.into_split(); 36 | 37 | let finished_flag = Arc::new(AtomicBool::new(false)); 38 | let flag_for_write = finished_flag.clone(); 39 | 40 | let read_task = tokio::spawn(async move { 41 | let mut buffer = vec![0u8; 4096]; 42 | let mut accumulated_data = Vec::new(); 43 | 44 | loop { 45 | let read_result = tokio::time::timeout( 46 | std::time::Duration::from_secs(5), 47 | reader.read(&mut buffer), 48 | ).await; 49 | 50 | match read_result { 51 | Ok(Ok(n)) if n == 0 => break, 52 | Ok(Ok(n)) => { 53 | let (decoded, _, _) = SHIFT_JIS.decode(&buffer[..n]); 54 | accumulated_data.extend_from_slice(decoded.as_bytes()); 55 | print!("{}", decoded); 56 | io::stdout().flush().unwrap(); 57 | } 58 | Ok(Err(e)) => { 59 | eprintln!("Read error: {}", e); 60 | } 61 | Err(_) => { 62 | // 5秒間データの受信が途切れた場合 63 | eprintln!("No data received for 5 seconds. Disconnecting..."); 64 | break; 65 | } 66 | } 67 | } 68 | 69 | // バッファの内容をファイルに保存 70 | let current_time = Local::now(); 71 | let filename = current_time.format("%Y%m%d%H%M.txt").to_string(); 72 | if let Err(e) = File::create(&filename) 73 | .and_then(|mut f| f.write_all(&accumulated_data)) 74 | { 75 | eprintln!("Failed to write data to {}: {}", filename, e); 76 | } 77 | 78 | finished_flag.store(true, Ordering::SeqCst); 79 | }); 80 | 81 | let write_task = tokio::spawn(async move { 82 | let mut input_buffer = String::new(); 83 | 84 | while !flag_for_write.load(Ordering::SeqCst) { 85 | input_buffer.clear(); 86 | std::io::stdin().read_line(&mut input_buffer).expect("Failed to read from stdin"); 87 | let encoded = SHIFT_JIS.encode(&input_buffer); 88 | if let Err(e) = writer.write_all(&encoded.0).await { 89 | eprintln!("Write error: {}", e); 90 | } 91 | } 92 | }); 93 | 94 | tokio::try_join!(read_task, write_task)?; 95 | 96 | 97 | // プログラムを終了します。 98 | std::process::exit(0); 99 | } 100 | -------------------------------------------------------------------------------- /Cargo.lock: -------------------------------------------------------------------------------- 1 | # This file is automatically @generated by Cargo. 2 | # It is not intended for manual editing. 3 | version = 3 4 | 5 | [[package]] 6 | name = "addr2line" 7 | version = "0.21.0" 8 | source = "registry+https://github.com/rust-lang/crates.io-index" 9 | checksum = "8a30b2e23b9e17a9f90641c7ab1549cd9b44f296d3ccbf309d2863cfe398a0cb" 10 | dependencies = [ 11 | "gimli", 12 | ] 13 | 14 | [[package]] 15 | name = "adler" 16 | version = "1.0.2" 17 | source = "registry+https://github.com/rust-lang/crates.io-index" 18 | checksum = "f26201604c87b1e01bd3d98f8d5d9a8fcbb815e8cedb41ffccbeb4bf593a35fe" 19 | 20 | [[package]] 21 | name = "android-tzdata" 22 | version = "0.1.1" 23 | source = "registry+https://github.com/rust-lang/crates.io-index" 24 | checksum = "e999941b234f3131b00bc13c22d06e8c5ff726d1b6318ac7eb276997bbb4fef0" 25 | 26 | [[package]] 27 | name = "android_system_properties" 28 | version = "0.1.5" 29 | source = "registry+https://github.com/rust-lang/crates.io-index" 30 | checksum = "819e7219dbd41043ac279b19830f2efc897156490d7fd6ea916720117ee66311" 31 | dependencies = [ 32 | "libc", 33 | ] 34 | 35 | [[package]] 36 | name = "ansi_term" 37 | version = "0.12.1" 38 | source = "registry+https://github.com/rust-lang/crates.io-index" 39 | checksum = "d52a9bb7ec0cf484c551830a7ce27bd20d67eac647e1befb56b0be4ee39a55d2" 40 | dependencies = [ 41 | "winapi", 42 | ] 43 | 44 | [[package]] 45 | name = "atty" 46 | version = "0.2.14" 47 | source = "registry+https://github.com/rust-lang/crates.io-index" 48 | checksum = "d9b39be18770d11421cdb1b9947a45dd3f37e93092cbf377614828a319d5fee8" 49 | dependencies = [ 50 | "hermit-abi 0.1.19", 51 | "libc", 52 | "winapi", 53 | ] 54 | 55 | [[package]] 56 | name = "autocfg" 57 | version = "1.1.0" 58 | source = "registry+https://github.com/rust-lang/crates.io-index" 59 | checksum = "d468802bab17cbc0cc575e9b053f41e72aa36bfa6b7f55e3529ffa43161b97fa" 60 | 61 | [[package]] 62 | name = "backtrace" 63 | version = "0.3.69" 64 | source = "registry+https://github.com/rust-lang/crates.io-index" 65 | checksum = "2089b7e3f35b9dd2d0ed921ead4f6d318c27680d4a5bd167b3ee120edb105837" 66 | dependencies = [ 67 | "addr2line", 68 | "cc", 69 | "cfg-if", 70 | "libc", 71 | "miniz_oxide", 72 | "object", 73 | "rustc-demangle", 74 | ] 75 | 76 | [[package]] 77 | name = "bitflags" 78 | version = "1.3.2" 79 | source = "registry+https://github.com/rust-lang/crates.io-index" 80 | checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a" 81 | 82 | [[package]] 83 | name = "bumpalo" 84 | version = "3.13.0" 85 | source = "registry+https://github.com/rust-lang/crates.io-index" 86 | checksum = "a3e2c3daef883ecc1b5d58c15adae93470a91d425f3532ba1695849656af3fc1" 87 | 88 | [[package]] 89 | name = "bytes" 90 | version = "1.4.0" 91 | source = "registry+https://github.com/rust-lang/crates.io-index" 92 | checksum = "89b2fd2a0dcf38d7971e2194b6b6eebab45ae01067456a7fd93d5547a61b70be" 93 | 94 | [[package]] 95 | name = "cc" 96 | version = "1.0.83" 97 | source = "registry+https://github.com/rust-lang/crates.io-index" 98 | checksum = "f1174fb0b6ec23863f8b971027804a42614e347eafb0a95bf0b12cdae21fc4d0" 99 | dependencies = [ 100 | "libc", 101 | ] 102 | 103 | [[package]] 104 | name = "cfg-if" 105 | version = "1.0.0" 106 | source = "registry+https://github.com/rust-lang/crates.io-index" 107 | checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd" 108 | 109 | [[package]] 110 | name = "chrono" 111 | version = "0.4.28" 112 | source = "registry+https://github.com/rust-lang/crates.io-index" 113 | checksum = "95ed24df0632f708f5f6d8082675bef2596f7084dee3dd55f632290bf35bfe0f" 114 | dependencies = [ 115 | "android-tzdata", 116 | "iana-time-zone", 117 | "js-sys", 118 | "num-traits", 119 | "time", 120 | "wasm-bindgen", 121 | "windows-targets", 122 | ] 123 | 124 | [[package]] 125 | name = "clap" 126 | version = "2.34.0" 127 | source = "registry+https://github.com/rust-lang/crates.io-index" 128 | checksum = "a0610544180c38b88101fecf2dd634b174a62eef6946f84dfc6a7127512b381c" 129 | dependencies = [ 130 | "ansi_term", 131 | "atty", 132 | "bitflags", 133 | "strsim", 134 | "textwrap", 135 | "unicode-width", 136 | "vec_map", 137 | ] 138 | 139 | [[package]] 140 | name = "core-foundation-sys" 141 | version = "0.8.4" 142 | source = "registry+https://github.com/rust-lang/crates.io-index" 143 | checksum = "e496a50fda8aacccc86d7529e2c1e0892dbd0f898a6b5645b5561b89c3210efa" 144 | 145 | [[package]] 146 | name = "encoding_rs" 147 | version = "0.8.33" 148 | source = "registry+https://github.com/rust-lang/crates.io-index" 149 | checksum = "7268b386296a025e474d5140678f75d6de9493ae55a5d709eeb9dd08149945e1" 150 | dependencies = [ 151 | "cfg-if", 152 | ] 153 | 154 | [[package]] 155 | name = "gimli" 156 | version = "0.28.0" 157 | source = "registry+https://github.com/rust-lang/crates.io-index" 158 | checksum = "6fb8d784f27acf97159b40fc4db5ecd8aa23b9ad5ef69cdd136d3bc80665f0c0" 159 | 160 | [[package]] 161 | name = "hermit-abi" 162 | version = "0.1.19" 163 | source = "registry+https://github.com/rust-lang/crates.io-index" 164 | checksum = "62b467343b94ba476dcb2500d242dadbb39557df889310ac77c5d99100aaac33" 165 | dependencies = [ 166 | "libc", 167 | ] 168 | 169 | [[package]] 170 | name = "hermit-abi" 171 | version = "0.3.2" 172 | source = "registry+https://github.com/rust-lang/crates.io-index" 173 | checksum = "443144c8cdadd93ebf52ddb4056d257f5b52c04d3c804e657d19eb73fc33668b" 174 | 175 | [[package]] 176 | name = "iana-time-zone" 177 | version = "0.1.57" 178 | source = "registry+https://github.com/rust-lang/crates.io-index" 179 | checksum = "2fad5b825842d2b38bd206f3e81d6957625fd7f0a361e345c30e01a0ae2dd613" 180 | dependencies = [ 181 | "android_system_properties", 182 | "core-foundation-sys", 183 | "iana-time-zone-haiku", 184 | "js-sys", 185 | "wasm-bindgen", 186 | "windows", 187 | ] 188 | 189 | [[package]] 190 | name = "iana-time-zone-haiku" 191 | version = "0.1.2" 192 | source = "registry+https://github.com/rust-lang/crates.io-index" 193 | checksum = "f31827a206f56af32e590ba56d5d2d085f558508192593743f16b2306495269f" 194 | dependencies = [ 195 | "cc", 196 | ] 197 | 198 | [[package]] 199 | name = "js-sys" 200 | version = "0.3.64" 201 | source = "registry+https://github.com/rust-lang/crates.io-index" 202 | checksum = "c5f195fe497f702db0f318b07fdd68edb16955aed830df8363d837542f8f935a" 203 | dependencies = [ 204 | "wasm-bindgen", 205 | ] 206 | 207 | [[package]] 208 | name = "libc" 209 | version = "0.2.147" 210 | source = "registry+https://github.com/rust-lang/crates.io-index" 211 | checksum = "b4668fb0ea861c1df094127ac5f1da3409a82116a4ba74fca2e58ef927159bb3" 212 | 213 | [[package]] 214 | name = "lock_api" 215 | version = "0.4.10" 216 | source = "registry+https://github.com/rust-lang/crates.io-index" 217 | checksum = "c1cc9717a20b1bb222f333e6a92fd32f7d8a18ddc5a3191a11af45dcbf4dcd16" 218 | dependencies = [ 219 | "autocfg", 220 | "scopeguard", 221 | ] 222 | 223 | [[package]] 224 | name = "log" 225 | version = "0.4.20" 226 | source = "registry+https://github.com/rust-lang/crates.io-index" 227 | checksum = "b5e6163cb8c49088c2c36f57875e58ccd8c87c7427f7fbd50ea6710b2f3f2e8f" 228 | 229 | [[package]] 230 | name = "memchr" 231 | version = "2.6.3" 232 | source = "registry+https://github.com/rust-lang/crates.io-index" 233 | checksum = "8f232d6ef707e1956a43342693d2a31e72989554d58299d7a88738cc95b0d35c" 234 | 235 | [[package]] 236 | name = "miniz_oxide" 237 | version = "0.7.1" 238 | source = "registry+https://github.com/rust-lang/crates.io-index" 239 | checksum = "e7810e0be55b428ada41041c41f32c9f1a42817901b4ccf45fa3d4b6561e74c7" 240 | dependencies = [ 241 | "adler", 242 | ] 243 | 244 | [[package]] 245 | name = "mio" 246 | version = "0.8.8" 247 | source = "registry+https://github.com/rust-lang/crates.io-index" 248 | checksum = "927a765cd3fc26206e66b296465fa9d3e5ab003e651c1b3c060e7956d96b19d2" 249 | dependencies = [ 250 | "libc", 251 | "wasi 0.11.0+wasi-snapshot-preview1", 252 | "windows-sys", 253 | ] 254 | 255 | [[package]] 256 | name = "num-traits" 257 | version = "0.2.16" 258 | source = "registry+https://github.com/rust-lang/crates.io-index" 259 | checksum = "f30b0abd723be7e2ffca1272140fac1a2f084c77ec3e123c192b66af1ee9e6c2" 260 | dependencies = [ 261 | "autocfg", 262 | ] 263 | 264 | [[package]] 265 | name = "num_cpus" 266 | version = "1.16.0" 267 | source = "registry+https://github.com/rust-lang/crates.io-index" 268 | checksum = "4161fcb6d602d4d2081af7c3a45852d875a03dd337a6bfdd6e06407b61342a43" 269 | dependencies = [ 270 | "hermit-abi 0.3.2", 271 | "libc", 272 | ] 273 | 274 | [[package]] 275 | name = "object" 276 | version = "0.32.1" 277 | source = "registry+https://github.com/rust-lang/crates.io-index" 278 | checksum = "9cf5f9dd3933bd50a9e1f149ec995f39ae2c496d31fd772c1fd45ebc27e902b0" 279 | dependencies = [ 280 | "memchr", 281 | ] 282 | 283 | [[package]] 284 | name = "once_cell" 285 | version = "1.18.0" 286 | source = "registry+https://github.com/rust-lang/crates.io-index" 287 | checksum = "dd8b5dd2ae5ed71462c540258bedcb51965123ad7e7ccf4b9a8cafaa4a63576d" 288 | 289 | [[package]] 290 | name = "parking_lot" 291 | version = "0.12.1" 292 | source = "registry+https://github.com/rust-lang/crates.io-index" 293 | checksum = "3742b2c103b9f06bc9fff0a37ff4912935851bee6d36f3c02bcc755bcfec228f" 294 | dependencies = [ 295 | "lock_api", 296 | "parking_lot_core", 297 | ] 298 | 299 | [[package]] 300 | name = "parking_lot_core" 301 | version = "0.9.8" 302 | source = "registry+https://github.com/rust-lang/crates.io-index" 303 | checksum = "93f00c865fe7cabf650081affecd3871070f26767e7b2070a3ffae14c654b447" 304 | dependencies = [ 305 | "cfg-if", 306 | "libc", 307 | "redox_syscall", 308 | "smallvec", 309 | "windows-targets", 310 | ] 311 | 312 | [[package]] 313 | name = "pin-project-lite" 314 | version = "0.2.13" 315 | source = "registry+https://github.com/rust-lang/crates.io-index" 316 | checksum = "8afb450f006bf6385ca15ef45d71d2288452bc3683ce2e2cacc0d18e4be60b58" 317 | 318 | [[package]] 319 | name = "proc-macro2" 320 | version = "1.0.66" 321 | source = "registry+https://github.com/rust-lang/crates.io-index" 322 | checksum = "18fb31db3f9bddb2ea821cde30a9f70117e3f119938b5ee630b7403aa6e2ead9" 323 | dependencies = [ 324 | "unicode-ident", 325 | ] 326 | 327 | [[package]] 328 | name = "quote" 329 | version = "1.0.33" 330 | source = "registry+https://github.com/rust-lang/crates.io-index" 331 | checksum = "5267fca4496028628a95160fc423a33e8b2e6af8a5302579e322e4b520293cae" 332 | dependencies = [ 333 | "proc-macro2", 334 | ] 335 | 336 | [[package]] 337 | name = "redox_syscall" 338 | version = "0.3.5" 339 | source = "registry+https://github.com/rust-lang/crates.io-index" 340 | checksum = "567664f262709473930a4bf9e51bf2ebf3348f2e748ccc50dea20646858f8f29" 341 | dependencies = [ 342 | "bitflags", 343 | ] 344 | 345 | [[package]] 346 | name = "rustc-demangle" 347 | version = "0.1.23" 348 | source = "registry+https://github.com/rust-lang/crates.io-index" 349 | checksum = "d626bb9dae77e28219937af045c257c28bfd3f69333c512553507f5f9798cb76" 350 | 351 | [[package]] 352 | name = "scopeguard" 353 | version = "1.2.0" 354 | source = "registry+https://github.com/rust-lang/crates.io-index" 355 | checksum = "94143f37725109f92c262ed2cf5e59bce7498c01bcc1502d7b9afe439a4e9f49" 356 | 357 | [[package]] 358 | name = "signal-hook-registry" 359 | version = "1.4.1" 360 | source = "registry+https://github.com/rust-lang/crates.io-index" 361 | checksum = "d8229b473baa5980ac72ef434c4415e70c4b5e71b423043adb4ba059f89c99a1" 362 | dependencies = [ 363 | "libc", 364 | ] 365 | 366 | [[package]] 367 | name = "smallvec" 368 | version = "1.11.0" 369 | source = "registry+https://github.com/rust-lang/crates.io-index" 370 | checksum = "62bb4feee49fdd9f707ef802e22365a35de4b7b299de4763d44bfea899442ff9" 371 | 372 | [[package]] 373 | name = "socket2" 374 | version = "0.5.3" 375 | source = "registry+https://github.com/rust-lang/crates.io-index" 376 | checksum = "2538b18701741680e0322a2302176d3253a35388e2e62f172f64f4f16605f877" 377 | dependencies = [ 378 | "libc", 379 | "windows-sys", 380 | ] 381 | 382 | [[package]] 383 | name = "strsim" 384 | version = "0.8.0" 385 | source = "registry+https://github.com/rust-lang/crates.io-index" 386 | checksum = "8ea5119cdb4c55b55d432abb513a0429384878c15dde60cc77b1c99de1a95a6a" 387 | 388 | [[package]] 389 | name = "syn" 390 | version = "2.0.31" 391 | source = "registry+https://github.com/rust-lang/crates.io-index" 392 | checksum = "718fa2415bcb8d8bd775917a1bf12a7931b6dfa890753378538118181e0cb398" 393 | dependencies = [ 394 | "proc-macro2", 395 | "quote", 396 | "unicode-ident", 397 | ] 398 | 399 | [[package]] 400 | name = "textwrap" 401 | version = "0.11.0" 402 | source = "registry+https://github.com/rust-lang/crates.io-index" 403 | checksum = "d326610f408c7a4eb6f51c37c330e496b08506c9457c9d34287ecc38809fb060" 404 | dependencies = [ 405 | "unicode-width", 406 | ] 407 | 408 | [[package]] 409 | name = "tfrv" 410 | version = "0.1.0" 411 | dependencies = [ 412 | "chrono", 413 | "clap", 414 | "encoding_rs", 415 | "tokio", 416 | ] 417 | 418 | [[package]] 419 | name = "time" 420 | version = "0.1.45" 421 | source = "registry+https://github.com/rust-lang/crates.io-index" 422 | checksum = "1b797afad3f312d1c66a56d11d0316f916356d11bd158fbc6ca6389ff6bf805a" 423 | dependencies = [ 424 | "libc", 425 | "wasi 0.10.0+wasi-snapshot-preview1", 426 | "winapi", 427 | ] 428 | 429 | [[package]] 430 | name = "tokio" 431 | version = "1.32.0" 432 | source = "registry+https://github.com/rust-lang/crates.io-index" 433 | checksum = "17ed6077ed6cd6c74735e21f37eb16dc3935f96878b1fe961074089cc80893f9" 434 | dependencies = [ 435 | "backtrace", 436 | "bytes", 437 | "libc", 438 | "mio", 439 | "num_cpus", 440 | "parking_lot", 441 | "pin-project-lite", 442 | "signal-hook-registry", 443 | "socket2", 444 | "tokio-macros", 445 | "windows-sys", 446 | ] 447 | 448 | [[package]] 449 | name = "tokio-macros" 450 | version = "2.1.0" 451 | source = "registry+https://github.com/rust-lang/crates.io-index" 452 | checksum = "630bdcf245f78637c13ec01ffae6187cca34625e8c63150d424b59e55af2675e" 453 | dependencies = [ 454 | "proc-macro2", 455 | "quote", 456 | "syn", 457 | ] 458 | 459 | [[package]] 460 | name = "unicode-ident" 461 | version = "1.0.11" 462 | source = "registry+https://github.com/rust-lang/crates.io-index" 463 | checksum = "301abaae475aa91687eb82514b328ab47a211a533026cb25fc3e519b86adfc3c" 464 | 465 | [[package]] 466 | name = "unicode-width" 467 | version = "0.1.10" 468 | source = "registry+https://github.com/rust-lang/crates.io-index" 469 | checksum = "c0edd1e5b14653f783770bce4a4dabb4a5108a5370a5f5d8cfe8710c361f6c8b" 470 | 471 | [[package]] 472 | name = "vec_map" 473 | version = "0.8.2" 474 | source = "registry+https://github.com/rust-lang/crates.io-index" 475 | checksum = "f1bddf1187be692e79c5ffeab891132dfb0f236ed36a43c7ed39f1165ee20191" 476 | 477 | [[package]] 478 | name = "wasi" 479 | version = "0.10.0+wasi-snapshot-preview1" 480 | source = "registry+https://github.com/rust-lang/crates.io-index" 481 | checksum = "1a143597ca7c7793eff794def352d41792a93c481eb1042423ff7ff72ba2c31f" 482 | 483 | [[package]] 484 | name = "wasi" 485 | version = "0.11.0+wasi-snapshot-preview1" 486 | source = "registry+https://github.com/rust-lang/crates.io-index" 487 | checksum = "9c8d87e72b64a3b4db28d11ce29237c246188f4f51057d65a7eab63b7987e423" 488 | 489 | [[package]] 490 | name = "wasm-bindgen" 491 | version = "0.2.87" 492 | source = "registry+https://github.com/rust-lang/crates.io-index" 493 | checksum = "7706a72ab36d8cb1f80ffbf0e071533974a60d0a308d01a5d0375bf60499a342" 494 | dependencies = [ 495 | "cfg-if", 496 | "wasm-bindgen-macro", 497 | ] 498 | 499 | [[package]] 500 | name = "wasm-bindgen-backend" 501 | version = "0.2.87" 502 | source = "registry+https://github.com/rust-lang/crates.io-index" 503 | checksum = "5ef2b6d3c510e9625e5fe6f509ab07d66a760f0885d858736483c32ed7809abd" 504 | dependencies = [ 505 | "bumpalo", 506 | "log", 507 | "once_cell", 508 | "proc-macro2", 509 | "quote", 510 | "syn", 511 | "wasm-bindgen-shared", 512 | ] 513 | 514 | [[package]] 515 | name = "wasm-bindgen-macro" 516 | version = "0.2.87" 517 | source = "registry+https://github.com/rust-lang/crates.io-index" 518 | checksum = "dee495e55982a3bd48105a7b947fd2a9b4a8ae3010041b9e0faab3f9cd028f1d" 519 | dependencies = [ 520 | "quote", 521 | "wasm-bindgen-macro-support", 522 | ] 523 | 524 | [[package]] 525 | name = "wasm-bindgen-macro-support" 526 | version = "0.2.87" 527 | source = "registry+https://github.com/rust-lang/crates.io-index" 528 | checksum = "54681b18a46765f095758388f2d0cf16eb8d4169b639ab575a8f5693af210c7b" 529 | dependencies = [ 530 | "proc-macro2", 531 | "quote", 532 | "syn", 533 | "wasm-bindgen-backend", 534 | "wasm-bindgen-shared", 535 | ] 536 | 537 | [[package]] 538 | name = "wasm-bindgen-shared" 539 | version = "0.2.87" 540 | source = "registry+https://github.com/rust-lang/crates.io-index" 541 | checksum = "ca6ad05a4870b2bf5fe995117d3728437bd27d7cd5f06f13c17443ef369775a1" 542 | 543 | [[package]] 544 | name = "winapi" 545 | version = "0.3.9" 546 | source = "registry+https://github.com/rust-lang/crates.io-index" 547 | checksum = "5c839a674fcd7a98952e593242ea400abe93992746761e38641405d28b00f419" 548 | dependencies = [ 549 | "winapi-i686-pc-windows-gnu", 550 | "winapi-x86_64-pc-windows-gnu", 551 | ] 552 | 553 | [[package]] 554 | name = "winapi-i686-pc-windows-gnu" 555 | version = "0.4.0" 556 | source = "registry+https://github.com/rust-lang/crates.io-index" 557 | checksum = "ac3b87c63620426dd9b991e5ce0329eff545bccbbb34f3be09ff6fb6ab51b7b6" 558 | 559 | [[package]] 560 | name = "winapi-x86_64-pc-windows-gnu" 561 | version = "0.4.0" 562 | source = "registry+https://github.com/rust-lang/crates.io-index" 563 | checksum = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f" 564 | 565 | [[package]] 566 | name = "windows" 567 | version = "0.48.0" 568 | source = "registry+https://github.com/rust-lang/crates.io-index" 569 | checksum = "e686886bc078bc1b0b600cac0147aadb815089b6e4da64016cbd754b6342700f" 570 | dependencies = [ 571 | "windows-targets", 572 | ] 573 | 574 | [[package]] 575 | name = "windows-sys" 576 | version = "0.48.0" 577 | source = "registry+https://github.com/rust-lang/crates.io-index" 578 | checksum = "677d2418bec65e3338edb076e806bc1ec15693c5d0104683f2efe857f61056a9" 579 | dependencies = [ 580 | "windows-targets", 581 | ] 582 | 583 | [[package]] 584 | name = "windows-targets" 585 | version = "0.48.5" 586 | source = "registry+https://github.com/rust-lang/crates.io-index" 587 | checksum = "9a2fa6e2155d7247be68c096456083145c183cbbbc2764150dda45a87197940c" 588 | dependencies = [ 589 | "windows_aarch64_gnullvm", 590 | "windows_aarch64_msvc", 591 | "windows_i686_gnu", 592 | "windows_i686_msvc", 593 | "windows_x86_64_gnu", 594 | "windows_x86_64_gnullvm", 595 | "windows_x86_64_msvc", 596 | ] 597 | 598 | [[package]] 599 | name = "windows_aarch64_gnullvm" 600 | version = "0.48.5" 601 | source = "registry+https://github.com/rust-lang/crates.io-index" 602 | checksum = "2b38e32f0abccf9987a4e3079dfb67dcd799fb61361e53e2882c3cbaf0d905d8" 603 | 604 | [[package]] 605 | name = "windows_aarch64_msvc" 606 | version = "0.48.5" 607 | source = "registry+https://github.com/rust-lang/crates.io-index" 608 | checksum = "dc35310971f3b2dbbf3f0690a219f40e2d9afcf64f9ab7cc1be722937c26b4bc" 609 | 610 | [[package]] 611 | name = "windows_i686_gnu" 612 | version = "0.48.5" 613 | source = "registry+https://github.com/rust-lang/crates.io-index" 614 | checksum = "a75915e7def60c94dcef72200b9a8e58e5091744960da64ec734a6c6e9b3743e" 615 | 616 | [[package]] 617 | name = "windows_i686_msvc" 618 | version = "0.48.5" 619 | source = "registry+https://github.com/rust-lang/crates.io-index" 620 | checksum = "8f55c233f70c4b27f66c523580f78f1004e8b5a8b659e05a4eb49d4166cca406" 621 | 622 | [[package]] 623 | name = "windows_x86_64_gnu" 624 | version = "0.48.5" 625 | source = "registry+https://github.com/rust-lang/crates.io-index" 626 | checksum = "53d40abd2583d23e4718fddf1ebec84dbff8381c07cae67ff7768bbf19c6718e" 627 | 628 | [[package]] 629 | name = "windows_x86_64_gnullvm" 630 | version = "0.48.5" 631 | source = "registry+https://github.com/rust-lang/crates.io-index" 632 | checksum = "0b7b52767868a23d5bab768e390dc5f5c55825b6d30b86c844ff2dc7414044cc" 633 | 634 | [[package]] 635 | name = "windows_x86_64_msvc" 636 | version = "0.48.5" 637 | source = "registry+https://github.com/rust-lang/crates.io-index" 638 | checksum = "ed94fce61571a4006852b7389a063ab983c02eb1bb37b47f8272ce92d06d9538" 639 | --------------------------------------------------------------------------------