cjdns-tools: init at 21.1
This adds cjdns-tools which is exposing the tools from $cjdns/tools/ under a command named cjdns-tools (so for ex cjdns "ping" is accessible as cjdns-tools ping <ip>) Additionally patches cjdns tools to read admin pw from /etc/cjdns.keys Co-authored-by: Sandro <sandro.jaeckel@gmail.com>
This commit is contained in:
parent
f5f6dc053b
commit
74a98d52d7
46
pkgs/tools/admin/cjdns-tools/default.nix
Normal file
46
pkgs/tools/admin/cjdns-tools/default.nix
Normal file
@ -0,0 +1,46 @@
|
|||||||
|
{ stdenv
|
||||||
|
, cjdns
|
||||||
|
, nodejs
|
||||||
|
, makeWrapper
|
||||||
|
, lib
|
||||||
|
}:
|
||||||
|
|
||||||
|
stdenv.mkDerivation {
|
||||||
|
pname = "cjdns-tools";
|
||||||
|
version = cjdns.version;
|
||||||
|
|
||||||
|
src = cjdns.src;
|
||||||
|
|
||||||
|
buildInputs = [
|
||||||
|
nodejs
|
||||||
|
];
|
||||||
|
|
||||||
|
nativeBuildInputs = [
|
||||||
|
makeWrapper
|
||||||
|
];
|
||||||
|
|
||||||
|
buildPhase = ''
|
||||||
|
patchShebangs tools
|
||||||
|
|
||||||
|
sed -e "s|'password': 'NONE'|'password': Fs.readFileSync('/etc/cjdns.keys').toString().split('\\\\n').map(v => v.split('=')).filter(v => v[0] === 'CJDNS_ADMIN_PASSWORD').map(v => v[1])[0]|g" \
|
||||||
|
-i tools/lib/cjdnsadmin/cjdnsadmin.js
|
||||||
|
'';
|
||||||
|
|
||||||
|
installPhase = ''
|
||||||
|
mkdir -p $out/bin
|
||||||
|
cat ${./wrapper.sh} | sed "s|@@out@@|$out|g" > $out/bin/cjdns-tools
|
||||||
|
chmod +x $out/bin/cjdns-tools
|
||||||
|
|
||||||
|
cp -r tools $out/tools
|
||||||
|
find $out/tools -maxdepth 1 -type f -exec chmod -v a+x {} \;
|
||||||
|
cp -r node_modules $out/node_modules
|
||||||
|
'';
|
||||||
|
|
||||||
|
meta = with lib; {
|
||||||
|
homepage = "https://github.com/cjdelisle/cjdns";
|
||||||
|
description = "Tools for cjdns managment";
|
||||||
|
license = licenses.gpl3Plus;
|
||||||
|
maintainers = with maintainers; [ mkg20001 ];
|
||||||
|
platforms = platforms.linux;
|
||||||
|
};
|
||||||
|
}
|
29
pkgs/tools/admin/cjdns-tools/wrapper.sh
Normal file
29
pkgs/tools/admin/cjdns-tools/wrapper.sh
Normal file
@ -0,0 +1,29 @@
|
|||||||
|
#!/usr/bin/env bash
|
||||||
|
|
||||||
|
export PATH="@@out@@/tools:$PATH"
|
||||||
|
|
||||||
|
set -eo pipefail
|
||||||
|
|
||||||
|
if ! cat /etc/cjdns.keys >/dev/null 2>&1; then
|
||||||
|
echo "ERROR: No permission to read /etc/cjdns.keys (use sudo)" >&2
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [[ -z $1 ]]; then
|
||||||
|
echo "Cjdns admin"
|
||||||
|
|
||||||
|
echo "Usage: $0 <command> <args..>"
|
||||||
|
|
||||||
|
echo
|
||||||
|
echo "Commands:" $(find @@out@@/tools -maxdepth 1 -type f | sed -r "s|.+/||g")
|
||||||
|
|
||||||
|
_sh=$(which sh)
|
||||||
|
PATH="@@out@@/tools" PS1="cjdns\$ " "$_sh"
|
||||||
|
else
|
||||||
|
if [[ ! -e @@out@@/tools/$1 ]]; then
|
||||||
|
echo "ERROR: '$1' is not a valid tool" >&2
|
||||||
|
exit 2
|
||||||
|
else
|
||||||
|
"$@"
|
||||||
|
fi
|
||||||
|
fi
|
@ -3194,6 +3194,7 @@ in
|
|||||||
};
|
};
|
||||||
|
|
||||||
cjdns = callPackage ../tools/networking/cjdns { };
|
cjdns = callPackage ../tools/networking/cjdns { };
|
||||||
|
cjdns-tools = callPackage ../tools/admin/cjdns-tools { };
|
||||||
|
|
||||||
cjson = callPackage ../development/libraries/cjson { };
|
cjson = callPackage ../development/libraries/cjson { };
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user