test_gns_cname_lookup.sh 3.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899
  1. #!/bin/sh
  2. # This file is in the public domain.
  3. trap "gnunet-arm -e -c test_gns_lookup.conf" INT
  4. LOCATION=$(which gnunet-config)
  5. if [ -z $LOCATION ]
  6. then
  7. LOCATION="gnunet-config"
  8. fi
  9. $LOCATION --version 1> /dev/null
  10. if test $? != 0
  11. then
  12. echo "GNUnet command line tools cannot be found, check environmental variables PATH and GNUNET_PREFIX"
  13. exit 77
  14. fi
  15. # permissive DNS resolver we will use for the test
  16. DNS_RESOLVER="8.8.8.8"
  17. if ! nslookup gnunet.org $DNS_RESOLVER > /dev/null 2>&1
  18. then
  19. echo "Cannot reach DNS, skipping test"
  20. exit 77
  21. fi
  22. rm -rf `gnunet-config -c test_gns_lookup.conf -f -s paths -o GNUNET_TEST_HOME`
  23. TEST_IP_PLUS="127.0.0.1"
  24. TEST_IP_DNS="131.159.74.67"
  25. TEST_RECORD_CNAME_SERVER="server"
  26. TEST_RECORD_CNAME_PLUS="server.+"
  27. TEST_RECORD_CNAME_DNS="gnunet.org"
  28. TEST_RECORD_NAME_SERVER="server"
  29. TEST_RECORD_NAME_PLUS="www"
  30. TEST_RECORD_NAME_ZKEY="www2"
  31. TEST_RECORD_NAME_DNS="www3"
  32. MY_EGO="myego"
  33. TEST_DOMAIN_PLUS="www.$MY_EGO"
  34. TEST_DOMAIN_ZKEY="www2.$MY_EGO"
  35. TEST_DOMAIN_DNS="www3.$MY_EGO"
  36. which timeout > /dev/null 2>&1 && DO_TIMEOUT="timeout 15"
  37. gnunet-arm -s -c test_gns_lookup.conf
  38. gnunet-identity -C $MY_EGO -c test_gns_lookup.conf
  39. MY_EGO_PKEY=$(gnunet-identity -d -c test_gns_lookup.conf | grep ${MY_EGO} | awk '{print $3}')
  40. TEST_RECORD_CNAME_ZKEY="server.${MY_EGO_PKEY}"
  41. gnunet-namestore -p -z $MY_EGO -a -n $TEST_RECORD_NAME_DNS -t CNAME -V $TEST_RECORD_CNAME_DNS -e never -c test_gns_lookup.conf
  42. gnunet-namestore -p -z $MY_EGO -a -n $TEST_RECORD_NAME_PLUS -t CNAME -V $TEST_RECORD_CNAME_PLUS -e never -c test_gns_lookup.conf
  43. gnunet-namestore -p -z $MY_EGO -a -n $TEST_RECORD_NAME_ZKEY -t CNAME -V $TEST_RECORD_CNAME_ZKEY -e never -c test_gns_lookup.conf
  44. gnunet-namestore -p -z $MY_EGO -a -n $TEST_RECORD_CNAME_SERVER -t A -V $TEST_IP_PLUS -e never -c test_gns_lookup.conf
  45. RES_CNAME=`$DO_TIMEOUT gnunet-gns --raw -u $TEST_DOMAIN_PLUS -t A -c test_gns_lookup.conf`
  46. RES_CNAME_RAW=`$DO_TIMEOUT gnunet-gns --raw -u $TEST_DOMAIN_PLUS -t CNAME -c test_gns_lookup.conf`
  47. RES_CNAME_ZKEY=`$DO_TIMEOUT gnunet-gns --raw -u $TEST_DOMAIN_ZKEY -t A -c test_gns_lookup.conf`
  48. RES_CNAME_DNS=`$DO_TIMEOUT gnunet-gns --raw -u $TEST_DOMAIN_DNS -t A -c test_gns_lookup.conf | grep $TEST_IP_DNS`
  49. TESTEGOZONE=`gnunet-identity -c test_gns_lookup.conf -d | awk '{print $3}'`
  50. gnunet-namestore -p -z $MY_EGO -d -n $TEST_RECORD_NAME_DNS -t CNAME -V $TEST_RECORD_CNAME_DNS -e never -c test_gns_lookup.conf
  51. gnunet-namestore -p -z $MY_EGO -d -n $TEST_RECORD_NAME_PLUS -t CNAME -V $TEST_RECORD_CNAME_PLUS -e never -c test_gns_lookup.conf
  52. gnunet-namestore -p -z $MY_EGO -d -n $TEST_RECORD_NAME_ZKEY -t CNAME -V $TEST_RECORD_CNAME_ZKEY -e never -c test_gns_lookup.conf
  53. gnunet-namestore -p -z $MY_EGO -d -n $TEST_RECORD_CNAME_SERVER -t A -V $TEST_IP_PLUS -e never -c test_gns_lookup.conf
  54. gnunet-identity -D $MY_EGO -c test_gns_lookup.conf
  55. gnunet-arm -e -c test_gns_lookup.conf
  56. rm -rf `gnunet-config -c test_gns_lookup.conf -f -s paths -o GNUNET_TEST_HOME`
  57. # make cmp case-insensitive by converting to lower case first
  58. RES_CNAME_RAW=`echo $RES_CNAME_RAW | tr [A-Z] [a-z]`
  59. TESTEGOZONE=`echo $TESTEGOZONE | tr [A-Z] [a-z]`
  60. if [ "$RES_CNAME_RAW" = "server.$TESTEGOZONE" ]
  61. then
  62. echo "PASS: CNAME resolution from GNS"
  63. else
  64. echo "FAIL: CNAME resolution from GNS, got $RES_CNAME_RAW, expected server.$TESTEGOZONE."
  65. exit 1
  66. fi
  67. if [ "$RES_CNAME" = "$TEST_IP_PLUS" ]
  68. then
  69. echo "PASS: IP resolution from GNS (.+)"
  70. else
  71. echo "FAIL: IP resolution from GNS (.+), got $RES_CNAME, expected $TEST_IP_PLUS."
  72. exit 1
  73. fi
  74. if [ "$RES_CNAME_ZKEY" = "$TEST_IP_PLUS" ]
  75. then
  76. echo "PASS: IP resolution from GNS (.zkey)"
  77. else
  78. echo "FAIL: IP resolution from GNS (.zkey), got $RES_CNAME, expected $TEST_IP_PLUS."
  79. exit 1
  80. fi
  81. if echo "$RES_CNAME_DNS" | grep "$TEST_IP_DNS" > /dev/null
  82. then
  83. echo "PASS: IP resolution from DNS"
  84. exit 0
  85. else
  86. echo "FAIL: IP resolution from DNS, got $RES_CNAME_DNS, expected $TEST_IP_DNS."
  87. exit 1
  88. fi