[Mew-dist 12282] Re: Ssh remote_port
Hajimu UMEMOTO ( 梅本 肇 )
ume at example.com
2000年 2月 7日 (月) 17:02:28 JST
梅本@IMASYです。
>>>>> On Mon, 7 Feb 2000 13:31:47 +0900
>>>>> KOIE Hidetaka <hide at example.com> said:
hide> -Lオプションのポート番号はsscanf("%d")と("%hu")で解析しているので
hide> 名前では書けないようです。ssh-2.0.13もみてみましたが、パッと見では
hide> getservbyname()を呼ばないようなので-Lには数字を期待していると思います。
なるほど、SSH は面倒見ないのか。
昔の IM のコードを見てみました。確かに、getservbyname() で展開した後
の値を与えていますね。失礼しました。
ということで、パッチを添付します。試してみてください。
hide> 梅本さんはIM135を使っておられるようなので
hide> IM137との間になにかあるのかなぁと思ったりします。
私は fetchmail で SSH の連携をさせている (実際にはうちの環境ではもう
ちょっと複雑なことをやらせる必要がある) ので、実は、Mew の SSH 連携機
能は使ったことないです。今回テストで初めて使いました。^^;
[Mew-dist 12012] に POP over SSH で使えるようになったという報告があっ
たので、てっきり使えているものとばかり思ってました。
-------------- next part --------------
Index: IM/TcpTransaction.pm
===================================================================
RCS file: /usr/home/ume/ncvs/src/im/IM/TcpTransaction.pm,v
retrieving revision 1.10
diff -u -r1.10 TcpTransaction.pm
--- IM/TcpTransaction.pm 2000/02/07 06:44:34 1.10
+++ IM/TcpTransaction.pm 2000/02/07 07:06:21
@@ -89,7 +89,7 @@
if ($s =~ s/\/(\d+)$//) {
$remoteport = $1;
} else {
- $remoteport = $serv;
+ next unless ($remoteport = getserv($serv, 'tcp'));
}
if ($main::SSH_server eq 'localhost') {
im_warn( "Don't use port-forwarding to `localhost'.\n" );
@@ -437,35 +437,13 @@
my ($node, $serv, $family, $socktype, $proto, $flags) = @_;
- my ($pe_name, $pe_aliases, $pe_proto);
- my ($se_name, $se_aliases, $se_port);
+ my ($pe_name, $pe_aliases, $pe_proto, $se_port);
if (unixp()) {
$proto = 'tcp' unless ($proto);
($pe_name, $pe_aliases, $pe_proto) = getprotobyname($proto);
}
$pe_proto = 6 unless ($pe_name);
- if ($serv =~ /^\d+$/o) {
- $se_port = $serv;
- } else {
- ($se_name, $se_aliases, $se_port) = getservbyname($serv, $proto)
- if (unixp());
- unless ($se_name) {
- if ($serv eq 'smtp') {
- $se_port = 25;
- } elsif ($serv eq 'http') {
- $se_port = 80;
- } elsif ($serv eq 'nntp') {
- $se_port = 119;
- } elsif ($serv eq 'pop3') {
- $se_port = 110;
- } elsif ($serv eq 'imap') {
- $se_port = 143;
- } else {
- im_err("unknown service: $serv\n");
- return undef;
- }
- }
- }
+ return undef unless ($se_port = getserv($serv, $proto));
my ($he_name, $he_alias, $he_type, $he_len, @he_addrs);
if ($node =~ /^(\d+)\.(\d+)\.(\d+)\.(\d+)$/) {
@@ -514,6 +492,36 @@
push(@infos, $family, $socktype, $pe_proto, $sin, $he_name);
}
@infos;
+}
+
+sub getserv($$) {
+ my ($serv, $proto) = @_;
+
+ my ($se_port);
+ if ($serv =~ /^\d+$/o) {
+ $se_port = $serv;
+ } else {
+ my ($se_name, $se_aliases);
+ ($se_name, $se_aliases, $se_port) = getservbyname($serv, $proto)
+ if (unixp());
+ unless ($se_name) {
+ if ($serv eq 'smtp') {
+ $se_port = 25;
+ } elsif ($serv eq 'http') {
+ $se_port = 80;
+ } elsif ($serv eq 'nntp') {
+ $se_port = 119;
+ } elsif ($serv eq 'pop3') {
+ $se_port = 110;
+ } elsif ($serv eq 'imap') {
+ $se_port = 143;
+ } else {
+ im_err("unknown service: $serv\n");
+ return undef;
+ }
+ }
+ }
+ $se_port;
}
sub inet6_pack_sockaddr_in6 ($;$) {
-------------- next part --------------
梅本 肇 @ インターネット互助会横浜 http://www.imasy.org/~ume/
ume at example.com ume at example.com ume at example.com
プログラムは書いた人の意図ではなく書かれた通り動く
Mew-dist メーリングリストの案内