Advertisement
Narzew

Post Requester 1.1

Jun 10th, 2015
292
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Ruby 3.08 KB | None | 0 0
  1. #=======================================================================
  2. #**Post Requester
  3. #**Copyright 09.06.2015 Narzew
  4. #**v 1.1
  5. #=======================================================================
  6.  
  7. require 'net/http'
  8. require 'uri'
  9.  
  10. module PostRequester
  11.  
  12.     $logfile = "postrequester_log.txt"
  13.     $nolog = false
  14.    
  15.     def self.show_help
  16.         print "Usage: postrequester.rb URL field=value field=value !flag=value\n"
  17.         print "Available flags:\n"
  18.         print "sc=pat - Split center - remove all before first and after second pattern\n"
  19.         print "sr=pat - Split right - remove all before pattern\n"
  20.         print "sl=pat - Split left - remove all after pattern\n"
  21.         print "port=nr - Change port number\n"
  22.         print "nolog=1 - Do not log requests\n"
  23.         print "log=file - Change logfile to file\n"
  24.     end
  25.    
  26.     def self.print_error(x)
  27.         print "Error: #{x}\n"
  28.         self.show_help
  29.     end
  30.    
  31.     def self.to2digit(x)
  32.         if(x.to_i<10)
  33.             return "0#{x}"
  34.         else
  35.             return "#{x}"
  36.         end
  37.     end
  38.    
  39.     def self.return_response(x)
  40.         print "#{x}\n"
  41.         if $nolog == false
  42.             begin
  43.                 resp = "#{self.to2digit(Time.now.day)}-#{self.to2digit(Time.now.month)}-#{self.to2digit(Time.now.year)} #{self.to2digit(Time.now.hour)}:#{self.to2digit(Time.now.min)}:#{self.to2digit(Time.now.sec)} #{ARGV.join(" ")} => #{x}\n"
  44.                 File.open($logfile, "a"){|w| w.write(resp) }
  45.             rescue
  46.                 print "Warning: Failed to log response."
  47.             end
  48.         end
  49.     end
  50.  
  51.     def self.start
  52.         count = 0
  53.         fields = {}
  54.         flags = {}
  55.         ARGV.each{|x|
  56.             if count == 0
  57.                 $url = x
  58.                 count +=1
  59.                 next
  60.             end
  61.             if x.include?("=")
  62.                 data = x.split("=")
  63.                 if data.at(0)[0] == "!"
  64.                      # Field is flag
  65.                     flags[data.at(0).gsub("!","")] = data.at(1)
  66.                 else
  67.                     # Field is key=value field
  68.                     fields[data.at(0)] = data.at(1)
  69.                 end
  70.             else
  71.                 if x.include?("!")
  72.                     flags[x[0].gsub("!","")] = ""
  73.                 else
  74.                     self.print_error("Invalid parameter: "+x)
  75.                     PostRequester.show_help
  76.                 end
  77.             end
  78.             count += 1
  79.         }
  80.        
  81.         # Parse fields
  82.         uri = URI($url)
  83.         if flags.include?("nolog")
  84.             if flags["nolog"] == "0" || flags["nolog"].downcase == "false"
  85.                 $nolog = false
  86.             else
  87.                 $nolog = true
  88.             end
  89.         end
  90.         if flags.include?("log")
  91.             $logfile = flags["log"]
  92.         end
  93.         if flags.include?("clear")
  94.             File.delete($logfile)
  95.         end
  96.         if flags.include?("port")
  97.             https = Net::HTTP.new(uri.host, flags["port"])
  98.         else
  99.             https = Net::HTTP.new(uri.host, uri.port)
  100.         end
  101.         response = https.post($url, URI.encode_www_form(fields))
  102.         result = response.body
  103.         if flags.include?("sc")
  104.             result2 = result.split(flags["sc"])[1].to_s
  105.             result2 = result2.split(flags["sc"])[0].to_s
  106.             self.return_response(result2)
  107.         elsif flags.include?("sl")
  108.             result2 = result.split(flags["sl"])[0].to_s
  109.             self.return_response(result2)
  110.         elsif flags.include?("sr")
  111.             result2 = result.split(flags["sr"])[1].to_s
  112.             self.return_response(result2)
  113.         else
  114.             self.return_response(result)
  115.         end
  116.     end
  117.        
  118. end
  119.  
  120. begin
  121.     if ARGV.size > 1
  122.         $url = ARGV[0]
  123.         PostRequester.start
  124.     else
  125.         PostRequester.show_help
  126.     end
  127. rescue => e
  128.     print "Error: #{e}\n"
  129. end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement