Houkime
873bc8282e
refactor(backups): redis model storage utils
2023-07-17 16:05:00 +03:00
Houkime
c928263fce
feature(backups): load from json
2023-07-17 16:05:00 +03:00
Houkime
0847e16089
feat(backups): local secret generation and storage
2023-07-17 16:05:00 +03:00
Houkime
60dcde458c
feat(backups): sizing up snapshots
2023-07-17 16:05:00 +03:00
Houkime
1d403b0e94
test(backups): test restoring a file
2023-07-17 16:05:00 +03:00
Houkime
c8a8d45110
feat(backups): add restore_snapshot and restore_service_from_snapshot
2023-07-17 16:05:00 +03:00
Houkime
ff6bc2a142
feat(backups): a better error on failed snapshot retrieval
2023-07-17 16:05:00 +03:00
Houkime
e56907f2cd
feat(backups): return proper snapshot structs when listing
2023-07-17 16:05:00 +03:00
Houkime
228eab44bb
feat(backups): throw an error on a failed backup
2023-07-17 16:05:00 +03:00
Houkime
348ece8b9c
fix(backups): singleton metaclass was screwing with tests
2023-07-17 16:05:00 +03:00
Houkime
a280e5c999
test(backups): localfile repo by default in tests
2023-07-17 16:05:00 +03:00
Houkime
add4e21f39
feature(backups): throw an error if repo init fails
2023-07-17 16:05:00 +03:00
Houkime
5efb351159
feature(backups): register localfile backend
2023-07-17 16:05:00 +03:00
Houkime
529608d52e
feature(backups): localfile repo
2023-07-17 16:05:00 +03:00
Houkime
3f30469532
refactor(backups): repo init service method
2023-07-17 16:05:00 +03:00
Houkime
a405eddbcf
refactor(backups): add repo init
2023-07-17 16:05:00 +03:00
Houkime
5371c7feef
refactor(backups): snapshotlist and local secret groundwork
2023-07-17 16:05:00 +03:00
Houkime
e156e9cd58
test(backup): no snapshots
2023-07-17 16:05:00 +03:00
Houkime
83b24f5fcd
refactor(backup): snapshot model
2023-07-17 16:05:00 +03:00
Houkime
4ca2e62b5c
feature(backup): loading snapshots
2023-07-17 16:05:00 +03:00
Houkime
a42294b706
feature(backup): add a restore function to restic backuper
2023-07-17 16:05:00 +03:00
Houkime
a0a0e1fb3b
feat(backup): hooks
2023-07-17 16:05:00 +03:00
Houkime
178c456593
refactor(backup): add a backup function to Backups singleton class
2023-07-17 16:05:00 +03:00
Houkime
ff72d4124e
refactor(backup): add a placeholder Backups singleton class
2023-07-17 16:05:00 +03:00
Houkime
54103973bc
test(backup): try to back up!
2023-07-17 16:05:00 +03:00
Houkime
a9cd8dda37
fix(backup): add memory backup class,forgot to add to git
2023-07-17 16:05:00 +03:00
Houkime
86c99c0be8
feat(backup): add backuping to restic backuper
2023-07-17 16:05:00 +03:00
Houkime
37c18ead99
feat(backup): add in-memory backup
2023-07-17 16:05:00 +03:00
Houkime
e5a965ea29
feat(backup): allow no auth
2023-07-17 16:05:00 +03:00
Houkime
45ab9423b9
test(backup): dummy service
2023-07-17 16:05:00 +03:00
Houkime
9097ba02d7
test(backup): provider class selection
2023-07-17 16:05:00 +03:00
Houkime
7d76b74dbc
feature(backups): copy cli logic to new restic backuper
2023-07-17 16:05:00 +03:00
Houkime
1e5fb67374
feature(backups): placeholders for the backupers and backup providers
2023-07-17 16:05:00 +03:00
Houkime
a3d58be0d5
feature(backups): placeholders for the modules of the new backup system
2023-07-17 16:05:00 +03:00
Houkime
a1071fd2c9
feature(backups): add backup structures and queries
2023-07-17 16:05:00 +03:00
Houkime
7b7f782185
refactor(backup): do not use config file
2023-07-17 16:05:00 +03:00
Houkime
f65c0522b0
refactor(backup): pass key and account to exec
2023-07-17 16:05:00 +03:00
Houkime
6bf5ee4b64
refactor(backup): extract restic repo
2023-07-17 16:05:00 +03:00
Houkime
8eab26d552
refactor(backup): extract rclone args
2023-07-17 16:05:00 +03:00
Houkime
70cf0306a9
refactor(backup): delete unused import
2023-07-17 16:05:00 +03:00
Houkime
9f19c677d0
feature(backup):calculate needed space for inplace restoration
2023-07-14 12:34:45 +00:00
Houkime
4aa87edf47
fix(servers): hopefully fix moving
2023-07-14 10:58:31 +00:00
Houkime
92cfd00f93
feature(servers): set default timeout of server operations to 10 min
2023-07-12 17:03:24 +00:00
Houkime
e43478d437
feature(backups): stop services before restores
2023-07-12 16:53:49 +00:00
Houkime
7af7600599
feature(backups): stop services before backups
2023-07-12 16:43:26 +00:00
Houkime
326e3d3b0c
test(backups): do not store the status file in backupped folders
2023-07-12 16:00:36 +00:00
Houkime
de8ef744eb
refactor(backups): make a StoppedService context manager
2023-07-12 15:14:54 +00:00
Houkime
713296c520
test(backups): make delay settable per dummyservice
2023-07-12 12:27:55 +00:00
Houkime
e7a6700522
test(backups): test async service start n stop simulation
2023-07-12 12:10:40 +00:00
Houkime
169e9ad57d
test(backups): simulating async service start n stop
2023-07-10 17:03:10 +00:00
Houkime
6523105d89
feature(utils): a hopefully reusable waitloop
2023-07-10 10:33:01 +00:00
Houkime
1cefaefa3b
feature(backups): expose restore strategies to the API
2023-07-07 13:24:05 +00:00
Houkime
2743441e1e
fix(backups): actually mount if asked for an inplace restore
2023-07-07 13:14:30 +00:00
Houkime
9075afd38a
test(backups): test out that pre-restore backup plays nice with jobs
2023-07-07 12:50:20 +00:00
Houkime
af5edb695f
feature(backups): implement inplace restore strategy
2023-07-07 11:54:48 +00:00
Houkime
c74b3df32c
feature(backups): restore strategies enum
2023-07-07 10:50:59 +00:00
Houkime
53bb5cc4e2
feature(backups): forgetting snapshots
2023-07-05 13:13:30 +00:00
Houkime
03313b739a
feature(backups): check restore exit code
2023-07-03 20:53:21 +00:00
Houkime
3dc6fb91f2
refactor(backups): download a copy before replacing original
2023-07-03 20:41:52 +00:00
Houkime
b6eb27dc5e
feature(backups): mounting a repo
2023-07-03 15:32:00 +00:00
Houkime
953860a02c
refactor(backups): move syncing (non-restic) into backup utils
2023-07-03 15:32:00 +00:00
Houkime
6a00d3cff9
refactor(backups): move output yielding into backup utils
2023-07-03 15:32:00 +00:00
Houkime
9793201ca1
feature(backups): a wrapper for rclone sync
2023-07-03 15:32:00 +00:00
Inex Code
64e7afe53e
feat(backups): Add backup descriptions for UI
2023-06-29 14:27:08 +03:00
Inex Code
15ce344bc8
feat(backups): expose if the service can be backed up
2023-06-29 13:45:00 +03:00
Inex Code
b480c84041
style: fix styling
2023-06-29 13:44:29 +03:00
Houkime
cd2e9d3ba3
fix(jobs): make finishing the job set progress to 100
2023-06-28 13:22:53 +00:00
Inex Code
11184a55e8
feat(jobs): return type_id of the job in graphql api
2023-06-28 15:56:30 +03:00
Houkime
e4865aa094
fix(services): proper backup progress reporting
2023-06-28 11:45:07 +00:00
Houkime
35258bad38
fix(services): cleanup a stray get_location
2023-06-28 09:48:32 +00:00
Houkime
59fef1d016
fix(backups): register the correct tasks
2023-06-28 09:41:03 +00:00
Inex Code
d9b26e12e2
fix(backups): missing space in rclone args
2023-06-28 12:10:12 +03:00
Houkime
ae16a527a2
refactor(backups): rename service_snapshot_size to snapshot_restored_size
2023-06-26 19:41:26 +00:00
Houkime
7147f97077
refactor(backups): remove the by-service getting of cached snapshots
2023-06-26 19:29:29 +00:00
Houkime
bae81b2f69
refactor(backups): rename force_snapshot_reload to force_snapshot_cache_reload
2023-06-26 19:20:49 +00:00
Houkime
a76834d1ba
refactor(backups): merge sync_all_snapshots with force_snapshot_reload
2023-06-26 19:16:18 +00:00
Houkime
f8029d133a
refactor(backups): straighten get_all_snapshots
2023-06-26 19:01:26 +00:00
Houkime
4ad4c3cc67
refactor(backups): delete sync_service_snapshots
2023-06-26 18:50:37 +00:00
Houkime
b9be0be6a2
refactor(backups): privatize assert_restorable and restore_snapshot_from_id
2023-06-26 18:42:26 +00:00
Houkime
2f2c4f14af
refactor(backups): group operations together
2023-06-26 18:30:31 +00:00
Houkime
e6efd1b42d
refactor(backups): move reset() to top because toplevel interface
2023-06-26 18:21:50 +00:00
Houkime
1593474dc1
refactor(backups): make redis and json provider related lowlevels private
2023-06-26 18:20:22 +00:00
Houkime
71eeed926d
refactor(backups): make construct_provider not public
2023-06-26 18:14:15 +00:00
Houkime
81d1762518
refactor(backups): make lookup_provider not public
2023-06-26 18:11:11 +00:00
Houkime
e159d2f1a7
refactor(backups): reorder imports
2023-06-26 18:07:47 +00:00
Houkime
8604caa331
refactor(backups): api readability reorg
2023-06-26 18:00:42 +00:00
Houkime
2f71469f39
refactoring(backups): backuper -> backupper
2023-06-23 12:04:33 +00:00
Houkime
6ca68fae17
fix(tokens-repo): persistent hashing
2023-06-23 11:54:40 +00:00
Inex Code
1664f857ea
fix(backups): Providers were not initialized corretly
2023-06-23 14:36:16 +03:00
Inex Code
e7e0fdc4a1
refactor(backups): fix typing errors
2023-06-23 12:40:10 +03:00
Houkime
5be3c83952
fix(tokens-repo): persistent hashing
2023-06-21 12:15:33 +00:00
Inex Code
c6919293b6
refactor(api): Group mutations
...
I've learned that there is no problem in grouping mutations like we do with queries.
This is a big mistake from my side, now we have legacy not so conveniently placed endpoints.
I've grouped all mutations, left the copies of old ones flattened in the root for backwards compatibility.
We will migrate to mutation groups on client side, and backups now only use grouped mutations.
Tests are updated.
2023-06-21 06:46:56 +03:00
Houkime
e3a87f1d98
test(backups): ensure asking to reload snaps does not explode the server
2023-06-19 14:12:50 +00:00
Houkime
25f3115c05
test(backups): setting autobackup period
2023-06-19 13:28:02 +00:00
Houkime
b5e2499a30
refactor(backups): delete legacy provider setting
2023-06-19 11:17:09 +00:00
Houkime
612a46ee42
feature(backups): actually dealing with situation when the provider is not configured
2023-06-19 11:09:10 +00:00
Houkime
4f2f24daac
refactor(backups): NoneBackupper class for those cases when we do not know
2023-06-16 16:03:32 +00:00
Houkime
3449837de9
refactor(backups): make a dir for backuppers
2023-06-16 15:50:31 +00:00
Houkime
79c3b9598c
feature(backups): resetting json config too
2023-06-16 15:09:39 +00:00
Houkime
47aee3c1f1
fix(backups): fix output API return types for configuration
2023-06-16 14:39:00 +00:00
Houkime
8e1e37c766
test(backups): preliminary test of repo reset
2023-06-16 14:33:48 +00:00
Houkime
33c60f971d
test(backups): test reinitting repository
2023-06-16 13:43:41 +00:00
Inex Code
b3a37e8b1f
fix: Migrate to SP channel from 22.11 installations
2023-06-14 19:27:11 +03:00
Houkime
b3724e240e
refactor(backups): cleanup localfile-specific logic
2023-06-14 14:17:04 +00:00
Houkime
9e0b0d8caa
refactor(backups): make localfile repos normal
2023-06-14 14:07:51 +00:00
Houkime
21791f20a2
test(backups): make dummy service more compliant
2023-06-14 11:55:46 +00:00
Inex Code
c77191864e
style: reformat
2023-06-14 14:03:14 +03:00
Houkime
3344ab7c5d
feat(tokens-repo): add migration of tokens to redis
2023-06-14 14:03:14 +03:00
Houkime
5fbfaa73ea
feat(tokens-repo): add clone() method
2023-06-14 14:02:23 +03:00
Houkime
d0a17d7b7a
fix(tokens-repo): make json _get_stored_new_device_key return tz-aware keys
2023-06-14 14:02:23 +03:00
Houkime
da19cc8c0e
refactor(tokens-repo): move create recovery key to abstract token repository
2023-06-14 14:02:23 +03:00
Houkime
817f414dd9
refactor(tokens-repo): break out storing recovery keys
2023-06-14 14:02:23 +03:00
Houkime
baf72b730b
refactor(tokens-repo): move reset to AbstractTokensRepo
2023-06-14 14:02:23 +03:00
Houkime
51018dd6c2
refactor(tokens-repo): cleanup actions/api_tokens.py
2023-06-14 14:02:23 +03:00
Houkime
158c1f13a6
refactor(tokens-repo): switch token backend to redis
...
And use timezone-aware comparisons for expiry checks
2023-06-14 14:02:23 +03:00
Houkime
8554879dc2
Merge remote-tracking branch 'upstream/restic-rewrite-api' into restic-rewrite
2023-06-14 10:27:50 +00:00
Houkime
d9bde6930b
fix(backups): register queries
2023-06-14 10:16:53 +00:00
Houkime
865e304f42
test(backups): test backup API - backing up
2023-06-14 10:16:31 +00:00
Inex Code
d356fad534
fix(backups): Handle orphaned snapshots
2023-06-14 02:52:10 +03:00
Inex Code
f4df1f6a62
fix(backups): return type of encryption key
2023-06-14 01:40:53 +03:00
Inex Code
0ef6569d97
fix(backups): try to actually get backup configuration
2023-06-14 00:43:01 +03:00
Inex Code
f950dd1e93
feat(backups): register backups in GraphQL schema
2023-06-14 00:00:29 +03:00
Inex Code
d02302c7b2
fix: BackupConfiguration argument order
2023-06-13 23:54:02 +03:00
Houkime
549b149aaf
feature(backups): check available space before restoring
2023-06-07 16:33:13 +00:00
Houkime
981445d594
refactor(backups): expect one more error of restic json output parsing
2023-06-07 15:55:38 +00:00
Houkime
7f984b678f
feature(backups): integration between restore and jobs
2023-06-07 15:05:58 +00:00
Houkime
98de85e569
fix(backups): return one job, not an array of one
2023-06-07 14:27:37 +00:00
Houkime
4b8abb6a66
fix(backups): return 400, not 300
2023-06-07 14:25:17 +00:00
Houkime
0c95c5913b
BREAKING CHANGE(backups): support only individual service backup requests(combinable)
2023-06-07 14:11:22 +00:00
Houkime
ff58bdccbb
feature(backups): set autobackup period from gql
2023-06-05 11:49:37 +00:00
Houkime
d6609b29e8
feature(backups): get all snapshots if requested by api
2023-06-05 11:36:58 +00:00
Houkime
2168037a10
refactor(backups): introduce get_all_snapshots()
2023-06-05 11:28:53 +00:00
Houkime
9d5335f62c
feature(backups): feature(backups): return a snapshot from start_backup
2023-06-05 11:26:58 +00:00
Houkime
9a94f7624e
feature(backups): a graphql call to invalidate cache
2023-06-01 16:12:32 +00:00
Houkime
50952d688a
feature(backups): graphql mutation for restore
2023-06-01 14:03:40 +00:00
Houkime
f7c0821675
fix(backups): return correct snapshots per service
2023-06-01 12:44:14 +00:00
Houkime
4b07d4de41
refactor(backups): global snapshots
2023-05-31 13:16:08 +00:00
Houkime
603ed2ddf9
feature(backups): start backup graphql API
2023-05-31 12:07:47 +00:00
Houkime
9c4d2a0ba5
feature(backups): drop repository call
2023-05-29 18:24:38 +00:00
Houkime
c3696d3a4b
feature(backups): global init instead of per-service
2023-05-29 16:50:14 +00:00
Houkime
345e2c10c4
feature(backups): a graphql query to get provider info
2023-05-29 16:12:31 +00:00
Houkime
97e4c529f6
feature(backups): init repo mutation
2023-05-29 15:34:26 +00:00
Houkime
0dc6f74754
fix(backups): make sure location and credentials get properly passed around
2023-05-22 16:01:57 +00:00
Houkime
03d4632465
refactor(backups): remove extraneous asserts from jobs
2023-05-17 20:27:42 +00:00
Houkime
9fab596f91
refactor(backups): refactor realtime updating
2023-05-17 20:27:42 +00:00
Houkime
b1d0a80963
feature(backups): realtime progress updates of backups
2023-05-17 20:27:42 +00:00
Houkime
60806cd536
feature(backups): job progress logs
2023-05-17 20:27:42 +00:00
Houkime
ddd2176a5d
refactor(backups): break out job logs status prefix
2023-05-17 20:27:42 +00:00
Houkime
deb857bca9
refactor(backups): use single repo and multiplex by tags
2023-05-17 20:27:42 +00:00
Houkime
a6b3a5e590
feature(backups): deny adding a backup job if another one is already queued
2023-05-17 20:27:42 +00:00
Houkime
e25aa2cb33
test(backups): test that the job has run
2023-05-17 20:27:42 +00:00
Houkime
7ddfad10d4
refactor(backups): quick-expiration logs of jobs status updates
2023-05-17 20:27:42 +00:00
Houkime
b2e231ebae
feature(backups): set job status to error if backup fails
2023-05-17 20:27:42 +00:00
Houkime
0bf18dcdc7
refactor(backups): cleanup unused imports in tasks
2023-05-17 20:27:42 +00:00
Houkime
396b42b69c
test(backups): test jobs starting and finishing when from Backups
2023-05-17 20:27:42 +00:00
Houkime
ad6cc5e1bc
refactor(backups): make a backup job running when the backup code itself is executed
2023-05-17 20:27:42 +00:00
Houkime
c0dfbb3ca2
refactor(backups): delete unused redis import from backups ckass
2023-05-17 20:27:42 +00:00
Houkime
3eb8382d9b
feature(backups): also create a job if not called from a task
2023-05-17 20:27:42 +00:00
Houkime
108fca0eb3
feature(backups): simplest jobs intergration in tasks: created and finished
2023-05-17 20:27:42 +00:00
Houkime
d1425561d9
feature(backups): restore task
2023-05-17 20:27:42 +00:00
Houkime
72f4fc8ae7
test(backups): test local secrets
2023-05-17 20:27:42 +00:00
Houkime
fa360655fe
refactor(services): make local secret setting public
2023-05-17 20:27:42 +00:00
Houkime
65acd3173a
refactor(services): use fully generic foldermoves
2023-05-17 20:27:42 +00:00
Houkime
dde86725b9
test(services): test derivation of foldermoves
2023-05-17 20:27:42 +00:00
Houkime
ba72fadb8d
test(services): test that we indeed return correct folders and owned folders from real services
2023-05-17 20:27:42 +00:00
Houkime
043675ce14
fix(services): folder methods typing
2023-05-17 20:27:42 +00:00
Houkime
238a656cd9
refactor(services): make a foldermove from owned path
2023-05-17 20:27:42 +00:00
Houkime
ad66513f27
refactor(services): add folder owner derivation
2023-05-17 20:27:41 +00:00
Houkime
c34eb6d447
refactor(services): add overridable get owner and get group
2023-05-17 20:27:41 +00:00
Houkime
0b7d2d0bf4
refactor(services): add OwnedPath struct
2023-05-17 20:27:41 +00:00
Houkime
a664ab3dd4
refactor(services): remove special storage counting from pleroma
2023-05-17 20:27:41 +00:00
Houkime
3605a71c1d
refactor(services): remove special storage counting from ocserv
2023-05-17 20:27:41 +00:00
Houkime
617f7f1628
refactor(services): remove special storage counting from nextcloud
2023-05-17 20:27:41 +00:00
Houkime
4475bcea45
documentation(services): move the storage count docstring to parent service class
2023-05-17 20:27:41 +00:00
Houkime
042a2e4cf2
refactor(services): remove special storage counting from mail
2023-05-17 20:27:41 +00:00
Houkime
312328af95
refactor(services): remove special storage counting from jitsi
2023-05-17 20:27:41 +00:00
Houkime
c040f0825c
refactor(services): remove special storage counting from gitea
2023-05-17 20:27:41 +00:00
Houkime
f8edcac33f
refactor(services): remove special storage counting from bitwarden
2023-05-17 20:27:41 +00:00
Houkime
789fd71e2f
refactor(services): add a generic storage counter
2023-05-17 20:27:41 +00:00
Houkime
a34b14449b
refactor(services): make get_folders() a mandatory part of Service interface
2023-05-17 20:27:41 +00:00
Houkime
8a4f256c12
refactor(services): add get_folders() to the rest of the services
2023-05-17 20:27:41 +00:00
Houkime
0207b5a473
fix(services): use get_foldername() for moving around
2023-05-17 20:27:41 +00:00
Houkime
1c0e3f0f92
test(backups): implement get_folders() for gitea
2023-05-17 20:27:41 +00:00
Houkime
378f0ebd73
test(backups): implement get_folders() for bitwarden
2023-05-17 20:27:41 +00:00
Houkime
30ac990985
refactor(backups): set a list of folders for our dummy service
2023-05-17 20:27:41 +00:00
Houkime
fa26379a68
refactor(backups): actually accept a list of folders
2023-05-17 20:27:41 +00:00
Houkime
08739f7ca8
refactor(backups): make api accept a list of folders
2023-05-17 20:27:41 +00:00
Houkime
919ba1ad03
refactor(backups): make a dedicated get_folders() function
2023-05-17 20:27:41 +00:00
Houkime
1b1052d205
refactor(services): rename get_location() to get_drive()
2023-05-17 20:27:41 +00:00
Houkime
0ae4192081
test(backups): register dummy service
2023-05-17 20:27:41 +00:00
Houkime
4018dca184
feature(backups): automatic backup
2023-05-17 20:27:41 +00:00
Houkime
ec85f060f8
test(backups): test autobackup timing
2023-05-17 20:27:41 +00:00
Houkime
283c8d09cc
refactor(backups): split out storage
2023-05-17 20:27:41 +00:00
Houkime
5ad9f50b94
feature(backups): enable snapshot cache usage
2023-05-17 20:27:41 +00:00
Houkime
a2ff74244e
feature(backups): add snapshot cache sync functions
2023-05-17 20:27:41 +00:00
Houkime
7699ba0d9b
test(backups): test last backup date retrieval
2023-05-17 20:27:41 +00:00
Houkime
146b0ca02f
feature(backups): add a datetime validator function for huey autobackups
2023-05-17 20:27:41 +00:00
Houkime
d4cad61d56
test(backups): test setting autobackup period
2023-05-17 20:27:41 +00:00
Houkime
3c42d8c413
test(backups): test setting services as enabled for autobackups
2023-05-17 20:27:41 +00:00
Houkime
e043720289
feature(backups): methods for autobackup period setting and getting
2023-05-17 20:27:41 +00:00
Houkime
417533fc04
fix(backups): remove self from static method
2023-05-17 20:27:41 +00:00
Houkime
45f33e2d31
feature(backups): check, set and unset service autobackup status
2023-05-17 20:27:41 +00:00
Houkime
18d5cd2b83
feature(backups): cache snapshots and last backup timestamps
2023-05-17 20:27:41 +00:00
Houkime
ae065867b3
test(backups): test that we do return snapshot on backup
2023-05-17 20:27:41 +00:00
Houkime
2eb64db199
feature(backups): return snapshot info from backup function
2023-05-17 20:27:41 +00:00
Houkime
772b499b46
feature(backups): huey task to back up
2023-05-17 20:27:41 +00:00
Houkime
144e4e5e91
refactor(backups): make backups stateless
2023-05-17 20:27:41 +00:00
Houkime
a2dd47130b
feature(backups): repo init tracking
2023-05-17 20:27:41 +00:00
Houkime
4b2cecac8f
feature(backups): provider storage and retrieval
2023-05-17 20:27:41 +00:00
Houkime
6524c98131
refactor(backups): add a provider model for redis storage
2023-05-17 20:27:41 +00:00
Houkime
a0afe63b3d
refactor(backups): redis model storage utils
2023-05-17 20:27:41 +00:00
Houkime
ea6a047478
feature(backups): load from json
2023-05-17 20:27:41 +00:00
Houkime
4e329299e0
feat(backups): local secret generation and storage
2023-05-17 20:27:40 +00:00
Houkime
23ee958bfb
feat(backups): sizing up snapshots
2023-05-17 20:27:40 +00:00
Houkime
d62d7534d7
test(backups): test restoring a file
2023-05-17 20:27:40 +00:00
Houkime
dc3032eb03
feat(backups): add restore_snapshot and restore_service_from_snapshot
2023-05-17 20:27:40 +00:00
Houkime
98e1c9ebaa
feat(backups): a better error on failed snapshot retrieval
2023-05-17 20:27:40 +00:00
Houkime
c32353fe9b
feat(backups): return proper snapshot structs when listing
2023-05-17 20:27:40 +00:00
Houkime
b3633d1a96
feat(backups): throw an error on a failed backup
2023-05-17 20:27:40 +00:00
Houkime
01797cb922
fix(backups): singleton metaclass was screwing with tests
2023-05-17 20:27:40 +00:00
Houkime
06deb83b33
test(backups): localfile repo by default in tests
2023-05-17 20:27:40 +00:00
Houkime
e091fbd4a2
feature(backups): throw an error if repo init fails
2023-05-17 20:27:40 +00:00
Houkime
f1987edd99
feature(backups): register localfile backend
2023-05-17 20:27:40 +00:00
Houkime
c493a49daa
feature(backups): localfile repo
2023-05-17 20:27:40 +00:00
Houkime
bd744ba211
refactor(backups): repo init service method
2023-05-17 20:27:40 +00:00
Houkime
86e2b90bef
refactor(backups): add repo init
2023-05-17 20:27:40 +00:00
Houkime
c9fd656181
refactor(backups): snapshotlist and local secret groundwork
2023-05-17 20:27:40 +00:00
Houkime
a043392b7b
test(backup): no snapshots
2023-05-17 20:27:40 +00:00
Houkime
e447419f96
refactor(backup): snapshot model
2023-05-17 20:27:40 +00:00
Houkime
3afe196901
feature(backup): loading snapshots
2023-05-17 20:27:40 +00:00
Houkime
1568ee68a4
feature(backup): add a restore function to restic backuper
2023-05-17 20:27:40 +00:00
Houkime
3970524bce
feat(backup): hooks
2023-05-17 20:27:40 +00:00
Houkime
7e243146db
refactor(backup): add a backup function to Backups singleton class
2023-05-17 20:27:40 +00:00
Houkime
d5881cc523
refactor(backup): add a placeholder Backups singleton class
2023-05-17 20:27:40 +00:00
Houkime
17df21964a
test(backup): try to back up!
2023-05-17 20:27:40 +00:00
Houkime
6fa72dbac1
fix(backup): add memory backup class,forgot to add to git
2023-05-17 20:27:40 +00:00
Houkime
474f04f923
feat(backup): add backuping to restic backuper
2023-05-17 20:27:40 +00:00
Houkime
a66a3f35fc
feat(backup): add in-memory backup
2023-05-17 20:27:40 +00:00
Houkime
f5066082c8
feat(backup): allow no auth
2023-05-17 20:27:40 +00:00
Houkime
934afeb531
test(backup): dummy service
2023-05-17 20:27:40 +00:00
Houkime
af6a49b0a3
test(backup): provider class selection
2023-05-17 20:27:40 +00:00
Houkime
24d170b3cb
feature(backups): copy cli logic to new restic backuper
2023-05-17 20:27:40 +00:00
Houkime
23e3d553e6
feature(backups): placeholders for the backupers and backup providers
2023-05-17 20:27:40 +00:00
Houkime
a98314bb60
feature(backups): placeholders for the modules of the new backup system
2023-05-17 20:27:40 +00:00
Houkime
6d73405118
feature(backups): add backup structures and queries
2023-05-17 20:27:40 +00:00
Houkime
740b072b07
refactor(backup): do not use config file
2023-05-17 20:27:40 +00:00
Houkime
cf3cbd179f
refactor(backup): pass key and account to exec
2023-05-17 20:27:40 +00:00
Houkime
4871958534
refactor(backup): extract restic repo
2023-05-17 20:27:40 +00:00
Houkime
060117a355
refactor(backup): extract rclone args
2023-05-17 20:27:40 +00:00
Houkime
80f2c99ba4
refactor(backup): delete unused import
2023-05-17 20:27:40 +00:00
inexcode
670911a92a
feat(dns): Add deSec as a DNS provider
2023-05-09 11:58:30 +03:00
Inex Code
5ada12d2f3
feat: Add a migration that will prepare server for 22.11 upgrade
2023-03-17 16:37:47 +03:00
Inex Code
8ce13f0ad2
feat: Add Digital Ocean as a DNS provider
2023-02-06 11:50:43 +03:00
Inex Code
4e7261c9c4
fix(dns-records): Fix DKIM parser
...
Previously API relied on client to parse DKIM DNS string, as it was a
separate endpoint. But now client blindly trusts the API, but parser
was not migrated over to the API.
2023-01-16 18:41:54 +03:00
Inex Code
e7a49e170d
fix: module models not found
2022-12-30 21:39:28 +03:00
Inex Code
24353ca56a
chore: bump API version
2022-12-30 21:10:55 +03:00
Inex Code
cb403a94bd
fix: typing
2022-12-30 21:06:16 +03:00
Houkime
3ecfb2eacb
refactor(tokens-repo): delete auth utils
2022-12-26 15:54:33 +00:00
Houkime
450ff41ebd
feat(tokens-repo): make device names unique before storage
2022-12-26 15:51:12 +00:00
Houkime
8235c3595c
refactor(tokens-repo): delete is_token_valid from auth utils
2022-12-26 15:20:58 +00:00
Houkime
7d9bccf4ec
fix(tokens-repo): make is_token_valid infallible
2022-12-26 15:18:02 +00:00
Houkime
87ea88c50a
refactor(tokens-repo): delete get token name from auth utils
2022-12-26 14:56:39 +00:00
Houkime
25326b75ca
refactor(tokens-repo): delete create token from auth utils
2022-12-26 14:55:40 +00:00
Houkime
b3d6251d11
refactor(tokens-repo): delete generare recovery key from auth utils
2022-12-26 14:54:07 +00:00
Houkime
b11e5a5f77
refactor(tokens-repo): delete recovery key quieries from auth utils
2022-12-26 14:51:37 +00:00
Houkime
69577c2854
refactor(tokens-repo): delete get_recovery_key_status from auth utils
2022-12-26 14:29:05 +00:00
Houkime
7cf295450b
refactor(tokens-repo): do not use tokens repo directly from graphql
2022-12-26 14:13:46 +00:00
Houkime
f33d5155b0
refactor(tokens-repo): delete use_new_device_auth_token from auth utils
2022-12-26 14:03:55 +00:00
Houkime
5d4ed73435
fix(tokens-repo): properly expire new device keys
2022-12-26 14:01:36 +00:00
Houkime
c037a12f4d
refactor(tokens-repo): break out _store_new_device_key()
2022-12-26 12:31:09 +00:00
Houkime
29723b9f3a
refactor(tokens-repo): delete use_mnemonic_recoverery_token from auth utils
2022-12-26 11:01:07 +00:00
Houkime
cb1906144c
refactor(tokens-repo): delete get_new_device_auth_token from auth utils
2022-12-26 10:27:10 +00:00
Houkime
3f6aa9bd06
refactor(tokens-repo): delete delete_new_device_auth_token from auth utils
2022-12-26 10:13:37 +00:00
Houkime
5dedbda41f
refactor(tokens-repo): delete get_tokens_info() from auth utils
2022-12-23 12:41:29 +00:00
Houkime
e817de6228
refactor(tokens-repo): use token repo in get_api_tokens_with_caller_flag
2022-12-23 12:29:32 +00:00
Houkime
f928ca160a
refactor(tokens-repo): use token repo in get_api_recovery_token_status action
2022-12-23 12:00:35 +00:00
Houkime
a2ac47b0f5
refactor(tokens-repo): delete delete_token from auth utils
2022-12-23 11:14:52 +00:00
Houkime
5a1f64b1e7
refactor(tokens-repo): delete is_name_exists() from auth utils
2022-12-21 17:09:49 +00:00
Houkime
22a309466e
fix(tokens-repo): fix is_name_exists() being fallible
2022-12-21 17:04:18 +00:00
Houkime
2a239e35ad
refactor(tokens-repo): delete is_token_name_pair_valid from auth
2022-12-21 16:17:56 +00:00
Houkime
20410ec790
fix(tokens-repo): fix name pair validation being able to raise a notfound error
2022-12-21 16:10:41 +00:00
Houkime
3021584adc
refactor(tokens-repo): delete refresh_token() from auth
2022-12-21 15:23:42 +00:00
Houkime
16f71b0b09
refactor(tokens-repo): use tokens-repo to create recovery token
2022-12-21 13:53:39 +00:00
Houkime
39277419ac
refactor(tokens-repo): use tokens-repo to refresh tokens
2022-12-21 13:09:51 +00:00
Houkime
d3bf867bb5
fix(tokens-repo): do not change the date on token refresh
2022-12-21 13:05:00 +00:00
Houkime
009a89fa02
refactor(tokens-repo): use token repo for graphql use_recovery_api_key
2022-12-21 10:33:06 +00:00
Houkime
a97705ef25
fix(tokens-repository): fix getting and setting recovery token expiration date
2022-12-21 10:24:05 +00:00
Houkime
ab70687c61
fix(tokens-repository) :make NONE-uses-left eternally valid and test for it
2022-12-19 12:57:32 +00:00
Houkime
5a25e2a270
feat(tokens-repo): getting stored device key
2022-12-16 13:05:06 +00:00
Houkime
0ae7c43ebf
refactor(tokens-repo): break out generic hash_as_model casting
2022-12-16 13:05:00 +00:00
Houkime
fda5d315a9
fix(tokens-repo): return device key instead of NewDeviceKey class
2022-12-16 13:04:51 +00:00
Houkime
13e84e2697
feat(tokens-repo): recovery key uses decrement
2022-12-16 13:04:47 +00:00
Houkime
eba1d01b3d
feat(tokens-repo): recovery key creation
2022-12-16 13:04:43 +00:00
Houkime
8dfb3eb936
feat(tokens-repo): fuller reset
2022-12-16 13:04:39 +00:00
Houkime
4579fec569
feat(tokens-repo): get recovery key
2022-12-16 13:04:35 +00:00
Houkime
257096084f
refactor(tokens-repo): split out date field detection
2022-12-16 13:04:26 +00:00
Houkime
bf6c230ae0
fix(tokens-repo): raise token not found when deleting nonexistent token
...
even if device name exists
2022-12-16 13:04:26 +00:00
Houkime
95e200bfc5
feat(tokens-repo): reset function
2022-12-16 13:04:19 +00:00
Houkime
9ffd67fa19
feat(tokens-repo): get new device key
2022-12-16 13:04:14 +00:00
Houkime
b98ccb88d1
refactor(tokens-repo): separate getting model dict
2022-12-16 13:04:04 +00:00
Houkime
3cb7f29593
refactor(tokens-repo): detach preparing a dict before a model cast
2022-12-16 13:03:57 +00:00
Houkime
647e02f25b
feat(tokens-repo): redis delete token
2022-12-16 13:03:46 +00:00
Houkime
ba6a5261fa
refactor(tokens-repo): redis token key func
2022-12-16 13:03:41 +00:00
Houkime
d8e3cd67e0
feat(tokens-repo): redis store token
2022-12-16 13:03:36 +00:00
Houkime
256c16fa9f
feat(tokens-repo): redis get tokens
2022-12-16 13:03:27 +00:00
Houkime
f2fa47466b
feat(tokens-repo):empty implementation of redis token repo
...
But it initializes and fails tests!
2022-12-16 13:03:27 +00:00
Houkime
ca822cdf6f
refactor(tokens-repository): move use_mnemonic_new_device_key() to abstract class
2022-12-16 13:03:27 +00:00
Houkime
2797c6f88f
fix(tokens-repository): use_mnemonic_new_device_key() now stores a token
2022-12-16 13:03:27 +00:00
Houkime
4498003aca
refactor(tokens-repository): dissect use_mnemonic_new_device_key()
2022-12-16 13:03:27 +00:00
Houkime
772c0dfc64
refactor(tokens-repository): move use_mnemonic_recovery_key() to abstract class
2022-12-16 13:03:27 +00:00
Houkime
671203e990
refactor(tokens-repository): dissect use_mnemonic_recovery_key()
2022-12-16 13:03:26 +00:00
Houkime
9a49067e53
refactor(tokens-repo): move token refreshing to parent class
2022-12-16 13:03:12 +00:00
Houkime
682cd4ae87
refactor(tokens-repo): move create_token to abstract class
2022-12-16 13:02:55 +00:00
Houkime
572ec75c39
refactor(tokens-repo): rewrite token refresh
...
now it is not json-dependent.
2022-12-16 13:02:43 +00:00
Houkime
27a7c24bc3
refactor(tokens-repo): separate token storing
2022-12-16 13:02:21 +00:00
Houkime
4e60d1d37a
refactor(tokens-repo): move token getters to abstract class
...
Not performance-optimal, but not in critical path either.
100 tokens max irl?
2022-12-16 13:02:05 +00:00
Houkime
ff264ec808
refactor(tokens-repo): simplify getting tokens
...
get_token_by_token_string and get_token_by_name are no longer tied to
json.
2022-12-16 13:01:28 +00:00
def
16e0bd56ce
refactor(repository): Tokens repository JSON backend ( #18 )
...
Co-authored-by: def <dettlaff@riseup.net>
Co-authored-by: Inex Code <inex.code@selfprivacy.org>
Reviewed-on: https://git.selfprivacy.org/SelfPrivacy/selfprivacy-rest-api/pulls/18
Co-authored-by: def <dettlaff@riseup.net>
Co-committed-by: def <dettlaff@riseup.net>
2022-12-02 14:19:57 +03:00
Houkime
063dfafc19
Jobs: fix return value of remove_by_uid
...
And add a test for said return value.
2022-11-30 17:06:43 +00:00
Houkime
5c86706f4b
Jobs: fix value access in is_busy()
...
Also added a test for is_busy() that highlighted this bug.
2022-11-30 16:41:20 +00:00
Houkime
14c4ae26ab
explicitly mark helper functions private
...
I thought about making them private class members, but that would get
unreadable and do more harm than good.
2022-11-30 16:22:46 +00:00
Houkime
106a083ca2
jobs: simplify reset
...
Also ups test coverage
2022-11-30 14:47:56 +00:00
Inex Code
57794c9535
style(graphql): Add missing comma
...
\
2022-11-28 15:49:48 +03:00
Houkime
2e9cdf15ab
Autostart a redis instance in nix shell.
...
As a part of test environment, an unprivileged redis server is started on localhost:6379.
Redis connection pool detects when it is run in a development nix shell
and uses this port instead of a production unix socket. This way, redis
tests pass even on computers without redis installed.
2022-11-28 14:38:21 +02:00
Houkime
d6ef01c0c7
Add TTL to storage of finished or failed jobs
...
Defaulting to 10 days.
2022-11-23 16:29:50 +00:00
Houkime
244851c7cc
jobs: remove 'jobs' list, and use 'jobs:' prefix
...
Less complexity, easier to add redis-native TTL
2022-11-23 15:04:39 +00:00
Houkime
5afa2338ca
Migrate Jobs to redis
...
Jobs API shall now use redis to store and retrieve jobs. This will make
it possible to add pubsub for jobs updates. For now it uses blocking api
of redis.
2022-11-23 14:43:06 +00:00
Houkime
f7b7e5a0be
migrate Jobs to redis
2022-11-16 13:54:54 +00:00
Houkime
41e5f89b7b
migrate backblaze settings to new json format
...
And adjust methods and tests
2022-11-02 13:52:33 +00:00
Houkime
a723311b36
reroute system provider query
2022-11-02 13:52:33 +00:00
Houkime
dd15e0ab65
reroute dns provider query
2022-11-02 13:52:33 +00:00
Houkime
9540e26ce1
add digitalocean and backblaze options
2022-11-02 13:52:33 +00:00
Houkime
7d58eb3d92
fix wrong cloudflare field key
2022-11-02 13:52:33 +00:00
Houkime
decb98afe2
add providers.py to the list of migrations
...
Makes providers.py actually run.
2022-11-02 13:52:33 +00:00
Houkime
b0c26b876a
add providers migration
2022-11-02 13:52:33 +00:00
inexcode
19a4ec5377
feat: Add redis pool singleton
2022-10-28 11:24:45 +03:00
inexcode
8cdacb73dd
refactor: Use singleton metaclass for all singleton classes
2022-10-27 18:31:52 +03:00
Inex Code
0a09a338b8
Register migration
2022-09-22 19:41:48 +03:00
Inex Code
7a1e8af8fe
Catch error during binds migration and delete the job if it is stuck during restart
2022-09-22 19:38:59 +03:00
Inex Code
e387e30983
Fix handling of FileNotFoundError during size calculation
2022-09-22 18:34:33 +03:00
Inex Code
582e38452d
Fix Gitea moving
2022-09-19 03:50:43 +03:00
Inex Code
6bbceca917
Fix ownership issue
2022-09-19 03:04:57 +03:00
Inex Code
9a339729b7
Fix Generic service mover success output
2022-09-19 02:57:22 +03:00
Inex Code
a7208c1a91
Fix generic service mover being unable to move
2022-09-19 02:43:06 +03:00
Inex Code
49571b6ef2
Fix generic service mover being unable to move to sda1
2022-09-19 02:32:29 +03:00
Inex Code
9489180363
Fix job deletion
2022-09-09 17:51:41 +03:00
Inex Code
97acae189f
Bump API version
2022-09-09 17:46:58 +03:00
Inex Code
d7cba49c4a
Fix job uid generation
2022-09-09 17:42:40 +03:00
inexcode
32278e9063
Bind to 127.0.0.1 instead of 0.0.0.0
2022-08-26 21:01:14 +04:00
inexcode
4f2332f8a0
Add permission check for deleting job
2022-08-25 22:42:37 +04:00
Inex Code
7935de0fe1
Migrate to FastAPI ( #13 )
...
Co-authored-by: inexcode <inex.code@selfprivacy.org>
Reviewed-on: https://git.selfprivacy.org/SelfPrivacy/selfprivacy-rest-api/pulls/13
2022-08-25 20:03:56 +03:00
def
206589d5ad
add system nixos tasks
2022-08-01 21:32:20 +02:00
def
337cf29884
Add GraphQJ user and ssh management ( #12 )
...
Co-authored-by: Inex Code <inex.code@selfprivacy.org>
Reviewed-on: https://git.selfprivacy.org/SelfPrivacy/selfprivacy-rest-api/pulls/12
Co-authored-by: def <dettlaff@riseup.net>
Co-committed-by: def <dettlaff@riseup.net>
2022-08-01 13:40:40 +03:00
Inex Code
bec99f29ec
Add a jobs singleton
2022-07-30 18:24:21 +03:00
Inex Code
8ea6548710
Fix typing
2022-07-30 18:01:51 +03:00
Inex Code
67c8486c9b
Add more fields to GraphQL storage query
2022-07-30 17:48:33 +03:00
inexcode
1f64a76723
Fix typo
2022-07-26 15:52:28 +03:00
inexcode
e3245cd26a
Add mount volume migration
2022-07-26 15:33:44 +03:00
inexcode
a6fe72608f
Bytes from int to str
2022-07-25 17:17:57 +03:00
inexcode
5532114668
Add volume management
2022-07-25 17:08:31 +03:00
Inex Code
26f9393d95
Implement change system settings
...
Co-authored-by: Detlaff <dettlaff@riseup.net>
2022-07-12 16:24:29 +03:00
Inex Code
e3354c73ef
Change datetime formats, more tests
2022-07-08 18:28:08 +03:00
def
9bd2896db8
fix recovery tests
2022-07-07 15:53:19 +02:00
Inex Code
5711cf66b0
Api fixes
2022-07-05 15:11:41 +03:00
Inex Code
376bf1ef77
Add more tests
2022-07-05 08:14:37 +03:00
Inex Code
503a39f390
API keys graphql tests
2022-06-29 20:39:46 +03:00
Inex Code
45c3e3003d
hhh
2022-06-24 21:18:21 +03:00
Inex Code
80e5550f7d
add basic system getters
2022-06-24 21:14:20 +03:00
Inex Code
c6a3588e33
add CORS
2022-06-24 20:25:49 +03:00
Inex Code
07e723dec8
more precise permission control
2022-06-24 20:12:32 +03:00
Inex Code
517a769e5b
add auth check
2022-06-24 20:08:58 +03:00
Inex Code
e2ac429975
parser
2022-06-24 19:50:30 +03:00
Inex Code
71c70592b2
fixes
2022-06-24 19:35:42 +03:00
Inex Code
6ca723867e
once again
2022-06-24 19:28:58 +03:00
Inex Code
766edc657a
resolve circular import
2022-06-24 19:24:10 +03:00
Inex Code
9b25bc0d53
Add api status resolvers
2022-06-24 19:17:03 +03:00
Inex Code
17b8334c6e
typo
2022-06-24 18:23:09 +03:00
Inex Code
01dea50c1f
tmp allow access to graphql without auth
2022-06-24 18:21:13 +03:00
Inex Code
28db251f1f
rollback the rename
2022-06-24 18:13:54 +03:00
Inex Code
a6ad9aaf90
rename folder
2022-06-24 18:02:40 +03:00
Inex Code
fc971292c2
add __init__.py to resolvers
2022-06-24 17:49:52 +03:00
Inex Code
99beee40d6
Add integration with flask
2022-06-24 16:05:18 +03:00
inexcode
75e3143c82
strawberry init
2022-06-24 15:26:51 +03:00
Inex Code
c30e062210
Fix date formats
2022-05-31 11:46:58 +03:00
Inex Code
401dff23fb
bitwarden_rs -> vaultwarden
2022-05-26 18:40:07 +03:00
Inex Code
1ac5f72433
Fix API to allow returning user list with the master user
2022-05-12 18:55:57 +03:00
Inex Code
36bf1a80bf
Fix username length check
2022-05-02 14:48:55 +03:00
Inex Code
3044557963
Fix formatting
2022-05-02 10:59:04 +03:00
Inex Code
f31b1173a2
add migration to init
2022-04-29 14:27:13 +03:00
Inex Code
ac220c6968
some logging
2022-04-29 14:24:25 +03:00
Inex Code
f2c73853bc
Add migration to selfprivacy nix channel
2022-04-28 16:22:13 +03:00
Inex Code
6cd896f977
Delete rootKeys field instead of adding empty element
2022-03-20 19:48:00 +03:00
Inex Code
4cbb08cb6e
Fix root key deletion to not make system rebuild unpossible
2022-03-20 19:32:31 +03:00
inexcode
50a82a065e
Cover the case when uses is less than 1
2022-02-16 17:10:29 +03:00
inexcode
c22fe9e8bd
Linting
2022-02-16 16:03:38 +03:00
inexcode
f228db5b29
Bump version to 1.2.0
2022-02-16 15:50:12 +03:00
inexcode
2235358827
Auth module coverage and bug fixes
2022-02-16 15:49:10 +03:00
inexcode
98e60abe74
When returning the list of tokens, indicate which one is caller's
2022-02-16 09:40:31 +03:00
Inex Code
2ec9c8a441
Mark field as required in swagger docs
2022-02-02 14:51:48 +02:00
Inex Code
fbb82c87e8
Add new device token deletion endpoint
2022-01-27 14:12:49 +02:00