Friday, March 09, 2012

I don't know what kind of terminal you are on - all I have is 'cygwin'

When I SSH to a SunOS Box from Cygwin on Putty (puttycyg) on Windows and attempt to use vi, I get the following:

I don't know what kind of terminal you are on - all I have is 'cygwin'

This fix is easy enough, and I got the clue from this forum post: Solaris 10, PuTTY, and vi. Edit ~/.profile or ~/.bashrc and add the following:

TERM=xterm; export TERM

Tuesday, March 06, 2012

Using proxy with authentication in PHP reCAPTCHA

When using PHP reCAPTCHA, you need to modify the _recaptcha_http_post method to use a proxy with username and password as per below.

Thanks to Eli Fulkerson's blog post, Recaptcha via proxy server that showed me how to add proxy support. Thanks to lcollet on this Drupal code page for the clues to add username and password.

function _recaptcha_http_post($host, $path, $data, $port = 80) {

   $proxy_host = 'PROXY-HOST';
   $proxy_port=PROXY-PORT;
   $proxy_username='PROXY-USERNAME';
   $proxy_password='PROXY-PASSWORD';

   $req = _recaptcha_qsencode ($data);

   $http_request  = "POST http://$host$path HTTP/1.0\r\n";
   $http_request .= "Host: $host\r\n";
   $http_request .= "Content-Type: application/x-www-form-urlencoded;\r\n";
   $http_request .= "Content-Length: " . strlen($req) . "\r\n";
   $http_request .= "User-Agent: reCAPTCHA/PHP\r\n";

   if (!empty($proxy_username)) {
      $auth_string = base64_encode($proxy_username . ($proxy_password != '' ? ":{$proxy_password}" : ''));
      $http_request .= "Connection: close\r\n";
      if ( !empty($auth_string ) ) $http_request .= "Proxy-Authorization: Basic {$auth_string}\r\n";
   }

   $http_request .= "\r\n";
   $http_request .= $req;

   $response = '';
   if( false == ( $fs = @fsockopen($proxy_host, $proxy_port, $errno, $errstr, 10) ) ) {
      die ('Could not open socket');
   }

   fwrite($fs, $http_request);

   while ( !feof($fs) )
      $response .= fgets($fs, 1160); // One TCP-IP packet
   fclose($fs);
   $response = explode("\r\n\r\n", $response, 2);

   return $response;
}