Namazu-users-ja(旧)


[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: cgi の中で namazu コマンドを使う方法について



横井です。

[namazu-users-ja] cgi の中で namazu コマンドを使う方法について について。

> 松本@愛媛大図書館システム管理係です。
はじめまして。

> Web用CGIの中でnamazu検索システムを利用する場合
> namazu.cgiは利用できるのですがnamazuコマンドは
> > Your should use "namazu.cgi" instead of" namazu" command.
> というメッセージがでて利用できません。
> Ver.1.X系のnamazuでは利用できていたのですが,Ver.2.X系で
> namazuコマンドを利用する方法はないのでしょうか。
僕もそれには困りました。
出力結果をカスタマイズしたい時には困りますよね。
そこで僕はソースを修正して使っています。

このメールにつけたパッチ(Namazu-2.0.9 用です)を利用してsrc/namazu-cmd.c 
を変更すれば
OK です。
試した事はないのですが、環境変数QUERY_STRING またはSCRIPT_NAME を
空にしてからnamazu コマンドを実行でもよいと思います。

namazu-cmd.c.diff ここから==
--- namazu-cmd.c.org    Mon Dec  3 11:32:41 2001
+++ namazu-cmd.c        Mon Dec  3 11:33:46 2001
@@ -309,7 +309,9 @@

     nmz_set_lang("");

+/*
     if (getenv("QUERY_STRING") && getenv("SCRIPT_NAME")) {
+*/
        /*
         * If invoked as CGI, print a help message and exit.
         *
@@ -319,10 +321,13 @@
         * since 1.9.14, they are different and we cannot
         * use "namazu" command as CGI any longer.
         */
+/*
        printf("%s %s" CRLF CRLF, MSG_MIME_HEADER, contenttype);
        printf("You should use \"namazu.cgi\" instead of \"namazu\" command
.");
        exit(EXIT_FAILURE);
     } else if (argc == 1) {
+*/
+    if (argc == 1) {
        show_mini_usage();
        exit(EXIT_FAILURE);
     } else {
namazu-cmd.c.diff ここまで==

> cgiサンプル
> -------------------
> #! /usr/bin/sh
> usr/local/bin/namazu "${FORM_key}" /usr/local/var/namazu/index/test |
>  test.awk
> -------------------
> 上記サンプルは,ブラウザのFORM上の"key"として受け取ったデータを元に
> namazuで検索し,検索結果をtest.awkで整形し表示させるものです。
省略しているだけだと思いますが、${FORM_key}の汚染チェックは
行う必要があります。
${FORM_key} に「test";コマンド 」などと書かれたら
多分コマンドが実行されてしまいます。

========================
横井
yokoi@xxxxxxxxx
========================