rbatch 1.6.3 → 1.6.4
Sign up to get free protection for your applications and to get access to all the features.
- data/Rakefile +2 -5
- data/doc/rdoc/CHANGELOG.html +182 -0
- data/doc/rdoc/LICENSE.html +98 -0
- data/doc/rdoc/RBatch/Cmd.html +333 -0
- data/doc/rdoc/RBatch/CmdException.html +158 -0
- data/doc/rdoc/RBatch/CmdResult.html +496 -0
- data/doc/rdoc/RBatch/Config/Exception.html +158 -0
- data/doc/rdoc/RBatch/Config.html +355 -0
- data/doc/rdoc/RBatch/Log.html +743 -0
- data/doc/rdoc/RBatch.html +457 -0
- data/doc/rdoc/created.rid +8 -0
- data/doc/rdoc/images/brick.png +0 -0
- data/doc/rdoc/images/brick_link.png +0 -0
- data/doc/rdoc/images/bug.png +0 -0
- data/doc/rdoc/images/bullet_black.png +0 -0
- data/doc/rdoc/images/bullet_toggle_minus.png +0 -0
- data/doc/rdoc/images/bullet_toggle_plus.png +0 -0
- data/doc/rdoc/images/date.png +0 -0
- data/doc/rdoc/images/find.png +0 -0
- data/doc/rdoc/images/loadingAnimation.gif +0 -0
- data/doc/rdoc/images/macFFBgHack.png +0 -0
- data/doc/rdoc/images/package.png +0 -0
- data/doc/rdoc/images/page_green.png +0 -0
- data/doc/rdoc/images/page_white_text.png +0 -0
- data/doc/rdoc/images/page_white_width.png +0 -0
- data/doc/rdoc/images/plugin.png +0 -0
- data/doc/rdoc/images/ruby.png +0 -0
- data/doc/rdoc/images/tag_green.png +0 -0
- data/doc/rdoc/images/wrench.png +0 -0
- data/doc/rdoc/images/wrench_orange.png +0 -0
- data/doc/rdoc/images/zoom.png +0 -0
- data/doc/rdoc/index.html +136 -0
- data/doc/rdoc/js/darkfish.js +116 -0
- data/doc/rdoc/js/jquery.js +32 -0
- data/doc/rdoc/js/quicksearch.js +114 -0
- data/doc/rdoc/js/thickbox-compressed.js +10 -0
- data/doc/rdoc/lib/rbatch/cmd_rb.html +56 -0
- data/doc/rdoc/lib/rbatch/config_rb.html +56 -0
- data/doc/rdoc/lib/rbatch/log_rb.html +58 -0
- data/doc/rdoc/lib/rbatch_rb.html +58 -0
- data/doc/rdoc/rdoc.css +706 -0
- data/sample/bin/apache_log_insert.rb +108 -0
- data/sample/bin/file_batch_copy.rb +13 -0
- data/sample/bin/mysql_data_backup.rb +42 -0
- data/sample/bin/openam_log_insert.rb +105 -0
- data/sample/bin/openldap_backup.rb +7 -0
- data/sample/bin/webagent_log_insert.rb +108 -0
- data/sample/conf/apache_log_insert.yaml +8 -0
- data/sample/conf/file_batch_copy.yaml +5 -0
- data/sample/conf/mysql_data_backup.yaml +5 -0
- data/sample/conf/openam_log_insert.yaml +35 -0
- data/sample/conf/openldap_backup.yaml +2 -0
- data/sample/conf/rbatch.yaml +68 -0
- data/sample/conf/test.yaml +5 -0
- data/sample/conf/webagent_log_insert.yaml +16 -0
- data/sample/data/access_log.1 +50 -0
- data/sample/data/access_log.2012-07-10 +50 -0
- data/sample/data/amAgent_localhost_80.log.1 +39 -0
- data/sample/data/amAgent_localhost_80.log.2012-07-10 +40 -0
- data/sample/data/amAuthentication.access.1 +30 -0
- data/sample/data/amAuthentication.access.2012-07-10 +30 -0
- data/sample/data/amAuthentication.error.1 +10 -0
- data/sample/data/amAuthentication.error.2012-07-10 +6 -0
- data/sample/log/20130120_apache_log_insert.log +171 -0
- data/sample/log/20130120_openam_log_insert.log +143 -0
- data/sample/log/20130121_apache_log_insert.log +103 -0
- data/sample/log/20130121_file_batch_copy.log +15 -0
- data/sample/log/20130121_openam_log_insert.log +39 -0
- data/sample/log/20130121_webagent_log_insert.log +432 -0
- data/sample/log/empty +0 -0
- data/sample/moto/README +16 -0
- data/sample/moto/auditlog.src.zip +0 -0
- data/sample/moto/build.gradle +106 -0
- data/sample/moto/gradle/wrapper/gradle-wrapper.jar +0 -0
- data/sample/moto/gradle/wrapper/gradle-wrapper.properties +7 -0
- data/sample/moto/gradle.properties +12 -0
- data/sample/moto/gradlew +164 -0
- data/sample/moto/gradlew.bat +90 -0
- data/sample/moto/settings.gradle +1 -0
- data/sample/moto/src/main/bin/delete_auditlog.sh +176 -0
- data/sample/moto/src/main/bin/delete_workflowinstances.sh +315 -0
- data/sample/moto/src/main/bin/import_auth_log.sh +23 -0
- data/sample/moto/src/main/etc/delete_auditlog.param +39 -0
- data/sample/moto/src/main/etc/delete_workflowinstances.param +30 -0
- data/sample/moto/src/main/etc/log4j.xml +28 -0
- data/sample/moto/src/main/etc/status.properties +27 -0
- data/sample/moto/src/main/etc/sysparam.properties +54 -0
- data/sample/moto/src/main/java/jp/ossc/imortAuditlog/DateUtil.java +48 -0
- data/sample/moto/src/main/java/jp/ossc/imortAuditlog/ImportAuthLogMain.java +36 -0
- data/sample/moto/src/main/java/jp/ossc/imortAuditlog/LogReader.java +521 -0
- data/sample/moto/src/main/java/jp/ossc/imortAuditlog/MysqlController.java +315 -0
- data/sample/moto/src/main/logrotate/delete_auditlog +6 -0
- data/sample/moto/src/main/logrotate/delete_workflowinstanceslog +6 -0
- data/sample/moto/src/main/sql/tables.sql +36 -0
- data/test/cases/test_cmd.rb +120 -0
- data/test/cases/test_config.rb +41 -0
- data/test/cases/test_log.rb +599 -0
- data/test/conf/rbatch.yaml +0 -0
- data/test/mocks/PrintArgs.exe +0 -0
- data/test/mocks/win_cmd.exe +0 -0
- metadata +100 -1
@@ -0,0 +1,108 @@
|
|
1
|
+
# -*- coding: utf-8 -*-
|
2
|
+
require 'rbatch'
|
3
|
+
require 'mysql'
|
4
|
+
|
5
|
+
|
6
|
+
|
7
|
+
#
|
8
|
+
# Apacheのアクセスログを解析してMySQLに挿入する
|
9
|
+
#
|
10
|
+
|
11
|
+
# ログの1行を表すクラス
|
12
|
+
class Entry
|
13
|
+
# 行をマッチさせる正規表現
|
14
|
+
@@reg=/^
|
15
|
+
(\S+) # 0 ip_address
|
16
|
+
\s+
|
17
|
+
(\S+) # 1 X-Forwarded-For
|
18
|
+
\s+
|
19
|
+
(\S+) # 2 identity_check
|
20
|
+
\s+
|
21
|
+
(\S+) # 3 user
|
22
|
+
\s+
|
23
|
+
\[ (.*?) \] # 4 date
|
24
|
+
\s+
|
25
|
+
(\S+) # 5 sec
|
26
|
+
\s+
|
27
|
+
(\S+) # 6 msec
|
28
|
+
\s+
|
29
|
+
" (.*?) " # 7 request
|
30
|
+
\s+
|
31
|
+
(\S+) # 8 status
|
32
|
+
\s+
|
33
|
+
(\S+) # 9 size
|
34
|
+
\s+
|
35
|
+
" (.*?) " # 10 user_agent
|
36
|
+
\s+
|
37
|
+
" (.*?) " # 11 referer
|
38
|
+
$/x
|
39
|
+
|
40
|
+
@entry
|
41
|
+
|
42
|
+
# ログの1行を解析してEntryクラスを作る。
|
43
|
+
# 解析できない時は例外を発生させる。
|
44
|
+
#
|
45
|
+
# 期待しているフォーマットは以下の通り。
|
46
|
+
#
|
47
|
+
# %h %{X-Forwarded-For}i %l %u %t %T %D \"%r\" %>s %b \"%{User-Agent}i\" \"%{Referer}i\"
|
48
|
+
#
|
49
|
+
def initialize(line)
|
50
|
+
match = line.match(@@reg)
|
51
|
+
raise "parse error. line: <#{line}> " if match.nil?
|
52
|
+
captures = match.captures
|
53
|
+
@entry = {
|
54
|
+
:ip_address => captures[1].split(",")[0],
|
55
|
+
:user => captures[3],
|
56
|
+
:datetime => DateTime.strptime( captures[4], '%d/%b/%Y:%T %z'),
|
57
|
+
:sec => captures[5].to_i,
|
58
|
+
:request => captures[7],
|
59
|
+
:status => captures[8].to_i,
|
60
|
+
:user_agent => captures[10],
|
61
|
+
:referer => captures[11]
|
62
|
+
}
|
63
|
+
end
|
64
|
+
|
65
|
+
# Insert用のSQLを返す
|
66
|
+
def insert_sql(table_name,host_name,company_id)
|
67
|
+
value = [ "'" + company_id + "'" ,
|
68
|
+
"'" + @entry[:datetime].strftime("%Y/%m/%d %H:%M:%S") + "'",
|
69
|
+
"'" + @entry[:user] + "'" ,
|
70
|
+
"'" + @entry[:ip_address] + "'",
|
71
|
+
"'" + host_name + "'" ,
|
72
|
+
"'" + @entry[:request] + "'" ,
|
73
|
+
@entry[:sec].to_s,
|
74
|
+
@entry[:status].to_s,
|
75
|
+
"'" + @entry[:user_agent] + "'" ,
|
76
|
+
"'" + @entry[:referer] + "'"
|
77
|
+
].join(",")
|
78
|
+
|
79
|
+
return "INSERT INTO #{table_name} (companyId,date,login_id,access_ip,host_name,access_url,forward_time,httpstatus,user_agent,referer) VALUES (#{value})"
|
80
|
+
end
|
81
|
+
end
|
82
|
+
|
83
|
+
# メイン
|
84
|
+
|
85
|
+
RBatch::Log.new do |log|
|
86
|
+
log.info("Start -----------------");
|
87
|
+
entries = []
|
88
|
+
|
89
|
+
# アクセスログ読み込み
|
90
|
+
File.foreach(RBatch::config["apache_log_path"]) do |line|
|
91
|
+
entries << Entry.new(line.chomp)
|
92
|
+
end
|
93
|
+
|
94
|
+
# MySQLに接続
|
95
|
+
con = Mysql.new(RBatch::config["mysql_server"],
|
96
|
+
RBatch::config["mysql_user"],
|
97
|
+
RBatch::config["mysql_password"],
|
98
|
+
RBatch::config["mysql_db_name"])
|
99
|
+
# MySQLに挿入
|
100
|
+
entries.each do |entry|
|
101
|
+
sql = entry.insert_sql(RBatch::config["mysql_table_name"],
|
102
|
+
RBatch::config["host_name"],
|
103
|
+
RBatch::config["company_id"])
|
104
|
+
log.info("exec sql: " + sql);
|
105
|
+
con.query(sql)
|
106
|
+
end
|
107
|
+
end
|
108
|
+
|
@@ -0,0 +1,13 @@
|
|
1
|
+
# -*- coding: utf-8 -*-
|
2
|
+
require 'rbatch'
|
3
|
+
require 'fileutils'
|
4
|
+
|
5
|
+
# ファイル一括コピー
|
6
|
+
RBatch::Log.new do |log|
|
7
|
+
target_dir = RBatch::config["target_dir"]
|
8
|
+
RBatch::config["file_list"].each do | file |
|
9
|
+
log.info("copy " + file + " -> " + target_dir)
|
10
|
+
FileUtils.cp_r(file,target_dir)
|
11
|
+
end
|
12
|
+
end
|
13
|
+
|
@@ -0,0 +1,42 @@
|
|
1
|
+
require 'fileutils'
|
2
|
+
require 'rbatch'
|
3
|
+
|
4
|
+
RBatch::Log.new do | log |
|
5
|
+
log.info "Start mysql data backup"
|
6
|
+
# read config
|
7
|
+
remote_backup_dir = RBatch::config["remote_backup_dir"]
|
8
|
+
local_backup_dir = RBatch::config["local_backup_dir"]
|
9
|
+
gpg_passphrase_file = RBatch::config["gpg_passphrase_filepath"]
|
10
|
+
local_delete_date = RBatch::config["local_delete_date"]
|
11
|
+
file_dump = RBatch::config["work_dir"] + Time.now.strftime("%Y%m%d_%H%M%S") + ".mysqldump"
|
12
|
+
file_targz = file_dump + ".tar.gz"
|
13
|
+
file_gpg = file_targz + ".gpg"
|
14
|
+
# main
|
15
|
+
cmd1 = "mysqldump --single-transaction --flush-logs --master-data=2 --all-databases > #{file_dump}"
|
16
|
+
log.info(cmd1)
|
17
|
+
RBatch::cmd(cmd1)
|
18
|
+
|
19
|
+
cmd2 = "tar zcvf #{file_targz} #{file_dump}"
|
20
|
+
log.info(cmd2)
|
21
|
+
RBatch::cmd(cmd2)
|
22
|
+
|
23
|
+
cmd3 = "gpg --batch --cipher-algo AES256 --passphrase-file #{gpg_passphrase_file} --passphrase-repeat 0 --output #{file_gpg} -c #{file_targz}"
|
24
|
+
log.info(cmd3)
|
25
|
+
RBatch::cmd(cmd3)
|
26
|
+
|
27
|
+
log.info("cp #{file_gpg} #{local_backup_dir}")
|
28
|
+
FileUtils.cp(file_gpg, local_backup_dir)
|
29
|
+
|
30
|
+
log.info "cp #{file_gpg} #{remote_backup_dir}"
|
31
|
+
FileUtils.cp(file_gpg, remote_backup_dir)
|
32
|
+
|
33
|
+
# delete old local backup files
|
34
|
+
Dir::foreach(local_backup_dir) do |file|
|
35
|
+
reg = Regexp.new("([0-9][0-9][0-9][0-9][0-1][0-9][0-3][0-9])_[0-2][0-9][0-5][0-9][0-5][0-9].mysqldump.tar.gz.gpg")
|
36
|
+
if reg =~ file && Date.strptime($1,"%Y%m%d") <= Date.today - local_delete_date
|
37
|
+
log.info "Delete old backup file: " + File.join(local_backup_dir, file)
|
38
|
+
File::delete(File.join(local_backup_dir, file))
|
39
|
+
end
|
40
|
+
end
|
41
|
+
log.info("Success Finish")
|
42
|
+
end
|
@@ -0,0 +1,105 @@
|
|
1
|
+
# -*- coding: utf-8 -*-
|
2
|
+
require 'rbatch'
|
3
|
+
require 'mysql'
|
4
|
+
|
5
|
+
#
|
6
|
+
# OpenAMの認証アクセスログと認証エラーログを解析してMySQLに挿入する
|
7
|
+
#
|
8
|
+
|
9
|
+
|
10
|
+
# ログの1行を表すクラス
|
11
|
+
class Entry
|
12
|
+
|
13
|
+
# 行をマッチさせる正規表現
|
14
|
+
@@reg=/^
|
15
|
+
\"(\S+\s\S+)\" # 0 "YYYY-MM-DD HH:MM:SS"
|
16
|
+
\t # タブ
|
17
|
+
\S+ # xxx
|
18
|
+
\t # タブ
|
19
|
+
(\S+) # 1 "DN"
|
20
|
+
\t # タブ
|
21
|
+
\S+ # xxx
|
22
|
+
\t # タブ
|
23
|
+
(\S+) # 2 IP
|
24
|
+
\t # タブ
|
25
|
+
\S+ # xxx
|
26
|
+
\t # タブ
|
27
|
+
\S+ # xxx
|
28
|
+
\t # タブ
|
29
|
+
\S+ # xxx
|
30
|
+
\t # タブ
|
31
|
+
(\S+) # 3 ステータス
|
32
|
+
\t # タブ
|
33
|
+
\S+ # xxx
|
34
|
+
\t # タブ
|
35
|
+
\S+ # xxx
|
36
|
+
\t # タブ
|
37
|
+
\S+ # xxx
|
38
|
+
$/x
|
39
|
+
|
40
|
+
@entry
|
41
|
+
|
42
|
+
def initialize(line)
|
43
|
+
match = line.match(@@reg)
|
44
|
+
raise "parse error. line: <#{line}> " if match.nil?
|
45
|
+
captures = match.captures
|
46
|
+
captures[1] = "-" if ! captures[1] =~ /uid=|id=/
|
47
|
+
@entry = {
|
48
|
+
:date => DateTime.strptime(captures[0], '%Y-%m-%d %H:%M:%S'),
|
49
|
+
:login_id => captures[1].split(",")[0].split("=")[1],
|
50
|
+
:access_ip => captures[2],
|
51
|
+
:status => RBatch::config["auth_status"][captures[3]]
|
52
|
+
}
|
53
|
+
end
|
54
|
+
|
55
|
+
# Insert用のSQLを返す
|
56
|
+
def insert_sql(table_name,host_name,companyId)
|
57
|
+
value = [ companyId ,
|
58
|
+
@entry[:date].strftime("%Y/%m/%d %H:%M:%S"),
|
59
|
+
@entry[:login_id],
|
60
|
+
@entry[:access_ip],
|
61
|
+
host_name,
|
62
|
+
@entry[:status]
|
63
|
+
].map{|s| "'#{s}'"}.join(",")
|
64
|
+
return "INSERT INTO #{table_name} (companyId,date,login_id,access_ip,host_name,status) VALUES (#{value})"
|
65
|
+
end
|
66
|
+
end
|
67
|
+
|
68
|
+
# メイン
|
69
|
+
|
70
|
+
RBatch::Log.new do |log|
|
71
|
+
log.info("Start -----------------");
|
72
|
+
entries = []
|
73
|
+
|
74
|
+
# 認証アクセスログ読み込み
|
75
|
+
File.foreach(RBatch::config["openam_access_log_path"]) do |line|
|
76
|
+
begin
|
77
|
+
entries << Entry.new(line)
|
78
|
+
rescue => e
|
79
|
+
p e
|
80
|
+
end
|
81
|
+
end
|
82
|
+
|
83
|
+
# 認証エラーログ読み込み
|
84
|
+
File.foreach(RBatch::config["openam_error_log_path"]) do |line|
|
85
|
+
begin
|
86
|
+
entries << Entry.new(line)
|
87
|
+
rescue => e
|
88
|
+
end
|
89
|
+
end
|
90
|
+
|
91
|
+
# MySQLに接続
|
92
|
+
con = Mysql.new(RBatch::config["mysql_server"],
|
93
|
+
RBatch::config["mysql_user"],
|
94
|
+
RBatch::config["mysql_password"],
|
95
|
+
RBatch::config["mysql_db_name"])
|
96
|
+
# MySQLに挿入
|
97
|
+
entries.each do |entry|
|
98
|
+
sql = entry.insert_sql(RBatch::config["mysql_table_name"],
|
99
|
+
RBatch::config["host_name"],
|
100
|
+
RBatch::config["company_id"])
|
101
|
+
log.info("exec sql: " + sql);
|
102
|
+
con.query(sql)
|
103
|
+
end
|
104
|
+
end
|
105
|
+
|
@@ -0,0 +1,108 @@
|
|
1
|
+
# -*- coding: utf-8 -*-
|
2
|
+
require 'rbatch'
|
3
|
+
require 'mysql'
|
4
|
+
|
5
|
+
#
|
6
|
+
# WebAgentの認可ログを解析してMySQLに挿入する
|
7
|
+
#
|
8
|
+
|
9
|
+
# OpenAMエージェントの認可ログの一行
|
10
|
+
class Entry
|
11
|
+
# 行をマッチさせる正規表現
|
12
|
+
@@reg=/^
|
13
|
+
(\S+\s\S+) # 0 YYYY-MM-DD HH:MM:SS
|
14
|
+
\.\d\d\d # .sss
|
15
|
+
\s # 半角スペース
|
16
|
+
\s # 半角スペース
|
17
|
+
\s # 半角スペース
|
18
|
+
\s # 半角スペース
|
19
|
+
Info
|
20
|
+
\s # 半角スペース
|
21
|
+
\S+ # xxxxxx:xxxxxx
|
22
|
+
\s # 半角スペース
|
23
|
+
LocalAuditLog:
|
24
|
+
\s # 半角スペース
|
25
|
+
User
|
26
|
+
\s # 半角スペース
|
27
|
+
(\S+) # 1 user_id
|
28
|
+
\s # 半角スペース
|
29
|
+
was
|
30
|
+
\s # 半角スペース
|
31
|
+
(\S+) # 2 allowed or denied
|
32
|
+
\s # 半角スペース
|
33
|
+
access
|
34
|
+
\s # 半角スペース
|
35
|
+
to
|
36
|
+
\s # 半角スペース
|
37
|
+
(\S+) # 3 request
|
38
|
+
$/x
|
39
|
+
|
40
|
+
@@status_map = {"allowed" => "ALLOW","denied" => "DISALLOW"}
|
41
|
+
@entry
|
42
|
+
|
43
|
+
# ログの1行を解析してEntryクラスを作る。
|
44
|
+
# 解析できない時は例外を発生させる。
|
45
|
+
#
|
46
|
+
# 期待しているフォーマットは以下の通り。
|
47
|
+
#
|
48
|
+
# 2012-07-20 11:04:45.059 Info 24006:16ed0460 LocalAuditLog: User amadmin was allowed access to http://www.fx.develop.jp:80/.
|
49
|
+
#
|
50
|
+
def initialize(line,url_ignore_keywords)
|
51
|
+
match = line.match(@@reg)
|
52
|
+
raise "parse error. line: <#{line}> " if match.nil?
|
53
|
+
captures = match.captures
|
54
|
+
url_ignore_keywords.each do | keyword |
|
55
|
+
raise "ignore keyword include in access_url: <#{line}}>" if captures[3].include?(keyword)
|
56
|
+
end
|
57
|
+
@entry = {
|
58
|
+
:datetime => DateTime.strptime( captures[0], '%Y-%m-%d %H:%M:%S'),
|
59
|
+
:login_id => captures[1],
|
60
|
+
:status => @@status_map[captures[2]],
|
61
|
+
:access_url => captures[3]
|
62
|
+
}
|
63
|
+
end
|
64
|
+
|
65
|
+
# Insert用のSQLを返す
|
66
|
+
def insert_sql(table_name,host_name,company_id)
|
67
|
+
value = [ company_id ,
|
68
|
+
@entry[:datetime].strftime("%Y/%m/%d %H:%M:%S"),
|
69
|
+
@entry[:login_id],
|
70
|
+
host_name,
|
71
|
+
@entry[:access_url],
|
72
|
+
@entry[:status]
|
73
|
+
].map{|s| "'#{s}'"}.join(",")
|
74
|
+
|
75
|
+
return "INSERT INTO #{table_name} (companyId,date,login_id,host_name,access_url,status) VALUES (#{value})"
|
76
|
+
end
|
77
|
+
end
|
78
|
+
|
79
|
+
|
80
|
+
# メイン
|
81
|
+
|
82
|
+
RBatch::Log.new do |log|
|
83
|
+
log.info("Start -----------------");
|
84
|
+
entries = []
|
85
|
+
url_ignore_keywords = RBatch::config["url_ignore_keywords"]
|
86
|
+
# ログ読み込み
|
87
|
+
File.foreach(RBatch::config["log_path"]) do |line|
|
88
|
+
begin
|
89
|
+
entries << Entry.new(line,url_ignore_keywords)
|
90
|
+
rescue => e
|
91
|
+
end
|
92
|
+
end
|
93
|
+
|
94
|
+
# MySQLに接続
|
95
|
+
con = Mysql.new(RBatch::config["mysql_server"],
|
96
|
+
RBatch::config["mysql_user"],
|
97
|
+
RBatch::config["mysql_password"],
|
98
|
+
RBatch::config["mysql_db_name"])
|
99
|
+
# MySQLに挿入
|
100
|
+
entries.each do |entry|
|
101
|
+
sql = entry.insert_sql(RBatch::config["mysql_table_name"],
|
102
|
+
RBatch::config["host_name"],
|
103
|
+
RBatch::config["company_id"])
|
104
|
+
log.info("exec sql: " + sql);
|
105
|
+
con.query(sql)
|
106
|
+
end
|
107
|
+
end
|
108
|
+
|
@@ -0,0 +1,35 @@
|
|
1
|
+
mysql_server : "localhost"
|
2
|
+
mysql_user : "root"
|
3
|
+
mysql_password : ""
|
4
|
+
mysql_db_name : "test"
|
5
|
+
mysql_table_name : "authentication_log"
|
6
|
+
company_id : "sample.co"
|
7
|
+
host_name : "server1"
|
8
|
+
openam_access_log_path : "/root/rbatch/sample/data/amAuthentication.access.2012-07-10"
|
9
|
+
openam_error_log_path : "/root/rbatch/sample/data/amAuthentication.error.2012-07-10"
|
10
|
+
auth_status:
|
11
|
+
AUTHENTICATION-100 : Login Success
|
12
|
+
AUTHENTICATION-101 : Login Success
|
13
|
+
AUTHENTICATION-102 : Login Success
|
14
|
+
AUTHENTICATION-103 : Login Success
|
15
|
+
AUTHENTICATION-104 : Login Success
|
16
|
+
AUTHENTICATION-105 : Login Success
|
17
|
+
AUTHENTICATION-200 : Login Failed
|
18
|
+
AUTHENTICATION-201 : Invalid Password
|
19
|
+
AUTHENTICATION-202 : No user profile
|
20
|
+
AUTHENTICATION-203 : User Profile does not exist
|
21
|
+
AUTHENTICATION-204 : Not active
|
22
|
+
AUTHENTICATION-205 : User is Locked out
|
23
|
+
AUTHENTICATION-206 : User account has expired
|
24
|
+
AUTHENTICATION-207 : Login Timed Out
|
25
|
+
AUTHENTICATION-208 : Authentication module is denied
|
26
|
+
AUTHENTICATION-209 : maximum number of session
|
27
|
+
AUTHENTICATION-240 : Login Failed
|
28
|
+
AUTHENTICATION-241 : Invalid Password
|
29
|
+
AUTHENTICATION-245 : User is Locked out
|
30
|
+
AUTHENTICATION-247 : Login Timed Out
|
31
|
+
AUTHENTICATION-300 : Logout
|
32
|
+
AUTHENTICATION-301 : Logout
|
33
|
+
AUTHENTICATION-302 : Logout
|
34
|
+
AUTHENTICATION-303 : Logout
|
35
|
+
AUTHENTICATION-304 : Logout
|
@@ -0,0 +1,68 @@
|
|
1
|
+
# RBatch config
|
2
|
+
#
|
3
|
+
# This file format is YAML
|
4
|
+
#
|
5
|
+
|
6
|
+
# -------------------
|
7
|
+
# Global setting
|
8
|
+
# -------------------
|
9
|
+
|
10
|
+
# Forbit Double Run
|
11
|
+
#
|
12
|
+
# Default : false
|
13
|
+
#
|
14
|
+
#forbid_double_run: true
|
15
|
+
|
16
|
+
# -------------------
|
17
|
+
# Cmd setting
|
18
|
+
# -------------------
|
19
|
+
|
20
|
+
# Raise Exception
|
21
|
+
#
|
22
|
+
# Default : false
|
23
|
+
#
|
24
|
+
# If command exit status is not 0, raise exception.
|
25
|
+
#
|
26
|
+
cmd_raise : true
|
27
|
+
|
28
|
+
|
29
|
+
# -------------------
|
30
|
+
# Log setting
|
31
|
+
# -------------------
|
32
|
+
|
33
|
+
# Log File Name
|
34
|
+
#
|
35
|
+
# Default : "<date>_<time>_<prog>.log"
|
36
|
+
#
|
37
|
+
# Reservation words
|
38
|
+
# <data> --> replace to YYYYMMDD date string
|
39
|
+
# <time> --> replace to hhmmss time string
|
40
|
+
# <prog> --> Program file base name (except extention)
|
41
|
+
#
|
42
|
+
#log_name : "<date>_<time>_<prog>.log"
|
43
|
+
log_name : "<date>_<prog>.log"
|
44
|
+
|
45
|
+
# Log Output Directory
|
46
|
+
#
|
47
|
+
# Default : "(Script path)/../log"
|
48
|
+
#
|
49
|
+
#log_dir : "/tmp/log"
|
50
|
+
|
51
|
+
# Append log or not
|
52
|
+
#
|
53
|
+
# Default : ture
|
54
|
+
#
|
55
|
+
#log_append : false
|
56
|
+
|
57
|
+
# Log Level
|
58
|
+
#
|
59
|
+
# Default : "info"
|
60
|
+
# Value : "debug","info","wran","error","fatal"
|
61
|
+
#
|
62
|
+
#log_level : "debug"
|
63
|
+
|
64
|
+
# Print log-string both file and STDOUT
|
65
|
+
#
|
66
|
+
# Default : false
|
67
|
+
#
|
68
|
+
log_stdout : true
|
@@ -0,0 +1,16 @@
|
|
1
|
+
mysql_server : "localhost"
|
2
|
+
mysql_user : "root"
|
3
|
+
mysql_password : ""
|
4
|
+
mysql_db_name : "test"
|
5
|
+
mysql_table_name : "authorization_log"
|
6
|
+
company_id : "sample.co"
|
7
|
+
host_name : "server1"
|
8
|
+
log_path : "/root/rbatch/sample/data/amAgent_localhost_80.log.2012-07-10"
|
9
|
+
url_ignore_keywords:
|
10
|
+
- ".jpg"
|
11
|
+
- ".gif"
|
12
|
+
- ".html"
|
13
|
+
- ".css"
|
14
|
+
- ".js"
|
15
|
+
- ".jpeg"
|
16
|
+
- ".ico"
|
@@ -0,0 +1,50 @@
|
|
1
|
+
192.168.58.1 192.168.1.111 - test.user1 [19/Jul/2012:06:15:40 +0900] 4 4358119 "GET /test/sample.html HTTP/1.1" 200 182 "Mozilla/5.0 (Windows; U; Windows NT 5.1; ja; rv:1.9.2.28) Gecko/20120306 Firefox/3.6.28" "http://www.hoge.develop.jp:8080/amserver/UI/Login?goto=http://www.hoge.develop.jp/test/sample.html"
|
2
|
+
192.168.58.1 192.168.1.111 - test.user1 [19/Jul/2012:06:15:50 +0900] 0 747 "GET /test/sample.html HTTP/1.1" 200 182 "Mozilla/5.0 (Windows; U; Windows NT 5.1; ja; rv:1.9.2.28) Gecko/20120306 Firefox/3.6.28" "http://www.hoge.develop.jp:8080/amserver/UI/Login?goto=http://www.hoge.develop.jp/test/sample.html"
|
3
|
+
192.168.58.1 192.168.1.111 - test.user1 [19/Jul/2012:06:15:59 +0900] 0 717 "GET /test/sample.html HTTP/1.1" 200 182 "Mozilla/5.0 (Windows; U; Windows NT 5.1; ja; rv:1.9.2.28) Gecko/20120306 Firefox/3.6.28" "http://www.hoge.develop.jp:8080/amserver/UI/Login?goto=http://www.hoge.develop.jp/test/sample.html"
|
4
|
+
192.168.58.1 192.168.1.111 - test.user1 [19/Jul/2012:06:15:59 +0900] 0 865 "GET /test/sample.html HTTP/1.1" 200 182 "Mozilla/5.0 (Windows; U; Windows NT 5.1; ja; rv:1.9.2.28) Gecko/20120306 Firefox/3.6.28" "http://www.hoge.develop.jp:8080/amserver/UI/Login?goto=http://www.hoge.develop.jp/test/sample.html"
|
5
|
+
192.168.58.1 192.168.1.111 - test.user1 [19/Jul/2012:06:16:00 +0900] 0 778 "GET /test/sample.html HTTP/1.1" 200 182 "Mozilla/5.0 (Windows; U; Windows NT 5.1; ja; rv:1.9.2.28) Gecko/20120306 Firefox/3.6.28" "http://www.hoge.develop.jp:8080/amserver/UI/Login?goto=http://www.hoge.develop.jp/test/sample.html"
|
6
|
+
192.168.58.1 192.168.1.111 - test.user1 [19/Jul/2012:06:16:00 +0900] 0 730 "GET /test/sample.html HTTP/1.1" 200 182 "Mozilla/5.0 (Windows; U; Windows NT 5.1; ja; rv:1.9.2.28) Gecko/20120306 Firefox/3.6.28" "http://www.hoge.develop.jp:8080/amserver/UI/Login?goto=http://www.hoge.develop.jp/test/sample.html"
|
7
|
+
192.168.58.1 192.168.1.111 - test.user1 [19/Jul/2012:06:16:00 +0900] 0 747 "GET /test/sample.html HTTP/1.1" 200 182 "Mozilla/5.0 (Windows; U; Windows NT 5.1; ja; rv:1.9.2.28) Gecko/20120306 Firefox/3.6.28" "http://www.hoge.develop.jp:8080/amserver/UI/Login?goto=http://www.hoge.develop.jp/test/sample.html"
|
8
|
+
192.168.58.1 - - test.user1 [19/Jul/2012:06:16:04 +0900] 0 23620 "GET / HTTP/1.1" 200 44 "Mozilla/5.0 (Windows; U; Windows NT 5.1; ja; rv:1.9.2.28) Gecko/20120306 Firefox/3.6.28" "-"
|
9
|
+
192.168.58.1 - - test.user1 [19/Jul/2012:06:22:22 +0900] 1 1073134 "GET / HTTP/1.1" 200 44 "Mozilla/5.0 (Windows; U; Windows NT 5.1; ja; rv:1.9.2.28) Gecko/20120306 Firefox/3.6.28" "-"
|
10
|
+
192.168.58.1 - - test.user1 [19/Jul/2012:06:23:11 +0900] 0 16550 "GET /test/sample.html HTTP/1.1" 304 - "Mozilla/5.0 (Windows; U; Windows NT 5.1; ja; rv:1.9.2.28) Gecko/20120306 Firefox/3.6.28" "-"
|
11
|
+
192.168.58.1 192.168.1.116 - test.user1 [19/Jul/2012:06:23:33 +0900] 0 674 "GET /test/sample.html HTTP/1.1" 304 - "Mozilla/5.0 (Windows; U; Windows NT 5.1; ja; rv:1.9.2.28) Gecko/20120306 Firefox/3.6.28" "-"
|
12
|
+
192.168.58.1 - - amadmin [19/Jul/2012:06:24:48 +0900] 0 553979 "GET /test/sample.html HTTP/1.1" 304 - "Mozilla/5.0 (Windows; U; Windows NT 5.1; ja; rv:1.9.2.28) Gecko/20120306 Firefox/3.6.28" "http://www.hoge.develop.jp:8080/amserver/UI/Login?goto=http%3A%2F%2Fwww.hoge.develop.jp%2Ftest%2Fsample.html&gx_charset=UTF-8"
|
13
|
+
192.168.58.1 - - amadmin [19/Jul/2012:06:25:41 +0900] 0 865 "GET / HTTP/1.1" 200 44 "Mozilla/5.0 (Windows; U; Windows NT 5.1; ja; rv:1.9.2.28) Gecko/20120306 Firefox/3.6.28" "-"
|
14
|
+
192.168.58.1 - - - [19/Jul/2012:22:20:19 +0900] 0 76219 "GET / HTTP/1.1" 403 - "Mozilla/5.0 (Windows; U; Windows NT 5.1; ja; rv:1.9.2.28) Gecko/20120306 Firefox/3.6.28" "-"
|
15
|
+
192.168.58.1 - - - [19/Jul/2012:22:20:19 +0900] 0 902 "GET /favicon.ico HTTP/1.1" 403 - "Mozilla/5.0 (Windows; U; Windows NT 5.1; ja; rv:1.9.2.28) Gecko/20120306 Firefox/3.6.28" "-"
|
16
|
+
192.168.58.1 - - test.user1@example.com [19/Jul/2012:22:23:25 +0900] 0 50720 "GET / HTTP/1.1" 200 44 "Mozilla/5.0 (Windows; U; Windows NT 5.1; ja; rv:1.9.2.28) Gecko/20120306 Firefox/3.6.28" "-"
|
17
|
+
192.168.58.1 - - test.user1@example.com [19/Jul/2012:22:24:11 +0900] 0 828 "GET / HTTP/1.1" 200 44 "Mozilla/5.0 (Windows; U; Windows NT 5.1; ja; rv:1.9.2.28) Gecko/20120306 Firefox/3.6.28" "-"
|
18
|
+
192.168.58.1 - - test.user1@example.com [19/Jul/2012:22:24:51 +0900] 0 25372 "GET /test/cmx_test01.html HTTP/1.1" 404 1299 "Mozilla/5.0 (Windows; U; Windows NT 5.1; ja; rv:1.9.2.28) Gecko/20120306 Firefox/3.6.28" "-"
|
19
|
+
192.168.58.1 - - test.user1@example.com [19/Jul/2012:22:24:52 +0900] 0 29118 "GET /barerrors/js/chgCss.js HTTP/1.1" 200 1377 "Mozilla/5.0 (Windows; U; Windows NT 5.1; ja; rv:1.9.2.28) Gecko/20120306 Firefox/3.6.28" "http://www.hoge.develop.jp/test/cmx_test01.html"
|
20
|
+
192.168.58.1 - - test.user1@example.com [19/Jul/2012:22:24:52 +0900] 0 20638 "GET /barerrors/images/logo.gif HTTP/1.1" 200 4321 "Mozilla/5.0 (Windows; U; Windows NT 5.1; ja; rv:1.9.2.28) Gecko/20120306 Firefox/3.6.28" "http://www.hoge.develop.jp/test/cmx_test01.html"
|
21
|
+
192.168.58.1 - - test.user1@example.com [19/Jul/2012:22:24:52 +0900] 0 17983 "GET /barerrors/images/nri_logo.gif HTTP/1.1" 200 3111 "Mozilla/5.0 (Windows; U; Windows NT 5.1; ja; rv:1.9.2.28) Gecko/20120306 Firefox/3.6.28" "http://www.hoge.develop.jp/test/cmx_test01.html"
|
22
|
+
192.168.58.1 - - test.user1@example.com [19/Jul/2012:22:24:52 +0900] 0 20996 "GET /barerrors/css/win_ff.css HTTP/1.1" 200 10482 "Mozilla/5.0 (Windows; U; Windows NT 5.1; ja; rv:1.9.2.28) Gecko/20120306 Firefox/3.6.28" "http://www.hoge.develop.jp/test/cmx_test01.html"
|
23
|
+
192.168.58.1 - - test.user1@example.com [19/Jul/2012:22:24:52 +0900] 0 1560 "GET /barerrors/images/header_bg.jpg HTTP/1.1" 200 8712 "Mozilla/5.0 (Windows; U; Windows NT 5.1; ja; rv:1.9.2.28) Gecko/20120306 Firefox/3.6.28" "http://www.hoge.develop.jp/barerrors/css/win_ff.css"
|
24
|
+
192.168.58.1 - - test.user1@example.com [19/Jul/2012:22:24:57 +0900] 0 1040 "GET /test/cmx-test01.html HTTP/1.1" 404 1299 "Mozilla/5.0 (Windows; U; Windows NT 5.1; ja; rv:1.9.2.28) Gecko/20120306 Firefox/3.6.28" "-"
|
25
|
+
192.168.58.1 - - test.user1@example.com [19/Jul/2012:22:25:07 +0900] 0 1047 "GET /test/smx_test01.html HTTP/1.1" 404 1299 "Mozilla/5.0 (Windows; U; Windows NT 5.1; ja; rv:1.9.2.28) Gecko/20120306 Firefox/3.6.28" "-"
|
26
|
+
192.168.58.1 - - test.user1@example.com [19/Jul/2012:22:25:56 +0900] 0 960 "GET /test/smx_test01.html HTTP/1.1" 200 296 "Mozilla/5.0 (Windows; U; Windows NT 5.1; ja; rv:1.9.2.28) Gecko/20120306 Firefox/3.6.28" "-"
|
27
|
+
192.168.58.1 - - test.user1@example.com [19/Jul/2012:22:25:56 +0900] 0 2073 "GET /test/company_logo.jpg HTTP/1.1" 200 31670 "Mozilla/5.0 (Windows; U; Windows NT 5.1; ja; rv:1.9.2.28) Gecko/20120306 Firefox/3.6.28" "http://www.hoge.develop.jp/test/smx_test01.html"
|
28
|
+
192.168.58.1 - - - [20/Jul/2012:00:41:37 +0900] 0 57292 "GET /test/smx_test01.html HTTP/1.1" 302 297 "Mozilla/5.0 (Windows; U; Windows NT 5.1; ja; rv:1.9.2.28) Gecko/20120306 Firefox/3.6.28" "-"
|
29
|
+
192.168.58.1 - - test.user1@example.com [20/Jul/2012:00:41:45 +0900] 0 167683 "GET /test/smx_test01.html HTTP/1.1" 200 296 "Mozilla/5.0 (Windows; U; Windows NT 5.1; ja; rv:1.9.2.28) Gecko/20120306 Firefox/3.6.28" "http://www.hoge.develop.jp:8080/amserver/UI/Login?goto=http%3A%2F%2Fwww.hoge.develop.jp%3A80%2Ftest%2Fsmx_test01.html"
|
30
|
+
192.168.58.1 - - test.user1@example.com [20/Jul/2012:00:41:45 +0900] 0 725 "GET /test/company_logo.jpg HTTP/1.1" 304 - "Mozilla/5.0 (Windows; U; Windows NT 5.1; ja; rv:1.9.2.28) Gecko/20120306 Firefox/3.6.28" "http://www.hoge.develop.jp/test/smx_test01.html"
|
31
|
+
192.168.58.1 - - test.user1@example.com [20/Jul/2012:00:44:49 +0900] 0 401812 "GET /test/smx_test01.html HTTP/1.1" 304 - "Mozilla/5.0 (Windows; U; Windows NT 5.1; ja; rv:1.9.2.28) Gecko/20120306 Firefox/3.6.28" "-"
|
32
|
+
192.168.58.1 - - test.user1@example.com [20/Jul/2012:00:44:50 +0900] 0 650 "GET /test/company_logo.jpg HTTP/1.1" 304 - "Mozilla/5.0 (Windows; U; Windows NT 5.1; ja; rv:1.9.2.28) Gecko/20120306 Firefox/3.6.28" "http://www.hoge.develop.jp/test/smx_test01.html"
|
33
|
+
192.168.58.1 - - test.user1@example.com [20/Jul/2012:00:45:41 +0900] 0 961 "GET / HTTP/1.1" 200 44 "Mozilla/5.0 (Windows; U; Windows NT 5.1; ja; rv:1.9.2.28) Gecko/20120306 Firefox/3.6.28" "-"
|
34
|
+
192.168.58.1 - - test.user1@example.com [20/Jul/2012:00:46:05 +0900] 0 820 "GET /test/smx_test02.html HTTP/1.1" 200 305 "Mozilla/5.0 (Windows; U; Windows NT 5.1; ja; rv:1.9.2.28) Gecko/20120306 Firefox/3.6.28" "-"
|
35
|
+
192.168.58.1 - - test.user1@example.com [20/Jul/2012:00:46:05 +0900] 0 677 "GET /test/company_logo.jpg HTTP/1.1" 304 - "Mozilla/5.0 (Windows; U; Windows NT 5.1; ja; rv:1.9.2.28) Gecko/20120306 Firefox/3.6.28" "http://www.hoge.develop.jp/test/smx_test02.html"
|
36
|
+
192.168.58.1 - - test.user2@example.com [20/Jul/2012:10:51:27 +0900] 0 98765 "GET /test/smx_test01.html HTTP/1.1" 304 - "Mozilla/5.0 (Windows; U; Windows NT 5.1; ja; rv:1.9.2.28) Gecko/20120306 Firefox/3.6.28" "http://www.hoge.develop.jp:8080/amserver/UI/Login?goto=http%3A%2F%2Fwww.hoge.develop.jp%3A80%2Ftest%2Fsmx_test01.html&gx_charset=UTF-8"
|
37
|
+
192.168.58.1 - - test.user2@example.com [20/Jul/2012:10:51:27 +0900] 0 649 "GET /test/company_logo.jpg HTTP/1.1" 304 - "Mozilla/5.0 (Windows; U; Windows NT 5.1; ja; rv:1.9.2.28) Gecko/20120306 Firefox/3.6.28" "http://www.hoge.develop.jp/test/smx_test01.html"
|
38
|
+
192.168.58.1 - - test.user2@example.com [20/Jul/2012:10:51:51 +0900] 0 700 "GET /test/smx_test02.html HTTP/1.1" 304 - "Mozilla/5.0 (Windows; U; Windows NT 5.1; ja; rv:1.9.2.28) Gecko/20120306 Firefox/3.6.28" "-"
|
39
|
+
192.168.58.1 - - - [20/Jul/2012:10:52:32 +0900] 0 176 "GET / HTTP/1.1" 302 262 "Mozilla/5.0 (Windows; U; Windows NT 5.1; ja; rv:1.9.2.28) Gecko/20120306 Firefox/3.6.28" "-"
|
40
|
+
192.168.58.1 - - test.user1 [20/Jul/2012:10:56:16 +0900] 0 665 "GET /test/smx_test01.html HTTP/1.1" 200 296 "Mozilla/5.0 (Windows; U; Windows NT 5.1; ja; rv:1.9.2.28) Gecko/20120306 Firefox/3.6.28" "-"
|
41
|
+
192.168.58.1 - - test.user1 [20/Jul/2012:10:56:16 +0900] 0 1965 "GET /test/company_logo.jpg HTTP/1.1" 200 31670 "Mozilla/5.0 (Windows; U; Windows NT 5.1; ja; rv:1.9.2.28) Gecko/20120306 Firefox/3.6.28" "http://www.hoge.develop.jp/test/smx_test01.html"
|
42
|
+
192.168.58.1 - - test.user1 [20/Jul/2012:10:56:26 +0900] 0 729 "GET /test/smx_test02.html HTTP/1.1" 200 305 "Mozilla/5.0 (Windows; U; Windows NT 5.1; ja; rv:1.9.2.28) Gecko/20120306 Firefox/3.6.28" "-"
|
43
|
+
192.168.58.1 - - test.user1 [20/Jul/2012:10:56:36 +0900] 0 807 "GET / HTTP/1.1" 200 44 "Mozilla/5.0 (Windows; U; Windows NT 5.1; ja; rv:1.9.2.28) Gecko/20120306 Firefox/3.6.28" "-"
|
44
|
+
192.168.58.1 - - test.user1 [20/Jul/2012:10:56:45 +0900] 0 1106 "GET /tes HTTP/1.1" 404 1299 "Mozilla/5.0 (Windows; U; Windows NT 5.1; ja; rv:1.9.2.28) Gecko/20120306 Firefox/3.6.28" "-"
|
45
|
+
192.168.58.1 - - - [20/Jul/2012:11:04:01 +0900] 0 17008 "GET /te HTTP/1.1" 403 - "Mozilla/5.0 (Windows; U; Windows NT 5.1; ja; rv:1.9.2.28) Gecko/20120306 Firefox/3.6.28" "-"
|
46
|
+
192.168.58.1 - - amadmin [20/Jul/2012:11:04:39 +0900] 1 1283886 "GET /te HTTP/1.1" 404 1299 "Mozilla/5.0 (Windows; U; Windows NT 5.1; ja; rv:1.9.2.28) Gecko/20120306 Firefox/3.6.28" "-"
|
47
|
+
192.168.58.1 - - amadmin [20/Jul/2012:11:04:40 +0900] 0 523 "GET /barerrors/images/nri_logo.gif HTTP/1.1" 200 3111 "Mozilla/5.0 (Windows; U; Windows NT 5.1; ja; rv:1.9.2.28) Gecko/20120306 Firefox/3.6.28" "http://www.hoge.develop.jp/te"
|
48
|
+
192.168.58.1 - - amadmin [20/Jul/2012:11:04:40 +0900] 0 15864 "GET /barerrors/css/win_ff.css HTTP/1.1" 200 10482 "Mozilla/5.0 (Windows; U; Windows NT 5.1; ja; rv:1.9.2.28) Gecko/20120306 Firefox/3.6.28" "http://www.hoge.develop.jp/te"
|
49
|
+
192.168.58.1 - - amadmin [20/Jul/2012:11:04:40 +0900] 0 956 "GET /barerrors/images/header_bg.jpg HTTP/1.1" 200 8712 "Mozilla/5.0 (Windows; U; Windows NT 5.1; ja; rv:1.9.2.28) Gecko/20120306 Firefox/3.6.28" "http://www.hoge.develop.jp/barerrors/css/win_ff.css"
|
50
|
+
192.168.58.1 - - amadmin [20/Jul/2012:11:04:45 +0900] 0 714 "GET / HTTP/1.1" 200 44 "Mozilla/5.0 (Windows; U; Windows NT 5.1; ja; rv:1.9.2.28) Gecko/20120306 Firefox/3.6.28" "-"
|