Dietmar Maurer
7e03988caf
avoid double logging of proxied requests
2019-02-14 13:28:41 +01:00
Dietmar Maurer
af6f80d3db
Revert "backup/datastore: fn open is a private implementation detail"
...
This reverts commit 3dacd9a660
.
I currently use this in some test ...
2019-02-14 13:13:49 +01:00
Dietmar Maurer
78a1fa6722
src/server/rest.rs: log failed requests
2019-02-14 13:07:34 +01:00
Wolfgang Bumiller
2cc90617dd
tools/fs: mark ReadDir as Send
...
Signed-off-by: Wolfgang Bumiller <w.bumiller@proxmox.com>
2019-02-14 12:37:31 +01:00
Wolfgang Bumiller
62f2422f6a
backup/chunk_store: verify chunk file names
...
get_chunk_iterator() should skip over files which aren't an
actual chunk
Signed-off-by: Wolfgang Bumiller <w.bumiller@proxmox.com>
2019-02-14 12:37:31 +01:00
Wolfgang Bumiller
3dacd9a660
backup/datastore: fn open is a private implementation detail
...
Signed-off-by: Wolfgang Bumiller <w.bumiller@proxmox.com>
2019-02-14 12:37:31 +01:00
Wolfgang Bumiller
9739aca41f
backup/chunk_store: open base dir in get_chunk_iterator
...
Signed-off-by: Wolfgang Bumiller <w.bumiller@proxmox.com>
2019-02-14 12:37:31 +01:00
Dietmar Maurer
db4868ef4f
src/client/backup_repo.rs - improve docu
2019-02-14 11:17:08 +01:00
Dietmar Maurer
151c6ce27d
src/client.rs: improve library structure and docu
2019-02-14 11:11:39 +01:00
Wolfgang Bumiller
dd1bfe6c12
tools/timer: add module documentation
...
Signed-off-by: Wolfgang Bumiller <w.bumiller@proxmox.com>
2019-02-14 10:13:42 +01:00
Wolfgang Bumiller
c7f481b642
backup: replace ChunkIterator
...
Instead we just build the iterator using our
tools::fs::read_subdir iterator as follows:
Use the index range (0..0x10000) as an iterator, map() it
to yield a subdirectory iterator for each index, then
flatten it.
Signed-off-by: Wolfgang Bumiller <w.bumiller@proxmox.com>
2019-02-14 10:09:59 +01:00
Wolfgang Bumiller
121f18efb7
tools: use scan_subdir iterator for scandir
...
Signed-off-by: Wolfgang Bumiller <w.bumiller@proxmox.com>
2019-02-14 10:09:59 +01:00
Wolfgang Bumiller
32286b039c
tools/fs: add file_name_utf8_unchecked shortcut
...
Signed-off-by: Wolfgang Bumiller <w.bumiller@proxmox.com>
2019-02-14 10:09:59 +01:00
Wolfgang Bumiller
806d7a6a35
tools/fs: change scan_subdir to use filter_file_name_regex
...
Signed-off-by: Wolfgang Bumiller <w.bumiller@proxmox.com>
2019-02-14 10:09:59 +01:00
Wolfgang Bumiller
53e1e7ca72
tools/fs: add filter_file_name_regex to FileIterOps
...
Signed-off-by: Wolfgang Bumiller <w.bumiller@proxmox.com>
2019-02-14 10:09:59 +01:00
Wolfgang Bumiller
23fba9d777
tools/fs: add FileIterOps trait and FileTypeFilter
...
FileIterOps will provide operations on file entry iterators.
For now this provides a file type filter.
Signed-off-by: Wolfgang Bumiller <w.bumiller@proxmox.com>
2019-02-14 10:09:59 +01:00
Wolfgang Bumiller
1db416150d
tools/fs: let ReadDir iterator yield ReadDirEntry
...
Signed-off-by: Wolfgang Bumiller <w.bumiller@proxmox.com>
2019-02-14 10:09:59 +01:00
Wolfgang Bumiller
b12505da69
tools/fs: add ReadDirEntry helper
...
This wraps nix::dir::Entry with the parent and additionally
exposes the parent directory file descriptor since we need
it to perform openat().
Signed-off-by: Wolfgang Bumiller <w.bumiller@proxmox.com>
2019-02-14 10:09:59 +01:00
Wolfgang Bumiller
a25f863afd
tools/fs: add scan_subdir helper
...
This filters the results of read_subdir with a regex.
Signed-off-by: Wolfgang Bumiller <w.bumiller@proxmox.com>
2019-02-14 10:09:59 +01:00
Wolfgang Bumiller
b4d5787de9
tools: start fs submodule, add read_subdir
...
This creates an iterator relative to a RawFd via
nix::dir::Dir over nix::dir::Entrys.
Signed-off-by: Wolfgang Bumiller <w.bumiller@proxmox.com>
2019-02-14 10:09:59 +01:00
Dietmar Maurer
0dffe3f99a
src/client/http_client.rs: try to login
...
use an environment var to store passphrase (PBS_PASSWORD)
2019-02-13 14:31:43 +01:00
Dietmar Maurer
33d64b81e0
src/bin/proxmox-backup-client.rs: define and use BackupRepository
2019-02-13 12:30:52 +01:00
Wolfgang Bumiller
4a3f65172c
client: use hyper-tls for now
...
Signed-off-by: Wolfgang Bumiller <w.bumiller@proxmox.com>
2019-02-13 11:03:09 +01:00
Wolfgang Bumiller
42d6e4fb05
tools: borrow: implement Deref for Tied
...
Eg. if you have an x: Tied<Dir, Iterator> now you can simply
call x.next() as it'll dereference to the Iterator.
Signed-off-by: Wolfgang Bumiller <w.bumiller@proxmox.com>
2019-02-13 11:03:09 +01:00
Dietmar Maurer
541a302224
api2/admin/datastore/catar.rs: use nested file extensions
...
i.e. archive.catar.didx
2019-02-13 10:37:00 +01:00
Dietmar Maurer
e5064ba607
simplify backup lib structure (pub use xxx:*), improve doc
2019-02-12 14:13:31 +01:00
Dietmar Maurer
d78345bcfc
src/backup.rs - improve doc
2019-02-12 13:27:11 +01:00
Dietmar Maurer
93d5d77952
rename ArchiveIndex to DynamicIndex
...
also changed the file extension from .aidx to .didx
2019-02-12 12:05:33 +01:00
Dietmar Maurer
91a905b6dd
rename ImageIndex to FixedIndex
...
also changed the file extension fron .iidx to .fidx
2019-02-12 11:50:45 +01:00
Wolfgang Bumiller
82bc0ad40c
backup: fixup warnings and readd lost file type check
...
Signed-off-by: Wolfgang Bumiller <w.bumiller@proxmox.com>
2019-02-12 10:43:43 +01:00
Wolfgang Bumiller
9349d2a1d2
backup: cleanup long lines
...
Signed-off-by: Wolfgang Bumiller <w.bumiller@proxmox.com>
2019-02-12 10:39:11 +01:00
Wolfgang Bumiller
fdd71f5286
backup: use ChunkIterator for sweep_unused_chunks
...
Signed-off-by: Wolfgang Bumiller <w.bumiller@proxmox.com>
2019-02-12 10:39:11 +01:00
Wolfgang Bumiller
c9e7f4dc8b
backup: add optional progress callback to ChunkIterator
...
Signed-off-by: Wolfgang Bumiller <w.bumiller@proxmox.com>
2019-02-12 10:39:11 +01:00
Wolfgang Bumiller
4070096c6a
backup: add ChunkIterator
...
Signed-off-by: Wolfgang Bumiller <w.bumiller@proxmox.com>
2019-02-12 10:39:11 +01:00
Wolfgang Bumiller
6ed25cbe3a
tools: add Tied value
...
Tie two dependent values together, such as a nix::Dir with
its nix::dir::Iter<'a> where 'a is tied to the Dir's
lifetime, making it otherwise impossible to return them or
store them in a struct.
Alternatively we could try the 'rental' crate.
Signed-off-by: Wolfgang Bumiller <w.bumiller@proxmox.com>
2019-02-12 10:39:11 +01:00
Wolfgang Bumiller
9ac1045c7b
bin: manager: fixup datastore parameter name
...
Signed-off-by: Wolfgang Bumiller <w.bumiller@proxmox.com>
2019-02-12 10:39:11 +01:00
Dietmar Maurer
8f8d5a420c
avoid compiler warning
2019-02-11 15:12:01 +01:00
Dietmar Maurer
aa5a4060ab
bin/proxmox-backup-api.rs: improve error handling
2019-02-11 15:11:42 +01:00
Dietmar Maurer
4223d9f800
bin/proxmox-backup-proxy.rs: improve error handling
2019-02-11 14:43:26 +01:00
Wolfgang Bumiller
ace9e3531a
access: use proxmox-backup-auth for pam
...
allows customization via /etc/pam.d/proxmox-backup-auth
Signed-off-by: Wolfgang Bumiller <w.bumiller@proxmox.com>
2019-02-07 13:40:22 +01:00
Wolfgang Bumiller
13f8310cac
api2: time: use /etc/localtime as fallback
...
in case there is no /etc/timezone
Signed-off-by: Wolfgang Bumiller <w.bumiller@proxmox.com>
2019-02-05 14:14:56 +01:00
Wolfgang Bumiller
a7cac14ed9
tools: use std::fs::read for file_get_contents
...
Until we add the extra options like we have in pve, just use
the already existing (since 1.26) shortcut.
Signed-off-by: Wolfgang Bumiller <w.bumiller@proxmox.com>
2019-02-04 15:35:32 +01:00
Wolfgang Bumiller
e937034c86
remove some rather inconvenient debug output
...
Signed-off-by: Wolfgang Bumiller <w.bumiller@proxmox.com>
2019-02-04 15:34:38 +01:00
Wolfgang Bumiller
9d02e5c38a
proxy: use <configdir>/server.pfx for tls
...
Signed-off-by: Wolfgang Bumiller <w.bumiller@proxmox.com>
2019-02-04 15:19:32 +01:00
Wolfgang Bumiller
9f4962d396
introduce buildcfg module and PROXMOX_CONFIGDIR
...
buildcfg.rs should contain convenience variables or macros
for using build-time configured variables
For now we replace hardcoded "/etc/proxmox-backup/<foo>"
with configdir!("<foo>").
Signed-off-by: Wolfgang Bumiller <w.bumiller@proxmox.com>
2019-02-04 15:13:08 +01:00
Wolfgang Bumiller
0d176f3681
proxy: use TLS via tokio-tls
...
Signed-off-by: Wolfgang Bumiller <w.bumiller@proxmox.com>
2019-02-04 14:56:07 +01:00
Wolfgang Bumiller
e0a5d1ca2f
tests: chunk_store: cleanup .testdir
...
Signed-off-by: Wolfgang Bumiller <w.bumiller@proxmox.com>
2019-02-01 10:41:54 +01:00
Wolfgang Bumiller
a4f9188300
tests: import lazy_static as needed
...
Signed-off-by: Wolfgang Bumiller <w.bumiller@proxmox.com>
2019-02-01 10:41:54 +01:00
Wolfgang Bumiller
6285b251e7
don't hardcode /usr/share paths
...
Add a defines.mk file defining the standard default layout
for installation (PREFIX, DATAROOTDIR, LIBDIR etc.).
Add a $(JSDIR) variable and use env!("JSDIR") in place of
the hardcoded /usr/share/javascript/proxmox-backup path.
Have defines.mk include an *optional* local.mak to override
JSDIR to www/ during local development.
Add `make install` targets and remove debian/install.
Note that service files are now in $libdir/proxmox-backup/
as there's usually no point in starting them from the
command line, so /usr/sbin makes no sense.
Signed-off-by: Wolfgang Bumiller <w.bumiller@proxmox.com>
2019-02-01 10:41:54 +01:00
Wolfgang Bumiller
8e4df103dd
remove useless command option from daemons
...
Signed-off-by: Wolfgang Bumiller <w.bumiller@proxmox.com>
2019-02-01 10:41:54 +01:00
Dietmar Maurer
6278365fd9
improve ApiMethod docu
2019-02-01 10:38:07 +01:00
Dietmar Maurer
4b2cdeb9a6
implement relead_timezone flag
2019-02-01 10:04:46 +01:00
Dietmar Maurer
c82bc1a1f9
depend on pam-auth, use pam for root login
...
Please use username "root@pam" for login via GUI.
2019-02-01 09:30:50 +01:00
Dietmar Maurer
a154a8e8a4
delay unauthorized request (rate limit)
2019-01-31 14:34:21 +01:00
Dietmar Maurer
5996577ab6
move http error class to router.rs
2019-01-31 13:22:30 +01:00
Dietmar Maurer
b9903d6331
server/rest.rs: verify auth cookie
2019-01-31 12:22:00 +01:00
Dietmar Maurer
f484eed3c2
Utils.js: fix cookie handling
...
Use unsecure cookie foör testing.
2019-01-31 10:08:08 +01:00
Dietmar Maurer
9f49fe1d5d
avoid compiler warnings
2019-01-30 18:25:37 +01:00
Dietmar Maurer
34f956bc25
api2/access.rs: add ticket api
2019-01-30 15:16:10 +01:00
Wolfgang Bumiller
1bf446a33e
fix timer_delete call
...
Signed-off-by: Wolfgang Bumiller <w.bumiller@proxmox.com>
2019-01-30 12:04:20 +01:00
Dietmar Maurer
cf671670a0
auth_helpers.rs: add timestamp to csrf token
2019-01-29 17:50:03 +01:00
Dietmar Maurer
1e76cbc6a2
auth_helpers.rs: implement assemble_csrf_prevention_token
2019-01-29 17:41:45 +01:00
Dietmar Maurer
d01e2420f7
load auth keys on startup
2019-01-29 17:21:58 +01:00
Dietmar Maurer
6c30068ebf
auth_helpers.rs: split code into separate file
2019-01-29 16:55:49 +01:00
Dietmar Maurer
39a90ca6c5
bin/proxmox-backup-api.rs: gererate secret for csrf token
2019-01-29 13:15:33 +01:00
Dietmar Maurer
26027a151e
tools/ticket.rs: remove debug statements
2019-01-29 13:04:01 +01:00
Dietmar Maurer
8d04280b29
tools/ticket.rs: add basic ticket support
2019-01-29 12:59:07 +01:00
Dietmar Maurer
c8f3f9b1af
server/rest.rs: simplify proxy code
...
Only pass neccessary parameters.
2019-01-28 18:22:16 +01:00
Dietmar Maurer
a859fa95a9
add protected flag for some api methods
2019-01-28 18:16:47 +01:00
Dietmar Maurer
a3da38ddfd
server/rest.rs: implement proxy_sync_api_request
2019-01-28 18:06:42 +01:00
Dietmar Maurer
f120483353
server/rest.rs: add proxy_sync_api_request() dummy
2019-01-28 17:30:39 +01:00
Dietmar Maurer
4e4df8e2f0
api/router.rs: add new 'protected' flag to ApiMethod
2019-01-28 17:18:42 +01:00
Dietmar Maurer
5bb3398171
server/formatter.rs: fix extjs error format
2019-01-28 13:44:48 +01:00
Dietmar Maurer
02c7a75520
src/bin/proxmox-backup-proxy.rs: implement unpriviledged server
...
We want to run the public server as user www-data. Requests needing
root priviledges needs to be proxied to the proxmox-backup.service, which
now listens to 127.0.0.1:82.
2019-01-28 13:29:58 +01:00
Dietmar Maurer
48849593ee
api2/node/services.rs: implement service commands
2019-01-27 12:40:31 +01:00
Dietmar Maurer
d7d23785f0
RpcEnvironment: implement set_user() and get_user()
2019-01-27 10:52:26 +01:00
Dietmar Maurer
162b979394
RpcEnvironment: add environment type enum RpcEnvironmentType
2019-01-27 10:33:42 +01:00
Dietmar Maurer
e82dad9700
also pass rpcenv to async handlers
2019-01-27 10:18:52 +01:00
Dietmar Maurer
d2ab5f19e2
api2/node/services.rs: start services api
2019-01-26 17:54:18 +01:00
Dietmar Maurer
0f253593c6
move rpc environment implementation to separate files
2019-01-26 15:08:02 +01:00
Dietmar Maurer
6049b71f41
api: pass RpcEnvirnment to api handlers
2019-01-26 14:50:37 +01:00
Dietmar Maurer
d96d82736d
use crate log and syslog
2019-01-26 10:56:11 +01:00
Dietmar Maurer
e182ab4a4a
api2/node/syslog.rs: improve error handling
2019-01-26 10:23:52 +01:00
Dietmar Maurer
0441886842
api2/node/syslog.rs: implement dump journal
2019-01-25 18:20:51 +01:00
Dietmar Maurer
4f9a726833
api2/node/syslog.rs: add syslog api schema
2019-01-25 17:17:30 +01:00
Dietmar Maurer
1631c54fca
tools::get_hardware_address - fix FILENAME, use file_get_contents()
2019-01-25 12:23:47 +01:00
Dietmar Maurer
af2fddea4f
api2/node/dns.rs: implement concurrent update protection
2019-01-25 11:38:59 +01:00
Dietmar Maurer
de6b0721fa
pi2/node/dns.rs: return file digest
2019-01-25 11:03:41 +01:00
Dietmar Maurer
2296860027
tools.rs: move digest_to_hex() into tools
2019-01-25 10:58:28 +01:00
Dietmar Maurer
53157ca6cf
tools.rs: implement file_get_contents()
2019-01-25 10:44:40 +01:00
Dietmar Maurer
46b79b9ee5
api2/node/dns.rs: improve dns api
2019-01-25 10:15:32 +01:00
Dietmar Maurer
332dcc2277
backup/chunk_store.rs: fix test case - use absolute path
2019-01-25 10:14:25 +01:00
Dietmar Maurer
8f973f8181
api2/node/dns.rs: implement resolv.conf parser
2019-01-24 14:59:40 +01:00
Dietmar Maurer
784252dbc5
backup/datastore.rs: use single lazy_static block
2019-01-24 14:58:47 +01:00
Dietmar Maurer
e6ffeb918c
api2/node/time.rs: implement set timezone
2019-01-24 12:05:06 +01:00
Dietmar Maurer
cd8b91f78c
api2/node/time.rs: add return schema
2019-01-24 11:07:11 +01:00
Dietmar Maurer
447787ab7c
tools.rs: implement file_read_firstline
2019-01-24 10:43:30 +01:00
Dietmar Maurer
0463602a79
api2/node/time.rs: implement read api
2019-01-23 15:14:14 +01:00
Dietmar Maurer
b2b3485d5f
src/api2/node: start node configuration api
2019-01-23 13:09:17 +01:00
Dietmar Maurer
d15009c0ce
server/rest.rs: fake login cookie
2019-01-23 12:49:10 +01:00
Dietmar Maurer
248cb51862
add missing api2.rs
2019-01-22 13:56:27 +01:00
Dietmar Maurer
7e13b2d67f
api2/subscription.rs: add subscription api class
2019-01-22 12:50:19 +01:00
Dietmar Maurer
576e3bf252
rename api3 back to api2
...
There is no real need to change the path, so using api2 we can reuse
all helpers (like tools from proxmox widget toolkit).
2019-01-22 12:10:38 +01:00
Dietmar Maurer
1adb353d6f
lient/http_client.rs: simplify code
2019-01-22 10:36:04 +01:00
Dietmar Maurer
41c039e143
bin/proxmox-backup-client.rs: implement list command
2019-01-21 18:58:14 +01:00
Dietmar Maurer
1fdb4c6ffa
client/http_client.rs: implement get, share common code
2019-01-21 18:56:48 +01:00
Dietmar Maurer
83dbd80bd8
api3/admin/datastore.rs: implement list backups
2019-01-21 11:22:55 +01:00
Dietmar Maurer
7ca80246ea
backup/datastore.rs: use DateTime<Utc> to store backup time
2019-01-21 10:51:52 +01:00
Dietmar Maurer
be0084b001
white space fix
2019-01-21 10:32:07 +01:00
Dietmar Maurer
e25736b4c3
backup/datastore.rs: implement list_backups
2019-01-20 18:02:27 +01:00
Dietmar Maurer
cce1676a9e
tools.rs: use FnMut for scandir callback
2019-01-20 17:49:11 +01:00
Dietmar Maurer
443f3743bb
tools.rs: new scandir() helper
2019-01-20 17:31:43 +01:00
Dietmar Maurer
68469eebb4
backup/chunk_store.rs: verify base path is absolute
2019-01-20 16:49:22 +01:00
Dietmar Maurer
059ca7c3a1
remove crate tokio-codec (seems to be part of tokio now)
2019-01-20 14:28:06 +01:00
Dietmar Maurer
8eeef8492a
tools/wrapped_reader_stream.rs: allocate Vec<u8> for buffer
2019-01-20 11:01:18 +01:00
Dietmar Maurer
ff8bdf3b64
tools/wrapped_reader_stream.rs: only implement Stream (without AsyncRead)
...
Looks more efficent ...
2019-01-20 10:41:21 +01:00
Dietmar Maurer
8e89d9cafe
tools/wrapped_reader_stream.rs: use tokio_threadpool::blocking
2019-01-20 10:28:51 +01:00
Dietmar Maurer
ce7ba139f1
catar: improve bash completion
2019-01-20 09:55:20 +01:00
Dietmar Maurer
29f34b8e1a
/api3/admin/datastore.rs: add missing subdir to directory index
2019-01-20 09:47:32 +01:00
Dietmar Maurer
0b05fd5830
api3/admin/datastore/catar.rs: implement download
2019-01-20 09:39:32 +01:00
Dietmar Maurer
7f0d67cf79
tools/wrapped_reader_stream.rs: new helper class
...
Will use that to download catar files.
2019-01-20 09:38:28 +01:00
Dietmar Maurer
6a4c091616
api3/admin/datastore/catar.rs: start impl. download
2019-01-19 17:27:02 +01:00
Dietmar Maurer
50cfb695ae
api/router.rs: rename ApiUploadMethod to ApiAsyncMethod
...
We can use this for uploads and downloads ...
2019-01-19 16:42:43 +01:00
Dietmar Maurer
379ea0edb6
Revert "/api/schema.rs: implement Schema::Option"
...
This reverts commit 0a35462c1e
.
I am not sure this add much value, and the old approach needs
less memory. If we really need single optional values, we can still
implement such Option while keeping the hash based approach...
2019-01-19 12:53:32 +01:00
Dietmar Maurer
80f069656d
Revert "api/schema.rs: avoid Option(Option( nesting"
...
This reverts commit ffdac1af01
.
2019-01-19 12:52:51 +01:00
Dietmar Maurer
ca3d861513
remove unused type PropertyMap
2019-01-18 17:54:06 +01:00
Dietmar Maurer
ffdac1af01
api/schema.rs: avoid Option(Option( nesting
2019-01-18 17:49:19 +01:00
Dietmar Maurer
0a35462c1e
/api/schema.rs: implement Schema::Option
2019-01-18 17:40:37 +01:00
Dietmar Maurer
728797d0c1
reduce compiler warnings
2019-01-18 16:50:15 +01:00
Dietmar Maurer
383e857749
move complete_file_name() helper into tools.rs
2019-01-18 13:42:52 +01:00
Dietmar Maurer
73e844dbfe
bin/proxmox-backup-client.rs: improve file name completion
2019-01-18 13:40:05 +01:00
Dietmar Maurer
95cea65b04
backup/datastore.rs: list all index files using walkdir crate
2019-01-18 12:24:58 +01:00
Dietmar Maurer
ff3d3100d4
backup/datastore.rs: try to create useful directory layout
...
store/type/ID/TIME/xxx.yyy
2019-01-18 12:01:37 +01:00
Dietmar Maurer
0d38dcb43c
cleanup nodename()
2019-01-18 10:13:45 +01:00
Dietmar Maurer
74a69302a7
tools.rs: new helper nodename()
2019-01-18 09:58:15 +01:00
Dietmar Maurer
5a778d92b3
api3/admin/datastore.rs: rename parameter "name" to "store"
2019-01-18 08:33:11 +01:00
Dietmar Maurer
244d9b17a8
bin/proxmox-backup-client.rs: implement file name completions - first try ...
2019-01-17 14:24:20 +01:00
Dietmar Maurer
83bdac1e3b
api3/admin/datastore/upload_catar.rs: verify content type ("application/x-proxmox-backup-catar")
2019-01-17 12:43:29 +01:00
Dietmar Maurer
06aeb76a5c
client/catar_backup_stream.rs: remove debug code
2019-01-17 12:16:36 +01:00
Dietmar Maurer
0fe5d605e7
tools.rs: new helper required_string_param()
...
To extract parameters from Value.
2019-01-17 12:14:02 +01:00
Dietmar Maurer
0ee0ad5bf3
api/router.rs: return Result in upload handler
2019-01-17 12:03:38 +01:00
Dietmar Maurer
23bb8780d4
proxmox-backup-client: implement upload to server
2019-01-17 11:38:22 +01:00
Dietmar Maurer
597641fdd5
client/http_client.rs: new helper class
2019-01-17 11:38:03 +01:00
Dietmar Maurer
264f52cf70
api3/admin/datastore.rs: change api patch for upload_catar
2019-01-17 09:16:50 +01:00
Wolfgang Bumiller
37b98249f4
upload: don't return NotReady
...
We need to kick (poll) the stream's next element, so simply
reiterate, the try_read!() will then return NotReady from
the next stream item for us.
Signed-off-by: Wolfgang Bumiller <w.bumiller@proxmox.com>
2019-01-16 15:17:26 +01:00
Wolfgang Bumiller
1dcd52e5df
cleanup previous commit...
...
This kind of notation is weird...
Signed-off-by: Wolfgang Bumiller <w.bumiller@proxmox.com>
2019-01-16 14:19:13 +01:00
Wolfgang Bumiller
6a50b77e72
listen on :: instead of 0.0.0.0
...
Since this supports both ipv6 & ipv4 unless v6only is
explicitly enabled.
Signed-off-by: Wolfgang Bumiller <w.bumiller@proxmox.com>
2019-01-16 14:18:16 +01:00
Dietmar Maurer
cf16af2ab3
server/rest.rs: correctly pass query/url parameters
2019-01-16 13:58:36 +01:00
Dietmar Maurer
2085142ed4
reduce compiler warnings
2019-01-16 10:19:49 +01:00
Dietmar Maurer
e8edbbd49c
client/catar_backup_stream.rs: new helper for catar uploads to server
2019-01-16 10:15:39 +01:00
Dietmar Maurer
150f1bd8f6
backup/datastore.rs: use Arc for chunk_store references
2019-01-15 12:36:16 +01:00
Dietmar Maurer
1629d2ad7b
api3/admin/datastore/upload_catar.rs: implement upload future
2019-01-15 11:38:26 +01:00
Dietmar Maurer
7e21da6e23
api/router.rs: allow different types of api methods
...
Added a prototype for file/backup uploads.
2019-01-14 12:26:04 +01:00
Dietmar Maurer
b41d1aab8c
catar: define all feature flags
2019-01-12 16:49:02 +01:00
Dietmar Maurer
4c0fd4871e
catar/encoder.rs: allow to pass list of devices
...
We can use this to implement the --one-file-system like options. This
is a bit more convenient, because this way we can select to include
multiple devices (which is required by container backups).
2019-01-12 15:43:20 +01:00
Dietmar Maurer
a8a0495612
catar/encoder.rs: disable backup of virtual file systems
2019-01-12 11:56:53 +01:00
Dietmar Maurer
d7bfac8605
catar/encoder.rs: only test fat attribute on MSDOS and FUSE file systems
2019-01-12 10:28:26 +01:00
Dietmar Maurer
13d98013b2
/catar/encoder.rs: do not store data from virtual file systems
2019-01-12 10:20:08 +01:00
Dietmar Maurer
80881f60ef
catar/encoder.rs: add helpers to test file system type
2019-01-12 09:18:21 +01:00
Dietmar Maurer
1c4804cf67
catar/encoder.rs: pass magic fs number to encode_dir
2019-01-12 08:51:44 +01:00
Dietmar Maurer
dce0ebd505
catar/encoder.rs: use O_DIRECTORY to open dirs
2019-01-11 16:53:17 +01:00
Dietmar Maurer
490683ec93
catar: encode/decode sockets and fifos
2019-01-11 13:26:05 +01:00
Dietmar Maurer
20e2043a08
catar/decoder.rs: corrently pass mode to mknodat
2019-01-11 13:12:55 +01:00
Dietmar Maurer
a7e3713122
catar: encode/decode devices
2019-01-11 12:22:00 +01:00
Dietmar Maurer
1bdb3130f7
catar/format_definition.rs: add more feature flags
2019-01-11 10:44:57 +01:00
Dietmar Maurer
5c76c2f331
catar/encoder.rs: store fat file system attributes
2019-01-11 10:18:22 +01:00
Dietmar Maurer
8c1dfa6c72
catar/encoder.rs: cleanups
2019-01-11 10:01:51 +01:00
Dietmar Maurer
4f6892eb74
catar/encoder.rs: encode linux fs attributes, cleanup encoder
...
Try to avoid duplicate stat calls (assume file tree is stable during backup).
2019-01-11 09:20:10 +01:00
Dietmar Maurer
ddbdf80d51
avoid compiler warnings
2019-01-11 08:41:33 +01:00
Dietmar Maurer
373ef4a504
backup/archive_index.rs: correctly check for errors
2019-01-10 11:19:54 +01:00
Dietmar Maurer
23f68e53b4
catar/decoder.rs: restore mode, uid, gid and mtime
2019-01-10 09:02:50 +01:00
Dietmar Maurer
25f60394d2
catar/decoder.rs: avoid slashes in file names
2019-01-10 09:02:50 +01:00
Dietmar Maurer
9b1bb5a277
catar/decoder.rs: impl restore dirs, files, and symlinks
2019-01-10 09:01:36 +01:00
Wolfgang Bumiller
1ed86a0bae
rest: rename utf-8-checked 'bytes' to 'utf8'
...
Signed-off-by: Wolfgang Bumiller <w.bumiller@proxmox.com>
2019-01-08 14:22:43 +01:00
Wolfgang Bumiller
9fec7ae593
rest: don't copy the body
...
Signed-off-by: Wolfgang Bumiller <w.bumiller@proxmox.com>
2019-01-08 14:21:54 +01:00
Wolfgang Bumiller
d9fbcc4631
tools/timer: fixup doc formatting
...
Signed-off-by: Wolfgang Bumiller <w.bumiller@proxmox.com>
2019-01-08 14:11:10 +01:00
Dietmar Maurer
676bf71ad4
catar/decoder.rs: restore_sequential - read payload
2019-01-08 09:26:07 +01:00
Dietmar Maurer
c6a0d3fc6b
catar/decoder.rs: improve restore_sequential
2019-01-07 19:18:59 +01:00
Dietmar Maurer
b6ebfb8dab
catar/decoder.rs: start implementing sequential decoder, cleanups
...
And use [derive(Endian)] for endian conversion.
2019-01-07 19:07:03 +01:00
Dietmar Maurer
02c7d8e522
catar: implement create
2019-01-07 13:25:41 +01:00
Dietmar Maurer
e86c49247e
bin/catar.rs: add list command
2019-01-06 17:42:23 +01:00
Dietmar Maurer
3d8c24ecf8
catar/decoder.rs: start implementation
2019-01-06 17:27:57 +01:00
Dietmar Maurer
4b864ad436
format_definition.rs: remove wrong docs
2019-01-06 17:27:22 +01:00
Dietmar Maurer
4624fe29cc
impl Read for BufferedArchiveReader
2019-01-06 10:04:45 +01:00
Dietmar Maurer
343370504b
impl Seek for BufferedArchiveReader
2019-01-06 09:35:39 +01:00
Dietmar Maurer
318564ac03
buffered_read: return empty buffer on eof
2019-01-06 09:17:28 +01:00
Dietmar Maurer
0a72e26704
define and use BufferedReader trait
2019-01-05 17:28:20 +01:00
Dietmar Maurer
1006acd626
remove dead code
2019-01-05 16:55:21 +01:00
Dietmar Maurer
51b499db74
tools.rs: improve docs
2019-01-05 16:53:28 +01:00
Dietmar Maurer
39c6bd86cc
backup/archive_index.rs: implement BufferedArchiveReader
...
Implement relativly fast random read using binary search.
2019-01-05 14:47:56 +01:00
Dietmar Maurer
060c4811a0
backup/chunk_store.rs: resize buffer by powers of two
2019-01-05 11:34:49 +01:00
Dietmar Maurer
9409255aae
catar/encoder.rs: code cleanup
...
Note: Rust Vec resize uses len(), not capacity()!
2019-01-04 17:23:01 +01:00
Dietmar Maurer
df9973e8f5
backup/chunk_store.rs: avoid allocation in read_chunk
2019-01-04 17:16:56 +01:00
Dietmar Maurer
7394ca3e95
white space cleanups
2019-01-04 12:51:43 +01:00
Dietmar Maurer
96df2fb44b
backup/chunk_store.rs: implement read_chunk()
2019-01-04 12:50:54 +01:00
Dietmar Maurer
691c89a0fb
proxmox-backup-manager: add garbage collection cli
2019-01-04 11:34:32 +01:00
Dietmar Maurer
07b4694a33
cleanup crate names
2019-01-04 10:49:52 +01:00
Dietmar Maurer
4bdba5f4f1
rename backup-client to proxmox-backup-client
2019-01-04 10:41:37 +01:00
Dietmar Maurer
a689f6df0e
rename pbs to proxmox-backup-manager
2019-01-04 10:39:32 +01:00
Dietmar Maurer
bc616633d5
backup/chunk_store.rs: only use one directory level
2019-01-04 10:35:22 +01:00
Dietmar Maurer
030cc2a903
move admin API to /admin/ subfolder
2019-01-04 10:32:27 +01:00
Dietmar Maurer
b663789bdb
backup/archive_index.rs: pass correct size to unmap
2019-01-04 09:28:41 +01:00
Dietmar Maurer
48d0d35688
backup/image_index.rs: use little endian
2019-01-04 08:45:45 +01:00
Wolfgang Bumiller
4968bc3ac0
cli::command: wrap usage errors in a UsageError
...
So we can distinguish them and show usage output
conditionally.
Signed-off-by: Wolfgang Bumiller <w.bumiller@proxmox.com>
2019-01-03 16:08:51 +01:00
Dietmar Maurer
c7fa487250
catar/encoder.rs: make sure we write all data with write_all()
2019-01-03 15:47:32 +01:00
Dietmar Maurer
050f8a6355
chunker.rs: make sure chunk_size_avg is a power of two
2019-01-03 15:10:54 +01:00
Dietmar Maurer
ea4ea34baf
improve chunker speed (avoid modulo)
2019-01-03 14:35:19 +01:00
Dietmar Maurer
3329ae8c2e
add benchmark for chunker
...
We get about 300MB/s - so this is still not fast enough
Note: This is quite slow with debug target, so please compile with --release
2019-01-02 19:18:53 +01:00
Dietmar Maurer
0b8e75ed16
image_index.rs: verify file size
2019-01-02 18:14:02 +01:00
Dietmar Maurer
77703d95aa
implement garbage collection for .aidx files
2019-01-02 14:27:04 +01:00
Dietmar Maurer
a360f6fa2d
image_index.rs: verify header magic/version
2019-01-02 13:13:13 +01:00
Dietmar Maurer
44b3f62b42
fix typo
2019-01-02 12:56:04 +01:00
Dietmar Maurer
594fa52016
disable debug code
2019-01-02 12:55:18 +01:00
Dietmar Maurer
5032b57b44
archive_index.rs: correctly write .aidx file
2019-01-02 12:54:40 +01:00
Dietmar Maurer
580dc84bac
image_index.rs: print stats
2019-01-02 12:53:49 +01:00
Dietmar Maurer
5e7a09be0d
src/backup/archive_index.rs: use close() instead of flush()
...
Also pass a reference to the encoder.
2019-01-02 11:02:56 +01:00
Dietmar Maurer
94a882e900
src/backup/archive_index.rs: implement flush()
2018-12-31 18:01:07 +01:00
Dietmar Maurer
0433db1949
src/backup/archive_index.rs: first try
2018-12-31 17:30:08 +01:00
Dietmar Maurer
cbdd8c54ae
create backup mod in backup.rs, improve docu
2018-12-31 16:08:04 +01:00
Dietmar Maurer
cb4412b18e
move chunker.rs to backup/
2018-12-31 15:46:16 +01:00
Dietmar Maurer
1c287cb19a
rc/catar/chunker.rs: first try
2018-12-31 13:01:06 +01:00
Dietmar Maurer
bf205f94c5
avoid compiler warnings
2018-12-31 10:54:25 +01:00
Dietmar Maurer
1b0dc9f680
src/catar/encoder.rs: correctly sort goodbye items by hash key
2018-12-31 10:11:28 +01:00
Dietmar Maurer
c60d34bdbf
new catar binary
...
currently used for debugging
2018-12-30 18:02:46 +01:00
Dietmar Maurer
e75eac73ca
fix doc syntax
2018-12-30 17:43:53 +01:00
Dietmar Maurer
0866748de6
catar cleanups ...
2018-12-30 17:32:52 +01:00
Dietmar Maurer
6cd28d200e
binary_search_tree.rs: fix docs
2018-12-30 15:34:43 +01:00
Dietmar Maurer
389e562524
src/catar/encoder.rs: auto-resize file_copy_buffer, limit number of dirs
2018-12-30 14:09:59 +01:00
Dietmar Maurer
4fa71e0573
improve catar docs
2018-12-30 13:47:27 +01:00
Dietmar Maurer
48147efd12
add a comment about posible improvements
2018-12-29 19:43:25 +01:00
Dietmar Maurer
0b78833d8e
src/catar/binary_search_tree.rs: add regression tests and fix one bug
2018-12-29 18:32:03 +01:00
Dietmar Maurer
b17d7149d2
src/catar/binary_search_tree.rs: improve docu
2018-12-29 17:38:50 +01:00
Dietmar Maurer
985567fb45
src/catar/encoder.rs: cleanup, factor out write_goodbye_table
2018-12-29 17:26:32 +01:00
Dietmar Maurer
95bd5dfec7
src/catar/encoder.rs: correctly sort goodby items
2018-12-29 17:00:48 +01:00
Dietmar Maurer
46b6fbd6ae
use external crate siphasher
...
Because std:#️⃣ :SipHasher is deprecated.
2018-12-28 19:50:07 +01:00
Dietmar Maurer
f0f3029e26
src/catar/encoder.rs: fix bug in file copy
2018-12-28 15:02:42 +01:00
Dietmar Maurer
d05f93215e
src/catar/encoder.rs: fix symlinks
2018-12-28 15:02:42 +01:00
Wolfgang Bumiller
7ebb173352
getopt: cleanup: add trailing commas
...
It is customary in rust to always use trailing commas. (also
suggested by rustfmt)
Signed-off-by: Wolfgang Bumiller <w.bumiller@proxmox.com>
2018-12-28 14:27:38 +01:00
Wolfgang Bumiller
2767c5d39b
getopt: cleanup: don't condense 'if' statements too much
...
In a language which enforces curly braces this looks weird
and rustfmt doesn't like it.
Signed-off-by: Wolfgang Bumiller <w.bumiller@proxmox.com>
2018-12-28 14:27:38 +01:00
Wolfgang Bumiller
7d95c10da0
getopt: whitespace cleanup
...
to make rustfmt happy
Signed-off-by: Wolfgang Bumiller <w.bumiller@proxmox.com>
2018-12-28 14:27:38 +01:00
Dietmar Maurer
a0cc09b5f0
src/catar/encoder.rs: fix binary format, write goodby table
...
We still ned to sort the table (BST) ...
2018-12-28 14:27:00 +01:00
Wolfgang Bumiller
03fb895197
getopt: condense nested match to reduce indentation
...
The `match value` statement is the only thing covering the
entire RawArgument::Option case. `rustfmt` suggests this
more condensed way of writing this case.
See the `git diff -w` of this patch:
|diff --git a/src/getopts.rs b/src/getopts.rs
|index 9755af2..4db4579 100644
|--- a/src/getopts.rs
|+++ b/src/getopts.rs
|@@ -72,8 +72,7 @@ pub fn parse_arguments<T: AsRef<str>>(
| RawArgument::Separator => {
| break;
| }
|- RawArgument::Option { name, value } => {
|- match value {
|+ RawArgument::Option { name, value } => match value {
| None => {
| let mut want_bool = false;
| let mut can_default = false;
|@@ -125,7 +124,6 @@ pub fn parse_arguments<T: AsRef<str>>(
| data.push((name, v));
| }
| }
|- }
| RawArgument::Argument { value } => {
| rest.push(value);
| }
Signed-off-by: Wolfgang Bumiller <w.bumiller@proxmox.com>
2018-12-28 14:16:58 +01:00
Wolfgang Bumiller
4d0ea9978b
getopt: let parse_arguments() take a slice of AsRef<str>
...
We don't need the content to be owned strings, and we don't
need the list to be a Vec, since we only care about being
able to iterate through and copy out portions of the strings
we need, so take an &[T] where T: AsRef<str>.
This avoids .iter().map(to_string).collect() before calling
parse_arguments().
Signed-off-by: Wolfgang Bumiller <w.bumiller@proxmox.com>
2018-12-28 14:05:05 +01:00
Wolfgang Bumiller
2482c095b1
getopt: remove skip logic
...
The 'skip' variable was set to indicate that the "rest of
the args" is to be copied into the 'rest' vec. We can do
this directly and avoid the 'if' case in the loop
altogether.
Signed-off-by: Wolfgang Bumiller <w.bumiller@proxmox.com>
2018-12-28 13:59:44 +01:00
Wolfgang Bumiller
99da3a073d
getopt: indentation reduction
...
See the `git diff -w` output:
|diff --git a/src/getopts.rs b/src/getopts.rs
|index 6548a01..517cc37 100644
|--- a/src/getopts.rs
|+++ b/src/getopts.rs
|@@ -72,7 +72,10 @@ pub fn parse_arguments(
| while pos < args.len() {
| if skip {
| rest.push(args[pos].clone());
|- } else {
|+ pos += 1;
|+ continue;
|+ }
|+
| match parse_argument(&args[pos]) {
| RawArgument::Separator => {
| skip = true;
|@@ -135,7 +138,6 @@ pub fn parse_arguments(
| rest.push(value);
| }
| }
|- }
|
| pos += 1;
| }
Signed-off-by: Wolfgang Bumiller <w.bumiller@proxmox.com>
2018-12-28 13:54:20 +01:00
Wolfgang Bumiller
ad8a98f7e4
parse_arguments: work with utf8 bytes and reduce indentation
...
We are only caring about '=' and '-' which are single-byte
codepoints, so there's no reason not to work on a byte
slice.
Also, some indentation reduction:
Transform
if (a) {
...
return A;
}
return B;
into
if (!a)
return B;
return A;
and
if (a)
if (b)
foo()
into
if (a && b)
return;
Signed-off-by: Wolfgang Bumiller <w.bumiller@proxmox.com>
2018-12-28 13:47:29 +01:00
Dietmar Maurer
248c17af39
src/catar/encoder.rs: write filenames
2018-12-28 11:48:47 +01:00
Dietmar Maurer
2e4ae0e239
src/catar/encoder.rs: write file data
2018-12-28 10:44:12 +01:00
Dietmar Maurer
3192ae968c
src/catar/encoder.rs: write entry and symlink data
2018-12-28 09:55:26 +01:00
Dietmar Maurer
50ea43962e
make map_struct functions public
2018-12-28 08:04:46 +01:00
Dietmar Maurer
d2b03f2397
catar/encoder.rs: improve error handling
2018-12-28 07:45:15 +01:00
Dietmar Maurer
0ff559990c
cleanups, avoid compiler warnings
2018-12-28 07:14:12 +01:00
Dietmar Maurer
45281d4927
catar/encoder: detect symlink and regular files
2018-12-27 14:24:31 +01:00
Dietmar Maurer
fb8365b79f
catar/encoder.rs: first try
2018-12-27 13:15:47 +01:00
Wolfgang Bumiller
fba3437f1e
timer: setup_timeout_handler cannot fail
...
and if it does it panics anyway
Signed-off-by: Wolfgang Bumiller <w.bumiller@proxmox.com>
2018-12-27 10:36:28 +01:00
Dietmar Maurer
bcd879cfb3
backup-client: allow to specify directories (prepare for catar backup)
2018-12-27 10:11:11 +01:00
Dietmar Maurer
b62b6cadf4
start implementing catar
2018-12-27 09:22:23 +01:00
Dietmar Maurer
dc3de618ed
new helper map_struct and map_struct_mut
2018-12-27 09:20:17 +01:00
Dietmar Maurer
a198d74fc0
cleanup: reduce compiler warnings
2018-12-25 13:29:27 +01:00
Dietmar Maurer
991de6007b
remove outdated comment
2018-12-25 13:24:50 +01:00
Dietmar Maurer
7ee2aa1b94
touch_chunk: use libc::lutimensat
2018-12-25 12:27:25 +01:00
Dietmar Maurer
2c32fdde86
move lookup_datastore() to backup/datastore.rs
2018-12-22 17:37:25 +01:00
Dietmar Maurer
64e53b2835
gather usage statistics during garbage collection
2018-12-22 16:58:16 +01:00
Dietmar Maurer
28b96b56e1
open_file_locked: improve error message
2018-12-22 15:59:55 +01:00
Dietmar Maurer
176e4af964
sweep_used_chunks: print percentage
2018-12-22 15:39:05 +01:00
Dietmar Maurer
7b2b40a893
use openssl for faster hashing
2018-12-22 14:31:59 +01:00
Dietmar Maurer
e95950e40a
chunk_store: reduce number of directories
...
Else, scans everything takes too long ...
2018-12-22 14:04:05 +01:00
Dietmar Maurer
15e9b4ed60
src/api3/datastore.rs: new file
2018-12-21 13:38:41 +01:00
Dietmar Maurer
3c140f60cd
use return value (avoid compiler warning)
2018-12-21 12:44:20 +01:00
Dietmar Maurer
03e4753d8e
fix mutability for chunk store
2018-12-21 12:15:26 +01:00
Dietmar Maurer
2d9d143a8f
backup-client: add optional chunk-size parameter
2018-12-21 11:18:08 +01:00
Dietmar Maurer
f0819fe5a5
backup-client: do not start garbage collection after backup
2018-12-21 09:24:55 +01:00
Dietmar Maurer
d62e6e2264
backup-client: use 1M chunks, make chunk_size configurable
2018-12-21 08:36:57 +01:00
Dietmar Maurer
c34eb16651
backup-clinet: specify target file name
2018-12-20 14:09:31 +01:00
Dietmar Maurer
c2d9b3914a
add test code to access static global state
2018-12-20 14:03:42 +01:00
Dietmar Maurer
fe0e04c69c
use proxmox-backup as package name
2018-12-20 10:45:14 +01:00
Dietmar Maurer
f7dd683b46
fix tests
2018-12-19 13:54:22 +01:00
Dietmar Maurer
277fc5a3ce
try to improve error messages
2018-12-19 13:40:26 +01:00
Dietmar Maurer
eae8aa3aa9
cleanups: avoid compiler warnings
2018-12-19 12:49:23 +01:00
Dietmar Maurer
6c20a13d3c
cleanup - avoid too much indentation
2018-12-19 12:40:26 +01:00
Dietmar Maurer
1c43c56b06
cleanup
2018-12-19 12:30:37 +01:00
Dietmar Maurer
2bf5f6b220
ChunkStore::sweep_used_chunks - use openat to speedup directory walks
2018-12-19 12:20:01 +01:00
Wolfgang Bumiller
1628a4c731
use timers with a signal for file locking
...
* rename lock_file -> open_file_locked,
* add lock_file as a function working on already-opened
files
* change timeout types to std::time::Duration
Signed-off-by: Wolfgang Bumiller <w.bumiller@proxmox.com>
2018-12-19 11:23:00 +01:00
Wolfgang Bumiller
8cf6e764ad
add tools::timer module
...
This wraps POSIX timers via timer_create(2).
Signed-off-by: Wolfgang Bumiller <w.bumiller@proxmox.com>
2018-12-19 11:23:00 +01:00
Dietmar Maurer
365bb90f17
move lock_file to tools.rs
2018-12-19 10:02:24 +01:00
Dietmar Maurer
08481a0b60
impl sweep_used_chunks, first try
2018-12-19 09:51:33 +01:00
Dietmar Maurer
6ea3a0b7fc
move sweep_used_chunks to chunk_store
2018-12-18 11:18:55 +01:00
Dietmar Maurer
3d5c11e5d2
start impl garbage collection
2018-12-18 11:06:03 +01:00
Dietmar Maurer
529de6c7a3
start implementing DataStore
2018-12-17 13:00:39 +01:00
Dietmar Maurer
4818c8b6f7
start implementing ImageIndexReader
2018-12-16 14:44:44 +01:00
Dietmar Maurer
a27a3ee4ba
avoid compiler warnings
2018-12-16 13:57:59 +01:00
Dietmar Maurer
af3e7d7551
fix chunk store file paths
2018-12-16 13:52:16 +01:00
Dietmar Maurer
0cd9d4206f
improve error messages
2018-12-16 13:43:19 +01:00
Dietmar Maurer
4fbb72a8b4
image_index.rs: implement atomic write/rename
2018-12-16 13:39:21 +01:00
Dietmar Maurer
798881a68a
rebane ImageIndex to ImageIndexWriter
2018-12-16 11:51:16 +01:00
Dietmar Maurer
5e5b7f1c2d
use u64 to store time
2018-12-16 11:48:03 +01:00
Dietmar Maurer
d13e3745b3
image_index.rs: write header
2018-12-15 17:05:49 +01:00
Dietmar Maurer
606ce64bb0
image_index.rs:write idx of chunks (use mmap)
2018-12-15 14:51:05 +01:00
Dietmar Maurer
f8838fe913
backup-client: add bash completion for datastore names
2018-12-15 11:24:39 +01:00
Dietmar Maurer
5f0c2d5652
remove debug println
2018-12-15 11:16:27 +01:00
Dietmar Maurer
43eeef28d1
move file_chunker to tools
2018-12-15 11:14:41 +01:00
Dietmar Maurer
48e8689505
file_chunker: use Read trait
2018-12-15 11:08:49 +01:00
Dietmar Maurer
fc8b19368a
backup-client: pass chunk_size as parameter to file_chunker
2018-12-15 10:58:48 +01:00
root
a914a77448
backup-client: read file by chunks
2018-12-14 13:39:41 +01:00
root
ff5d37074d
bin/backup-client.rs: nbew tool to play with chunk store
2018-12-14 08:28:56 +01:00
root
15b64d4606
api3/config/datastore.rs: create datastore files
2018-12-13 14:41:14 +01:00
Dietmar Maurer
7f4e639b37
improve completion
2018-12-12 13:00:58 +01:00
Dietmar Maurer
e3d40bb8cd
complete_datastore_name: write more compact code
2018-12-12 12:41:59 +01:00
Dietmar Maurer
30d2e99c77
implement completion functions
2018-12-12 12:19:26 +01:00
Dietmar Maurer
91643d9012
section_config.rs: remove debug output
2018-12-12 12:19:26 +01:00
Dietmar Maurer
d64d80d20a
add comment
2018-12-12 11:23:04 +01:00
Dietmar Maurer
5ba6968922
add comment to make intensions more clear
2018-12-12 11:21:00 +01:00
Dietmar Maurer
ca9caffa23
cleanup parameter types
2018-12-12 10:37:03 +01:00
Dietmar Maurer
38555b5072
implement completion for enums
2018-12-12 08:33:50 +01:00
Dietmar Maurer
2f0258959b
improve completion
2018-12-12 08:18:38 +01:00
Dietmar Maurer
f46403cc65
improve bash completion
2018-12-12 07:51:43 +01:00
Dietmar Maurer
b6e8dd39aa
impl bash completion: first try
2018-12-11 14:21:05 +01:00
Dietmar Maurer
c21de379ed
install bash completion scripts
...
Completion itself is not implemented.
2018-12-11 12:54:10 +01:00
Dietmar Maurer
6460764dbb
cli/command.rs: add new type CliCommandMap
2018-12-11 11:31:36 +01:00
Dietmar Maurer
bf7f103944
implement builder pattern for CliCommand
2018-12-11 11:12:13 +01:00
Dietmar Maurer
baed30b702
cli/command.rs: implement prefix match
2018-12-10 18:13:55 +01:00
Dietmar Maurer
8f62336b0f
impl From for CommandLineInterface
2018-12-10 13:51:10 +01:00
Dietmar Maurer
9f6ab1fc58
rename CmdDef to CommandLineInterface
2018-12-10 13:40:10 +01:00
Dietmar Maurer
b7329c8a1a
src/cli/command.rs: move code into separate file
2018-12-10 13:36:52 +01:00
Dietmar Maurer
211fabd795
try to support nested cli command definitions
2018-12-10 13:28:38 +01:00
Dietmar Maurer
34d3ba52eb
api3/config/datastore.rs: implement delete
2018-12-09 16:52:32 +01:00
Dietmar Maurer
1a7bc3dd5e
file_set_contents: correctly use perm parameter
2018-12-09 16:41:54 +01:00
Dietmar Maurer
f12f8ff1a6
implement tools::file_set_contents
2018-12-09 16:37:48 +01:00
Dietmar Maurer
652c11900d
api3/config/datastore.rs: impl create
2018-12-09 12:51:31 +01:00
Dietmar Maurer
ea0b8b6ec0
bin/pbs-datastore.rs: start implementing cli commands
2018-12-09 11:59:32 +01:00
Dietmar Maurer
5b34c2607d
rename entry to item
2018-12-09 10:25:56 +01:00
Dietmar Maurer
b65eaac62d
api3/config/datastore.rs: return real data
2018-12-09 10:23:19 +01:00
Dietmar Maurer
6349ed60b4
config/datastore.rs - open file for reading
2018-12-09 10:22:39 +01:00
Dietmar Maurer
ce55dbbcc6
simplify code
2018-12-09 09:42:17 +01:00
Dietmar Maurer
461e62fcdf
remove some compiler warnings
2018-12-08 14:55:54 +01:00
Dietmar Maurer
567713b4c3
rename data_store to datastore
2018-12-08 14:51:08 +01:00
Dietmar Maurer
6ce50400c5
cleanup api3 structure
2018-12-08 14:44:55 +01:00
Dietmar Maurer
678d72df6b
add data_store configuration
2018-12-08 13:58:45 +01:00
Dietmar Maurer
391a2e43ff
chunk_store.insert_chunk: return information about existing chunks
2018-12-08 11:25:11 +01:00
Dietmar Maurer
12bb93b3ad
code cleanup
2018-12-08 11:20:02 +01:00
Dietmar Maurer
022fb421b2
lock with timeout
...
clumsy, but I have node idea how to make it better
2018-12-08 10:57:09 +01:00
Dietmar Maurer
2989f6bf20
improve error messages
2018-12-08 08:38:42 +01:00
Dietmar Maurer
b8d4766a4d
code cleanup
2018-12-08 08:21:20 +01:00
Dietmar Maurer
45773720ab
depend on nix, use flock
...
Signed-off-by: Dietmar Maurer <dietmar@proxmox.com>
2018-12-07 18:14:07 +01:00
Dietmar Maurer
c5d82e5f34
chunk_store: use mutex
2018-12-07 16:12:45 +01:00
Dietmar Maurer
128b37feea
impl insert_chunk
2018-12-07 14:44:56 +01:00
Dietmar Maurer
35cf5daa53
start experiments with simple chunk store
2018-12-07 10:51:53 +01:00
Dietmar Maurer
b22751b20c
getopts.rs: fix test
2018-12-07 09:02:24 +01:00
Dietmar Maurer
a4b7c3f2df
more cleanups
2018-12-06 10:41:57 +01:00
Dietmar Maurer
d3369f819d
code cleanup
2018-12-06 10:23:45 +01:00
Dietmar Maurer
c578fcd9e2
simplify formatter code
2018-12-05 18:22:56 +01:00
Dietmar Maurer
4b26195c6a
extract version from environment
2018-12-05 14:40:45 +01:00
Dietmar Maurer
95b492add8
api: add /version
2018-12-05 14:03:15 +01:00
Dietmar Maurer
1571873d7b
add output formatter
2018-12-05 12:43:22 +01:00
Dietmar Maurer
083418619e
move src/api/server.rs -> src/server/rest.rs
2018-12-05 10:16:23 +01:00
Dietmar Maurer
5c7a1b15c8
start the GUI
2018-12-04 17:53:10 +01:00
Dietmar Maurer
826bb98286
set content type for static file download
2018-12-02 11:00:52 +01:00
Dietmar Maurer
8adbdb0a54
fix file download, listen to 0.0.0.0
2018-12-01 15:21:25 +01:00
Dietmar Maurer
f4c514c13d
remove www/pbs-index.html.tt, hardcode into rust for now
2018-12-01 13:37:49 +01:00
Dietmar Maurer
e3871182c5
rename bin to src/bin/api-test-server.rs
2018-11-30 12:48:45 +01:00
Dietmar Maurer
73f29c34d7
improve command line parser
2018-11-30 12:10:26 +01:00
Dietmar Maurer
d42398666c
improve error message
2018-11-30 12:07:27 +01:00
Dietmar Maurer
bfb1d69abc
fix compiler warnings, add storage/config.rs
2018-11-30 11:15:26 +01:00
Dietmar Maurer
9131286246
remove missleading comment
2018-11-30 08:47:26 +01:00
Dietmar Maurer
a27b905c28
use VecDeque instead of LinkedList
2018-11-29 17:28:28 +01:00
Dietmar Maurer
c6ed6cac12
SectionConfig::write - return raw string
2018-11-29 16:47:40 +01:00
Dietmar Maurer
ae3a512dd9
SectionConfig::write - verify data
2018-11-29 13:18:15 +01:00
Dietmar Maurer
aeb4c8217b
schema: implement verify_json
2018-11-29 13:06:43 +01:00
Dietmar Maurer
9c1b42d28e
simplify var names
2018-11-29 09:33:27 +01:00
Dietmar Maurer
e189c93b8c
section_config: add write - first try
2018-11-28 14:09:35 +01:00
Dietmar Maurer
92fb0784d4
section_config: add new struct SectionConfigData
2018-11-28 08:25:26 +01:00
Dietmar Maurer
e3a2217050
avoid clone
2018-11-27 14:10:16 +01:00
Dietmar Maurer
ee7fc4335a
SectionConfig::parse - return Value
2018-11-27 12:54:40 +01:00
Dietmar Maurer
826698d56f
SectionConfig: add schema for ID property
2018-11-27 12:34:56 +01:00
Dietmar Maurer
bdb631da88
section_config: improve parser
2018-11-27 11:55:21 +01:00
Dietmar Maurer
1fa897cfed
section_config: parse section content
2018-11-27 09:01:36 +01:00
Dietmar Maurer
803b95a01d
SectionConfigPlugin: add schema
2018-11-27 08:41:25 +01:00
Dietmar Maurer
b943ed8d2b
section_config: further parser improvements
2018-11-26 18:22:07 +01:00
Dietmar Maurer
0d97734e92
use is_empty() to check for empty string
2018-11-26 18:02:29 +01:00
Dietmar Maurer
dd193a61d0
section_config: improve parser
2018-11-26 18:01:24 +01:00
Dietmar Maurer
07d3fa7289
add some inline documentation
2018-11-24 17:52:43 +01:00
Dietmar Maurer
6656ba9d32
StringSchema: add method to check string length
2018-11-24 12:37:05 +01:00
Dietmar Maurer
ab672c124e
ArraySchema: add method to check array length
2018-11-24 12:33:44 +01:00
Dietmar Maurer
ed04ce8093
parse_property_string: allow arrays
...
So that we can build simple lists like "1,2,3,4"
2018-11-24 12:21:56 +01:00
Dietmar Maurer
84669dc18d
rename test case
2018-11-24 11:21:01 +01:00
Dietmar Maurer
b436389d47
parse_property_string: first try
2018-11-24 11:20:17 +01:00
Dietmar Maurer
a23dd9bb42
add test for VerifyFn
2018-11-24 08:30:23 +01:00
Dietmar Maurer
715f22fb4a
remove outdated test code
2018-11-24 08:15:08 +01:00
Dietmar Maurer
757d9b4769
ArraySchema: Add min_length and max_length
2018-11-24 08:12:23 +01:00
Dietmar Maurer
3e1497fb75
remove description from ApiMethod
...
We use the description from parameters ObjectSchema instead.
2018-11-23 17:02:50 +01:00
Dietmar Maurer
768e01091a
implement Into Arc<Schema>
2018-11-23 13:18:41 +01:00
Dietmar Maurer
8a41cfdd55
implement ArraySchema
2018-11-23 12:05:55 +01:00
Dietmar Maurer
7edeec7b06
remove parameter macro, implement ObjectSchema builder
...
And store "optional" attribute inside properties hash.
2018-11-23 11:34:15 +01:00
Dietmar Maurer
82df76fff0
start using builder pattern instead of macros
2018-11-23 09:55:38 +01:00
Dietmar Maurer
dc454ef096
implement schema registry
2018-11-22 11:23:49 +01:00
Dietmar Maurer
00c908df85
use Arc pointer to properties
2018-11-20 17:20:50 +01:00
Dietmar Maurer
e471d69946
section_config.rs: add some test code
2018-11-19 08:07:22 +01:00
Dietmar Maurer
222454221c
add section_config.rs
2018-11-19 06:47:39 +01:00
Dietmar Maurer
948c74f4ca
move future test code into extra file
2018-11-19 06:41:50 +01:00
Dietmar Maurer
0f52af5b23
implement simply test future for storage operations
2018-11-18 15:01:19 +01:00
Dietmar Maurer
be45ccd203
fix getopts when called without any argument
2018-11-18 14:57:18 +01:00
Dietmar Maurer
a19f223dea
impl argument parameters
2018-11-18 10:09:13 +01:00
Dietmar Maurer
c78bcf07ad
getopts: more tests
2018-11-18 09:34:43 +01:00
Dietmar Maurer
62c40162ee
improve getopt parser
2018-11-18 08:55:21 +01:00
Dietmar Maurer
a653882dd9
use ObjectSchema for parameters
...
Signed-off-by: Dietmar Maurer <dietmar@proxmox.com>
2018-11-18 08:46:26 +01:00
Dietmar Maurer
5d9f0eae6b
another testcase for boolean argument parser
2018-11-17 11:29:42 +01:00
Dietmar Maurer
2770fbf3c3
getopt parser fixes and cleanups
2018-11-17 11:28:26 +01:00
Dietmar Maurer
7556cab45e
getopts: allow "-option" and "--option"
2018-11-17 10:02:35 +01:00
Dietmar Maurer
0c9ce2bbf0
getopts: improve error handling
2018-11-17 09:57:26 +01:00
Dietmar Maurer
ffff48fcfe
cleanup variable names
2018-11-16 16:47:23 +01:00
Dietmar Maurer
845901f41d
implement getopt parser - first try
2018-11-16 13:14:11 +01:00
Dietmar Maurer
c548fa250a
router: no need to use Fn (fn also works for static closures)
2018-11-16 11:12:00 +01:00
Dietmar Maurer
5206d1d951
fix typo
2018-11-16 09:16:37 +01:00
Dietmar Maurer
e7ea17deb0
handle uri parameters correctly
2018-11-16 09:15:33 +01:00
Dietmar Maurer
484eb9ac19
Router: allow to set match parameter name
2018-11-16 08:29:23 +01:00
Dietmar Maurer
2ab1f7119c
Router: implement missing builder methods
2018-11-16 08:24:10 +01:00
Dietmar Maurer
fc937099b3
remove stale macro
2018-11-16 07:35:19 +01:00
Dietmar Maurer
fe476ce884
allow closure handlers
2018-11-15 17:47:59 +01:00
Dietmar Maurer
cbbeff1a6d
add missing file
2018-11-15 17:07:55 +01:00
Dietmar Maurer
f17db0abfd
cleanup module names
2018-11-15 17:07:10 +01:00
Dietmar Maurer
c0262d7480
rename Jss to Schema
2018-11-15 16:56:28 +01:00
Dietmar Maurer
426a48b04f
fix parameter macro for empty object
2018-11-15 16:48:36 +01:00
Dietmar Maurer
8a7005321b
improve router
2018-11-15 13:28:15 +01:00
Dietmar Maurer
e63e99d646
rename MethodInfo to Router
2018-11-15 11:46:13 +01:00
Dietmar Maurer
10be1d290a
avoid macros
2018-11-15 10:57:52 +01:00
Dietmar Maurer
4dcf43d266
rename ApiError into HttpError
2018-11-15 10:42:01 +01:00
Dietmar Maurer
279ecfdfb4
remove unneeded lifetime annotations
2018-11-15 10:25:59 +01:00
Dietmar Maurer
f0b10921b8
reorder content
2018-11-15 10:18:01 +01:00
Dietmar Maurer
16b48b81c5
move ApiConfig into extra file
2018-11-15 10:14:08 +01:00
Dietmar Maurer
9bc17e8dcd
move server code to api_server.rs, implement Service and NewService
2018-11-15 10:05:37 +01:00
Dietmar Maurer
08bd8d476a
remove more test code, cleanups
2018-11-14 17:32:17 +01:00
Dietmar Maurer
98d82428b0
remove asnyc test code
2018-11-14 14:39:01 +01:00
Dietmar Maurer
5599e2633c
correctly use Arc pointer
2018-11-14 14:28:54 +01:00
Dietmar Maurer
1a53be1443
factor out server code into api_server.rs
2018-11-14 13:22:33 +01:00
Dietmar Maurer
a9696f7beb
use Arc for ApiServer
2018-11-14 11:57:01 +01:00
Dietmar Maurer
2c10fd5cb1
simplify code
2018-11-14 11:38:26 +01:00
Dietmar Maurer
324a5bd095
remove service implementation, use service_fn again
2018-11-13 14:47:03 +01:00
Dietmar Maurer
a974251ee6
improve error handling, use a Service
2018-11-13 12:36:56 +01:00
Dietmar Maurer
035cce945e
remove static directory cache
2018-11-12 14:11:04 +01:00
Dietmar Maurer
198fab6f2a
santtize paths in handle_request
2018-11-12 13:19:53 +01:00
Dietmar Maurer
a0efdca18b
code cleanup
2018-11-11 17:19:24 +01:00
Dietmar Maurer
78d0783b00
handle_static_file_download: optimize small files
...
Avoid chuncked transfer for small files.
2018-11-11 17:10:42 +01:00
Dietmar Maurer
579fbe7dc8
implement static file download
...
Fully async using futures and stream.
2018-11-11 15:54:05 +01:00
Dietmar Maurer
cec9f02ebc
limit allowed body size
2018-11-11 13:24:14 +01:00
Dietmar Maurer
3cdec2a010
use header::CONTENT_TYPE
2018-11-11 12:55:30 +01:00
Dietmar Maurer
ef1f0e655a
add code to create directory name cache
2018-11-10 17:17:41 +01:00
Dietmar Maurer
3c1d7afc42
another way to read files using tokio_codec
2018-11-10 15:12:45 +01:00
Dietmar Maurer
805aec1572
play around with async tasks
2018-11-10 12:06:39 +01:00
Dietmar Maurer
6639c14bd9
use better http status codes
2018-11-10 10:32:25 +01:00
Dietmar Maurer
260c1ee8c6
cleanup futures
2018-11-10 10:00:48 +01:00
Dietmar Maurer
c819ec8dde
call api method and return result
2018-11-09 13:48:57 +01:00
Dietmar Maurer
b82472c0d2
use futures - first try
2018-11-09 12:14:18 +01:00
Dietmar Maurer
4beaacb6f4
code cleanup
2018-11-07 13:58:09 +01:00
Dietmar Maurer
a908292008
implement string enum validation
2018-11-07 13:25:47 +01:00
Dietmar Maurer
0a33b12851
try to reduce space usage in ApiStringFormat by using Box
2018-11-07 13:01:14 +01:00
Dietmar Maurer
abbf40fc2e
define a separate enum ApiStringFormat
2018-11-07 12:55:33 +01:00
Dietmar Maurer
d46287e083
implement string regex matcher
2018-11-07 12:35:52 +01:00
Dietmar Maurer
144f0f5eda
remove unnecessary test
2018-11-07 12:16:16 +01:00
Dietmar Maurer
7b5316ddfa
improve error messages
2018-11-07 12:14:52 +01:00
Dietmar Maurer
7c32470aea
implement some string tests
2018-11-07 12:11:09 +01:00
Dietmar Maurer
08a13bb456
implement integer schema tests
2018-11-07 11:55:08 +01:00
Dietmar Maurer
e72677bf50
pass ApiMethod to handler
2018-11-07 11:06:37 +01:00
Dietmar Maurer
ab9e6de21c
test for required parameters
2018-11-06 14:18:13 +01:00
Dietmar Maurer
b8bcc7630c
try to write unit test
2018-11-06 13:58:05 +01:00
Dietmar Maurer
cfa5886c33
implement simple schema parser
2018-11-06 13:10:10 +01:00
Dietmar Maurer
42d569c186
move url related code back to main.rs
2018-11-06 09:35:11 +01:00
Dietmar Maurer
6d77fb4063
move parse_query into json_schema
2018-11-05 15:20:27 +01:00
Dietmar Maurer
0dde2f04d0
avoid static references
2018-11-03 15:10:21 +01:00
Dietmar Maurer
331ab992d7
use const for default object initializers
2018-11-03 10:50:24 +01:00
Dietmar Maurer
504b359724
another way to initialize the api tree
2018-11-03 10:42:48 +01:00
Dietmar Maurer
0e6967d648
move test code
2018-11-03 09:08:01 +01:00
Dietmar Maurer
18671ca530
convert find_method_info function into a method
2018-11-02 10:01:47 +01:00
Dietmar Maurer
8741bc2079
use reference to Jss inside PropertyMap
2018-11-02 09:50:26 +01:00
Dietmar Maurer
016aa6cbab
define macro for propertymap
2018-11-02 09:44:18 +01:00
Dietmar Maurer
79fa17d986
use macro to declare static methodinfo items
2018-11-01 18:10:36 +01:00
Dietmar Maurer
bfcba4fd86
new subdirmap macro, cleanups
2018-11-01 15:41:08 +01:00
Dietmar Maurer
763220cefa
use edition 2018 (beta)
...
This is expected to be stable by the end of the year.
2018-11-01 14:42:27 +01:00
Dietmar Maurer
1ac3e212c2
avoid warning about unused vars
2018-11-01 14:19:02 +01:00
Dietmar Maurer
f1c0021436
remove hardcoded static lifetime
2018-11-01 14:16:41 +01:00
Dietmar Maurer
89feb6acdf
use refs in ApiMethod
2018-11-01 13:57:53 +01:00
Dietmar Maurer
b90dcc34bb
cleanup lifetime in find_method_info
2018-11-01 13:54:04 +01:00
Dietmar Maurer
3cd244b9fa
static_map: remove starnge type borrow
2018-11-01 13:45:10 +01:00
Dietmar Maurer
d11f14f77d
do not use phf
2018-11-01 13:05:45 +01:00
Dietmar Maurer
28e47cea55
start implementing request handler
2018-11-01 11:30:49 +01:00
Dietmar Maurer
886e5ce8f7
split code into several files
2018-10-31 10:42:14 +01:00
Dietmar Maurer
22f0adf26a
try to define an static api
2018-10-30 14:06:37 +01:00
Dietmar Maurer
d6a4ba7192
move code into lib.rs
2018-10-30 10:40:05 +01:00
Dietmar Maurer
d8d978ebc4
initial version
2018-10-30 10:04:30 +01:00