[Perl] ディレクトリを再帰的にたどってファイルをコピーする

#!/usr/bin/perl
use strict;
use File::Copy;

my $srcFile = $ARGV[0]; # コピーするファイル名を取得
print "src file : $srcFile\n";

# 再帰コピー関数
sub recurseCopy{
	my($src, $dir) = @_;
	my @files = ();
	
	print "entering $dir\n";
	
	# カレントディレクトリのディレクトリ・ファイルを取得
	opendir(DIR, $dir) or die("Can not open directory : $dir\n");
	@files = readdir(DIR);
	closedir(DIR);
	
	foreach my $file(sort @files){
		next if($file =~ /^\.{1,2}$/);
		if(-d "$dir/$file"){
			# ディレクトリの場合、再帰コピー呼び出し
			recurseCopy($srcFile, "$dir/$file");
		}
	}
	print "copying $src to $dir\n";
	# 自分自身にはコピーしない
	if($dir ne "\."){
		copy($srcFile, $dir);
	}
}
print "start\n";
my $b = recurseCopy($srcFile, ".");
print "end\n";

Apacheウェブサーバで画像ファイル等をブラウザにキャッシュさせる

ブラウザのキャッシュを活用する

Google アナリティクスのレポート→行動→サイトの速度→速度の提案で、

ブラウザのキャッシュを活用する
静的リソースの HTTP ヘッダー内で、有効期日や最大経過時間を設定すると、ブラウザがネットワークからではなくローカル ディスクから以前にダウンロードしたリソースを読み込むようになります。
次のキャッシュ可能なリソースでブラウザのキャッシュを活用してください:

で、どうすればキャッシュさせるか調べてみました。

“Apacheウェブサーバで画像ファイル等をブラウザにキャッシュさせる” の続きを読む

SiteLockがいい感じ

脆弱性診断&マルウェア駆除のWebセキュリティサービス「SiteLock」 がいい感じです。

チェックするのが面倒臭いXSS脆弱性や、数多く見つかるソフトウェアの脆弱性の中からどれが自分に関係のある脆弱性か、診断してくれるのがいい。

書籍やネットで調べた情報を元に、気を付けてアプリケーション作っても、脆弱性が全て駆除できたとは言えない。

実際、自分で作ったSHA暗号化ツールが、最初はGoogleの1ページ目に載っていたのに、ちょっと機能を追加したらGoogleで検索されなくなった。
なんでだろうと思っていて、たまたまGMOクラウドのSiteLockの宣伝があって、試しに導入してみたら、XSS脆弱性があるとの診断。
それに倣ってツールを修正したら、またGoogleの1ページ目に載るようになりました。

“SiteLockがいい感じ” の続きを読む

ユーザ名・ホスト名に「-」が入っている場合のqmailの設定方法

バッドノウハウです。

ユーザ名に「-」が入っている場合

例えば、「foo-bar」というUNIXアカウントがあって、「foo-bar@example.com」宛にメールがあった場合、foo-barのホームディレクトリにある.qmailファイルに従って処理されると思いがちですが、違うんです。
qmailでは、「アカウント名-hoge」という拡張メールアドレスがあります。(拡張メールアドレスの詳しい解説)
メールログを見ると、

Jan 23 20:30:29 alpha qmail: 1485171029.781322 
starting delivery 158: msg 659726 to local foo-bar@example.com Jan 23 20:30:29 alpha qmail: 1485171029.781344 status: local 1/10 remote 0/20
Jan 23 20:30:29 alpha qmail: 1485171029.786233 delivery 158:
failure: Sorry,_no_mailbox_here_by_that_name._(#5.1.1)/
“ユーザ名・ホスト名に「-」が入っている場合のqmailの設定方法” の続きを読む

SFTPでchroot設定をする方法

レンタルサーバの一部スペースを友人に貸すことにして、DNSレコード追加したりuseraddしたりqmailの設定をしたり、色々やってたんだけど、なんと、MacOSのFTPクライアント(サイバーダック)ではGMOクラウドに接続できないと!
で、色々やって「sftpモード」ではつながることがわかって一安心。

と思ってたら、「なんか/(ルート)が見えるんですけど…」と。
それはまずい! 一般ユーザにホームディレクトリ以下しか見れないよう設定しないと!
とか考えながらググってたら、「chroot」を使いましょう、とのこと。

で、それにならってsshdの設定とかをしたんだけど、「Broken Pipe」とかエラーが出てうまくいかない。
で、さらに調べて分かったことは、この2点。

  • sshd_configでchrootする。
  • ユーザのホームディレクトリのオーナーをrootにする。

でした。

“SFTPでchroot設定をする方法” の続きを読む

qmailでバーチャルドメインを利用する方法

qmailでバーチャルドメインを利用する方法は@IT バーチャルドメインにおけるqmailの運用 (2/3)で詳しく解説してあるけど、サンプル例が誤解しやすいのでここにメモを書きます。

バーチャルドメイン宛メールを受け取るユーザーの追加

# useradd -s /bin/false vuser

rcpthostsにメールを受け取るドメイン名を追加する。

/var/qmail/control/rcpthosts

example.net
virtual.example.net #これが追加するドメイン
“qmailでバーチャルドメインを利用する方法” の続きを読む

GMOクラウド NTPサーバのインストール

GMOクラウドでメールサーバの設定をいじっていて、テストメール送ったのにmaillogが更新されない、なんでやねん、て思っていたら、サーバの時計が15分遅れていた。orz
NTPDが入っていないサーバがあったなんて…。

という訳でNTPDをインストールしました。
やり方は、ググればいくらでも出てきて、そのまま参考になるサイトばかりです。
例えば、

とか。

“GMOクラウド NTPサーバのインストール” の続きを読む