forked from SelfPrivacy/selfprivacy.org.app
update
parent
0ed5fbdd2e
commit
a8262229c0
|
@ -47,8 +47,8 @@ class HetznerApi extends ApiMap {
|
|||
"ssh_keys": [],
|
||||
"volumes": [],
|
||||
"networks": [],
|
||||
"user_data":
|
||||
"#cloud-config\nruncmd:\n- curl https://git.selfprivacy.org/ilchub/selfprivacy-nixos-infect/raw/branch/master/nixos-infect | PROVIDER=hetzner NIX_CHANNEL=nixos-20.09 DOMAIN=$domainName USER=${rootUser.login} PASSWORD=${rootUser.password} HASHED_PASSWORD=${rootUser.hashPassword} bash 2>&1 | tee /tmp/infect.log \nruncmd:\n- curl https://git.selfprivacy.org/ilchub/selfprivacy-nixos-infect/raw/branch/master/nixos-infect | PROVIDER=hetzner NIX_CHANNEL=nixos-20.09 DOMAIN=$domainName USER=${rootUser.login} PASSWORD=${rootUser.password} HASHED_PASSWORD=${rootUser.hashPassword} bash 2>&1 | tee /tmp/infect.log",
|
||||
'user-data':
|
||||
'#cloud-config\nruncmd:\n- curl https://git.selfprivacy.org/ilchub/selfprivacy-nixos-infect/raw/branch/master/nixos-infect | PROVIDER=hetzner NIX_CHANNEL=nixos-20.09 DOMAIN=$domainName USER=${rootUser.login} PASSWORD=${rootUser.password} HASHED_PASSWORD=${rootUser.hashPassword} bash 2>&1 | tee /tmp/infect.log'
|
||||
};
|
||||
Response response = await client.post(
|
||||
rootAddress,
|
||||
|
|
|
@ -0,0 +1,10 @@
|
|||
enum InitializingSteps {
|
||||
setHeznerKey,
|
||||
setCloudFlareKey,
|
||||
setDomainName,
|
||||
setRootUser,
|
||||
createServer,
|
||||
checkCloudFlareDns,
|
||||
startServer,
|
||||
checkSystemDnsAndDkimSet,
|
||||
}
|
|
@ -1,5 +1,3 @@
|
|||
import 'dart:io';
|
||||
|
||||
import 'package:bloc/bloc.dart';
|
||||
import 'package:equatable/equatable.dart';
|
||||
import 'package:hive/hive.dart';
|
||||
|
@ -9,6 +7,7 @@ import 'package:selfprivacy/logic/api_maps/hetzner.dart';
|
|||
import 'package:selfprivacy/logic/models/cloudflare_domain.dart';
|
||||
import 'package:selfprivacy/logic/models/server_details.dart';
|
||||
import 'package:selfprivacy/logic/models/user.dart';
|
||||
import 'package:basic_utils/basic_utils.dart';
|
||||
|
||||
part 'app_config_state.dart';
|
||||
|
||||
|
@ -67,14 +66,20 @@ class AppConfigCubit extends Cubit<AppConfigState> {
|
|||
];
|
||||
var hasError = false;
|
||||
for (var address in addresses) {
|
||||
var res = await InternetAddress.lookup(address);
|
||||
if (res.isEmpty || res[0].address != ip4) {
|
||||
var res = await DnsUtils.lookupRecord(
|
||||
address,
|
||||
RRecordType.A,
|
||||
provider: DnsApiProvider.CLOUDFLARE,
|
||||
);
|
||||
if (res.isEmpty || res[0].data != ip4) {
|
||||
hasError = true;
|
||||
break;
|
||||
}
|
||||
}
|
||||
if (hasError) {
|
||||
emit(state.copyWith(error: Exception('dns checking error')));
|
||||
emit(state.copyWith(error: Exception('dns cloudflare checking error')));
|
||||
} else {
|
||||
print('check complete');
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -1,5 +1,3 @@
|
|||
import 'dart:io';
|
||||
|
||||
import 'package:cubit_form/cubit_form.dart';
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:flutter_bloc/flutter_bloc.dart';
|
||||
|
@ -26,7 +24,6 @@ class InitializingPage extends StatelessWidget {
|
|||
@override
|
||||
Widget build(BuildContext context) {
|
||||
var cubit = context.watch<AppConfigCubit>();
|
||||
print(cubit.state.error);
|
||||
var actualPage = [
|
||||
_stepHetzner(cubit),
|
||||
_stepCloudflare(cubit),
|
||||
|
@ -269,9 +266,7 @@ class InitializingPage extends StatelessWidget {
|
|||
return Column(
|
||||
crossAxisAlignment: CrossAxisAlignment.start,
|
||||
children: [
|
||||
Spacer(
|
||||
flex: 2,
|
||||
),
|
||||
Spacer(flex: 2),
|
||||
BrandText.h2('Создать сервер'),
|
||||
SizedBox(height: 10),
|
||||
BrandText.body2('Создать сервер'),
|
||||
|
@ -280,9 +275,7 @@ class InitializingPage extends StatelessWidget {
|
|||
onPressed: isLoading ? null : appConfigCubit.createServer,
|
||||
title: isLoading ? 'loading' : 'Создать сервер',
|
||||
),
|
||||
Spacer(
|
||||
flex: 2,
|
||||
),
|
||||
Spacer(flex: 2),
|
||||
BrandButton.text(
|
||||
onPressed: () => _showModal(context, _HowHetzner()),
|
||||
title: 'Что это значит?',
|
||||
|
@ -295,7 +288,6 @@ class InitializingPage extends StatelessWidget {
|
|||
Widget _stepCheck(AppConfigCubit appConfigCubit) {
|
||||
var state = appConfigCubit.state;
|
||||
var error = state.error;
|
||||
print(error);
|
||||
return Builder(builder: (context) {
|
||||
return Column(
|
||||
crossAxisAlignment: CrossAxisAlignment.start,
|
||||
|
@ -320,7 +312,6 @@ class InitializingPage extends StatelessWidget {
|
|||
duration: Duration(minutes: 10),
|
||||
callback: () {
|
||||
appConfigCubit.checkDns();
|
||||
// print(state.server.ip4);
|
||||
},
|
||||
),
|
||||
],
|
||||
|
@ -341,9 +332,7 @@ class InitializingPage extends StatelessWidget {
|
|||
return Container(
|
||||
height: 500,
|
||||
padding: brandPagePadding2,
|
||||
child: BrandCard(
|
||||
child: child,
|
||||
),
|
||||
child: BrandCard(child: child),
|
||||
);
|
||||
}
|
||||
}
|
||||
|
|
14
pubspec.lock
14
pubspec.lock
|
@ -36,6 +36,13 @@ packages:
|
|||
url: "https://pub.dartlang.org"
|
||||
source: hosted
|
||||
version: "2.5.0-nullsafety.1"
|
||||
basic_utils:
|
||||
dependency: "direct dev"
|
||||
description:
|
||||
name: basic_utils
|
||||
url: "https://pub.dartlang.org"
|
||||
source: hosted
|
||||
version: "2.7.0-rc.4"
|
||||
bloc:
|
||||
dependency: transitive
|
||||
description:
|
||||
|
@ -539,6 +546,13 @@ packages:
|
|||
url: "https://pub.dartlang.org"
|
||||
source: hosted
|
||||
version: "1.0.3"
|
||||
pointycastle:
|
||||
dependency: transitive
|
||||
description:
|
||||
name: pointycastle
|
||||
url: "https://pub.dartlang.org"
|
||||
source: hosted
|
||||
version: "2.0.0"
|
||||
pool:
|
||||
dependency: transitive
|
||||
description:
|
||||
|
|
|
@ -28,6 +28,7 @@ dependencies:
|
|||
dev_dependencies:
|
||||
flutter_test:
|
||||
sdk: flutter
|
||||
basic_utils: ^2.6.3
|
||||
build_runner: ^1.10.11
|
||||
flutter_launcher_icons: ^0.8.1
|
||||
hive_generator: ^0.8.2
|
||||
|
|
Loading…
Reference in New Issue