]> OzVa Git service - ozva-cloud/commitdiff
fix: unzip override existed file in uploadonly mode
authorsigoden <sigoden@gmail.com>
Tue, 31 May 2022 07:20:47 +0000 (15:20 +0800)
committersigoden <sigoden@gmail.com>
Tue, 31 May 2022 07:20:47 +0000 (15:20 +0800)
src/assets/index.html
src/assets/index.js
src/server.rs

index f90ef828c3008f3f91a77f4be35afe2eccf1b42f..e53640914cfa2f4c943c39ca48c87521a5801cdd 100644 (file)
@@ -15,7 +15,7 @@
           <svg width="16" height="16" viewBox="0 0 16 16"><path d="M.5 9.9a.5.5 0 0 1 .5.5v2.5a1 1 0 0 0 1 1h12a1 1 0 0 0 1-1v-2.5a.5.5 0 0 1 1 0v2.5a2 2 0 0 1-2 2H2a2 2 0 0 1-2-2v-2.5a.5.5 0 0 1 .5-.5z"/><path d="M7.646 11.854a.5.5 0 0 0 .708 0l3-3a.5.5 0 0 0-.708-.708L8.5 10.293V1.5a.5.5 0 0 0-1 0v8.793L5.354 8.146a.5.5 0 1 0-.708.708l3 3z"/></svg>
         </a>
       </div>
-      <div class="upload-control hidden" title="Upload file">
+      <div class="upload-control hidden" title="Upload files">
         <label for="file">
           <svg width="16" height="16" viewBox="0 0 16 16"><path d="M.5 9.9a.5.5 0 0 1 .5.5v2.5a1 1 0 0 0 1 1h12a1 1 0 0 0 1-1v-2.5a.5.5 0 0 1 1 0v2.5a2 2 0 0 1-2 2H2a2 2 0 0 1-2-2v-2.5a.5.5 0 0 1 .5-.5z"/><path d="M7.646 1.146a.5.5 0 0 1 .708 0l3 3a.5.5 0 0 1-.708.708L8.5 2.707V11.5a.5.5 0 0 1-1 0V2.707L5.354 4.854a.5.5 0 1 1-.708-.708l3-3z"/></svg>
         </label>
index 9bf35a3d2fb0a7aaf993b7fbbf48affd8cc7406e..0a69c0e1d739fefba88fc35ffc9700bbcb83185c 100644 (file)
@@ -27,7 +27,6 @@ class Uploader {
     const ajax = new XMLHttpRequest();
     ajax.upload.addEventListener("progress", e => this.progress(e), false);
     ajax.addEventListener("readystatechange", () => {
-      console.log(ajax.readyState, ajax.status)
       if(ajax.readyState === 4) {
         if (ajax.status == 200) {
           this.complete();
index a317fb23c5620d7a9241dc9e31a68faebb4476ee..dba3564ceb47030194ea469b0be47b81117b4edf 100644 (file)
@@ -11,7 +11,8 @@ use headers::{
     HeaderMap, HeaderMapExt, IfModifiedSince, IfNoneMatch, IfRange, LastModified, Range,
 };
 use hyper::header::{
-    HeaderValue, ACCEPT, CONTENT_DISPOSITION, CONTENT_TYPE, ORIGIN, RANGE, WWW_AUTHENTICATE,
+    HeaderValue, ACCEPT, AUTHORIZATION, CONTENT_DISPOSITION, CONTENT_TYPE, ORIGIN, RANGE,
+    WWW_AUTHENTICATE,
 };
 use hyper::service::{make_service_fn, service_fn};
 use hyper::{Body, Method, StatusCode};
@@ -193,8 +194,8 @@ impl InnerService {
 
         io::copy(&mut body_reader, &mut file).await?;
 
-        let req_query = req.uri().query().unwrap_or_default();
-        if req_query == "unzip" {
+        let query = req.uri().query().unwrap_or_default();
+        if query == "unzip" {
             let root = path.parent().unwrap();
             let mut zip = ZipFileReader::new(File::open(&path).await?).await?;
             for i in 0..zip.entries().len() {
@@ -204,6 +205,9 @@ impl InnerService {
                 if entry_name.ends_with('/') {
                     fs::create_dir_all(entry_path).await?;
                 } else {
+                    if !self.args.allow_delete && fs::metadata(&entry_path).await.is_ok() {
+                        continue;
+                    }
                     if let Some(parent) = entry_path.parent() {
                         if fs::symlink_metadata(parent).await.is_err() {
                             fs::create_dir_all(&parent).await?;
@@ -395,7 +399,7 @@ impl InnerService {
         let pass = {
             match &self.args.auth {
                 None => true,
-                Some(auth) => match req.headers().get("Authorization") {
+                Some(auth) => match req.headers().get(AUTHORIZATION) {
                     Some(value) => match value.to_str().ok().map(|v| {
                         let mut it = v.split(' ');
                         (it.next(), it.next())