From 172253902dbb096dfdbab9779aaf61eb2abd4902 Mon Sep 17 00:00:00 2001 From: NaiJi Date: Tue, 26 Sep 2023 16:18:06 -0300 Subject: [PATCH 1/4] feat(ssh): Add support for ECDSA SSH keys - Resolve https://git.selfprivacy.org/SelfPrivacy/selfprivacy.org.app/issues/319 --- assets/translations/en.json | 2 +- lib/logic/cubit/forms/user/ssh_form_cubit.dart | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/assets/translations/en.json b/assets/translations/en.json index 82f682ba..d6c03a87 100644 --- a/assets/translations/en.json +++ b/assets/translations/en.json @@ -83,7 +83,7 @@ "no_key_name": "Unnamed key", "root_title": "These are superuser keys", "root_subtitle": "Owners of these keys get full access to the server and can do anything on it. Only add your own keys to the server.", - "input_label": "Public ED25519 or RSA key" + "input_label": "Public ED25519, ECDSA or RSA key" }, "onboarding": { "page1_title": "Digital independence, available to all of us", diff --git a/lib/logic/cubit/forms/user/ssh_form_cubit.dart b/lib/logic/cubit/forms/user/ssh_form_cubit.dart index 707e54c3..3305d647 100644 --- a/lib/logic/cubit/forms/user/ssh_form_cubit.dart +++ b/lib/logic/cubit/forms/user/ssh_form_cubit.dart @@ -12,7 +12,7 @@ class SshFormCubit extends FormCubit { required this.user, }) { final RegExp keyRegExp = RegExp( - r'^(ssh-rsa AAAAB3NzaC1yc2|ssh-ed25519 AAAAC3NzaC1lZDI1NTE5)[0-9A-Za-z+/]+[=]{0,3}( .*)?$', + r'^(ecdsa-sha2-nistp256 AAAAE2VjZH|ssh-rsa AAAAB3NzaC1yc2|ssh-ed25519 AAAAC3NzaC1lZDI1NTE5)[0-9A-Za-z+/]+[=]{0,3}( .*)?$', ); key = FieldCubit( From fbacb5969d7d04a1b3b18e536abf502e905ad6d3 Mon Sep 17 00:00:00 2001 From: NaiJi Date: Sat, 30 Sep 2023 21:02:53 -0300 Subject: [PATCH 2/4] fix: Force size value truncation for digital ocean, change query url - Resolve https://git.selfprivacy.org/SelfPrivacy/selfprivacy.org.app/issues/367 --- .../server_providers/digital_ocean/digital_ocean_api.dart | 7 +++---- lib/logic/providers/server_providers/digital_ocean.dart | 2 +- lib/ui/pages/server_storage/extending_volume.dart | 4 +++- 3 files changed, 7 insertions(+), 6 deletions(-) diff --git a/lib/logic/api_maps/rest_maps/server_providers/digital_ocean/digital_ocean_api.dart b/lib/logic/api_maps/rest_maps/server_providers/digital_ocean/digital_ocean_api.dart index aa1481a0..319ff062 100644 --- a/lib/logic/api_maps/rest_maps/server_providers/digital_ocean/digital_ocean_api.dart +++ b/lib/logic/api_maps/rest_maps/server_providers/digital_ocean/digital_ocean_api.dart @@ -455,7 +455,7 @@ class DigitalOceanApi extends RestApiMap { } Future> resizeVolume( - final String name, + final String uuid, final DiskSize size, ) async { bool success = false; @@ -464,11 +464,10 @@ class DigitalOceanApi extends RestApiMap { final Dio client = await getClient(); try { resizeVolumeResponse = await client.post( - '/volumes/actions', + '/volumes/$uuid/actions', data: { 'type': 'resize', - 'volume_name': name, - 'size_gigabytes': size.gibibyte, + 'size_gigabytes': size.gibibyte.toInt(), 'region': region, }, ); diff --git a/lib/logic/providers/server_providers/digital_ocean.dart b/lib/logic/providers/server_providers/digital_ocean.dart index 4b6ee838..ce444169 100644 --- a/lib/logic/providers/server_providers/digital_ocean.dart +++ b/lib/logic/providers/server_providers/digital_ocean.dart @@ -698,7 +698,7 @@ class DigitalOceanServerProvider extends ServerProvider { final DiskSize size, ) async => _adapter.api().resizeVolume( - volume.name, + volume.uuid!, size, ); diff --git a/lib/ui/pages/server_storage/extending_volume.dart b/lib/ui/pages/server_storage/extending_volume.dart index 81414bdb..9c40e9ee 100644 --- a/lib/ui/pages/server_storage/extending_volume.dart +++ b/lib/ui/pages/server_storage/extending_volume.dart @@ -157,7 +157,9 @@ class _ExtendingVolumePageState extends State { : () { context.read().resizeVolume( widget.diskVolumeToResize, - DiskSize.fromGibibyte(_currentSliderGbValue), + DiskSize.fromGibibyte( + _currentSliderGbValue.truncate().toDouble(), + ), context.read().reload, ); context.router.popUntilRoot(); From 043d29538c92d76993b1e98e32f25a46db60fe3f Mon Sep 17 00:00:00 2001 From: NaiJi Date: Sat, 30 Sep 2023 21:35:58 -0300 Subject: [PATCH 3/4] refactor: Conventionally reduce DiskSize to only 'int gb' for resize digital ocean volume --- .../server_providers/digital_ocean/digital_ocean_api.dart | 4 ++-- lib/logic/providers/server_providers/digital_ocean.dart | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/lib/logic/api_maps/rest_maps/server_providers/digital_ocean/digital_ocean_api.dart b/lib/logic/api_maps/rest_maps/server_providers/digital_ocean/digital_ocean_api.dart index 319ff062..9ffdb666 100644 --- a/lib/logic/api_maps/rest_maps/server_providers/digital_ocean/digital_ocean_api.dart +++ b/lib/logic/api_maps/rest_maps/server_providers/digital_ocean/digital_ocean_api.dart @@ -456,7 +456,7 @@ class DigitalOceanApi extends RestApiMap { Future> resizeVolume( final String uuid, - final DiskSize size, + final int gb, ) async { bool success = false; @@ -467,7 +467,7 @@ class DigitalOceanApi extends RestApiMap { '/volumes/$uuid/actions', data: { 'type': 'resize', - 'size_gigabytes': size.gibibyte.toInt(), + 'size_gigabytes': gb, 'region': region, }, ); diff --git a/lib/logic/providers/server_providers/digital_ocean.dart b/lib/logic/providers/server_providers/digital_ocean.dart index ce444169..6e699723 100644 --- a/lib/logic/providers/server_providers/digital_ocean.dart +++ b/lib/logic/providers/server_providers/digital_ocean.dart @@ -699,7 +699,7 @@ class DigitalOceanServerProvider extends ServerProvider { ) async => _adapter.api().resizeVolume( volume.uuid!, - size, + size.gibibyte.toInt(), ); @override From 97a9793f9d3912d6d0810d4cf70def09c22991f8 Mon Sep 17 00:00:00 2001 From: NaiJi Date: Sat, 30 Sep 2023 21:50:38 -0300 Subject: [PATCH 4/4] fix(ui): Disable storage card while volume information is being fetched - Resolve https://git.selfprivacy.org/SelfPrivacy/selfprivacy.org.app/issues/317 --- lib/ui/pages/server_storage/storage_card.dart | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/lib/ui/pages/server_storage/storage_card.dart b/lib/ui/pages/server_storage/storage_card.dart index ac633463..fbda9bee 100644 --- a/lib/ui/pages/server_storage/storage_card.dart +++ b/lib/ui/pages/server_storage/storage_card.dart @@ -45,8 +45,11 @@ class StorageCard extends StatelessWidget { clipBehavior: Clip.antiAlias, child: InkResponse( highlightShape: BoxShape.rectangle, - onTap: () => - context.pushRoute(ServerStorageRoute(diskStatus: diskStatus)), + + /// TODO: when 'isEmpty' replace with a skeleton + onTap: () => diskStatus.diskVolumes.isEmpty + ? null + : context.pushRoute(ServerStorageRoute(diskStatus: diskStatus)), child: Padding( padding: const EdgeInsets.all(16.0), child: Column(