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

# 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) = 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 }