FTP w/ Explicit SSL/TLS example?

John Brahy <[email protected]> Tue, 8 Sep 2015 15:58:42 -0700
Newsgroups gmane.comp.web.curl.php
Message-ID <CA+Ko5+Ak+soMs_rF4ZeFM5XCROv+wmiOJGwEUjsVVF1e3OUjaQ@mail.gmail.com>
--===============1367410388==
Content-Type: multipart/alternative; boundary=089e011765a5e0b572051f444f1e

--089e011765a5e0b572051f444f1e
Content-Type: text/plain; charset=UTF-8

I've been trying to push to a remote ftp with explicit ssl server and the
connection keeps timing out.

Through filezilla I'm able to connect without a problem but not through
curl. I'm probably missing something and hoping someone on here would know
the best way to recreate the session using curl. Here's the debug output
from Filezilla and the sample code I've been working on in php/curl.

/*
Status:        Resolving address of ftps.widgetsltd.com
Status:        Connecting to 123.123.123.123:21...
Status:        Connection established, waiting for welcome message...
Trace:         CFtpControlSocket::OnReceive()
Response:  220-Microsoft FTP Service
Response:  220 Widgets, LTD FTP server
Trace:         CFtpControlSocket::SendNextCommand()
Command:   AUTH TLS
Trace:         CFtpControlSocket::OnReceive()
Response:  234 AUTH command ok. Expecting TLS Negotiation.
Status:        Initializing TLS...
Trace:         CTlsSocket::Handshake()
Trace:         CTlsSocket::ContinueHandshake()
Trace:         CTlsSocket::OnSend()
Trace:         CTlsSocket::OnRead()
Trace:         CTlsSocket::ContinueHandshake()
Trace:         CTlsSocket::OnRead()
Trace:         CTlsSocket::ContinueHandshake()
Trace:         TLS Handshake successful
Trace:         Protocol: TLS1.0, Key exchange: RSA, Cipher:
AES-128-CBC, MAC: SHA1
Status:        Verifying certificate...
Status:        TLS connection established.
Trace:         CFtpControlSocket::SendNextCommand()
Command:   USER s-rokfri
Trace:         CTlsSocket::OnRead()
Trace:         CFtpControlSocket::OnReceive()
Response:  331 Password required for s-rokfri.
Trace:         CFtpControlSocket::SendNextCommand()
Command:   PASS ********
Trace:         CTlsSocket::OnRead()
Trace:         CFtpControlSocket::OnReceive()
Response:  230-This service and information contained therein belong
to Widgets, LTD.
Response:  230 User logged in.
Trace:         CFtpControlSocket::SendNextCommand()
Command:   OPTS UTF8 ON
Trace:         CTlsSocket::OnRead()
Trace:         CFtpControlSocket::OnReceive()
Response:  200 OPTS UTF8 command successful - UTF8 encoding now ON.
Trace:         CFtpControlSocket::SendNextCommand()
Command:   PBSZ 0
Trace:         CTlsSocket::OnRead()
Trace:         CFtpControlSocket::OnReceive()
Response:  200 PBSZ command successful.
Trace:         CFtpControlSocket::SendNextCommand()
Command:   PROT P
Trace:         CTlsSocket::OnRead()
Trace:         CFtpControlSocket::OnReceive()
Response:  200 PROT command successful.
Status:        Connected
Trace:         CFtpControlSocket::ResetOperation(0)
Trace:         CControlSocket::ResetOperation(0)
Trace:         CFileZillaEnginePrivate::ResetOperation(0)
Trace:         Measured latency of 141 ms
Status:        Retrieving directory listing...
Trace:         CFtpControlSocket::SendNextCommand()
Trace:         CFtpControlSocket::ChangeDirSend()
Command:   PWD
Trace:         CTlsSocket::OnRead()
Trace:         CFtpControlSocket::OnReceive()
Response:  257 "/" is current directory.
Trace:         CFtpControlSocket::ResetOperation(0)
Trace:         CControlSocket::ResetOperation(0)
Trace:         CFtpControlSocket::ParseSubcommandResult(0)
Trace:         CFtpControlSocket::ListSubcommandResult()
Trace:           state = 1
Trace:         CFtpControlSocket::ResetOperation(0)
Trace:         CControlSocket::ResetOperation(0)
Status:        Directory listing of "/" successful
Trace:         CFileZillaEnginePrivate::ResetOperation(0)
 */



Here's a code sample.

<?php

$ch = curl_init();

$ftp_data = array(
   'FIRST_NAME' => "John",
   'LAST_NAME' => "Doe",
   'STREET_ADDRESS' => "1313 Mockingbird Lane",
   'CITY' => "Atherton",
   'STATE' => "CA",
   'ZIPCODE' => "94027",
);

$ftp_data = join(",", $ftp_data);

$server_data = array(
   'transfer_id' => 123456789,
   'post_url' => "ftps://ftps.widgetsltd.com",
   'port' => 21,
   'username' => 'widgetsftp',
   'password' => 'password',
);

$filename = sprintf("%s-%s-%s.csv",
                    $server_data['transfer_id'],
                    microtime(TRUE),
                    rand(1000, 9999));

$temp_filename = sprintf("/tmp/%s", $filename);

$fp = fopen($temp_filename, 'w');
fputs($fp, sprintf("%s", $ftp_data));
fclose($fp);

$fp = fopen($temp_filename, 'r');
curl_setopt($ch, CURLOPT_VERBOSE, TRUE);

curl_setopt($ch, CURLOPT_URL, sprintf("%s/%s",
$server_data['post_url'], $filename));
curl_setopt($ch, CURLOPT_PORT, 21);

curl_setopt($ch, CURLOPT_USERPWD, sprintf("%s:%s",
$server_data['username'], $server_data['password']));

curl_setopt($ch, CURLOPT_UPLOAD, TRUE);
curl_setopt($ch, CURLOPT_INFILE, $fp);
curl_setopt($ch, CURLOPT_INFILESIZE, filesize($temp_filename));

curl_setopt($ch, CURLOPT_USE_SSL, TRUE);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, FALSE);
curl_setopt($ch, CURLOPT_SSLVERSION, CURL_SSLVERSION_TLSv1_0);
curl_setopt($ch, CURLOPT_SSL_CIPHER_LIST, 'AES-128-CBC');

curl_setopt($ch, CURLOPT_FTP_SSL, CURLOPT_FTPSSLAUTH);
curl_setopt($ch, CURLOPT_FTPSSLAUTH, CURLFTPAUTH_TLS);
curl_setopt($ch, CURLOPT_TIMEOUT, 5);

