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
3 changed files with 76 additions and 0 deletions
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-tools = callPackage ../tools/admin/cjdns-tools { };
|
||||
|
||||
cjson = callPackage ../development/libraries/cjson { };
|
||||
|
||||
|
|
Loading…
Reference in a new issue