From f64f741a76796bbe672556321834dbd0574716b5 Mon Sep 17 00:00:00 2001 From: NaiJi Date: Fri, 23 Dec 2022 00:17:48 +0400 Subject: [PATCH] fix: Manage server deletion for Digital Ocean --- .../digital_ocean/digital_ocean.dart | 23 ++++--------------- .../server_providers/hetzner/hetzner.dart | 18 +-------------- lib/utils/network_utils.dart | 17 ++++++++++++++ 3 files changed, 22 insertions(+), 36 deletions(-) diff --git a/lib/logic/api_maps/rest_maps/server_providers/digital_ocean/digital_ocean.dart b/lib/logic/api_maps/rest_maps/server_providers/digital_ocean/digital_ocean.dart index 2898b609..4beb53f7 100644 --- a/lib/logic/api_maps/rest_maps/server_providers/digital_ocean/digital_ocean.dart +++ b/lib/logic/api_maps/rest_maps/server_providers/digital_ocean/digital_ocean.dart @@ -18,6 +18,7 @@ import 'package:selfprivacy/logic/models/server_metadata.dart'; import 'package:selfprivacy/logic/models/server_provider_location.dart'; import 'package:selfprivacy/logic/models/server_type.dart'; import 'package:selfprivacy/utils/extensions/string_extensions.dart'; +import 'package:selfprivacy/utils/network_utils.dart'; import 'package:selfprivacy/utils/password_generator.dart'; class DigitalOceanApi extends ServerProviderApi with VolumeProviderApi { @@ -325,23 +326,6 @@ class DigitalOceanApi extends ServerProviderApi with VolumeProviderApi { return success; } - static String getHostnameFromDomain(final String domain) { - // Replace all non-alphanumeric characters with an underscore - String hostname = - domain.split('.')[0].replaceAll(RegExp(r'[^a-zA-Z0-9]'), '-'); - if (hostname.endsWith('-')) { - hostname = hostname.substring(0, hostname.length - 1); - } - if (hostname.startsWith('-')) { - hostname = hostname.substring(1); - } - if (hostname.isEmpty) { - hostname = 'selfprivacy-server'; - } - - return hostname; - } - @override Future> createServer({ required final String dnsApiToken, @@ -436,11 +420,12 @@ class DigitalOceanApi extends ServerProviderApi with VolumeProviderApi { }) async { final Dio client = await getClient(); + final String hostname = getHostnameFromDomain(domainName); final servers = await getServers(); final ServerBasicInfo serverToRemove; try { serverToRemove = servers.firstWhere( - (final el) => el.name == domainName, + (final el) => el.name == hostname, ); } catch (e) { print(e); @@ -473,7 +458,7 @@ class DigitalOceanApi extends ServerProviderApi with VolumeProviderApi { try { laterFutures.add(deleteVolume(volumeToRemove)); - laterFutures.add(client.delete('/droplets/$serverToRemove.id')); + laterFutures.add(client.delete('/droplets/${serverToRemove.id}')); await Future.wait(laterFutures); } catch (e) { print(e); diff --git a/lib/logic/api_maps/rest_maps/server_providers/hetzner/hetzner.dart b/lib/logic/api_maps/rest_maps/server_providers/hetzner/hetzner.dart index d7a13b95..7f51c768 100644 --- a/lib/logic/api_maps/rest_maps/server_providers/hetzner/hetzner.dart +++ b/lib/logic/api_maps/rest_maps/server_providers/hetzner/hetzner.dart @@ -19,6 +19,7 @@ import 'package:selfprivacy/logic/models/server_metadata.dart'; import 'package:selfprivacy/logic/models/server_provider_location.dart'; import 'package:selfprivacy/logic/models/server_type.dart'; import 'package:selfprivacy/utils/extensions/string_extensions.dart'; +import 'package:selfprivacy/utils/network_utils.dart'; import 'package:selfprivacy/utils/password_generator.dart'; class HetznerApi extends ServerProviderApi with VolumeProviderApi { @@ -461,23 +462,6 @@ class HetznerApi extends ServerProviderApi with VolumeProviderApi { ); } - static String getHostnameFromDomain(final String domain) { - // Replace all non-alphanumeric characters with an underscore - String hostname = - domain.split('.')[0].replaceAll(RegExp(r'[^a-zA-Z0-9]'), '-'); - if (hostname.endsWith('-')) { - hostname = hostname.substring(0, hostname.length - 1); - } - if (hostname.startsWith('-')) { - hostname = hostname.substring(1); - } - if (hostname.isEmpty) { - hostname = 'selfprivacy-server'; - } - - return hostname; - } - @override Future> deleteServer({ required final String domainName, diff --git a/lib/utils/network_utils.dart b/lib/utils/network_utils.dart index 8b75728f..fc06ecb8 100644 --- a/lib/utils/network_utils.dart +++ b/lib/utils/network_utils.dart @@ -133,3 +133,20 @@ DnsRecord? extractDkimRecord(final List records) { return dkimRecord; } + +String getHostnameFromDomain(final String domain) { + // Replace all non-alphanumeric characters with an underscore + String hostname = + domain.split('.')[0].replaceAll(RegExp(r'[^a-zA-Z0-9]'), '-'); + if (hostname.endsWith('-')) { + hostname = hostname.substring(0, hostname.length - 1); + } + if (hostname.startsWith('-')) { + hostname = hostname.substring(1); + } + if (hostname.isEmpty) { + hostname = 'selfprivacy-server'; + } + + return hostname; +}