mirror of
https://github.com/ENSL/ensl.org.git
synced 2025-05-31 08:51:13 +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
88
app/models/ban.rb
Normal file
88
app/models/ban.rb
Normal file
|
@ -0,0 +1,88 @@
|
|||
class Ban < ActiveRecord::Base
|
||||
include Extra
|
||||
|
||||
TYPE_SITE = 0
|
||||
TYPE_MUTE = 1
|
||||
TYPE_LEAGUE = 2
|
||||
TYPE_SERVER = 3
|
||||
TYPE_VENT = 4
|
||||
TYPE_GATHER = 5
|
||||
VENT_BANS = "tmp/bans.txt"
|
||||
|
||||
attr_protected :id, :created_at, :updated_at
|
||||
attr_accessor :ts, :sign, :len, :user_name
|
||||
|
||||
scope :ordered, :order => "created_at DESC"
|
||||
scope :effective, :conditions => "expiry > UTC_TIMESTAMP()"
|
||||
scope :ineffective, :conditions => "expiry < UTC_TIMESTAMP()"
|
||||
|
||||
validate :validate_ts
|
||||
validate :validate_type
|
||||
validate :validate_ventban
|
||||
validates_format_of :steamid, :with => /\A([0-9]{1,10}:){2}[0-9]{1,10}\Z/, :allow_blank => true
|
||||
validates_format_of :addr, :with => /\A([0-9]{1,3}\.){3}[0-9]{1,3}:?[0-9]{0,5}\z/, :allow_blank => true
|
||||
validates_length_of :reason, :maximum => 255, :allow_nil => true, :allow_blank => true
|
||||
|
||||
before_validation :check_user
|
||||
|
||||
belongs_to :user
|
||||
belongs_to :server
|
||||
|
||||
def color
|
||||
expiry.past? ? "green" : "red"
|
||||
end
|
||||
|
||||
def types
|
||||
{TYPE_SITE => "Website Logon",
|
||||
TYPE_MUTE => "Commenting",
|
||||
TYPE_LEAGUE => "Contests",
|
||||
TYPE_SERVER => "NS Servers",
|
||||
TYPE_VENT => "Ventrilo",
|
||||
TYPE_GATHER => "Gather"}
|
||||
end
|
||||
|
||||
def validate_ts
|
||||
if ts and Verification.verify(steamid + ts.to_s) != sign
|
||||
errors.add :ts, I18n.t(:wrong_verification_code)
|
||||
end
|
||||
end
|
||||
|
||||
def validate_type
|
||||
errors.add :ban_type, I18n.t(:invalid_ban_type) unless types.include? ban_type
|
||||
end
|
||||
|
||||
def validate_ventban
|
||||
if ban_type == TYPE_VENT and !ip.match(/\A([0-9]{1,3}\.){3}[0-9]{1,3}\z/)
|
||||
errors.add :ip, I18n.t(:ventrilos_ip_ban)
|
||||
end
|
||||
end
|
||||
|
||||
def check_user
|
||||
if user_name
|
||||
self.user = User.find_by_username(user_name)
|
||||
else
|
||||
self.user = User.first(:conditions => {:steamid => steamid})
|
||||
self.server = Server.first(:conditions => ["CONCAT(ip, ':', port) = ?", addr])
|
||||
end
|
||||
end
|
||||
|
||||
def can_create? cuser
|
||||
cuser and cuser.admin?
|
||||
end
|
||||
|
||||
def can_update? cuser
|
||||
cuser and cuser.admin?
|
||||
end
|
||||
|
||||
def can_destroy? cuser
|
||||
cuser and cuser.admin?
|
||||
end
|
||||
|
||||
def self.refresh
|
||||
#file = File.new(VENT_BANS, "w")
|
||||
#Ban.all(:conditions => ["ban_type = ? AND expiry > UTC_TIMESTAMP()", TYPE_VENT]).each do |ban|
|
||||
# file.write "#{ban.ip},,,"
|
||||
#end
|
||||
#file.close
|
||||
end
|
||||
end
|
Loading…
Add table
Add a link
Reference in a new issue