awesome-console-services/.github/action-test/entrypoint.sh
2020-11-05 01:48:51 +02:00

243 lines
6.4 KiB
Bash
Executable file

#!/bin/bash
LRED="\033[1;31m" # Light Red
LGREEN="\033[1;32m" # Light Green
NC='\033[0m' # No Color
text_success="(${LGREEN}Success${NC})"
text_failed="(${LRED}Failed${NC}) "
final_result=${text_success}
final_result_code=0
# test by checking http status code
# if the service return 200, its a green light
test_curl() {
expected_http_status=$1
service_url=$2
actual_status=$(curl -s -m 5 --retry 3 -o /dev/null -w "%{http_code}" $service_url)
if [ "${actual_status}" == "${expected_http_status}" ]; then
result=${text_success}
else
result=${text_failed}
final_result=${text_failed}
final_result_code=127
fi
echo -e "${result} curl ${service_url} ${@:3}"
}
# test by checking response text
# if part of the content exist, its a green light
test_finger() {
should_see_text=$1
service_url=$2
response=$(finger $2)
if [[ $response == *"${should_see_text}"* ]]; then
result=${text_success}
else
result=${text_failed}
final_result=${text_failed}
final_result_code=127
fi
echo -e "${result} finger ${service_url} ${@:3}"
}
# test by checking program exit code
# if the status is 0, its a green light
test_nc() {
$(nc -z -w 5 -q 1 $@)
if [ "$?" == "0" ]; then
result=${text_success}
else
result=${text_failed}
final_result=${text_failed}
final_result_code=127
fi
echo -e "${result} nc ${@}"
}
# test by checking the host is reachable and the port is open
test_telnet() {
$(nc -z -w 5 -q 1 $@)
if [ "$?" == "0" ]; then
result=${text_success}
else
result=${text_failed}
final_result=${text_failed}
final_result_code=127
fi
echo -e "${result} telnet ${@}"
}
# test by checking the host is reachable and the port is open
test_ssh() {
$(nc -z -w 5 -q 1 $@)
if [ "$?" == "0" ]; then
result=${text_success}
else
result=${text_failed}
final_result=${text_failed}
final_result_code=127
fi
echo -e "${result} telnet ${@}"
}
echo -e "\n\n==Start testing all services==\n"
echo -e "## IP address"
echo -e "### Inline"
test_curl 200 l2.io/ip
test_curl 200 https://echoip.de
test_curl 200 ifconfig.me
test_curl 200 ipecho.net/plain
test_curl 200 https://canihazip.com/s
test_curl 200 https://tnx.nl/ip
test_curl 200 wgetip.com
test_curl 200 whatismyip.akamai.com
test_curl 200 ip.tyk.nu
test_curl 200 bot.whatismyipaddress.com
test_curl 200 curlmyip.net
echo -e "### new line"
test_curl 200 ipaddy.net
test_curl 200 eth0.me
test_curl 200 ipaddr.site
test_curl 200 ifconfig.co
test_curl 200 ifconfig.pro
test_curl 200 curlmyip.net
test_curl 200 ipinfo.io/ip
test_curl 200 icanhazip.com
test_curl 200 checkip.amazonaws.com
test_curl 200 ifconfig.es
echo -e "### DNS"
# dont know how to test dig, exit code always return 0
## * `dig @1.1.1.1 whoami.cloudflare ch txt +short` (IPv4)
## * `dig @2606:4700:4700::1111 whoami.cloudflare ch txt -6 +short` (IPv6)
## * `dig @ns1.google.com o-o.myaddr.l.google.com TXT -6 +short` (IPv6)
## * `dig @ns1.google.com o-o.myaddr.l.google.com TXT -4 +short` (IPv4)
## * `dig resolver.dnscrypt.info TXT +short`
test_curl 200 https://dnsjson.com/resolver.dnscrypt.info/TXT.json
echo -e "### JSON only"
test_curl 200 httpbin.org/ip
test_curl 200 wtfismyip.com/json
echo -e "### Geolocation"
test_curl 200 ipinfo.io/8.8.8.8
test_curl 200 ipinfo.io/8.8.8.8/loc
test_curl 200 ifconfig.co/country
test_curl 200 ifconfig.co/city
test_curl 200 ifconfig.co/country-iso
test_curl 200 ifconfig.co/json
test_curl 200 ifconfig.es/country
test_curl 200 ifconfig.es/code
test_curl 200 ifconfig.es/city
test_curl 200 ifconfig.es/latitude
test_curl 200 ifconfig.es/longitude
test_curl 200 ifconfig.es/geo
test_curl 200 ifconfig.es/json
echo -e "## Text Sharing"
## * `echo "Hello world!" | curl -F 'f:1=<-' ix.io`
## * `echo "Hello world!" | curl -F file=@- 0x0.st`
## * `echo "Hello world!" | curl -F 'clbin=<-' https://clbin.com`
## * `echo "Hello world!" | nc termbin.com 9999`
echo -e "## URL shortener"
test_curl 200 http://tinyurl.com/api-create.php?url=http://www.google.com
echo -e "## File Transfer"
# http status return 200 but still failed, ???
# test_curl 200 https://transfer.sh/test.txt --upload-file /tmp/test.txt # failed
# test_curl 200 filepush.co/upload/test.txt --upload-file /tmp/test.txt # failed
echo -e "## Browser"
# test_ssh brow.sh 22 # dead
echo -e "## Tools"
test_curl 200 qrenco.de/STRING
echo -e "## Monitoring"
test_curl 200 ping.gg
echo -e "## Weather"
test_curl 200 wttr.in
test_curl 200 wttr.in/semarang
# alpine doesnt have finger
# test_finger "Meteogram for norway" oslo@graph.no
echo -e "## News"
test_curl 200 snf-878293.vm.okeanos.grnet.gr
test_curl 200 getnews.tech/world+cup
# alpine doesnt have gopher
# * `gopher txtn.ws`
test_ssh redditbox.us 22
echo -e "## Information boards"
# test_curl 200 frcl.de/gulasch # dead
echo -e "## Map"
test_telnet mapscii.me 23
echo -e "## Money"
test_curl 200 rate.sx
# test_curl 200 moneroj.org # dead
test_curl 200 cmc.rjldev.com
test_telnet ticker.bitcointicker.co 10080
echo -e "## Documentation"
test_curl 200 cheat.sh
echo -e "## Dictionaries and translators"
# dict:// doesnt have http status
# test_curl 220 'dict://dict.org/d:command line'
echo -e "## Generators"
test_curl 200 whatthecommit.com/index.txt
test_curl 200 https://foaas.com/cool/lakuapik -H 'Accept: text/plain'
test_curl 200 pseudorandom.name
# test_curl 200 https://uinames.com/api/?region=france\&amount=25 # 403 forbidden
test_curl 200 https://icanhazdadjoke.com
echo -e "## Entertainment and Games"
test_nc towel.blinkenlights.nl 23
test_ssh chat.shazow.net 22
# test_curl 200 parrot.live -m 20 # response time to long
# test_curl 200 byemck.atulr.com -m 20 # response time to long
test_nc rya.nc 1987 # nc rya.nc 1987
# test_curl 200 node-web-console.glitch.me -m 20 # response time to long
# Telnet/SSH-based:
test_ssh sshtron.zachlatta.com 22
test_ssh netris.rocketnine.space 22
# test_ssh nethack@alt.org 22 # host not found
# test_ssh play@anonymine-demo.oskog97.com 2222 # host not found
# test_ssh twenex@sdf.org 22 # host not found
test_telnet freechess.org 23
test_telnet milek7.gq 23
test_telnet aardmud.org 23
test_telnet mud.darkerrealms.org 2000
test_telnet telehack.com 23
# echo -e "## Scripts"
# curl -s https://raw.githubusercontent.com/sivel/speedtest-cli/master/speedtest.py | python -`
echo -e "\nFinal test result: ${final_result}"
echo -e "\n==END==\n\n"
exit ${final_result_code}