Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- require 'sinatra'
- require 'securerandom'
- require 'json'
- require 'mysql'
- require_relative 'captcha_validator'
- require_relative 'url_shortner'
- #enable :sessions
- set :environment, :production
- $DB_HOST = "db4free.net"
- $DB_NAME = "vip_converter"
- $DB_USERNAME = "mrrobobrain"
- $DB_PASS = "Oblivion15"
- $VALID_EMAIL_REGEX = /\A[\w+\-.]+@[a-z\d\-]+(\.[a-z\d\-]+)*\.[a-z]+\z/i
- $available_template_videos = ["VIP-plez", "VIP-sing", "VIP-smile"]
- $output_video_url = "http://pedjaapps.net/filip/output_videos/"
- $output_video_path = "/var/www/vhosts/pedjaapps.net/httpdocs/filip/output_videos/"
- $conversionCount = 0
- $conversionMaxCount = 15
- $conversionQueue = Hash.new
- get "/" do
- return "<h1><center>not found</center></h1>"
- #erb:index
- end
- not_found do
- status 404
- return "<h1><center>not found</center></h1>"
- #erb :not_found
- end
- get '/debug_log' do
- return "<h1>#{$conversionCount}</h1>"
- if request.ip != "88.99.14.184"
- return "die"
- end
- return "#{$conversionCount} #{$conversionQueue}"
- end
- get '/test' do
- test_conversions_total_count = 5
- current_conversion = 1
- while current_conversion <= test_conversions_total_count
- video_name = SecureRandom.urlsafe_base64(16)
- while (File.file?("#{$output_video_path}#{video_name}.mp4") == true)
- video_name << SecureRandom.urlsafe_base64(4)
- end
- redirect_on_conversion_finish("pera", video_name, $available_template_videos[0])
- current_conversion += 1
- end
- end
- post '/process/' do
- response.headers['Access-Control-Allow-Origin'] = '*'
- request_ip = request.ip
- recaptcha_response = params[:recaptcha_response] || "null"
- if check_captcha(request.ip, recaptcha_response) == false
- return_json = JSON.pretty_generate({"user_token"=>"NULL", "status"=> "error_recaptcha", "video_name"=>"NULL"})
- return return_json
- end
- message = params[:message] || "null"
- template_video_name = params[:template_video_name] || "null"
- if not $available_template_videos.include? template_video_name
- return_json = JSON.pretty_generate({"user_token"=>"NULL", "status"=> "error_template_video_name", "video_name"=> "NULL"})
- return return_json
- end
- user_token = SecureRandom.urlsafe_base64(16)
- while $conversionQueue.key?(user_token)
- user_token << SecureRandom.urlsafe_base64(4)
- end
- video_name = SecureRandom.urlsafe_base64(16)
- while (File.file?("#{$output_video_path}#{video_name}.mp4") == true)
- video_name << SecureRandom.urlsafe_base64(4)
- end
- if message.to_s == ''
- return_json = JSON.pretty_generate({"user_token"=>user_token, "status"=> "error_parameter", "video_name"=> video_name})
- return return_json
- end
- if $conversionCount >= $conversionMaxCount
- $conversionQueue[user_token] = true
- return_json = JSON.pretty_generate({"user_token"=>user_token, "status"=> "waiting_for_queue", "video_name"=> video_name})
- return return_json
- else
- redirect_on_conversion_finish(message, video_name, template_video_name)
- $conversionQueue[user_token] = false
- return_json = JSON.pretty_generate({"user_token"=>user_token, "status"=> "conversion_in_progress", "video_name"=> video_name})
- return return_json
- end
- end
- get '/is_done' do
- response.headers['Access-Control-Allow-Origin'] = '*'
- message = params[:message] || "null"
- user_token = params[:user_token] || "null"
- video_name = params[:video_name] || "null"
- template_video_name = params[:template_video_name] || "null"
- if $conversionQueue.key?(user_token) == false || user_token == "null"
- return_json = JSON.pretty_generate({"status"=> "error_user_token"})
- return return_json
- end
- if not $available_template_videos.include? template_video_name
- return_json = JSON.pretty_generate({"user_token"=>"NULL", "status"=> "error_template_video_name", "video_name"=> "NULL"})
- return return_json
- end
- if $conversionQueue[user_token] == true
- if $conversionCount >= $conversionMaxCount
- return_json = JSON.pretty_generate({"status"=> "waiting_for_queue"})
- return return_json
- else
- redirect_on_conversion_finish(message, video_name, template_video_name)
- $conversionQueue[user_token] = false
- return_json = JSON.pretty_generate({"status"=>"conversion_in_progress"})
- return return_json
- end
- end
- #if conversion is done
- if(File.file?("#{$output_video_path}#{video_name}.lock") == false && File.file?("#{$output_video_path}#{video_name}.mp4") == true)
- $conversionQueue.delete(user_token)
- video_url = "#{$output_video_url}#{video_name}.mp4"#shorten_url($output_video_url << video_name << ".mp4")
- return_json = JSON.pretty_generate({"status"=>"conversion_done", "video_link"=>"<a href='#{video_url}'>#{video_url}</a>"})
- return return_json
- else
- return_json = JSON.pretty_generate({"status"=>"conversion_in_progress"})
- return return_json
- end
- end
- post '/subscribe/' do
- response.headers['Access-Control-Allow-Origin'] = '*'
- subscribe_email = params[:subscribe_email] || "null"
- #if 0, email is valid
- if (subscribe_email =~ $VALID_EMAIL_REGEX) == 0
- db = Mysql::new($DB_HOST, $DB_USERNAME, $DB_PASS, $DB_NAME)
- statement = db.prepare "INSERT INTO `subscriptions` (`subscriptions_id`, `subscriptions_email`) VALUES (null, ?)"
- statement.execute subscribe_email
- statement.close
- #result.each do |row|
- # puts row[1]
- #end
- else
- end
- end
- def convert_video(message, video_name, template_video_name)
- output = "0"
- cmd = "sh video_on_text.sh '" << message << "' " << video_name << " " << template_video_name << " " << $output_video_path
- command = Thread.new do
- output = system(cmd)
- end
- command.join
- #handle conversion done
- $conversionCount -= 1
- end
- def redirect_on_conversion_finish(message, video_name, template_video_name)
- $conversionCount += 1
- command2 = Thread.new do
- convert_video(message, video_name, template_video_name)
- end
- end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement