Landscape トップページ | < 前の日 2003-04-23 2003-04-24 次の日 2003-04-25 >


* Squid の http -> FTP 変換 (ftp over http proxy)

この記事の直リンクURL: Permlink | この記事が属するカテゴリ: [Squid]

ブラウザが ftp://ftp.ring.gr.jp/pub/linux/ に Squid 経由でアクセスするとき、
以下のようなリクエストが投げられる。
GET ftp://ftp.ring.gr.jp/pub/linux/ HTTP/1.1
Host: ftp.ring.gr.jp

当然、ID/Password を指定することも可能。
GET ftp://anonymous:saitou-hiroaki%40example.com@ftp.ring.gr.jp/pub/linux/ HTTP/1.1

アップロードするときは、PUT メソッドを使えば可能。ただし、私が使っている HTTP プロキシ経由では試してない。Netscape を使って LAN 内の ftp サーバ に対し PUT することはできた。

Squid 経由だと、FTP アップロードするときに Netscape は以下のようなリクエストを投げているようだ。
PUT ftp://anonymous:saitou-hiroaki%40example.com@ftp.ring.gr.jp/pub/linux/Zip7Search.dll HTTP/1.0
Proxy-Connection: Keep-Alive
User-Agent: Mozilla/4.78 [en] (Windows NT 5.0; U)
Pragma: no-cache
Host: ftp.ring.gr.jp
Accept: image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, image/png, */*
Accept-Encoding: gzip
Accept-Language: ja,en
Accept-Charset: iso-8859-1,*,utf-8
Content-Length: 6144
以下、ファイルの中身のデータがバイナリで続く。

上記リクエストで、アップロード先のパスは PUT リクエストに含まれているけど、ローカルファイルのパスはどこで指定してるんだろうか? カレントのファイルが対象になるんだろうか?

もちろん、anonymous だと ftp.ring.gr.jp にアップロードはできないのでエラーになった。ちなみに Squid から返ってきたエラーは以下の通り。PUT を STOR に変換してるのがわかる。

HTTP/1.0 500 Internal Server Error
Server: Squid/2.2.STABLE5
Mime-Version: 1.0
Date: Thu, 24 Apr 2003 09:55:52 GMT
Content-Type: text/html
Content-Length: 896
Expires: Thu, 24 Apr 2003 09:55:52 GMT
X-Squid-Error: ERR_FTP_PUT_ERROR 0
X-Cache: MISS from unknown
Age: 286
Via: HTTP/1.0 hostname (Traffic-Server/4.0.19 [cMs f ])
エラー
FTP アップロードは失敗しました

以下の URL を PUT しようとした際に:
ftp://anonymous@ftp.ring.gr.jp/pub/linux/Zip7Search.dll
Squid は以下の ftp コマンドを送りましたが:

        STOR Zip7Search.dll

このような結果を受け取りました.

        Zip7Search.dll: Permission denied on server. (Upload)

この意味は次の通りです:

  パス,パーミッション,ディスクの空き容量を確認し,再度試してください.

Generated Thu, 24 Apr 2003 09:55:52 GMT by unknown
(Squid/2.2.STABLE5)

追記。
2004-05-11 に「lftp で FTP Over HTTP Proxy」という記事を書いた。

* やっぱり自分好みの ChangeLog -> html 変換スクリプトが欲しい

この記事の直リンクURL: Permlink | この記事が属するカテゴリ: [ChangeLog メモ]

- 欲しい機能


・タイトルリスト
ページ右側に、日付とその日のタイトルの一覧、およびそのリンクが欲しい。

・可能な限り厳正な html を出力したい

・・・あれ? これだけか・・・? あとは検索かなあ?
tdiary や hns にあるコメントを付加する機能とかは必要ないよね。

- 仕様

ChangeLog クラス
メソッド
ChangeLog ファイル読み込み、出力
とりあえず読み込みだけ実装しよう。

データ取得
get_date_part() 日付単位に split して返す。
get_suject() 指定された date_part を subject 単位に split して返す。

ChangeLog2html クラス
メソッド
タイトル一覧を返す
subject 一覧を返す
本文を返す

* Perl チュートリアル

この記事の直リンクURL: Permlink | この記事が属するカテゴリ: [Perl]

Perl Tutorial: Start (日本語訳)
http://web.archive.org/web/20030421165224/http://plaza27.mbn ...
原文は http で agora.leeds.ac.uk/Perl/ にあるらしいけど、DNS 正引きできない。

* ChangeLog メモを日付ごとの固まりに split する正規表現

この記事の直リンクURL: Permlink | この記事が属するカテゴリ: [ChangeLog メモ]

my @date_part = split(/^(?!\t|\n)/m, $str);

* bash で第二引数の補完

この記事の直リンクURL: Permlink | この記事が属するカテゴリ: [bash]

- 2003-03-31 に書いた bash の補完で悩む。

chown は 第2引数にファイル名をとるのだが、
complete -u {su,finger,chown}
だと引数の位置にかかわらずユーザ名しか補完してくれない。

- tcsh ならば引数位置による補完対象を指定できるようだが、bash では指定できないようだ。

- Working more productively with bash 2.x

http://www.caliban.org/bash/index.shtml#completion
ではどうやってるのかな、と見てみたが、何やってるか良くわからん。
以下は bash-completion-20030419.tar.gz からの抜粋。
# chown(1) completion
#
_chown()
{
    local cur prev user group i

    COMPREPLY=()
    cur=${COMP_WORDS[COMP_CWORD]}
    prev=${COMP_WORDS[COMP_CWORD-1]}

    # options completion
    if "$cur" == -* ]]; then
        COMPREPLY=( $( compgen -W '-c -h -f -R -v --changes \
        --dereference --no-dereference --from= --silent --quiet \
        --reference= --recursive --verbose --help --version' -- $cur ) )
        return 0
    fi

    # first parameter on line or first since an option?
    if [ $COMP_CWORD -eq 1 ]
; then
        if [[ "$cur" == [a-zA-Z]*[.:]* ]] && \
           [[ ${BASH_VERSINFO[1]} > 04 ]]; then
            user=${cur%%?(\\)[.:]*}
            group=${cur#*[.:]}
            COMPREPLY=( $( compgen -P $user':' \
                    -g -- $group 2>/dev/null) )
        else
            COMPREPLY=( $( compgen -S ':' -u $cur ) )
        fi
    else
        _filedir
    fi

    return 0
}
complete -F _chown $filenames chown

ざっと読んだ限りでは、_chown() という関数を作り、それをchown の補完対象として呼び出すようにしている。_chwon() の前半は chwon のオプションを補完。後半は引数の補完だが、第一引数かどうかを判定し、第一引数だったらユーザ名、そうでなかったらファイル名を補完しているようだ。

なんか面倒だなあ。zsh に乗り換えた方が良いのかなあ。
すべての記事の見出し (全1029件)
全カテゴリの一覧と記事の数
カテゴリごとに記事をまとめ読みできます。記事の表題だけを見たい場合は、すべての記事の見出し (カテゴリ別表示) へ。

直近30日分の記事
2007-04-23 (Mon)
2007-03-07 (Wed)
2007-02-27 (Tue)
2007-01-17 (Wed)
2007-01-15 (Mon)
2007-01-14 (Sun)
2007-01-08 (Mon)
2006-12-01 (Fri)
2006-11-22 (Wed)
2006-11-20 (Mon)
2006-11-19 (Sun)
2006-09-30 (Sat)
2006-08-29 (Tue)
2006-08-04 (Fri)
2006-07-27 (Thu)
2006-07-23 (Sun)
2006-07-17 (Mon)
2006-07-10 (Mon)
2006-07-06 (Thu)
2006-07-03 (Mon)
2006-06-29 (Thu)
2006-06-28 (Wed)
2006-06-27 (Tue)
2006-06-25 (Sun)
2006-06-19 (Mon)
2006-06-18 (Sun)
2006-06-15 (Thu)
2006-06-11 (Sun)
2006-06-01 (Thu)
2006-05-30 (Tue)
プロファイル
斎藤 宏明。エンジニアです。宇都宮市に住んでいます。
リンク
RSS
スポンサードリンク
Powered by
さくらインターネット

© 斎藤 宏明 Saito Hiroaki Gmail Address
Landscape - エンジニアのメモ http://sonic64.com/
Landscape はランドスケープと読みます。
ひらがなだと らんどすけーぷ です。