mirror of
https://repo.or.cz/socat.git
synced 2024-12-22 15:32:35 +00:00
47 lines
1.3 KiB
Bash
Executable file
47 lines
1.3 KiB
Bash
Executable file
#! /usr/bin/env bash
|
|
# source: readline-test.sh
|
|
# Copyright Gerhard Rieger and contributors (see file CHANGES)
|
|
# Published under the GNU General Public License V.2, see file COPYING
|
|
|
|
# script that simulates a simple program with authentication.
|
|
# is just for testing the readline features
|
|
# perform the test with something like:
|
|
# ./socat readline,history=$HOME/.history,noecho='^Password: ' system:./readline-test.sh,pty,setsid,ctty,stderr,sigint,sigquit,echo=0,raw
|
|
|
|
|
|
BANNER='readline feature test program'
|
|
USERPROMPT='Authentication required\nUsername: '
|
|
PWDPROMPT='Password: '
|
|
PROMPT='prog> '
|
|
|
|
# degenerated user database
|
|
CREDUSER="user"
|
|
CREDPASS="password"
|
|
|
|
if [ $(echo "x\c") = "x" ]; then ECHO="echo"
|
|
elif [ $(echo -e "x\c") = "x" ]; then ECHO="echo -e"
|
|
fi
|
|
|
|
#trap "$ECHO $0 got SIGINT" INT
|
|
trap "$ECHO $0 got SIGINT" INT
|
|
trap "$ECHO $0 got SIGQUIT" QUIT
|
|
|
|
# print banner
|
|
$ECHO "$BANNER"
|
|
|
|
# on (some) ksh read -p does not mean prompt
|
|
$ECHO "$USERPROMPT\c"; read -r USERNAME
|
|
$ECHO "$PWDPROMPT\c"; read -rs PASSWORD
|
|
$ECHO
|
|
|
|
if [ "$USERNAME" != "$CREDUSER" -o "$PASSWORD" != "$CREDPASS" ]; then
|
|
$ECHO "Authentication failed" >&2
|
|
exit -1
|
|
fi
|
|
|
|
while $ECHO "$PROMPT\c"; read -r COMMAND; do
|
|
if [ "$COMMAND" = "exit" ]; then
|
|
break;
|
|
fi
|
|
$ECHO "executing $COMMAND"
|
|
done
|