Тестирование форматирования и lsp bash, python в nvchad
This commit is contained in:
parent
50f8c8d0fb
commit
7b9b0a4ec0
@ -5,79 +5,79 @@ rm -f response
|
|||||||
mkfifo response
|
mkfifo response
|
||||||
|
|
||||||
function handle_GET_home() {
|
function handle_GET_home() {
|
||||||
RESPONSE=$(cat home.html |
|
RESPONSE=$(cat home.html |
|
||||||
sed "s/{{$COOKIE_NAME}}/$COOKIE_VALUE/")
|
sed "s/{{$COOKIE_NAME}}/$COOKIE_VALUE/")
|
||||||
}
|
}
|
||||||
|
|
||||||
function handle_GET_login() {
|
function handle_GET_login() {
|
||||||
RESPONSE=$(cat login.html)
|
RESPONSE=$(cat login.html)
|
||||||
}
|
}
|
||||||
|
|
||||||
function handle_POST_login() {
|
function handle_POST_login() {
|
||||||
RESPONSE=$(cat post-login.http |
|
RESPONSE=$(cat post-login.http |
|
||||||
sed "s/{{cookie_name}}/$INPUT_NAME/" |
|
sed "s/{{cookie_name}}/$INPUT_NAME/" |
|
||||||
sed "s/{{cookie_value}}/$INPUT_VALUE/")
|
sed "s/{{cookie_value}}/$INPUT_VALUE/")
|
||||||
}
|
}
|
||||||
|
|
||||||
function handle_POST_logout() {
|
function handle_POST_logout() {
|
||||||
RESPONSE=$(cat post-logout.http |
|
RESPONSE=$(cat post-logout.http |
|
||||||
sed "s/{{cookie_name}}/$COOKIE_NAME/" |
|
sed "s/{{cookie_name}}/$COOKIE_NAME/" |
|
||||||
sed "s/{{cookie_value}}/$COOKIE_VALUE/")
|
sed "s/{{cookie_value}}/$COOKIE_VALUE/")
|
||||||
}
|
}
|
||||||
|
|
||||||
function handle_not_found() {
|
function handle_not_found() {
|
||||||
RESPONSE=$(cat 404.html)
|
RESPONSE=$(cat 404.html)
|
||||||
}
|
}
|
||||||
|
|
||||||
function handleRequest() {
|
function handleRequest() {
|
||||||
## Read request
|
## Read request
|
||||||
while read line; do
|
while read line; do
|
||||||
echo $line
|
echo "$line"
|
||||||
trline=$(echo $line | tr -d '[\r\n]')
|
trline=$(echo "$line" | tr -d '[\r\n]')
|
||||||
|
|
||||||
[ -z "$trline" ] && break
|
[ -z "$trline" ] && break
|
||||||
|
|
||||||
HEADLINE_REGEX='(.*?)\s(.*?)\sHTTP.*?'
|
HEADLINE_REGEX='(.*?)\s(.*?)\sHTTP.*?'
|
||||||
[[ "$trline" =~ $HEADLINE_REGEX ]] &&
|
[[ "$trline" =~ $HEADLINE_REGEX ]] &&
|
||||||
REQUEST=$(echo $trline | sed -E "s/$HEADLINE_REGEX/\1 \2/")
|
REQUEST=$(echo "$trline" | sed -E "s/$HEADLINE_REGEX/\1 \2/")
|
||||||
|
|
||||||
CONTENT_LENGTH_REGEX='Content-Length:\s(.*?)'
|
CONTENT_LENGTH_REGEX='Content-Length:\s(.*?)'
|
||||||
[[ "$trline" =~ $CONTENT_LENGTH_REGEX ]] &&
|
[[ "$trline" =~ $CONTENT_LENGTH_REGEX ]] &&
|
||||||
CONTENT_LENGTH=$(echo $trline | sed -E "s/$CONTENT_LENGTH_REGEX/\1/")
|
CONTENT_LENGTH=$(echo "$trline" | sed -E "s/$CONTENT_LENGTH_REGEX/\1/")
|
||||||
|
|
||||||
COOKIE_REGEX='Cookie:\s(.*?)\=(.*?).*?'
|
COOKIE_REGEX='Cookie:\s(.*?)\=(.*?).*?'
|
||||||
[[ "$trline" =~ $COOKIE_REGEX ]] &&
|
[[ "$trline" =~ $COOKIE_REGEX ]] &&
|
||||||
read COOKIE_NAME COOKIE_VALUE <<<$(echo $trline | sed -E "s/$COOKIE_REGEX/\1 \2/")
|
read COOKIE_NAME COOKIE_VALUE <<<$(echo "$trline" | sed -E "s/$COOKIE_REGEX/\1 \2/")
|
||||||
done
|
|
||||||
|
|
||||||
## Read body
|
|
||||||
if [ ! -z "$CONTENT_LENGTH" ]; then
|
|
||||||
BODY_REGEX='(.*?)=(.*?)'
|
|
||||||
|
|
||||||
while read -n$CONTENT_LENGTH -t1 line; do
|
|
||||||
echo $line
|
|
||||||
trline=$(echo $line | tr -d '[\r\n]')
|
|
||||||
|
|
||||||
[ -z "$trline" ] && break
|
|
||||||
|
|
||||||
read INPUT_NAME INPUT_VALUE <<<$(echo $trline | sed -E "s/$BODY_REGEX/\1 \2/")
|
|
||||||
done
|
done
|
||||||
fi
|
|
||||||
|
|
||||||
## Route to the response handlers
|
## Read body
|
||||||
case "$REQUEST" in
|
if [ ! -z "$CONTENT_LENGTH" ]; then
|
||||||
"GET /login") handle_GET_login ;;
|
BODY_REGEX='(.*?)=(.*?)'
|
||||||
"GET /") handle_GET_home ;;
|
|
||||||
"POST /login") handle_POST_login ;;
|
|
||||||
"POST /logout") handle_POST_logout ;;
|
|
||||||
*) handle_not_found ;;
|
|
||||||
esac
|
|
||||||
|
|
||||||
echo -e "$RESPONSE" >response
|
while read -n"$CONTENT_LENGTH" -t1 line; do
|
||||||
|
echo "$line"
|
||||||
|
trline=$(echo "$line" | tr -d '[\r\n]')
|
||||||
|
|
||||||
|
[ -z "$trline" ] && break
|
||||||
|
|
||||||
|
read INPUT_NAME INPUT_VALUE <<<$(echo "$trline" | sed -E "s/$BODY_REGEX/\1 \2/")
|
||||||
|
done
|
||||||
|
fi
|
||||||
|
|
||||||
|
## Route to the response handlers
|
||||||
|
case "$REQUEST" in
|
||||||
|
"GET /login") handle_GET_login ;;
|
||||||
|
"GET /") handle_GET_home ;;
|
||||||
|
"POST /login") handle_POST_login ;;
|
||||||
|
"POST /logout") handle_POST_logout ;;
|
||||||
|
*) handle_not_found ;;
|
||||||
|
esac
|
||||||
|
|
||||||
|
echo -e "$RESPONSE" >response
|
||||||
}
|
}
|
||||||
|
|
||||||
echo 'Listening on 3000...'
|
echo 'Listening on 3000...'
|
||||||
|
|
||||||
while true; do
|
while true; do
|
||||||
cat response | nc -lN 3000 | handleRequest
|
cat response | nc -lN 3000 | handleRequest
|
||||||
done
|
done
|
||||||
|
@ -2,37 +2,36 @@
|
|||||||
|
|
||||||
CpArray_Mac() {
|
CpArray_Mac() {
|
||||||
|
|
||||||
# Оператор Присваивания
|
# Оператор Присваивания
|
||||||
|
|
||||||
echo -n 'eval '
|
echo -n 'eval '
|
||||||
echo -n "$2" # Имя массива-результата
|
echo -n "$2" # Имя массива-результата
|
||||||
echo -n '=( ${'
|
echo -n '=( ${'
|
||||||
echo -n "$1" # Имя исходного массива
|
echo -n "$1" # Имя исходного массива
|
||||||
echo -n '[@]} )'
|
echo -n '[@]} )'
|
||||||
|
|
||||||
# Все это могло бы быть объединено в одну команду.
|
# Все это могло бы быть объединено в одну команду.
|
||||||
# Это лишь вопрос стиля.
|
# Это лишь вопрос стиля.
|
||||||
}
|
}
|
||||||
|
|
||||||
declare -f CopyArray # "Указатель" на функцию
|
declare -f CopyArray # "Указатель" на функцию
|
||||||
CopyArray=CpArray_Mac # Оператор Присваивания
|
CopyArray=CpArray_Mac # Оператор Присваивания
|
||||||
|
|
||||||
Hype()
|
Hype() {
|
||||||
{
|
|
||||||
|
|
||||||
# Исходный массив с именем в $1.
|
# Исходный массив с именем в $1.
|
||||||
# (Слить с массивом, содержащим "-- Настоящий Рок-н-Ролл".)
|
# (Слить с массивом, содержащим "-- Настоящий Рок-н-Ролл".)
|
||||||
# Вернуть результат в массиве с именем $2.
|
# Вернуть результат в массиве с именем $2.
|
||||||
|
|
||||||
local -a TMP
|
local -a TMP
|
||||||
local -a hype=( -- Настоящий Рок-н-Ролл )
|
local -a hype=(-- Настоящий Рок-н-Ролл)
|
||||||
|
|
||||||
$($CopyArray $1 TMP)
|
$($CopyArray "$1" TMP)
|
||||||
TMP=( ${TMP[@]} ${hype[@]} )
|
TMP=(${TMP[@]} ${hype[@]})
|
||||||
$($CopyArray TMP $2)
|
$($CopyArray TMP "$2")
|
||||||
}
|
}
|
||||||
|
|
||||||
declare -a before=( Advanced Bash Scripting )
|
declare -a before=(Advanced Bash Scripting)
|
||||||
declare -a after
|
declare -a after
|
||||||
|
|
||||||
echo "Массив before = ${before[@]}"
|
echo "Массив before = ${before[@]}"
|
||||||
@ -45,7 +44,7 @@ echo "Массив after = ${after[@]}"
|
|||||||
|
|
||||||
echo "Что такое ${after[@]:4:2}?"
|
echo "Что такое ${after[@]:4:2}?"
|
||||||
|
|
||||||
declare -a modest=( ${after[@]:2:1} ${after[@]:3:3} )
|
declare -a modest=(${after[@]:2:1} ${after[@]:3:3})
|
||||||
# ---- выделение подстроки ----
|
# ---- выделение подстроки ----
|
||||||
|
|
||||||
echo "Массив Modest = ${modest[@]}"
|
echo "Массив Modest = ${modest[@]}"
|
||||||
|
@ -1,6 +1,7 @@
|
|||||||
#!/usr/bin/python3
|
#!/usr/bin/python3
|
||||||
|
|
||||||
import os, sys
|
import os
|
||||||
|
import sys
|
||||||
|
|
||||||
ret = os.fork()
|
ret = os.fork()
|
||||||
if ret == 0:
|
if ret == 0:
|
||||||
|
Loading…
Reference in New Issue
Block a user