mirror of
https://github.com/JGeek00/adguard-home-manager.git
synced 2025-05-04 20:30:35 +00:00
Added get server status
This commit is contained in:
parent
97e4fea015
commit
4ab8ff760c
5 changed files with 81 additions and 23 deletions
28
lib/models/server_status.dart
Normal file
28
lib/models/server_status.dart
Normal file
|
@ -0,0 +1,28 @@
|
||||||
|
import 'package:adguard_home_manager/models/dns_statistics.dart';
|
||||||
|
|
||||||
|
class ServerStatus {
|
||||||
|
final DnsStatistics stats;
|
||||||
|
final bool generalEnabled;
|
||||||
|
final bool filteringEnabled;
|
||||||
|
final bool safeSearchEnabled;
|
||||||
|
final bool safeBrowsingEnabled;
|
||||||
|
final bool parentalControlEnabled;
|
||||||
|
|
||||||
|
const ServerStatus({
|
||||||
|
required this.stats,
|
||||||
|
required this.generalEnabled,
|
||||||
|
required this.filteringEnabled,
|
||||||
|
required this.safeSearchEnabled,
|
||||||
|
required this.safeBrowsingEnabled,
|
||||||
|
required this.parentalControlEnabled
|
||||||
|
});
|
||||||
|
|
||||||
|
factory ServerStatus.fromJson(Map<String, dynamic> json) => ServerStatus(
|
||||||
|
stats: DnsStatistics.fromJson(json['stats']),
|
||||||
|
generalEnabled: json['generalEnabled']['protection_enabled'],
|
||||||
|
filteringEnabled: json['filteringEnabled']['enabled'],
|
||||||
|
safeSearchEnabled: json['safeSearchEnabled']['enabled'],
|
||||||
|
safeBrowsingEnabled: json['safeBrowsingEnabled']['enabled'],
|
||||||
|
parentalControlEnabled: json['parentalControlEnabled']['enabled']
|
||||||
|
);
|
||||||
|
}
|
|
@ -1,4 +1,5 @@
|
||||||
import 'package:adguard_home_manager/models/dns_statistics.dart';
|
import 'package:adguard_home_manager/models/dns_statistics.dart';
|
||||||
|
import 'package:adguard_home_manager/models/server_status.dart';
|
||||||
import 'package:adguard_home_manager/services/http_requests.dart';
|
import 'package:adguard_home_manager/services/http_requests.dart';
|
||||||
import 'package:flutter/material.dart';
|
import 'package:flutter/material.dart';
|
||||||
import 'package:sqflite/sqflite.dart';
|
import 'package:sqflite/sqflite.dart';
|
||||||
|
@ -12,7 +13,7 @@ class ServersProvider with ChangeNotifier {
|
||||||
List<Server> _serversList = [];
|
List<Server> _serversList = [];
|
||||||
Server? _selectedServer;
|
Server? _selectedServer;
|
||||||
bool? _isServerConnected;
|
bool? _isServerConnected;
|
||||||
DnsStatistics? _dnsStatistics;
|
ServerStatus? _serverStatus;
|
||||||
|
|
||||||
List<Server> get serversList {
|
List<Server> get serversList {
|
||||||
return _serversList;
|
return _serversList;
|
||||||
|
@ -26,8 +27,8 @@ class ServersProvider with ChangeNotifier {
|
||||||
return _isServerConnected;
|
return _isServerConnected;
|
||||||
}
|
}
|
||||||
|
|
||||||
DnsStatistics? get dnsStatistics {
|
ServerStatus? get serverStatus {
|
||||||
return _dnsStatistics;
|
return _serverStatus;
|
||||||
}
|
}
|
||||||
|
|
||||||
void setDbInstance(Database db) {
|
void setDbInstance(Database db) {
|
||||||
|
@ -49,8 +50,8 @@ class ServersProvider with ChangeNotifier {
|
||||||
notifyListeners();
|
notifyListeners();
|
||||||
}
|
}
|
||||||
|
|
||||||
void setDnsStatistics(DnsStatistics data) {
|
void setServerStatus(ServerStatus data) {
|
||||||
_dnsStatistics = data;
|
_serverStatus = data;
|
||||||
notifyListeners();
|
notifyListeners();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -208,9 +209,9 @@ class ServersProvider with ChangeNotifier {
|
||||||
_serversList.add(serverObj);
|
_serversList.add(serverObj);
|
||||||
if (convertFromIntToBool(server['defaultServer']) == true) {
|
if (convertFromIntToBool(server['defaultServer']) == true) {
|
||||||
_selectedServer = serverObj;
|
_selectedServer = serverObj;
|
||||||
final dnsStatistics = await getDnsStatistics(serverObj);
|
final serverStatus = await getServerStatus(serverObj);
|
||||||
if (dnsStatistics['result'] == 'success') {
|
if (serverStatus['result'] == 'success') {
|
||||||
_dnsStatistics = dnsStatistics['data'];
|
_serverStatus = serverStatus['data'];
|
||||||
_isServerConnected = true;
|
_isServerConnected = true;
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
|
|
|
@ -6,9 +6,19 @@ import 'dart:io';
|
||||||
|
|
||||||
import 'package:http/http.dart' as http;
|
import 'package:http/http.dart' as http;
|
||||||
|
|
||||||
|
import 'package:adguard_home_manager/models/server_status.dart';
|
||||||
import 'package:adguard_home_manager/models/dns_statistics.dart';
|
import 'package:adguard_home_manager/models/dns_statistics.dart';
|
||||||
import 'package:adguard_home_manager/models/server.dart';
|
import 'package:adguard_home_manager/models/server.dart';
|
||||||
|
|
||||||
|
Future<http.Response> getRequest(String urlPath, Server server) {
|
||||||
|
return http.get(
|
||||||
|
Uri.parse("${server.connectionMethod}://${server.domain}${server.path ?? ""}${server.port != null ? ':${server.port}' : ""}/control$urlPath"),
|
||||||
|
headers: {
|
||||||
|
'Authorization': 'Basic ${server.authToken}'
|
||||||
|
}
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
Future login(Server server) async {
|
Future login(Server server) async {
|
||||||
try {
|
try {
|
||||||
final result = await http.post(
|
final result = await http.post(
|
||||||
|
@ -47,18 +57,37 @@ Future login(Server server) async {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
Future getDnsStatistics(Server server) async {
|
Future getServerStatus(Server server) async {
|
||||||
try {
|
try {
|
||||||
final result = await http.get(
|
final result = await Future.wait([
|
||||||
Uri.parse("${server.connectionMethod}://${server.domain}${server.path ?? ""}${server.port != null ? ':${server.port}' : ""}/control/stats"),
|
getRequest('/stats', server),
|
||||||
headers: {
|
getRequest('/status', server),
|
||||||
'Authorization': 'Basic ${server.authToken}'
|
getRequest('/filtering/status', server),
|
||||||
}
|
getRequest('/safesearch/status', server),
|
||||||
);
|
getRequest('/safebrowsing/status', server),
|
||||||
if (result.statusCode == 200) {
|
getRequest('/parental/status', server),
|
||||||
|
]);
|
||||||
|
|
||||||
|
if (
|
||||||
|
result[0].statusCode == 200 &&
|
||||||
|
result[1].statusCode == 200 &&
|
||||||
|
result[2].statusCode == 200 &&
|
||||||
|
result[3].statusCode == 200 &&
|
||||||
|
result[4].statusCode == 200 &&
|
||||||
|
result[5].statusCode == 200
|
||||||
|
) {
|
||||||
|
final Map<String, dynamic> mappedData = {
|
||||||
|
'stats': jsonDecode(result[0].body),
|
||||||
|
'generalEnabled': jsonDecode(result[1].body),
|
||||||
|
'filteringEnabled': jsonDecode(result[2].body),
|
||||||
|
'safeSearchEnabled': jsonDecode(result[3].body),
|
||||||
|
'safeBrowsingEnabled': jsonDecode(result[4].body),
|
||||||
|
'parentalControlEnabled': jsonDecode(result[5].body),
|
||||||
|
};
|
||||||
|
|
||||||
return {
|
return {
|
||||||
'result': 'success',
|
'result': 'success',
|
||||||
'data': DnsStatistics.fromJson(jsonDecode(result.body))
|
'data': ServerStatus.fromJson(mappedData)
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
|
|
|
@ -225,9 +225,9 @@ class _AddServerModalState extends State<AddServerModal> {
|
||||||
serverObj.authToken = encodeBase64UserPass(serverObj.user, serverObj.password);
|
serverObj.authToken = encodeBase64UserPass(serverObj.user, serverObj.password);
|
||||||
final serverCreated = await serversProvider.createServer(serverObj);
|
final serverCreated = await serversProvider.createServer(serverObj);
|
||||||
if (serverCreated == true) {
|
if (serverCreated == true) {
|
||||||
final dnsStatistics = await getDnsStatistics(serverObj);
|
final serverStatus = await getServerStatus(serverObj);
|
||||||
if (dnsStatistics['result'] == 'success') {
|
if (serverStatus['result'] == 'success') {
|
||||||
serversProvider.setDnsStatistics(dnsStatistics['data']);
|
serversProvider.setServerStatus(serverStatus['data']);
|
||||||
serversProvider.setIsServerConnected(true);
|
serversProvider.setIsServerConnected(true);
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
|
|
|
@ -62,9 +62,9 @@ class ServersList extends StatelessWidget {
|
||||||
if (result['result'] == 'success') {
|
if (result['result'] == 'success') {
|
||||||
serversProvider.setSelectedServer(server);
|
serversProvider.setSelectedServer(server);
|
||||||
|
|
||||||
final dnsStatistics = await getDnsStatistics(server);
|
final serverStatus = await getServerStatus(server);
|
||||||
if (dnsStatistics['result'] == 'success') {
|
if (serverStatus['result'] == 'success') {
|
||||||
serversProvider.setDnsStatistics(dnsStatistics['data']);
|
serversProvider.setServerStatus(serverStatus['data']);
|
||||||
serversProvider.setIsServerConnected(true);
|
serversProvider.setIsServerConnected(true);
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue