NaiJi
d934a6a9cb
Refactor graphql api, separate by logic
2022-08-26 22:28:01 +03:00
NaiJi
9526035176
Fix volume size calculation
2022-08-26 19:46:30 +03:00
NaiJi
a698d3e7b2
Add padding to About page
2022-08-26 06:41:16 +03:00
NaiJi
6014e385bc
Implement ServerJobCard
2022-08-26 05:34:25 +03:00
NaiJi
37d5ee9913
Implement ServerJob cubit
2022-08-25 02:45:02 +03:00
NaiJi
7bbdaf2ebe
Last changes on storage pages and job backend logic
2022-08-24 08:35:49 +03:00
NaiJi
d2c3d28b0f
Merge from develop into graphql
2022-08-08 13:33:55 +03:00
NaiJi
c230037351
Implement data_migration page and logic
2022-08-03 05:25:33 +03:00
NaiJi
96c7d7966a
Update cubit for volume management and graphql
2022-08-01 02:10:37 +03:00
NaiJi
c747dcd4ae
Implement Server Storage card for provider menu
...
Co-authored-by: Inex Code <inex.code@selfprivacy.org>
2022-07-29 08:38:21 +03:00
NaiJi
c56a0f5976
Implement getApiTokens for graphql API map
2022-07-25 19:08:46 +03:00
NaiJi
7ead9a29ea
Implement basic graphql api map structure
2022-07-25 17:06:55 +03:00
NaiJi
d8ea528621
Add magic sleep before deleteVolume on creation failure
...
It seems Hetzner fails to accept our deleteVolume request so quickly after failing. We need to wait for about 10 seconds, I guess. The same magic sleep happens on deleteServer pack of requests. Please have patience...
2022-07-25 03:03:19 +03:00
NaiJi
dab2c569ec
Fix installation Timer errors
...
Co-authored-by: Inex Code <inex.code@selfprivacy.org>
2022-07-22 19:22:10 +03:00
NaiJi
dac310f913
Implement Dns Provider Api Abstractions
2022-07-14 16:34:08 +03:00
NaiJi
9993b09e7f
Turn VolumeApiProvider into a mixin
2022-07-13 14:58:23 +03:00
NaiJi
37b7e9f839
Implement Provider Api Abstractions
2022-07-12 15:54:16 +03:00
NaiJi
5fd8a68597
Change volume size from Gb to Byte
2022-06-28 21:06:52 +03:00
NaiJi
0a919907c8
Implement hetzner volumes cubit
2022-06-27 10:07:11 +03:00
NaiJi
352351663f
Implement endpoints for hetzner volumes
2022-06-24 00:34:09 +03:00
Inex Code
4afd40f5da
Merge branch 'develop' into naiji-dev
2022-06-23 12:11:59 +03:00
NaiJi
7e2319bf21
Force domain to lowercase on recovery pages
2022-06-22 22:42:38 +03:00
NaiJi
0feb9bc299
Return to main page on backbutton press for some recovery pages
2022-06-15 07:58:02 +03:00
NaiJi
6a22e2db6f
Fix revert routing errors
2022-06-15 06:23:54 +03:00
NaiJi
313cfc7187
Bug fix error processing for installation cubits
2022-06-15 04:55:45 +03:00
NaiJi
f370a7fc91
Fix minor recovery routing problem
2022-06-10 18:15:43 +03:00
Inex Code
18d0c2c40f
Bug fixes and linting
2022-06-10 00:13:06 +03:00
Inex Code
bf03f61668
Bump version
2022-06-09 19:49:57 +03:00
Inex Code
3c3cb376e2
Fix null check on DNS check
2022-06-09 19:15:53 +03:00
NaiJi
3fbdc05469
Minor flow bugfixes
2022-06-09 09:51:29 +03:00
NaiJi
43411adf2c
Bugfix About application page for desktop
2022-06-09 07:36:22 +03:00
NaiJi
80e0488700
Minor bug fixing
...
Co-authored-by: Inex Code <inex.code@selfprivacy.org>
2022-06-07 22:59:15 +03:00
NaiJi
2ac8e4366b
Linting!
...
Co-authored-by: Inex Code <inex.code@selfprivacy.org>
2022-06-06 01:40:34 +03:00
Inex Code
4db0413c42
Linting
2022-06-05 22:36:32 +03:00
NaiJi
5909b9a3e6
Minor UI fixes on recovery key pages
2022-06-01 17:29:37 +03:00
Inex Code
e8d5ecccf6
Add devices screen
2022-05-31 17:30:44 +03:00
Inex Code
7810c2a279
Fix recovery flow
2022-05-31 17:30:35 +03:00
Inex Code
8ec3b8c3e3
Finish recovery key screen
2022-05-31 02:06:08 +03:00
NaiJi
1db8e9556e
Fix UI colors and such :)
...
Co-authored-by: Inex Code <inex.code@selfprivacy.org>
2022-05-30 19:55:09 +03:00
NaiJi
ead19d2210
Finish recovery key workflow and pages
...
Co-authored-by: Inex Code <inex.code@selfprivacy.org>
2022-05-30 16:55:52 +03:00
Inex Code
b60fb19ecc
some ui fixes
2022-05-30 16:49:42 +03:00
NaiJi
72ef16c6f6
Implement recovery key pages and device cubit
...
Co-authored-by: Inex Code <inex.code@selfprivacy.org>
2022-05-26 04:02:06 +03:00
NaiJi
5dcaa060a1
Linting
...
Co-authored-by: Inex Code <inex.code@selfprivacy.org>
2022-05-25 15:21:56 +03:00
Inex Code
14acfdec6b
Linting
2022-05-24 21:55:39 +03:00
NaiJi
edce25ec55
Hot bug fixing of recovery flow
...
Co-authored-by: Inex Code <inex.code@selfprivacy.org>
2022-05-24 20:45:13 +03:00
Inex Code
a096e7e732
Add recovery_key_cubit.dart
2022-05-24 19:11:51 +03:00
NaiJi
7344858e86
Implement recovery backblaze page
2022-05-24 11:06:58 +03:00
NaiJi
ac93a384e9
Implement recovery cloudflare page
2022-05-24 10:55:51 +03:00
Inex Code
fa6f74e884
Finish recovery flow cubit
2022-05-23 17:21:34 +03:00
NaiJi
eddeac57d6
Implement server selection pages
...
Co-authored-by: Inex Code <inex.code@selfprivacy.org>
2022-05-21 01:56:50 +03:00
NaiJi
eaa1ba143c
Implement pages for server confirmation on restoring access
...
Co-authored-by: Inex Code <inex.code@selfprivacy.org>
2022-05-19 20:43:25 +03:00
NaiJi
6fd7f9400d
Implement recovery by old token pages with mock .md
...
Co-authored-by: Inex Code <inex.code@selfprivacy.org>
2022-05-19 17:26:57 +03:00
NaiJi
d8568fc82f
Merge branch 'flutter-3' into naiji-dev
2022-05-19 12:09:31 +03:00
inexcode
df40a09419
Add cubit methods to try recover the server
2022-05-18 14:21:11 +03:00
inexcode
d2553b0d08
Add auth functions to server_installation_repository.dart
2022-05-18 13:39:11 +03:00
NaiJi
2d96b4505e
Disable unavailable functionality when server is not created
...
- Remove create and upgrade server jobs when server is not there
- Disable root SSH panel page when server is not there
2022-05-18 12:07:14 +03:00
inexcode
dd77b99ac8
Rename Bnames boxes names to include the Box
2022-05-18 11:27:36 +03:00
NaiJi
20f6e8156c
Add recovery token pages
2022-05-18 02:18:26 +03:00
Inex Code
bf79fb1adf
- Refactor Hive boxes
...
- Delete SSH generation leftovers
- Migrate users box to an encrypted box
2022-05-17 23:08:28 +03:00
NaiJi
19bc780db1
Implement async validation of domain field on recovering access
...
Co-authored-by: Inex Code <inex.code@selfprivacy.org>
2022-05-17 19:06:24 +03:00
NaiJi
0d0a3a4fee
Refactor App Config Cubit infrastrucute
...
Co-authored-by: Inex Code <inex.code@selfprivacy.org>
2022-05-17 16:31:34 +03:00
NaiJi
93215d90fb
Implement fallback recovery method page
...
Co-authored-by: Inex Code <inex.code@selfprivacy.org>
2022-05-17 16:30:05 +03:00
NaiJi
7a719f15ce
Implement first recovery device method page
...
Co-authored-by: Inex Code <inex.code@selfprivacy.org>
2022-05-17 15:45:20 +03:00
NaiJi
ee53590ba0
Implement recovery method select page
...
Co-authored-by: Inex Code <inex.code@selfprivacy.org>
2022-05-17 15:33:30 +03:00
NaiJi
a56af9dbec
Fix desktop theme
2022-05-17 02:42:46 +03:00
NaiJi
f46ca7ad13
Merge branch 'flutter-3' into naiji-dev
2022-05-17 01:42:25 +03:00
Inex Code
b4145dc5c8
First steps to move to Material You
2022-05-17 01:41:00 +03:00
NaiJi
10488d6832
Fix application failure on cloudflare 403 response
...
Check error response and show modal dialogue if domain couldn't be registered
2022-05-17 01:16:56 +03:00
Inex Code
8b5bf24f3a
Merge branch 'dynamic-theming' into flutter-3
...
# Conflicts:
# lib/main.dart
# pubspec.lock
# pubspec.yaml
2022-05-16 23:44:12 +03:00
Inex Code
cc91b14b44
Migrate to flutter 3
2022-05-16 23:30:14 +03:00
NaiJi
129c1bb4c6
Refactor infrastructure
...
Co-authored-by: Inex Code <inex.code@selfprivacy.org>
2022-05-14 05:54:40 +03:00
NaiJi
4a42733d31
Refactor infrastructure: cubits and endpoints
...
Co-authored-by: Inex Code <inex.code@selfprivacy.org>
2022-05-13 16:57:56 +03:00
NaiJi
01b1f7462d
Implement recovery domain page frontend
2022-05-11 21:37:08 +03:00
NaiJi
ce3e046f5a
Improve server endpoints, add recovery page
...
- Handle Dio error codes properly to avoid exceptions
- Improve en and ru assets
- Improve dns recordings failure handling
- Add recovery button to initializing page
- Add recovery pages group
2022-05-10 23:42:33 +03:00
NaiJi
31be961dd0
Implement server endpoints for tokens
...
get /auth/recovery_token
post /auth/recovery_token
post /auth/recovery_token/use
post /auth/new_device/authorize
post /auth/new_device
delete /auth/new_device
get /auth/tokens
post /auth/tokens
delete /auth/tokens
2022-05-10 02:16:36 +03:00
NaiJi
8d6cbfdfc9
Fix docstyle comments
2022-05-04 22:32:24 +03:00
NaiJi
4c7cf05578
Refactor FieldCubit creation for user forms
...
Move all cubit fields to a special factory which encapsulates all logic related to their default properties, which leaves possibility for future dependency inversion on that factory or future factories of other cubit fields (in case we will have to replace it with other implementations).
2022-05-04 19:58:47 +03:00
Inex Code
9cec5e901a
hardcode dark theme on linux for now
2022-05-03 15:18:06 +03:00
Inex Code
c5fa712ef0
Test custom colors
2022-05-03 13:45:10 +03:00
NaiJi
4c99579f13
Fix username validation and exception handling
...
1. Refactor string validation classes
2. Rename string validation assets for length
3. Improve exception handling when server is not able to create requested server
2022-05-02 14:56:46 +03:00
Inex Code
4ddde34b47
Fix server deletion
2022-04-29 13:53:58 +03:00
NaiJi
834cddfe13
Catch wakelock exception on desktop
2022-04-29 13:45:15 +03:00
Inex Code
cca55f82cc
Encode password to base64 during server creation
2022-04-06 20:15:59 +03:00
Inex Code
bef625a934
Update breaking fl_chart dependency
2022-04-05 18:50:47 +03:00
NaiJi
8d884af594
Fix users cubit, add changelog for 0.5.0
2022-04-03 22:54:18 +03:00
Inex Code
85235a2e7c
Add SSH key adding and deleting
2022-03-23 17:07:52 +03:00
inexcode
d240e493b1
Add user synchronization and SSH keys screen
2022-03-03 20:38:30 +03:00
inexcode
e4bdd47848
Merge branch 'feature/service-configurations' into dkim
...
# Conflicts:
# lib/logic/api_maps/hetzner.dart
# lib/logic/api_maps/server.dart
# lib/logic/cubit/backups/backups_cubit.dart
# lib/logic/cubit/forms/initializing/cloudflare_form_cubit.dart
# lib/logic/models/job.dart
# lib/ui/pages/initializing/initializing.dart
# lib/ui/pages/providers/providers.dart
# pubspec.lock
# pubspec.yaml
2022-02-18 02:37:15 +03:00
inexcode
e925a1897a
Fix some typos
2022-02-16 10:28:29 +03:00
inexcode
914d56ff87
DNS records cubit and screen
2022-02-16 10:09:53 +03:00
inexcode
83a2d19e37
Introduce new brand screen, use it for backups
2022-02-16 10:01:05 +03:00
inexcode
8de33ea19b
Fix typo
2022-02-10 12:50:37 +03:00
kherel
7eff0968d0
update
2022-02-08 22:01:08 +01:00
inexcode
d06e8976c5
Fix infect stage and DKIM
2022-02-08 09:59:35 +03:00
inexcode
a0edbd636d
Refactor DNS checks
2022-02-08 09:59:19 +03:00
kherel
83ff387998
update
2022-02-07 08:53:13 +01:00
Inex Code
f6508dfcad
Attempts at string escaping
2022-02-02 12:53:21 +00:00
Inex Code
0bc3d9f31c
Add DKIM key creation
2022-02-01 01:56:05 +00:00
Inex Code
88d5dbf010
Add more escaping to server infection
2022-02-01 01:55:09 +00:00
kherel
9566a6ad10
update
2022-01-25 18:02:32 +01:00
Inex Code
3cd187e416
Enforce alphanumeric bucket id
2022-01-25 18:02:31 +01:00
Inex Code
2dfb92f650
Fix wrong server name escaping symbol
2022-01-25 18:02:31 +01:00
Inex Code
72100e483a
Replace all non-alphanumeric symbols during hetzner creation
2022-01-25 18:02:31 +01:00
Inex Code
de13b09f23
Add gifs to illustrate API token instructions
2022-01-25 18:02:31 +01:00
Inex Code
8622ed30f1
Add more instructions to UI
2022-01-25 18:02:31 +01:00
Inex Code
5957e5720b
Add user deletion (for real)
2022-01-25 18:02:31 +01:00
Inex Code
e72df08453
Show that we are doing something when upgrading/restarting server
2022-01-25 18:02:31 +01:00
Inex Code
3a63e75e8e
Fix nixos-infect link to use master, not rolling
2022-01-25 18:02:31 +01:00
Inex Code
893c5bb5c0
Enforce alphanumeric bucket id
2021-12-27 07:40:48 +00:00
Inex Code
e7e9209cce
Fix wrong server name escaping symbol
2021-12-26 21:41:53 +02:00
Inex Code
30937740b6
Replace all non-alphanumeric symbols during hetzner creation
2021-12-25 12:56:44 +00:00
Inex Code
c937cfdbb4
Add gifs to illustrate API token instructions
2021-12-23 14:27:19 +00:00
Inex Code
85a27e8ee2
Add more instructions to UI
2021-12-23 13:52:12 +00:00
Inex Code
4ca873e794
Add user deletion (for real)
2021-12-20 15:25:31 +00:00
Inex Code
9b2fe905e6
Show that we are doing something when upgrading/restarting server
2021-12-20 15:03:50 +00:00
Inex Code
1b42d3a382
Fix nixos-infect link to use master, not rolling
2021-12-16 14:26:40 +03:00
Inex Code
f633fecd57
Fix backup list parsing
2021-12-09 03:44:05 +00:00
Inex Code
2b8c009ef1
Add button to force refetch backups list
2021-12-09 03:35:15 +00:00
Inex Code
35c1eea7f0
Fix error when error is null
2021-12-09 06:23:27 +03:00
Inex Code
b40bea63d1
Backups and server upgrade
2021-12-06 18:31:19 +00:00
Inex Code
6011d6fdce
Hotfix SPCVE-0001
2021-11-18 19:10:40 +00:00
Kherel
139843dee8
fix
2021-10-13 23:49:24 +02:00
kherel
43732fa866
Merge branch 'no-hash' into fix-deleting-server
2021-10-12 00:14:31 +03:00
Kherel
eac9078fad
fix
2021-10-11 23:10:04 +02:00
Kherel
ba8b19193d
update
2021-10-07 18:52:06 +02:00
Kherel
3bc9b23e8f
update
2021-10-07 18:52:06 +02:00
Kherel
4ae77f33c8
fix
2021-10-05 22:43:12 +02:00
tester.nicolai
5c01d6a375
fixed RU app text
2021-10-05 22:38:10 +02:00
Kherel
2c4d0ea7d1
fix
2021-09-29 20:28:47 +02:00
kherel
3e7d003f21
service-states ( #65 )
...
Co-authored-by: Kherel <kherel@gmail.com>
Reviewed-on: https://git.selfprivacy.org/kherel/selfprivacy.org.app/pulls/65
Co-authored-by: kherel <kherel@gmail.com>
Co-committed-by: kherel <kherel@gmail.com>
2021-09-29 16:08:19 +03:00
Kherel
4942f67f37
update
2021-09-15 16:37:22 +02:00
Kherel
d0023e5718
update
2021-09-15 15:15:54 +02:00
Kherel
90d64d8f51
update
2021-09-02 21:32:07 +02:00
Kherel
26607251d9
update
2021-08-29 17:02:51 +02:00
Kherel
84e9259ec2
update
2021-08-29 15:54:28 +02:00
Kherel
94a0e22b15
update
2021-08-29 11:50:24 +02:00
Kherel
1a8a4e7270
update
2021-08-18 12:44:46 +02:00
Kherel
1202e4ad53
change password generator
2021-08-18 11:36:40 +02:00
Kherel
5dea5234de
fix
2021-07-29 14:09:10 +02:00
Kherel
3a5353dbf4
add validation
2021-07-29 11:34:26 +02:00
Kherel
933e8ffb90
fix
2021-07-29 07:29:33 +02:00
Kherel
1c352fd771
update
2021-07-29 07:28:46 +02:00
Kherel Kechil
f53ad044c1
finish
2021-07-29 07:24:42 +02:00
Kherel
21611e63c7
commit
2021-06-20 23:08:52 +02:00
Kherel
9e8fdf2965
update
2021-06-08 20:52:44 +02:00
Kherel
d3f494adeb
update
2021-05-25 23:53:54 +02:00
Kherel
234515477c
fix
2021-05-17 14:46:48 +02:00
Kherel
e5758aa2bf
fix
2021-05-17 14:40:06 +02:00
Kherel
d4f315214b
add reverse-dns
2021-05-17 14:38:38 +02:00
Kherel
8ccb4f18f6
done
2021-04-22 20:04:24 +02:00
Kherel
5b83b493f4
fix
2021-04-20 13:44:33 +02:00
Kherel
536ef4b717
add salt to hash
2021-04-19 14:37:51 +02:00
ilchub
695c91cba7
Changed infect script source from 'preproduction' to 'master'
2021-04-16 02:22:56 +03:00
Kherel
3676dc50f0
fix black theme
2021-04-10 12:06:29 +02:00
Kherel
6726c87de7
fix
2021-04-10 11:51:36 +02:00
Kherel
cd49f9fb45
add charts
2021-04-10 05:04:23 +02:00
Illia Chub
e4d5a4e01f
Removed debug information
2021-04-01 16:03:04 +03:00
Illia Chub
10aeb6ba30
Incremented version number
2021-04-01 15:19:20 +03:00
Kherel
29b08b111a
update
2021-03-31 16:33:58 +02:00
Kherel
aabad65698
update
2021-03-31 13:37:39 +02:00
Kherel
ae3ec309cb
add volume
2021-03-30 19:38:40 +02:00
Kherel
275ba21a47
fix
2021-03-26 14:53:21 +01:00
Kherel
804147b8d6
update
2021-03-26 14:38:39 +01:00
Kherel
bc6c55b528
change http client
2021-03-26 00:30:34 +01:00
Kherel
20cca91e00
before change api_client
2021-03-25 21:09:56 +01:00
Kherel
7d12b85f89
fix markup
2021-03-25 09:54:39 +01:00
Kherel
e4f154b4f5
fix
2021-03-25 09:46:07 +01:00
Kherel
3c683bef63
fix
2021-03-25 09:32:00 +01:00
Kherel
97c6fa435d
fix
2021-03-24 14:12:09 +01:00
Kherel
6a9e72dc4c
fix
2021-03-23 21:00:17 +01:00
Kherel
33f8f033c3
update
2021-03-23 20:57:44 +01:00
Kherel
bb6de7ff67
update
2021-03-23 20:50:11 +01:00
Kherel
481a6e3d47
update
2021-03-23 20:21:42 +01:00
Illia Chub
971d8bdbdc
Set fallback locale to en
2021-03-18 17:02:39 +02:00
Kherel
10fdb019ff
update
2021-03-18 13:24:30 +01:00
Kherel
dce4c41fd1
update
2021-03-18 08:26:54 +01:00
Kherel
ab2893a075
update
2021-03-18 01:55:38 +01:00
Kherel
0ec549042c
update
2021-03-15 16:39:44 +01:00
Kherel
afd569ba96
update packages:before main migration
2021-03-14 20:18:51 +01:00
Kherel
edadf10d05
update flutter
2021-03-14 19:44:35 +01:00
Kherel
6d43cb699b
update
2021-02-17 17:20:09 +01:00
Kherel
0f35400eaa
update
2021-02-17 15:30:02 +01:00
Illia Chub
b469fdeda7
Added database password reference
2021-02-17 13:36:20 +02:00
Kherel
4f6137eaa1
update
2021-02-16 19:48:15 +01:00
Kherel
20166647ea
update
2021-02-15 19:58:29 +01:00
Kherel
a07a7247f5
update
2021-02-03 21:26:38 +01:00
Kherel
25a386d511
update
2021-02-03 20:51:07 +01:00
Kherel
3de01fe12b
push
2021-02-02 19:24:56 +01:00
Kherel
7bafaa66be
update
2021-01-27 20:54:37 +01:00
Kherel
9fe307b7e7
update
2021-01-27 19:33:00 +01:00
Kherel
0a99be6103
add vpn
2021-01-27 09:33:26 +01:00
Kherel
4936b157a1
update
2021-01-22 07:23:56 +01:00
Kherel
80213abf9b
update
2021-01-21 22:01:42 +01:00
Kherel
7de50dd237
update
2021-01-21 08:35:38 +01:00
Kherel
618e426333
update
2021-01-19 13:14:02 +01:00
Kherel
6006564820
update
2021-01-19 13:12:10 +01:00
Kherel
21215685dd
update
2021-01-19 13:05:40 +01:00
Kherel
4bfc3058a5
update
2021-01-19 09:38:02 +01:00
Kherel
c7d45fbf76
update
2021-01-18 11:21:55 +01:00
Kherel
78e5e11f0d
fix
2021-01-18 10:40:52 +01:00
Kherel
a77c11f06c
fix
2021-01-18 10:40:14 +01:00
Kherel
0c9dabc5cb
Add response data in logger message
2021-01-18 10:38:21 +01:00
Kherel
08df778346
update
2021-01-15 13:24:09 +01:00
Kherel
5e13112486
update
2021-01-14 22:48:05 +01:00
Kherel
853e1fdbdd
update
2021-01-14 19:45:10 +01:00
Kherel
cf6e0b3495
add error observer
2021-01-13 17:45:46 +01:00
Kherel
a8262229c0
update
2021-01-08 13:37:28 +01:00
Kherel
0ed5fbdd2e
update
2021-01-06 20:25:53 +01:00
Kherel
9a749cf006
update
2021-01-06 18:35:57 +01:00
Kherel
6613949d12
update
2020-12-30 15:13:25 +01:00
Kherel
91aa2b860b
update provider and bottom modal sheet
2020-12-10 21:33:19 +01:00
Kherel
600df97abf
updage color generator
2020-12-08 20:47:50 +01:00
Kherel
9a8c16344f
add dark theme
2020-12-08 20:26:51 +01:00
Kherel
7ebfc2c048
update project structure
2020-12-06 08:46:12 +01:00
Kherel
a112d873eb
update onboarding and providers
2020-12-06 08:28:31 +01:00
Kherel
80dee9dbab
add users
2020-12-03 17:52:53 +01:00
Kherel
4875e3ee07
add more
2020-12-02 10:16:23 +01:00
Kherel
90df52e895
add service page
2020-12-01 20:08:19 +01:00
Kherel
cd02c75e2f
add localizations
2020-12-01 13:26:29 +01:00
Kherel
b626b05a1a
update first page
2020-11-30 11:03:55 +01:00
Kherel
cbd00e87d3
add navigation
2020-11-29 21:07:46 +01:00