【backup.cgiの編集】
設定
改名
履歴
G-System
/
cgi-bin
/
backup
/ backup.cgi
※このキーワードは元キーワードの作成者のみ作成・編集が可能です。
■キーワード内容
#!/usr/bin/perl -w #------------------------------------------------------------------------------# # 機能名 : cgi-Files Backup # 機能概要 : cgi-files以下フォルダのBackupファイルを作成する(Excel書式) # 作成者 : Ryota Sasabe # 作成履歴 : Ver0.01 2005.03.02 新規作成 #------------------------------------------------------------------------------# require "../lib/system.pl"; &init('ScriptCharCode' => 'euc', 'HtmlCharCode' => 'sjis', 'FormInput' => 1); ################################################################################ #◆初期情報設定 my $SoftName = 'cgi-files Backup'; my $ScriptName = 'backup.cgi'; my $SaveDir = "$BaseDir/cgi-files/backup"; my $FileDir = "$BaseDir/cgi-files/" . $in{'Directory'}; my %html = &get_html_style('KeyWiki'); my $tabstr = ' '; my $today = &get_time('LocalTime', Length => '8'); my $timeout = 60; my $starttime = time; #################### my @addcols = ('filename'); #################### ## G-ID認証 if ($in{'G_ID'}) { %G_ID = &get_userinfo( &check_gid($in{'G_ID'}) ); &error($resource{'NotAdminGid'}) unless ($SpecialUser{$G_ID{'UserNo'}}); } else { &show_gid_input_form($ScriptName, %html); } ## html header $HTML .= &get_html_header("$SoftName", %html); $HTML .= " <hr color='$html{'BodyHrColor'}'>"; ## Directory選択 if (!$in{'Directory'}) { $HTML .= "<form action='$ScriptName'>"; $HTML .= "■Backup Directory<br>"; $HTML .= "<input type='text' name='Directory' value='keywiki'>"; $HTML .= "<input type='hidden' name='G_ID' value='$in{'G_ID'}'>\n"; $HTML .= "<input type='hidden' name='Case' value='Folder'>"; $HTML .= "<input type='submit' value='送信'>"; $HTML .= "</form>"; ## Folder選択 } elsif ($in{'Case'} eq 'Folder') { $HTML .= "■Backup $in{'Directory'}<br>"; $HTML .= "<form action='$ScriptName'>\n"; $HTML .= "<input type='hidden' name='G_ID' value='$in{'G_ID'}'>\n"; $HTML .= "<input type='hidden' name='Case' value='Backup'>\n"; $HTML .= "<input type='hidden' name='Directory' value='$in{'Directory'}'>"; opendir(DIR, $FileDir) || &error("Can't Open $FileDir"); foreach $dirname (sort grep(!/\./ , readdir(DIR))) { $HTML .= "<input type='checkbox' name='$dirname' value='on'>$dirname<br>\n"; } close(DIR); $HTML .= "<input type='submit' value='送信'>\n"; $HTML .= "</form>"; } elsif ($in{'Case'} eq 'Backup') { ## 対象フォルダの取得 foreach my $name (sort keys %in) { push(@dirname, $name) if ($in{$name} eq 'on'); } ## 項目追加(ファイル名) $OUT = join("\t", @addcols, @dirname) . "\n"; ## 対象ファイルを順に読込み、配列に格納 foreach $dirname (@dirname) { foreach $filename ( &read_directory("$FileDir/$dirname") ) { open(IN, "$FileDir/$dirname/$filename") || next; $file = join("", <IN>); close(IN); &convert_jcode(\$file, 'sjis', 'euc') if ($in{'Directory'} =~ /^keywiki/); $file =~ s/\t/$tabstr/g; $file{$filename}{$dirname} = &trim($file); &error("$timeout秒経過したためタイムアウトになりました。") if time - $starttime > $timeout; } } ## 配列に格納した値をタブ区切テキストに保存 foreach $filename (keys %file) { my @values; push(@values, $filename); foreach $dirname (@dirname) { push(@values, $file{$filename}{$dirname}); } $line = join("\t", map {(s/"/""/g or /[\r\n\t]/) ? qq("$_") : $_} @values); $OUT .= "$line\n"; } open(OUT, "> $SaveDir/$in{'Directory'}_bk$today.dat"); print OUT $OUT; close(OUT); ## 処理結果html出力 $HTML .= "$FileDir/$dirnameのバックアップが完了しました。<br>\n"; $HTML .= join("<br>\n", @dirname); } $HTML .= &get_html_footer($SoftName, %html); &print_html($HTML); exit; __END__
■G-ID
■添付ファイルアップロード
KeyWiki
Ver 0.6.9
(c) 2004
Ryota