DtDNS: PHP cURL 1
DtDNS: Introduction | Crude Updater | WhatsMyIP | PHP cURL 1 | PHP cURL 2 | IP Tracker | Plugin 1 | Plugin 2
|
|
DtDNS and automatic update |
Introduction
On the previous page I explained why you should never enable external includes in php.ini there is a safer way to download external pages and that is to use cURL.
Uniform Server 5.0-Nano has cURL enabled by default hence you can start using it straightaway. This page looks at extracting your current IP address from one of the pages downloaded see previous page for page links.
Example Code
This script is based on a template taken from the cURL tutorial found on this page.
Page downloaded is captured as a text string and saved in variable $buffer. This isolates any potenial harfull code.
Extracting the IP address is performed using a regex since we are specifically targeting information we want and discarding any other page content means any harmful code will never be run.
<?php $ch=curl_init(); curl_setopt($ch,CURLOPT_URL,'http://myip.dtdns.com'); curl_setopt($ch,CURLOPT_CONNECTTIMEOUT,10); curl_setopt($ch,CURLOPT_RETURNTRANSFER,1); $buffer = curl_exec($ch); curl_close($ch); if (empty($buffer)){ // Need to add code and recover from this } else{ // Extract IP address if(preg_match("/(\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3})/", $buffer, $ipmatch)){ $ip = $ipmatch[0]; // Save IP to variable } } print $ip; // Test code ?> |
|
Test 1 - Server
The script will run on a server, perform the following test:
- Create a new folder C:\dtdns_test
- Extract a copy of 5-Nano to this folder.
- Create a new text file in folder C:\dtdns_test\UniServer\www and name it dtdns_test_1.php add the following content
<?php $ch=curl_init(); curl_setopt($ch,CURLOPT_URL,'http://myip.dtdns.com'); curl_setopt($ch,CURLOPT_CONNECTTIMEOUT,10); curl_setopt($ch,CURLOPT_RETURNTRANSFER,1); $buffer = curl_exec($ch); curl_close($ch); if (empty($buffer)){ // Need to add code and recover from this } else{ // Extract IP address if(preg_match("/(\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3})/", $buffer, $ipmatch)){ $ip = $ipmatch[0]; // Save IP to variable } } print $ip; // Test code ?> |
Run Test 1:
179.79.934.216 |
Test 2 - PHP CLI
We require the script to run in PHP cli mode.
- Create a new folder C:\dtdns_test\UniServer\plugins\dtdns_updater
- Copy file C:\dtdns_test\UniServer\www\dtdns_test_1.php to the above folder.
- Inside folder dtdns_updater create a new text file Run_dtdns_test_1.bat with the folowing content:
Run_dtdns_test_1.bat
COLOR B0 @echo off cls rem ### working directory current folder pushd %~dp0 ..\..\usr\local\php\php.exe dtdns_test_1.php rem ### restore original working directory pause popd EXIT |
Run Test 2:
179.79.934.216Press any key to continue . . . |
Summary
I have shown how easy Curl is to use and how to obtain your current IP address. The code can be used in either server or CLI mode.
Its only part of a solution we need to access DtDNS update page by providing an ID and password over a secure connection. Again Curl makes this easy see next page.