Skip to content

Commit

Permalink
add simple cname logic
Browse files Browse the repository at this point in the history
  • Loading branch information
tka committed Feb 1, 2013
1 parent f0863ce commit 843c3ad
Show file tree
Hide file tree
Showing 2 changed files with 38 additions and 18 deletions.
52 changes: 36 additions & 16 deletions hosting_server/web_hosting.rb
@@ -1,35 +1,34 @@
require "sinatra/base"
require "sinatra/reloader"
require "sinatra/config_file"
require "json"


class WebHosting < Sinatra::Base
configure :development do
register Sinatra::Reloader
end

get "/" do
'<form action="/upload" method="post" enctype="multipart/form-data">
<div>user id: <input name="login" value="myname"> </div>
<div>key: <input name="key"></div>
<div>project: <input name="project" value="my-site" ></div>
<div>file: <input type="file" name="patch_file"></div>
<input type="submit">
</form>'
end
register Sinatra::ConfigFile
config_file 'config.yml'

get "*" do
request.host
end

post "/upload" do
halt 401, "forbidden" if params[:key] != "1234567890"
raise "PLEASE REPALCE THE HARDCODE KEY!"

halt 401, "forbidden" if params[:key] != "1234567890"
# raise "PLEASE REPLACE THE KEY"
Dir.chdir( File.dirname(__FILE__) )
tempfile_path = params[:patch_file][:tempfile].path
project_folder = File.join(File.dirname(__FILE__), "user_sites", params[:login], params[:project])
project_folder = File.join( settings.base_folder, params[:login], params[:project])
project_folder = File.expand_path(project_folder)

FileUtils.mkdir_p(project_folder)
Dir.chdir(project_folder )


to_folder = Time.now.strftime("%Y%m%d%H%M%S")
to_folder = File.expand_path( Time.now.strftime("%Y%m%d%H%M%S") )
FileUtils.mkdir(to_folder)
FileUtils.cp(tempfile_path, File.join(to_folder, "_patch.zip"))
Dir.chdir(to_folder)
Expand All @@ -52,10 +51,31 @@ class WebHosting < Sinatra::Base
end
end
FileUtils.rm("_patch.zip")

Dir.chdir( project_folder )
File.unlink("current")
File.unlink("current") if File.exists?("current")
File.symlink(to_folder, "current")

cname_filepath = File.join('current', 'CNAME')
if File.file?(cname_filepath)
cname = open(cname_filepath, 'r'){|f| f.gets.strip}
puts cname
begin
dns = Resolv::DNS.new
target_name = dns.getresources(cname, Resolv::DNS::Resource::IN::CNAME).first.try(:name)
allow_cname = "#{params[:project]}.#{params[:login]}.#{settings.cname_domain}"
if target_name && target_name.to_s == allow_cname
Dir.chdir(File.dirname(__FILE__))
target_cname_folder = File.join(settings.cname_folder, cname)
puts target_cname_folder
puts File.exists?( target_cname_folder).inspect
puts File.symlink?( target_cname_folder).inspect

File.unlink( target_cname_folder ) if File.exists?( target_cname_folder) || File.symlink?(target_cname_folder)
File.symlink(to_folder, target_cname_folder)
end
rescue
end
end
"ok"
end

Expand Down
4 changes: 2 additions & 2 deletions src/compile_version.rb
@@ -1,5 +1,5 @@
module CompileVersion
REVISION = 'd9d5da3996'
COMPILE_TIME = '201301302000'
REVISION = 'f0863ce247'
COMPILE_TIME = '201302011138'
UPDATE_URL = ''
end

0 comments on commit 843c3ad

Please sign in to comment.