From 83dde480fd2e5ab276ce7c18f3bcf1a1edba2fb2 Mon Sep 17 00:00:00 2001 From: mivirl <> Date: Mon, 15 Jan 2024 16:48:20 -0600 Subject: [PATCH] Add support for watching dirs, commands, packets --- src/client.pl | 36 ++++++++++++++++++++++++++++++++++++ src/server.sh | 6 ++++++ 2 files changed, 42 insertions(+) diff --git a/src/client.pl b/src/client.pl index 06140a3..1be2992 100644 --- a/src/client.pl +++ b/src/client.pl @@ -118,6 +118,26 @@ sub send_log { return $socket->close(); } +sub send_command_output { + my ($clientName, $clientKey, $name, @command) = @_; + my $pid = fork; + return if ($pid); + + my $socket = login($clientName, $clientKey); + my ($fileName) = $name; + $socket->send("command\n"); + $socket->send("$fileName\n"); + print "@command\n"; + my $commandLog = ns_systemFH(@command); + while (<$commandLog>) { + $socket->send($_); + } + print_log "Command: Completed @command"; + close($commandLog); + $socket->send("⟃---EOF---⟄\n"); + return $socket->close(); +} + sub send_file { my ($clientName, $clientKey, $file) = @_; my $pid = fork; @@ -155,6 +175,22 @@ sub send_file { return 0 } +sub watch_directory { + my ($clientName, $clientKey, $dir) = @_; + my $monitor = ns_systemFH('../inotifywait', '-r', '-m', '-e', 'close_write', '--format', '%w%f', $dir); + while (<$monitor>) { + chomp; + send_file($clientName, $clientKey, $_); + } +} + +sub capture_packets { + my ($clientName, $clientKey) = @_; + my $pid = fork; + return if ($pid); + my $tcpdump = ns_system('/usr/bin/tcpdump', '-w', '/dev/shm/pcap', '-W', '10', '-G', '60', '-C', '100', '-K', '-n'); +} + my ($name, $key) = register; #print_log "Name: $name, Key: $key"; send_info($name, $key); diff --git a/src/server.sh b/src/server.sh index de65b49..3ea8950 100644 --- a/src/server.sh +++ b/src/server.sh @@ -111,6 +111,12 @@ while read -r COMMAND; do verify_input "L__${TMPFILENAME}.log" print_status write_to_file "L__${TMPFILENAME}.log" unset TMPFILENAME + elif [ "$COMMAND" = "command" ]; then + echo -n "Filename: " + read -r TMPFILENAME + verify_input "C__${TMPFILENAME}.cmdlog" + print_status write_to_file "C__${TMPFILENAME}.cmdlog" + unset TMPFILENAME else echo "Command not found." fi -- 2.39.5