Path: usenet.cise.ufl.edu!usenet.eel.ufl.edu!news.mathworks.com!howland.erols.net!EU.net!Norway.EU.net!nntp.uio.no!news.cais.net!in1.nntp.cais.net!news.structured.net!crusty.teleport.com!nntp0.teleport.com!usenet
From: Alex Hristov <
[email protected]>
Newsgroups: comp.lang.perl.announce,comp.lang.perl.misc
Subject: About to announce Net::Ph (beta)
Followup-To: comp.lang.perl.misc
Date: 7 Nov 1996 14:50:20 GMT
Organization: Omnes
Lines: 122
Approved:
[email protected] (comp.lang.perl.announce)
Message-ID: <
[email protected]>
NNTP-Posting-Host: gadget.cscaper.com
X-Disclaimer: The "Approved" header verifies header information for article transmission and does not imply approval of content.
Xref: usenet.cise.ufl.edu comp.lang.perl.announce:48 comp.lang.perl.misc:7507
Ladies & gentlemen,
a little announcement:
After looking at Graham Barr's (
[email protected])code in
Net::Cmd and Net::FTP, I decided to extend the Net library with
Net::Ph.
For almost a year I was writing simple cgi scripts in perl to deal
with the CCSO Nameserver (aka PH) developed by the University of
Illinois at Urbana-Champaigne. The CCSO Nameserver is a database
containing info about people in an organization. It consists of a
"qi" server and a "ph" client; the latter available for variety
of platforms (UNIX, DOS, Win, Mac, VMS). Even, the Qualcomm Eudora
mail application comes with an integrated ph client.
This client/server environment serves as a centralized database for
Schlumberger Ltd.(the company I'm working for). Simply stated, it
is a phone directory.
The server implementation is quite similar to an ftp daemon: it uses
a command-reply scheme. Commands consist of keywords followed by
one or more arguments; replies consist of numerical codes (-599 to
599) and additional text.
List of commands:
=================
query [field=]value... [return field...]
change [field=]value... make field=value...
login alias
answer code
clear password
logout
fields [field...]
set option[=value]... *
id information *
add field=value...
delete [feild=]value...
status *
siteinfo *
help [{native|client} [topic...]] *
quit
*not considered in Net::Ph for now
List of reply categories:
=========================
100-199 operation in progress
200-299 success
300-399 a request for further information
400-499 temporary failure
500-599 permanent failure
-599 to -100 more replies to be expected for the current command;
have the same meaning as their positive counterparts
Here is a brief description of Net::Ph.
===========
constructor
new (HOST [,OPTIONS])
example: $ph = Net::Ph->new("host.name", Port=>105, Timeout=>20);
methods
open_query (FIELDS,RETURN_FIELDS [, USER, PASS, ENCRYPTED])
example: $qh= $ph->open_query(-fields=>{'field1'=>'value1',
'field2'=>'value2'},
-return_fields=>['value1','value2'],
-user=>'username',
-pass=>'password',
-encrypted=>1);
read_query (QH [, POS])
example:
$pos = 1;
while ( (($status,$buf) = $ph->read_query($qh,$pos)) ) {
foreach $field (sort keys %$buf) {
print "$field = $buf->{$field}\n";
}
$pos++;
}
close_query (QH)
example: close_query($qh);
add (FIELDS [, USER, PASS, ENCRYPTED])
example:
($status,$qh) = $ph->add(-fields=>{'field1'=>'value1'},
-user=>'username',
-pass=>'password',
-encrypted=>1);
close_query($qh);
delete (FIELDS [, USER, PASS, ENCRYPTED])
example:
($status,$qh) = $ph->delete(-fields=>['value1','value2']);
close_query($qh);
change (SEARCH_FIELDS, CHANGE_FIELDS [, USER, PASS, ENCRYPTED])
example:
($status, $qh) = $ph->change(-search_fields=>['value1'],
-change_fields=>{'field2'=>'value2'},
-user=>'username',
-pass=>'password');
close_query($qh);
quit
example: $ph->quit();
========================
Feel free to look at the code and the manual page available at:
http://www.omnes.net/~alex/net_ph/
No installation script is avalable yet. I just keep Ph.pm in
.../site_perl/Net
Any suggestions are more than welcome and appreciated.
Regards,
Alex Hristov (
[email protected])
--