[Mew-dist 77] Re: Anonymous FTP with proxy
kurati at example.com
kurati at example.com
1996年 11月 21日 (木) 11:50:20 JST
こんにちは、倉地@川崎重工です。
On Tue, 19 Nov 1996 23:12:51 +0900, SAKAI Kiyotaka <ksakai at example.com> wrote:
> >> In article <9611190825.AA23949 at example.com>, TAKAHASHI Masafumi <takahasi at example.com> writes:
>
> >> Fire-wall の中なので、 FTP できませんでした。
>
> >> そこで、FTP Proxy を使っている場合でも anonymous FTP できるような
> >> 一時しのぎをしてみました。
>
> 元メールから判断するに、倉地さんの環境は http proxy しか使えないと理解
> したのですが、違いますでしょうか?
そのとおりです。
>
> 個人的には、このような環境では contrib/httpget を利用するアプローチの
> 方がいいと思うのですが。
そうですね、これだと余分なパッケージもいらないし。
というわけで mew-1.52 もでたので書いて見ました。
crontrib/httpget/mew.url.el-patch を参考にしました。
また、httpget.pl は、私の環境
SparcStation 10, SunOS 4.1.4, perl-5.002
では、
1.proxy port が 80 の場合に
httpget: chat'print("GET http://hogehoge.com/ HTTP/1.0"): Permission denied
のようなエラーがでる。( 特権ポート)
2.
($nfound, $rmask) = select($rmask, undef, undef, $timeout_sec);
の所で止まってしまう。
ので、httpget.pl も変更しました。
この httpget.pl を httpget にリネームして使用しています。
今回は .emacs などに
(setq mew-mime-external-ftp-program "httpget")
と書くだけにしました。(もちろん httpget のサーバの設定はする。)
また、 emacs-w3 を使用する時は、
(setq mew-mime-external-ftp-program "emacs-w3")
とします。
mew-mime-external-ftp-program の値がそれ以外の時はデフォルトの動作をします。
では、さようなら。
----------- beginning of patch ----------------
--- mew-ext.el-dist Thu Nov 21 00:07:37 1996
+++ mew-ext.el Thu Nov 21 11:37:21 1996
@@ -256,6 +256,18 @@
(message "access-type TFTP is not supported yet")
)
+(defun mew-copy-remote-file (remotefile remoteurl localfile)
+ (cond ((string= "httpget" mew-mime-external-ftp-program)
+ (call-process mew-mime-external-ftp-program nil nil nil
+ remoteurl localfile))
+ ((string= "emacs-w3" mew-mime-external-ftp-program)
+ (progn
+ (if (not (featurep 'w3))
+ (require 'w3))
+ (w3-fetch remoteurl)))
+ (t
+ (copy-file remotefile localfile))))
+
(defun mew-ext-anon-ftp (begin end params &optional input-user)
(require 'ange-ftp)
(let* ((access-type (mew-syntax-get-member params "access-type"))
@@ -270,6 +282,7 @@
(ange-ftp-skip-msgs (concat mew-ext-prog-ftp-skip-msgs
ange-ftp-skip-msgs))
(username "") (filepath nil) (localfile nil) (remotefile nil)
+ (remoteurl nil)
(buffer-read-only nil))
(if directory
(if (string-match ".*/$" directory) ;; xxx Win95???
@@ -299,6 +312,7 @@
(setq username (read-string (format "User name at %s: " site)
(user-login-name))))
(setq remotefile (format "/%s@%s:%s" username site filepath))
+ (setq remoteurl (format "ftp://%s%s" site filepath))
(setq localfile
(expand-file-name
(read-file-name "Save to: "
@@ -308,8 +322,8 @@
(format "The local file exists. Overwrite? ")))
(message "The file wasn't retrieved")
(delete-file localfile)
- (copy-file remotefile localfile))
- (copy-file remotefile localfile))
+ (mew-copy-remote-file remotefile remoteurl localfile))
+ (mew-copy-remote-file remotefile remoteurl localfile))
)))
(defun mew-ext-mail-server (begin end params)
--- contrib/httpget/httpget.pl-dist Thu Nov 21 00:08:36 1996
+++ contrib/httpget/httpget.pl Wed Nov 20 13:53:08 1996
@@ -1,13 +1,13 @@
-#!/usr/local/bin/perl4.017
+#!/usr/local/bin/perl --
# httpget --- get a file specified by URL via HTTP
# 1995/1/23 hideki at example.com
$http_version = '1.0';
-$proxy_server = 'proxy.foo.bar.com';
-#$proxy_port = 80;
-$proxy_port = 8080;
-$no_proxy = '^http:.*\.bar\.com';
+$proxy_server = 'hogehoge.co.jp';
+$proxy_port = 80;
+#$proxy_port = 8080;
+$no_proxy = '^hogehoge$';
$timeout_sec = 180;
($prog = $0) =~ s/.*\///;
@@ -50,15 +50,15 @@
($http = &chat'open_port($server, $port))
|| die "$prog: chat'open_port($server, $port): $!\n";
$request = "GET $url HTTP/$http_version";
- &chat'print($http, "$request\r\n")
- || die "$prog: chat'print(\"$request\"): $!\n";
+ &chat'print($http, "$request\r\n");
+# || die "$prog: chat'print(\"$request\"): $!\n";
if ($opt_r) {
$request = "Pragma: no-cache";
- &chat'print($http, "$request\r\n")
- || die "$prog: chat'print(\"$request\"): $!\n";
+ &chat'print($http, "$request\r\n");
+# || die "$prog: chat'print(\"$request\"): $!\n";
}
- &chat'print($http, "\r\n")
- || die "$prog: chat'print(\"\\n\"): $!\n";
+ &chat'print($http, "\r\n");
+# || die "$prog: chat'print(\"\\n\"): $!\n";
*S = *chat'S;
$remotesize = -1;
while (($_ = <S>) && $_ ne "\r\n" && $_ ne "\n") {
@@ -76,7 +76,7 @@
vec($rmask, fileno(S), 1) = 1;
$localsize = 0;
do {
- ($nfound, $rmask) = select($rmask, undef, undef, $timeout_sec);
+ ($nfound, $timeleft) = select($rmask, undef, undef, $timeout_sec);
die "$prog: timed out at $url\n" unless ($nfound);
$_ = <S>;
print DEST $_ if ($_);
----------- end of patch -----------------
--
倉地 修 @ 川崎重工業株式会社 航空宇宙事業部 技術部 制御技術課
kurati_o at example.com , kurati at example.com , QWG02120 at example.com
Mew-dist メーリングリストの案内