print_r(array('curl_exec' => curl_exec($ch)));
print_r(array(
           'curl_errno' => curl_errno($ch),
           'curl_error' => curl_error($ch),
        ));

-- 
John Brahy

CTO/Partner
Popular Marketing
2101 East El Segundo Blvd
Suite 103
El Segundo, CA 90245
skype: jbrahy
844-TALK-DATA x202

--089e011765a5e0b572051f444f1e
Content-Type: text/html; charset=UTF-8
Content-Transfer-Encoding: quoted-printable

<div dir=3D"ltr">I&#39;ve been trying to push to a remote ftp with explicit=
 ssl server and the connection keeps timing out.=C2=A0<div><br></div><div>T=
hrough filezilla I&#39;m able to connect without a problem but not through =
curl. I&#39;m probably missing something and hoping someone on here would k=
now the best way to recreate the session using curl. Here&#39;s the debug o=
utput from Filezilla and the sample code I&#39;ve been working on in php/cu=
rl.</div><div><pre style=3D"color:rgb(0,0,0);font-family:Menlo;font-size:12=
pt"><span style=3D"color:rgb(128,128,128);font-style:italic;background-colo=
r:rgb(247,250,255)">/*<br></span><span style=3D"color:rgb(128,128,128);font=
-style:italic;background-color:rgb(247,250,255)">Status:        Resolving a=
ddress of <a href=3D"http://ftps.widgetsltd.com">ftps.widgetsltd.com</a><br=
></span><span style=3D"color:rgb(128,128,128);font-style:italic;background-=
color:rgb(247,250,255)">Status:        Connecting to 123.123.123.123:21...<=
br></span><span style=3D"color:rgb(128,128,128);font-style:italic;backgroun=
d-color:rgb(247,250,255)">Status:        Connection established, waiting fo=
r welcome message...<br></span><span style=3D"color:rgb(128,128,128);font-s=
tyle:italic;background-color:rgb(247,250,255)">Trace:         CFtpControlSo=
cket::OnReceive()<br></span><span style=3D"color:rgb(128,128,128);font-styl=
e:italic;background-color:rgb(247,250,255)">Response:  220-Microsoft FTP Se=
rvice<br></span><span style=3D"color:rgb(128,128,128);font-style:italic;bac=
kground-color:rgb(247,250,255)">Response:  220 Widgets, LTD FTP server<br><=
/span><span style=3D"color:rgb(128,128,128);font-style:italic;background-co=
lor:rgb(247,250,255)">Trace:         CFtpControlSocket::SendNextCommand()<b=
r></span><span style=3D"color:rgb(128,128,128);font-style:italic;background=
-color:rgb(247,250,255)">Command:   AUTH TLS<br></span><span style=3D"color=
:rgb(128,128,128);font-style:italic;background-color:rgb(247,250,255)">Trac=
e:         CFtpControlSocket::OnReceive()<br></span><span style=3D"color:rg=
b(128,128,128);font-style:italic;background-color:rgb(247,250,255)">Respons=
e:  234 AUTH command ok. Expecting TLS Negotiation.<br></span><span style=
=3D"color:rgb(128,128,128);font-style:italic;background-color:rgb(247,250,2=
55)">Status:        Initializing TLS...<br></span><span style=3D"color:rgb(=
128,128,128);font-style:italic;background-color:rgb(247,250,255)">Trace:   =
      CTlsSocket::Handshake()<br></span><span style=3D"color:rgb(128,128,12=
8);font-style:italic;background-color:rgb(247,250,255)">Trace:         CTls=
Socket::ContinueHandshake()<br></span><span style=3D"color:rgb(128,128,128)=
;font-style:italic;background-color:rgb(247,250,255)">Trace:         CTlsSo=
cket::OnSend()<br></span><span style=3D"color:rgb(128,128,128);font-style:i=
talic;background-color:rgb(247,250,255)">Trace:         CTlsSocket::OnRead(=
)<br></span><span style=3D"color:rgb(128,128,128);font-style:italic;backgro=
und-color:rgb(247,250,255)">Trace:         CTlsSocket::ContinueHandshake()<=
br></span><span style=3D"color:rgb(128,128,128);font-style:italic;backgroun=
d-color:rgb(247,250,255)">Trace:         CTlsSocket::OnRead()<br></span><sp=
an style=3D"color:rgb(128,128,128);font-style:italic;background-color:rgb(2=
47,250,255)">Trace:         CTlsSocket::ContinueHandshake()<br></span><span=
 style=3D"color:rgb(128,128,128);font-style:italic;background-color:rgb(247=
,250,255)">Trace:         TLS Handshake successful<br></span><span style=3D=
"color:rgb(128,128,128);font-style:italic;background-color:rgb(247,250,255)=
">Trace:         Protocol: TLS1.0, Key exchange: RSA, Cipher: AES-128-CBC, =
MAC: SHA1<br></span><span style=3D"color:rgb(128,128,128);font-style:italic=
;background-color:rgb(247,250,255)">Status:        Verifying certificate...=
<br></span><span style=3D"color:rgb(128,128,128);font-style:italic;backgrou=
nd-color:rgb(247,250,255)">Status:        TLS connection established.<br></=
span><span style=3D"color:rgb(128,128,128);font-style:italic;background-col=
or:rgb(247,250,255)">Trace:         CFtpControlSocket::SendNextCommand()<br=
></span><span style=3D"color:rgb(128,128,128);font-style:italic;background-=
color:rgb(247,250,255)">Command:   USER s-rokfri<br></span><span style=3D"c=
olor:rgb(128,128,128);font-style:italic;background-color:rgb(247,250,255)">=
Trace:         CTlsSocket::OnRead()<br></span><span style=3D"color:rgb(128,=
128,128);font-style:italic;background-color:rgb(247,250,255)">Trace:       =
  CFtpControlSocket::OnReceive()<br></span><span style=3D"color:rgb(128,128=
,128);font-style:italic;background-color:rgb(247,250,255)">Response:  331 P=
assword required for s-rokfri.<br></span><span style=3D"color:rgb(128,128,1=
28);font-style:italic;background-color:rgb(247,250,255)">Trace:         CFt=
pControlSocket::SendNextCommand()<br></span><span style=3D"color:rgb(128,12=
8,128);font-style:italic;background-color:rgb(247,250,255)">Command:   PASS=
 ********<br></span><span style=3D"color:rgb(128,128,128);font-style:italic=
;background-color:rgb(247,250,255)">Trace:         CTlsSocket::OnRead()<br>=
</span><span style=3D"color:rgb(128,128,128);font-style:italic;background-c=
olor:rgb(247,250,255)">Trace:         CFtpControlSocket::OnReceive()<br></s=
pan><span style=3D"color:rgb(128,128,128);font-style:italic;background-colo=
r:rgb(247,250,255)">Response:  230-This service and information contained t=
herein belong to Widgets, LTD.<br></span><span style=3D"color:rgb(128,128,1=
28);font-style:italic;background-color:rgb(247,250,255)">Response:  230 Use=
r logged in.<br></span><span style=3D"color:rgb(128,128,128);font-style:ita=
lic;background-color:rgb(247,250,255)">Trace:         CFtpControlSocket::Se=
ndNextCommand()<br></span><span style=3D"color:rgb(128,128,128);font-style:=
italic;background-color:rgb(247,250,255)">Command:   OPTS UTF8 ON<br></span=
><span style=3D"color:rgb(128,128,128);font-style:italic;background-color:r=
gb(247,250,255)">Trace:         CTlsSocket::OnRead()<br></span><span style=
=3D"color:rgb(128,128,128);font-style:italic;background-color:rgb(247,250,2=
55)">Trace:         CFtpControlSocket::OnReceive()<br></span><span style=3D=
"color:rgb(128,128,128);font-style:italic;background-color:rgb(247,250,255)=
">Response:  200 OPTS UTF8 command successful - UTF8 encoding now ON.<br></=
span><span style=3D"color:rgb(128,128,128);font-style:italic;background-col=
or:rgb(247,250,255)">Trace:         CFtpControlSocket::SendNextCommand()<br=
></span><span style=3D"color:rgb(128,128,128);font-style:italic;background-=
color:rgb(247,250,255)">Command:   PBSZ 0<br></span><span style=3D"color:rg=
b(128,128,128);font-style:italic;background-color:rgb(247,250,255)">Trace: =
        CTlsSocket::OnRead()<br></span><span style=3D"color:rgb(128,128,128=
);font-style:italic;background-color:rgb(247,250,255)">Trace:         CFtpC=
ontrolSocket::OnReceive()<br></span><span style=3D"color:rgb(128,128,128);f=
ont-style:italic;background-color:rgb(247,250,255)">Response:  200 PBSZ com=
mand successful.<br></span><span style=3D"color:rgb(128,128,128);font-style=
:italic;background-color:rgb(247,250,255)">Trace:         CFtpControlSocket=
::SendNextCommand()<br></span><span style=3D"color:rgb(128,128,128);font-st=
yle:italic;background-color:rgb(247,250,255)">Command:   PROT P<br></span><=
span style=3D"color:rgb(128,128,128);font-style:italic;background-color:rgb=
(247,250,255)">Trace:         CTlsSocket::OnRead()<br></span><span style=3D=
"color:rgb(128,128,128);font-style:italic;background-color:rgb(247,250,255)=
">Trace:         CFtpControlSocket::OnReceive()<br></span><span style=3D"co=
lor:rgb(128,128,128);font-style:italic;background-color:rgb(247,250,255)">R=
esponse:  200 PROT command successful.<br></span><span style=3D"color:rgb(1=
28,128,128);font-style:italic;background-color:rgb(247,250,255)">Status:   =
     Connected<br></span><span style=3D"color:rgb(128,128,128);font-style:i=
talic;background-color:rgb(247,250,255)">Trace:         CFtpControlSocket::=
ResetOperation(0)<br></span><span style=3D"color:rgb(128,128,128);font-styl=
e:italic;background-color:rgb(247,250,255)">Trace:         CControlSocket::=
ResetOperation(0)<br></span><span style=3D"color:rgb(128,128,128);font-styl=
e:italic;background-color:rgb(247,250,255)">Trace:         CFileZillaEngine=
Private::ResetOperation(0)<br></span><span style=3D"color:rgb(128,128,128);=
font-style:italic;background-color:rgb(247,250,255)">Trace:         Measure=
d latency of 141 ms<br></span><span style=3D"color:rgb(128,128,128);font-st=
yle:italic;background-color:rgb(247,250,255)">Status:        Retrieving dir=
ectory listing...<br></span><span style=3D"color:rgb(128,128,128);font-styl=
e:italic;background-color:rgb(247,250,255)">Trace:         CFtpControlSocke=
t::SendNextCommand()<br></span><span style=3D"color:rgb(128,128,128);font-s=
tyle:italic;background-color:rgb(247,250,255)">Trace:         CFtpControlSo=
cket::ChangeDirSend()<br></span><span style=3D"color:rgb(128,128,128);font-=
style:italic;background-color:rgb(247,250,255)">Command:   PWD<br></span><s=
pan style=3D"color:rgb(128,128,128);font-style:italic;background-color:rgb(=
247,250,255)">Trace:         CTlsSocket::OnRead()<br></span><span style=3D"=
color:rgb(128,128,128);font-style:italic;background-color:rgb(247,250,255)"=
>Trace:         CFtpControlSocket::OnReceive()<br></span><span style=3D"col=
or:rgb(128,128,128);font-style:italic;background-color:rgb(247,250,255)">Re=
sponse:  257 &quot;/&quot; is current directory.<br></span><span style=3D"c=
olor:rgb(128,128,128);font-style:italic;background-color:rgb(247,250,255)">=
Trace:         CFtpControlSocket::ResetOperation(0)<br></span><span style=
=3D"color:rgb(128,128,128);font-style:italic;background-color:rgb(247,250,2=
55)">Trace:         CControlSocket::ResetOperation(0)<br></span><span style=
=3D"color:rgb(128,128,128);font-style:italic;background-color:rgb(247,250,2=
55)">Trace:         CFtpControlSocket::ParseSubcommandResult(0)<br></span><=
span style=3D"color:rgb(128,128,128);font-style:italic;background-color:rgb=
(247,250,255)">Trace:         CFtpControlSocket::ListSubcommandResult()<br>=
</span><span style=3D"color:rgb(128,128,128);font-style:italic;background-c=
olor:rgb(247,250,255)">Trace:           state =3D 1<br></span><span style=
=3D"color:rgb(128,128,128);font-style:italic;background-color:rgb(247,250,2=
55)">Trace:         CFtpControlSocket::ResetOperation(0)<br></span><span st=
yle=3D"color:rgb(128,128,128);font-style:italic;background-color:rgb(247,25=
0,255)">Trace:         CControlSocket::ResetOperation(0)<br></span><span st=
yle=3D"color:rgb(128,128,128);font-style:italic;background-color:rgb(247,25=
0,255)">Status:        Directory listing of &quot;/&quot; successful<br></s=
pan><span style=3D"color:rgb(128,128,128);font-style:italic;background-colo=
r:rgb(247,250,255)">Trace:         CFileZillaEnginePrivate::ResetOperation(=
0)<br></span><span style=3D"color:rgb(128,128,128);font-style:italic;backgr=
ound-color:rgb(247,250,255)"> */<br></span></pre></div><div><span style=3D"=
color:rgb(128,128,128);font-style:italic;background-color:rgb(247,250,255)"=
><br></span></div><div><br></div><div>Here&#39;s a code sample.</div><div><=
br></div><div><pre style=3D"color:rgb(0,0,0);font-family:Menlo;font-size:12=
pt"><span style=3D"color:rgb(0,0,128);font-weight:bold;background-color:rgb=
(247,250,255)">&lt;?php<br></span><span style=3D"color:rgb(0,0,128);font-we=
ight:bold;background-color:rgb(247,250,255)"><br></span><span style=3D"colo=
r:rgb(102,0,0);background-color:rgb(247,250,255)">$ch </span><span style=3D=
"background-color:rgb(247,250,255)">=3D </span><span style=3D"font-style:it=
alic;background-color:rgb(247,250,255)">curl_init</span><span style=3D"back=
ground-color:rgb(247,250,255)">();<br></span><span style=3D"background-colo=
r:rgb(247,250,255)"><br></span><span style=3D"color:rgb(102,0,0);background=
-color:rgb(247,250,255)">$ftp_data </span><span style=3D"background-color:r=
gb(247,250,255)">=3D </span><span style=3D"color:rgb(0,0,128);font-weight:b=
old;background-color:rgb(247,250,255)">array</span><span style=3D"backgroun=
d-color:rgb(247,250,255)">(<br></span><span style=3D"background-color:rgb(2=
47,250,255)">   </span><span style=3D"color:rgb(0,128,0);font-weight:bold;b=
ackground-color:rgb(247,250,255)">&#39;FIRST_NAME&#39; </span><span style=
=3D"background-color:rgb(247,250,255)">=3D&gt; </span><span style=3D"color:=
rgb(0,128,0);font-weight:bold;background-color:rgb(247,250,255)">&quot;John=
&quot;</span><span style=3D"background-color:rgb(247,250,255)">,<br></span>=
<span style=3D"background-color:rgb(247,250,255)">   </span><span style=3D"=
color:rgb(0,128,0);font-weight:bold;background-color:rgb(247,250,255)">&#39=
;LAST_NAME&#39; </span><span style=3D"background-color:rgb(247,250,255)">=
=3D&gt; </span><span style=3D"color:rgb(0,128,0);font-weight:bold;backgroun=
d-color:rgb(247,250,255)">&quot;Doe&quot;</span><span style=3D"background-c=
olor:rgb(247,250,255)">,<br></span><span style=3D"background-color:rgb(247,=
250,255)">   </span><span style=3D"color:rgb(0,128,0);font-weight:bold;back=
ground-color:rgb(247,250,255)">&#39;STREET_ADDRESS&#39; </span><span style=
=3D"background-color:rgb(247,250,255)">=3D&gt; </span><span style=3D"color:=
rgb(0,128,0);font-weight:bold;background-color:rgb(247,250,255)">&quot;1313=
 Mockingbird Lane&quot;</span><span style=3D"background-color:rgb(247,250,2=
