ViewVC Help
View File | Revision Log | Show Annotations | Revision Graph | Root Listing
root/i-scream/misc/mailinfo/mailinfo.pl
Revision: 1.3
Committed: Thu Jul 19 14:28:22 2001 UTC (22 years, 9 months ago) by tdb
Content type: text/plain
Branch: MAIN
Changes since 1.2: +8 -3 lines
Log Message:
Made the output more like the UKC mailinfo binary.

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 tdb 1.3 ) or die "Connection to server broken";
91 tdb 1.1
92     if(!defined $sock) {
93 tdb 1.3 print "Connection to server broken";
94 tdb 1.1 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.3 if($response =~ s/^\?/mailinfo: /) {
115     print "$response";
116     }
117     else {
118     print "$response" unless $response eq ".\n";
119     }
120 tdb 1.1 }
121    
122     # quit and close
123     print $sock "quit\n";
124     close($sock);
125     return;
126     }
127    
128    
129     #-----------------------------------------------------------------------
130     # usage
131     # Prints out usage information
132     #-----------------------------------------------------------------------
133     sub usage() {
134     print <<EOF;
135     Usage: mailinfo [mode] name ...
136     where mode is:
137     -l login search
138     -n name search
139     -s `sounds like' search
140     -i sysid search
141     -g guess search (default)
142     -q quick mode (no mailbox info)
143     -C change mailstore (unsupported)
144     EOF
145     exit(1);
146     }