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

# Content
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) = "";
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 if($mailinfo_name eq "") { $mailinfo_name = getlogin; }
65
66 # 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 "Connection to server broken";
91
92 if(!defined $sock) {
93 print "Connection to server broken";
94 exit(1);
95 }
96
97 my($response) = "";
98
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 # read and print the response
112 while($response ne ".\n") {
113 $response = <$sock>;
114 if($response =~ s/^\?/mailinfo: /) {
115 print "$response";
116 }
117 else {
118 print "$response" unless $response eq ".\n";
119 }
120 }
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 }