55)">,<br></span><span style=3D"background-color:rgb(247,250,255)">   </spa=
n><span style=3D"color:rgb(0,128,0);font-weight:bold;background-color:rgb(2=
47,250,255)">&#39;CITY&#39; </span><span style=3D"background-color:rgb(247,=
250,255)">=3D&gt; </span><span style=3D"color:rgb(0,128,0);font-weight:bold=
;background-color:rgb(247,250,255)">&quot;Atherton&quot;</span><span style=
=3D"background-color:rgb(247,250,255)">,<br></span><span style=3D"backgroun=
d-color:rgb(247,250,255)">   </span><span style=3D"color:rgb(0,128,0);font-=
weight:bold;background-color:rgb(247,250,255)">&#39;STATE&#39; </span><span=
 style=3D"background-color:rgb(247,250,255)">=3D&gt; </span><span style=3D"=
color:rgb(0,128,0);font-weight:bold;background-color:rgb(247,250,255)">&quo=
t;CA&quot;</span><span style=3D"background-color:rgb(247,250,255)">,<br></s=
pan><span style=3D"background-color:rgb(247,250,255)">   </span><span style=
=3D"color:rgb(0,128,0);font-weight:bold;background-color:rgb(247,250,255)">=
&#39;ZIPCODE&#39; </span><span style=3D"background-color:rgb(247,250,255)">=
=3D&gt; </span><span style=3D"color:rgb(0,128,0);font-weight:bold;backgroun=
d-color:rgb(247,250,255)">&quot;94027&quot;</span><span style=3D"background=
-color:rgb(247,250,255)">,<br></span><span style=3D"background-color:rgb(24=
7,250,255)">);<br></span><span style=3D"background-color:rgb(247,250,255)">=
<br></span><span style=3D"color:rgb(102,0,0);background-color:rgb(247,250,2=
55)">$ftp_data </span><span style=3D"background-color:rgb(247,250,255)">=3D=
 </span><span style=3D"font-style:italic;background-color:rgb(247,250,255)"=
>join</span><span style=3D"background-color:rgb(247,250,255)">(</span><span=
 style=3D"color:rgb(0,128,0);font-weight:bold;background-color:rgb(247,250,=
255)">&quot;,&quot;</span><span style=3D"background-color:rgb(247,250,255)"=
>, </span><span style=3D"color:rgb(102,0,0);background-color:rgb(247,250,25=
5)">$ftp_data</span><span style=3D"background-color:rgb(247,250,255)">);<br=
></span><span style=3D"background-color:rgb(247,250,255)"><br></span><span =
style=3D"color:rgb(102,0,0);background-color:rgb(247,250,255)">$server_data=
 </span><span style=3D"background-color:rgb(247,250,255)">=3D </span><span =
