Line data Source code
1 : import 'dart:io';
2 :
3 : import 'package:logging/logging.dart';
4 : import 'package:network_tools/network_tools.dart' as packages_page;
5 : import 'package:network_tools/src/injection.dart';
6 : import 'package:network_tools/src/models/arp_data.dart';
7 : import 'package:network_tools/src/models/vendor.dart';
8 : import 'package:network_tools/src/repository/repository.dart';
9 : import 'package:network_tools/src/services/impls/host_scanner_service_impl.dart';
10 : import 'package:network_tools/src/services/impls/mdns_scanner_service_impl.dart';
11 : import 'package:network_tools/src/services/impls/port_scanner_service_impl.dart';
12 :
13 : /// Configures the network tools package for Dart native platforms.
14 : ///
15 : /// Sets up the database directory, enables debugging if specified, and initializes
16 : /// all required service implementations and vendor tables for network operations.
17 1 : Future<void> configureNetworkTools(
18 : String dbDirectory, {
19 : bool enableDebugging = false,
20 : bool rebuildData = false,
21 : }) async {
22 1 : final logger = Logger('configure_network_tools');
23 : packages_page.enableDebugging = enableDebugging;
24 : packages_page.dbDirectory = dbDirectory;
25 :
26 2 : final Directory newDirectory = Directory(packages_page.dbDirectory);
27 1 : await newDirectory.create(recursive: true);
28 3 : logger.fine('Directory created successfully: ${newDirectory.path}');
29 :
30 1 : if (packages_page.enableDebugging) {
31 2 : Logger.root.level = Level.FINE;
32 4 : Logger.root.onRecord.listen((record) {
33 3 : if (record.loggerName == logger.name) {
34 : // When debugging is enabled, log only the network_tools logger
35 : // ignore: avoid_print
36 0 : print(
37 0 : '${record.time.toLocal()}: ${record.level.name}: ${record.loggerName}: ${record.message}',
38 : );
39 : }
40 : });
41 : }
42 :
43 : // Setting dart native classes implementations
44 1 : HostScannerServiceImpl();
45 1 : PortScannerServiceImpl();
46 1 : MdnsScannerServiceImpl();
47 :
48 1 : await initializeNetworkTools(rebuildData);
49 : }
50 :
51 : /// Initializes the ARP table and vendor table map for network operations.
52 1 : Future<void> initializeNetworkTools(bool rebuildData) async {
53 1 : configureDependencies(Env.prod);
54 : if (rebuildData) {
55 0 : await getIt<Repository<ARPData>>().clear();
56 : }
57 3 : await getIt<Repository<ARPData>>().build();
58 3 : await getIt<Repository<Vendor>>().build();
59 : }
|