From 58c9e00ce0d8191366739226916ffac750894aba Mon Sep 17 00:00:00 2001
From: NaiJi <naijiworld@protonmail.com>
Date: Sun, 20 Nov 2022 18:31:31 +0400
Subject: [PATCH] fix(recovery): Add reverse dns validation for digital ocean

In Digital Ocean reverse dns is not domain name but just name, like mydomainname instead of mydomainname.xyz, so we need additional condition
---
 .../server_installation/server_installation_cubit.dart      | 6 ++++--
 .../server_installation/server_installation_repository.dart | 2 +-
 .../server_installation/server_installation_state.dart      | 2 +-
 3 files changed, 6 insertions(+), 4 deletions(-)

diff --git a/lib/logic/cubit/server_installation/server_installation_cubit.dart b/lib/logic/cubit/server_installation/server_installation_cubit.dart
index fa18cda8..08852825 100644
--- a/lib/logic/cubit/server_installation/server_installation_cubit.dart
+++ b/lib/logic/cubit/server_installation/server_installation_cubit.dart
@@ -508,8 +508,8 @@ class ServerInstallationCubit extends Cubit<ServerInstallationState> {
             .showSnackBar('recovering.generic_error'.tr());
         return;
       }
-      setServerProviderType(provider);
       await repository.saveServerDetails(serverDetails);
+      setServerProviderType(provider);
       emit(
         dataState.copyWith(
           serverDetails: serverDetails,
@@ -600,7 +600,9 @@ class ServerInstallationCubit extends Cubit<ServerInstallationState> {
         serverBasicInfo: server,
         isIpValid: server.ip == dataState.serverDetails?.ip4,
         isReverseDnsValid:
-            server.reverseDns == dataState.serverDomain?.domainName,
+            server.reverseDns == dataState.serverDomain?.domainName ||
+                server.reverseDns ==
+                    dataState.serverDomain?.domainName.split('.')[0],
       ),
     );
     return validated.toList();
diff --git a/lib/logic/cubit/server_installation/server_installation_repository.dart b/lib/logic/cubit/server_installation/server_installation_repository.dart
index 59e4921c..cc3860e3 100644
--- a/lib/logic/cubit/server_installation/server_installation_repository.dart
+++ b/lib/logic/cubit/server_installation/server_installation_repository.dart
@@ -86,7 +86,7 @@ class ServerInstallationRepository {
     if (box.get(BNames.hasFinalChecked, defaultValue: false)) {
       return ServerInstallationFinished(
         providerApiToken: providerApiToken!,
-        serverTypeIdentificator: serverTypeIdentificator!,
+        serverTypeIdentificator: serverTypeIdentificator ?? '',
         cloudFlareKey: cloudflareToken!,
         serverDomain: serverDomain!,
         backblazeCredential: backblazeCredential!,
diff --git a/lib/logic/cubit/server_installation/server_installation_state.dart b/lib/logic/cubit/server_installation/server_installation_state.dart
index ad88571e..331c3e2a 100644
--- a/lib/logic/cubit/server_installation/server_installation_state.dart
+++ b/lib/logic/cubit/server_installation/server_installation_state.dart
@@ -331,7 +331,7 @@ class ServerInstallationRecovery extends ServerInstallationState {
 
   ServerInstallationFinished finish() => ServerInstallationFinished(
         providerApiToken: providerApiToken!,
-        serverTypeIdentificator: serverTypeIdentificator!,
+        serverTypeIdentificator: serverTypeIdentificator ?? '',
         cloudFlareKey: cloudFlareKey!,
         backblazeCredential: backblazeCredential!,
         serverDomain: serverDomain!,