74 Commits

Author SHA1 Message Date
Sean
15b7169df4
perf: multi-thread downloader, Content-Disposition (#4921)
general: enhance multi-thread downloader with cancelable context, immediately stop all stream processes when canceled;
feat(crypt): improve stream closing;
general: fix the bug of downloading files becomes previewing stream on modern browsers;

Co-authored-by: Sean He <866155+seanhe26@users.noreply.github.com>
Co-authored-by: Andy Hsu <i@nn.ci>
2023-08-04 15:29:54 +08:00
Sean
3c21a9a520
feat: Crypt driver, improve http/webdav handling (#4884)
this PR has several enhancements, fixes, and features:
- [x] Crypt: a transparent encryption driver. Anyone can easily, and safely store encrypted data on the remote storage provider.  Consider your data is safely stored in the safe, and the storage provider can only see the safe, but not your data.
  - [x] Optional: compatible with [Rclone Crypt](https://rclone.org/crypt/). More ways to manipulate the encrypted data.
  - [x] directory and filename encryption
  - [x] server-side encryption mode (server encrypts & decrypts all data, all data flows thru the server)
- [x] obfuscate sensitive information internally
- [x] introduced a server memory-cached multi-thread downloader.
  - [x] Driver: **Quark** enabled this feature, faster load in any single thread scenario. e.g. media player directly playing from the link, now it's faster.
- [x] general improvement on HTTP/WebDAV stream processing & header handling & response handling
  - [x] Driver: **Mega** driver support ranged http header
  - [x] Driver: **Quark** fix bug of not closing HTTP request to Quark server while user end has closed connection to alist

## Crypt, a transparent Encrypt/Decrypt Driver. (Rclone Crypt compatible)

e.g.  
Crypt mount path ->  /vault 
Crypt remote path -> /ali/encrypted
Aliyun mount paht -> /ali

when the user uploads a.jpg to /vault, the data will be encrypted and saved to /ali/encrypted/xxxxx. And when the user wants to access a.jpg,  it's automatically decrypted, and the user can do anything with it.
Since it's Rclone Crypt compatible, users can download /ali/encrypted/xxxxx  and decrypt it with rclone crypt tool. Or the user can mount this folder using rclone, then mount the decrypted folder in Linux...

NB.  Some breaking changes is made to make it follow global standard, e.g. processing the HTTP header properly.

close #4679 
close #4827 

Co-authored-by: Sean He <866155+seanhe26@users.noreply.github.com>
Co-authored-by: Andy Hsu <i@nn.ci>
2023-08-02 14:40:36 +08:00
Andy Hsu
7e9cdd8b07 fix(aliyundrive_open): fail limit on concurrently call (#4851) 2023-07-28 15:55:39 +08:00
Andy Hsu
a4511c1963 refactor: change hash function 2023-07-15 16:29:44 +08:00
Andy Hsu
89832c296f fix: judge can proxy with ext (close #4688) 2023-07-03 20:41:37 +08:00
wenmig
cfee536b96
feat: add Dropbox driver (#4639 close #4590)
Co-authored-by: Andy Hsu <i@nn.ci>
2023-06-23 17:36:40 +08:00
Andy Hsu
c77ed5fcb0 feat(aliyundrive_open): limit rate for List and Link (close #4290) 2023-05-02 22:06:03 +08:00
NewbieOrange
4ec274e748
fix(aliyundrive_open): refresh upload url if expired (#3999 close #3823)
* fix(aliyundrive_open): refresh upload url for large files

* fix(aliyundrive_open): retry upload on url expiry

* fix(aliyundrive_open): ignore 409 error

* feat(aliyundrive): cleanup upload retry logic

* feat(util): add multireadable io utility

* feat(aliyundrive_open): make upload fully stream

* feat(aliyundrive_open): refresh upload url every 20 puts

* fix(aliyundrive_open): part info panic

* chore: change refresh upload url strategy

---------

Co-authored-by: Andy Hsu <i@nn.ci>
2023-04-01 14:54:29 +08:00
Andy Hsu
0d07d81802 feat(smb): support range header (close #3192) 2023-02-20 16:46:38 +08:00
Andy Hsu
805b1e4fa3 fix: different url encoding (close #3423) 2023-02-15 16:20:30 +08:00
foxxorcat
46b2ed2507
fix(aliyundriver):x-device-id error code (#3390)
* fix(aliyundriver):x-drvice-id error code

* fix(aliyunpan):session signature error

* fix typo

---------

Co-authored-by: Andy Hsu <i@nn.ci>
2023-02-14 14:11:07 +08:00
NewbieOrange
22843ffc70
fix(fs): copy file if symlink failed (#3368) 2023-02-13 14:41:35 +08:00
Noah Hsu
b42ec3e810 fix: relative path judgment (close #3130) 2023-01-23 15:52:46 +08:00
Noah Hsu
6453ae0968 fix(search): empty parent where update (close #2810) 2023-01-16 17:33:24 +08:00
foxxorcat
2f19d4a834
perf(lanzou): optimize the use of list cache (#2956)
* fix:local sort not cache

* perf(lanzou): Optimize the use of list cache
2023-01-08 21:31:35 +08:00
foxxorcat
a1ded3a339
refactor(baidu_photo): optimize code (close #2911 pr #2924) 2023-01-06 15:36:05 +08:00
Noah Hsu
d756cf3e9f fix(local): disable copying or moving to subfolders (close #2760) 2022-12-20 16:27:04 +08:00
EzraRT
146619134d
feat: customize proxy ignore headers (close #2763 pr #2766)
* clean referer when use proxy

* feat: customize proxy ignore headers

Co-authored-by: Noah Hsu <i@nn.ci>
2022-12-20 16:08:32 +08:00
foxxorcat
62a06fa0f9
feat: optimize file operation interface (#2757)
* feat: optimize file operation interface

* chore: fix typo

Co-authored-by: Noah Hsu <i@nn.ci>
2022-12-20 15:02:40 +08:00
Noah Hsu
b50d486a63 fix: sub path check if subPath = / 2022-12-18 21:28:38 +08:00
foxxorcat
6024e8d832
refactor: split the db package hook and cache to the op package (#2747)
* refactor:separate the setting method from the db package to the op package and add the cache

* refactor:separate the meta method from the db package to the op package

* fix:setting not load database data

* refactor:separate the user method from the db package to the op package

* refactor:remove user JoinPath error

* fix:op package user cache

* refactor:fs package list method

* fix:tile virtual paths (close #2743)

* Revert "refactor:remove user JoinPath error"

This reverts commit 4e20daaf9e700da047000d4fd4900abbe05c3848.

* clean path directly may lead to unknown behavior

* fix: The path of the meta passed in must be prefix of reqPath

* chore: rename all virtualPath to mountPath

* fix: `getStoragesByPath` and `GetStorageVirtualFilesByPath`

is_sub_path:

/a/b isn't subpath of /a/bc

* fix: don't save setting if hook error

Co-authored-by: Noah Hsu <i@nn.ci>
2022-12-18 19:51:20 +08:00
foxxorcat
fb64f00640
refactor: obj name mapping and internal path processing (#2733)
* refactor:Prepare to remove the get interface

* feat:add obj Unwarp interface

* refactor:obj name mapping and program internal path processing

* chore: fix typo

* feat: unwrap get

* fix: no use op.Get to get parent id

* fix: set the path uniformly

Co-authored-by: Noah Hsu <i@nn.ci>
2022-12-17 19:49:05 +08:00
Noah Hsu
bc6baf1be0 fix(ci): sort lang json file 2022-12-05 14:40:46 +08:00
Noah Hsu
b5bf5f4325 fix: check if the req path is relative path (close #2531) 2022-11-30 21:38:00 +08:00
Noah Hsu
83644dab85 fix: mapping filename in GetName
some missed filename mapping
2022-11-30 20:46:54 +08:00
Noah Hsu
ddcba93eea
feat: multiple search indexes (#2514)
* refactor: abstract search interface

* wip: ~

* fix cycle import

* objs update hook

* wip: ~

* Delete search/none

* auto update index while cache changed

* db searcher

TODO: bleve init issue

cannot open index, metadata missing

* fix size type

why float64??

* fix typo

* fix nil pointer using

* api adapt ui

* bleve: fix clear & change struct
2022-11-28 13:45:25 +08:00
Noah Hsu
c09800790b feat: custom filename char mapping
fixes #2447 #2446 #2440 #2409 #2006 #1979 #1507 #324 #691 #518 #430
2022-11-22 15:54:18 +08:00
Code2qing
c601bb794b
feat(123): support mail login (close #2218 pr #2276) 2022-11-10 09:34:48 +08:00
Noah Hsu
f3a5e3702d fix(189): force use CN time zone (close #2240) 2022-11-07 16:37:47 +08:00
BoYanZh
f0cc0a76a9
chore: fix typos (#2122)
* refactor: fix typos

* Update help.go

Co-authored-by: Noah Hsu <i@nn.ci>
2022-10-26 14:05:56 +08:00
Noah Hsu
8c69260972 fix(webdav): set mime by ext if it's empty 2022-10-09 19:29:55 +08:00
Noah Hsu
2185839236 chore: safe base64 decode ipa name 2022-09-18 20:17:24 +08:00
Noah Hsu
d9f0603271 fix: copy folder between two storage (fix #1670) 2022-09-15 17:58:32 +08:00
Noah Hsu
b197322cd8 fix: type of file with name uppercase 2022-09-14 15:14:04 +08:00
foxxorcat
6b5236f52e feat: add baidu_photo driver 2022-09-12 17:10:02 +08:00
Noah Hsu
043a79189d style: uniform use utils.CreateTempFile 2022-09-10 14:11:06 +08:00
Noah Hsu
5ed43fd17d fix(123): pass ip when getting download link 2022-09-10 13:54:10 +08:00
Noah Hsu
fbaebc020f fix(189pc): wrong time if location incorrect (close #1562) 2022-09-08 20:03:07 +08:00
Noah Hsu
534d8d30fc feat: skip generate lang if no changes 2022-09-05 16:40:51 +08:00
Noah Hsu
900e71f78f feat: add 139yun driver 2022-09-05 13:35:01 +08:00
Noah Hsu
dcc99802ec fix: panic while create empty file 2022-09-03 19:32:44 +08:00
Noah Hsu
755f4b83f6 feat: add progress for io copy 2022-08-31 22:41:27 +08:00
Noah Hsu
817d63597e feat: add aliyundrive driver 2022-08-31 20:46:19 +08:00
Noah Hsu
a6b9dbfbe4 fix: use utils.Log in some places 2022-08-30 16:13:01 +08:00
Noah Hsu
046bbb3a48 feat: use lumberjack for log rotate 2022-08-30 15:22:54 +08:00
Noah Hsu
cc9ccc4e9b ci: auto generate drivers lang file 2022-08-26 19:06:32 +08:00
Noah Hsu
7425e001db feat: auto generate drivers language json 2022-08-26 15:08:31 +08:00
Noah Hsu
d9ee174dd3 feat!: unity iframe preview 2022-08-23 16:50:54 +08:00
Noah Hsu
af884010d1 feat: local storage image thumbnail 2022-08-11 20:32:17 +08:00
Noah Hsu
61fa6f38a8 feat: add type to fs read api 2022-08-08 00:51:05 +08:00