Merge server and rails_3_1
This commit is contained in:
parent
d2c2e174ac
commit
86443661e9
45
:q
45
:q
|
@ -1,45 +0,0 @@
|
||||||
<%= stylesheet_link_tag "design_temp" %>
|
|
||||||
<%= javascript_include_tag "design_temp" %>
|
|
||||||
<p>
|
|
||||||
<%= f.label :title, t('admin.title') %>
|
|
||||||
<%= f.text_field :title, :class => 'text' %>
|
|
||||||
</p>
|
|
||||||
|
|
||||||
<p>
|
|
||||||
<%= f.label :author, t('admin.author') %>
|
|
||||||
<%= f.text_field :author, :class => 'text' %>
|
|
||||||
</p>
|
|
||||||
|
|
||||||
<p>
|
|
||||||
<%= f.label :intro, t('admin.intro') %>
|
|
||||||
<%= f.text_field :intro, :class => 'text' %>
|
|
||||||
</p>
|
|
||||||
|
|
||||||
<p>
|
|
||||||
<%= f.label "layout", t('admin.layout') %>
|
|
||||||
<% if @design.layout.blank? %>
|
|
||||||
<%= f.file_field :layout_file %>
|
|
||||||
<% else%>
|
|
||||||
<% debugger %>
|
|
||||||
<%= File.basename (@design.layout.url) %>
|
|
||||||
<% end %>
|
|
||||||
</p>
|
|
||||||
<p>
|
|
||||||
<%= f.label "structure_css", t('admin.structure_css') %>
|
|
||||||
<% if @design.structure_css.blank? %>
|
|
||||||
<%= f.file_field :structure_css %>
|
|
||||||
<% else%>
|
|
||||||
<%= File.basename (Design.all.last.structure_css.url) %>
|
|
||||||
<% end %>
|
|
||||||
</p>
|
|
||||||
<p>
|
|
||||||
<%= render :partial => 'design_file' ,:locals => { :fieldname=>"themes",:object=>@design ,:f=>f,:rtype=>'stylesheets',:item_destroy=>true,:item_editable=>true } %>
|
|
||||||
</p>
|
|
||||||
|
|
||||||
<p>
|
|
||||||
<%= render :partial => 'design_file' ,:locals => { :fieldname=>"javascript",:object=>@design ,:f=>f,:rtype=>'javascripts' ,:item_destroy=>true,:item_editable=>true} %>
|
|
||||||
</p>
|
|
||||||
|
|
||||||
<p>
|
|
||||||
<%= render :partial => 'design_file' ,:locals => { :fieldname=>"image",:object=>@design ,:f=>f,:rtype=>'images' ,:item_destroy=>true,:item_snapshot=>true} %>
|
|
||||||
</p>
|
|
1
Gemfile
1
Gemfile
|
@ -9,6 +9,7 @@ gem 'ckeditor'
|
||||||
gem 'devise'
|
gem 'devise'
|
||||||
gem 'mini_magick'
|
gem 'mini_magick'
|
||||||
gem 'rubyzip'
|
gem 'rubyzip'
|
||||||
|
gem 'sinatra'
|
||||||
|
|
||||||
gem 'mongoid'
|
gem 'mongoid'
|
||||||
|
|
||||||
|
|
|
@ -131,6 +131,9 @@ GEM
|
||||||
archive-tar-minitar (>= 0.5.2)
|
archive-tar-minitar (>= 0.5.2)
|
||||||
rubyzip (0.9.4)
|
rubyzip (0.9.4)
|
||||||
shoulda-matchers (1.0.0.beta2)
|
shoulda-matchers (1.0.0.beta2)
|
||||||
|
sinatra (1.2.6)
|
||||||
|
rack (~> 1.1)
|
||||||
|
tilt (>= 1.2.2, < 2.0)
|
||||||
sprockets (2.0.0.beta.10)
|
sprockets (2.0.0.beta.10)
|
||||||
hike (~> 1.0)
|
hike (~> 1.0)
|
||||||
rack (~> 1.0)
|
rack (~> 1.0)
|
||||||
|
@ -168,5 +171,6 @@ DEPENDENCIES
|
||||||
ruby-debug19
|
ruby-debug19
|
||||||
rubyzip
|
rubyzip
|
||||||
shoulda-matchers
|
shoulda-matchers
|
||||||
|
sinatra
|
||||||
watchr
|
watchr
|
||||||
yajl-ruby
|
yajl-ruby
|
||||||
|
|
|
@ -0,0 +1,88 @@
|
||||||
|
class Admin::PurchasesController < ApplicationController
|
||||||
|
require "net/http"
|
||||||
|
require "uri"
|
||||||
|
require 'zip/zip'
|
||||||
|
|
||||||
|
def index
|
||||||
|
@purchases = Purchase.all.entries
|
||||||
|
end
|
||||||
|
|
||||||
|
def download
|
||||||
|
@purchase = Purchase.first(:conditions => {:id => params[:id]})
|
||||||
|
download_purchase(@purchase, request.env['REQUEST_URI'].split('admin')[0].chop)
|
||||||
|
@purchase.downloaded = true
|
||||||
|
@purchase.save
|
||||||
|
redirect_to admin_purchases_url
|
||||||
|
end
|
||||||
|
|
||||||
|
protected
|
||||||
|
|
||||||
|
def download_purchase(purchase, url)
|
||||||
|
uri = URI.parse("http://localhost:3001/download/design")
|
||||||
|
http = Net::HTTP.new(uri.host, uri.port)
|
||||||
|
request = Net::HTTP::Post.new(uri.request_uri)
|
||||||
|
|
||||||
|
public_key = OpenSSL::PKey::RSA.new(File.read(APP_CONFIG['main_public_key']))
|
||||||
|
encrypted_data = public_key.public_encrypt({:purchase_id => purchase.purchase_id,
|
||||||
|
:roaming_id => Site.find(session[:site]).roaming_id,
|
||||||
|
:url => url}.to_json)
|
||||||
|
|
||||||
|
request.set_form_data({ :purchase => encrypted_data})
|
||||||
|
response = http.request(request)
|
||||||
|
temp_file = Tempfile.new("temp_file")
|
||||||
|
temp_file.binmode
|
||||||
|
temp_file.write response.body
|
||||||
|
temp_file.rewind
|
||||||
|
zip_name = response['content-disposition'].split('filename=')[1].gsub(/[\\\"]|.zip/, '') rescue ''
|
||||||
|
debugger
|
||||||
|
unzip_design(temp_file, zip_name)
|
||||||
|
temp_file.close
|
||||||
|
temp_file.unlink
|
||||||
|
end
|
||||||
|
|
||||||
|
def unzip_design(file, zip_name)
|
||||||
|
Zip::ZipFile.open(file) do |zip_file|
|
||||||
|
encrypted = {}
|
||||||
|
['encrypted_data', 'encrypted_key', 'encrypted_iv'].each do |e|
|
||||||
|
encrypted.merge!(e => zip_file.read(e))
|
||||||
|
end
|
||||||
|
orig_file = decrypt_data(encrypted['encrypted_data'], encrypted['encrypted_key'], encrypted['encrypted_iv'])
|
||||||
|
|
||||||
|
temp_file = Tempfile.new("temp_file_zip")
|
||||||
|
temp_file.binmode
|
||||||
|
temp_file.write orig_file
|
||||||
|
temp_file.rewind
|
||||||
|
|
||||||
|
Zip::ZipFile.open(temp_file) { |orig_zip|
|
||||||
|
design = Design.new.from_json(orig_zip.read("#{zip_name}/#{zip_name}.json"))
|
||||||
|
Dir.mktmpdir('f_path') { |dir|
|
||||||
|
|
||||||
|
title = design.layout.file_filename
|
||||||
|
temp = File.new(dir + '/' + title, 'w+')
|
||||||
|
temp.write orig_zip.read(zip_name + '/' + title)
|
||||||
|
design.layout.file = temp
|
||||||
|
|
||||||
|
title = design.structure_css_filename
|
||||||
|
temp = File.new(dir + '/' + title, 'w+')
|
||||||
|
temp.write orig_zip.read(zip_name + '/' + title)
|
||||||
|
design.layout.file = temp
|
||||||
|
|
||||||
|
['themes', 'javascripts', 'images'].each do |type|
|
||||||
|
eval("design.#{type}").each do |object|
|
||||||
|
title = object.file_filename
|
||||||
|
temp = File.new(dir + '/' + title, 'w+')
|
||||||
|
temp.write orig_zip.read(zip_name + '/' + type + '/' + title)
|
||||||
|
object.file = temp
|
||||||
|
object.to_save = true
|
||||||
|
end
|
||||||
|
end
|
||||||
|
}
|
||||||
|
temp_file.close
|
||||||
|
temp_file.unlink
|
||||||
|
design.save
|
||||||
|
}
|
||||||
|
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
end
|
|
@ -25,6 +25,8 @@ class ApplicationController < ActionController::Base
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
protected
|
||||||
|
|
||||||
# Set I18n.locale
|
# Set I18n.locale
|
||||||
def set_locale
|
def set_locale
|
||||||
# update session if passed
|
# update session if passed
|
||||||
|
@ -55,5 +57,21 @@ class ApplicationController < ActionController::Base
|
||||||
def set_current_item
|
def set_current_item
|
||||||
session[:current_page] = params[:id] || @item.id rescue nil
|
session[:current_page] = params[:id] || @item.id rescue nil
|
||||||
end
|
end
|
||||||
|
|
||||||
|
def decrypt_data(encrypted_data, encrypted_key, encrypted_iv)
|
||||||
|
site = Site.find(session[:site])
|
||||||
|
if encrypted_data
|
||||||
|
private_key = OpenSSL::PKey::RSA.new(site.private_key)
|
||||||
|
cipher = OpenSSL::Cipher.new('aes-256-cbc')
|
||||||
|
cipher.decrypt
|
||||||
|
cipher.key = private_key.private_decrypt(encrypted_key)
|
||||||
|
cipher.iv = private_key.private_decrypt(encrypted_iv)
|
||||||
|
|
||||||
|
decrypted_data = cipher.update(encrypted_data)
|
||||||
|
decrypted_data << cipher.final
|
||||||
|
else
|
||||||
|
''
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
end
|
end
|
||||||
|
|
|
@ -0,0 +1,16 @@
|
||||||
|
require 'mongo'
|
||||||
|
|
||||||
|
class GridfsController < ActionController::Metal
|
||||||
|
def serve
|
||||||
|
gridfs_path = env["PATH_INFO"].gsub("/gridfs/", "")
|
||||||
|
begin
|
||||||
|
gridfs_file = Mongo::GridFileSystem.new(Mongoid.database).open(gridfs_path, 'r')
|
||||||
|
self.response_body = gridfs_file.read
|
||||||
|
self.content_type = gridfs_file.content_type
|
||||||
|
rescue
|
||||||
|
self.status = :file_not_found
|
||||||
|
self.content_type = 'text/plain'
|
||||||
|
self.response_body = ''
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
|
@ -4,11 +4,7 @@ class SitesController < ApplicationController
|
||||||
|
|
||||||
def index
|
def index
|
||||||
@site = Site.first
|
@site = Site.first
|
||||||
if @site
|
redirect_to :action => :new unless @site
|
||||||
@title = "site"
|
|
||||||
else
|
|
||||||
redirect_to :action => :new
|
|
||||||
end
|
|
||||||
end
|
end
|
||||||
|
|
||||||
def new
|
def new
|
||||||
|
|
|
@ -0,0 +1,3 @@
|
||||||
|
class PDesign < Purchase
|
||||||
|
|
||||||
|
end
|
|
@ -0,0 +1,11 @@
|
||||||
|
class Purchase
|
||||||
|
include Mongoid::Document
|
||||||
|
include Mongoid::Timestamps
|
||||||
|
|
||||||
|
field :purchase_id
|
||||||
|
field :title
|
||||||
|
field :author
|
||||||
|
field :intro
|
||||||
|
field :downloaded
|
||||||
|
|
||||||
|
end
|
|
@ -6,4 +6,21 @@ class Site
|
||||||
field :in_use_locales, :type => Array
|
field :in_use_locales, :type => Array
|
||||||
field :valid_locales, :type => Array
|
field :valid_locales, :type => Array
|
||||||
|
|
||||||
|
field :roaming_id
|
||||||
|
field :private_key, :type => Binary
|
||||||
|
field :public_key, :type => Binary
|
||||||
|
|
||||||
|
field :school
|
||||||
|
field :department
|
||||||
|
|
||||||
|
def generate_keys
|
||||||
|
private_key = OpenSSL::PKey::RSA.generate(2048)
|
||||||
|
self.public_key = private_key.public_key.to_s
|
||||||
|
self.private_key = private_key.to_s
|
||||||
|
end
|
||||||
|
|
||||||
|
def registered?
|
||||||
|
!self.roaming_id.blank?
|
||||||
|
end
|
||||||
|
|
||||||
end
|
end
|
||||||
|
|
|
@ -0,0 +1,10 @@
|
||||||
|
<% @purchases.each do |purchase| %>
|
||||||
|
<%= purchase.title %> |
|
||||||
|
<%= purchase.intro %> |
|
||||||
|
<%= purchase.author %> |
|
||||||
|
<% if purchase.downloaded %>
|
||||||
|
Downloaded
|
||||||
|
<% else %>
|
||||||
|
<%= link_to 'Download', download_admin_purchase_path(purchase) %>
|
||||||
|
<% end %>
|
||||||
|
<% end %>
|
|
@ -51,12 +51,6 @@
|
||||||
<p>Rulingcom</p>
|
<p>Rulingcom</p>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<%= javascript_include_tag "jquery",
|
|
||||||
"jquery-ui",
|
|
||||||
"rails",
|
|
||||||
"easy",
|
|
||||||
"application", :cache => 'all' %>
|
|
||||||
<%= yield :page_specific_javascript %>
|
<%= yield :page_specific_javascript %>
|
||||||
</body>
|
</body>
|
||||||
</html>
|
</html>
|
||||||
|
|
|
@ -5,12 +5,8 @@
|
||||||
<title>R4</title>
|
<title>R4</title>
|
||||||
<link rel="shortcut icon" href="/favicon.ico">
|
<link rel="shortcut icon" href="/favicon.ico">
|
||||||
<%= yield :page_specific_link %>
|
<%= yield :page_specific_link %>
|
||||||
<%= stylesheet_link_tag "easy", "main", "devise", :media => "screen, projection" %>
|
<%= stylesheet_link_tag "application" %>
|
||||||
<%= stylesheet_link_tag "easyprint", :media => "print" %>
|
<%= javascript_include_tag "application" %>
|
||||||
<!--[if IE]>
|
|
||||||
<%= stylesheet_link_tag "ie", :media => "screen, projection" %>
|
|
||||||
<![endif]-->
|
|
||||||
<%= yield :page_specific_css %>
|
|
||||||
<%= csrf_meta_tag %>
|
<%= csrf_meta_tag %>
|
||||||
</head>
|
</head>
|
||||||
<body>
|
<body>
|
||||||
|
@ -36,12 +32,6 @@
|
||||||
<p>Rulingcom</p>
|
<p>Rulingcom</p>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<%#= javascript_include_tag "jquery",
|
|
||||||
"jquery-ui",
|
|
||||||
"rails",
|
|
||||||
"easy",
|
|
||||||
"application", :cache => 'all' %>
|
|
||||||
<%= yield :page_specific_javascript %>
|
<%= yield :page_specific_javascript %>
|
||||||
</body>
|
</body>
|
||||||
</html>
|
</html>
|
||||||
|
|
|
@ -5,13 +5,8 @@
|
||||||
<title>R4</title>
|
<title>R4</title>
|
||||||
<link rel="shortcut icon" href="/favicon.ico">
|
<link rel="shortcut icon" href="/favicon.ico">
|
||||||
<%= yield :page_specific_link %>
|
<%= yield :page_specific_link %>
|
||||||
<%= stylesheet_link_tag "rulingcom/easy", :media => "screen, projection" %>
|
<%= stylesheet_link_tag "application" %>
|
||||||
<%= stylesheet_link_tag "rulingcom/easyprint", :media => "print" %>
|
<%= javascript_include_tag "application" %>
|
||||||
<%= stylesheet_link_tag "application", :media => "screen, projection" %>
|
|
||||||
<!--[if IE]>
|
|
||||||
<%= stylesheet_link_tag "ie", :media => "screen, projection" %>
|
|
||||||
<![endif]-->
|
|
||||||
<%= yield :page_specific_css %>
|
|
||||||
<%= csrf_meta_tag %>
|
<%= csrf_meta_tag %>
|
||||||
</head>
|
</head>
|
||||||
<body>
|
<body>
|
||||||
|
@ -46,12 +41,6 @@
|
||||||
<p>Rulingcom</p>
|
<p>Rulingcom</p>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<%= javascript_include_tag "jquery",
|
|
||||||
"jquery-ui",
|
|
||||||
"rails",
|
|
||||||
"easy",
|
|
||||||
"application", :cache => 'all' %>
|
|
||||||
<%= yield :page_specific_javascript %>
|
<%= yield :page_specific_javascript %>
|
||||||
</body>
|
</body>
|
||||||
</html>
|
</html>
|
||||||
|
|
|
@ -1 +1,7 @@
|
||||||
<%= @title %>
|
<% if @site && @site.registered? %>
|
||||||
|
registered
|
||||||
|
<% else %>
|
||||||
|
<%= link_to 'register', 'http://localhost:3001/user/sites/register?' +
|
||||||
|
{:site => {:school => @site.school, :department => @site.department}}.to_query,
|
||||||
|
:target => '_blank' %>
|
||||||
|
<% end %>
|
|
@ -24,8 +24,11 @@ module PrototypeR4
|
||||||
|
|
||||||
# Custom directories with classes and modules you want to be autoloadable.
|
# Custom directories with classes and modules you want to be autoloadable.
|
||||||
# config.autoload_paths += %W(#{config.root}/extras)
|
# config.autoload_paths += %W(#{config.root}/extras)
|
||||||
config.autoload_paths = %W(#{config.root}/lib)
|
config.autoload_paths += %W(#{config.root}/lib)
|
||||||
config.autoload_paths += %W( #{config.root}/app/models/ckeditor )
|
config.autoload_paths += %W( #{config.root}/app/models/ckeditor )
|
||||||
|
config.autoload_paths += %W(#{config.root}/app/models/design)
|
||||||
|
config.autoload_paths += %W(#{config.root}/app/models/purchase)
|
||||||
|
config.autoload_paths += %W(#{config.root}/app/models/user)
|
||||||
|
|
||||||
# Only load the plugins named here, in the order given (default is alphabetical).
|
# Only load the plugins named here, in the order given (default is alphabetical).
|
||||||
# :all can be used as a placeholder for all plugins not explicitly named.
|
# :all can be used as a placeholder for all plugins not explicitly named.
|
||||||
|
@ -53,7 +56,7 @@ module PrototypeR4
|
||||||
config.filter_parameters += [:password]
|
config.filter_parameters += [:password]
|
||||||
|
|
||||||
# Enable the asset pipeline
|
# Enable the asset pipeline
|
||||||
config.assets.enabled = false
|
config.assets.enabled = true
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
|
@ -0,0 +1,5 @@
|
||||||
|
defaults: &defaults
|
||||||
|
main_public_key: 'lib/main_public_key.pem'
|
||||||
|
|
||||||
|
development:
|
||||||
|
<<: *defaults
|
|
@ -0,0 +1 @@
|
||||||
|
APP_CONFIG = YAML.load_file("#{Rails.root}/config/config.yml")[Rails.env]
|
|
@ -2,48 +2,16 @@ PrototypeR4::Application.routes.draw do
|
||||||
|
|
||||||
devise_for :users
|
devise_for :users
|
||||||
|
|
||||||
# The priority is based upon order of creation:
|
|
||||||
# first created -> highest priority.
|
|
||||||
|
|
||||||
# Sample of regular route:
|
|
||||||
# match 'products/:id' => 'catalog#view'
|
|
||||||
# Keep in mind you can assign values other than :controller and :action
|
|
||||||
|
|
||||||
# Sample of named route:
|
|
||||||
# match 'products/:id/purchase' => 'catalog#purchase', :as => :purchase
|
|
||||||
# This route can be invoked with purchase_url(:id => product.id)
|
|
||||||
|
|
||||||
# Sample resource route (maps HTTP verbs to controller actions automatically):
|
|
||||||
# resources :products
|
|
||||||
resources :sites
|
resources :sites
|
||||||
|
|
||||||
# Sample resource route with options:
|
# routes for sinatra app
|
||||||
# resources :products do
|
match '/site/set_registered', :to => CentralServerExchangeApp
|
||||||
# member do
|
match '/site/public_key', :to => CentralServerExchangeApp
|
||||||
# get 'short'
|
match '/purchase/design', :to => CentralServerExchangeApp
|
||||||
# post 'toggle'
|
|
||||||
# end
|
# routes for admin
|
||||||
#
|
|
||||||
# collection do
|
|
||||||
# get 'sold'
|
|
||||||
# end
|
|
||||||
# end
|
|
||||||
|
|
||||||
# Sample resource route with sub-resources:
|
|
||||||
# resources :products do
|
|
||||||
# resources :comments, :sales
|
|
||||||
# resource :seller
|
|
||||||
# end
|
|
||||||
namespace :admin do
|
namespace :admin do
|
||||||
resources :assets
|
resources :assets
|
||||||
resources :items do
|
|
||||||
member do
|
|
||||||
put :up
|
|
||||||
put :down
|
|
||||||
end
|
|
||||||
|
|
||||||
end
|
|
||||||
resources :layouts
|
|
||||||
resources :designs do
|
resources :designs do
|
||||||
get 'upload_package' ,:on => :collection
|
get 'upload_package' ,:on => :collection
|
||||||
post 'upload_package' ,:on => :collection
|
post 'upload_package' ,:on => :collection
|
||||||
|
@ -52,7 +20,8 @@ PrototypeR4::Application.routes.draw do
|
||||||
get 'delete'
|
get 'delete'
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
resources :items
|
||||||
|
resources :layouts
|
||||||
resources :links do
|
resources :links do
|
||||||
member do
|
member do
|
||||||
get 'delete'
|
get 'delete'
|
||||||
|
@ -64,59 +33,31 @@ PrototypeR4::Application.routes.draw do
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
resources :page_parts
|
resources :page_parts
|
||||||
|
resources :purchases do
|
||||||
|
member do
|
||||||
|
get 'download'
|
||||||
|
end
|
||||||
|
end
|
||||||
resources :homes
|
resources :homes
|
||||||
resources :snippets
|
resources :snippets
|
||||||
resources :translations
|
resources :translations
|
||||||
resources :user_info_models
|
resources :user_info_models
|
||||||
resources :user_role_models
|
resources :user_role_models
|
||||||
end
|
end
|
||||||
|
# end admin
|
||||||
|
|
||||||
namespace :panel do
|
namespace :panel do
|
||||||
resources :users
|
resources :users
|
||||||
end
|
end
|
||||||
|
|
||||||
# Patch Mongo::GridIO to contain an each method.
|
# routes for gridfs files
|
||||||
require File.join Rails.root, 'lib/grid_io'
|
match "/gridfs/*path" => "gridfs#serve"
|
||||||
Mongo::GridIO.send(:include, PrototypeR4::GridIO)
|
|
||||||
match "/gridfs/*path", :via => :get, :to => proc { |env|
|
|
||||||
gridfs_path = env["PATH_INFO"].gsub("/gridfs/", "")
|
|
||||||
begin
|
|
||||||
gridfs_file = Mongo::GridFileSystem.new(Mongoid.database).open(gridfs_path, 'r')
|
|
||||||
[ 200, { 'Content-Type' => gridfs_file.content_type, 'Content-Length' => gridfs_file.file_length.to_s }, gridfs_file ]
|
|
||||||
rescue
|
|
||||||
message = 'Grid file not found.'
|
|
||||||
[ 404, { 'Content-Type' => 'text/plain', 'Content-Length' => message.size.to_s }, message ]
|
|
||||||
end
|
|
||||||
}
|
|
||||||
|
|
||||||
|
# routes for pages to generate
|
||||||
match '*page_name' => 'pages#show', :as => :page, :constraints => lambda{|request|
|
match '*page_name' => 'pages#show', :as => :page, :constraints => lambda{|request|
|
||||||
!request.path.starts_with?("/panel")
|
!request.path.starts_with?("/panel")
|
||||||
}
|
}
|
||||||
|
|
||||||
# Sample resource route with more complex sub-resources
|
|
||||||
# resources :products do
|
|
||||||
# resources :comments
|
|
||||||
# resources :sales do
|
|
||||||
# get 'recent', :on => :collection
|
|
||||||
# end
|
|
||||||
# end
|
|
||||||
|
|
||||||
# Sample resource route within a namespace:
|
|
||||||
# namespace :admin do
|
|
||||||
# # Directs /admin/products/* to Admin::ProductsController
|
|
||||||
# # (app/controllers/admin/products_controller.rb)
|
|
||||||
# resources :products
|
|
||||||
# end
|
|
||||||
|
|
||||||
# You can have the root of your site routed with "root"
|
|
||||||
# just remember to delete public/index.html.
|
|
||||||
# root :to => "welcome#index"
|
|
||||||
root :to => 'pages#index'
|
root :to => 'pages#index'
|
||||||
|
|
||||||
# See how all your routes lay out with "rake routes"
|
|
||||||
|
|
||||||
# This is a legacy wild controller route that's not recommended for RESTful applications.
|
|
||||||
# Note: This route will make all actions in every controller accessible via GET requests.
|
|
||||||
# match ':controller(/:action(/:id(.:format)))'
|
|
||||||
|
|
||||||
end
|
end
|
||||||
|
|
|
@ -0,0 +1,42 @@
|
||||||
|
class CentralServerExchangeApp < Sinatra::Base
|
||||||
|
|
||||||
|
before do
|
||||||
|
@site = Site.first
|
||||||
|
end
|
||||||
|
|
||||||
|
|
||||||
|
post "/site/set_registered" do
|
||||||
|
begin
|
||||||
|
private_key = OpenSSL::PKey::RSA.new(@site.private_key)
|
||||||
|
roaming_id = private_key.private_decrypt(request.params['roaming_id'])
|
||||||
|
@site.update_attributes(:roaming_id => roaming_id)
|
||||||
|
body 'true'
|
||||||
|
rescue
|
||||||
|
body 'false'
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
get '/site/public_key' do
|
||||||
|
begin
|
||||||
|
if @site.public_key.nil?
|
||||||
|
@site.generate_keys
|
||||||
|
@site.save
|
||||||
|
end
|
||||||
|
body @site.public_key
|
||||||
|
rescue
|
||||||
|
body 'false'
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
post '/purchase/design' do
|
||||||
|
begin
|
||||||
|
private_key = OpenSSL::PKey::RSA.new(@site.private_key)
|
||||||
|
design = PDesign.new.from_json(private_key.private_decrypt(request.params['purchase']))
|
||||||
|
design.save
|
||||||
|
body 'true'
|
||||||
|
rescue
|
||||||
|
body 'false'
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
end
|
|
@ -1,22 +0,0 @@
|
||||||
require 'mongo'
|
|
||||||
|
|
||||||
module PrototypeR4
|
|
||||||
module GridIO
|
|
||||||
|
|
||||||
def self.included(base)
|
|
||||||
base.class_eval do
|
|
||||||
|
|
||||||
def size
|
|
||||||
(file_length / chunk_size) + (file_length % chunk_size > 0 ? 1 : 0)
|
|
||||||
end
|
|
||||||
|
|
||||||
def each(&block)
|
|
||||||
size.times { block.call(read(chunk_size)) }
|
|
||||||
end
|
|
||||||
|
|
||||||
end
|
|
||||||
end
|
|
||||||
|
|
||||||
end
|
|
||||||
end
|
|
||||||
|
|
|
@ -1,7 +0,0 @@
|
||||||
module LayoutSupport
|
|
||||||
|
|
||||||
def layout
|
|
||||||
Layout.find_by_name(self.layout_name)
|
|
||||||
end
|
|
||||||
|
|
||||||
end
|
|
|
@ -0,0 +1,9 @@
|
||||||
|
-----BEGIN PUBLIC KEY-----
|
||||||
|
MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA0ymPDAHpTOtg0xs1D8Uz
|
||||||
|
8k6Vyzb4NeTZ2R/5KkG0HxQr6aseuzJPs6BO1/txTBrKgjsDH1r6HfTIQTtKf+dI
|
||||||
|
xKAzhwf913iofUmWCjDuOJw9yPd1LtY97xPTVI8UdZqztIbgKfGTNt81bV8/Q/0Z
|
||||||
|
Cr9E0PeP4AZbspuFwiDXe0ZfqfTfJDSLQDTUi1BgJgSydzpn1fqAVnxLY87Kq4sc
|
||||||
|
2SIdALGrmxDOquir0zTDrs6BTCi2lPp2gbAqxkfDvM+QQ6bdgQ5RaVLCMPi9r+c1
|
||||||
|
/TkWKAdIPKPZspE6vmoPz7sl/3lKmrUiDCv/TXXeBb1hb2Z62+3fE0zEZ9SBII/+
|
||||||
|
YwIDAQAB
|
||||||
|
-----END PUBLIC KEY-----
|
|
@ -0,0 +1,13 @@
|
||||||
|
# encoding: utf-8
|
||||||
|
|
||||||
|
namespace :site do
|
||||||
|
|
||||||
|
task :build => :environment do
|
||||||
|
|
||||||
|
Site.delete_all
|
||||||
|
|
||||||
|
Site.create( :school => 'The Best School', :department => 'Awesome', :valid_locales => [ 'en', 'zh_tw' ], :in_use_locales => [ 'zh_tw', 'en' ])
|
||||||
|
|
||||||
|
end
|
||||||
|
|
||||||
|
end
|
Loading…
Reference in New Issue