Analyze reachable node data produced by
p2p-crawler and extract suitable seed nodes in a
makeseeds.py-compatible format
- Supports all network types (IPv4, IPv6, CJDNS, Onion, I2P)
- Easy deployment of periodic scheduled runs via Nix flake providing a Nix module
- Automatic publication of results via FTP
The repository includes Nix flake which provides a Nix module (see
module.nix for details) for simple deployments. Just include the
flake, import the module and enable the service:
imports = [
seed-exporter.nixosModules.seed-exporter
];
services.seed-exporter.enable = true;By default, the service is scheduled to run at 12 noon every day. It will look for input
data produced by p2p-crawler in /home/p2p-crawler and write
results to /home/seed-exporter. These settings can be changed via the schedule,
crawlerPath, and resultPath settings (see module.nix for
details).
The service can be configured to automatically publish results via FTP. The code was designed to accept the required credentials from a file to make it compatible with SOPS-nix-style secret management:
sops.secrets."seed-exporter/ftp-password".owner = config.users.users.seed-exporter.name;
services.seed-exporter = {
enable = true;
uploadResult = {
enable = true;
ftp = {
address = "XX.XX.XX.XX";
username = "johndoe";
passwordFile = config.sops.secrets."seed-exporter/ftp-password".path;
destination = "public_html/seeds.txt.gz";
};
};
};usage: seed-exporter [-h] [--log-level LOG_LEVEL] [--crawler-path CRAWLER_PATH] [--result-path RESULT_PATH] [--upload-result | --no-upload-result]
[--ftp-address FTP_ADDRESS] [--ftp-port FTP_PORT] [--ftp-username FTP_USERNAME] [--ftp-password-file FTP_PASSWORD_FILE]
[--ftp-destination FTP_DESTINATION]
options:
-h, --help show this help message and exit
--log-level LOG_LEVEL
Logging verbosity
--crawler-path CRAWLER_PATH
Directory containing p2p-crawler results
--result-path RESULT_PATH
Directory for results
--upload-result, --no-upload-result
Upload results to FTP (default: disabled)
--ftp-address FTP_ADDRESS
FTP server address
--ftp-port FTP_PORT FTP server port
--ftp-username FTP_USERNAME
FTP server user
--ftp-password-file FTP_PASSWORD_FILE
File containing FTP server password
--ftp-destination FTP_DESTINATION
FTP server file destination
This software is made available under the MIT license. See LICENSE for more details.