Peer to peer connection keepalive task
This commit is contained in:
parent
8b6bc354bd
commit
dee0243268
59
common/network/ping.nix
Normal file
59
common/network/ping.nix
Normal file
@ -0,0 +1,59 @@
|
|||||||
|
{ config, pkgs, lib, ... }:
|
||||||
|
|
||||||
|
# keeps peer to peer connections alive with a periodic ping
|
||||||
|
|
||||||
|
with lib;
|
||||||
|
with builtins;
|
||||||
|
|
||||||
|
# todo auto restart
|
||||||
|
|
||||||
|
let
|
||||||
|
cfg = config.keepalive-ping;
|
||||||
|
|
||||||
|
# keepalive-ping = {
|
||||||
|
serviceTemplate = host:
|
||||||
|
{
|
||||||
|
"keepalive-ping@${host}" = {
|
||||||
|
description = "Periodic ping keep alive for ${host} connection";
|
||||||
|
|
||||||
|
requires = [ "network-online.target" ];
|
||||||
|
after = [ "network.target" "network-online.target" ];
|
||||||
|
wantedBy = [ "multi-user.target" ];
|
||||||
|
serviceConfig.Restart="always";
|
||||||
|
|
||||||
|
path = with pkgs; [ iputils ];
|
||||||
|
|
||||||
|
script = ''
|
||||||
|
ping -i ${cfg.delay} ${host} &>/dev/null
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
combineAttrs = foldl recursiveUpdate {};
|
||||||
|
|
||||||
|
serviceList = map serviceTemplate cfg.hosts;
|
||||||
|
|
||||||
|
services = combineAttrs serviceList;
|
||||||
|
in {
|
||||||
|
options.keepalive-ping = {
|
||||||
|
enable = mkEnableOption "Enable keep alive ping task";
|
||||||
|
hosts = mkOption {
|
||||||
|
type = types.listOf types.str;
|
||||||
|
default = [];
|
||||||
|
description = ''
|
||||||
|
Hosts to ping periodically
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
delay = mkOption {
|
||||||
|
type = types.str;
|
||||||
|
default = "60";
|
||||||
|
description = ''
|
||||||
|
Ping interval in seconds of periodic ping per host being pinged
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
config = mkIf cfg.enable {
|
||||||
|
systemd.services = services;
|
||||||
|
};
|
||||||
|
}
|
Loading…
x
Reference in New Issue
Block a user