class SelfInternet
Public Class Methods
make_users_str(users)
click to toggle source
# File Views/Self/Internet.rb, line 149 def self.make_users_str(users) users_str = [[]] users.split.sort.each { |u| if users_str.last.count > 3 users_str[-1] = users_str.last.join(', ') users_str.push [] end users_str.last.push u } users_str[-1] = users_str.last.join(', ') users_str.join(',<br>') end
Public Instance Methods
can_connect(session)
click to toggle source
0 - yes 1 - no money left 2 - restrictions 3 - AccessGroups-rules 4 - no internet available
# File Views/Self/Internet.rb, line 37 def can_connect(session) noop = Internet.operator == nil return 4 if noop if not (ag = AccessGroups.allow_user_now(session.owner))[0] return ag[1] elsif Captive.restricted return 2 elsif Internet.free(session.owner) return 0 else if session.owner and session.owner.internet_credit cost_max = 20 if Internet.operator cost_max = Internet.operator.user_cost_max end return (session.owner.internet_credit.to_i >= cost_max) ? 0 : 1 else dputs(0) { "Error: Called with session.owner == nil! #{session.inspect}" } return 1 end end end
get_traffic(user)
click to toggle source
# File Views/Self/Internet.rb, line 170 def get_traffic(user) return reply(:hide, :traffic) unless (t = Captive.traffic) && user.is_staff? list = t.traffic.collect { |h, _k| traffic = t.get_day(h, -3).collect { |r, t| ((r+t)/1000)/1000.0 } [h, [h] + traffic] }.select { |t| t[1][1..3].inject(:+) > 0 }.sort_by { |t| t[1][3] }.reverse #list = [[:ineiti], [20, 30, 40]] reply(:unhide, :traffic) + reply(:update, traffic: list) end
layout()
click to toggle source
# File Views/Self/Internet.rb, line 4 def layout set_data_class :Persons @order = 10 @update = true @auto_update_async = 5 @auto_update_send_values = false @functions_need = [:internet, :internet_captive] @functions_reject = [:internet_simple] gui_hbox do gui_vbox :nogroup do show_html :connection_status show_int_ro :internet_credit show_int_ro :users_connected show_int_ro :bytes_left show_int_ro :bytes_left_today show_html :connection, :width => 100 show_html :auto_connection show_button :connect, :disconnect end gui_vbox :nogroup do show_table :traffic, headings: %w(Name Day-2 Day-1 Today), widths: [100, 75, 75, 75] show_button :disconnect_user end end end
rpc_show(session)
click to toggle source
Calls superclass method
# File Views/Self/Internet.rb, line 225 def rpc_show(session) super(session) + rpc_update(session) end
rpc_update(session, nobutton = false)
click to toggle source
# File Views/Self/Internet.rb, line 182 def rpc_update(session, nobutton = false) if nobutton nobutton = Internet.operator && Internet.operator.connection_type == Operator::CONNECTION_ONDEMAND end o = session.owner users = Captive.users_connected users_str = SelfInternet.make_users_str(users) dputs(4) { "session is #{session.inspect}" } if session.class != Session dputs(0) { "Called rpc_update without a session! #{caller.inspect}" } end ret = reply(:update, update(session)) + update_button(session, nobutton) + update_connection_status(session) + update_isp(session) + reply(:update, :internet_credit => o.internet_credit.to_i) + reply(:update, :users_connected => "#{users.count}: #{users_str}") + reply_visible(!Internet.free(session.owner), :internet_credit) if Internet.operator && Internet.operator.has_promo && o.is_staff? left = Internet.operator.internet_left ret += reply(:unhide, :bytes_left) + reply(:update, :bytes_left => left.to_MB('Mo')) if Recharges.enabled? ret += reply(:unhide, :bytes_left_today) + reply(:update, bytes_left_today: Recharge.left_today(left).to_MB('Mo')) else ret += reply(:hide, :bytes_left_today) end else ret += reply(:hide, %w(bytes_left bytes_left_today)) end Captive.user_keep o.login_name, ConfigBase.keep_idle_free.to_i, true url = 'Bookmark for<br>'+ "<a href='http://#{session.web_req.header._host.first}/" + "?user=#{o.login_name}&pass=#{o.password}'>" + 'Internet-connection</a>' ret + reply(:update, auto_connection: url) + get_traffic(o) end
rpc_update_async(session)
click to toggle source
# File Views/Self/Internet.rb, line 162 def rpc_update_async(session) rpc_update(session) end
traffic_rxtx(t)
click to toggle source
# File Views/Self/Internet.rb, line 166 def traffic_rxtx(t) t.collect { |r, t| r+t }.join('-') end
update_connection_status(session)
click to toggle source
# File Views/Self/Internet.rb, line 61 def update_connection_status(session) #dputs_func return reply(:hide, :connection_status) unless session.owner.has_role(:cybermanager) ret = [] cc = can_connect(session) dputs(3) { "CanConnect is #{cc}" } case cc when 0 status, status_str = Internet.connection_status dputs(3) { "Connection-status is #{status.inspect}" } status = status.to_i if (0..4).include? status.to_i status_color = %w( ff0000 ff2200 ff5500 ffff88 88ff88 ) status_width = %w( 25 30 35 100 150 ) connection_status = "<td width='#{status_width[status]}" + "' bgcolor='" + status_color[status] + "'>" + status_str + "</td><td bgcolor='ffffff'></td>" else dputs(0) { "Error: connection-status was #{status.inspect}" } connection_status = 'Comm-error' end ret += reply(:update, :connection_status => 'Etat de la connexion:<br>' + "<table width='150px'><tr>" + connection_status + '</tr></table>') when 1 ret += reply(:update, :connection_status => 'Not enough money in account') when 2 ret += reply(:update, :connection_status => 'Restricted access due to teaching') when 3 ret += reply(:update, :connection_status => cc) when 4 ret += reply(:update, :connection_status => 'No internet connection available') end return ret end
update_isp(session)
click to toggle source
# File Views/Self/Internet.rb, line 142 def update_isp(session) promo = (Internet.operator && Internet.operator.has_promo) dputs(3) { "promo is #{promo}: #{Internet.operator} - #{Internet.operator.has_promo.inspect}" } reply_visible(promo && session.owner.is_staff?, :bytes_left) + reply(:unhide, :connection_status) end