diff --git a/Gemfile b/Gemfile index f611c63a6ba5e5417d98f8864bbae8ea46f36e64..f246c137e0991c52d975f18e231adf92fbbac95d 100644 --- a/Gemfile +++ b/Gemfile @@ -66,7 +66,6 @@ gem 'carrierwave', '0.5.8' gem 'fog' gem 'fastercsv', '1.5.4', :require => false gem 'mini_magick', '3.4' -gem 'rest-client', '1.6.7' # JSON and API @@ -136,7 +135,6 @@ gem 'jquery-rails' gem 'faraday' gem 'faraday_middleware' -gem 'em-synchrony', '1.0.0', :platforms => :ruby_19 gem 'jasmine', :git => 'git://github.com/pivotal/jasmine-gem.git' @@ -148,7 +146,6 @@ group :test do gem 'capybara', '~> 1.1.2' gem 'cucumber-rails', '1.3.0', :require => false gem 'database_cleaner', '0.7.1' - gem 'diaspora-client', :git => 'git://github.com/diaspora/diaspora-client.git' gem 'timecop' #"0.1.0", #:path => '~/workspace/diaspora-client' diff --git a/app/controllers/activity_streams/photos_controller.rb b/app/controllers/activity_streams/photos_controller.rb deleted file mode 100644 index d0ff89cedda89fc9abbd58467891f00e773b203f..0000000000000000000000000000000000000000 --- a/app/controllers/activity_streams/photos_controller.rb +++ /dev/null @@ -1,58 +0,0 @@ -# Copyright (c) 2010-2011, Diaspora Inc. This file is -# licensed under the Affero General Public License version 3 or later. See -# the COPYRIGHT file. - -class ActivityStreams::PhotosController < ApplicationController - class AuthenticationFilter - def initialize(scope = nil) - @scope = scope - end - - def filter(controller, &block) - if controller.params[:auth_token] - if controller.current_user - yield - else - controller.fail! - end - else - controller.request.env['oauth2'].authenticate_request! :scope => @scope do |*args| - controller.sign_in controller.request.env['oauth2'].resource_owner - block.call(*args) - end - end - end - end - - around_filter AuthenticationFilter.new, :only => :create - skip_before_filter :verify_authenticity_token, :only => :create - - respond_to :json - respond_to :html, :only => [:show] - - def create - @photo = ActivityStreams::Photo.from_activity(params[:activity]) - @photo.author = current_user.person - @photo.public = true - - if @photo.save - Rails.logger.info("event=create type=activitystreams_photo") - - current_user.add_to_streams(@photo, current_user.aspects) - current_user.dispatch_post(@photo, :url => post_url(@photo)) - - render :nothing => true, :status => 201 - else - render :nothing => true, :status => 422 - end - end - - def show - @photo = current_user.find_visible_shareable_by_id(Photo, params[:id]) - respond_with @photo - end - - def fail! - render :nothing => true, :status => 401 - end -end diff --git a/app/controllers/apis_controller.rb b/app/controllers/apis_controller.rb deleted file mode 100644 index 17a5ba71f559ac97c64ab9e6554e1333d9b0db6d..0000000000000000000000000000000000000000 --- a/app/controllers/apis_controller.rb +++ /dev/null @@ -1,20 +0,0 @@ -class ApisController < ApplicationController - authenticate_with_oauth - before_filter :set_user_from_oauth - respond_to :json - - def me -# debugger - @person = @user.person - render :json => { - :birthday => @person.profile.birthday, - :name => @person.name, - :uid => @user.username - } - end - - private - def set_user_from_oauth - @user = request.env['oauth2'].resource_owner - end -end diff --git a/app/controllers/apps_controller.rb b/app/controllers/apps_controller.rb deleted file mode 100644 index d437d547f43f2ac58ff6501f9f90d51e8b7907d3..0000000000000000000000000000000000000000 --- a/app/controllers/apps_controller.rb +++ /dev/null @@ -1,9 +0,0 @@ -class AppsController < ApplicationController - def show - @app = 'cubbies' - @posts = ActivityStreams::Photo.where(:public => true).for_a_stream(max_time, 'created_at') - @commenting_disabled = true - @people = [] - @people_count = 0 - end -end diff --git a/app/controllers/authorizations_controller.rb b/app/controllers/authorizations_controller.rb deleted file mode 100644 index a10ed326dbbb4b7ad13391f298da122112aa33de..0000000000000000000000000000000000000000 --- a/app/controllers/authorizations_controller.rb +++ /dev/null @@ -1,152 +0,0 @@ -require File.join(Rails.root, "app", "models", "oauth2_provider_models_activerecord_authorization") -require File.join(Rails.root, "app", "models", "oauth2_provider_models_activerecord_client") - -class AuthorizationsController < ApplicationController - include OAuth2::Provider::Rack::AuthorizationCodesSupport - before_filter :authenticate_user!, :except => :token - before_filter :redirect_or_block_invalid_authorization_code_requests, :except => [:token, :index, :destroy] - - skip_before_filter :verify_authenticity_token, :only => :token - - def new - if params[:uid].present? && params[:uid] != current_user.username - sign_out current_user - redirect_to url_with_prefilled_session_form - else - @requested_scopes = params["scope"].split(',') - @client = oauth2_authorization_request.client - - if authorization = current_user.authorizations.where(:client_id => @client.id).first - ac = authorization.authorization_codes.create(:redirect_uri => params[:redirect_uri]) - redirect_to "#{params[:redirect_uri]}&code=#{ac.code}" - end - end - end - - # When diaspora detects that a user is trying to authorize to an application - # as someone other than the logged in user, we want to log out current_user, - # and prefill the session form with the user that is trying to authorize - def url_with_prefilled_session_form - redirect_url = Addressable::URI.parse(request.url) - query_values = redirect_url.query_values - query_values.delete("uid") - query_values.merge!("username" => params[:uid]) - redirect_url.query_values = query_values - redirect_url.to_s - end - - def create - if params['confirm'] - grant_authorization_code(current_user) - else - deny_authorization_code - end - end - - def token - require 'jwt' - - signed_string = Base64.decode64(params[:signed_string]) - app_url = signed_string.split(';')[0] - - if (!params[:type] == 'client_associate' && !app_url) - render :text => "bad request: #{params.inspect}", :status => 403 - return - end - - begin - packaged_manifest = JSON.parse(RestClient.get("#{app_url}manifest.json").body) - public_key = OpenSSL::PKey::RSA.new(packaged_manifest['public_key']) - manifest = JWT.decode(packaged_manifest['jwt'], public_key) - rescue => e - puts "DIASPORA_CONNECT there was a problem with getting a token for the following diaspora id" - puts "DIASPORA_CONNECT #{app_url}, #{public_key.to_s} #{manifest.to_s}" - raise e - end - - message = verify(signed_string, Base64.decode64(params[:signature]), public_key, manifest) - if not (message =='ok') - render :text => message, :status => 403 - elsif manifest["application_base_url"].match(/^https?:\/\/(localhost|chubbi\.es|www\.cubbi\.es|cubbi\.es)(:\d+)?\/$/).nil? - # This will only be temporary (less than a month) while we iron out the kinks in Diaspora Connect. Essentially, - # whatever we release people will try to work off of and it sucks to build things on top of non-stable things. - # We also started writing a gem that we'll release (around the same time) that makes becoming a Diaspora enabled - # ruby project a breeze. - - render :text => "Domain (#{manifest["application_base_url"]}) currently not authorized for Diaspora OAuth", :status => 403 - else - client = OAuth2::Provider.client_class.find_or_create_from_manifest!(manifest, public_key) - - json = {:client_id => client.oauth_identifier, - :client_secret => client.oauth_secret, - :expires_in => 0, - :flows_supported => ""} - - if params[:code] - code = client.authorization_codes.claim(params[:code], - params[:redirect_uri]) - json.merge!( - :access_token => code.access_token, - :refresh_token => code.refresh_token - ) - end - - render :json => json - end - end - - def index - @authorizations = current_user.authorizations - @applications = current_user.applications - end - - def destroy - ## ID is actually the id of the client - auth = current_user.authorizations.where(:client_id => params[:id]).first - auth.revoke - redirect_to authorizations_path - end - - # @param [String] enc_signed_string A Base64 encoded string with app_url;pod_url;time;nonce - # @param [String] sig A Base64 encoded signature of the decoded signed_string with public_key. - # @param [OpenSSL::PKey::RSA] public_key The application's public key to verify sig with. - # @return [String] 'ok' or an error message. - def verify( signed_string, sig, public_key, manifest) - split = signed_string.split(';') - app_url = split[0] - time = split[2] - nonce = split[3] - - return 'blank public key' if public_key.n.nil? - return "the app url in the manifest (#{manifest['application_base_url']}) does not match the url passed in the parameters (#{app_url})." if manifest["application_base_url"] != app_url - return 'key too small, use at least 2048 bits' if public_key.n.num_bits < 2048 - return "invalid time" unless valid_time?(time) - return 'invalid nonce' unless valid_nonce?(nonce) - return 'invalid signature' unless verify_signature(signed_string, sig, public_key) - 'ok' - end - - def verify_signature(challenge, signature, public_key) - public_key.verify(OpenSSL::Digest::SHA256.new, signature, challenge) - end - - def valid_time?(time) - time.to_i > (Time.now - 5.minutes).to_i - end - - def valid_nonce?(nonce) - !OAuth2::Provider.client_class.exists?(:nonce => nonce) - end - - def redirect_or_block_invalid_authorization_code_requests - begin - block_invalid_authorization_code_requests - rescue OAuth2::Provider::Rack::InvalidRequest => e - if e.message == "client_id is invalid" - redirect_to params[:redirect_uri]+"&error=invalid_client" - else - raise - end - end - end -end diff --git a/app/controllers/tokens_controller.rb b/app/controllers/tokens_controller.rb deleted file mode 100644 index b9bae3fcfd4523a98c73db22b941c8a0549446e2..0000000000000000000000000000000000000000 --- a/app/controllers/tokens_controller.rb +++ /dev/null @@ -1,6 +0,0 @@ -class TokensController < ApplicationController - before_filter :authenticate_user! - def show - end -end - diff --git a/spec/chubbies/Gemfile b/spec/chubbies/Gemfile deleted file mode 120000 index df448e9b18d1c0d88862558fda3fb6ef26caf97c..0000000000000000000000000000000000000000 --- a/spec/chubbies/Gemfile +++ /dev/null @@ -1 +0,0 @@ -./../../Gemfile \ No newline at end of file diff --git a/spec/chubbies/Gemfile.lock b/spec/chubbies/Gemfile.lock deleted file mode 120000 index 2eacd611e713f59fd71270b8f2bd77b7864daef3..0000000000000000000000000000000000000000 --- a/spec/chubbies/Gemfile.lock +++ /dev/null @@ -1 +0,0 @@ -./../../Gemfile.lock \ No newline at end of file diff --git a/spec/chubbies/README b/spec/chubbies/README deleted file mode 100644 index 34f933defab0ff2d39bbd2a81e98c53879023a16..0000000000000000000000000000000000000000 --- a/spec/chubbies/README +++ /dev/null @@ -1,8 +0,0 @@ -This is a (very very) simple OAuth2 client, designed to work with the Diaspora tests. To get it running, cd to the client folder, then run: - -1) bundle install -2) bundle exec rackup - -This should start the client on port 9292 - -Assuming an example server is running (such as the one in examples/rails3-example), visit http://localhost:9292. To read content from the server you'll be asked to login (tomafro/secret) and then authorize the client. Finally some very simple content from the server will be shown. diff --git a/spec/chubbies/app.rb b/spec/chubbies/app.rb deleted file mode 100644 index aa3b4cf208d92a9e85478080ba814564f2d048cb..0000000000000000000000000000000000000000 --- a/spec/chubbies/app.rb +++ /dev/null @@ -1,122 +0,0 @@ -module Chubbies - require 'active_record' - require 'jwt' - require 'diaspora-client' - require 'haml' - - def self.reset_db - `rm -f #{File.expand_path('../chubbies.sqlite3', __FILE__)}` - ActiveRecord::Base.establish_connection( - :adapter => "sqlite3", - :database => "chubbies.sqlite3" - ) - - ActiveRecord::Schema.define do - create_table :resource_servers do |t| - t.string :client_id, :limit => 40, :null => false - t.string :client_secret, :limit => 40, :null => false - t.string :host, :limit => 127, :null => false - t.timestamps - end - add_index :resource_servers, :host, :unique => true - - create_table :access_tokens do |t| - t.integer :user_id, :null => false - t.integer :resource_server_id, :null => false - t.string :access_token, :limit => 40, :null => false - t.string :refresh_token, :limit => 40, :null => false - t.string :uid, :limit => 40, :null => false - t.datetime :expires_at - t.timestamps - end - add_index :access_tokens, :user_id, :unique => true - create_table :users do |t| - t.string :username, :limit => 127 - t.timestamps - end - end - end - - self.reset_db - - class User < ActiveRecord::Base - has_one :access_token, :class_name => "DiasporaClient::AccessToken", :dependent => :destroy - end - - DiasporaClient.config do |d| - d.private_key_path = File.dirname(__FILE__) + "/chubbies.private.pem" - d.public_key_path = File.dirname(__FILE__) + "/chubbies.public.pem" - d.test_mode = true - d.application_base_url = "localhost:9292/" - - d.manifest_field(:name, "Chubbies") - d.manifest_field(:description, "The best way to chub.") - d.manifest_field(:icon_url, "chubbies.jpeg") - - d.manifest_field(:permissions_overview, "Chubbi.es wants to post photos to your stream.") - - d.permission(:profile, :read, "Chubbi.es wants to view your profile so that it can show it to other users.") - d.permission(:photos, :write, "Chubbi.es wants to write to your photos to share your findings with your contacts.") - end - - class App < DiasporaClient::App - set :views, File.join(File.dirname(__FILE__), 'views') - def current_user - @user = User.first - end - - def current_user= user - @user = user - end - - def redirect_path - '/callback' - end - - def after_oauth_redirect_path - '/account?id=1' - end - - def create_account(hash) - hash[:username] = hash.delete(:diaspora_id) - User.create(hash) - end - - get '/account' do - if params['id'] && user = User.where(:id => params['id']).first - if user.access_token - begin - @resource_response = user.access_token.token.get("/api/v0/me") - haml :response - rescue OAuth2::Error - "Token invalid" - end - else - "No access token." - end - else - "No user with id #{params['id']}" - end - end - - get '/new' do - haml :home - end - - get '/manifest.json' do - DiasporaClient.package_manifest - end - - get '/reset' do - Chubbies.reset_db - end - - post '/register' do - DiasporaClient::ResourceServer.create!(params) - end - - get '/user_count' do - User.count.to_s - end - end -end diff --git a/spec/chubbies/chubbies.private.pem b/spec/chubbies/chubbies.private.pem deleted file mode 100644 index de262a185822717c5209f098a8de4cebc07a5d4b..0000000000000000000000000000000000000000 --- a/spec/chubbies/chubbies.private.pem +++ /dev/null @@ -1,27 +0,0 @@ ------BEGIN RSA PRIVATE KEY----- -MIIEpQIBAAKCAQEA6YpLa9kYE0Uh/9fiXOFs8i64ZMR3Nyw4o7YB/X6V1QV195Co -XoLrayFZqDc1N+WTjKurHISIqXsOjOnpHfrbptXri7qXwMyLDAtgSd+NlTWSnJXJ -lP03VrdoUp+dtfKTakhDwBFNrdB+vCAzPve6+6ZEMQZGF+YZBfq7VEPG4iKZQ34C -3lZIfEZlpZQak5tUNWXS5V9uBxAEi1KgoxdQQR3uEctLfQS/QQZ4SNTNVMJsLm6c -xHVhQ5ekXqtpfjM328T8/B+EU4qv+YC2wlHuwL7ztT6/m5rcVtmeunuQVkQueOEZ -br6S6X4du2+4q1/bkmnAS0f28ZcGlnScOz+XqQIDAQABAoIBAGiZWUh3lpHi7+Rw -I+Gn0azzAgGYATFD7CZe+as5DBC5/mkgcFjMWHbGHCr8dyiO+bQSm3QNZExMYmr4 -xUF5PvINdA9ERn3C3zBI1BqiNv6yXPUnHX9Onn+HbAE9nlyExkPfFAEtftYvwOOv -pGQ6fpQBlx9CCRjhJSoJb+fA544WR/ceJr5MdzP87mvuOHFpa1jp1s6YBykiiRmZ -36Qvlh2B19xMmGzwsGMeCKc+PbXYF2C5H9huZfFvs0JqjKWuGY4vOkxxTh7ExcaK -JySA9JaZRPPnVD2vVm1PA5TQbDgGMg8u362v26p5sQ8t5UzOT20zHy2Etiq1WvNt -ZhWnLxECgYEA9q35/t51/8tdpKY0CVeFwlVM9jbO9IP4G4ltNTuvaRuBKsvaeCyw -iXkzDwPcS1jzdzkXT0BYWqhMikdPbzbD51Yj9Am96Rzkn3WvHYgZj5QKw3iaQl3t -f08Y4pCU1Ln8G+D2nMPGEnyrZni4c+j0BxMpW588ILNus4Bg3x++OO0CgYEA8l06 -Ab7Wr54LKAZj8fIIJk+mt+0QQ1v9OrMmkQTX0oUahcS6lKDTos8NXfkGhgMeY8HI -x/FNsmKf6WYE/VaYSSZgInW4fjJXW40kf5tbzCKhwVeq81ZuqgI4OmzdR05uM7ST -PTJ4h3OfaWoPArtuFj5TEAHxzCYA2rcLn5FJLi0CgYEAixBVSRt8hjHNns6bs1CF -9aJE+uC3Fx12t39n84SsRKLe1JOLnAgFldqfsC1K+acxydqDi4gIx0Lts160J0xG -cJodNqxvRYWmVUbw68MYNdsNnljVDekJxKWAr+k2Hh6jQ8w0+vdbKHzj26bexWlk -eMCSpjZEnWLKW6NZ+S9Z+5kCgYEA7syWg/PB2kWRXn11aoV8LCtc7GpDFOuFRZoR -DOBFumJ1cIoXAKy5+feihw3/tHlMLyRXrVF/qZztTO29StRQtfp+zFVLU+RMGKOn -66dqumcBE9xKTvrBjPck6cQr/r8za/SnAqxA/80Xq6jZY2rDnF0KQIJ5+RkUzGuA -o1dmUH0CgYEAooU8E4SCgWgnToD4fUpZKqGWsLCRhUhJeEp+S0DMGOMFpzIzjZAt -uwaLmE7tzInR0JbEayJXB5lqjv8Y6PiM3CZ3ihh6WJkJhUNRIh8cTxhrLSQSk7PW -DSSjD2mImTF2VRqjvlYQPHNeeSZUmhdxvezwHBDq1OuRfIpfRZ+7Vwc= ------END RSA PRIVATE KEY----- diff --git a/spec/chubbies/chubbies.public.pem b/spec/chubbies/chubbies.public.pem deleted file mode 100644 index c1f5857b7e3bb7f2033f55eab00c19e110293c5d..0000000000000000000000000000000000000000 --- a/spec/chubbies/chubbies.public.pem +++ /dev/null @@ -1,8 +0,0 @@ ------BEGIN RSA PUBLIC KEY----- -MIIBCgKCAQEA6YpLa9kYE0Uh/9fiXOFs8i64ZMR3Nyw4o7YB/X6V1QV195CoXoLr -ayFZqDc1N+WTjKurHISIqXsOjOnpHfrbptXri7qXwMyLDAtgSd+NlTWSnJXJlP03 -VrdoUp+dtfKTakhDwBFNrdB+vCAzPve6+6ZEMQZGF+YZBfq7VEPG4iKZQ34C3lZI -fEZlpZQak5tUNWXS5V9uBxAEi1KgoxdQQR3uEctLfQS/QQZ4SNTNVMJsLm6cxHVh -Q5ekXqtpfjM328T8/B+EU4qv+YC2wlHuwL7ztT6/m5rcVtmeunuQVkQueOEZbr6S -6X4du2+4q1/bkmnAS0f28ZcGlnScOz+XqQIDAQAB ------END RSA PUBLIC KEY----- diff --git a/spec/chubbies/config.ru b/spec/chubbies/config.ru deleted file mode 100644 index 781e7cad417f3b597f34aafa1d919001ed0cad21..0000000000000000000000000000000000000000 --- a/spec/chubbies/config.ru +++ /dev/null @@ -1,5 +0,0 @@ -require File.dirname(__FILE__) + '/app' -require "bundler/setup" - - -run Chubbies::App diff --git a/spec/chubbies/public/chubbies.jpeg b/spec/chubbies/public/chubbies.jpeg deleted file mode 100644 index 2a569180e114ee741c81e1b8b60e2998c8c5fab5..0000000000000000000000000000000000000000 Binary files a/spec/chubbies/public/chubbies.jpeg and /dev/null differ diff --git a/spec/chubbies/views/home.haml b/spec/chubbies/views/home.haml deleted file mode 100644 index eb5963edc3fe38ed4236df73ec244f1836b79b3a..0000000000000000000000000000000000000000 --- a/spec/chubbies/views/home.haml +++ /dev/null @@ -1,8 +0,0 @@ -%html - %head - %body - %form{:action => '/', :id => 'login', :method => 'get'} - %label{:for => 'diaspora_id'} - Diaspora ID - %input{:type=>'text', :id => 'diaspora_id', :name => 'diaspora_id'} - %input{:type => 'submit', :value => "Connect to Diaspora" } diff --git a/spec/chubbies/views/response.haml b/spec/chubbies/views/response.haml deleted file mode 100644 index dad4edc52105a68a9d34978af20920bf97999c20..0000000000000000000000000000000000000000 --- a/spec/chubbies/views/response.haml +++ /dev/null @@ -1,13 +0,0 @@ -%div - The response from #{@resource_server} at path #{@url}: - - %h2 - Headers - %pre - =@resource_response.headers.inspect - - %h2 - Body - %pre - =@resource_response.inspect -