43 lines
1.1 KiB
Dart
43 lines
1.1 KiB
Dart
import 'package:http/http.dart';
|
|
import 'package:logger/logger.dart';
|
|
import 'dart:convert';
|
|
import 'package:dbcrypt/dbcrypt.dart';
|
|
|
|
import 'connection.dart';
|
|
|
|
|
|
final log = Logger();
|
|
|
|
Future<bool> verifyServer(Uri serverAddr, Uri zTargetAddr, {Map<String, String> routes=defaultRoutes}) async {
|
|
String botZTargetUri = serverAddr.toString() + routes['ping'];
|
|
|
|
log.d("botZ server uri: $botZTargetUri");
|
|
log.d("z server: ${zTargetAddr.toString()}");
|
|
|
|
var resp = await get(
|
|
botZTargetUri,
|
|
);
|
|
|
|
log.d("Status code: ${resp.statusCode}");
|
|
if (resp.statusCode >= 300 || resp.statusCode < 200) {
|
|
log.d("Status code is not 2xx: $resp.statusCode");
|
|
return false;
|
|
}
|
|
|
|
Map<String, dynamic> respData = jsonDecode(resp.body);
|
|
|
|
log.d("Response: ${respData.toString()}");
|
|
if (!respData.containsKey('hash')) {
|
|
log.d("Response is malformed: ${respData.toString()}");
|
|
return false;
|
|
}
|
|
|
|
if (!DBCrypt().checkpw(zTargetAddr.toString(), respData['hash'])) {
|
|
log.d("The server answer do not match the expected response: ${respData.toString()}");
|
|
return false;
|
|
}
|
|
|
|
log.d("Response is ok!");
|
|
return true;
|
|
}
|