ViewVC Help
View File | Revision Log | Show Annotations | Revision Graph | Root Listing
root/i-scream/misc/mailinfo/mailinfo.pl
Revision: 1.2
Committed: Thu Jul 19 12:19:39 2001 UTC (22 years, 7 months ago) by tdb
Content type: text/plain
Branch: MAIN
Changes since 1.1: +7 -8 lines
Log Message:
Added support for multiple "names".

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 tdb 1.2 my($mailinfo_name) = "";
27 tdb 1.1 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 tdb 1.2 $mailinfo_name .= " $opt";
61 tdb 1.1 }
62     }
63    
64 tdb 1.2 if($mailinfo_name eq "") { $mailinfo_name = getlogin; }
65    
66 tdb 1.1 # run mailinfo
67     &mailinfo($mailinfo_server, $mailinfo_port, $mailinfo_mode, $mailinfo_name, $mailinfo_quick);
68    
69     exit(0);
70    
71    
72     #-----------------------------------------------------------------------
73     # mailinfo
74     # Performs a mailinfo query to a specific server.
75     # Parameters are:
76     # $server = the IP or name of the port server
77     # $port = the port of the mailinfo server
78     # $mode = the lookup mode to use
79     # $name = the name to lookup
80     # $quick = whether to do a quick lookup or not (1 = quick)
81     #-----------------------------------------------------------------------
82     sub mailinfo() {
83     my($server, $port, $mode, $name, $quick) = @_;
84    
85     # connect
86     my($sock) = new IO::Socket::INET(
87     PeerAddr => $server,
88     PeerPort => $port,
89     Proto => 'tcp'
90     ) or die "Cannot connect!";
91    
92     if(!defined $sock) {
93     print "unable to connect to mailinfo server: $server:$port";
94     exit(1);
95     }
96    
97 tdb 1.2 my($response) = "";
98 tdb 1.1
99     # set the sensible option if we want quick mode
100     if($quick) {
101     print $sock "sensible on\n";
102     $response = <$sock>;
103     while($response ne ".\n") {
104     $response = <$sock>;
105     }
106     }
107    
108     # send the query
109     print $sock "$mode $name\n";
110    
111 tdb 1.2 # read and print the response
112 tdb 1.1 while($response ne ".\n") {
113     $response = <$sock>;
114 tdb 1.2 print "$response" unless $response eq ".\n";
115 tdb 1.1 }
116    
117     # quit and close
118     print $sock "quit\n";
119     close($sock);
120     return;
121     }
122    
123    
124     #-----------------------------------------------------------------------
125     # usage
126     # Prints out usage information
127     #-----------------------------------------------------------------------
128     sub usage() {
129     print <<EOF;
130     Usage: mailinfo [mode] name ...
131     where mode is:
132     -l login search
133     -n name search
134     -s `sounds like' search
135     -i sysid search
136     -g guess search (default)
137     -q quick mode (no mailbox info)
138     -C change mailstore (unsupported)
139     EOF
140     exit(1);
141     }