mirror of
https://github.com/ENSL/ensl.org.git
synced 2025-05-31 00:41:20 +00:00
Purged git history and removed sensitive information.
This commit is contained in:
commit
6bcc8dc76b
862 changed files with 25312 additions and 0 deletions
83
app/models/log_file.rb
Normal file
83
app/models/log_file.rb
Normal file
|
@ -0,0 +1,83 @@
|
|||
# encoding: US-ASCII
|
||||
|
||||
require 'digest/md5'
|
||||
|
||||
class LogFile < ActiveRecord::Base
|
||||
NON_ASCII = /[\x80-\xff]/
|
||||
LOGS = File.join(Rails.root, "tmp", "logs")
|
||||
|
||||
attr_accessor :path
|
||||
belongs_to :server
|
||||
|
||||
has_many :logs
|
||||
has_many :rounds, :through => :logs
|
||||
|
||||
def after_create
|
||||
Pathname(path).each_line do |line|
|
||||
if m = line.gsub(NON_ASCII, "").match(/\d{2}:\d{2}:\d{2}: (.*)/)
|
||||
log = Log.new
|
||||
log.server = server
|
||||
log.domain = Log::DOMAIN_LOG
|
||||
log.log_file = self
|
||||
log.text = m[1].strip
|
||||
next if log.text.match(/^Server cvar/)
|
||||
next if log.text.match(/^\[ENSL\]/)
|
||||
next if log.text.match(/STEAM USERID validated/)
|
||||
next if log.text.match(/^\[META\]/)
|
||||
l.created_at = DateTime.parse(line.match(/\d{2}\/\d{2}\/\d{4} \- \d{2}:\d{2}:\d{2}:/)[0])
|
||||
vars = {}
|
||||
log.match_map vars or log.match_start vars
|
||||
if vars[:round] and !log.details
|
||||
log.match_end vars \
|
||||
or log.match_join vars \
|
||||
or log.match_kill vars \
|
||||
or log.match_say vars \
|
||||
or log.match_built vars \
|
||||
or log.match_destroyed vars \
|
||||
or log.match_research_start vars \
|
||||
or log.match_research_cancel vars \
|
||||
or log.match_role vars \
|
||||
end
|
||||
if log.details
|
||||
log.round = vars[:round] if vars[:round]
|
||||
log.save
|
||||
end
|
||||
end
|
||||
end
|
||||
rounds.each do |r|
|
||||
unless r.end
|
||||
r.destroy
|
||||
end
|
||||
end
|
||||
Log.delete_all(["details IS NULL AND log_file_id = ?", self.id])
|
||||
end
|
||||
|
||||
def format path
|
||||
self.name = File.basename(path)
|
||||
self.size = File.size(path)
|
||||
self.md5 = Digest::MD5.hexdigest(File.read(path))
|
||||
self.updated_at = File.mtime(path)
|
||||
self.path = path
|
||||
end
|
||||
|
||||
def deal
|
||||
# TODO
|
||||
end
|
||||
|
||||
def self.process
|
||||
Dir.glob("#{LOGS}/*").each do |entry|
|
||||
dir = File.basename(entry).to_i
|
||||
if File.directory?(entry) and dir > 0 and Server.find(dir)
|
||||
Dir.glob("#{entry}/*.log").each do |file|
|
||||
lf = LogFile.new
|
||||
lf.format file
|
||||
lf.server_id = dir
|
||||
|
||||
unless LogFile.first(:conditions => {:name => lf.name, :size => lf.size, :server_id => dir.to_i})
|
||||
lf.save
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
Loading…
Add table
Add a link
Reference in a new issue