49 lines
1.4 KiB
Bash
49 lines
1.4 KiB
Bash
#!/usr/bin/env bash
|
|
|
|
FILENAME="$1"
|
|
|
|
function dstdomain_to_regex() {
|
|
|
|
prefix="\."
|
|
suffix="\."
|
|
dot="\."
|
|
dash="-"
|
|
|
|
|
|
domain="$1"
|
|
dstdomain="0"
|
|
dotsuffix="0"
|
|
|
|
echo "${domain}" | grep -e "^\." > /dev/null
|
|
if [ "$?" -eq "0" ];then
|
|
dstdomain=1
|
|
fi
|
|
|
|
echo "${domain}" | grep -e "\.$" > /dev/null
|
|
if [ "$?" -eq "0" ];then
|
|
dotsuffix=1
|
|
fi
|
|
|
|
case ${dstdomain} in
|
|
1)
|
|
echo "${domain}" | sed -e "s/^${prefix}//" -e "s/${suffix}$//" -e "s/${dash}/\\\-/g" -e "s/${dot}/\\\./g" -e "s@^@\\^@g" -e "s/$/\\$/" -e 's/\\/\\\\/g'
|
|
echo "${domain}" | sed -e "s/^${prefix}//" -e "s/${suffix}$//" -e "s/${dash}/\\\-/g" -e "s/${dot}/\\\./g" -e "s@^@\\^[0-9a-zA-Z\\\-\\\.]+\\\.@g" -e "s/$/\\$/" -e 's/\\/\\\\/g'
|
|
|
|
echo "${domain}" | sed -e "s/^${prefix}//" -e "s/${suffix}$//" -e "s/${dash}/\\\-/g" -e "s/${dot}/\\\./g" -e "s@^@\\^@g" -e "s/$/\\\.\\$/" -e 's/\\/\\\\/g'
|
|
echo "${domain}" | sed -e "s/^${prefix}//" -e "s/${suffix}$//" -e "s/${dash}/\\\-/g" -e "s/${dot}/\\\./g" -e "s@^@\\^[0-9a-zA-Z\\\-\\\.]+\\\.@g" -e "s/$/\\\\.\\$/" -e 's/\\/\\\\/g'
|
|
|
|
;;
|
|
*)
|
|
echo "${domain}" | sed -e "s/^${prefix}//" -e "s/${suffix}$//" -e "s/${dash}/\\\-/g" -e "s/${dot}/\\\./g" -e "s@^@\\^@g" -e "s/$/\\$/" -e 's/\\/\\\\/g'
|
|
echo "${domain}" | sed -e "s/^${prefix}//" -e "s/${suffix}$//" -e "s/${dash}/\\\-/g" -e "s/${dot}/\\\./g" -e "s@^@\\^@g" -e "s/$/\\\.\\$/" -e 's/\\/\\\\/g'
|
|
|
|
;;
|
|
esac
|
|
|
|
}
|
|
|
|
while IFS= read -r line
|
|
do
|
|
dstdomain_to_regex "${line}"
|
|
done < "${FILENAME}"
|