style=3D"color:rgb(0,0,128);font-weight:bold;background-color:rgb(247,250,2=
55)">array</span><span style=3D"background-color:rgb(247,250,255)">(<br></s=
pan><span style=3D"background-color:rgb(247,250,255)">   </span><span style=
=3D"color:rgb(0,128,0);font-weight:bold;background-color:rgb(247,250,255)">=
&#39;transfer_id&#39; </span><span style=3D"background-color:rgb(247,250,25=
5)">=3D&gt; </span><span style=3D"color:rgb(0,0,255);background-color:rgb(2=
47,250,255)">123456789</span><span style=3D"background-color:rgb(247,250,25=
5)">,<br></span><span style=3D"background-color:rgb(247,250,255)">   </span=
><span style=3D"color:rgb(0,128,0);font-weight:bold;background-color:rgb(24=
7,250,255)">&#39;post_url&#39; </span><span style=3D"background-color:rgb(2=
47,250,255)">=3D&gt; </span><span style=3D"color:rgb(0,128,0);font-weight:b=
old;background-color:rgb(247,250,255)">&quot;ftps://<a href=3D"http://ftps.=
widgetsltd.com">ftps.widgetsltd.com</a>&quot;</span><span style=3D"backgrou=
nd-color:rgb(247,250,255)">,<br></span><span style=3D"background-color:rgb(=
247,250,255)">   </span><span style=3D"color:rgb(0,128,0);font-weight:bold;=
background-color:rgb(247,250,255)">&#39;port&#39; </span><span style=3D"bac=
kground-color:rgb(247,250,255)">=3D&gt; </span><span style=3D"color:rgb(0,0=
,255);background-color:rgb(247,250,255)">21</span><span style=3D"background=
-color:rgb(247,250,255)">,<br></span><span style=3D"background-color:rgb(24=
7,250,255)">   </span><span style=3D"color:rgb(0,128,0);font-weight:bold;ba=
ckground-color:rgb(247,250,255)">&#39;username&#39; </span><span style=3D"b=
ackground-color:rgb(247,250,255)">=3D&gt; </span><span style=3D"color:rgb(0=
,128,0);font-weight:bold;background-color:rgb(247,250,255)">&#39;widgetsftp=
&#39;</span><span style=3D"background-color:rgb(247,250,255)">,<br></span><=
span style=3D"background-color:rgb(247,250,255)">   </span><span style=3D"c=
olor:rgb(0,128,0);font-weight:bold;background-color:rgb(247,250,255)">&#39;=
password&#39; </span><span style=3D"background-color:rgb(247,250,255)">=3D&=
gt; </span><span style=3D"color:rgb(0,128,0);font-weight:bold;background-co=
lor:rgb(247,250,255)">&#39;password&#39;</span><span style=3D"background-co=
lor:rgb(247,250,255)">,<br></span><span style=3D"background-color:rgb(247,2=
50,255)">);<br></span><span style=3D"background-color:rgb(247,250,255)"><br=
></span><span style=3D"color:rgb(102,0,0);background-color:rgb(247,250,255)=
">$filename </span><span style=3D"background-color:rgb(247,250,255)">=3D </=
span><span style=3D"font-style:italic;background-color:rgb(247,250,255)">sp=
rintf</span><span style=3D"background-color:rgb(247,250,255)">(</span><span=
 style=3D"color:rgb(0,128,0);font-weight:bold;background-color:rgb(247,250,=
255)">&quot;%s-%s-%s.csv&quot;</span><span style=3D"background-color:rgb(24=
7,250,255)">,<br></span><span style=3D"background-color:rgb(247,250,255)"> =
                   </span><span style=3D"color:rgb(102,0,0);background-colo=
r:rgb(247,250,255)">$server_data</span><span style=3D"background-color:rgb(=
247,250,255)">[</span><span style=3D"color:rgb(0,128,0);font-weight:bold;ba=
ckground-color:rgb(247,250,255)">&#39;transfer_id&#39;</span><span style=3D=
"background-color:rgb(247,250,255)">],<br></span><span style=3D"background-=
color:rgb(247,250,255)">                    </span><span style=3D"font-styl=
e:italic;background-color:rgb(247,250,255)">microtime</span><span style=3D"=
background-color:rgb(247,250,255)">(</span><span style=3D"color:rgb(0,0,128=
);font-weight:bold;background-color:rgb(247,250,255)">TRUE</span><span styl=
e=3D"background-color:rgb(247,250,255)">),<br></span><span style=3D"backgro=
und-color:rgb(247,250,255)">                    </span><span style=3D"font-=
style:italic;background-color:rgb(247,250,255)">rand</span><span style=3D"b=
ackground-color:rgb(247,250,255)">(</span><span style=3D"color:rgb(0,0,255)=
;background-color:rgb(247,250,255)">1000</span><span style=3D"background-co=
lor:rgb(247,250,255)">, </span><span style=3D"color:rgb(0,0,255);background=
-color:rgb(247,250,255)">9999</span><span style=3D"background-color:rgb(247=
,250,255)">));<br></span><span style=3D"background-color:rgb(247,250,255)">=
<br></span><span style=3D"color:rgb(102,0,0);background-color:rgb(247,250,2=
55)">$temp_filename </span><span style=3D"background-color:rgb(247,250,255)=
">=3D </span><span style=3D"font-style:italic;background-color:rgb(247,250,=
255)">sprintf</span><span style=3D"background-color:rgb(247,250,255)">(</sp=
an><span style=3D"color:rgb(0,128,0);font-weight:bold;background-color:rgb(=
247,250,255)">&quot;/tmp/%s&quot;</span><span style=3D"background-color:rgb=
(247,250,255)">, </span><span style=3D"color:rgb(102,0,0);background-color:=
rgb(247,250,255)">$filename</span><span style=3D"background-color:rgb(247,2=
50,255)">);<br></span><span style=3D"background-color:rgb(247,250,255)"><br=
></span><span style=3D"color:rgb(102,0,0);background-color:rgb(247,250,255)=
">$fp </span><span style=3D"background-color:rgb(247,250,255)">=3D </span><=
span style=3D"font-style:italic;background-color:rgb(247,250,255)">fopen</s=
pan><span style=3D"background-color:rgb(247,250,255)">(</span><span style=
=3D"color:rgb(102,0,0);background-color:rgb(247,250,255)">$temp_filename</s=
pan><span style=3D"background-color:rgb(247,250,255)">, </span><span style=
=3D"color:rgb(0,128,0);font-weight:bold;background-color:rgb(247,250,255)">=
&#39;w&#39;</span><span style=3D"background-color:rgb(247,250,255)">);<br><=
/span><span style=3D"font-style:italic;background-color:rgb(247,250,255)">f=
puts</span><span style=3D"background-color:rgb(247,250,255)">(</span><span =
style=3D"color:rgb(102,0,0);background-color:rgb(247,250,255)">$fp</span><s=
pan style=3D"background-color:rgb(247,250,255)">, </span><span style=3D"fon=
t-style:italic;background-color:rgb(247,250,255)">sprintf</span><span style=
=3D"background-color:rgb(247,250,255)">(</span><span style=3D"color:rgb(0,1=
28,0);font-weight:bold;background-color:rgb(247,250,255)">&quot;%s&quot;</s=
pan><span style=3D"background-color:rgb(247,250,255)">, </span><span style=
=3D"color:rgb(102,0,0);background-color:rgb(247,250,255)">$ftp_data</span><=
span style=3D"background-color:rgb(247,250,255)">));<br></span><span style=
=3D"font-style:italic;background-color:rgb(247,250,255)">fclose</span><span=
 style=3D"background-color:rgb(247,250,255)">(</span><span style=3D"color:r=
gb(102,0,0);background-color:rgb(247,250,255)">$fp</span><span style=3D"bac=
kground-color:rgb(247,250,255)">);<br></span><span style=3D"background-colo=
r:rgb(247,250,255)"><br></span><span style=3D"color:rgb(102,0,0);background=
-color:rgb(247,250,255)">$fp </span><span style=3D"background-color:rgb(247=
,250,255)">=3D </span><span style=3D"font-style:italic;background-color:rgb=
(247,250,255)">fopen</span><span style=3D"background-color:rgb(247,250,255)=
">(</span><span style=3D"color:rgb(102,0,0);background-color:rgb(247,250,25=
5)">$temp_filename</span><span style=3D"background-color:rgb(247,250,255)">=
, </span><span style=3D"color:rgb(0,128,0);font-weight:bold;background-colo=
r:rgb(247,250,255)">&#39;r&#39;</span><span style=3D"background-color:rgb(2=
47,250,255)">);<br></span><span style=3D"font-style:italic;background-color=
:rgb(247,250,255)">curl_setopt</span><span style=3D"background-color:rgb(24=
7,250,255)">(</span><span style=3D"color:rgb(102,0,0);background-color:rgb(=
247,250,255)">$ch</span><span style=3D"background-color:rgb(247,250,255)">,=
 </span><span style=3D"color:rgb(102,14,122);font-weight:bold;font-style:it=
alic;background-color:rgb(247,250,255)">CURLOPT_VERBOSE</span><span style=
=3D"background-color:rgb(247,250,255)">, </span><span style=3D"color:rgb(0,=
0,128);font-weight:bold;background-color:rgb(247,250,255)">TRUE</span><span=
 style=3D"background-color:rgb(247,250,255)">);<br></span><span style=3D"ba=
