Silly little patch.
This commit is contained in:
parent
2ebda02f40
commit
d74f7490a0
@ -1,34 +1,75 @@
|
||||
#!/bin/bash
|
||||
set -e
|
||||
ip="${1}"
|
||||
port="${2}"
|
||||
|
||||
mode="${1}"
|
||||
ip="${2}"
|
||||
port="${3}"
|
||||
nick="${4}"
|
||||
|
||||
print_usage() {
|
||||
echo "${1}"
|
||||
echo "${0} <IP> <PORT>"
|
||||
echo "${0} <MODE> <IP> <PORT> [NICK]"
|
||||
echo "Modes: interactive (intr), send, receive (rec)"
|
||||
exit
|
||||
}
|
||||
[ -z "${ip}" ] && print_usage 'No IP given.'
|
||||
[ -z "${port}" ] && print_usage 'No port given.'
|
||||
[ -z "${3}" ] || print_usage 'Too many arguments.'
|
||||
[ -z "${5}" ] || print_usage 'Too many arguments.'
|
||||
|
||||
[ -z "${nick}" ] || nick="<${nick}> "
|
||||
|
||||
open_socket() {
|
||||
exec 3<> "/dev/tcp/${ip}/${port}"
|
||||
}
|
||||
|
||||
close_socket() {
|
||||
exec 3>&-
|
||||
}
|
||||
|
||||
send_message() {
|
||||
exec 3<> "/dev/tcp/${ip}/${port}"
|
||||
open_socket
|
||||
echo "${1}" >&3
|
||||
exec 3>&-
|
||||
close_socket
|
||||
}
|
||||
|
||||
get_message() {
|
||||
exec 3<> "/dev/tcp/${ip}/${port}"
|
||||
open_socket
|
||||
echo "${1}" >&3
|
||||
timeout 1s cat <&3 || true
|
||||
exec 3>&-
|
||||
cat <&3 || true
|
||||
close_socket
|
||||
}
|
||||
|
||||
case "${mode}" in
|
||||
intr)
|
||||
;&
|
||||
interactive)
|
||||
;;
|
||||
send)
|
||||
open_socket
|
||||
text="${nick}$(cat)"
|
||||
send_message "0${text}"
|
||||
close_socket
|
||||
exit
|
||||
;;
|
||||
rec)
|
||||
;&
|
||||
receive)
|
||||
length="$(get_message 1)"
|
||||
open_socket
|
||||
echo -n 2 >&3
|
||||
head -c "${length}" <&3
|
||||
close_socket
|
||||
exit
|
||||
;;
|
||||
*)
|
||||
echo Unknown mode
|
||||
exit
|
||||
esac
|
||||
|
||||
while :; do
|
||||
read cmd
|
||||
case "${cmd}" in
|
||||
i)
|
||||
I)
|
||||
b=""
|
||||
while :; do
|
||||
read c
|
||||
@ -39,15 +80,22 @@ while :; do
|
||||
b="${b}"$'\n'"${c}"
|
||||
fi
|
||||
done
|
||||
send_message 0"${b}"
|
||||
send_message 0"${nick}${b}"
|
||||
;;
|
||||
I)
|
||||
i)
|
||||
read a
|
||||
send_message 0"${a}"
|
||||
send_message 0"${nick}${a}"
|
||||
;;
|
||||
p)
|
||||
send_message 1
|
||||
get_message 2 | sed -e 's/\x1B/ESC/g'
|
||||
length="$(get_message 1)"
|
||||
if [ -z "${length}" ]; then
|
||||
echo !;
|
||||
else
|
||||
open_socket
|
||||
echo -n 2 >&3
|
||||
head -c "${length}" <&3 | sed -e 's/\x1B/ESC/g'
|
||||
close_socket
|
||||
fi
|
||||
;;
|
||||
q)
|
||||
exit
|
||||
|
Loading…
Reference in New Issue
Block a user