mirror of
https://github.com/ENSL/ensl.org.git
synced 2024-11-15 17:31:27 +00:00
128 lines
3.1 KiB
Ruby
128 lines
3.1 KiB
Ruby
class PluginController < ApplicationController
|
|
def esi
|
|
buffer = []
|
|
out = []
|
|
buffer << Time.now.utc.to_i
|
|
buffer << "1.2"
|
|
buffer << params[:ch] ? params[:ch] : ""
|
|
out << "#ESI#"
|
|
out << Verification.verify(buffer.join)
|
|
out << buffer.join("\r")
|
|
render_out out
|
|
end
|
|
|
|
def user
|
|
buffer = []
|
|
out = []
|
|
|
|
if ban = Ban.first(:conditions => ["expiry > UTC_TIMESTAMP() AND steamid = ? AND ban_type = ?", params[:id], Ban::TYPE_SERVER])
|
|
out << "#USER#"
|
|
out << "BANNED"
|
|
out << ban.expiry.utc.to_i
|
|
out << ban.reason
|
|
out << "\r\r\r\r\r\r\r"
|
|
elsif user = User.first(:conditions => {:steamid => params[:id]})
|
|
teamer = (user.team ? user.teamers.active.of_team(user.team).first : nil)
|
|
icon = 0
|
|
rank = "User"
|
|
if Group.find(Group::DONORS).users.exists?(user)
|
|
rank = "Donor"
|
|
icon = icon | 1
|
|
end
|
|
if Group.find(Group::CHAMPIONS).users.exists?(user)
|
|
icon = icon | 2
|
|
end
|
|
if user.ref?
|
|
rank = "Referee"
|
|
icon = icon | 4
|
|
end
|
|
if user.admin?
|
|
rank = "Admin"
|
|
icon = icon | 8
|
|
end
|
|
|
|
buffer << user.steamid
|
|
buffer << user.username
|
|
buffer << user.lastip
|
|
buffer << (user.team ? Verification.uncrap(user.team.to_s) : "No Team")
|
|
buffer << user.id
|
|
buffer << user.team_id
|
|
buffer << rank
|
|
buffer << (teamer ? teamer.ranks[teamer.rank] : "")
|
|
buffer << icon
|
|
buffer << params[:ch] ? params[:ch] : ""
|
|
buffer << (user.can_play? ? "1" : "0")
|
|
|
|
out << "#USER#"
|
|
out << Verification.verify(buffer.join)
|
|
out << buffer.join("\r")
|
|
else
|
|
out << "#FAIL#"
|
|
end
|
|
|
|
render_out out
|
|
end
|
|
|
|
#def admin
|
|
# areq = AdminRequest.new
|
|
# areq.addr = params[:addr]
|
|
# areq.pwd = params[:pwd]
|
|
# areq.msg = params[:msg]
|
|
# areq.player = params[:player]
|
|
# areq.user_id = params[:user]
|
|
# areq.save!
|
|
# render :text => "Ok"
|
|
#end
|
|
|
|
def ban
|
|
ban = Ban.new
|
|
ban.steamid = params[:id]
|
|
ban.ts = params[:ts]
|
|
ban.sign = params[:sign]
|
|
ban.expiry = DateTime.now.ago(-(params[:len].to_i*60))
|
|
ban.addr = params[:addr]
|
|
ban.reason = params[:reason]
|
|
ban.ban_type = Ban::TYPE_SERVER
|
|
ban.save!
|
|
|
|
render :text => "Ok"
|
|
end
|
|
|
|
def hltv_req
|
|
if params[:game].to_i > 0
|
|
if match = Match.first(:conditions => {:id => params[:game]})
|
|
match.hltv_record params[:addr], params[:pwd]
|
|
hltv = match.hltv
|
|
else
|
|
render :text => t(:matches_notfound)
|
|
end
|
|
else
|
|
hltv = Server.hltvs.active.unreserved_now.unreserved_hltv_around(DateTime.now).first unless hltv
|
|
render :text => t(:hltv_notavailable) unless hltv
|
|
|
|
hltv.recording = params[:game]
|
|
hltv.reservation = params[:addr]
|
|
hltv.pwd = params[:pwd]
|
|
hltv.save!
|
|
end
|
|
|
|
render :text => t(:hltv_sent)
|
|
end
|
|
|
|
def hltv_move
|
|
Server.move params[:addr], params[:newaddr], params[:newpwd]
|
|
render :text => t(:hltv_movedd) + params[:newaddr]
|
|
end
|
|
|
|
def hltv_stop
|
|
Server.stop params[:addr]
|
|
render :text => t(:hltv_stopped)
|
|
end
|
|
|
|
private
|
|
|
|
def render_out out
|
|
@text = out.join("\r")
|
|
render :layout => false
|
|
end
|
|
end
|