Advertisement
Guest User

Untitled

a guest
Jul 24th, 2016
80
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.02 KB | None | 0 0
  1. extern crate ftp;
  2. extern crate chrono;
  3.  
  4. use std::env;
  5. use std::fs::File;
  6. use std::str;
  7. use std::io::{Result, Write};
  8. use ftp::FtpStream;
  9. use chrono::*;
  10.  
  11.  
  12. fn main() {
  13.  
  14. let args: Vec<String> = env::args().collect();
  15. ftpgp(&args[1], &args[2], &args[3], &args[4]).unwrap_or_else(|err|
  16. panic!("{}", err)
  17. );
  18.  
  19. }
  20.  
  21. fn ftpgp(addr: &str, user: &str, pass: &str, remote_path: &str,) -> Result<()> {
  22. let dt = Local::now();
  23. let now = dt.format("%Y-%m-%d %H:%M:%S").to_string();
  24.  
  25. let mut ftp_stream = try!(FtpStream::connect((addr, 21)));
  26. try!(ftp_stream.login(user, pass));
  27.  
  28. ftp_stream.cwd(remote_path).unwrap();
  29. let file_list = try!(ftp_stream.nlst(None));
  30.  
  31. let files: Vec<String> = file_list.into_iter()
  32. .filter(|name| name.ends_with(".zip"))
  33. .collect();
  34.  
  35. for file in files {
  36. try!(ftp_stream.retr(file.as_str(), |stream| {
  37. let mut file = File::create(file.clone()).unwrap();
  38. let mut buf = [0; 2048];
  39.  
  40. loop {
  41. match stream.read(&mut buf) {
  42. Ok(0) => break,
  43. Ok(n) => file.write_all(&buf[0..n]).unwrap(),
  44. Err(err) => return Err(err)
  45. };
  46. }
  47.  
  48. Ok(())
  49. }));
  50. println!("{} Saving: {}", now, file);
  51.  
  52. ftp_stream.rm(file.as_str()).unwrap();
  53. println!("{} Delete from ftp: {}", now, file);
  54. }
  55.  
  56. ftp_stream.quit()
  57. }
  58.  
  59. unzip -t sample.zip
  60. Archive: sample.zip
  61. warning [sample.zip]: 252314 extra bytes at beginning or within zipfile
  62. (attempting to process anyway)
  63. file #1: bad zipfile offset (local header sig): 252314
  64. (attempting to re-compensate)
  65. testing: sample.pdf
  66. error: invalid compressed data to inflate
  67. file #2: bad zipfile offset (local header sig): 67841095
  68. (attempting to re-compensate)
  69. file #2: bad zipfile offset (local header sig): 67841095
  70. file #3: bad zipfile offset (local header sig): 68093906
  71.  
  72. ftp_stream.transfer_type(Binary);
  73.  
  74. error: unresolved name `Binary`
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement