smart_proxy_dynflow_core 0.1.5 → 0.1.6
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/config/settings.yml.example +6 -0
- data/deploy/smart_proxy_dynflow_core.init +1 -0
- data/deploy/smart_proxy_dynflow_core.service +1 -0
- data/lib/smart_proxy_dynflow_core/launcher.rb +11 -2
- data/lib/smart_proxy_dynflow_core/log.rb +25 -1
- data/lib/smart_proxy_dynflow_core/settings.rb +2 -1
- data/lib/smart_proxy_dynflow_core/version.rb +1 -1
- data/lib/smart_proxy_dynflow_core/webrick-patch.rb +37 -0
- metadata +5 -5
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: ae526e7d72f4b4ee46d8bcfa40e64f6790491ff1
|
4
|
+
data.tar.gz: 5ed7ee98098fd949f9619465cc7362fbce43b157
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 1eeaf64c14cdba89b6a787082c603aca475e941935e8307b695ab4bef84bcb258907453cb368a6d5992565217921c8bed405968191bc773cd50f99ee0bde603c
|
7
|
+
data.tar.gz: b1aa187080d29a83a79a014afe9434b3876bdc31e55c9e50f1227eb0f429d66075f4387d9746808a5d18e4bc6eb5e9649a8bc8defbb6258df9fac6e799a32183
|
data/config/settings.yml.example
CHANGED
@@ -28,6 +28,12 @@
|
|
28
28
|
# :ssl_private_key: ssl/localhost.pem
|
29
29
|
# :ssl_certificate: ssl/certs/localhost.pem
|
30
30
|
|
31
|
+
# Use this option only if you need to disable certain cipher suites.
|
32
|
+
# Note: we use the OpenSSL suite name, take a look at:
|
33
|
+
# https://www.openssl.org/docs/manmaster/apps/ciphers.html#CIPHER-SUITE-NAMES
|
34
|
+
# for more information.
|
35
|
+
#:ssl_disabled_ciphers: [CIPHER-SUITE-1, CIPHER-SUITE-2]
|
36
|
+
|
31
37
|
# File to log to, leave empty for logging to STDOUT
|
32
38
|
# :log_file: /var/log/foreman-proxy/smart_proxy_dynflow_core.log
|
33
39
|
|
@@ -15,6 +15,7 @@ SMART_PROXY_DYNFLOW_CORE_USER=${SMART_PROXY_DYNFLOW_CORE_USER:-foreman-proxy}
|
|
15
15
|
|
16
16
|
start() {
|
17
17
|
echo -n $"Starting $prog: "
|
18
|
+
ulimit -n 65536
|
18
19
|
daemon --user ${SMART_PROXY_DYNFLOW_CORE_USER} /usr/bin/smart_proxy_dynflow_core -d -p $SMART_PROXY_DYNFLOW_CORE_PID > /dev/null
|
19
20
|
RETVAL=$?
|
20
21
|
if [ $RETVAL = 0 ]
|
@@ -8,6 +8,7 @@ Type=forking
|
|
8
8
|
User=foreman-proxy
|
9
9
|
PIDFile=/var/run/foreman-proxy/smart_proxy_dynflow_core.pid
|
10
10
|
ExecStart=/usr/bin/smart_proxy_dynflow_core -d -p /var/run/foreman-proxy/smart_proxy_dynflow_core.pid
|
11
|
+
LimitNOFILE=65536
|
11
12
|
|
12
13
|
[Install]
|
13
14
|
WantedBy=multi-user.target
|
@@ -1,6 +1,7 @@
|
|
1
1
|
require 'webrick/https'
|
2
2
|
require 'smart_proxy_dynflow_core/bundler_helper'
|
3
3
|
require 'smart_proxy_dynflow_core/settings'
|
4
|
+
require 'smart_proxy_dynflow_core/webrick-patch'
|
4
5
|
module SmartProxyDynflowCore
|
5
6
|
class Launcher
|
6
7
|
|
@@ -11,6 +12,7 @@ module SmartProxyDynflowCore
|
|
11
12
|
def start(options)
|
12
13
|
load_settings!(options)
|
13
14
|
Settings.instance.standalone = true
|
15
|
+
install_usr1_trap
|
14
16
|
Rack::Server.new(rack_settings).start
|
15
17
|
end
|
16
18
|
|
@@ -42,6 +44,12 @@ module SmartProxyDynflowCore
|
|
42
44
|
end
|
43
45
|
end
|
44
46
|
|
47
|
+
def install_usr1_trap
|
48
|
+
trap(:USR1) do
|
49
|
+
Log.instance.roll_log
|
50
|
+
end
|
51
|
+
end
|
52
|
+
|
45
53
|
private
|
46
54
|
|
47
55
|
def rack_settings
|
@@ -66,10 +74,11 @@ module SmartProxyDynflowCore
|
|
66
74
|
:app => app,
|
67
75
|
:Host => Settings.instance.listen,
|
68
76
|
:Port => Settings.instance.port,
|
69
|
-
:AccessLog => [[Log.
|
77
|
+
:AccessLog => [[Log.instance, WEBrick::AccessLog::COMMON_LOG_FORMAT]],
|
70
78
|
:Logger => Log.instance,
|
71
79
|
:daemonize => Settings.instance.daemonize,
|
72
|
-
:pid => Settings.instance.pid_file
|
80
|
+
:pid => Settings.instance.pid_file,
|
81
|
+
:server => :webrick
|
73
82
|
}
|
74
83
|
end
|
75
84
|
|
@@ -8,7 +8,7 @@ module SmartProxyDynflowCore
|
|
8
8
|
class << self
|
9
9
|
def instance
|
10
10
|
if @logger.nil?
|
11
|
-
@logger =
|
11
|
+
@logger = self.new log_file
|
12
12
|
@logger.level = log_level
|
13
13
|
end
|
14
14
|
@logger
|
@@ -40,6 +40,30 @@ module SmartProxyDynflowCore
|
|
40
40
|
end
|
41
41
|
end
|
42
42
|
|
43
|
+
def initialize(file, *rest)
|
44
|
+
@file = file
|
45
|
+
@fd = @file.kind_of?(IO) ? @file : File.open(@file, 'a')
|
46
|
+
@fd.sync = true
|
47
|
+
super(@fd, rest)
|
48
|
+
end
|
49
|
+
|
50
|
+
def add(*args)
|
51
|
+
handle_log_rolling if @roll_log
|
52
|
+
super(*args)
|
53
|
+
end
|
54
|
+
|
55
|
+
def roll_log
|
56
|
+
@roll_log = true
|
57
|
+
end
|
58
|
+
|
59
|
+
def handle_log_rolling
|
60
|
+
@roll_log = false
|
61
|
+
unless @file.kind_of? IO
|
62
|
+
@fd.reopen @file, 'a'
|
63
|
+
@fd.sync = true
|
64
|
+
end
|
65
|
+
end
|
66
|
+
|
43
67
|
class ProxyAdapter < ::Dynflow::LoggerAdapters::Simple
|
44
68
|
def initialize(logger, level = Logger::DEBUG, formatters = [::Dynflow::LoggerAdapters::Formatters::Exception])
|
45
69
|
@logger = logger
|
@@ -30,6 +30,7 @@ module SmartProxyDynflowCore
|
|
30
30
|
:ssl_ca_file => nil,
|
31
31
|
:ssl_private_key => nil,
|
32
32
|
:ssl_certificate => nil,
|
33
|
+
:ssl_disabled_ciphers => [],
|
33
34
|
:foreman_ssl_ca => nil,
|
34
35
|
:foreman_ssl_key => nil,
|
35
36
|
:foreman_ssl_cert => nil,
|
@@ -44,7 +45,7 @@ module SmartProxyDynflowCore
|
|
44
45
|
|
45
46
|
PROXY_SETTINGS = [:ssl_ca_file, :ssl_certificate, :ssl_private_key, :foreman_url,
|
46
47
|
:foreman_ssl_ca, :foreman_ssl_cert, :foreman_ssl_key,
|
47
|
-
:log_file, :log_level]
|
48
|
+
:log_file, :log_level, :ssl_disabled_ciphers]
|
48
49
|
PLUGIN_SETTINGS = [:database, :core_url, :console_auth]
|
49
50
|
|
50
51
|
def initialize(settings = {})
|
@@ -0,0 +1,37 @@
|
|
1
|
+
require 'webrick/https'
|
2
|
+
|
3
|
+
CIPHERS = ['ECDHE-RSA-AES128-GCM-SHA256','ECDHE-RSA-AES256-GCM-SHA384',
|
4
|
+
'ECDHE-RSA-AES128-CBC-SHA','ECDHE-RSA-AES256-CBC-SHA',
|
5
|
+
'AES128-GCM-SHA256','AES256-GCM-SHA384','AES128-SHA256',
|
6
|
+
'AES256-SHA256','AES128-SHA','AES256-SHA']
|
7
|
+
|
8
|
+
module WEBrick
|
9
|
+
class GenericServer
|
10
|
+
def setup_ssl_context(config) # :nodoc:
|
11
|
+
unless config[:SSLCertificate]
|
12
|
+
cn = config[:SSLCertName]
|
13
|
+
comment = config[:SSLCertComment]
|
14
|
+
cert, key = Utils::create_self_signed_cert(1024, cn, comment)
|
15
|
+
config[:SSLCertificate] = cert
|
16
|
+
config[:SSLPrivateKey] = key
|
17
|
+
end
|
18
|
+
ctx = OpenSSL::SSL::SSLContext.new
|
19
|
+
ctx.set_params
|
20
|
+
ctx.ciphers = (CIPHERS - SmartProxyDynflowCore::Settings.instance.ssl_disabled_ciphers).join(':')
|
21
|
+
ctx.key = config[:SSLPrivateKey]
|
22
|
+
ctx.cert = config[:SSLCertificate]
|
23
|
+
ctx.client_ca = config[:SSLClientCA]
|
24
|
+
ctx.extra_chain_cert = config[:SSLExtraChainCert]
|
25
|
+
ctx.ca_file = config[:SSLCACertificateFile]
|
26
|
+
ctx.ca_path = config[:SSLCACertificatePath]
|
27
|
+
ctx.cert_store = config[:SSLCertificateStore]
|
28
|
+
ctx.tmp_dh_callback = config[:SSLTmpDhCallback]
|
29
|
+
ctx.verify_mode = config[:SSLVerifyClient]
|
30
|
+
ctx.verify_depth = config[:SSLVerifyDepth]
|
31
|
+
ctx.verify_callback = config[:SSLVerifyCallback]
|
32
|
+
ctx.timeout = config[:SSLTimeout]
|
33
|
+
ctx.options |= config[:SSLOptions] unless config[:SSLOptions].nil?
|
34
|
+
ctx
|
35
|
+
end
|
36
|
+
end
|
37
|
+
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: smart_proxy_dynflow_core
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.6
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Ivan Nečas
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2017-05-09 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|
@@ -206,8 +206,7 @@ dependencies:
|
|
206
206
|
- - ">="
|
207
207
|
- !ruby/object:Gem::Version
|
208
208
|
version: '0'
|
209
|
-
description:
|
210
|
-
Use the Dynflow inside Foreman smart proxy
|
209
|
+
description: " Use the Dynflow inside Foreman smart proxy\n"
|
211
210
|
email:
|
212
211
|
- inecas@redhat.com
|
213
212
|
executables:
|
@@ -232,6 +231,7 @@ files:
|
|
232
231
|
- lib/smart_proxy_dynflow_core/settings.rb
|
233
232
|
- lib/smart_proxy_dynflow_core/testing.rb
|
234
233
|
- lib/smart_proxy_dynflow_core/version.rb
|
234
|
+
- lib/smart_proxy_dynflow_core/webrick-patch.rb
|
235
235
|
- smart_proxy_dynflow_core.gemspec
|
236
236
|
homepage: https://github.com/theforeman/smart_proxy_dynflow
|
237
237
|
licenses:
|
@@ -253,7 +253,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
253
253
|
version: '0'
|
254
254
|
requirements: []
|
255
255
|
rubyforge_project:
|
256
|
-
rubygems_version: 2.
|
256
|
+
rubygems_version: 2.5.1
|
257
257
|
signing_key:
|
258
258
|
specification_version: 4
|
259
259
|
summary: Dynflow runtime for Foreman smart proxy
|