ckground-color:rgb(247,250,255)"><br></span><span style=3D"font-style:itali=
c;background-color:rgb(247,250,255)">curl_setopt</span><span style=3D"backg=
round-color:rgb(247,250,255)">(</span><span style=3D"color:rgb(102,0,0);bac=
kground-color:rgb(247,250,255)">$ch</span><span style=3D"background-color:r=
gb(247,250,255)">, </span><span style=3D"color:rgb(102,14,122);font-weight:=
bold;font-style:italic;background-color:rgb(247,250,255)">CURLOPT_URL</span=
><span style=3D"background-color:rgb(247,250,255)">, </span><span style=3D"=
font-style:italic;background-color:rgb(247,250,255)">sprintf</span><span st=
yle=3D"background-color:rgb(247,250,255)">(</span><span style=3D"color:rgb(=
0,128,0);font-weight:bold;background-color:rgb(247,250,255)">&quot;%s/%s&qu=
ot;</span><span style=3D"background-color:rgb(247,250,255)">, </span><span =
style=3D"color:rgb(102,0,0);background-color:rgb(247,250,255)">$server_data=
</span><span style=3D"background-color:rgb(247,250,255)">[</span><span styl=
e=3D"color:rgb(0,128,0);font-weight:bold;background-color:rgb(247,250,255)"=
>&#39;post_url&#39;</span><span style=3D"background-color:rgb(247,250,255)"=
>], </span><span style=3D"color:rgb(102,0,0);background-color:rgb(247,250,2=
55)">$filename</span><span style=3D"background-color:rgb(247,250,255)">));<=
br></span><span style=3D"font-style:italic;background-color:rgb(247,250,255=
)">curl_setopt</span><span style=3D"background-color:rgb(247,250,255)">(</s=
pan><span style=3D"color:rgb(102,0,0);background-color:rgb(247,250,255)">$c=
h</span><span style=3D"background-color:rgb(247,250,255)">, </span><span st=
yle=3D"color:rgb(102,14,122);font-weight:bold;font-style:italic;background-=
color:rgb(247,250,255)">CURLOPT_PORT</span><span style=3D"background-color:=
rgb(247,250,255)">, </span><span style=3D"color:rgb(0,0,255);background-col=
or:rgb(247,250,255)">21</span><span style=3D"background-color:rgb(247,250,2=
55)">);<br></span><span style=3D"background-color:rgb(247,250,255)"><br></s=
pan><span style=3D"font-style:italic;background-color:rgb(247,250,255)">cur=
l_setopt</span><span style=3D"background-color:rgb(247,250,255)">(</span><s=
pan style=3D"color:rgb(102,0,0);background-color:rgb(247,250,255)">$ch</spa=
n><span style=3D"background-color:rgb(247,250,255)">, </span><span style=3D=
"color:rgb(102,14,122);font-weight:bold;font-style:italic;background-color:=
rgb(247,250,255)">CURLOPT_USERPWD</span><span style=3D"background-color:rgb=
(247,250,255)">, </span><span style=3D"font-style:italic;background-color:r=
gb(247,250,255)">sprintf</span><span style=3D"background-color:rgb(247,250,=
255)">(</span><span style=3D"color:rgb(0,128,0);font-weight:bold;background=
-color:rgb(247,250,255)">&quot;%s:%s&quot;</span><span style=3D"background-=
color:rgb(247,250,255)">, </span><span style=3D"color:rgb(102,0,0);backgrou=
nd-color:rgb(247,250,255)">$server_data</span><span style=3D"background-col=
or:rgb(247,250,255)">[</span><span style=3D"color:rgb(0,128,0);font-weight:=
bold;background-color:rgb(247,250,255)">&#39;username&#39;</span><span styl=
e=3D"background-color:rgb(247,250,255)">], </span><span style=3D"color:rgb(=
102,0,0);background-color:rgb(247,250,255)">$server_data</span><span style=
=3D"background-color:rgb(247,250,255)">[</span><span style=3D"color:rgb(0,1=
28,0);font-weight:bold;background-color:rgb(247,250,255)">&#39;password&#39=
;</span><span style=3D"background-color:rgb(247,250,255)">]));<br></span><s=
pan style=3D"background-color:rgb(247,250,255)"><br></span><span style=3D"f=
ont-style:italic;background-color:rgb(247,250,255)">curl_setopt</span><span=
 style=3D"background-color:rgb(247,250,255)">(</span><span style=3D"color:r=
gb(102,0,0);background-color:rgb(247,250,255)">$ch</span><span style=3D"bac=
kground-color:rgb(247,250,255)">, </span><span style=3D"color:rgb(102,14,12=
2);font-weight:bold;font-style:italic;background-color:rgb(247,250,255)">CU=
RLOPT_UPLOAD</span><span style=3D"background-color:rgb(247,250,255)">, </sp=
an><span style=3D"color:rgb(0,0,128);font-weight:bold;background-color:rgb(=
247,250,255)">TRUE</span><span style=3D"background-color:rgb(247,250,255)">=
);<br></span><span style=3D"font-style:italic;background-color:rgb(247,250,=
255)">curl_setopt</span><span style=3D"background-color:rgb(247,250,255)">(=
</span><span style=3D"color:rgb(102,0,0);background-color:rgb(247,250,255)"=
>$ch</span><span style=3D"background-color:rgb(247,250,255)">, </span><span=
 style=3D"color:rgb(102,14,122);font-weight:bold;font-style:italic;backgrou=
