mirror of
https://git.selfprivacy.org/kherel/selfprivacy.org.app.git
synced 2025-02-02 14:16:58 +00:00
feat: Implement general server provider and its factory
This commit is contained in:
parent
818de37acd
commit
a270f3dfbb
|
@ -69,9 +69,9 @@ class ServerApi extends ApiMap
|
||||||
return apiVersion;
|
return apiVersion;
|
||||||
}
|
}
|
||||||
|
|
||||||
Future<ServerProvider> getServerProviderType() async {
|
Future<ServerProviderType> getServerProviderType() async {
|
||||||
QueryResult<Query$SystemServerProvider> response;
|
QueryResult<Query$SystemServerProvider> response;
|
||||||
ServerProvider providerType = ServerProvider.unknown;
|
ServerProviderType providerType = ServerProviderType.unknown;
|
||||||
|
|
||||||
try {
|
try {
|
||||||
final GraphQLClient client = await getClient();
|
final GraphQLClient client = await getClient();
|
||||||
|
@ -79,7 +79,7 @@ class ServerApi extends ApiMap
|
||||||
if (response.hasException) {
|
if (response.hasException) {
|
||||||
print(response.exception.toString());
|
print(response.exception.toString());
|
||||||
}
|
}
|
||||||
providerType = ServerProvider.fromGraphQL(
|
providerType = ServerProviderType.fromGraphQL(
|
||||||
response.parsedData!.system.provider.provider,
|
response.parsedData!.system.provider.provider,
|
||||||
);
|
);
|
||||||
} catch (e) {
|
} catch (e) {
|
||||||
|
@ -88,9 +88,9 @@ class ServerApi extends ApiMap
|
||||||
return providerType;
|
return providerType;
|
||||||
}
|
}
|
||||||
|
|
||||||
Future<DnsProvider> getDnsProviderType() async {
|
Future<DnsProviderType> getDnsProviderType() async {
|
||||||
QueryResult<Query$SystemDnsProvider> response;
|
QueryResult<Query$SystemDnsProvider> response;
|
||||||
DnsProvider providerType = DnsProvider.unknown;
|
DnsProviderType providerType = DnsProviderType.unknown;
|
||||||
|
|
||||||
try {
|
try {
|
||||||
final GraphQLClient client = await getClient();
|
final GraphQLClient client = await getClient();
|
||||||
|
@ -98,7 +98,7 @@ class ServerApi extends ApiMap
|
||||||
if (response.hasException) {
|
if (response.hasException) {
|
||||||
print(response.exception.toString());
|
print(response.exception.toString());
|
||||||
}
|
}
|
||||||
providerType = DnsProvider.fromGraphQL(
|
providerType = DnsProviderType.fromGraphQL(
|
||||||
response.parsedData!.system.domainInfo.provider,
|
response.parsedData!.system.domainInfo.provider,
|
||||||
);
|
);
|
||||||
} catch (e) {
|
} catch (e) {
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
import 'package:selfprivacy/logic/api_maps/rest_maps/api_factory_creator.dart';
|
import 'package:selfprivacy/logic/api_maps/rest_maps/api_factory_creator.dart';
|
||||||
import 'package:selfprivacy/logic/api_maps/rest_maps/api_factory_settings.dart';
|
import 'package:selfprivacy/logic/providers/provider_settings.dart';
|
||||||
import 'package:selfprivacy/logic/api_maps/rest_maps/dns_providers/dns_provider_factory.dart';
|
import 'package:selfprivacy/logic/api_maps/rest_maps/dns_providers/dns_provider_factory.dart';
|
||||||
import 'package:selfprivacy/logic/api_maps/rest_maps/server_providers/server_provider_factory.dart';
|
import 'package:selfprivacy/logic/api_maps/rest_maps/server_providers/server_provider_factory.dart';
|
||||||
|
|
||||||
|
@ -12,21 +12,21 @@ class ApiController {
|
||||||
_serverProviderApiFactory;
|
_serverProviderApiFactory;
|
||||||
|
|
||||||
static void initVolumeProviderApiFactory(
|
static void initVolumeProviderApiFactory(
|
||||||
final ServerProviderApiFactorySettings settings,
|
final ServerProviderSettings settings,
|
||||||
) {
|
) {
|
||||||
_volumeProviderApiFactory =
|
_volumeProviderApiFactory =
|
||||||
VolumeApiFactoryCreator.createVolumeProviderApiFactory(settings);
|
VolumeApiFactoryCreator.createVolumeProviderApiFactory(settings);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void initDnsProviderApiFactory(
|
static void initDnsProviderApiFactory(
|
||||||
final DnsProviderApiFactorySettings settings,
|
final DnsProviderFactorySettings settings,
|
||||||
) {
|
) {
|
||||||
_dnsProviderApiFactory =
|
_dnsProviderApiFactory =
|
||||||
ApiFactoryCreator.createDnsProviderApiFactory(settings);
|
ApiFactoryCreator.createDnsProviderApiFactory(settings);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void initServerProviderApiFactory(
|
static void initServerProviderApiFactory(
|
||||||
final ServerProviderApiFactorySettings settings,
|
final ServerProviderSettings settings,
|
||||||
) {
|
) {
|
||||||
_serverProviderApiFactory =
|
_serverProviderApiFactory =
|
||||||
ApiFactoryCreator.createServerProviderApiFactory(settings);
|
ApiFactoryCreator.createServerProviderApiFactory(settings);
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
import 'package:selfprivacy/logic/api_maps/rest_maps/api_factory_settings.dart';
|
import 'package:selfprivacy/logic/providers/provider_settings.dart';
|
||||||
import 'package:selfprivacy/logic/api_maps/rest_maps/dns_providers/cloudflare/cloudflare_factory.dart';
|
import 'package:selfprivacy/logic/api_maps/rest_maps/dns_providers/cloudflare/cloudflare_factory.dart';
|
||||||
import 'package:selfprivacy/logic/api_maps/rest_maps/dns_providers/digital_ocean_dns/digital_ocean_dns_factory.dart';
|
import 'package:selfprivacy/logic/api_maps/rest_maps/dns_providers/digital_ocean_dns/digital_ocean_dns_factory.dart';
|
||||||
import 'package:selfprivacy/logic/api_maps/rest_maps/dns_providers/dns_provider_factory.dart';
|
import 'package:selfprivacy/logic/api_maps/rest_maps/dns_providers/dns_provider_factory.dart';
|
||||||
|
@ -15,27 +15,27 @@ class UnknownApiProviderException implements Exception {
|
||||||
|
|
||||||
class ApiFactoryCreator {
|
class ApiFactoryCreator {
|
||||||
static ServerProviderApiFactory createServerProviderApiFactory(
|
static ServerProviderApiFactory createServerProviderApiFactory(
|
||||||
final ServerProviderApiFactorySettings settings,
|
final ServerProviderSettings settings,
|
||||||
) {
|
) {
|
||||||
switch (settings.provider) {
|
switch (settings.provider) {
|
||||||
case ServerProvider.hetzner:
|
case ServerProviderType.hetzner:
|
||||||
return HetznerApiFactory(region: settings.location);
|
return HetznerApiFactory(region: settings.location);
|
||||||
case ServerProvider.digitalOcean:
|
case ServerProviderType.digitalOcean:
|
||||||
return DigitalOceanApiFactory(region: settings.location);
|
return DigitalOceanApiFactory(region: settings.location);
|
||||||
case ServerProvider.unknown:
|
case ServerProviderType.unknown:
|
||||||
throw UnknownApiProviderException('Unknown server provider');
|
throw UnknownApiProviderException('Unknown server provider');
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
static DnsProviderApiFactory createDnsProviderApiFactory(
|
static DnsProviderApiFactory createDnsProviderApiFactory(
|
||||||
final DnsProviderApiFactorySettings settings,
|
final DnsProviderFactorySettings settings,
|
||||||
) {
|
) {
|
||||||
switch (settings.provider) {
|
switch (settings.provider) {
|
||||||
case DnsProvider.cloudflare:
|
case DnsProviderType.cloudflare:
|
||||||
return CloudflareApiFactory();
|
return CloudflareApiFactory();
|
||||||
case DnsProvider.digitalOcean:
|
case DnsProviderType.digitalOcean:
|
||||||
return DigitalOceanDnsApiFactory();
|
return DigitalOceanDnsApiFactory();
|
||||||
case DnsProvider.unknown:
|
case DnsProviderType.unknown:
|
||||||
throw UnknownApiProviderException('Unknown DNS provider');
|
throw UnknownApiProviderException('Unknown DNS provider');
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -43,14 +43,14 @@ class ApiFactoryCreator {
|
||||||
|
|
||||||
class VolumeApiFactoryCreator {
|
class VolumeApiFactoryCreator {
|
||||||
static VolumeProviderApiFactory createVolumeProviderApiFactory(
|
static VolumeProviderApiFactory createVolumeProviderApiFactory(
|
||||||
final ServerProviderApiFactorySettings settings,
|
final ServerProviderSettings settings,
|
||||||
) {
|
) {
|
||||||
switch (settings.provider) {
|
switch (settings.provider) {
|
||||||
case ServerProvider.hetzner:
|
case ServerProviderType.hetzner:
|
||||||
return HetznerApiFactory();
|
return HetznerApiFactory();
|
||||||
case ServerProvider.digitalOcean:
|
case ServerProviderType.digitalOcean:
|
||||||
return DigitalOceanApiFactory();
|
return DigitalOceanApiFactory();
|
||||||
case ServerProvider.unknown:
|
case ServerProviderType.unknown:
|
||||||
throw UnknownApiProviderException('Unknown volume provider');
|
throw UnknownApiProviderException('Unknown volume provider');
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -332,7 +332,7 @@ class DigitalOceanApi extends ServerProviderApi with VolumeProviderApi {
|
||||||
required final User rootUser,
|
required final User rootUser,
|
||||||
required final String domainName,
|
required final String domainName,
|
||||||
required final String serverType,
|
required final String serverType,
|
||||||
required final DnsProvider dnsProvider,
|
required final DnsProviderType dnsProvider,
|
||||||
}) async {
|
}) async {
|
||||||
ServerHostingDetails? serverDetails;
|
ServerHostingDetails? serverDetails;
|
||||||
|
|
||||||
|
@ -394,7 +394,7 @@ class DigitalOceanApi extends ServerProviderApi with VolumeProviderApi {
|
||||||
createTime: DateTime.now(),
|
createTime: DateTime.now(),
|
||||||
volume: newVolume,
|
volume: newVolume,
|
||||||
apiToken: apiToken,
|
apiToken: apiToken,
|
||||||
provider: ServerProvider.digitalOcean,
|
provider: ServerProviderType.digitalOcean,
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
} catch (e) {
|
} catch (e) {
|
||||||
|
|
|
@ -356,7 +356,7 @@ class HetznerApi extends ServerProviderApi with VolumeProviderApi {
|
||||||
required final User rootUser,
|
required final User rootUser,
|
||||||
required final String domainName,
|
required final String domainName,
|
||||||
required final String serverType,
|
required final String serverType,
|
||||||
required final DnsProvider dnsProvider,
|
required final DnsProviderType dnsProvider,
|
||||||
}) async {
|
}) async {
|
||||||
final APIGenericResult<ServerVolume?> newVolumeResponse =
|
final APIGenericResult<ServerVolume?> newVolumeResponse =
|
||||||
await createVolume();
|
await createVolume();
|
||||||
|
@ -385,7 +385,7 @@ class HetznerApi extends ServerProviderApi with VolumeProviderApi {
|
||||||
required final String domainName,
|
required final String domainName,
|
||||||
required final ServerVolume volume,
|
required final ServerVolume volume,
|
||||||
required final String serverType,
|
required final String serverType,
|
||||||
required final DnsProvider dnsProvider,
|
required final DnsProviderType dnsProvider,
|
||||||
}) async {
|
}) async {
|
||||||
final Dio client = await getClient();
|
final Dio client = await getClient();
|
||||||
|
|
||||||
|
@ -434,7 +434,7 @@ class HetznerApi extends ServerProviderApi with VolumeProviderApi {
|
||||||
createTime: DateTime.now(),
|
createTime: DateTime.now(),
|
||||||
volume: volume,
|
volume: volume,
|
||||||
apiToken: apiToken,
|
apiToken: apiToken,
|
||||||
provider: ServerProvider.hetzner,
|
provider: ServerProviderType.hetzner,
|
||||||
);
|
);
|
||||||
success = true;
|
success = true;
|
||||||
} on DioError catch (e) {
|
} on DioError catch (e) {
|
||||||
|
|
|
@ -39,7 +39,7 @@ abstract class ServerProviderApi extends ApiMap {
|
||||||
required final User rootUser,
|
required final User rootUser,
|
||||||
required final String domainName,
|
required final String domainName,
|
||||||
required final String serverType,
|
required final String serverType,
|
||||||
required final DnsProvider dnsProvider,
|
required final DnsProviderType dnsProvider,
|
||||||
});
|
});
|
||||||
Future<APIGenericResult<void>> createReverseDns({
|
Future<APIGenericResult<void>> createReverseDns({
|
||||||
required final ServerHostingDetails serverDetails,
|
required final ServerHostingDetails serverDetails,
|
||||||
|
@ -55,13 +55,13 @@ abstract class ServerProviderApi extends ApiMap {
|
||||||
final DateTime end,
|
final DateTime end,
|
||||||
);
|
);
|
||||||
|
|
||||||
String dnsProviderToInfectName(final DnsProvider dnsProvider) {
|
String dnsProviderToInfectName(final DnsProviderType dnsProvider) {
|
||||||
String dnsProviderType;
|
String dnsProviderType;
|
||||||
switch (dnsProvider) {
|
switch (dnsProvider) {
|
||||||
case DnsProvider.digitalOcean:
|
case DnsProviderType.digitalOcean:
|
||||||
dnsProviderType = 'DIGITALOCEAN';
|
dnsProviderType = 'DIGITALOCEAN';
|
||||||
break;
|
break;
|
||||||
case DnsProvider.cloudflare:
|
case DnsProviderType.cloudflare:
|
||||||
default:
|
default:
|
||||||
dnsProviderType = 'CLOUDFLARE';
|
dnsProviderType = 'CLOUDFLARE';
|
||||||
break;
|
break;
|
||||||
|
|
|
@ -39,7 +39,7 @@ class DomainSetupCubit extends Cubit<DomainSetupState> {
|
||||||
final ServerDomain domain = ServerDomain(
|
final ServerDomain domain = ServerDomain(
|
||||||
domainName: domainName,
|
domainName: domainName,
|
||||||
zoneId: zoneId,
|
zoneId: zoneId,
|
||||||
provider: DnsProvider.cloudflare,
|
provider: DnsProviderType.cloudflare,
|
||||||
);
|
);
|
||||||
|
|
||||||
serverInstallationCubit.setDomain(domain);
|
serverInstallationCubit.setDomain(domain);
|
||||||
|
|
|
@ -6,8 +6,9 @@ import 'package:equatable/equatable.dart';
|
||||||
import 'package:selfprivacy/config/get_it_config.dart';
|
import 'package:selfprivacy/config/get_it_config.dart';
|
||||||
import 'package:selfprivacy/logic/api_maps/graphql_maps/server_api/server_api.dart';
|
import 'package:selfprivacy/logic/api_maps/graphql_maps/server_api/server_api.dart';
|
||||||
import 'package:selfprivacy/logic/api_maps/rest_maps/api_controller.dart';
|
import 'package:selfprivacy/logic/api_maps/rest_maps/api_controller.dart';
|
||||||
import 'package:selfprivacy/logic/api_maps/rest_maps/api_factory_settings.dart';
|
import 'package:selfprivacy/logic/providers/provider_settings.dart';
|
||||||
import 'package:selfprivacy/logic/api_maps/rest_maps/dns_providers/dns_provider_api_settings.dart';
|
import 'package:selfprivacy/logic/api_maps/rest_maps/dns_providers/dns_provider_api_settings.dart';
|
||||||
|
import 'package:selfprivacy/logic/providers/providers_controller.dart';
|
||||||
import 'package:selfprivacy/logic/api_maps/rest_maps/server_providers/server_provider.dart';
|
import 'package:selfprivacy/logic/api_maps/rest_maps/server_providers/server_provider.dart';
|
||||||
import 'package:selfprivacy/logic/api_maps/rest_maps/server_providers/server_provider_api_settings.dart';
|
import 'package:selfprivacy/logic/api_maps/rest_maps/server_providers/server_provider_api_settings.dart';
|
||||||
import 'package:selfprivacy/logic/models/hive/backblaze_credential.dart';
|
import 'package:selfprivacy/logic/models/hive/backblaze_credential.dart';
|
||||||
|
@ -57,45 +58,29 @@ class ServerInstallationCubit extends Cubit<ServerInstallationState> {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void setServerProviderType(final ServerProvider providerType) async {
|
void setServerProviderType(final ServerProviderType providerType) async {
|
||||||
await repository.saveServerProviderType(providerType);
|
await repository.saveServerProviderType(providerType);
|
||||||
ApiController.initServerProviderApiFactory(
|
ProvidersController.initServerProvider(
|
||||||
ServerProviderApiFactorySettings(
|
ServerProviderSettings(provider: providerType),
|
||||||
provider: providerType,
|
|
||||||
),
|
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
void setDnsProviderType(final DnsProvider providerType) async {
|
void setDnsProviderType(final DnsProviderType providerType) async {
|
||||||
await repository.saveDnsProviderType(providerType);
|
await repository.saveDnsProviderType(providerType);
|
||||||
ApiController.initDnsProviderApiFactory(
|
ApiController.initDnsProviderApiFactory(
|
||||||
DnsProviderApiFactorySettings(
|
DnsProviderFactorySettings(
|
||||||
provider: providerType,
|
provider: providerType,
|
||||||
),
|
),
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
ProviderApiTokenValidation serverProviderApiTokenValidation() =>
|
|
||||||
ApiController.currentServerProviderApiFactory!
|
|
||||||
.getServerProvider()
|
|
||||||
.getApiTokenValidation();
|
|
||||||
|
|
||||||
RegExp getDnsProviderApiTokenValidation() =>
|
|
||||||
ApiController.currentDnsProviderApiFactory!
|
|
||||||
.getDnsProvider()
|
|
||||||
.getApiTokenValidation();
|
|
||||||
|
|
||||||
Future<bool?> isServerProviderApiTokenValid(
|
Future<bool?> isServerProviderApiTokenValid(
|
||||||
final String providerToken,
|
final String providerToken,
|
||||||
) async {
|
) async {
|
||||||
final APIGenericResult<bool> apiResponse =
|
final APIGenericResult<bool> apiResponse =
|
||||||
await ApiController.currentServerProviderApiFactory!
|
await ProvidersController.currentServerProvider!.isApiTokenValid(
|
||||||
.getServerProvider(
|
providerToken,
|
||||||
settings: const ServerProviderApiSettings(
|
);
|
||||||
isWithToken: false,
|
|
||||||
),
|
|
||||||
)
|
|
||||||
.isApiTokenValid(providerToken);
|
|
||||||
|
|
||||||
if (!apiResponse.success) {
|
if (!apiResponse.success) {
|
||||||
getIt<NavigationService>().showSnackBar(
|
getIt<NavigationService>().showSnackBar(
|
||||||
|
@ -191,7 +176,7 @@ class ServerInstallationCubit extends Cubit<ServerInstallationState> {
|
||||||
await repository.saveServerType(serverType);
|
await repository.saveServerType(serverType);
|
||||||
|
|
||||||
ApiController.initServerProviderApiFactory(
|
ApiController.initServerProviderApiFactory(
|
||||||
ServerProviderApiFactorySettings(
|
ServerProviderSettings(
|
||||||
provider: getIt<ApiConfigModel>().serverProvider!,
|
provider: getIt<ApiConfigModel>().serverProvider!,
|
||||||
location: serverType.location.identifier,
|
location: serverType.location.identifier,
|
||||||
),
|
),
|
||||||
|
@ -200,7 +185,7 @@ class ServerInstallationCubit extends Cubit<ServerInstallationState> {
|
||||||
// All server providers support volumes for now,
|
// All server providers support volumes for now,
|
||||||
// so it's safe to initialize.
|
// so it's safe to initialize.
|
||||||
ApiController.initVolumeProviderApiFactory(
|
ApiController.initVolumeProviderApiFactory(
|
||||||
ServerProviderApiFactorySettings(
|
ServerProviderSettings(
|
||||||
provider: getIt<ApiConfigModel>().serverProvider!,
|
provider: getIt<ApiConfigModel>().serverProvider!,
|
||||||
location: serverType.location.identifier,
|
location: serverType.location.identifier,
|
||||||
),
|
),
|
||||||
|
@ -485,7 +470,7 @@ class ServerInstallationCubit extends Cubit<ServerInstallationState> {
|
||||||
void submitDomainForAccessRecovery(final String domain) async {
|
void submitDomainForAccessRecovery(final String domain) async {
|
||||||
final ServerDomain serverDomain = ServerDomain(
|
final ServerDomain serverDomain = ServerDomain(
|
||||||
domainName: domain,
|
domainName: domain,
|
||||||
provider: DnsProvider.unknown,
|
provider: DnsProviderType.unknown,
|
||||||
zoneId: '',
|
zoneId: '',
|
||||||
);
|
);
|
||||||
final ServerRecoveryCapabilities recoveryCapabilities =
|
final ServerRecoveryCapabilities recoveryCapabilities =
|
||||||
|
@ -537,20 +522,20 @@ class ServerInstallationCubit extends Cubit<ServerInstallationState> {
|
||||||
token,
|
token,
|
||||||
dataState.recoveryCapabilities,
|
dataState.recoveryCapabilities,
|
||||||
);
|
);
|
||||||
final ServerProvider serverProvider = await ServerApi(
|
final ServerProviderType serverProvider = await ServerApi(
|
||||||
customToken: serverDetails.apiToken,
|
customToken: serverDetails.apiToken,
|
||||||
isWithToken: true,
|
isWithToken: true,
|
||||||
).getServerProviderType();
|
).getServerProviderType();
|
||||||
final DnsProvider dnsProvider = await ServerApi(
|
final DnsProviderType dnsProvider = await ServerApi(
|
||||||
customToken: serverDetails.apiToken,
|
customToken: serverDetails.apiToken,
|
||||||
isWithToken: true,
|
isWithToken: true,
|
||||||
).getDnsProviderType();
|
).getDnsProviderType();
|
||||||
if (serverProvider == ServerProvider.unknown) {
|
if (serverProvider == ServerProviderType.unknown) {
|
||||||
getIt<NavigationService>()
|
getIt<NavigationService>()
|
||||||
.showSnackBar('recovering.generic_error'.tr());
|
.showSnackBar('recovering.generic_error'.tr());
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
if (dnsProvider == DnsProvider.unknown) {
|
if (dnsProvider == DnsProviderType.unknown) {
|
||||||
getIt<NavigationService>()
|
getIt<NavigationService>()
|
||||||
.showSnackBar('recovering.generic_error'.tr());
|
.showSnackBar('recovering.generic_error'.tr());
|
||||||
return;
|
return;
|
||||||
|
@ -684,7 +669,7 @@ class ServerInstallationCubit extends Cubit<ServerInstallationState> {
|
||||||
linuxDevice: '',
|
linuxDevice: '',
|
||||||
),
|
),
|
||||||
apiToken: dataState.serverDetails!.apiToken,
|
apiToken: dataState.serverDetails!.apiToken,
|
||||||
provider: ServerProvider.hetzner,
|
provider: ServerProviderType.hetzner,
|
||||||
);
|
);
|
||||||
await repository.saveDomain(serverDomain);
|
await repository.saveDomain(serverDomain);
|
||||||
await repository.saveServerDetails(serverDetails);
|
await repository.saveServerDetails(serverDetails);
|
||||||
|
@ -714,7 +699,7 @@ class ServerInstallationCubit extends Cubit<ServerInstallationState> {
|
||||||
ServerDomain(
|
ServerDomain(
|
||||||
domainName: serverDomain.domainName,
|
domainName: serverDomain.domainName,
|
||||||
zoneId: zoneId,
|
zoneId: zoneId,
|
||||||
provider: DnsProvider.cloudflare,
|
provider: DnsProviderType.cloudflare,
|
||||||
),
|
),
|
||||||
);
|
);
|
||||||
await repository.setDnsApiToken(token);
|
await repository.setDnsApiToken(token);
|
||||||
|
@ -723,7 +708,7 @@ class ServerInstallationCubit extends Cubit<ServerInstallationState> {
|
||||||
serverDomain: ServerDomain(
|
serverDomain: ServerDomain(
|
||||||
domainName: serverDomain.domainName,
|
domainName: serverDomain.domainName,
|
||||||
zoneId: zoneId,
|
zoneId: zoneId,
|
||||||
provider: DnsProvider.cloudflare,
|
provider: DnsProviderType.cloudflare,
|
||||||
),
|
),
|
||||||
dnsApiToken: token,
|
dnsApiToken: token,
|
||||||
currentStep: RecoveryStep.backblazeToken,
|
currentStep: RecoveryStep.backblazeToken,
|
||||||
|
|
|
@ -10,7 +10,7 @@ import 'package:pub_semver/pub_semver.dart';
|
||||||
import 'package:selfprivacy/config/get_it_config.dart';
|
import 'package:selfprivacy/config/get_it_config.dart';
|
||||||
import 'package:selfprivacy/config/hive_config.dart';
|
import 'package:selfprivacy/config/hive_config.dart';
|
||||||
import 'package:selfprivacy/logic/api_maps/rest_maps/api_controller.dart';
|
import 'package:selfprivacy/logic/api_maps/rest_maps/api_controller.dart';
|
||||||
import 'package:selfprivacy/logic/api_maps/rest_maps/api_factory_settings.dart';
|
import 'package:selfprivacy/logic/providers/provider_settings.dart';
|
||||||
import 'package:selfprivacy/logic/api_maps/rest_maps/dns_providers/dns_provider.dart';
|
import 'package:selfprivacy/logic/api_maps/rest_maps/dns_providers/dns_provider.dart';
|
||||||
import 'package:selfprivacy/logic/api_maps/rest_maps/dns_providers/dns_provider_api_settings.dart';
|
import 'package:selfprivacy/logic/api_maps/rest_maps/dns_providers/dns_provider_api_settings.dart';
|
||||||
import 'package:selfprivacy/logic/api_maps/graphql_maps/server_api/server_api.dart';
|
import 'package:selfprivacy/logic/api_maps/graphql_maps/server_api/server_api.dart';
|
||||||
|
@ -48,8 +48,8 @@ class ServerInstallationRepository {
|
||||||
final String? cloudflareToken = getIt<ApiConfigModel>().dnsProviderKey;
|
final String? cloudflareToken = getIt<ApiConfigModel>().dnsProviderKey;
|
||||||
final String? serverTypeIdentificator = getIt<ApiConfigModel>().serverType;
|
final String? serverTypeIdentificator = getIt<ApiConfigModel>().serverType;
|
||||||
final ServerDomain? serverDomain = getIt<ApiConfigModel>().serverDomain;
|
final ServerDomain? serverDomain = getIt<ApiConfigModel>().serverDomain;
|
||||||
final DnsProvider? dnsProvider = getIt<ApiConfigModel>().dnsProvider;
|
final DnsProviderType? dnsProvider = getIt<ApiConfigModel>().dnsProvider;
|
||||||
final ServerProvider? serverProvider =
|
final ServerProviderType? serverProvider =
|
||||||
getIt<ApiConfigModel>().serverProvider;
|
getIt<ApiConfigModel>().serverProvider;
|
||||||
final BackblazeCredential? backblazeCredential =
|
final BackblazeCredential? backblazeCredential =
|
||||||
getIt<ApiConfigModel>().backblazeCredential;
|
getIt<ApiConfigModel>().backblazeCredential;
|
||||||
|
@ -58,9 +58,9 @@ class ServerInstallationRepository {
|
||||||
|
|
||||||
if (serverProvider != null ||
|
if (serverProvider != null ||
|
||||||
(serverDetails != null &&
|
(serverDetails != null &&
|
||||||
serverDetails.provider != ServerProvider.unknown)) {
|
serverDetails.provider != ServerProviderType.unknown)) {
|
||||||
ApiController.initServerProviderApiFactory(
|
ApiController.initServerProviderApiFactory(
|
||||||
ServerProviderApiFactorySettings(
|
ServerProviderSettings(
|
||||||
provider: serverProvider ?? serverDetails!.provider,
|
provider: serverProvider ?? serverDetails!.provider,
|
||||||
location: location,
|
location: location,
|
||||||
),
|
),
|
||||||
|
@ -69,7 +69,7 @@ class ServerInstallationRepository {
|
||||||
// All current providers support volumes
|
// All current providers support volumes
|
||||||
// so it's safe to hardcode for now
|
// so it's safe to hardcode for now
|
||||||
ApiController.initVolumeProviderApiFactory(
|
ApiController.initVolumeProviderApiFactory(
|
||||||
ServerProviderApiFactorySettings(
|
ServerProviderSettings(
|
||||||
provider: serverProvider ?? serverDetails!.provider,
|
provider: serverProvider ?? serverDetails!.provider,
|
||||||
location: location,
|
location: location,
|
||||||
),
|
),
|
||||||
|
@ -78,9 +78,9 @@ class ServerInstallationRepository {
|
||||||
|
|
||||||
if (dnsProvider != null ||
|
if (dnsProvider != null ||
|
||||||
(serverDomain != null &&
|
(serverDomain != null &&
|
||||||
serverDomain.provider != ServerProvider.unknown)) {
|
serverDomain.provider != ServerProviderType.unknown)) {
|
||||||
ApiController.initDnsProviderApiFactory(
|
ApiController.initDnsProviderApiFactory(
|
||||||
DnsProviderApiFactorySettings(
|
DnsProviderFactorySettings(
|
||||||
provider: dnsProvider ?? serverDomain!.provider,
|
provider: dnsProvider ?? serverDomain!.provider,
|
||||||
),
|
),
|
||||||
);
|
);
|
||||||
|
@ -147,8 +147,8 @@ class ServerInstallationRepository {
|
||||||
) {
|
) {
|
||||||
if (serverDetails != null) {
|
if (serverDetails != null) {
|
||||||
if (serverProviderToken != null) {
|
if (serverProviderToken != null) {
|
||||||
if (serverDetails.provider != ServerProvider.unknown) {
|
if (serverDetails.provider != ServerProviderType.unknown) {
|
||||||
if (serverDomain.provider != DnsProvider.unknown) {
|
if (serverDomain.provider != DnsProviderType.unknown) {
|
||||||
return RecoveryStep.backblazeToken;
|
return RecoveryStep.backblazeToken;
|
||||||
}
|
}
|
||||||
return RecoveryStep.dnsProviderToken;
|
return RecoveryStep.dnsProviderToken;
|
||||||
|
@ -534,7 +534,7 @@ class ServerInstallationRepository {
|
||||||
serverId: 0,
|
serverId: 0,
|
||||||
linuxDevice: '',
|
linuxDevice: '',
|
||||||
),
|
),
|
||||||
provider: ServerProvider.unknown,
|
provider: ServerProviderType.unknown,
|
||||||
id: 0,
|
id: 0,
|
||||||
ip4: serverIp,
|
ip4: serverIp,
|
||||||
startTime: null,
|
startTime: null,
|
||||||
|
@ -571,7 +571,7 @@ class ServerInstallationRepository {
|
||||||
serverId: 0,
|
serverId: 0,
|
||||||
linuxDevice: '',
|
linuxDevice: '',
|
||||||
),
|
),
|
||||||
provider: ServerProvider.unknown,
|
provider: ServerProviderType.unknown,
|
||||||
id: 0,
|
id: 0,
|
||||||
ip4: serverIp,
|
ip4: serverIp,
|
||||||
startTime: null,
|
startTime: null,
|
||||||
|
@ -606,7 +606,7 @@ class ServerInstallationRepository {
|
||||||
sizeByte: 0,
|
sizeByte: 0,
|
||||||
linuxDevice: '',
|
linuxDevice: '',
|
||||||
),
|
),
|
||||||
provider: ServerProvider.unknown,
|
provider: ServerProviderType.unknown,
|
||||||
id: 0,
|
id: 0,
|
||||||
ip4: serverIp,
|
ip4: serverIp,
|
||||||
startTime: null,
|
startTime: null,
|
||||||
|
@ -634,7 +634,7 @@ class ServerInstallationRepository {
|
||||||
serverId: 0,
|
serverId: 0,
|
||||||
linuxDevice: '',
|
linuxDevice: '',
|
||||||
),
|
),
|
||||||
provider: ServerProvider.unknown,
|
provider: ServerProviderType.unknown,
|
||||||
id: 0,
|
id: 0,
|
||||||
ip4: serverIp,
|
ip4: serverIp,
|
||||||
startTime: null,
|
startTime: null,
|
||||||
|
@ -691,11 +691,11 @@ class ServerInstallationRepository {
|
||||||
getIt<ApiConfigModel>().init();
|
getIt<ApiConfigModel>().init();
|
||||||
}
|
}
|
||||||
|
|
||||||
Future<void> saveServerProviderType(final ServerProvider type) async {
|
Future<void> saveServerProviderType(final ServerProviderType type) async {
|
||||||
await getIt<ApiConfigModel>().storeServerProviderType(type);
|
await getIt<ApiConfigModel>().storeServerProviderType(type);
|
||||||
}
|
}
|
||||||
|
|
||||||
Future<void> saveDnsProviderType(final DnsProvider type) async {
|
Future<void> saveDnsProviderType(final DnsProviderType type) async {
|
||||||
await getIt<ApiConfigModel>().storeDnsProviderType(type);
|
await getIt<ApiConfigModel>().storeDnsProviderType(type);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -13,8 +13,8 @@ class ApiConfigModel {
|
||||||
String? get serverLocation => _serverLocation;
|
String? get serverLocation => _serverLocation;
|
||||||
String? get serverType => _serverType;
|
String? get serverType => _serverType;
|
||||||
String? get dnsProviderKey => _dnsProviderKey;
|
String? get dnsProviderKey => _dnsProviderKey;
|
||||||
ServerProvider? get serverProvider => _serverProvider;
|
ServerProviderType? get serverProvider => _serverProvider;
|
||||||
DnsProvider? get dnsProvider => _dnsProvider;
|
DnsProviderType? get dnsProvider => _dnsProvider;
|
||||||
BackblazeCredential? get backblazeCredential => _backblazeCredential;
|
BackblazeCredential? get backblazeCredential => _backblazeCredential;
|
||||||
ServerDomain? get serverDomain => _serverDomain;
|
ServerDomain? get serverDomain => _serverDomain;
|
||||||
BackblazeBucket? get backblazeBucket => _backblazeBucket;
|
BackblazeBucket? get backblazeBucket => _backblazeBucket;
|
||||||
|
@ -23,19 +23,19 @@ class ApiConfigModel {
|
||||||
String? _serverLocation;
|
String? _serverLocation;
|
||||||
String? _dnsProviderKey;
|
String? _dnsProviderKey;
|
||||||
String? _serverType;
|
String? _serverType;
|
||||||
ServerProvider? _serverProvider;
|
ServerProviderType? _serverProvider;
|
||||||
DnsProvider? _dnsProvider;
|
DnsProviderType? _dnsProvider;
|
||||||
ServerHostingDetails? _serverDetails;
|
ServerHostingDetails? _serverDetails;
|
||||||
BackblazeCredential? _backblazeCredential;
|
BackblazeCredential? _backblazeCredential;
|
||||||
ServerDomain? _serverDomain;
|
ServerDomain? _serverDomain;
|
||||||
BackblazeBucket? _backblazeBucket;
|
BackblazeBucket? _backblazeBucket;
|
||||||
|
|
||||||
Future<void> storeServerProviderType(final ServerProvider value) async {
|
Future<void> storeServerProviderType(final ServerProviderType value) async {
|
||||||
await _box.put(BNames.serverProvider, value);
|
await _box.put(BNames.serverProvider, value);
|
||||||
_serverProvider = value;
|
_serverProvider = value;
|
||||||
}
|
}
|
||||||
|
|
||||||
Future<void> storeDnsProviderType(final DnsProvider value) async {
|
Future<void> storeDnsProviderType(final DnsProviderType value) async {
|
||||||
await _box.put(BNames.dnsProvider, value);
|
await _box.put(BNames.dnsProvider, value);
|
||||||
_dnsProvider = value;
|
_dnsProvider = value;
|
||||||
}
|
}
|
||||||
|
|
|
@ -33,8 +33,8 @@ class ServerHostingDetails {
|
||||||
@HiveField(5)
|
@HiveField(5)
|
||||||
final String apiToken;
|
final String apiToken;
|
||||||
|
|
||||||
@HiveField(6, defaultValue: ServerProvider.hetzner)
|
@HiveField(6, defaultValue: ServerProviderType.hetzner)
|
||||||
final ServerProvider provider;
|
final ServerProviderType provider;
|
||||||
|
|
||||||
ServerHostingDetails copyWith({final DateTime? startTime}) =>
|
ServerHostingDetails copyWith({final DateTime? startTime}) =>
|
||||||
ServerHostingDetails(
|
ServerHostingDetails(
|
||||||
|
@ -77,7 +77,7 @@ class ServerVolume {
|
||||||
}
|
}
|
||||||
|
|
||||||
@HiveType(typeId: 101)
|
@HiveType(typeId: 101)
|
||||||
enum ServerProvider {
|
enum ServerProviderType {
|
||||||
@HiveField(0)
|
@HiveField(0)
|
||||||
unknown,
|
unknown,
|
||||||
@HiveField(1)
|
@HiveField(1)
|
||||||
|
@ -85,7 +85,7 @@ enum ServerProvider {
|
||||||
@HiveField(2)
|
@HiveField(2)
|
||||||
digitalOcean;
|
digitalOcean;
|
||||||
|
|
||||||
factory ServerProvider.fromGraphQL(final Enum$ServerProvider provider) {
|
factory ServerProviderType.fromGraphQL(final Enum$ServerProvider provider) {
|
||||||
switch (provider) {
|
switch (provider) {
|
||||||
case Enum$ServerProvider.HETZNER:
|
case Enum$ServerProvider.HETZNER:
|
||||||
return hetzner;
|
return hetzner;
|
||||||
|
@ -98,9 +98,9 @@ enum ServerProvider {
|
||||||
|
|
||||||
String get displayName {
|
String get displayName {
|
||||||
switch (this) {
|
switch (this) {
|
||||||
case ServerProvider.hetzner:
|
case ServerProviderType.hetzner:
|
||||||
return 'Hetzner Cloud';
|
return 'Hetzner Cloud';
|
||||||
case ServerProvider.digitalOcean:
|
case ServerProviderType.digitalOcean:
|
||||||
return 'Digital Ocean';
|
return 'Digital Ocean';
|
||||||
default:
|
default:
|
||||||
return 'Unknown';
|
return 'Unknown';
|
||||||
|
|
|
@ -17,15 +17,15 @@ class ServerDomain {
|
||||||
@HiveField(1)
|
@HiveField(1)
|
||||||
final String zoneId;
|
final String zoneId;
|
||||||
|
|
||||||
@HiveField(2, defaultValue: DnsProvider.cloudflare)
|
@HiveField(2, defaultValue: DnsProviderType.cloudflare)
|
||||||
final DnsProvider provider;
|
final DnsProviderType provider;
|
||||||
|
|
||||||
@override
|
@override
|
||||||
String toString() => '$domainName: $zoneId';
|
String toString() => '$domainName: $zoneId';
|
||||||
}
|
}
|
||||||
|
|
||||||
@HiveType(typeId: 100)
|
@HiveType(typeId: 100)
|
||||||
enum DnsProvider {
|
enum DnsProviderType {
|
||||||
@HiveField(0)
|
@HiveField(0)
|
||||||
unknown,
|
unknown,
|
||||||
@HiveField(1)
|
@HiveField(1)
|
||||||
|
@ -33,7 +33,7 @@ enum DnsProvider {
|
||||||
@HiveField(2)
|
@HiveField(2)
|
||||||
digitalOcean;
|
digitalOcean;
|
||||||
|
|
||||||
factory DnsProvider.fromGraphQL(final Enum$DnsProvider provider) {
|
factory DnsProviderType.fromGraphQL(final Enum$DnsProvider provider) {
|
||||||
switch (provider) {
|
switch (provider) {
|
||||||
case Enum$DnsProvider.CLOUDFLARE:
|
case Enum$DnsProvider.CLOUDFLARE:
|
||||||
return cloudflare;
|
return cloudflare;
|
||||||
|
|
|
@ -1,20 +1,20 @@
|
||||||
import 'package:selfprivacy/logic/models/hive/server_details.dart';
|
import 'package:selfprivacy/logic/models/hive/server_details.dart';
|
||||||
import 'package:selfprivacy/logic/models/hive/server_domain.dart';
|
import 'package:selfprivacy/logic/models/hive/server_domain.dart';
|
||||||
|
|
||||||
class ServerProviderApiFactorySettings {
|
class ServerProviderSettings {
|
||||||
ServerProviderApiFactorySettings({
|
ServerProviderSettings({
|
||||||
required this.provider,
|
required this.provider,
|
||||||
this.location,
|
this.location,
|
||||||
});
|
});
|
||||||
|
|
||||||
final ServerProvider provider;
|
final ServerProviderType provider;
|
||||||
final String? location;
|
final String? location;
|
||||||
}
|
}
|
||||||
|
|
||||||
class DnsProviderApiFactorySettings {
|
class DnsProviderFactorySettings {
|
||||||
DnsProviderApiFactorySettings({
|
DnsProviderFactorySettings({
|
||||||
required this.provider,
|
required this.provider,
|
||||||
});
|
});
|
||||||
|
|
||||||
final DnsProvider provider;
|
final DnsProviderType provider;
|
||||||
}
|
}
|
20
lib/logic/providers/providers_controller.dart
Normal file
20
lib/logic/providers/providers_controller.dart
Normal file
|
@ -0,0 +1,20 @@
|
||||||
|
import 'package:selfprivacy/logic/providers/provider_settings.dart';
|
||||||
|
import 'package:selfprivacy/logic/providers/server_provider.dart';
|
||||||
|
import 'package:selfprivacy/logic/providers/server_providers/server_provider_factory.dart';
|
||||||
|
|
||||||
|
class ProvidersController {
|
||||||
|
static ServerProvider? get currentServerProvider => _serverProvider;
|
||||||
|
|
||||||
|
static void initServerProvider(
|
||||||
|
final ServerProviderSettings settings,
|
||||||
|
) {
|
||||||
|
_serverProvider =
|
||||||
|
ServerProviderFactory.createServerProviderInterface(settings);
|
||||||
|
}
|
||||||
|
|
||||||
|
static void clearProviders() {
|
||||||
|
_serverProvider = null;
|
||||||
|
}
|
||||||
|
|
||||||
|
static ServerProvider? _serverProvider;
|
||||||
|
}
|
5
lib/logic/providers/server_provider.dart
Normal file
5
lib/logic/providers/server_provider.dart
Normal file
|
@ -0,0 +1,5 @@
|
||||||
|
import 'package:selfprivacy/logic/api_maps/api_generic_result.dart';
|
||||||
|
|
||||||
|
abstract class ServerProvider {
|
||||||
|
Future<APIGenericResult<bool>> isApiTokenValid(final String apiToken);
|
||||||
|
}
|
3
lib/logic/providers/server_providers/digital_ocean.dart
Normal file
3
lib/logic/providers/server_providers/digital_ocean.dart
Normal file
|
@ -0,0 +1,3 @@
|
||||||
|
import 'package:selfprivacy/logic/providers/server_provider.dart';
|
||||||
|
|
||||||
|
class DigitalOceanServerProvider extends ServerProvider {}
|
|
@ -0,0 +1,3 @@
|
||||||
|
import 'package:selfprivacy/logic/providers/server_provider.dart';
|
||||||
|
|
||||||
|
class HetznerServerProvider extends ServerProvider {}
|
|
@ -1,14 +1,25 @@
|
||||||
|
import 'package:selfprivacy/logic/providers/provider_settings.dart';
|
||||||
|
import 'package:selfprivacy/logic/models/hive/server_details.dart';
|
||||||
|
import 'package:selfprivacy/logic/providers/server_provider.dart';
|
||||||
|
import 'package:selfprivacy/logic/providers/server_providers/digital_ocean.dart';
|
||||||
|
import 'package:selfprivacy/logic/providers/server_providers/hetzner.dart';
|
||||||
|
|
||||||
|
class UnknownProviderException implements Exception {
|
||||||
|
UnknownProviderException(this.message);
|
||||||
|
final String message;
|
||||||
|
}
|
||||||
|
|
||||||
class ServerProviderFactory {
|
class ServerProviderFactory {
|
||||||
static ServerProvider createServerProviderApiFactory(
|
static ServerProvider createServerProviderInterface(
|
||||||
final ServerProviderApiFactorySettings settings,
|
final ServerProviderSettings settings,
|
||||||
) {
|
) {
|
||||||
switch (settings.provider) {
|
switch (settings.provider) {
|
||||||
case ServerProvider.hetzner:
|
case ServerProviderType.hetzner:
|
||||||
return HetznerApiFactory(region: settings.location);
|
return HetznerServerProvider();
|
||||||
case ServerProvider.digitalOcean:
|
case ServerProviderType.digitalOcean:
|
||||||
return DigitalOceanApiFactory(region: settings.location);
|
return DigitalOceanServerProvider();
|
||||||
case ServerProvider.unknown:
|
case ServerProviderType.unknown:
|
||||||
throw UnknownApiProviderException('Unknown server provider');
|
throw UnknownProviderException('Unknown server provider');
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -28,9 +28,9 @@ class DnsProviderPicker extends StatefulWidget {
|
||||||
}
|
}
|
||||||
|
|
||||||
class _DnsProviderPickerState extends State<DnsProviderPicker> {
|
class _DnsProviderPickerState extends State<DnsProviderPicker> {
|
||||||
DnsProvider selectedProvider = DnsProvider.unknown;
|
DnsProviderType selectedProvider = DnsProviderType.unknown;
|
||||||
|
|
||||||
void setProvider(final DnsProvider provider) {
|
void setProvider(final DnsProviderType provider) {
|
||||||
setState(() {
|
setState(() {
|
||||||
selectedProvider = provider;
|
selectedProvider = provider;
|
||||||
});
|
});
|
||||||
|
@ -39,17 +39,17 @@ class _DnsProviderPickerState extends State<DnsProviderPicker> {
|
||||||
@override
|
@override
|
||||||
Widget build(final BuildContext context) {
|
Widget build(final BuildContext context) {
|
||||||
switch (selectedProvider) {
|
switch (selectedProvider) {
|
||||||
case DnsProvider.unknown:
|
case DnsProviderType.unknown:
|
||||||
return ProviderSelectionPage(
|
return ProviderSelectionPage(
|
||||||
serverInstallationCubit: widget.serverInstallationCubit,
|
serverInstallationCubit: widget.serverInstallationCubit,
|
||||||
callback: setProvider,
|
callback: setProvider,
|
||||||
);
|
);
|
||||||
|
|
||||||
case DnsProvider.cloudflare:
|
case DnsProviderType.cloudflare:
|
||||||
return ProviderInputDataPage(
|
return ProviderInputDataPage(
|
||||||
providerCubit: widget.formCubit,
|
providerCubit: widget.formCubit,
|
||||||
providerInfo: ProviderPageInfo(
|
providerInfo: ProviderPageInfo(
|
||||||
providerType: DnsProvider.cloudflare,
|
providerType: DnsProviderType.cloudflare,
|
||||||
pathToHow: 'how_cloudflare',
|
pathToHow: 'how_cloudflare',
|
||||||
image: Image.asset(
|
image: Image.asset(
|
||||||
'assets/images/logos/cloudflare.png',
|
'assets/images/logos/cloudflare.png',
|
||||||
|
@ -58,11 +58,11 @@ class _DnsProviderPickerState extends State<DnsProviderPicker> {
|
||||||
),
|
),
|
||||||
);
|
);
|
||||||
|
|
||||||
case DnsProvider.digitalOcean:
|
case DnsProviderType.digitalOcean:
|
||||||
return ProviderInputDataPage(
|
return ProviderInputDataPage(
|
||||||
providerCubit: widget.formCubit,
|
providerCubit: widget.formCubit,
|
||||||
providerInfo: ProviderPageInfo(
|
providerInfo: ProviderPageInfo(
|
||||||
providerType: DnsProvider.digitalOcean,
|
providerType: DnsProviderType.digitalOcean,
|
||||||
pathToHow: 'how_digital_ocean_dns',
|
pathToHow: 'how_digital_ocean_dns',
|
||||||
image: Image.asset(
|
image: Image.asset(
|
||||||
'assets/images/logos/digital_ocean.png',
|
'assets/images/logos/digital_ocean.png',
|
||||||
|
@ -83,7 +83,7 @@ class ProviderPageInfo {
|
||||||
|
|
||||||
final String pathToHow;
|
final String pathToHow;
|
||||||
final Image image;
|
final Image image;
|
||||||
final DnsProvider providerType;
|
final DnsProviderType providerType;
|
||||||
}
|
}
|
||||||
|
|
||||||
class ProviderInputDataPage extends StatelessWidget {
|
class ProviderInputDataPage extends StatelessWidget {
|
||||||
|
@ -227,8 +227,8 @@ class ProviderSelectionPage extends StatelessWidget {
|
||||||
title: 'basis.select'.tr(),
|
title: 'basis.select'.tr(),
|
||||||
onPressed: () {
|
onPressed: () {
|
||||||
serverInstallationCubit
|
serverInstallationCubit
|
||||||
.setDnsProviderType(DnsProvider.cloudflare);
|
.setDnsProviderType(DnsProviderType.cloudflare);
|
||||||
callback(DnsProvider.cloudflare);
|
callback(DnsProviderType.cloudflare);
|
||||||
},
|
},
|
||||||
),
|
),
|
||||||
// Outlined button that will open website
|
// Outlined button that will open website
|
||||||
|
@ -292,8 +292,8 @@ class ProviderSelectionPage extends StatelessWidget {
|
||||||
title: 'basis.select'.tr(),
|
title: 'basis.select'.tr(),
|
||||||
onPressed: () {
|
onPressed: () {
|
||||||
serverInstallationCubit
|
serverInstallationCubit
|
||||||
.setDnsProviderType(DnsProvider.digitalOcean);
|
.setDnsProviderType(DnsProviderType.digitalOcean);
|
||||||
callback(DnsProvider.digitalOcean);
|
callback(DnsProviderType.digitalOcean);
|
||||||
},
|
},
|
||||||
),
|
),
|
||||||
// Outlined button that will open website
|
// Outlined button that will open website
|
||||||
|
|
|
@ -29,9 +29,9 @@ class ServerProviderPicker extends StatefulWidget {
|
||||||
}
|
}
|
||||||
|
|
||||||
class _ServerProviderPickerState extends State<ServerProviderPicker> {
|
class _ServerProviderPickerState extends State<ServerProviderPicker> {
|
||||||
ServerProvider selectedProvider = ServerProvider.unknown;
|
ServerProviderType selectedProvider = ServerProviderType.unknown;
|
||||||
|
|
||||||
void setProvider(final ServerProvider provider) {
|
void setProvider(final ServerProviderType provider) {
|
||||||
setState(() {
|
setState(() {
|
||||||
selectedProvider = provider;
|
selectedProvider = provider;
|
||||||
});
|
});
|
||||||
|
@ -40,17 +40,17 @@ class _ServerProviderPickerState extends State<ServerProviderPicker> {
|
||||||
@override
|
@override
|
||||||
Widget build(final BuildContext context) {
|
Widget build(final BuildContext context) {
|
||||||
switch (selectedProvider) {
|
switch (selectedProvider) {
|
||||||
case ServerProvider.unknown:
|
case ServerProviderType.unknown:
|
||||||
return ProviderSelectionPage(
|
return ProviderSelectionPage(
|
||||||
serverInstallationCubit: widget.serverInstallationCubit,
|
serverInstallationCubit: widget.serverInstallationCubit,
|
||||||
callback: setProvider,
|
callback: setProvider,
|
||||||
);
|
);
|
||||||
|
|
||||||
case ServerProvider.hetzner:
|
case ServerProviderType.hetzner:
|
||||||
return ProviderInputDataPage(
|
return ProviderInputDataPage(
|
||||||
providerCubit: widget.formCubit,
|
providerCubit: widget.formCubit,
|
||||||
providerInfo: ProviderPageInfo(
|
providerInfo: ProviderPageInfo(
|
||||||
providerType: ServerProvider.hetzner,
|
providerType: ServerProviderType.hetzner,
|
||||||
pathToHow: 'how_hetzner',
|
pathToHow: 'how_hetzner',
|
||||||
image: Image.asset(
|
image: Image.asset(
|
||||||
'assets/images/logos/hetzner.png',
|
'assets/images/logos/hetzner.png',
|
||||||
|
@ -59,11 +59,11 @@ class _ServerProviderPickerState extends State<ServerProviderPicker> {
|
||||||
),
|
),
|
||||||
);
|
);
|
||||||
|
|
||||||
case ServerProvider.digitalOcean:
|
case ServerProviderType.digitalOcean:
|
||||||
return ProviderInputDataPage(
|
return ProviderInputDataPage(
|
||||||
providerCubit: widget.formCubit,
|
providerCubit: widget.formCubit,
|
||||||
providerInfo: ProviderPageInfo(
|
providerInfo: ProviderPageInfo(
|
||||||
providerType: ServerProvider.digitalOcean,
|
providerType: ServerProviderType.digitalOcean,
|
||||||
pathToHow: 'how_digital_ocean',
|
pathToHow: 'how_digital_ocean',
|
||||||
image: Image.asset(
|
image: Image.asset(
|
||||||
'assets/images/logos/digital_ocean.png',
|
'assets/images/logos/digital_ocean.png',
|
||||||
|
@ -84,7 +84,7 @@ class ProviderPageInfo {
|
||||||
|
|
||||||
final String pathToHow;
|
final String pathToHow;
|
||||||
final Image image;
|
final Image image;
|
||||||
final ServerProvider providerType;
|
final ServerProviderType providerType;
|
||||||
}
|
}
|
||||||
|
|
||||||
class ProviderInputDataPage extends StatelessWidget {
|
class ProviderInputDataPage extends StatelessWidget {
|
||||||
|
@ -242,8 +242,8 @@ class ProviderSelectionPage extends StatelessWidget {
|
||||||
title: 'basis.select'.tr(),
|
title: 'basis.select'.tr(),
|
||||||
onPressed: () {
|
onPressed: () {
|
||||||
serverInstallationCubit
|
serverInstallationCubit
|
||||||
.setServerProviderType(ServerProvider.hetzner);
|
.setServerProviderType(ServerProviderType.hetzner);
|
||||||
callback(ServerProvider.hetzner);
|
callback(ServerProviderType.hetzner);
|
||||||
},
|
},
|
||||||
),
|
),
|
||||||
// Outlined button that will open website
|
// Outlined button that will open website
|
||||||
|
@ -315,9 +315,9 @@ class ProviderSelectionPage extends StatelessWidget {
|
||||||
FilledButton(
|
FilledButton(
|
||||||
title: 'basis.select'.tr(),
|
title: 'basis.select'.tr(),
|
||||||
onPressed: () {
|
onPressed: () {
|
||||||
serverInstallationCubit
|
serverInstallationCubit.setServerProviderType(
|
||||||
.setServerProviderType(ServerProvider.digitalOcean);
|
ServerProviderType.digitalOcean);
|
||||||
callback(ServerProvider.digitalOcean);
|
callback(ServerProviderType.digitalOcean);
|
||||||
},
|
},
|
||||||
),
|
),
|
||||||
// Outlined button that will open website
|
// Outlined button that will open website
|
||||||
|
|
Loading…
Reference in a new issue