ViewVC Help
View File | Revision Log | Show Annotations | Revision Graph | Root Listing
root/i-scream/misc/mailinfo/mailinfo.pl
Revision: 1.1
Committed: Thu Jul 19 11:11:33 2001 UTC (23 years, 3 months ago) by tdb
Content type: text/plain
Branch: MAIN
Log Message:
A Perl version of the UKC mailinfo client.

File Contents

# User Rev Content
1 tdb 1.1 #!/usr/local/bin/perl -w
2    
3     # -----------------------------------------------------------
4     # Perl UKC mailinfo host
5     #
6     # A perl script that mimmicks the behaviour of the UKC
7     # mailinfo client. Supports all functions except the -C
8     # option to change mailstore.
9     # - T.D.Bishop@ukc.ac.uk
10     #
11     # $Author$
12     # $Id$
13     #------------------------------------------------------------
14    
15     $| = 1;
16    
17     use strict;
18     use IO::Socket;
19    
20     # default mailinfo server
21     my($mailinfo_server) = "mercury.ukc.ac.uk";
22     my($mailinfo_port) = "912";
23    
24     # default settings
25     my($mailinfo_mode) = "mi_guess";
26     my($mailinfo_name) = getlogin;
27     my($mailinfo_quick) = 0;
28    
29     # work out the switches
30     my($mode_set) = 0;
31     while(@ARGV) {
32     my($opt) = shift;
33     if($opt eq "-l" && $mode_set == 0) {
34     $mailinfo_mode = "mi_login";
35     $mode_set = 1;
36     }
37     elsif($opt eq "-n" && $mode_set == 0) {
38     $mailinfo_mode = "mi_name";
39     $mode_set = 1;
40     }
41     elsif($opt eq "-s" && $mode_set == 0) {
42     $mailinfo_mode = "mi_soundex";
43     $mode_set = 1;
44     }
45     elsif($opt eq "-i" && $mode_set == 0) {
46     $mailinfo_mode = "mi_sysid";
47     $mode_set = 1;
48     }
49     elsif($opt eq "-g" && $mode_set == 0) {
50     $mailinfo_mode = "mi_guess";
51     $mode_set = 1;
52     }
53     elsif($opt eq "-q" && $mailinfo_quick == 0) {
54     $mailinfo_quick = 1;
55     }
56     elsif($opt =~ /^-/) {
57     &usage;
58     }
59     else {
60     $mailinfo_name = $opt;
61     }
62     }
63    
64     # run mailinfo
65     &mailinfo($mailinfo_server, $mailinfo_port, $mailinfo_mode, $mailinfo_name, $mailinfo_quick);
66    
67     exit(0);
68    
69    
70     #-----------------------------------------------------------------------
71     # mailinfo
72     # Performs a mailinfo query to a specific server.
73     # Parameters are:
74     # $server = the IP or name of the port server
75     # $port = the port of the mailinfo server
76     # $mode = the lookup mode to use
77     # $name = the name to lookup
78     # $quick = whether to do a quick lookup or not (1 = quick)
79     #-----------------------------------------------------------------------
80     sub mailinfo() {
81     my($server, $port, $mode, $name, $quick) = @_;
82    
83     # connect
84     my($sock) = new IO::Socket::INET(
85     PeerAddr => $server,
86     PeerPort => $port,
87     Proto => 'tcp'
88     ) or die "Cannot connect!";
89    
90     if(!defined $sock) {
91     print "unable to connect to mailinfo server: $server:$port";
92     exit(1);
93     }
94    
95     my($response);
96    
97     # set the sensible option if we want quick mode
98     if($quick) {
99     print "DEBUG sensible on\n";
100     print $sock "sensible on\n";
101     $response = <$sock>;
102     while($response ne ".\n") {
103     #print "$response";
104     $response = <$sock>;
105     }
106     }
107    
108     # send the query
109     print $sock "$mode $name\n";
110    
111     # read and print the response
112     $response = <$sock>;
113     while($response ne ".\n") {
114     print "$response";
115     $response = <$sock>;
116     }
117    
118     # quit and close
119     print $sock "quit\n";
120     close($sock);
121     return;
122     }
123    
124    
125     #-----------------------------------------------------------------------
126     # usage
127     # Prints out usage information
128     #-----------------------------------------------------------------------
129     sub usage() {
130     print <<EOF;
131     Usage: mailinfo [mode] name ...
132     where mode is:
133     -l login search
134     -n name search
135     -s `sounds like' search
136     -i sysid search
137     -g guess search (default)
138     -q quick mode (no mailbox info)
139     -C change mailstore (unsupported)
140     EOF
141     exit(1);
142     }