nd-color:rgb(247,250,255)">CURLOPT_INFILE</span><span style=3D"background-c=
olor:rgb(247,250,255)">, </span><span style=3D"color:rgb(102,0,0);backgroun=
d-color:rgb(247,250,255)">$fp</span><span style=3D"background-color:rgb(247=
,250,255)">);<br></span><span style=3D"font-style:italic;background-color:r=
gb(247,250,255)">curl_setopt</span><span style=3D"background-color:rgb(247,=
250,255)">(</span><span style=3D"color:rgb(102,0,0);background-color:rgb(24=
7,250,255)">$ch</span><span style=3D"background-color:rgb(247,250,255)">, <=
/span><span style=3D"color:rgb(102,14,122);font-weight:bold;font-style:ital=
ic;background-color:rgb(247,250,255)">CURLOPT_INFILESIZE</span><span style=
=3D"background-color:rgb(247,250,255)">, </span><span style=3D"font-style:i=
talic;background-color:rgb(247,250,255)">filesize</span><span style=3D"back=
ground-color:rgb(247,250,255)">(</span><span style=3D"color:rgb(102,0,0);ba=
ckground-color:rgb(247,250,255)">$temp_filename</span><span style=3D"backgr=
ound-color:rgb(247,250,255)">));<br></span><span style=3D"background-color:=
rgb(247,250,255)"><br></span><span style=3D"font-style:italic;background-co=
lor:rgb(247,250,255)">curl_setopt</span><span style=3D"background-color:rgb=
(247,250,255)">(</span><span style=3D"color:rgb(102,0,0);background-color:r=
gb(247,250,255)">$ch</span><span style=3D"background-color:rgb(247,250,255)=
">, </span><span style=3D"color:rgb(102,14,122);font-weight:bold;font-style=
:italic;background-color:rgb(247,250,255)">CURLOPT_USE_SSL</span><span styl=
e=3D"background-color:rgb(247,250,255)">, </span><span style=3D"color:rgb(0=
,0,128);font-weight:bold;background-color:rgb(247,250,255)">TRUE</span><spa=
n style=3D"background-color:rgb(247,250,255)">);<br></span><span style=3D"f=
ont-style:italic;background-color:rgb(247,250,255)">curl_setopt</span><span=
 style=3D"background-color:rgb(247,250,255)">(</span><span style=3D"color:r=
gb(102,0,0);background-color:rgb(247,250,255)">$ch</span><span style=3D"bac=
kground-color:rgb(247,250,255)">, </span><span style=3D"color:rgb(102,14,12=
2);font-weight:bold;font-style:italic;background-color:rgb(247,250,255)">CU=
RLOPT_SSL_VERIFYPEER</span><span style=3D"background-color:rgb(247,250,255)=
">, </span><span style=3D"color:rgb(0,0,128);font-weight:bold;background-co=
lor:rgb(247,250,255)">FALSE</span><span style=3D"background-color:rgb(247,2=
50,255)">);<br></span><span style=3D"font-style:italic;background-color:rgb=
(247,250,255)">curl_setopt</span><span style=3D"background-color:rgb(247,25=
0,255)">(</span><span style=3D"color:rgb(102,0,0);background-color:rgb(247,=
250,255)">$ch</span><span style=3D"background-color:rgb(247,250,255)">, </s=
pan><span style=3D"color:rgb(102,14,122);font-weight:bold;font-style:italic=
;background-color:rgb(247,250,255)">CURLOPT_SSL_VERIFYHOST</span><span styl=
e=3D"background-color:rgb(247,250,255)">, </span><span style=3D"color:rgb(0=
,0,128);font-weight:bold;background-color:rgb(247,250,255)">FALSE</span><sp=
an style=3D"background-color:rgb(247,250,255)">);<br></span><span style=3D"=
font-style:italic;background-color:rgb(247,250,255)">curl_setopt</span><spa=
n style=3D"background-color:rgb(247,250,255)">(</span><span style=3D"color:=
rgb(102,0,0);background-color:rgb(247,250,255)">$ch</span><span style=3D"ba=
ckground-color:rgb(247,250,255)">, </span><span style=3D"color:rgb(102,14,1=
22);font-weight:bold;font-style:italic;background-color:rgb(247,250,255)">C=
URLOPT_SSLVERSION</span><span style=3D"background-color:rgb(247,250,255)">,=
 </span><span style=3D"color:rgb(102,14,122);font-weight:bold;font-style:it=
alic;background-color:rgb(247,250,255)">CURL_SSLVERSION_TLSv1_0</span><span=
 style=3D"background-color:rgb(247,250,255)">);<br></span><span style=3D"fo=
