KENT-WEB サポートコーナー 過去ログ [ 0083 ]


記事No: 15901
投稿日: 2018/06/01(Fri) 13:43:44
タイトルWeb Protect と KeySearch の併用
ID情報: cal32480
投稿者: tan2
URLhttp://adoctec.sakura.ne.jp/protect/protect.cgi?page=0

はじめて質問させていただきます。
Web Protectを利用して社内向けサイトを運営しています。
この度、サイト内検索の機能を追加することになり、KeySearchを利用させていただこうと思っております。
知りたいこととして、
① KeySearchフォルダの適正な配置場所について(protectフォルダの下階層で隠しフォルダ内?あるいはprotectフォルダと同階層でもよいのか?)
② インデックス管理画面の(2)対象ディレクトリで指定するurlはhttp://~protect.cgiもしくはprotect.cgi?page=0(隠しページ名)になるのでしょうか?

アドバイスをどうぞ宜しくお願いいたします。


記事No: 15903
投稿日: 2018/06/02(Sat) 17:14:01
タイトルRe: Web Protect と KeySearch の併用
ID情報: teketen
投稿者: てけてん

> KeySearchフォルダの適正な配置場所について(protectフォルダの下階層で隠しフォルダ内?あるいはprotectフォルダと同階層でもよいのか?)

http://www.kent-web.com/pwd/protect.html
補足事項(1)をよく読んで下さい。

> なお、アクセス制限するCGIファイルは protect.cgi と必ず同一のディレクトリに置いてください。

とあります。
但し、KeySearchは、テキストファイル(htmlファイル、txtファイルなど)しか検索出来ません。
http://www.kent-web.com/data/ksearch.html
> 検索対象ファイルはテキスト系のみです。PDFやWORD等のバイナリーファイルは検索対象にはできません。

CGIスクリプトが表示したページ(protect.cgiが読み込み表示する会員制ページなど)の内容は検索出来ません。
CGIスクリプトは、ブラウザでアクセスすることにより動作するため、ブラウザでアクセスしない時は、protect.cgiは、ただのテキストファイルです。
検索対象に.cgiの拡張子を登録した場合、protect.cgiのスクリプトの記述そのもの(protect.cgiをテキストエディタで開いた時に表示されるもの)を検索対象とします。

但し、隠しファイルがテキスト系のファイルならば(htmlファイルなど)、隠しファイルを検索対象に出来ます。
一旦、隠しファイルを検索対象にしてindexファイルを生成して下さい。
そして、FTPソフトでindex.datとset.datをダウンロードし、テキストエディタで開いて、手動で変更すれば、KeySearchで検索することが出来ます。
どのページが会員ページに対応しているかは、ご自分で判ると思いますので。

変更の仕方ですが、index.datの内容は、例えば

/file3.html 1527923398 file3 [TOPへ戻る] file3 テストしています。 色々テスト。 file1 file3
/file1.html 1527923378 file1 [TOPへ戻る] file1 テストしています。 いつも、テスト中!! file2 file3
/file2.html 1306611530 file2 [TOPへ戻る] file2 こんな感じでテストです。 file1 file3

だったとします(実際のデータは、タブ区切りです)。
file1.htmlがprotect.cgi?page=1、file2.htmlがprotect.cgi?page=2、file3.htmlがprotect.cgi?page=3に対応していたら

/protect.cgi?page=3 1527923398 file3 [TOPへ戻る] file3 テストしています。 色々テスト。 file1 file3
/protect.cgi?page=1 1527923378 file1 [TOPへ戻る] file1 テストしています。 いつも、テスト中!! file2 file3
/protect.cgi?page=2 1306611530 file2 [TOPへ戻る] file2 こんな感じでテストです。 file1 file3

のように変更します。
次にset.datです。
set.datの内容は、例えば

2018/06/02(Sat) 16:34:24<>5<>
./private/<>http://example.com/member/private/<>.html .htm<><><>

このようになっていたら、protect.cgiが格納されているディレクトリへのパスに変更します。

2018/06/02(Sat) 16:34:24<>5<>
./<>http://example.com/member/<>.html .htm<><><>

のように。
変更したら、アップロードして実際に検索して動作確認をしてみて下さい。

この作業は、indexデータを作り変える毎に行って下さい。


■ 注意事項 ■
多分、ご承知だとは思いますが、念の為。

KeySearchとWEB PROTECTで重複しているファイルがあります。
libディレクトリ内の同じファイルは共有しますが、他のファイルは共有しないようにして下さい。
どちらかのスクリプトのファイル名を変更して下さい。

例えば、init.cgiはどちらにも同じ名前のファイルがありますが、中身が違いますよね?
なので、KeySearchのほうをinit2.cgiなどとして、KeySearch関連のファイルで、init.cgiと記述している箇所を全てinit2.cgiに変更するなど。
テンプレートファイルも、文字コードが違いますので、別々に設置して下さい。
テンプレートファイルの場合は、格納しているディレクトリの名前を変更して(tmpl2など)、設定ファイルへの変更も忘れずに。

以上です。


記事No: 15905
投稿日: 2018/06/04(Mon) 11:50:24
タイトルRe^2: Web Protect と KeySearch の併用
ID情報: cal32480
投稿者: tan2
URLhttp://adoctec.sakura.ne.jp/protect/protect.cgi?page

てけてん様

丁寧なご返信をいただき御礼申し上げます。

超初心者のため、まずは頂いた内容を理解して進めて参ります。

取り急ぎ御礼まで。ありがとうございました。

> > KeySearchフォルダの適正な配置場所について(protectフォルダの下階層で隠しフォルダ内?あるいはprotectフォルダと同階層でもよいのか?)
>
> http://www.kent-web.com/pwd/protect.html
> 補足事項(1)をよく読んで下さい。
>
> > なお、アクセス制限するCGIファイルは protect.cgi と必ず同一のディレクトリに置いてください。
>
> とあります。
> 但し、KeySearchは、テキストファイル(htmlファイル、txtファイルなど)しか検索出来ません。
> http://www.kent-web.com/data/ksearch.html
> > 検索対象ファイルはテキスト系のみです。PDFやWORD等のバイナリーファイルは検索対象にはできません。
>
> CGIスクリプトが表示したページ(protect.cgiが読み込み表示する会員制ページなど)の内容は検索出来ません。
> CGIスクリプトは、ブラウザでアクセスすることにより動作するため、ブラウザでアクセスしない時は、protect.cgiは、ただのテキストファイルです。
> 検索対象に.cgiの拡張子を登録した場合、protect.cgiのスクリプトの記述そのもの(protect.cgiをテキストエディタで開いた時に表示されるもの)を検索対象とします。
>
> 但し、隠しファイルがテキスト系のファイルならば(htmlファイルなど)、隠しファイルを検索対象に出来ます。
> 一旦、隠しファイルを検索対象にしてindexファイルを生成して下さい。
> そして、FTPソフトでindex.datとset.datをダウンロードし、テキストエディタで開いて、手動で変更すれば、KeySearchで検索することが出来ます。
> どのページが会員ページに対応しているかは、ご自分で判ると思いますので。
>
> 変更の仕方ですが、index.datの内容は、例えば
>
> /file3.html 1527923398 file3 [TOPへ戻る] file3 テストしています。 色々テスト。 file1 file3
> /file1.html 1527923378 file1 [TOPへ戻る] file1 テストしています。 いつも、テスト中!! file2 file3
> /file2.html 1306611530 file2 [TOPへ戻る] file2 こんな感じでテストです。 file1 file3
>
> だったとします(実際のデータは、タブ区切りです)。
> file1.htmlがprotect.cgi?page=1、file2.htmlがprotect.cgi?page=2、file3.htmlがprotect.cgi?page=3に対応していたら
>
> /protect.cgi?page=3 1527923398 file3 [TOPへ戻る] file3 テストしています。 色々テスト。 file1 file3
> /protect.cgi?page=1 1527923378 file1 [TOPへ戻る] file1 テストしています。 いつも、テスト中!! file2 file3
> /protect.cgi?page=2 1306611530 file2 [TOPへ戻る] file2 こんな感じでテストです。 file1 file3
>
> のように変更します。
> 次にset.datです。
> set.datの内容は、例えば
>
> > 2018/06/02(Sat) 16:34:24<>5<>
> ./private/<>http://example.com/member/private/<>.html .htm<><><>
>
> このようになっていたら、protect.cgiが格納されているディレクトリへのパスに変更します。
>
> > 2018/06/02(Sat) 16:34:24<>5<>
> ./<>http://example.com/member/<>.html .htm<><><>
>
> のように。
> 変更したら、アップロードして実際に検索して動作確認をしてみて下さい。
>
> この作業は、indexデータを作り変える毎に行って下さい。
>
>
> ■ 注意事項 ■
> 多分、ご承知だとは思いますが、念の為。
>
> KeySearchとWEB PROTECTで重複しているファイルがあります。
> libディレクトリ内の同じファイルは共有しますが、他のファイルは共有しないようにして下さい。
> どちらかのスクリプトのファイル名を変更して下さい。
>
> 例えば、init.cgiはどちらにも同じ名前のファイルがありますが、中身が違いますよね?
> なので、KeySearchのほうをinit2.cgiなどとして、KeySearch関連のファイルで、init.cgiと記述している箇所を全てinit2.cgiに変更するなど。
> テンプレートファイルも、文字コードが違いますので、別々に設置して下さい。
> テンプレートファイルの場合は、格納しているディレクトリの名前を変更して(tmpl2など)、設定ファイルへの変更も忘れずに。
>
> 以上です。


記事No: 15906
投稿日: 2018/06/06(Wed) 17:26:45
タイトルRe^3: Web Protect と KeySearch の併用
ID情報: cal32480
投稿者: tan2
URLhttp://adoctec.sakura.ne.jp/protect/protect.cgi?page

てけてん様

お世話になっております。

アドバイスに基づき、漸くprotect内隠しファイル(html)の検索、表示ができるところまでたどりつきました。
ありがとうございました!!

できれば検索文字がハイライト表示になるようにしたいと思い、
Perlの構文紹介サイトなどをいくつか探し始めたところです。
もしオススメのサイト、アドバイスがありましたら
いただけますと幸甚です。

どうぞ宜しくお願いいたします。


> てけてん様
>
> 丁寧なご返信をいただき御礼申し上げます。
>
> 超初心者のため、まずは頂いた内容を理解して進めて参ります。
>
> 取り急ぎ御礼まで。ありがとうございました。
>
> > > KeySearchフォルダの適正な配置場所について(protectフォルダの下階層で隠しフォルダ内?あるいはprotectフォルダと同階層でもよいのか?)
> >
> > http://www.kent-web.com/pwd/protect.html
> > 補足事項(1)をよく読んで下さい。
> >
> > > なお、アクセス制限するCGIファイルは protect.cgi と必ず同一のディレクトリに置いてください。
> >
> > とあります。
> > 但し、KeySearchは、テキストファイル(htmlファイル、txtファイルなど)しか検索出来ません。
> > http://www.kent-web.com/data/ksearch.html
> > > 検索対象ファイルはテキスト系のみです。PDFやWORD等のバイナリーファイルは検索対象にはできません。
> >
> > CGIスクリプトが表示したページ(protect.cgiが読み込み表示する会員制ページなど)の内容は検索出来ません。
> > CGIスクリプトは、ブラウザでアクセスすることにより動作するため、ブラウザでアクセスしない時は、protect.cgiは、ただのテキストファイルです。
> > 検索対象に.cgiの拡張子を登録した場合、protect.cgiのスクリプトの記述そのもの(protect.cgiをテキストエディタで開いた時に表示されるもの)を検索対象とします。
> >
> > 但し、隠しファイルがテキスト系のファイルならば(htmlファイルなど)、隠しファイルを検索対象に出来ます。
> > 一旦、隠しファイルを検索対象にしてindexファイルを生成して下さい。
> > そして、FTPソフトでindex.datとset.datをダウンロードし、テキストエディタで開いて、手動で変更すれば、KeySearchで検索することが出来ます。
> > どのページが会員ページに対応しているかは、ご自分で判ると思いますので。
> >
> > 変更の仕方ですが、index.datの内容は、例えば
> >
> > /file3.html 1527923398 file3 [TOPへ戻る] file3 テストしています。 色々テスト。 file1 file3
> > /file1.html 1527923378 file1 [TOPへ戻る] file1 テストしています。 いつも、テスト中!! file2 file3
> > /file2.html 1306611530 file2 [TOPへ戻る] file2 こんな感じでテストです。 file1 file3
> >
> > だったとします(実際のデータは、タブ区切りです)。
> > file1.htmlがprotect.cgi?page=1、file2.htmlがprotect.cgi?page=2、file3.htmlがprotect.cgi?page=3に対応していたら
> >
> > /protect.cgi?page=3 1527923398 file3 [TOPへ戻る] file3 テストしています。 色々テスト。 file1 file3
> > /protect.cgi?page=1 1527923378 file1 [TOPへ戻る] file1 テストしています。 いつも、テスト中!! file2 file3
> > /protect.cgi?page=2 1306611530 file2 [TOPへ戻る] file2 こんな感じでテストです。 file1 file3
> >
> > のように変更します。
> > 次にset.datです。
> > set.datの内容は、例えば
> >
> > > 2018/06/02(Sat) 16:34:24<>5<>
> > ./private/<>http://example.com/member/private/<>.html .htm<><><>
> >
> > このようになっていたら、protect.cgiが格納されているディレクトリへのパスに変更します。
> >
> > > 2018/06/02(Sat) 16:34:24<>5<>
> > ./<>http://example.com/member/<>.html .htm<><><>
> >
> > のように。
> > 変更したら、アップロードして実際に検索して動作確認をしてみて下さい。
> >
> > この作業は、indexデータを作り変える毎に行って下さい。
> >
> >
> > ■ 注意事項 ■
> > 多分、ご承知だとは思いますが、念の為。
> >
> > KeySearchとWEB PROTECTで重複しているファイルがあります。
> > libディレクトリ内の同じファイルは共有しますが、他のファイルは共有しないようにして下さい。
> > どちらかのスクリプトのファイル名を変更して下さい。
> >
> > 例えば、init.cgiはどちらにも同じ名前のファイルがありますが、中身が違いますよね?
> > なので、KeySearchのほうをinit2.cgiなどとして、KeySearch関連のファイルで、init.cgiと記述している箇所を全てinit2.cgiに変更するなど。
> > テンプレートファイルも、文字コードが違いますので、別々に設置して下さい。
> > テンプレートファイルの場合は、格納しているディレクトリの名前を変更して(tmpl2など)、設定ファイルへの変更も忘れずに。
> >
> > 以上です。


記事No: 15909
投稿日: 2018/06/09(Sat) 11:26:13
タイトルRe^4: Web Protect と KeySearch の併用
ID情報: teketen
投稿者: てけてん

検索結果のページで、ハイライト表示になれば良いのですよね?
でしたら、以下の修正をして下さい。

ksearch.cgi
239行目付近

$tmp =~ s|!doc!|$bk<b>$wd</b>$nx|g;



$tmp =~ s|!doc!|$bk<mark>$wd</mark>$nx|g;

に変更して下さい。
ハイライトの色を変更する時は、スタイルシートで指定されれば良いと思います。
(参考:http://www.tagindex.com/html5/text/mark.html


もしも、該当ページを表示した時にも、検索文字をハイライト表示にしたい場合は、もう少し改造が必要になります。
(この場合、簡易的な改造しかご案内出来ないと思います)


あと、申し訳ありませんが、私のコメントを全文引用しないで下さい。
必要な部分のみ、引用してください。
お願いします。


記事No: 15913
投稿日: 2018/06/11(Mon) 17:43:24
タイトルRe^5: Web Protect と KeySearch の併用
ID情報: cal32480
投稿者: tan2
URLhttp://adoctec.sakura.ne.jp/protect/protect.cgi?page

てけてん様

的確でわかりやすいアドバイス、誠にありがとうございました。

まずはご教示いただいた「検索結果」でのハイライト化を試してみたいと思います。


1ページの情報ボリュームがあるため、
最終的なゴールは「該当ページを表示した時」の検索文字ハイライト化をめざしております。

簡易的な改造方法もぜひ試してみたいと思いますので、
重ね重ね大変恐れ入りますが、ご教示いただけましたら幸甚です。
宜しくお願いいたします。

(全文引用の件、配慮不足により大変失礼いたしました)


記事No: 15916
投稿日: 2018/06/13(Wed) 19:49:09
タイトル修正案 ※一部修正あり
ID情報: teketen
投稿者: てけてん

※ コメントやスクリプトを一部修正しています。最後に修正日と時間などを明記していますので、ご確認下さい。※
※ 検索対象ページ全てにスタイルシートの記述をお願いしましたが、外部スタイルシートを用意いていただければ、スクリプトで付加するように変更しました。※
※ もしも、既に修正前のコメントをお読みになり、スタイルシートを記述されていたら、申し訳ありません※

思ったよりも、簡単にハイライト表示できましたので、ご案内します。
(モジュールを使ってみるなど、難しく考えすぎてました^^;)
ただ、もしかして、ページのhtmlのコーディングにより、表示が崩れるなどあるかも知れません。
ですので、今まで通り、該当ページをハイライト表示なしで表示出来るようにもしています。
※この改造は、検索対象ページが、protect.cgi?page=1のように、protect.cgi経由でページを開く場合に有効です。

※改造は、自己責任でお願いします。
※何かあった際には、元に戻して下さい。

バージョンは、Web Protect v4.33、KeySearch v1.2での改造になります。

protect.cgiをテキストエディタで開いて下さい。

74行目付近

# HTMLファイルなら読み出し
} else {
open(IN,"$cf{prvdir}/$target") or &error("open err: $target");
print "Content-type: text/html\n\n";
print <IN>;
close(IN);

exit;



# HTMLファイルなら読み出し
} else {
open(IN,"$cf{prvdir}/$target") or &error("open err: $target");
print "Content-type: text/html\n\n";

if($in{q}) { # 改造による追加 ■■
my $body = join('',<IN>);
require Encode;
$in{q} = Encode::encode('cp932',Encode::decode('euc-jp',$in{q}));
$in{q} =~ s/ / /g;
$body =~ s/\n{2,}/\n/g;
$body =~ s|(.*?</head>)||si;
my $head = $1;
my $body2;
while($body =~ m|(<\/?[^>]*>)*?(.*?)(<\/?[^>]*>)|gis) {
my ($tag1,$txt,$tag2) = ($1,$2,$3);
if($tag1 =~ /style/i or $tag2 =~ /style/i) {
$body2 .= "$tag1$txt$tag2";
} else {
my $i = 1;
for my $q (split(/\s+/,$in{q})) {
$i = 1 if($i >= 6);
$txt =~ s|(?<!s=")(\Q$q\E)|<span class="mark$i">$1</span>|igs;
$i++;
}
$body2 .= "$tag1$txt$tag2";
}
}
if($highlight == 1) {
my $i = 1;
my $hl = '';
for my $q (split(/\s+/,$in{q})) {
$i = 1 if($i >= 6);
$hl .= qq|<span class="mark$i">$q</span> |;
$i++;
}
require Encode::Guess;
my $enc = Encode::Guess::guess_encoding($body,qw(euc-jp shiftjis 7bit-jis utf8));
$enc = ref $enc ? $enc->name : $enc;
my $txt = Encode::encode($enc,Encode::decode('shiftjis','ハイライトされているキーワード'));
$body2 =~ s|(<body[^>]*>)|$1\n<div id="highlight">$txt:$hl</div>|si;
undef $enc;
}
$head =~ s|(</head>)|<link rel="stylesheet" href="$style" type="text/css" media="all">\n$1|i if($style);
print "$head$body2";
} else {
print <IN>;
} # 改造による修正は、ここまで ■■
close(IN);

exit;

に変更。

protect.cgiの9行目付近

use strict;

の前の行に

# ハイライト表示用外部スタイルシートへのパス
# スクリプトで、外部スタイルシートの呼び出しタグを付加します。
# 例:<link rel="stylesheet" href="./highlight.css" type="text/css" media="all">
# 相対パスで指定される場合は、このスクリプトから見たパスを指定して下さい。
my $style = './highlight.css';

# 検索語句をGoogleのキャッシュのように、ページの始めに
# ハイライトされているキーワード:検索文字
# を付加する場合は1を、しない場合は0を指定して下さい。
# 1にした場合は、該当ページに
# 例:<div id="highlight">ハイライトされているキーワード:<span class="mark1">検索文字1</span> <span class="mark2">検索文字2</span> </div>
# のように<body>タグの下に付加されます。$styleで指定したスタイルシートに、#highlightにてスタイルの指定が出来ます。
my $highlight = 1;

を追加し、設定を行って下さい。
protect.cgiの改造は、ここまで。

次に、ksearch.cgi

238行目付近

$tmp =~ s/!url!/$url$page/g;

の次の行に

$tmp =~ s|!hilight!|[<a href="$url$page&q=$in{q}">ハイライト表示</a>]|g; # 改造の為、追加 ■■

を挿入して下さい。
[ハイライト表示]
の部分は、ご自分で好きな文字に変更されて構いません。
このリンクをクリックすると、検索文字をハイライトしたページを表示出来ます。
また、今まで通り、ハイライトなしの該当ページも表示出来るように$tmp =~ s/!url!/$url$page/g;の部分を残しています。

224行目付近

# テンプレート分割
my ($head,$loop,$foot) = $tmpl =~ /(.+)<!-- loop_begin -->(.+)<!-- loop_end -->(.+)/s
? ($1,$2,$3) : error("テンプレート不正");

の次の行に

$in{q} = url_encode($in{q}); # 改造の為、追加 ■■

を挿入してください。
そして、Key Searchのテンプレートファイルsearch.htmlの

<!-- loop_begin -->から<!-- loop_end -->の間のお好きな場所に

!hilight!

を挿入して下さい。
この部分に、上記で説明した、ハイライト表示する該当ページへのリンク([ハイライト表示])が表示されます。

また、せっかくなので、Googleのキャッシュページのように、検索文字毎に文字の背景色を変更するようにしました。

<span class="mark1">検索文字</span>
<span class="mark2">検索文字2</span>
<span class="mark3">検索文字3</span>
<span class="mark4">検索文字4</span>
<span class="mark5">検索文字5</span>

のように、spanタグで指定し、mark1 ~ make5までのclassを作りました。
検索文字によって、背景色が変更出来ますので、外部スタイルシートを作成し、先程protect.cgiで追加設定した外部スタイルシートに記述して下さい。
(#highlightの指定もこちらで行って下さい)


.mark1 { background: #ffff66; font-weight:bold; }
.mark2 { background: #87CEFA; font-weight:bold; }
.mark3 { background: #FF00FF; font-weight:bold; }
.mark4 { background: #ADFF2F; font-weight:bold; }
.mark5 { background: #9370DB; font-weight:bold; }
#highlight {
background: #cdcdcd;
padding:10px;
margin-bottom:10px;
}


以上です。
# 2018年6月15日 13時50分 一部スクリプトの記述を修正しました。
# 2018年6月16日 20時00分 スタイルシートの記述がある場合、コメント(<!-- -->のないスタイルシート部分を検索してしまうのを修正し、合わせて、Googleのキャッシュのように、ページの始めに
# ハイライトされているキーワード:検索文字
# のように、表示出来るようにしてみました。


記事No: 15918
投稿日: 2018/06/18(Mon) 15:01:50
タイトルRe: 修正案 ※一部修正あり
ID情報: cal32480
投稿者: tan2
URLhttp://adoctec.sakura.ne.jp/protect/protect.cgi?page

てけてん様

お世話になっております。

確認が遅れて申し訳ありません。

大変丁寧な回答をいただきありがとうございました。
より簡単な方法をみつけて下さったとのこと、
あらためまして感謝申し上げます。

全体を眺めてみまして、初心者の私には正直まだまだ難しく感じますが、せっかくの機会でもありチャレンジして参りたいと思います。

時間がかかるかと思いますが、完成しましたらぜひとも報告させていただきます。

取り急ぎ御礼にて、失礼します。


記事No: 15930
投稿日: 2018/06/26(Tue) 11:17:54
タイトルRe^2: 修正案 ※一部修正あり
ID情報: teketen
投稿者: てけてん

すみません。
もしも、検索語に、「mark」「span」「class」「=」「"」「1~5の半角数字」があった場合、ハイライト表示で追加した<span>タグも検索対象になってしまいます。
(数字と=と"は、一語で検索した場合で、半角スペースで区切らず文字に含まれている時は大丈夫です)
もしも、これらを検索するようでしたら、修正案をご案内します。
ですが、検索しない場合は、上記ご紹介した修正で大丈夫です。
念の為に変更されたい場合は、ご遠慮無くおっしゃって下さい。


[検索ページ]