From 10d29624babe6ea3048c17690ee8f164f075a3c8 Mon Sep 17 00:00:00 2001 From: amartynov Date: Wed, 25 Feb 2015 16:01:22 +0300 Subject: [PATCH] somethings --- devops-service/auth/devops_auth.rb | 32 +++++++++++++++++ devops-service/devops-service.rb | 3 -- devops-service/routes/routes_container.rb | 12 +++++++ devops-service/routes/v2.0.rb | 44 +++++++++++++---------- 4 files changed, 70 insertions(+), 21 deletions(-) create mode 100644 devops-service/auth/devops_auth.rb create mode 100644 devops-service/routes/routes_container.rb diff --git a/devops-service/auth/devops_auth.rb b/devops-service/auth/devops_auth.rb new file mode 100644 index 0000000..07f66e8 --- /dev/null +++ b/devops-service/auth/devops_auth.rb @@ -0,0 +1,32 @@ +module Sinatra + module Devops + module Helpers + def protect! + return if auth_with_basic? + halt 401, "Not authorized\n" + end + + def auth_with_basic? + @auth ||= Rack::Auth::Basic::Request.new(request.env) + if @auth.provided? and @auth.basic? and @auth.credentials + c = @auth.credentials + begin + Devops::Db.connector.user_auth(c[0], c[1]) + true + rescue RecordNotFound => e + false + end + else + false + end + end + end + + def self.registered(app) + app.helpers Devops::Helpers + end + + end + + register Devops +end diff --git a/devops-service/devops-service.rb b/devops-service/devops-service.rb index 86e9c4d..829079c 100644 --- a/devops-service/devops-service.rb +++ b/devops-service/devops-service.rb @@ -14,9 +14,6 @@ require "devops_db" require "sidekiq/web" require "fog" -require "test_subscriber" -require "test_subscriber_2" - require_relative "routes/v2.0" require_relative "client" require_relative "report" diff --git a/devops-service/routes/routes_container.rb b/devops-service/routes/routes_container.rb new file mode 100644 index 0000000..cef0a66 --- /dev/null +++ b/devops-service/routes/routes_container.rb @@ -0,0 +1,12 @@ +module Devops + module RoutesContainer + + def register_routes + routes = Devops::Version2_0::Routes.constants.collect{|s| Devops::Version2_0::Routes.const_get(s)}.select {|const| const.class == Module} + routes.each do |r| + register r + end + end + + end +end diff --git a/devops-service/routes/v2.0.rb b/devops-service/routes/v2.0.rb index 50b6e8a..2367723 100644 --- a/devops-service/routes/v2.0.rb +++ b/devops-service/routes/v2.0.rb @@ -34,12 +34,36 @@ require "routes/v2.0/handlers/status" require "routes/v2.0/handlers/tag" require "routes/v2.0/handlers/user" require "routes/v2.0/handlers/server" +require "routes/routes_container" + +require "auth/devops_auth" module Devops module Version2_0 class Application < Sinatra::Base + extend Devops::RoutesContainer + class << self + + @routes = [ + Devops::Version2_0::Routes::ProviderRoutes, + Devops::Version2_0::Routes::BootstrapTemplatesRoutes, + Devops::Version2_0::Routes::UserRoutes, + Devops::Version2_0::Routes::FilterRoutes, + Devops::Version2_0::Routes::FlavorRoutes, + Devops::Version2_0::Routes::GroupRoutes, + Devops::Version2_0::Routes::ImageRoutes, + Devops::Version2_0::Routes::KeyRoutes, + Devops::Version2_0::Routes::NetworkRoutes, + Devops::Version2_0::Routes::ProjectRoutes, + Devops::Version2_0::Routes::ScriptRoutes, + Devops::Version2_0::Routes::ServerRoutes, + Devops::Version2_0::Routes::StatusRoutes, + Devops::Version2_0::Routes::TagRoutes, + Devops::Version2_0::Routes::DeployRoutes + ] + def init config = DevopsConfig.config set :devops_home, config[:devops_dir] @@ -61,24 +85,6 @@ module Devops set :mongo, Devops::Db.connector end - def register_routes - register Devops::Version2_0::Routes::ProviderRoutes - register Devops::Version2_0::Routes::BootstrapTemplatesRoutes - register Devops::Version2_0::Routes::UserRoutes - register Devops::Version2_0::Routes::FilterRoutes - register Devops::Version2_0::Routes::FlavorRoutes - register Devops::Version2_0::Routes::GroupRoutes - register Devops::Version2_0::Routes::ImageRoutes - register Devops::Version2_0::Routes::KeyRoutes - register Devops::Version2_0::Routes::NetworkRoutes - register Devops::Version2_0::Routes::ProjectRoutes - register Devops::Version2_0::Routes::ScriptRoutes - register Devops::Version2_0::Routes::ServerRoutes - register Devops::Version2_0::Routes::StatusRoutes - register Devops::Version2_0::Routes::TagRoutes - register Devops::Version2_0::Routes::DeployRoutes - end - private def set_up_providers_keys!(providers, mongo) providers.each do |provider| @@ -98,6 +104,7 @@ module Devops helpers Sinatra::Streaming helpers Devops::Version2_0::Helpers +=begin use Rack::Auth::Basic do |username, password| begin settings.mongo.user_auth(username, password) @@ -106,6 +113,7 @@ module Devops false end end +=end configure :production do disable :dump_errors