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>wip/yesman
parent
f5f6dc053b
commit
74a98d52d7
@ -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; |
||||
}; |
||||
} |
@ -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 |
Loading…
Reference in new issue