Advertisement
Guest User

Untitled

a guest
Nov 16th, 2016
114
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 5.77 KB | None | 0 0
  1. require 'sinatra'
  2. require 'securerandom'
  3. require 'json'
  4. require 'mysql'
  5.  
  6. require_relative 'captcha_validator'
  7. require_relative 'url_shortner'
  8.  
  9. #enable :sessions
  10. set :environment, :production
  11.  
  12. $DB_HOST = "db4free.net"
  13. $DB_NAME = "vip_converter"
  14. $DB_USERNAME = "mrrobobrain"
  15. $DB_PASS = "Oblivion15"
  16.  
  17. $VALID_EMAIL_REGEX = /\A[\w+\-.]+@[a-z\d\-]+(\.[a-z\d\-]+)*\.[a-z]+\z/i
  18.  
  19. $available_template_videos = ["VIP-plez", "VIP-sing", "VIP-smile"]
  20.  
  21. $output_video_url = "http://pedjaapps.net/filip/output_videos/"
  22. $output_video_path = "/var/www/vhosts/pedjaapps.net/httpdocs/filip/output_videos/"
  23.  
  24. $conversionCount = 0
  25. $conversionMaxCount = 15
  26.  
  27. $conversionQueue = Hash.new
  28.  
  29. get "/" do
  30. return "<h1><center>not found</center></h1>"
  31. #erb:index
  32. end
  33.  
  34. not_found do
  35. status 404
  36. return "<h1><center>not found</center></h1>"
  37. #erb :not_found
  38. end
  39.  
  40. get '/debug_log' do
  41. return "<h1>#{$conversionCount}</h1>"
  42.  
  43. if request.ip != "88.99.14.184"
  44. return "die"
  45. end
  46.  
  47. return "#{$conversionCount} #{$conversionQueue}"
  48. end
  49.  
  50. get '/test' do
  51. test_conversions_total_count = 5
  52. current_conversion = 1
  53. while current_conversion <= test_conversions_total_count
  54. video_name = SecureRandom.urlsafe_base64(16)
  55. while (File.file?("#{$output_video_path}#{video_name}.mp4") == true)
  56. video_name << SecureRandom.urlsafe_base64(4)
  57. end
  58. redirect_on_conversion_finish("pera", video_name, $available_template_videos[0])
  59. current_conversion += 1
  60. end
  61. end
  62.  
  63. post '/process/' do
  64. response.headers['Access-Control-Allow-Origin'] = '*'
  65.  
  66. request_ip = request.ip
  67. recaptcha_response = params[:recaptcha_response] || "null"
  68. if check_captcha(request.ip, recaptcha_response) == false
  69. return_json = JSON.pretty_generate({"user_token"=>"NULL", "status"=> "error_recaptcha", "video_name"=>"NULL"})
  70. return return_json
  71. end
  72.  
  73. message = params[:message] || "null"
  74. template_video_name = params[:template_video_name] || "null"
  75.  
  76. if not $available_template_videos.include? template_video_name
  77. return_json = JSON.pretty_generate({"user_token"=>"NULL", "status"=> "error_template_video_name", "video_name"=> "NULL"})
  78. return return_json
  79. end
  80.  
  81. user_token = SecureRandom.urlsafe_base64(16)
  82. while $conversionQueue.key?(user_token)
  83. user_token << SecureRandom.urlsafe_base64(4)
  84. end
  85.  
  86. video_name = SecureRandom.urlsafe_base64(16)
  87. while (File.file?("#{$output_video_path}#{video_name}.mp4") == true)
  88. video_name << SecureRandom.urlsafe_base64(4)
  89. end
  90.  
  91. if message.to_s == ''
  92. return_json = JSON.pretty_generate({"user_token"=>user_token, "status"=> "error_parameter", "video_name"=> video_name})
  93. return return_json
  94. end
  95.  
  96. if $conversionCount >= $conversionMaxCount
  97. $conversionQueue[user_token] = true
  98. return_json = JSON.pretty_generate({"user_token"=>user_token, "status"=> "waiting_for_queue", "video_name"=> video_name})
  99. return return_json
  100. else
  101. redirect_on_conversion_finish(message, video_name, template_video_name)
  102. $conversionQueue[user_token] = false
  103. return_json = JSON.pretty_generate({"user_token"=>user_token, "status"=> "conversion_in_progress", "video_name"=> video_name})
  104. return return_json
  105. end
  106. end
  107.  
  108.  
  109. get '/is_done' do
  110. response.headers['Access-Control-Allow-Origin'] = '*'
  111.  
  112. message = params[:message] || "null"
  113. user_token = params[:user_token] || "null"
  114. video_name = params[:video_name] || "null"
  115. template_video_name = params[:template_video_name] || "null"
  116.  
  117. if $conversionQueue.key?(user_token) == false || user_token == "null"
  118. return_json = JSON.pretty_generate({"status"=> "error_user_token"})
  119. return return_json
  120. end
  121.  
  122. if not $available_template_videos.include? template_video_name
  123. return_json = JSON.pretty_generate({"user_token"=>"NULL", "status"=> "error_template_video_name", "video_name"=> "NULL"})
  124. return return_json
  125. end
  126.  
  127. if $conversionQueue[user_token] == true
  128. if $conversionCount >= $conversionMaxCount
  129. return_json = JSON.pretty_generate({"status"=> "waiting_for_queue"})
  130. return return_json
  131. else
  132. redirect_on_conversion_finish(message, video_name, template_video_name)
  133. $conversionQueue[user_token] = false
  134. return_json = JSON.pretty_generate({"status"=>"conversion_in_progress"})
  135. return return_json
  136. end
  137. end
  138.  
  139. #if conversion is done
  140. if(File.file?("#{$output_video_path}#{video_name}.lock") == false && File.file?("#{$output_video_path}#{video_name}.mp4") == true)
  141. $conversionQueue.delete(user_token)
  142. video_url = "#{$output_video_url}#{video_name}.mp4"#shorten_url($output_video_url << video_name << ".mp4")
  143. return_json = JSON.pretty_generate({"status"=>"conversion_done", "video_link"=>"<a href='#{video_url}'>#{video_url}</a>"})
  144. return return_json
  145. else
  146. return_json = JSON.pretty_generate({"status"=>"conversion_in_progress"})
  147. return return_json
  148. end
  149. end
  150.  
  151. post '/subscribe/' do
  152. response.headers['Access-Control-Allow-Origin'] = '*'
  153. subscribe_email = params[:subscribe_email] || "null"
  154.  
  155. #if 0, email is valid
  156. if (subscribe_email =~ $VALID_EMAIL_REGEX) == 0
  157. db = Mysql::new($DB_HOST, $DB_USERNAME, $DB_PASS, $DB_NAME)
  158. statement = db.prepare "INSERT INTO `subscriptions` (`subscriptions_id`, `subscriptions_email`) VALUES (null, ?)"
  159. statement.execute subscribe_email
  160. statement.close
  161.  
  162. #result.each do |row|
  163. # puts row[1]
  164. #end
  165. else
  166.  
  167. end
  168. end
  169.  
  170. def convert_video(message, video_name, template_video_name)
  171. output = "0"
  172. cmd = "sh video_on_text.sh '" << message << "' " << video_name << " " << template_video_name << " " << $output_video_path
  173. command = Thread.new do
  174. output = system(cmd)
  175. end
  176. command.join
  177.  
  178. #handle conversion done
  179. $conversionCount -= 1
  180. end
  181.  
  182. def redirect_on_conversion_finish(message, video_name, template_video_name)
  183. $conversionCount += 1
  184.  
  185. command2 = Thread.new do
  186. convert_video(message, video_name, template_video_name)
  187. end
  188. end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement