dialog_ruby 0.1.10 → 0.1.11
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/Dockerfile +13 -0
- data/{lib/storage/redis → _dev}/redisPubSub.rb +1 -1
- data/background/_init.rb +43 -0
- data/background/batch.rb +69 -0
- data/background/redis.rb +34 -0
- data/dialog_ruby.gemspec +6 -7
- data/exec/conf/redis_global.conf +4 -2
- data/exec/dialog.sh +28 -26
- data/exec/git_sync/dialog__sync.service +1 -1
- data/exec/prereq.sh +18 -1
- data/exec/systemd/dialog_background.service +29 -0
- data/exec/systemd/dialog_redis.service +1 -1
- data/exec/systemd/dialog_runMode@.service +16 -6
- data/exec/systemd/dialog_runner@.path +8 -0
- data/lib/{triggers/start → begin}/_main.rb +29 -21
- data/lib/begin/_pre_bot.rb +58 -0
- data/lib/begin/background.rb +24 -0
- data/lib/{triggers/start → begin}/bot.rb +27 -6
- data/lib/{triggers/start → begin}/tdlib.rb +12 -16
- data/lib/configuration.rb +39 -27
- data/lib/dialect/canvas/element/send/Inline_query_result.rb +2 -0
- data/lib/dialect/canvas/element/send/background.rb +28 -0
- data/lib/dialect/canvas/element/send/recognize.rb +3 -2
- data/lib/dialect/canvas/element/send/restrict.rb +0 -1
- data/lib/dialect/canvas/element/send/tdlib_chat.rb +1 -1
- data/lib/dialect/canvas/element/send/tdlib_message.rb +1 -1
- data/lib/dialect/codegen/codegen.rb +9 -9
- data/lib/dialect/codegen/erb/functional/2.2.1.Events2ModReceive.erb +27 -4
- data/lib/dialect/codegen/erb/functional/4.1.AppEvent2Elements.erb +7 -2
- data/lib/dialect/codegen/erb/functional/5.1.Element2ModElements.erb +1 -1
- data/lib/dialect/codegen/erb/functional/7.ElementChains.erb +7 -6
- data/lib/dialog_ruby.rb +5 -2
- data/lib/metamess/_run.rb +1 -0
- data/lib/metamess/content/content_o-contact_f.rb +41 -0
- data/lib/metamess/content/content_o.rb +7 -6
- data/lib/metamess/func.rb +0 -24
- data/lib/metamess/naming.rb +8 -5
- data/lib/metamess/service/service_o-inline_f.rb +4 -3
- data/lib/require.rb +21 -2
- data/lib/statistics/func.rb +72 -0
- data/lib/statistics/general.rb +44 -0
- data/lib/statistics/redisDump.rb +49 -0
- data/lib/storage/redis/cached/pullpush.rb +76 -0
- data/lib/storage/redis/cached/pushPreproc.rb +41 -0
- data/lib/storage/redis/func.rb +47 -0
- data/lib/storage/redis/stat/push.rb +33 -0
- data/lib/tdlib/auth.rb +8 -7
- data/lib/tdlib/init.rb +5 -5
- data/lib/telegram/botapi.rb +2 -1
- data/lib/telegram/wrappers.rb +1 -2
- data/lib/tooling/log.rb +0 -1
- data/lib/tooling/strings.rb +12 -0
- data/lib/triggers/_func.rb +39 -0
- data/lib/triggers/{_meta/full.rb → console_start.rb} +8 -5
- data/lib/triggers/deploy.rb +104 -0
- data/lib/triggers/false.rb +8 -6
- data/lib/triggers/init.rb +23 -10
- data/lib/triggers/systemd_start.rb +24 -0
- data/lib/version.rb +1 -1
- metadata +83 -41
- data/_dev/sidekiq.rb +0 -28
- data/exec/systemd/_fix/dialog_bot@.path +0 -6
- data/exec/systemd/_fix/dialog_bot_dev@.path +0 -6
- data/exec/systemd/_fix/dialog_bot_dev_pre@.service +0 -16
- data/lib/storage/redis/rediscached.rb +0 -97
- data/lib/triggers/deploy/deploy.rb +0 -78
- data/lib/triggers/start/_pre_bot.rb +0 -43
@@ -0,0 +1,76 @@
|
|
1
|
+
######## ####### ######## ####### ######## ########
|
2
|
+
## / / / / License \ \ \ \
|
3
|
+
## Copyleft culture, Copyright (C) is prohibited here
|
4
|
+
## This work is licensed under a CC BY-SA 4.0
|
5
|
+
## Creative Commons Attribution-ShareAlike 4.0 License
|
6
|
+
## Refer to the http://creativecommons.org/licenses/by-sa/4.0/
|
7
|
+
######## ####### ######## ####### ######## ########
|
8
|
+
## / / / / Code Climate \ \ \ \
|
9
|
+
## Language = ruby
|
10
|
+
## Indent = space; 2 chars;
|
11
|
+
######## ####### ######## ####### ######## ########
|
12
|
+
|
13
|
+
module Dialog
|
14
|
+
module Storage
|
15
|
+
module Redis
|
16
|
+
class << self
|
17
|
+
|
18
|
+
|
19
|
+
def typeKeyDescr(query, args)
|
20
|
+
case query[:type]
|
21
|
+
when 'chat'
|
22
|
+
query[:typeKey] = args[:mmsg][:fqndata][:o][:chat][:id]
|
23
|
+
query[:pushCache] = true if query[:key] == 'context'
|
24
|
+
when 'user'
|
25
|
+
query[:typeKey] = args[:mmsg][:fqndata][:o][:from][:id]
|
26
|
+
end
|
27
|
+
end
|
28
|
+
|
29
|
+
|
30
|
+
def pullCached(query, args)
|
31
|
+
typeKeyDescr(query, args)
|
32
|
+
a = redisDo({:type => :cache,
|
33
|
+
:op => :read,
|
34
|
+
:data => {hname: "#{query[:type]}:#{query[:typeKey]}", k: query[:key]},
|
35
|
+
:query => query})
|
36
|
+
#[0] # possible BUG - first array element
|
37
|
+
|
38
|
+
Dialog.logger.debug "Redis Request: #{query}"
|
39
|
+
|
40
|
+
if a.nil? and query[:pushCache] == true
|
41
|
+
a = pushCachedPreproc(query, args)
|
42
|
+
else
|
43
|
+
Dialog.logger.debug "Using cached query for the upper request"
|
44
|
+
end
|
45
|
+
end
|
46
|
+
|
47
|
+
|
48
|
+
def pushCachedPreproc(query, args)
|
49
|
+
typeKeyDescr(query, args)
|
50
|
+
Dialog.logger.debug "Redis pushToCache, typeKey::#{query[:typeKey]}, type::#{query[:type]}"
|
51
|
+
|
52
|
+
case query[:type]
|
53
|
+
when 'chat'
|
54
|
+
case query[:key]
|
55
|
+
when 'context'
|
56
|
+
res = pushCachedPreprocChatContext(query, args)
|
57
|
+
end
|
58
|
+
|
59
|
+
when 'user'
|
60
|
+
case query[:key]
|
61
|
+
when :example
|
62
|
+
true
|
63
|
+
end
|
64
|
+
end
|
65
|
+
|
66
|
+
return redisDo({:type => :cache,
|
67
|
+
:op => :write,
|
68
|
+
:data => {hname: "#{query[:type]}:#{query[:typeKey]}", k: query[:key], v: res},
|
69
|
+
:query => query})
|
70
|
+
end
|
71
|
+
|
72
|
+
|
73
|
+
end
|
74
|
+
end
|
75
|
+
end
|
76
|
+
end
|
@@ -0,0 +1,41 @@
|
|
1
|
+
######## ####### ######## ####### ######## ########
|
2
|
+
## / / / / License \ \ \ \
|
3
|
+
## Copyleft culture, Copyright (C) is prohibited here
|
4
|
+
## This work is licensed under a CC BY-SA 4.0
|
5
|
+
## Creative Commons Attribution-ShareAlike 4.0 License
|
6
|
+
## Refer to the http://creativecommons.org/licenses/by-sa/4.0/
|
7
|
+
######## ####### ######## ####### ######## ########
|
8
|
+
## / / / / Code Climate \ \ \ \
|
9
|
+
## Language = ruby
|
10
|
+
## Indent = space; 2 chars;
|
11
|
+
######## ####### ######## ####### ######## ########
|
12
|
+
|
13
|
+
module Dialog
|
14
|
+
module Storage
|
15
|
+
module Redis
|
16
|
+
class << self
|
17
|
+
|
18
|
+
def pushCachedPreprocChatContext(query, args)
|
19
|
+
Dialog.clearApi(args)
|
20
|
+
args[:smsg] = {chat_id: args[:mmsg][:fqndata][:o][:chat][:id]}
|
21
|
+
args[:api][:op] = 'ChatAdministrators'
|
22
|
+
a = Dialog::BotApi.apiActionGet(args)
|
23
|
+
bman = 0; cman = 0
|
24
|
+
a['result'].each do |user|
|
25
|
+
Dialog.logger.debug "userId #{user['user']['id']}, userStatus #{user['status']}; cliId #{args[:globals][:cliId]}, botId #{Dialog.config.naming.id}"
|
26
|
+
cman = 1 if (user['user']['id'].to_i == args[:globals][:cliId] and user['status'] == 'creator')
|
27
|
+
bman = 1 if (user['user']['id'].to_i == Dialog.config.naming.id and user['status'] == 'administrator')
|
28
|
+
end
|
29
|
+
Dialog.logger.debug "Context args: @bman=#{bman} @cman=#{cman}"
|
30
|
+
res = Dialog::Naming::ChatContext.Fullman if (bman == 1 and cman == 1)
|
31
|
+
res = Dialog::Naming::ChatContext.Botman if (bman == 1 and cman == 0)
|
32
|
+
res = Dialog::Naming::ChatContext.Climan if (bman == 0 and cman == 1)
|
33
|
+
res = Dialog::Naming::ChatContext.Noman if (bman == 0 and cman == 0)
|
34
|
+
|
35
|
+
return res
|
36
|
+
end
|
37
|
+
|
38
|
+
end
|
39
|
+
end
|
40
|
+
end
|
41
|
+
end
|
@@ -0,0 +1,47 @@
|
|
1
|
+
######## ####### ######## ####### ######## ########
|
2
|
+
## / / / / License \ \ \ \
|
3
|
+
## Copyleft culture, Copyright (C) is prohibited here
|
4
|
+
## This work is licensed under a CC BY-SA 4.0
|
5
|
+
## Creative Commons Attribution-ShareAlike 4.0 License
|
6
|
+
## Refer to the http://creativecommons.org/licenses/by-sa/4.0/
|
7
|
+
######## ####### ######## ####### ######## ########
|
8
|
+
## / / / / Code Climate \ \ \ \
|
9
|
+
## Language = ruby
|
10
|
+
## Indent = space; 2 chars;
|
11
|
+
######## ####### ######## ####### ######## ########
|
12
|
+
|
13
|
+
module Dialog
|
14
|
+
module Storage
|
15
|
+
module Redis
|
16
|
+
class << self
|
17
|
+
|
18
|
+
def redisDo(act)
|
19
|
+
case act[:type]
|
20
|
+
when :cache
|
21
|
+
redis = Dialog.redisDBCache
|
22
|
+
when :stat
|
23
|
+
redis = Dialog.redisDBStat
|
24
|
+
when :store
|
25
|
+
redis = Dialog.redisDBStore
|
26
|
+
end
|
27
|
+
|
28
|
+
case act[:op]
|
29
|
+
when :write
|
30
|
+
res = redis.hmset("#{act[:data][:hname]}", ":#{act[:data][:k]}", act[:data][:v])
|
31
|
+
act[:query].key?(:ttl) ? ttl = act[:query][:ttl] : ttl = false
|
32
|
+
redis.expire "#{act[:data][:hname]}", act[:query][:ttl] unless ttl == false
|
33
|
+
Dialog.logger.debug "Redis SET - #{act[:data][:hname]} K:#{act[:data][:k]} V: #{act[:data][:v]} with ttl #{ttl}"
|
34
|
+
act[:data][:v]
|
35
|
+
when :read
|
36
|
+
res = redis.hmget("#{act[:query][:type]}:#{act[:query][:typeKey]}", ":#{act[:query][:key]}")[0] # possible BUG - first array element
|
37
|
+
when :inc
|
38
|
+
res = redis.hincrby("#{act[:data][:hname]}", ":#{act[:data][:k]}", 1)
|
39
|
+
end
|
40
|
+
|
41
|
+
return res
|
42
|
+
end
|
43
|
+
|
44
|
+
end
|
45
|
+
end
|
46
|
+
end
|
47
|
+
end
|
@@ -0,0 +1,33 @@
|
|
1
|
+
######## ####### ######## ####### ######## ########
|
2
|
+
## / / / / License \ \ \ \
|
3
|
+
## Copyleft culture, Copyright (C) is prohibited here
|
4
|
+
## This work is licensed under a CC BY-SA 4.0
|
5
|
+
## Creative Commons Attribution-ShareAlike 4.0 License
|
6
|
+
## Refer to the http://creativecommons.org/licenses/by-sa/4.0/
|
7
|
+
######## ####### ######## ####### ######## ########
|
8
|
+
## / / / / Code Climate \ \ \ \
|
9
|
+
## Language = ruby
|
10
|
+
## Indent = space; 2 chars;
|
11
|
+
######## ####### ######## ####### ######## ########
|
12
|
+
|
13
|
+
module Dialog
|
14
|
+
module Storage
|
15
|
+
module Redis
|
16
|
+
class << self
|
17
|
+
|
18
|
+
|
19
|
+
def pushStat(query)
|
20
|
+
Dialog.logger.debug "Redis pushToStat, typeKey::#{query[:typeKey]}, type::#{query[:type]}"
|
21
|
+
|
22
|
+
query.has_key?(:redisOp) ? op = query[:redisOp].to_sym : op = :write
|
23
|
+
return redisDo({:type => :stat,
|
24
|
+
:op => op,
|
25
|
+
:data => {hname: "#{query[:type]}:#{query[:typeKey]}", k: query[:key], v: query[:value]},
|
26
|
+
:query => query})
|
27
|
+
end
|
28
|
+
|
29
|
+
|
30
|
+
end
|
31
|
+
end
|
32
|
+
end
|
33
|
+
end
|
data/lib/tdlib/auth.rb
CHANGED
@@ -17,8 +17,8 @@ module Dialog
|
|
17
17
|
case mode
|
18
18
|
when 'bot'
|
19
19
|
bot_auth(tgSess)
|
20
|
-
when '
|
21
|
-
|
20
|
+
when 'user'
|
21
|
+
user_auth(tgSess)
|
22
22
|
end
|
23
23
|
end
|
24
24
|
|
@@ -54,7 +54,7 @@ module Dialog
|
|
54
54
|
loop do
|
55
55
|
case state
|
56
56
|
when :wait_token
|
57
|
-
|
57
|
+
Dialog.logger.info 'Please enter bot token:'
|
58
58
|
token = STDIN.gets.strip
|
59
59
|
params = {
|
60
60
|
'@type' => 'checkAuthenticationBotToken',
|
@@ -73,7 +73,7 @@ module Dialog
|
|
73
73
|
|
74
74
|
|
75
75
|
|
76
|
-
def
|
76
|
+
def user_auth(tgSess)
|
77
77
|
state = nil
|
78
78
|
|
79
79
|
tgSess.broadcast(proxy)
|
@@ -102,7 +102,7 @@ module Dialog
|
|
102
102
|
p state
|
103
103
|
case state
|
104
104
|
when :wait_phone
|
105
|
-
|
105
|
+
Dialog.logger.error 'Please enter phone number:'
|
106
106
|
phone = STDIN.gets.strip
|
107
107
|
params = {
|
108
108
|
'@type' => 'setAuthenticationPhoneNumber',
|
@@ -111,7 +111,7 @@ module Dialog
|
|
111
111
|
tgSess.broadcast_and_receive(params).tap(&error_handler)
|
112
112
|
|
113
113
|
when :wait_code
|
114
|
-
|
114
|
+
Dialog.logger.error 'Please enter code from SMS:'
|
115
115
|
code = STDIN.gets.strip
|
116
116
|
params = {
|
117
117
|
'@type' => 'checkAuthenticationCode',
|
@@ -120,7 +120,7 @@ module Dialog
|
|
120
120
|
tgSess.broadcast_and_receive(params).tap(&error_handler)
|
121
121
|
|
122
122
|
when :wait_password
|
123
|
-
|
123
|
+
Dialog.logger.error 'Please enter password:'
|
124
124
|
password = STDIN.gets.strip
|
125
125
|
params = {
|
126
126
|
'@type' => 'checkAuthenticationPassword',
|
@@ -129,6 +129,7 @@ module Dialog
|
|
129
129
|
tgSess.broadcast_and_receive(params).tap(&error_handler)
|
130
130
|
when :ready
|
131
131
|
@me = tgSess.broadcast_and_receive('@type' => 'getMe')
|
132
|
+
Dialog.logger.error 'TDLib cli init success!'
|
132
133
|
break
|
133
134
|
end
|
134
135
|
end
|
data/lib/tdlib/init.rb
CHANGED
@@ -13,12 +13,12 @@ module Dialog
|
|
13
13
|
module TDLib
|
14
14
|
class << self
|
15
15
|
|
16
|
-
def tdlibInit
|
17
|
-
|
16
|
+
def tdlibInit
|
17
|
+
name = Dialog.config.naming.instance
|
18
18
|
FileUtils.mkdir_p("#{Dialog.config.path.dialogData}/tdlib/#{name}")
|
19
19
|
config = {
|
20
|
-
api_id: Dialog.config.
|
21
|
-
api_hash: Dialog.config.
|
20
|
+
api_id: Dialog.config.tdlib.id,
|
21
|
+
api_hash: Dialog.config.tdlib.hash_s,
|
22
22
|
device_model: Dialog.config.naming.app,
|
23
23
|
database_directory: "#{Dialog.config.path.dialogData}/tdlib/#{name}",
|
24
24
|
files_directory: "#{Dialog.config.path.dialogData}/tdlib/#{name}",
|
@@ -28,7 +28,7 @@ module Dialog
|
|
28
28
|
config.lib_path = '/usr/lib64'
|
29
29
|
end
|
30
30
|
|
31
|
-
TD::Api.set_log_verbosity_level(Dialog.config.log.tdlib)
|
31
|
+
TD::Api.set_log_verbosity_level(Dialog.config.log.tdlib.to_i)
|
32
32
|
handler = TD::Client.new(**config)
|
33
33
|
|
34
34
|
return handler
|
data/lib/telegram/botapi.rb
CHANGED
@@ -27,12 +27,13 @@ module Dialog
|
|
27
27
|
end
|
28
28
|
|
29
29
|
def apiAction(args)
|
30
|
-
args[:perf][:preApiAction] = Time.now
|
30
|
+
args[:perf][:preApiAction] = Time.now
|
31
31
|
op = args[:api][:op]
|
32
32
|
Dialog.logger.debug "Operation #{op}: #{args[:smsg]}\n"
|
33
33
|
a = args[:bot].api.send("#{op}".to_sym, args[:smsg])
|
34
34
|
Dialog.logger.debug "API Answer - #{a}"
|
35
35
|
|
36
|
+
args[:perf][:postApiAction] = Time.now
|
36
37
|
if a["ok"] == true
|
37
38
|
return a
|
38
39
|
else
|
data/lib/telegram/wrappers.rb
CHANGED
@@ -26,12 +26,11 @@ module Dialog
|
|
26
26
|
|
27
27
|
def downloadFile(args)
|
28
28
|
file = args[:mmsg][:fqndata][:f][:file]
|
29
|
-
FileUtils.mkdir_p("#{Dialog.config.path.render}/_tmpfiles/")
|
30
29
|
c = Dialog::BotApi.socks5_connection
|
31
30
|
url_file="/file/bot#{Dialog.config.secure.token}/#{file[:path]}"
|
32
31
|
response = c.get url_file
|
33
32
|
file.has_key?(:name) ? name = file[:name] : name = file[:path].split('/')[1]
|
34
|
-
File.open("#{Dialog.config.path.
|
33
|
+
File.open("#{Dialog.config.path.dialogTmpfiles}/#{name}", 'wb') { |fp| fp.write(response.body) }
|
35
34
|
return name
|
36
35
|
end
|
37
36
|
|
data/lib/tooling/log.rb
CHANGED
@@ -0,0 +1,39 @@
|
|
1
|
+
######## ####### ######## ####### ######## ########
|
2
|
+
## / / / / License \ \ \ \
|
3
|
+
## Copyleft culture, Copyright (C) is prohibited here
|
4
|
+
## This work is licensed under a CC BY-SA 4.0
|
5
|
+
## Creative Commons Attribution-ShareAlike 4.0 License
|
6
|
+
## Refer to the http://creativecommons.org/licenses/by-sa/4.0/
|
7
|
+
######## ####### ######## ####### ######## ########
|
8
|
+
## / / / / Code Climate \ \ \ \
|
9
|
+
## Language = ruby
|
10
|
+
## Indent = space; 2 chars;
|
11
|
+
######## ####### ######## ####### ######## ########
|
12
|
+
|
13
|
+
module Dialog
|
14
|
+
module Triggers
|
15
|
+
class << self
|
16
|
+
|
17
|
+
def erbGen(erbFile, dst, erb={})
|
18
|
+
if not File.file?(dst)
|
19
|
+
tmpl = ERB.new(File.read("#{Dialog.config.path.dialog_ruby}/exec/#{erbFile}")).result(binding)
|
20
|
+
File.open(dst, 'w') do |f| f.write tmpl; end
|
21
|
+
end
|
22
|
+
end
|
23
|
+
|
24
|
+
|
25
|
+
def systemd(service, mode)
|
26
|
+
Open3.popen3('/usr/bin/systemctl', '--user', 'daemon-reload')
|
27
|
+
if mode == 'enstart'
|
28
|
+
Open3.popen3('/usr/bin/systemctl', '--user', 'enable', service)
|
29
|
+
Open3.popen3('/usr/bin/systemctl', '--user', 'restart', service)
|
30
|
+
end
|
31
|
+
end
|
32
|
+
|
33
|
+
def trigger__run
|
34
|
+
Dialog._run
|
35
|
+
end
|
36
|
+
|
37
|
+
end
|
38
|
+
end
|
39
|
+
end
|
@@ -10,12 +10,15 @@
|
|
10
10
|
## Indent = space; 2 chars;
|
11
11
|
######## ####### ######## ####### ######## ########
|
12
12
|
|
13
|
-
module Dialog
|
14
|
-
|
13
|
+
module Dialog
|
14
|
+
module Triggers
|
15
|
+
class << self
|
15
16
|
|
16
|
-
def trigger_full
|
17
|
-
|
18
|
-
end
|
19
17
|
|
18
|
+
def trigger_console_start
|
19
|
+
Dialog._run
|
20
|
+
end
|
21
|
+
|
22
|
+
end
|
20
23
|
end
|
21
24
|
end
|
@@ -0,0 +1,104 @@
|
|
1
|
+
######## ####### ######## ####### ######## ########
|
2
|
+
## / / / / License \ \ \ \
|
3
|
+
## Copyleft culture, Copyright (C) is prohibited here
|
4
|
+
## This work is licensed under a CC BY-SA 4.0
|
5
|
+
## Creative Commons Attribution-ShareAlike 4.0 License
|
6
|
+
## Refer to the http://creativecommons.org/licenses/by-sa/4.0/
|
7
|
+
######## ####### ######## ####### ######## ########
|
8
|
+
## / / / / Code Climate \ \ \ \
|
9
|
+
## Language = ruby
|
10
|
+
## Indent = space; 2 chars;
|
11
|
+
######## ####### ######## ####### ######## ########
|
12
|
+
|
13
|
+
module Dialog
|
14
|
+
module Triggers
|
15
|
+
class << self
|
16
|
+
|
17
|
+
def trigger_deploy
|
18
|
+
require 'erb'
|
19
|
+
mode = Dialog.config.run.mode
|
20
|
+
Dialog.logger.debug "Using mode '#{mode}'"
|
21
|
+
FileUtils.mkdir_p "#{Dir.home}/.config/systemd/user"
|
22
|
+
deploy_redis_run unless File.file?("#{Dialog.config.path.dialogData}/redis/dump.rdb")
|
23
|
+
deploy_background_systemd
|
24
|
+
deploy_binaries_notice
|
25
|
+
deploy_bot_systemd
|
26
|
+
deploy_tdlib_systemd
|
27
|
+
deploy_bot_dev_systemd if Dialog.config.run.mode == 'dev'
|
28
|
+
Open3.popen3('/usr/bin/systemctl', '--user', 'daemon-reload')
|
29
|
+
deploy_gems unless File.file?("#{Dir.home}/.config/systemd/user/dialog_bot_dev@.service")
|
30
|
+
end
|
31
|
+
|
32
|
+
|
33
|
+
def deploy_redis_run
|
34
|
+
if File.file?('/usr/sbin/redis-server')
|
35
|
+
redisDir = "#{Dialog.config.path.dialogData}/redis"
|
36
|
+
FileUtils.mkdir_p redisDir
|
37
|
+
erbGen('systemd/dialog_redis.service', "#{Dir.home}/.config/systemd/user/dialog_redis.service")
|
38
|
+
erbGen('conf/redis_local.conf', "#{redisDir}/redis_local.conf")
|
39
|
+
erbGen('conf/redis_global.conf', "#{redisDir}/redis_global.conf")
|
40
|
+
systemd('dialog_redis', 'enstart')
|
41
|
+
Dialog.logger.info "Redis deployment OK!"
|
42
|
+
else
|
43
|
+
Dialog.logger.error "Please install Redis binary"
|
44
|
+
Dialog.logger.info "openSUSE: zypper --no-gpg-checks --non-interactive in redis"
|
45
|
+
exit(false)
|
46
|
+
end
|
47
|
+
end
|
48
|
+
|
49
|
+
|
50
|
+
def deploy_bot_systemd
|
51
|
+
erbGen('systemd/dialog_runMode@.service', "#{Dir.home}/.config/systemd/user/dialog_bot@.service", {:mode => 'bot'})
|
52
|
+
erbGen('systemd/dialog_runner@.path', "#{Dir.home}/.config/systemd/user/dialog_bot_pre@.path", {:desc => "dialog_bot_pre runner", :path => "/tmp/in4/dialog_touch_%i"})
|
53
|
+
erbGen('systemd/dialog_runMode@.service', "#{Dir.home}/.config/systemd/user/dialog_bot_pre@.service", {:mode => 'check', :env => 'bot', :systemdChain => "dialog_bot"})
|
54
|
+
Dialog.logger.info "Bot systemd services deployed OK!"
|
55
|
+
end
|
56
|
+
|
57
|
+
|
58
|
+
def deploy_tdlib_systemd
|
59
|
+
erbGen('systemd/dialog_runMode@.service', "#{Dir.home}/.config/systemd/user/dialog_tdlib@.service", {:mode => 'tdlib'})
|
60
|
+
Dialog.logger.info "TDLib systemd services deployed OK!"
|
61
|
+
end
|
62
|
+
|
63
|
+
|
64
|
+
def deploy_background_systemd
|
65
|
+
erbGen('systemd/dialog_background.service', "#{Dir.home}/.config/systemd/user/dialog_background.service")
|
66
|
+
systemd('dialog_background', 'enstart')
|
67
|
+
Dialog.logger.info "Background systemd services deployed OK!"
|
68
|
+
end
|
69
|
+
|
70
|
+
|
71
|
+
def deploy_bot_dev_systemd
|
72
|
+
erbGen('systemd/dialog_runner@.path', "#{Dir.home}/.config/systemd/user/dialog_bot_dev@.path", {:desc => 'dialog_bot_dev runner', :path => "#{Dialog.config.path.dialog}/dialect/dialect.sqlite"})
|
73
|
+
erbGen('systemd/dialog_runMode@.service', "#{Dir.home}/.config/systemd/user/dialog_bot_dev@.service", {:mode => 'dialect', :env => 'bot', :systemdChain => 'dialog_bot'})
|
74
|
+
Dialog.logger.info "Bot development systemd services deployed OK!"
|
75
|
+
end
|
76
|
+
|
77
|
+
|
78
|
+
def deploy_binaries_notice
|
79
|
+
Dialog.logger.warn "Please install neccessary binaries:"
|
80
|
+
Dialog.logger.info "openSUSE: zypper ar -cf https://download.opensuse.org/repositories/home:/in4ops:/4wrap/openSUSE_Leap_15.0/home:in4ops:4wrap.repo"
|
81
|
+
#will be 'home:in4ops:Innosense:libs'
|
82
|
+
Dialog.logger.info "openSUSE: zypper --no-gpg-checks --non-interactive in zbar tdlib"
|
83
|
+
Dialog.logger.info "sudo loginctl enable-linger $USER"
|
84
|
+
end
|
85
|
+
|
86
|
+
|
87
|
+
def deploy_gems
|
88
|
+
stderr, status = Open3.capture3("gem specific_install -u -l https://gitlab.com/Innosense/libs/dialog_bot_ruby.git", :stdin_data => 'stdin')
|
89
|
+
Dialog.logger.info stderr
|
90
|
+
stderr, status = Open3.capture3("gem specific_install -u -l https://gitlab.com/Innosense/MVP/dialect_lookup.git", :stdin_data => 'stdin')
|
91
|
+
Dialog.logger.info stderr
|
92
|
+
stderr, status = Open3.capture3("gem specific_install -u -l https://gitlab.com/Innosense/MVP/dialog_ruby.git", :stdin_data => 'stdin')
|
93
|
+
Dialog.logger.info stderr
|
94
|
+
Dialog.logger.info "Gems deployment OK!"
|
95
|
+
end
|
96
|
+
|
97
|
+
|
98
|
+
def deploy_gitsync
|
99
|
+
end
|
100
|
+
|
101
|
+
|
102
|
+
end
|
103
|
+
end
|
104
|
+
end
|