lib/rhoconnect/controller/system_controller.rb in rhoconnect-4.0.0.beta.12 vs lib/rhoconnect/controller/system_controller.rb in rhoconnect-4.0.0.beta.24
- old
+ new
@@ -1,47 +1,70 @@
module Rhoconnect
- module Controller
+ module Controller
class SystemController < Rhoconnect::Controller::APIBase
set_default :admin_required, true
set_default :login_required, false
set_default :source_required, false
set_default :client_required, false
register Rhoconnect::EndPoint
-
+
get "/appserver", \
:deprecated_route => {:verb => :post, :url => ['/api/get_adapter', '/api/source/get_adapter']} do
{:adapter_url => Rhoconnect.appserver}.to_json
end
-
+
post "/appserver", \
:deprecated_route => {:verb => :post, :url => ['/api/save_adapter', '/api/source/save_adapter']} do
Rhoconnect.appserver = params['adapter_url'] || params[:attributes]['adapter_url']
end
-
+
get "/license", \
:deprecated_route => {:verb => :post, :url => ['/api/get_license_info', '/api/admin/get_license_info']} do
- {:rhoconnect_version => Rhoconnect.license.rhoconnect_version,
- :licensee => Rhoconnect.license.licensee,
- :seats => Rhoconnect.license.seats,
+ {:rhoconnect_version => Rhoconnect.license.rhoconnect_version,
+ :licensee => Rhoconnect.license.licensee,
+ :seats => Rhoconnect.license.seats,
:issued => Rhoconnect.license.issued,
:available => Rhoconnect.license.available }.to_json
end
-
+
post "/login", :rc_handler => :admin_authenticate, :admin_required => false, :deprecated_route => {:verb => :post, :url => ['/login', '/api/admin/login']} do
user = User.authenticate(params[:login], params[:password])
end
+ # Path used on the RhoConnect instance to handle application credentials
+ get "/rps_login", :admin_required => false do
+ auth = Rack::Auth::Basic::Request.new(request.env)
+ if auth.provided? and auth.basic? and auth.credentials
+ login, password = auth.credentials
+ settings = get_config(Rhoconnect.base_directory)[Rhoconnect.environment]
+ if settings and settings[:push_server]
+ url = URI.parse(settings[:push_server])
+ app_login = url.user
+ app_pwd = url.password.nil? ? '' : url.password
+ if login == app_login && password == app_pwd
+ status(204)
+ else
+ raise ApiException.new(401, "Invalid RhoConnect Push server credentials")
+ end
+ else
+ raise ApiException.new(500, "Invalid RhoConnect Push settings")
+ end
+ else
+ raise ApiException.new(401, "Invalid Basic Authorization header")
+ end
+ end
+
post "/reset", :deprecated_route => {:verb => :post, :url => ['/api/reset', '/api/admin/reset']} do
keep_token = current_user.token.value
Store.flush_all
Rhoconnect.bootstrap(Rhoconnect.base_directory)
# restoring previous token value after flushdb
current_user.token = keep_token
"DB reset"
end
-
+
get "/stats", \
:deprecated_route => {:verb => :post, :url => ['/api/stats', '/api/admin/stats']} do
if Rhoconnect.stats == true
names = params[:names]
if names
@@ -49,10 +72,10 @@
else
metric = params[:metric]
rtype = Rhoconnect::Stats::Record.rtype(metric)
if rtype == 'zset'
# returns [] if no results
- Rhoconnect::Stats::Record.range(metric,params[:start],params[:finish]).to_json
+ Rhoconnect::Stats::Record.range(metric,params[:start],params[:finish]).to_json
elsif rtype == 'string'
Rhoconnect::Stats::Record.get_value(metric) || ''
else
raise ApiException.new(404, "Unknown metric")
end
\ No newline at end of file