commit
8b8f864e48
@ -331,6 +331,7 @@
|
||||
./services/networking/openfire.nix
|
||||
./services/networking/openntpd.nix
|
||||
./services/networking/openvpn.nix
|
||||
./services/networking/ostinato.nix
|
||||
./services/networking/polipo.nix
|
||||
./services/networking/prayer.nix
|
||||
./services/networking/privoxy.nix
|
||||
|
104
nixos/modules/services/networking/ostinato.nix
Normal file
104
nixos/modules/services/networking/ostinato.nix
Normal file
@ -0,0 +1,104 @@
|
||||
{ config, lib, pkgs, ... }:
|
||||
|
||||
with lib;
|
||||
|
||||
let
|
||||
pkg = pkgs.ostinato;
|
||||
cfg = config.services.ostinato;
|
||||
configFile = pkgs.writeText "drone.ini" ''
|
||||
[General]
|
||||
RateAccuracy=${cfg.rateAccuracy}
|
||||
|
||||
[RpcServer]
|
||||
Address=${cfg.rpcServer.address}
|
||||
|
||||
[PortList]
|
||||
Include=${concatStringsSep "," cfg.portList.include}
|
||||
Exclude=${concatStringsSep "," cfg.portList.exclude}
|
||||
'';
|
||||
|
||||
in
|
||||
{
|
||||
|
||||
###### interface
|
||||
|
||||
options = {
|
||||
|
||||
services.ostinato = {
|
||||
|
||||
enable = mkEnableOption "Ostinato agent-controller (Drone)";
|
||||
|
||||
port = mkOption {
|
||||
type = types.int;
|
||||
default = 7878;
|
||||
description = ''
|
||||
Port to listen on.
|
||||
'';
|
||||
};
|
||||
|
||||
rateAccuracy = mkOption {
|
||||
type = types.enum [ "High" "Low" ];
|
||||
default = "High";
|
||||
description = ''
|
||||
To ensure that the actual transmit rate is as close as possible to
|
||||
the configured transmit rate, Drone runs a busy-wait loop.
|
||||
While this provides the maximum accuracy possible, the CPU
|
||||
utilization is 100% while the transmit is on. You can however,
|
||||
sacrifice the accuracy to reduce the CPU load.
|
||||
'';
|
||||
};
|
||||
|
||||
rpcServer = {
|
||||
address = mkOption {
|
||||
type = types.string;
|
||||
default = "0.0.0.0";
|
||||
description = ''
|
||||
By default, the Drone RPC server will listen on all interfaces and
|
||||
local IPv4 adresses for incoming connections from clients. Specify
|
||||
a single IPv4 or IPv6 address if you want to restrict that.
|
||||
To listen on any IPv6 address, use ::
|
||||
'';
|
||||
};
|
||||
};
|
||||
|
||||
portList = {
|
||||
include = mkOption {
|
||||
type = types.listOf types.string;
|
||||
default = [];
|
||||
example = ''[ "eth*" "lo*" ]'';
|
||||
description = ''
|
||||
For a port to pass the filter and appear on the port list managed
|
||||
by drone, it be allowed by this include list.
|
||||
'';
|
||||
};
|
||||
exclude = mkOption {
|
||||
type = types.listOf types.str;
|
||||
default = [];
|
||||
example = ''[ "usbmon*" "eth0" ]'';
|
||||
description = ''
|
||||
A list of ports does not appear on the port list managed by drone.
|
||||
'';
|
||||
};
|
||||
};
|
||||
|
||||
};
|
||||
|
||||
};
|
||||
|
||||
###### implementation
|
||||
|
||||
config = mkIf cfg.enable {
|
||||
|
||||
environment.systemPackages = [ pkg ];
|
||||
|
||||
systemd.services.drone = {
|
||||
description = "Ostinato agent-controller";
|
||||
wantedBy = [ "multi-user.target" ];
|
||||
script = ''
|
||||
${pkg}/bin/drone ${toString cfg.port} ${configFile}
|
||||
'';
|
||||
};
|
||||
|
||||
};
|
||||
|
||||
}
|
64
pkgs/applications/networking/ostinato/default.nix
Normal file
64
pkgs/applications/networking/ostinato/default.nix
Normal file
@ -0,0 +1,64 @@
|
||||
{ stdenv, fetchgit, fetchurl, writeText
|
||||
, qt4, protobuf, libpcap
|
||||
, wireshark, gzip, diffutils, gawk
|
||||
}:
|
||||
|
||||
stdenv.mkDerivation rec {
|
||||
name = "ostinato-2015-12-24";
|
||||
src = fetchgit {
|
||||
url = "https://github.com/pstavirs/ostinato.git";
|
||||
rev = "414d89860de0987843295d149bcabeac7c6fd9e5";
|
||||
sha256 = "0hb78bq51r93p0yr4l1z5xlf1i666v5pa3zkdj7jmpb879kj05dx";
|
||||
};
|
||||
|
||||
ostinato_png = fetchurl {
|
||||
url = "http://ostinato.org/images/site-logo.png";
|
||||
sha256 = "f5c067823f2934e4d358d76f65a343efd69ad783a7aeabd7ab4ce3cd03490d70";
|
||||
};
|
||||
|
||||
buildInputs = [ qt4 protobuf libpcap ];
|
||||
|
||||
patches = [ ./drone_ini.patch ];
|
||||
|
||||
configurePhase = "qmake PREFIX=$out"
|
||||
+ stdenv.lib.optionalString stdenv.isDarwin " -spec macx-g++";
|
||||
|
||||
postInstall = ''
|
||||
cat > $out/bin/ostinato.ini <<EOF
|
||||
WiresharkPath=${wireshark}/bin/wireshark
|
||||
TsharkPath=${wireshark}/bin/tshark
|
||||
GzipPath=${gzip}/bin/gzip
|
||||
DiffPath=${diffutils}/bin/diff
|
||||
AwkPath=${gawk}/bin/awk
|
||||
EOF
|
||||
|
||||
mkdir -p $out/share/pixmaps
|
||||
cp ${ostinato_png} $out/share/pixmaps/ostinato.png
|
||||
|
||||
# Create a desktop item.
|
||||
mkdir -p $out/share/applications
|
||||
cat > $out/share/applications/ostinato.desktop <<EOF
|
||||
[Desktop Entry]
|
||||
Type=Application
|
||||
Encoding=UTF-8
|
||||
Name=Ostinato
|
||||
GenericName=Packet/Traffic Generator and Analyzer
|
||||
GenericName[it]=Generatore ed Analizzatore di pacchetti di rete
|
||||
Comment=Network packet and traffic generator and analyzer with a friendly GUI
|
||||
Comment[it]=Generatore ed Analizzatore di pacchetti di rete con interfaccia amichevole
|
||||
Icon=$out/share/pixmaps/ostinato.png
|
||||
Exec=$out/bin/ostinato
|
||||
Terminal=false
|
||||
Categories=Network;
|
||||
StartupNotify=true
|
||||
EOF
|
||||
'';
|
||||
|
||||
meta = with stdenv.lib; {
|
||||
description = "A packet traffic generator and analyzer";
|
||||
homepage = http://ostinato.org;
|
||||
license = licenses.gpl3;
|
||||
maintainers = with maintainers; [ rick68 ];
|
||||
platforms = platforms.linux; # also OS X and cygwin
|
||||
};
|
||||
}
|
14
pkgs/applications/networking/ostinato/drone_ini.patch
Normal file
14
pkgs/applications/networking/ostinato/drone_ini.patch
Normal file
@ -0,0 +1,14 @@
|
||||
diff -Nru ostinato-414d89860de0987843295d149bcabeac7c6fd9e5/server/drone_main.cpp ostinato-414d89860de0987843295d149bcabeac7c6fd9e5.new/server/drone_main.cpp
|
||||
--- ostinato-414d89860de0987843295d149bcabeac7c6fd9e5/server/drone_main.cpp 2015-12-24 16:46:35.000000000 +0800
|
||||
+++ ostinato-414d89860de0987843295d149bcabeac7c6fd9e5.new/server/drone_main.cpp 2015-12-30 20:59:04.319199699 +0800
|
||||
@@ -62,8 +62,8 @@
|
||||
/* (Portable Mode) If we have a .ini file in the same directory as the
|
||||
executable, we use that instead of the platform specific location
|
||||
and format for the settings */
|
||||
- QString portableIni = QCoreApplication::applicationDirPath()
|
||||
- + "/drone.ini";
|
||||
+ QString portableIni = argc > 2 ? argv[2] :
|
||||
+ QCoreApplication::applicationDirPath() + "/drone.ini";
|
||||
if (QFile::exists(portableIni))
|
||||
appSettings = new QSettings(portableIni, QSettings::IniFormat);
|
||||
else
|
@ -12617,6 +12617,8 @@ let
|
||||
|
||||
oroborus = callPackage ../applications/window-managers/oroborus {};
|
||||
|
||||
ostinato = callPackage ../applications/networking/ostinato { };
|
||||
|
||||
panamax_api = callPackage ../applications/networking/cluster/panamax/api {
|
||||
ruby = ruby_2_1;
|
||||
};
|
||||
|
Loading…
Reference in New Issue
Block a user