-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathapp.rb
More file actions
89 lines (76 loc) · 2.17 KB
/
app.rb
File metadata and controls
89 lines (76 loc) · 2.17 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
require 'sinatra'
require 'sinatra/flash'
require 'sinatra/partial'
require 'sinatra/config_file'
require 'sinatra/cookies'
require 'sinatra/advanced_routes'
require 'sinatra/paginate'
require 'sinatra/support'
require 'rack/contrib'
require 'i18n'
require 'i18n/backend/fallbacks'
class Videatra < Sinatra::Base
register Sinatra::AdvancedRoutes
register Sinatra::ConfigFile
register Sinatra::Partial
register Sinatra::Flash
register Sinatra::Paginate
config_file './config/application.yml'
use Rack::Session::Cookie, {
:secret => settings.cookies[:secret],
:expire_after => settings.cookies[:expire_time]
}
use Rack::Locale
helpers Rack::Utils
helpers Sinatra::Cookies
helpers Sinatra::CountryHelpers
enable :sessions
end
require_relative 'config/initializers/database'
require_relative 'config/initializers/helpers'
require_relative 'config/initializers/videoman'
require_relative 'config/initializers/authstrategies'
require_relative 'config/initializers/plugman'
require_relative 'config/routes'
class Videatra < Sinatra::Base
Videatra.each_route do |route|
before route.path do
authenticate! :remember_me if cookies["authstrategies"]
guardian = PlugMan.registered_plugins[:guardian]
guardian.filter_before_route(current_user, route.path, params, response)
end
end
before '/_reload_plugins' do
if !current_user.has_role? "admin"
halt 401, "You need administrator privileges!"
redirect "/"
end
end
after do
#So that we don't get too many connections
#up at the same time
ActiveRecord::Base.connection.close
end
end
def reload_plugins
PlugMan.stop_all_plugins
PlugMan.registered_plugins.delete_if { |k, v| k != :root and k != :main }
PlugMan.load_plugins './plugins'
PlugMan.start_all_plugins
auth_hooks
video_hooks
end
# A new thread that is looping and on every 10 secs change if
# the list of .rb files inside plugins/ is changed. If changed
# we call reload_plugins
Thread.new do
files = Dir.glob "plugins/user_plugins/*.rb"
loop do
new_files = Dir.glob "plugins/user_plugins/*.rb"
if new_files != files
reload_plugins
files = new_files
end
sleep(10)
end
end