nt-style:italic;background-color:rgb(247,250,255)">curl_setopt</span><span =
style=3D"background-color:rgb(247,250,255)">(</span><span style=3D"color:rg=
b(102,0,0);background-color:rgb(247,250,255)">$ch</span><span style=3D"back=
ground-color:rgb(247,250,255)">, </span><span style=3D"color:rgb(102,14,122=
);font-weight:bold;font-style:italic;background-color:rgb(247,250,255)">CUR=
LOPT_SSL_CIPHER_LIST</span><span style=3D"background-color:rgb(247,250,255)=
">, </span><span style=3D"color:rgb(0,128,0);font-weight:bold;background-co=
lor:rgb(247,250,255)">&#39;AES-128-CBC&#39;</span><span style=3D"background=
-color:rgb(247,250,255)">);<br></span><span style=3D"background-color:rgb(2=
47,250,255)"><br></span><span style=3D"font-style:italic;background-color:r=
gb(247,250,255)">curl_setopt</span><span style=3D"background-color:rgb(247,=
250,255)">(</span><span style=3D"color:rgb(102,0,0);background-color:rgb(24=
7,250,255)">$ch</span><span style=3D"background-color:rgb(247,250,255)">, <=
/span><span style=3D"color:rgb(102,14,122);font-weight:bold;font-style:ital=
ic;background-color:rgb(247,250,255)">CURLOPT_FTP_SSL</span><span style=3D"=
background-color:rgb(247,250,255)">, </span><span style=3D"color:rgb(102,14=
,122);font-weight:bold;font-style:italic;background-color:rgb(247,250,255)"=
>CURLOPT_FTPSSLAUTH</span><span style=3D"background-color:rgb(247,250,255)"=
>);<br></span><span style=3D"font-style:italic;background-color:rgb(247,250=
,255)">curl_setopt</span><span style=3D"background-color:rgb(247,250,255)">=
(</span><span style=3D"color:rgb(102,0,0);background-color:rgb(247,250,255)=
">$ch</span><span style=3D"background-color:rgb(247,250,255)">, </span><spa=
n style=3D"color:rgb(102,14,122);font-weight:bold;font-style:italic;backgro=
und-color:rgb(247,250,255)">CURLOPT_FTPSSLAUTH</span><span style=3D"backgro=
und-color:rgb(247,250,255)">, </span><span style=3D"color:rgb(102,14,122);f=
ont-weight:bold;font-style:italic;background-color:rgb(247,250,255)">CURLFT=
PAUTH_TLS</span><span style=3D"background-color:rgb(247,250,255)">);<br></s=
pan><span style=3D"font-style:italic;background-color:rgb(247,250,255)">cur=
l_setopt</span><span style=3D"background-color:rgb(247,250,255)">(</span><s=
pan style=3D"color:rgb(102,0,0);background-color:rgb(247,250,255)">$ch</spa=
n><span style=3D"background-color:rgb(247,250,255)">, </span><span style=3D=
"color:rgb(102,14,122);font-weight:bold;font-style:italic;background-color:=
rgb(247,250,255)">CURLOPT_TIMEOUT</span><span style=3D"background-color:rgb=
(247,250,255)">, </span><span style=3D"color:rgb(0,0,255);background-color:=
rgb(247,250,255)">5</span><span style=3D"background-color:rgb(247,250,255)"=
>);<br></span><span style=3D"background-color:rgb(247,250,255)"><br></span>=
<span style=3D"font-style:italic;background-color:rgb(247,250,255)">print_r=
</span><span style=3D"background-color:rgb(247,250,255)">(</span><span styl=
e=3D"color:rgb(0,0,128);font-weight:bold;background-color:rgb(247,250,255)"=
>array</span><span style=3D"background-color:rgb(247,250,255)">(</span><spa=
n style=3D"color:rgb(0,128,0);font-weight:bold;background-color:rgb(247,250=
,255)">&#39;curl_exec&#39; </span><span style=3D"background-color:rgb(247,2=
50,255)">=3D&gt; </span><span style=3D"font-style:italic;background-color:r=
gb(247,250,255)">curl_exec</span><span style=3D"background-color:rgb(247,25=
0,255)">(</span><span style=3D"color:rgb(102,0,0);background-color:rgb(247,=
250,255)">$ch</span><span style=3D"background-color:rgb(247,250,255)">)));<=
br></span><span style=3D"font-style:italic;background-color:rgb(247,250,255=
)">print_r</span><span style=3D"background-color:rgb(247,250,255)">(</span>=
<span style=3D"color:rgb(0,0,128);font-weight:bold;background-color:rgb(247=
,250,255)">array</span><span style=3D"background-color:rgb(247,250,255)">(<=
br></span><span style=3D"background-color:rgb(247,250,255)">           </sp=
an><span style=3D"color:rgb(0,128,0);font-weight:bold;background-color:rgb(=
247,250,255)">&#39;curl_errno&#39; </span><span style=3D"background-color:r=
gb(247,250,255)">=3D&gt; </span><span style=3D"font-style:italic;background=
-color:rgb(247,250,255)">curl_errno</span><span style=3D"background-color:r=
gb(247,250,255)">(</span><span style=3D"color:rgb(102,0,0);background-color=
:rgb(247,250,255)">$ch</span><span style=3D"background-color:rgb(247,250,25=
5)">),<br></span><span style=3D"background-color:rgb(247,250,255)">        =
   </span><span style=3D"color:rgb(0,128,0);font-weight:bold;background-col=
or:rgb(247,250,255)">&#39;curl_error&#39; </span><span style=3D"background-=
color:rgb(247,250,255)">=3D&gt; </span><span style=3D"font-style:italic;bac=
kground-color:rgb(247,250,255)">curl_error</span><span style=3D"background-=
color:rgb(247,250,255)">(</span><span style=3D"color:rgb(102,0,0);backgroun=
d-color:rgb(247,250,255)">$ch</span><span style=3D"background-color:rgb(247=
,250,255)">),<br></span><span style=3D"background-color:rgb(247,250,255)"> =
       ));<br></span></pre>-- <br><div class=3D"gmail_signature"><div dir=
=3D"ltr"><div><div dir=3D"ltr"><div dir=3D"ltr"><span style=3D"font-family:=
arial;font-size:small">John Brahy</span></div><div dir=3D"ltr"><font face=
=3D"arial" size=3D"2"><br></font><div><div style=3D"font-family:arial"><div=
 style=3D"font-size:small;font-family:arial,sans-serif"><span style=3D"font=
-size:x-small">CTO/Partner</span><br></div><div style=3D"font-family:arial,=
sans-serif"><div style=3D"font-size:small"><font size=3D"1">Popular Marketi=
ng</font></div><div style=3D"font-size:small"><font size=3D"1">2101 East El=
 Segundo Blvd</font></div><div style=3D"font-size:small"><font size=3D"1">S=
uite 103</font></div><div style=3D"font-size:small"><font size=3D"1">El Seg=
undo, CA 90245<br>skype: jbrahy</font></div><div><font size=3D"1">844-TALK-=
DATA x202</font></div><div><font size=3D"1"><br></font></div></div></div></=
div></div></div></div></div></div>
</div></div>

--089e011765a5e0b572051f444f1e--

--===============1367410388==
Content-Type: text/plain; charset="utf-8"
MIME-Version: 1.0
Content-Transfer-Encoding: base64
Content-Disposition: inline

X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KaHR0cDovL2Nv
b2wuaGF4eC5zZS9jZ2ktYmluL21haWxtYW4vbGlzdGluZm8vY3VybC1hbmQtcGhwCg==

--===============1367410388==--