module Ss2
Constants
- VERSION
Public Class Methods
microtime()
click to toggle source
# File lib/ss2.rb, line 209 def self.microtime() epoch_mirco = Time.now.to_f epoch_full = Time.now.to_i epoch_fraction = epoch_mirco - epoch_full return epoch_fraction.to_s + ' ' + epoch_full.to_s end
send_js_request(request, params)
click to toggle source
# File lib/ss2.rb, line 237 def self.send_js_request(request, params) data = params['jsonString'] url = 'http://' + @@ss2_domain + '/getss2data' data.delete! '\\' data.delete! '[' data.delete! ']' shieldsquare_request = JSON.parse(data) shieldsquare_request["sid"] = @@sid shieldsquare_request["host"] = request.ip shieldsquare_post_data = shieldsquare_request if @@async_http_post == true shieldsquare_post_async url, shieldsquare_post_data, @@timeout_value else shieldsquare_post_sync url, shieldsquare_post_data, @@timeout_value end end
setup() { |self| ... }
click to toggle source
# File lib/ss2.rb, line 23 def self.setup yield self end
shieldsquare_IP2Hex()
click to toggle source
# File lib/ss2.rb, line 226 def self.shieldsquare_IP2Hex() hexx="" ip=$IP_ADDRESS part=ip.split('.') hexx='' for i in 0..part.count-1 hexx= hexx + ("0"+(part[i].to_i).to_s(16)).split(//).last(2).join("").to_s end return hexx end
shieldsquare_ValidateRequest( shieldsquare_username, shieldsquare_calltype, shieldsquare_pid, request, cookies )
click to toggle source
# File lib/ss2.rb, line 63 def self.shieldsquare_ValidateRequest( shieldsquare_username, shieldsquare_calltype, shieldsquare_pid, request, cookies ) shieldsquare_low = 10000 shieldsquare_high = 99999 shieldsquare_a = 1 shieldsquare_b = 3 shieldsquare_c = 7 shieldsquare_d = 1 shieldsquare_e = 5 shieldsquare_f = 10 shieldsquare_service_url = "http://" + @@ss2_domain + "/getRequestData" $IP_ADDRESS = request.remote_ip if @@timeout_value > 1000 puts "Content-type: text/html" puts '' puts 'ShieldSquare Timeout cant be greater then 1000 Milli seconds' exit end if shieldsquare_calltype == 1 shieldsquare_pid = shieldsquare_generate_pid @@sid else if shieldsquare_pid.length == 0 puts "Content-type: text/html" puts '' puts 'PID Cant be null' exit end end if cookies['__uzma']!="" and (cookies['__uzma'].to_s).length > 3 shieldsquare_lastaccesstime = cookies['__uzmd'] shieldsquare_uzmc=0 shieldsquare_uzmc= cookies['__uzmc'] shieldsquare_uzmc=shieldsquare_uzmc[shieldsquare_e..shieldsquare_e+1] shieldsquare_a = ((shieldsquare_uzmc.to_i-shieldsquare_c)/shieldsquare_b) + shieldsquare_d shieldsquare_uzmc= rand(shieldsquare_low..shieldsquare_high).to_s + (shieldsquare_c+shieldsquare_a*shieldsquare_b).to_s + rand(shieldsquare_low..shieldsquare_high).to_s cookies[:__uzmc] = { :value => shieldsquare_uzmc, :expires => Time.now + 3600*24*365*10} cookies[:__uzmd] = { :value => Time.now.to_i.to_s, :expires => Time.now + 3600*24*365*10} $ShieldsquareRequest__uzma = cookies["__uzma"] $ShieldsquareRequest__uzmb = cookies["__uzmb"] $ShieldsquareRequest__uzmc = shieldsquare_uzmc $ShieldsquareRequest__uzmd = shieldsquare_lastaccesstime else id = DateTime.now.strftime('%Q')# Get current date to the milliseconds # Reverse it shieldsquare_uzma = id.to_i(36).to_s shieldsquare_lastaccesstime = Time.now.to_i shieldsquare_uzmc= rand(shieldsquare_low..shieldsquare_high).to_s + (shieldsquare_c+shieldsquare_a*shieldsquare_b).to_s + rand(shieldsquare_low..shieldsquare_high).to_s cookies[:__uzma] = { :value => shieldsquare_uzma, :expires => Time.now + 3600*24*365*10} cookies[:__uzmb] = { :value => Time.now.to_i.to_s, :expires => Time.now + 3600*24*365*10} cookies[:__uzmc] = { :value => shieldsquare_uzmc, :expires => Time.now + 3600*24*365*10} cookies[:__uzmd] = { :value => Time.now.to_i.to_s, :expires => Time.now + 3600*24*365*10} $ShieldsquareRequest__uzma = shieldsquare_uzma $ShieldsquareRequest__uzmb = Time.now.to_i $ShieldsquareRequest__uzmc = shieldsquare_uzmc $ShieldsquareRequest__uzmd = shieldsquare_lastaccesstime end if @@mode == 'Active' $ShieldsquareRequest_zpsbd0 = true; else $ShieldsquareRequest_zpsbd0 = false; end $ShieldsquareRequest_zpsbd1 = @@sid $ShieldsquareRequest_zpsbd2 = shieldsquare_pid $ShieldsquareRequest_zpsbd3 = request.headers['HTTP_REFERER'] $ShieldsquareRequest_zpsbd4 = request.headers['REQUEST_URI'] $ShieldsquareRequest_zpsbd5 = request.session_options[:id] $ShieldsquareRequest_zpsbd6 = $IP_ADDRESS $ShieldsquareRequest_zpsbd7 = request.headers['HTTP_USER_AGENT'] $ShieldsquareRequest_zpsbd8 = shieldsquare_calltype $ShieldsquareRequest_zpsbd9 = shieldsquare_username $ShieldsquareRequest_zpsbda = Time.now.to_i my_hash = {:_zpsbd0 => $ShieldsquareRequest_zpsbd0,:_zpsbd1 => $ShieldsquareRequest_zpsbd1,:_zpsbd2 => $ShieldsquareRequest_zpsbd2,:_zpsbd3 => $ShieldsquareRequest_zpsbd3,:_zpsbd4 => $ShieldsquareRequest_zpsbd4,:_zpsbd5 => $ShieldsquareRequest_zpsbd5,:_zpsbd6 => $ShieldsquareRequest_zpsbd6,:_zpsbd7 => $ShieldsquareRequest_zpsbd7,:_zpsbd8 => $ShieldsquareRequest_zpsbd8,:_zpsbd9 => $ShieldsquareRequest_zpsbd9,:_zpsbda => $ShieldsquareRequest_zpsbda,:__uzma => $ShieldsquareRequest__uzma,:__uzmb => $ShieldsquareRequest__uzmb,:__uzmc => $ShieldsquareRequest__uzmc,:__uzmd => $ShieldsquareRequest__uzmd } shieldsquare_json_obj = my_hash $ShieldsquareResponse_pid = shieldsquare_pid $ShieldsquareResponse_url = @@js_url if @@mode == 'Active' shieldsquareCurlResponseCode=shieldsquare_post_sync shieldsquare_service_url, shieldsquare_json_obj,@@timeout_value if shieldsquareCurlResponseCode['response'] != 200 $ShieldsquareResponse_responsecode = $ShieldsquareCodes_ALLOW_EXP $ShieldsquareResponse_reason = shieldsquareCurlResponseCode['output'] else shieldsquareResponse_from_ss = JSON.parse(shieldsquareCurlResponseCode['output']) $ShieldsquareResponse_dynamic_JS = shieldsquareResponse_from_ss['dynamic_JS'] n=shieldsquareResponse_from_ss['ssresp'].to_i if n==0 $ShieldsquareResponse_responsecode = $ShieldsquareCodes_ALLOW elsif n==1 $ShieldsquareResponse_responsecode = $ShieldsquareCodes_MONITOR elsif n==2 $ShieldsquareResponse_responsecode = $ShieldsquareCodes_CAPTCHA elsif n==3 $ShieldsquareResponse_responsecode = $ShieldsquareCodes_BLOCK elsif n==4 $ShieldsquareResponse_responsecode = $ShieldsquareCodes_FFD else $ShieldsquareResponse_responsecode = $ShieldsquareCodes_ALLOW_EXP $ShieldsquareResponse_reason = shieldsquareCurlResponseCode['output'] end end else syncresponse=shieldsquare_post_sync shieldsquare_service_url, shieldsquare_json_obj,@@timeout_value if syncresponse['response'] != 200 $ShieldsquareResponse_responsecode = $ShieldsquareCodes_ALLOW_EXP $ShieldsquareResponse_reason = syncresponse['output'] else $ShieldsquareResponse_responsecode = $ShieldsquareCodes_ALLOW end $ShieldsquareResponse_dynamic_JS = "var __uzdbm_c = 2+2" end shieldsquareResponse = Hash["pid" => $ShieldsquareResponse_pid, "responsecode" => $ShieldsquareResponse_responsecode,"url" => $ShieldsquareResponse_url,"reason" => $ShieldsquareResponse_reason,"dynamic_JS" =>$ShieldsquareResponse_dynamic_JS] return shieldsquareResponse end
shieldsquare_generate_pid(shieldsquare_sid)
click to toggle source
# File lib/ss2.rb, line 216 def self.shieldsquare_generate_pid(shieldsquare_sid) t=microtime dt=t.split(" ") p = @@sid.split("-") sid_min = p[3].to_i(16) rmstr1=("00000000"+(dt[1].to_i).to_s(16)).split(//).last(4).join("").to_s rmstr2=("0000" + ((dt[0].to_f * 65536).round).to_s(16)).split(//).last(4).join("").to_s return sprintf('%08s-%04x-%04s-%04s-%04x%04x%04x', shieldsquare_IP2Hex(),sid_min,rmstr1,rmstr2,(rand() * 0xffff).to_i,(rand() * 0xffff).to_i,(rand() * 0xffff).to_i) end
shieldsquare_post_async(url, payload, timeout)
click to toggle source
# File lib/ss2.rb, line 185 def self.shieldsquare_post_async(url, payload, timeout) Thread.new do response = shieldsquare_post_sync url, payload, timeout Rails.logger.debug response end return end
shieldsquare_post_sync(url, payload, timeout)
click to toggle source
# File lib/ss2.rb, line 193 def self.shieldsquare_post_sync(url, payload, timeout) # Sendind the Data to the ShieldSquare Server params=payload headers={} headers['Content-Type']='application/json' headers['Accept']='application/json' begin response = HTTParty.post(url, :query => params,:headers => headers, :timeout => timeout) Rails.logger.debug response rescue Exception => e Rails.logger.debug e response=Hash["response"=>0,"output"=>"Request Timed Out/Server Not Reachable"] end return response end