Advertisement
iderrington

CoreBASIC Dynamic IP Script

May 25th, 2013
407
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. ' My new router doesn't support no-ip
  2. ' So out of necessity this script does it for me.
  3. '
  4. ' by Iain Derrington @IDerrington
  5. ' for http://soldercore.com @SolderCore
  6. '
  7. '
  8. '
  9. 'URL of API to give me my routers external IP address.
  10. API_URL = "api.hostip.info"
  11. '
  12. 'no-ip stuff
  13. NOIP_URL = "dynupdate.no-ip.com"
  14. NOIP_PSWD = "add your password"
  15. HOST_NAME = "soldercore.no-ip.biz"
  16. '
  17. CLS
  18. '
  19. PRINT "Contacting: " + API_URL
  20. PRINT
  21. '
  22. S = SOCKET(API_URL, 80)
  23. IF S < 0 THEN
  24.   PRINT $RED; "Failed to open socket"; $CYAN; REPORT S
  25.   END
  26. ELSE
  27.   'Build the request string
  28.   REQUEST = "GET /get_json.php HTTP/1.0"
  29.   PRINT #S, REQUEST
  30.   PRINT REQUEST
  31.   PRINT #S, "Host: api.hostip.info"
  32.   PRINT #S, "Authorization: None "
  33.   PRINT #S, "User-Agent: SolderCore Update Client CoreBASIC 1.2.27 [email protected]"
  34.   PRINT #S,
  35.   '
  36.   'Checks the header
  37.   CALL CHECK_HEADER
  38.   CALL GET_PAYLOAD
  39.   '
  40.   IF LEN(PAYLOAD) = 0 THEN
  41.     PRINT %RED; "Failed to get IP address"
  42.     END
  43.   ENDIF
  44.   'PRINT PAYLOAD
  45.   'exptract ip address.
  46.   MYIP = LEFT(RIGHT(PAYLOAD, LEN(PAYLOAD) - INSTR("ip", PAYLOAD) - 5),  - 2)
  47.   PRINT "Bingo my Addres is " + MYIP
  48.   CLOSE S
  49. ENDIF
  50. '
  51. PRINT "Contacting: " + NOIP_URL
  52. PRINT
  53. 'Open another socket
  54. S = SOCKET(NOIP_URL, 80)
  55. 'Did it open?
  56. IF S < 0 THEN
  57.   PRINT $RED; "Failed to open Socket:"; $CYAN; REPORT S
  58.   PAUSE 2
  59. ELSE
  60.   'Build the request string
  61.   PRINT "Setting IP address"
  62.   REQUEST = "GET /nic/update?hostname=" + HOST_NAME + "&myip=" + MYIP + " HTTP/1.0"
  63.   PRINT #S, REQUEST
  64.   PRINT REQUEST
  65.   PRINT #S, "Host: dynupdate.no-ip.com"
  66.   PRINT #S, "Authorization: Basic "; NOIP_PSWD
  67.   PRINT #S, "User-Agent: SolderCore Update Client CoreBASIC 1.2.27 [email protected]"
  68.   PRINT #S,
  69.   '
  70.   CALL CHECK_HEADER
  71.   CALL GET_PAYLOAD
  72.   PRINT "Result: " + PAYLOAD
  73.   '
  74. ENDIF
  75. '
  76. END
  77. '
  78. DEFPROC CHECK_HEADER()
  79.   HEADER = ""
  80.   '
  81.   'Read the header info
  82.   REPEAT
  83.     TRY INPUT #S, INP AS STR
  84.     IF NOT ERROR THEN
  85.       ' PRINT; $GREEN; INP
  86.       HEADER = HEADER + INP
  87.     ENDIF
  88.     HDRLEN = HDRLEN + LEN(INP)
  89.   UNTIL ERROR OR ELSE INP = ""
  90.   '
  91.   IF MATCH("*200 OK*", HEADER) < 1 THEN
  92.     PRINT $RED; "Error: Incorrect Header Response: "; %GREEN; HEADER
  93.     TRY CLOSE S
  94.     END
  95.   ENDIF
  96. ENDPROC
  97. '
  98. DEFPROC GET_PAYLOAD()
  99.   PAYLOAD = ""
  100.   REPEAT
  101.     TRY INPUT #S, INP AS STR
  102.     IF NOT ERROR THEN
  103.       PAYLOAD = PAYLOAD + INP
  104.     ENDIF
  105.   UNTIL ERROR OR ELSE INP = ""
  106. ENDPROC
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement