自分は使うことは無いので触る予定はありませんでしたが利用者が使いたい方もおられるでしょうので一応対応させました。
これはその際のメモです。
# yum install *python*
# ln -s /usr/bin/python /usr/local/bin/python
これで対応します。
Python CGIプログラミング入門
ここの例文を利用させていただいたところ無事動作を確認できました^^
自分は使うことは無いので触る予定はありませんでしたが利用者が使いたい方もおられるでしょうので一応対応させました。
これはその際のメモです。
# yum install *python*
# ln -s /usr/bin/python /usr/local/bin/python
これで対応します。
Python CGIプログラミング入門
ここの例文を利用させていただいたところ無事動作を確認できました^^
いつもお世話になってる方法ですが今回はうざい国からのアクセスを全て遮断様の内容を若干発展させて自動的にデータベースを更新してくれるように設定しみました。
Redhat系用に作成した改造版countryfilter.plを下記のリンクを右クリックして保存する。
countryfilter
※拡張子を.plに変更してサーバの/rootへ転送する。
サーバ上から直接行う場合
# su –
# wget https://www.orsx.net/wp-content/uploads/2010/03/countryfilter1.txt
# mv countryfilter.txt countryfilter.pl
オリジナル自動化シェルスクリプトを下記のリンクから右クリックでダウンロードしてファイル名をcountryfilter.shへ変更する。
countryfilter_sh
ファイル名変更後サーバの/rootディレクトリへ転送する。
サーバ上から直接行う場合
# wget https://www.orsx.net/wp-content/uploads/2010/03/countryfilter_sh1.txt
# mv countryfilter_sh.txt countryfilter.sh
ここからはサーバ上で操作を行う
# chmod +x countryfilter.sh ←実行権の投与
# mv countryfilter.sh /etc/cron.monthly/ ←月一回データベースを更新
動作チェックを行う場合は下記の一行を実行してみる。
※思いの他時間がかかると思われるが紅茶でもすすりながらゆっくりする。
# /etc/cron.monthly/countryfilter.sh
※おそらくVine Linuxでも同じように使える方法かと思う。
メールの転送機能のメールの返信
はい、以下のメッセージを差出人に自動で返します
に日本語を入力すると激しく文字化けするので(日本語非対応)と追記する。
/usr/libexec/usermin/forward/lang/ja_JP.euc
上記をファイルを何らかの方法で編集する。
編集箇所
index_autoyes=はい、以下のメッセージを差出人に自動で返します(日本語非対応)
インストールしようとするとapxsが足りないといわれるのでインストールする。
# yum install httpd-devel
後はいつものとうりにインストールする。
# wget http://download.tangent.org/mod_layout-5.1.tar.gz
# tar xvzf ./mod_layout-5.1.tar.gz
# cd ./mod_layout-5.1
# make
# make install
Geo::IPfreeをインストールしようとしたら下記のようなエラーが出たので対策方法をメモしておく。
– module: Geo::IPfree —
Found: Geo-IPfree-1.100470.tar.gz
At: http://search.cpan.org//CPAN/authors/id/B/BR/BRICAS
Retrieving URL
Metadata retrieval
Tarball extraction: [/usr/src/redhat/SOURCES/Geo-IPfree-1.100470.tar.gz]
Generating spec file
SPEC: /usr/src/redhat/SPECS/Geo-IPfree.spec
Generating package
Signing package (pass phrase required)
エラー: マクロファイル内で “%_gpg_name” を設定しなければなりません。
パスフレーズのチェックに失敗しました。
RPM build failed [1] at /usr/bin/cpan2rpm line 1053.
— Done —
下記のコマンドでインストールするとエラーを回避できる。
# cpan2rpm –no-sign –install Geo::IPfree
原理が気になったので似たようなものを作成してみました。
※勝手に構造を妄想して作った物です。実際のものとは異なる可能性があります。
サンプル:FrontPage
#!/usr/bin/perl
#############################################
#スクリプト名:画像認証画像作成スクリプト
#バージョン:Ver.1.0.0
#作成者:ORBIT
#サイト:https://www.orsx.net/
#著作権:
#完全フリーです。
#ご自由に改造してください。参考になった場合は
#リンクしていただけると助かります。
#目的:
#画像認証に使用する画像を作成する
#############################################
#============================================
#設定
#============================================
#画像の背景
$tempfile = 'temp.jpg';
#保存する画像名
$imgname = './test.jpg';
#フォント
$font='./Bedrock.ttf';
#文字の色
$color='red';
#文字のサイズ
$fontsize = '30';
#出力する文字数
$number = '7';
#============================================
#モジュール使用宣言
use Image::Magick;
#ランダムな英数を作成する
@character = ('0'..'9','a'..'z');
for ( $i = 1; $i <= $number; $i++ ){
$pcode .= $character[rand(@character)];
}
#画像作成
$img = Image::Magick->new;
$img->Read($tempfile);
$img->Annotate(text=>$pcode,
geometry=>'+0+0',
gravity=>'Center',
fill=>$color,
font=>$font,
pointsize=>$fontsize);
$img->Write($imgname);
undef $img;
#表示
print "Content-type: image/jpegnn";
open IMGG, "$imgname";
binmode (IMGG);
binmode (STDOUT);
print <IMGG>;
close (IMGG);
FrontPage様が紹介されていたソースが一部崩れていたので分かる範囲で修正してメモしておきます。
注)うちのレンタルサーバでの使用は厳禁です。発覚しだい即アカウント停止します。
#!/usr/bin/suidperl -T
####################################################################
###
### newpasswd --- Webインタフェースからのパスワード変更CGI
###
### Authen::PAMモジュールが必要
### chown root:root newpasswd
### chmod 4555 newpasswd
###
####################################################################
### /etc/pam.d/newpasswd の内容
####################################################################
### #%PAM-1.0
### auth required pam_stack.so service=system-auth
### account required pam_stack.so service=system-auth
### password required pam_stack.so service=system-auth
####################################################################
use CGI qw(:standard); # CGIモジュールの宣言
use Authen::PAM; # Authen::PAMモジュールの宣言
$q = CGI->new(); # CGIモジュールの初期化
$q->import_names('P'); # 「$P::変数」でアクセスできるようにする
$homepage = "./"; # ホームページ
$myself = "./newpasswd.cgi"; # このCGIのURL
$pam_service="newpasswd"; # PAMサービス名 $cmsg = ""; # エラー・メッセージの初期化
sub conv { # PAMとの情報交換のための関数
my @res; # 戻値を保存する変数の初期化
while ( @_ ) { # 与えられたパラメータの処理
my $mtype = shift; # メッセージの種類
my $msg = shift; # メッセージ
my $ans = ""; # 入力する反応
if ($mtype == PAM_ERROR_MSG()) { # エラーメッセージの処理
$cmsg .= "$msg<BR>n"; # エラーを記録
} elsif ($mtype == PAM_TEXT_INFO()) { # なんらかのテキスト
$cmsg .= "$msg<BR>n"; # そのまま記録
} elsif ($mtype == PAM_PROMPT_ECHO_OFF()) { # プロンプト
if ($pam_state eq "AUTHENTICATE") { # ユーザー認証を要求
$ans = $P::old; # 現在のパスワードを入力
$pam_state = "CHAUTH-AUTHEN"; # ステータスにパスワード変更認証をセット
} elsif ($pam_state eq "CHAUTH-AUTHEN") { # パスワード変更のための認証が要求されている場合の処理
$ans = $P::old; # 現在のパスワードを入力
$pam_state = "CHAUTHTOK"; # ステータスにパスワード変更をセット
} else { # 新パスワードの処理
$ans = $P::new; # 新しいパスワードをセット
}
$cmsg .= "$msg<BR>n"; # メッセージがあれば記録
} else { # プロンプトが表示されない場合
$cmsg .= "Error. $msg<BR>n"; # エラーメッセージを記録
};
push @res, (0, $ans); # 戻値をセット
}
push @res, PAM_SUCCESS(); # 成功のステータスをセット
return @res; # 関数の終了
}
sub stringcheck { # 不適当な文字列をチェック
my $str = shift; # チェックする文字列を$strにセット
return 1 if ($str =~ /[\000-\037177-377]/); # パスワード用文字列のチェック
return 2 if ($str !~ /^(w[w-"]+)$/); # ユーザー名文字列のチェック
return 0; # エラーなし
}
##
## HTMLの用意
##
print header(-charset=>'EUC-JP'); # へッダの出力。文字コードにEUC-JPを指定する
print start_html(-title=>'パスワード変更',-lang=>"ja",-encoding=>"EUC-JP"); # Webページの<HEAD>タグの内容をセット。ここでは言語(lang)と文字コード(EUC-JP)を指定する
# print header(-charset=>'Shift_JIS'); # シフトJISでスクリプトを作成する場合は、charsetにShift_JISを指定する
# print start_html(-title=>'パスワード変更',-lang=>"ja",-encoding=>"Shift_JIS"); # シフトJISでスクリプトを作成する場合は、encodingにShift_JISを指定する
print h1('パスワード変更'); # タイトルの表示
if (! $P::flag) { # $flagが設定されていなければ、入力フォームを表示
##
## このブロックでは最初の入力画面を表示させる。
##
print p("パスワードを変更します。");
print start_form(-method=>post,-action=>$myself); # フォームの開始。ここでは安全のためにPOSTメソッドを使う。
print hidden(-name=>"flag", -value=>"x"), # $flagにダミーの値をセット
p("ユーザーID: ", textfield(-name=>"username")), # ユーザーIDの入力欄
p("現在のパスワード: ", password_field(-name=>"old")), # 古い(現在の)パスワードの入力欄
p("新しいパスワード: ", password_field(-name=>"new")), # 新しいパスワードの入力欄
p("新しいパスワード(再入力): ", password_field(-name=>"new2")), # 確認のための新しいパスワードの再入力欄
p(submit("変更")); # 変更ボタンの表示
print end_form; # フォームの終了
} else { # $flagがセットされている場合は、入力データが存在するものとみなしてパスワードの変更を行う
##
## ユーザー名、パスワードのチェック
##
if ($P::new ne $P::new2) { # 新パスワードの誤入力チェック
print p("新パスワードと確認用に入力したパスワードが違っています。"),
p("パスワードを入力し直してください。");
} elsif (length($P::new) < 8 || length($P::new) > 255) { # 新パスワードの長さのチェック
print p("8文字以上255文字以下のパスワードを入力してください。");
} elsif (length($P::username) < 2 || length($P::username) > 10) { # ユーザー名の入力チェック
print p("ユーザー名を入力してください。");
} elsif (stringcheck($P::username)) { # ユーザー名として不適当な文字があればエラー
print p("ユーザー名が不適切です。");
} elsif (stringcheck($P::new) == 1) { # パスワードにコントロールコードが含まれている場合はエラー
print p("新しいパスワードに不適切な文字が含まれています。");
} else { # 問題がなければパスワード変更処理を行う
##
## PAMによる認証とパスワードの変更
##
$prv = pam_start($pam_service, $P::username, &conv, $pamh); # PAMの初期化
$pam_state = "AUTHENTICATE"; # 最初は認証を行う
$prv = pam_authenticate($pamh, 0); # 認証を実行
if ($prv != PAM_SUCCESS) { # 認証に失敗した場合はエラー
print p("認証エラー:", pam_strerror($pamh, $prv));
} else { # 認証が通ればパスワードの変更
$prv = pam_chauthtok($pamh); # パスワード変更処理
if ($prv != PAM_SUCCESS) { # パスワード変更に失敗した場合はエラー
print p("トークン変更失敗:", pam_strerror($pamh, $prv));
}
};
##
## 結果の表示
##
if ($prv == PAM_SUCCESS ) { # PAMからの戻値が成功であれば無事終了
print p("パスワードを変更しました。");
} else { # PAMからの戻値がエラーなら、メッセージを表示して終了
print p("パスワードの変更に失敗しました。");
print p($cmsg);
};
$prv = pam_end($pamh, 0); # PAMの終了処理
};
};
print hr, "<A HREF="$myself">元に戻る</A> | <A HREF="$homepage">ホームページ</A>"; # フッタのリンクを表示
print end_html; # HTMLの終了
##
mod_layoutの新しいバージョンが出ていたのでインストーしてみました。
# tar xzvf mod_layout-5.1.tar.gz
# cd mod_layout-5.1
# vi Makefile 下記を修正します。
APXS=/usr/bin/apxs
APACHECTL=/usr/sbin/apache2ctl
# make
# make install
# vi /etc/apache2/conf/httpd.conf 下記が追記されている事を確認する。
LoadModule pacify_loris_module /usr/lib/apache2/modules/mod_pacify_loris.so
必要な場合は下記も追加しておく
AddOutputFilter LAYOUT html htm
LayoutHeader /var/www/html/header.html
LayoutFooter /var/www/html/footer.html
Makefileの編集が面倒な方のために編集済みのファイルをアップロードしておきます。
mod_layout-5.1_vine5.0.tar
当レンタルサーバをレンタルされてる方で一日に数百から数千通ものメールを一人で送信される方がちらほら出だしましたので制限方法をメモしておきます。
ちなみにメールの大量送信を許可しておくとサーバの負担もですが、プロバイダーからの何らかの警告が来るので一刻も早い対処が必要となります。
guro_chanの日記様のところでとても効果的と思われる制限内容がありましたので活用させていただきました。
設定ファイルを開き
# vi /etc/postfix/main.cf
下記を追記します。
※anvil_rate_time_unitは自分にあった設定をしましょう。
smtpd_client_message_rate_limit = 1
anvil_rate_time_unit = 600s
Hide technical details
The error occured in file /var/www/html/net2ftp/includes/filesystem.inc.php on line 1773.
* function acceptFiles (/var/www/html/net2ftp/modules/upload/upload.inc.php on line 248)
o argument 0: Array
* function net2ftp_module_printBody (/var/www/html/net2ftp/main.inc.php on line 313)
* function net2ftp (/var/www/html/net2ftp/index.php on line 61)
o argument 0: printBody
上記のようなエラーが出た場合、net2ftpを設置した所有者を変更する必要がある。
# chown -R apache:apache net2ftp
最近のコメント