Commit graph

372 commits

Author SHA1 Message Date
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
Inex Code 40501401b4 More auth tests 2022-01-24 22:01:37 +02:00
Inex Code 5140081cdb Some test and bupfixes 2022-01-18 17:20:47 +02:00
Inex Code 759e90f734 Formatting and fix swagger test 2022-01-17 13:29:54 +02:00
Inex Code ade7c77754 Fix bugs 2022-01-17 13:28:17 +02:00
Inex Code fe86382819 Fix migration to run 2022-01-14 09:24:33 +02:00
Inex Code d7fe7097e6 Remove redundant security strings from swagger 2022-01-14 10:08:41 +03:00
Inex Code ea696d0f0e Inital auth work, untested 2022-01-14 08:38:53 +03:00
Inex Code aa76f87828 Allow user to disable all migrations entirely 2022-01-11 08:57:14 +03:00
Inex Code 6c0af38e27 Move is_migration_needed call under try block too 2022-01-11 08:54:57 +03:00
Inex Code 355fc68232 Fix newline 2022-01-11 08:52:43 +03:00
Inex Code 07cf926e79 Fix migration crashes. 2022-01-11 08:52:15 +03:00
Inex Code 650032bdab Formatting 2022-01-11 08:41:25 +03:00
Inex Code 0c61c1abb5 Migrations mechanism and fix to the nixos-config branch 2022-01-11 08:36:11 +03:00
Inex Code 13cef67204 More unit tests and bugfixes (#7)
Reviewed-on: https://git.selfprivacy.org/SelfPrivacy/selfprivacy-rest-api/pulls/7
Co-authored-by: Inex Code <inex.code@selfprivacy.org>
Co-committed-by: Inex Code <inex.code@selfprivacy.org>
2022-01-10 22:35:00 +02:00
Inex Code f24323606f Fix restic to hide files instead of deleting 2021-12-08 07:45:27 +03:00
Inex Code 710925f3ea Linting 2021-12-06 21:35:41 +03:00
Inex Code f4288dacd6 debugging 2021-12-06 12:07:03 +03:00
Inex Code 340b50bb0d Remove locks 2021-12-06 12:00:53 +03:00
Inex Code f68bd88a31 Restic controller 2021-12-06 09:48:29 +03:00
Inex Code dc4c9a89e1 Make list backups init backups 2021-12-02 23:08:25 +03:00
Inex Code 71fc93914a Update backup endpoints 2021-12-02 18:06:23 +03:00
Inex Code c53cab7b88 Move PullRepositoryChanges to system resource 2021-12-01 17:51:55 +03:00
Inex Code 077c886f40 Add endpoint to update b2 keys 2021-12-01 17:51:38 +03:00
Inex Code 69eb91a1ea Reformat code with Black 2021-12-01 00:53:39 +03:00
Inex Code 8e0a5f5ec0 Merge branch 'master' of git.selfprivacy.org:SelfPrivacy/selfprivacy-rest-api into system-configuration 2021-11-30 23:30:26 +03:00
Illia Chub 1385835a7f Removed useless imports from update module 2021-11-30 07:12:04 +02:00
Illia Chub d1fdaf186d Mitigated possible directory escape scenario 2021-11-30 07:10:00 +02:00
Illia Chub fb98fd1e60 Implemented update check endpoint 2021-11-30 07:04:06 +02:00
Inex Code 245964c998 First wave of unit tests, and bugfixes caused by them 2021-11-29 22:16:08 +03:00