imperituroard 0.5.5 → 0.5.7

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 8988eeea2748b58270199ba1bd979fe39a749d4e
4
- data.tar.gz: afa25c7aef167be38455299ec35c9bc87cb99fd5
3
+ metadata.gz: 96222a0e0f14b7abc4ff4d1434d6c55115f07623
4
+ data.tar.gz: 8d1d4264fa33fec3d27cfb5c7c900c1f293a1112
5
5
  SHA512:
6
- metadata.gz: 84e89c1ba592ea3e056e61b68f1b933a7691638e613347cd458e8b68a68b99354519ed34d5e2245cea2cf03c2047d0433c3c85391b047b54e7acfc29000bfbb6
7
- data.tar.gz: 4e045abfa4d7ffc34615c0ebe90fdcf1b0c587efad0bd9d64e08e235b10b3934dbf5f2ce13dae668c3c34dc7b4b8dd59708f68b80abe48e7ad15a590862269af
6
+ metadata.gz: 3c8887a0051b6fb3e7d57d3092ae7ac343f677e32d2e24a2ebaaaf8e54acd15662ad41185d4e2c588a2987001c2c7a5a8fcdc24eb7c65bad6633bdf316f7634b
7
+ data.tar.gz: 98c743b8d56c5a6b637edeb8f11445664ab30af49625eae7d6d1e76f9fa04cebb9dffb07b30fa16a230b08034a86314c8eac6f93e9981476266c296f73113368
@@ -10,7 +10,8 @@ Gem::Specification.new do |spec|
10
10
  spec.description = %q{Gem from imperituroard for different actions}
11
11
  spec.homepage = "https://rubygems.org/"
12
12
  spec.license = "MIT"
13
- spec.required_ruby_version = Gem::Requirement.new(">= 2.3.0")
13
+
14
+ spec.required_ruby_version = Gem::Requirement.new(">= 2.5.0")
14
15
 
15
16
  spec.metadata["allowed_push_host"] = "https://rubygems.org/"
16
17
 
@@ -51,4 +52,6 @@ Gem::Specification.new do |spec|
51
52
  spec.add_dependency "simpleidn", "0.1.1"
52
53
  spec.add_dependency "net-scp", "3.0.0"
53
54
 
55
+ spec.add_dependency "rails", "5.2.4.2"
56
+
54
57
  end
@@ -24,7 +24,7 @@ require 'imperituroard/projects/iot'
24
24
  require 'imperituroard/projects/dns'
25
25
  require 'imperituroard/platforms/cps/qps_connector'
26
26
  require 'imperituroard/platforms/public/telegram'
27
- require 'imperituroard/projects/dns/ukaz60'
27
+ require 'imperituroard/projects/ukaz60'
28
28
 
29
29
  require 'json'
30
30
  require 'ipaddr'
@@ -255,7 +255,7 @@ class Iot
255
255
  end
256
256
 
257
257
  def test111
258
- iot_connector.test
258
+ iot_connector.test1278493
259
259
  end
260
260
 
261
261
 
@@ -345,12 +345,24 @@ class Ukaz60Automation_2
345
345
  belgim_login,
346
346
  belgim_password,
347
347
  belgim_url,
348
- ansible_tmp_folder,
349
- local_tmp_directory,
348
+
349
+ ###########for fortigate############
350
+ ansible_tmp_folder, #folder on fortigate ansible server where url list uploaded
351
+ local_tmp_directory, #folder on local mashin where script work
350
352
  ansible_ssh_user,
351
353
  ansible_ssh_password,
352
- ansible_host,
353
- url_backup_dir)
354
+ ansible_host, #fortigate ansible server
355
+ url_backup_dir,
356
+ ####################################
357
+
358
+ #########for STAROS#############
359
+ staros_login,
360
+ staros_password,
361
+ ukaz60_http_groups,
362
+ ukaz60_https_groups,
363
+ staros_hosts
364
+
365
+ )
354
366
  =begin
355
367
  @ukaz69_dns_func = Dns_2.new(telegram_api_url,
356
368
  telegram_chat_id,
@@ -368,18 +380,24 @@ class Ukaz60Automation_2
368
380
  =end
369
381
 
370
382
  @ukaz60_func = Ukaz60All_2.new(telegram_api_url,
371
- telegram_chat_id,
372
- belgim_login,
373
- belgim_password,
374
- belgim_url,
375
- ansible_tmp_folder,
376
- local_tmp_directory,
377
- ansible_ssh_user,
378
- ansible_ssh_password,
379
- ansible_host,
380
- url_backup_dir)
383
+ telegram_chat_id,
384
+ belgim_login,
385
+ belgim_password,
386
+ belgim_url,
387
+ ansible_tmp_folder,
388
+ local_tmp_directory,
389
+ ansible_ssh_user,
390
+ ansible_ssh_password,
391
+ ansible_host,
392
+ url_backup_dir,
393
+ staros_login,
394
+ staros_password,
395
+ ukaz60_http_groups,
396
+ ukaz60_https_groups,
397
+ staros_hosts)
381
398
  end
382
399
 
400
+ #1 block all devices by belgim list
383
401
  def no_pasaran
384
402
  ukaz60_func.no_pasaran
385
403
  end
@@ -0,0 +1,54 @@
1
+ require 'net/ssh'
2
+
3
+ require 'imperituroard/platforms/staros/staros_parser'
4
+
5
+ class StarosGet_2
6
+
7
+ attr_accessor :staros_parser, :staros_login, :staros_password
8
+
9
+ def initialize(staros_login, staros_password)
10
+ @staros_parser = StarosParser_2.new
11
+ @staros_login = staros_login
12
+ @staros_password = staros_password
13
+ end
14
+
15
+
16
+ #get all active-charging data
17
+ #host - staros device IP address
18
+ #return parsed ECS configuration in JSON
19
+ def get_all_active_charging(host_ip)
20
+
21
+ input_data = {:host_ip => host_ip}
22
+ out_data = {}
23
+ config_all = []
24
+
25
+ begin
26
+
27
+ Net::SSH.start(host_ip, staros_login, :password => staros_password) do |ssh|
28
+ staros_answer = ssh.exec!("show configuration active-charging service all")
29
+ staros_answer = staros_answer.gsub("#exit", "exit")
30
+ #staros_answer = staros_answer.gsub("\n", " ")
31
+ #p staros_answer
32
+ #host_pool_regexp = /(host-pool.+\s+exit)/
33
+ #fff = staros_answer.scan(host_pool_regexp)
34
+ #p fff
35
+
36
+ staros_answer = staros_answer.split("\n")
37
+ for ttt in staros_answer
38
+ regexp_full_command = /\s+(.+)/
39
+ group_ruled_ukaz60_9 = ttt.match(regexp_full_command)
40
+ if group_ruled_ukaz60_9 != nil
41
+ config_all.push(group_ruled_ukaz60_9[1])
42
+ else
43
+ config_all.push(ttt)
44
+ end
45
+ end
46
+ end
47
+ staros_json = staros_parser.ecs_config_parser(config_all)
48
+ out_data = {:code => 200, :result => "Successfully completed", :parsed_data => staros_json}
49
+ rescue
50
+ out_data = {:code => 507, :result => "get_all_active_charging: Unknown SDK error"}
51
+ end
52
+ out_data
53
+ end
54
+ end
@@ -0,0 +1,141 @@
1
+ class StarosParser_2
2
+
3
+
4
+ #parser for staros ECS configuration
5
+ def ecs_config_parser(config_string_array)
6
+
7
+ out_ans = {}
8
+ parsed_config = {"config" => {"active-charging service" => []}}
9
+ config_string_array.shift
10
+
11
+ # {"config" => {"active-charging service" => [{"ECS-SVC" => {"root" => [], "host-pool"=>{"1b1.nekurims.top"=>["ip 185.59.101.182/32"]}, "ruledef"=>{"VKONTAKTE_CDN_b"=>[]}}}}]}
12
+
13
+ flag_inter_ecs_name = 0
14
+ current_ecs_name = ""
15
+ current_section = "root"
16
+ current_section_name = ""
17
+ section_flag = 0
18
+ section_deep = 0
19
+ ecs_number = 0
20
+ for aaa in config_string_array
21
+ if section_deep == 0 && aaa[0..22] == "active-charging service" #&& flag_inter_ecs_name == 0
22
+ ecs_name_regexp = /active-charging service (\S+)/
23
+ current_ecs_name = aaa.match(ecs_name_regexp)[1]
24
+ #p current_ecs_name
25
+ parsed_config["config"]["active-charging service"].push({current_ecs_name => {"root" => [],
26
+ "host-pool" => {},
27
+ "port-map" => {},
28
+ "ruledef" => {},
29
+ "access-ruledef" => {},
30
+ "group-of-ruledefs" => {},
31
+ "packet-filter" => {},
32
+ "edr-format" => {},
33
+ "xheader-format" => {},
34
+ "charging-action" => {},
35
+ "rulebase" => {},
36
+ "fw-and-nat policy" => {}
37
+ }})
38
+ flag_inter_ecs_name = 1
39
+ section_deep = 1
40
+ current_section = "root"
41
+ else
42
+ if aaa == "exit" && section_deep == 2
43
+ section_flag = 0
44
+ section_deep = section_deep - 1
45
+ current_section = "root"
46
+ elsif aaa[0..9] == "host-pool " && section_flag == 0 && section_deep == 1
47
+ current_section = "host-pool"
48
+ ecs_hostpool_regexp = /host-pool\s+(.+)/
49
+ current_section_name = aaa.match(ecs_hostpool_regexp)[1]
50
+ parsed_config["config"]["active-charging service"][ecs_number][current_ecs_name][current_section][current_section_name] = []
51
+ section_flag = 1
52
+ section_deep = section_deep + 1
53
+ elsif aaa[0..8] == "port-map " && section_flag == 0 && section_deep == 1
54
+ current_section = "port-map"
55
+ ecs_portmap_regexp = /port-map\s+(.+)/
56
+ current_section_name = aaa.match(ecs_portmap_regexp)[1]
57
+ parsed_config["config"]["active-charging service"][ecs_number][current_ecs_name][current_section][current_section_name] = []
58
+ section_flag = 1
59
+ section_deep = section_deep + 1
60
+ elsif aaa[0..7] == "ruledef " && section_flag == 0 && section_deep == 1
61
+ current_section = "ruledef"
62
+ ecs_ruldef_regexp = /ruledef\s+(.+)/
63
+ current_section_name = aaa.match(ecs_ruldef_regexp)[1]
64
+ parsed_config["config"]["active-charging service"][ecs_number][current_ecs_name][current_section][current_section_name] = []
65
+ section_flag = 1
66
+ section_deep = section_deep + 1
67
+ elsif aaa[0..14] == "access-ruledef " && section_flag == 0 && section_deep == 1
68
+ current_section = "access-ruledef"
69
+ ecs_accruldef_regexp = /access-ruledef\s+(.+)/
70
+ current_section_name = aaa.match(ecs_accruldef_regexp)[1]
71
+ parsed_config["config"]["active-charging service"][ecs_number][current_ecs_name][current_section][current_section_name] = []
72
+ section_flag = 1
73
+ section_deep = section_deep + 1
74
+ elsif aaa[0..17] == "group-of-ruledefs " && section_flag == 0 && section_deep == 1
75
+ current_section = "group-of-ruledefs"
76
+ ecs_grruldef_regexp = /group-of-ruledefs\s+(.+)/
77
+ current_section_name = aaa.match(ecs_grruldef_regexp)[1]
78
+ parsed_config["config"]["active-charging service"][ecs_number][current_ecs_name][current_section][current_section_name] = []
79
+ section_flag = 1
80
+ section_deep = section_deep + 1
81
+ elsif aaa[0..13] == "packet-filter " && section_flag == 0 && section_deep == 1
82
+ current_section = "packet-filter"
83
+ ecs_packfil_regexp = /packet-filter\s+(.+)/
84
+ current_section_name = aaa.match(ecs_packfil_regexp)[1]
85
+ parsed_config["config"]["active-charging service"][ecs_number][current_ecs_name][current_section][current_section_name] = []
86
+ section_flag = 1
87
+ section_deep = section_deep + 1
88
+ elsif aaa[0..10] == "edr-format " && section_flag == 0 && section_deep == 1
89
+ current_section = "edr-format"
90
+ ecs_edrformat_regexp = /edr-format\s+(.+)/
91
+ current_section_name = aaa.match(ecs_edrformat_regexp)[1]
92
+ parsed_config["config"]["active-charging service"][ecs_number][current_ecs_name][current_section][current_section_name] = []
93
+ section_flag = 1
94
+ section_deep = section_deep + 1
95
+ elsif aaa[0..14] == "xheader-format " && section_flag == 0 && section_deep == 1
96
+ current_section = "xheader-format"
97
+ ecs_xheader_regexp = /xheader-format\s+(.+)/
98
+ current_section_name = aaa.match(ecs_xheader_regexp)[1]
99
+ parsed_config["config"]["active-charging service"][ecs_number][current_ecs_name][current_section][current_section_name] = []
100
+ section_flag = 1
101
+ section_deep = section_deep + 1
102
+ elsif aaa[0..15] == "charging-action " && section_flag == 0 && section_deep == 1
103
+ current_section = "charging-action"
104
+ ecs_xheader_regexp = /charging-action\s+(.+)/
105
+ current_section_name = aaa.match(ecs_xheader_regexp)[1]
106
+ parsed_config["config"]["active-charging service"][ecs_number][current_ecs_name][current_section][current_section_name] = []
107
+ section_flag = 1
108
+ section_deep = section_deep + 1
109
+ elsif aaa[0..8] == "rulebase " && section_flag == 0 && section_deep == 1
110
+ current_section = "rulebase"
111
+ ecs_xheader_regexp = /rulebase\s+(.+)/
112
+ current_section_name = aaa.match(ecs_xheader_regexp)[1]
113
+ parsed_config["config"]["active-charging service"][ecs_number][current_ecs_name][current_section][current_section_name] = []
114
+ section_flag = 1
115
+ section_deep = section_deep + 1
116
+ elsif aaa[0..17] == "fw-and-nat policy " && section_flag == 0 && section_deep == 1
117
+ current_section = "fw-and-nat policy"
118
+ ecs_xheader_regexp = /fw-and-nat policy\s+(.+)/
119
+ current_section_name = aaa.match(ecs_xheader_regexp)[1]
120
+ parsed_config["config"]["active-charging service"][ecs_number][current_ecs_name][current_section][current_section_name] = []
121
+ section_flag = 1
122
+ section_deep = section_deep + 1
123
+ elsif section_flag == 1 && current_section != "root" && current_section != "end" && section_deep == 2
124
+ parsed_config["config"]["active-charging service"][ecs_number][current_ecs_name][current_section][current_section_name].push(aaa)
125
+ elsif current_section == "root" && section_deep == 1 && aaa != "end"
126
+ parsed_config["config"]["active-charging service"][ecs_number][current_ecs_name]["root"].push(aaa)
127
+ elsif aaa == "end"
128
+ section_flag = 0
129
+ section_deep = 0
130
+ current_section = "end"
131
+ p "end"
132
+ else
133
+ p aaa
134
+ end
135
+ end
136
+ end
137
+ parsed_config
138
+ end
139
+ end
140
+
141
+
@@ -1,4 +1,4 @@
1
- require 'imperituroard/projects/dns/ukaz60/dns_update'
1
+ require 'imperituroard/projects/ukaz60/dns_update'
2
2
 
3
3
 
4
4
  class Dns_2
@@ -1037,7 +1037,7 @@ class IotFunctions_2
1037
1037
  end
1038
1038
 
1039
1039
 
1040
- def test
1040
+ def test1278493
1041
1041
  #ddd = MongoIot.new(mongoip, mongoport, mongo_database)
1042
1042
  #ddd.get_profiles_by_login("test")
1043
1043
 
@@ -5,7 +5,7 @@
5
5
 
6
6
 
7
7
 
8
- class Infobip_1
8
+ class Infobip_2
9
9
 
10
10
  def test
11
11
  gg = "{\"destinations\"=>[{\"to\"=>{\"phoneNumber\"=>\"375297116638\", \"emailAddress\"=>nil}}], \"scenarioKey\"=>\"1\", \"viber\"=>nil, \"sms\"=>{\"text\"=>\"карточка готова\"}, \"sendAt\"=>\"2019-08-15T08:40:00.000\", \"notifyUrl\"=>\"https://bpmonline.bankdabrabyt.by:444/0/ServiceModel/ScGetReports.svc/GetReports\", \"notifyContentType\"=>\"application/json\", \"controller\"=>\"bank\", \"action\"=>\"api\", \"bank\"=>{\"destinations\"=>[{\"to\"=>{\"phoneNumber\"=>\"375297116638\", \"emailAddress\"=>nil}}], \"scenarioKey\"=>\"1\", \"viber\"=>nil, \"sms\"=>{\"text\"=>\"карточка готова\"}, \"sendAt\"=>\"2019-08-15T08:40:00.000\", \"notifyUrl\"=>\"https://bpmonline.bankdabrabyt.by:444/0/ServiceModel/ScGetReports.svc/GetReports\", \"notifyContentType\"=>\"application/json\"}}"
@@ -0,0 +1,138 @@
1
+ $LOAD_PATH.unshift File.expand_path("../projects/ukaz60", __dir__)
2
+
3
+ require 'json'
4
+
5
+ require 'imperituroard/projects/ukaz60/belgim'
6
+ require 'imperituroard/projects/ukaz60/fortigate'
7
+ require 'imperituroard/projects/ukaz60/staros'
8
+
9
+ class Ukaz60All_2
10
+
11
+ attr_accessor :telegram_messanger,
12
+ :belgim_login,
13
+ :belgim_password,
14
+ :belgim_url,
15
+ :ukaz60_add_func,
16
+ :belgim_connector,
17
+ :forti_connector,
18
+ :staros_connector
19
+
20
+ def initialize(telegram_api_url,
21
+ telegram_chat_id,
22
+ belgim_login,
23
+ belgim_password,
24
+ belgim_url,
25
+ ansible_tmp_folder,
26
+ local_tmp_directory,
27
+ ansible_ssh_user,
28
+ ansible_ssh_password,
29
+ ansible_host,
30
+ url_backup_dir,
31
+ staros_login,
32
+ staros_password,
33
+ ukaz60_http_groups,
34
+ ukaz60_https_groups,
35
+ staros_hosts
36
+
37
+ )
38
+ @telegram_messanger = Telegram_2.new(telegram_api_url, telegram_chat_id)
39
+ @belgim_login = belgim_login
40
+ @belgim_password = belgim_password
41
+ @belgim_url = belgim_url
42
+ @ukaz60_add_func = AddFuncUkaz60_2.new
43
+ @belgim_connector = Belgim_2.new(telegram_api_url, telegram_chat_id, belgim_login, belgim_password, belgim_url)
44
+ @forti_connector = FortiUkaz60_2.new(ansible_tmp_folder, local_tmp_directory, ansible_ssh_user, ansible_ssh_password, ansible_host, url_backup_dir)
45
+ @staros_connector = Ukaz60Staros_2.new(staros_login, staros_password, ukaz60_http_groups, ukaz60_https_groups, staros_hosts)
46
+
47
+ end
48
+
49
+ def forti_process(get_belgim_data)
50
+ forti_answer = {}
51
+ begin
52
+ format_for_forti = forti_connector.prepare_url_config_fortigate(get_belgim_data)
53
+ if format_for_forti[:code] == 200
54
+ url_uploading = forti_connector.upload_url(format_for_forti[:body][:to_fortigate])
55
+ if url_uploading[:code] == 200
56
+ update_fortigate_ansible = forti_connector.update_weburl_fortigate
57
+ if update_fortigate_ansible[:code] == 200
58
+ forti_answer = {:code => 200, :result => "Fortigate processed", :data => update_fortigate_ansible[:body][:body], :num_uploaded_to_forti => format_for_forti[:body][:num_list]}
59
+ else
60
+ forti_answer = {:code => update_fortigate_ansible[:code], :result => update_fortigate_ansible[:result]}
61
+ end
62
+ forti_connector.clean_tmp_folders
63
+ else
64
+ forti_answer = {:code => 401, :result => "Failed for uploading data to ansible server"}
65
+ end
66
+ else
67
+ forti_answer = {:code => 400, :result => "Error while processing data"}
68
+ end
69
+ rescue
70
+ forti_answer = {:code => 507, :result => "Unknown error with Forti"}
71
+ end
72
+ forti_answer
73
+ end
74
+
75
+ def staros_process(get_belgim_data)
76
+
77
+ output_starprocess = {}
78
+
79
+ begin
80
+ #get data from staros
81
+ staros_blocks_current = staros_connector.get_all_staros_ukaz60
82
+
83
+ if staros_blocks_current[:code] == 200
84
+ #compare data with belgim
85
+ answ = ukaz60_add_func.staros_compare_http(staros_blocks_current, get_belgim_data)
86
+
87
+ if answ[:code] == 200
88
+ #output_starprocess = {:code => 200, :result => "Staros processed", :data => {:block_me => answ[:body][:for_block][:notblocked_stat], :unblock_me =>answ[:body][:for_unblock][:for_unblock_stat]}}
89
+ output_starprocess = ukaz60_add_func.format_star_processed_answ(answ)[:body][:to_message]
90
+ else
91
+ output_starprocess = answ
92
+ end
93
+
94
+ else
95
+ output_starprocess = staros_blocks_current
96
+ end
97
+ rescue
98
+ output_starprocess = {:code => 507, :result => "staros_process: Something wrong"}
99
+ end
100
+
101
+ output_starprocess
102
+ end
103
+
104
+ def no_pasaran
105
+
106
+ answer_output = {}
107
+ forti_answer = {}
108
+ staros_answer = {}
109
+
110
+ begin
111
+ get_belgim_data = belgim_connector.belgim_ukaz60_get
112
+
113
+ if get_belgim_data[:code] == 200
114
+
115
+ thr_forti = Thread.new do
116
+ forti_answer = self.forti_process(get_belgim_data)
117
+ end
118
+
119
+ thr_staros = Thread.new do
120
+ staros_answer = staros_process(get_belgim_data)
121
+ end
122
+
123
+ thr_staros.join
124
+ thr_forti.join
125
+
126
+ answer_output = {:code => 200, :result => "No pasaran", :fortigate => forti_answer, :staros => staros_answer, :info_belgim => get_belgim_data[:number]}
127
+ else
128
+ answer_output = {:code => 404, :result => "Failed to receive data from Belgim"}
129
+ end
130
+
131
+ rescue
132
+ answer_output = {:code => 507, :result => "no_pasaran: Unknown SDK error"}
133
+ end
134
+ telegram_messanger.telegram_message(JSON.pretty_generate(answer_output))
135
+ answer_output
136
+ end
137
+
138
+ end
@@ -1,5 +1,5 @@
1
1
  require 'imperituroard/platforms/public/telegram'
2
- require 'imperituroard/projects/dns/ukaz60/ukaz60_add_func'
2
+ require 'imperituroard/projects/ukaz60/ukaz60_add_func'
3
3
 
4
4
  require 'simpleidn'
5
5
 
@@ -45,6 +45,8 @@ class Belgim_2
45
45
  url_parsed = []
46
46
  ipv4_parsed = []
47
47
  ipv6_parsed = []
48
+ https_parsed = []
49
+ url_all = []
48
50
 
49
51
  f2 =[]
50
52
  results = {}
@@ -99,7 +101,7 @@ class Belgim_2
99
101
  processed_url = func_processed[:domain_only]
100
102
  processed_domain_in_url = func_processed[:processed_domain_in_url]
101
103
 
102
- if func_processed[:type] == "domain" || func_processed[:protocol] == "https"
104
+ if func_processed[:type] == "domain"
103
105
  domain_parsed.push(processed_url)
104
106
  check_if_www = processed_url[0]+processed_url[1]+processed_url[2]+processed_url[3]
105
107
 
@@ -126,6 +128,17 @@ class Belgim_2
126
128
  gar1url = processed_domain_in_url[4..processed_domain_in_url.length]
127
129
  url_parsed.push(func_processed[:protocol] + "://" + gar1url)
128
130
  end
131
+ elsif func_processed[:protocol] == "https"
132
+ #additional section for https urls
133
+ https_parsed.push(func_processed[:protocol] + "://" + processed_domain_in_url)
134
+ check_if_www2https = processed_domain_in_url[0]+processed_domain_in_url[1]+processed_domain_in_url[2]+processed_domain_in_url[3]
135
+ if check_if_www2https != "www."
136
+ https_parsed.push(func_processed[:protocol] + "://" + "www."+processed_domain_in_url)
137
+ end
138
+ if check_if_www2https == "www."
139
+ gar1url_https = processed_domain_in_url[4..processed_domain_in_url.length]
140
+ https_parsed.push(func_processed[:protocol] + "://" + gar1url_https)
141
+ end
129
142
  end
130
143
  end
131
144
  end
@@ -154,22 +167,44 @@ class Belgim_2
154
167
  url_parsed = url_parsed.uniq
155
168
  ipv6_parsed = ipv6_parsed.uniq
156
169
  ipv4_parsed = ipv4_parsed.uniq
170
+ https_parsed = https_parsed.uniq
171
+
172
+ https_parsed_tmmp = []
173
+ https_parsed.each do |tmp_tmp|
174
+ https_parsed_tmmp.push(tmp_tmp.gsub("https://", "http://"))
175
+ end
176
+ url_all = https_parsed_tmmp + url_parsed
177
+ url_all = url_all.uniq
178
+ url_all_num = url_all.length
179
+
157
180
 
158
181
  dns_num = domain_parsed.length
159
182
  ipv4_num = ipv4_parsed.length
160
183
  ipv6_num = ipv6_parsed.length
161
184
  url_num = url_parsed.length
185
+ https_num = https_parsed.length
186
+
187
+ all_num = dns_num + ipv4_num + ipv6_num + url_num + https_num
188
+
189
+
162
190
 
163
- output_data = {:code => 200, :result => "Request completed successfully",
164
- :number =>{:dns_num => dns_num,
165
- :url_num => url_num,
166
- :ipv4_num => ipv4_num,
167
- :ipv6_num => ipv6_num
191
+ output_data = {:code => 200,
192
+ :result => "Request completed successfully",
193
+ :number => {:domain_num => dns_num,
194
+ :url_http_num => url_num,
195
+ :ipv4_num => ipv4_num,
196
+ :ipv6_num => ipv6_num,
197
+ :url_https_num => https_num,
198
+ :url_all_num => url_all_num,
199
+ :all_num => all_num
168
200
  },
169
201
  :domains_for_block => domain_parsed,
170
202
  :url_for_block => url_parsed,
171
203
  :ipv6_parsed => ipv6_parsed,
172
- :ipv4_parsed => ipv4_parsed}
204
+ :ipv4_parsed => ipv4_parsed,
205
+ :https_parsed => https_parsed,
206
+ :url_all => url_all
207
+ }
173
208
 
174
209
  rescue
175
210
  output_data = {:code => 507, :result => "belgim_ukaz60_get: Unknown error"}
@@ -1,7 +1,7 @@
1
1
  require 'net/scp'
2
2
  require 'date'
3
3
 
4
- require 'imperituroard/projects/dns/ukaz60/ukaz60_add_func'
4
+ require 'imperituroard/projects/ukaz60/ukaz60_add_func'
5
5
 
6
6
 
7
7
  class FortiUkaz60_2
@@ -16,7 +16,12 @@ class FortiUkaz60_2
16
16
  :url_backup_dir
17
17
 
18
18
 
19
- def initialize(ansible_tmp_folder, local_tmp_directory, ansible_ssh_user, ansible_ssh_password, ansible_host, url_backup_dir)
19
+ def initialize(ansible_tmp_folder,
20
+ local_tmp_directory,
21
+ ansible_ssh_user,
22
+ ansible_ssh_password,
23
+ ansible_host,
24
+ url_backup_dir)
20
25
  @ansible_tmp_folder = ansible_tmp_folder
21
26
  @local_tmp_directory = local_tmp_directory
22
27
  @ansible_ssh_user = ansible_ssh_user
@@ -82,6 +87,8 @@ class FortiUkaz60_2
82
87
  Net::SSH.start(ansible_host, ansible_ssh_user, :password => ansible_ssh_password) do |ssh|
83
88
  ansible_answer = ssh.exec!(command)
84
89
  end
90
+ p "ansible_answer: #{ansible_answer}"
91
+
85
92
  #hh = "\nPLAY [ha_master] ***************************************************************\n\nTASK [set url table] ***********************************************************\nchanged: [gom32sg1]\nchanged: [bre32sg1]\nchanged: [min32sg1]\nchanged: [vit32sg1]\nchanged: [min32sg3]\nchanged: [gro32sg1]\nchanged: [mog32sg1]\n\nTASK [check current url table] *************************************************\nok: [min32sg1]\nok: [bre32sg1]\nok: [min32sg3]\nok: [vit32sg1]\nok: [gom32sg1]\nok: [gro32sg1]\nok: [mog32sg1]\n\nTASK [debug] *******************************************************************\nok: [min32sg1] => {\n \"msg\": \"URL loaded/in-file: [1273 / 1273]\"\n}\nok: [min32sg3] => {\n \"msg\": \"URL loaded/in-file: [1273 / 1273]\"\n}\nok: [bre32sg1] => {\n \"msg\": \"URL loaded/in-file: [1273 / 1273]\"\n}\nok: [vit32sg1] => {\n \"msg\": \"URL loaded/in-file: [1273 / 1273]\"\n}\nok: [gom32sg1] => {\n \"msg\": \"URL loaded/in-file: [1273 / 1273]\"\n}\nok: [gro32sg1] => {\n \"msg\": \"URL loaded/in-file: [1273 / 1273]\"\n}\nok: [mog32sg1] => {\n \"msg\": \"URL loaded/in-file: [1273 / 1273]\"\n}\n\nPLAY RECAP *********************************************************************\nbre32sg1 : ok=3 changed=1 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0 \ngom32sg1 : ok=3 changed=1 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0 \ngro32sg1 : ok=3 changed=1 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0 \nmin32sg1 : ok=3 changed=1 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0 \nmin32sg3 : ok=3 changed=1 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0 \nmog32sg1 : ok=3 changed=1 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0 \nvit32sg1 : ok=3 changed=1 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0 \n\n"
86
93
  answ_pr = add_func_connector.ansible_answer_parse(ansible_answer)
87
94
  output_data = {:code => 200, :result => "update_weburl_fortigate: Request completed", :body => answ_pr}
@@ -147,10 +154,19 @@ class FortiUkaz60_2
147
154
  })
148
155
  end
149
156
 
157
+ #for url in data_belgim[:url_for_block]
150
158
  for url in data_belgim[:url_for_block]
151
- format_url = url.gsub("#", "")
159
+ format_url1 = add_func_connector.http_to_forti_prep(url)
160
+ to_fortigate.push({
161
+ "url" => format_url1,
162
+ "action" => "block"
163
+ })
164
+ end
165
+
166
+ for https in data_belgim[:https_parsed]
167
+ format_url2 = add_func_connector.https_to_forti_prep(https)
152
168
  to_fortigate.push({
153
- "url" => format_url,
169
+ "url" => format_url2,
154
170
  "action" => "block"
155
171
  })
156
172
  end
@@ -0,0 +1,126 @@
1
+ require 'net/ssh'
2
+
3
+ require 'imperituroard/platforms/staros/get_data_ssh'
4
+
5
+
6
+ class Ukaz60Staros_2
7
+
8
+ attr_accessor :staros_platform_get,
9
+ :ukaz60_http_groups,
10
+ :ukaz60_https_groups,
11
+ :staros_hosts
12
+
13
+ def initialize(star_login, star_password, ukaz60_http_groups, ukaz60_https_groups, staros_hosts)
14
+ @staros_platform_get = StarosGet_2.new(star_login, star_password)
15
+ @ukaz60_http_groups = ukaz60_http_groups
16
+ @ukaz60_https_groups = ukaz60_https_groups
17
+ @staros_hosts = staros_hosts
18
+ end
19
+
20
+
21
+ #get data from staros and return urls from staros
22
+ def get_data_staros(ip_staros)
23
+
24
+ input_data = {:ip_staros => ip_staros}
25
+ output_data = {}
26
+ ecs_name = ""
27
+ blocked_urls_http = []
28
+ blocked_urls_https = []
29
+
30
+ begin
31
+ ecs_config_json = staros_platform_get.get_all_active_charging(ip_staros)
32
+
33
+ if ecs_config_json[:code] == 200
34
+
35
+ #get ecs name
36
+ ecs_sss = ecs_config_json[:parsed_data]["config"]["active-charging service"][0]
37
+ ecs_sss.each do |hhh|
38
+ ecs_name = hhh[0]
39
+ end
40
+
41
+ regexp_ruldef = /add-ruledef priority \d+ ruledef (.+)/
42
+
43
+ #for http urls
44
+ begin
45
+ ukaz60_http_groups.each do |rule|
46
+ group_ruled_ukaz60 = ecs_config_json[:parsed_data]["config"]["active-charging service"][0][ecs_name]["group-of-ruledefs"][rule]
47
+
48
+ group_ruled_ukaz60.each do |gr_rul_str|
49
+ ruledef_name = gr_rul_str.match(regexp_ruldef)[1]
50
+ rdef_config = ecs_config_json[:parsed_data]["config"]["active-charging service"][0][ecs_name]["ruledef"][ruledef_name]
51
+ rdef_config.each do |g|
52
+ if g[0..15] == "www url contains"
53
+ blocked_urls_http.push({:url => g.gsub("www url contains ", ""), :ruledef => ruledef_name, :gr_of_ruledefs => rule, :gr_rul_str => gr_rul_str})
54
+ end
55
+ end
56
+ end
57
+ end
58
+ rescue
59
+ blocked_urls_http.push("failed")
60
+ end
61
+
62
+ for https_rule in ukaz60_https_groups
63
+ group_rule_https = ecs_config_json[:parsed_data]["config"]["active-charging service"][0][ecs_name]["group-of-ruledefs"][https_rule]
64
+ end
65
+
66
+ output_data = {:code => 200, :result => "Success", :ecs_name => ecs_name, :blocked_urls_http => blocked_urls_http, :http_rules_num => blocked_urls_http.length}
67
+
68
+ else
69
+ output_data = ecs_config_json
70
+ end
71
+ rescue
72
+ output_data = {:code => 507, :result => "get_data_staros: Unknown SDK error"}
73
+ end
74
+ output_data
75
+ # Net::SSH.start("172.24.214.17", "starscript", :password => "$rfv3EDC") do |ssh|
76
+ # staros_answer = ssh.exec!("show configuration active-charging service all")
77
+ # p staros_answer
78
+ #
79
+ # staros_answer = staros_answer.gsub("\n", "")
80
+ #
81
+ # regexp_ukaz60_9 = /group-of-ruledefs Ukaz60-9_HTTP.+HTTP\s+#exit/
82
+ # regexp_ukaz60_https = /group-of-ruledefs Ukaz60_HTTPS.+HTTPS\s+#exit/
83
+ # regexp_ukaz60_7 = /group-of-ruledefs Ukaz60-7_HTTP.+HTTP\s+#exit/
84
+ #
85
+ #
86
+ #
87
+ # group_ruled_ukaz60_9 = staros_answer.match(regexp_ukaz60_9)[0]
88
+ # group_ruled_ukaz60_https = staros_answer.match(regexp_ukaz60_https)[0]
89
+ # group_ruled_ukaz60_7 = staros_answer.match(regexp_ukaz60_7)[0]
90
+ #
91
+ # p group_ruled_ukaz60_9
92
+ # p group_ruled_ukaz60_https
93
+ # p group_ruled_ukaz60_7
94
+ #
95
+ # end
96
+ end
97
+
98
+
99
+ #procedure for get data from all MPC
100
+ def get_all_staros_ukaz60
101
+
102
+ returned_data = {:mpc_data => [], :add_format => {}}
103
+ get_all_staros_ukaz60_1 = []
104
+
105
+ begin
106
+ staros_hosts.each do |ggsn|
107
+ get_all_staros_ukaz60_1 << Thread.new do
108
+ begin
109
+ mpc_data = self.get_data_staros(ggsn[1])
110
+ returned_data[:mpc_data].push({:code => 200, :result => "Success", :hostname => ggsn[0], :host_ip => ggsn[1], :body => mpc_data})
111
+ returned_data[:add_format][ggsn[0]] = mpc_data
112
+ rescue
113
+ returned_data[:mpc_data].push({:code => 507, :result => "Unknown thread error", :hostname => ggsn[0], :host_ip => ggsn[1], :body => {}})
114
+ end
115
+ end
116
+ end
117
+ get_all_staros_ukaz60_1.each(&:join)
118
+ returned_data[:code] = 200
119
+ returned_data[:result] = "get_all_staros_ukaz60: Success"
120
+ rescue
121
+ returned_data[:code] = 507
122
+ returned_data[:result] = "get_all_staros_ukaz60: Unknown SDK error"
123
+ end
124
+ returned_data
125
+ end
126
+ end
@@ -116,7 +116,8 @@ class AddFuncUkaz60_2
116
116
 
117
117
  begin
118
118
  answ_ans_parsed = answer_string.gsub("\n", " ")
119
- result_out = []
119
+ result_out = {}
120
+ #result_out = []
120
121
  num_ok = 0
121
122
  num_failed = 0
122
123
  final_checks = /(\S+)\s+:\s+ok=(\d)\s+changed=(\d)\s+unreachable=(\d)\s+failed=(\d)\s+skipped=(\d)\s+rescued=(\d)\s+ignored=(\d)\s+/
@@ -126,14 +127,17 @@ class AddFuncUkaz60_2
126
127
  for aaa in processed_data
127
128
  begin
128
129
  if aaa[1].to_i>0 && aaa[3].to_i==0 && aaa[4].to_i==0 && aaa[5].to_i==0 && aaa[6].to_i==0 && aaa[7].to_i==0
129
- result_out.push({aaa[0] => "Ok"})
130
+ result_out[aaa[0]] = "Ok"
131
+ #result_out.push({aaa[0] => "Ok"})
130
132
  num_ok = num_ok + 1
131
133
  else
132
- result_out.push({aaa[0] => "Failed"})
134
+ result_out[aaa[0]] = "Failed"
135
+ #result_out.push({aaa[0] => "Failed"})
133
136
  num_failed = num_failed + 1
134
137
  end
135
138
  rescue
136
- result_out.push({"unknown" => aaa.to_s})
139
+ result_out["unknown"] = aaa.to_s
140
+ #result_out.push({"unknown" => aaa.to_s})
137
141
  num_failed = num_failed + 1
138
142
  end
139
143
  end
@@ -148,4 +152,146 @@ class AddFuncUkaz60_2
148
152
  output_data
149
153
  end
150
154
 
155
+
156
+ def https_to_forti_prep(domain)
157
+ f0 = domain.gsub("#", "")
158
+ f1 = f0.gsub("https://", "").split("/")
159
+ f1[0]
160
+ end
161
+
162
+ def http_to_forti_prep(domain)
163
+ domain.gsub("#", "")
164
+ end
165
+
166
+ #result array2-array1
167
+ #array2 - all
168
+ #array1 - blocked
169
+ def array_hash_compare(array1, array2)
170
+ diff = []
171
+ array2.each do |h1|
172
+ if array1.include?(h1)
173
+ nil
174
+ else
175
+ diff.push(h1)
176
+ end
177
+ end
178
+ diff
179
+ end
180
+
181
+
182
+ #procedure for compare http urls from staros and http urls from belgim
183
+ def staros_compare_http(data_staros, data_belgim)
184
+
185
+ notblocked_stat = {}
186
+ alert_unprotected = {}
187
+ alert_unprotected_out = {}
188
+ output_answ = {:body => {:for_block => {}, :for_unblock => {}}}
189
+ for_unblock_tmp = {}
190
+ for_unblock = {}
191
+ for_unblock_stat = {}
192
+
193
+
194
+ begin
195
+ #only for one ECS instance
196
+ data_staros[:mpc_data].each do |star_host|
197
+ alert_unprotected[star_host[:hostname]] = []
198
+ for_unblock_tmp[star_host[:hostname]] = []
199
+
200
+ #check if belgim http url is blocked on STAROS
201
+ data_belgim[:url_all].each do |belg_url|
202
+ blocked = 0
203
+ star_host[:body][:blocked_urls_http].each do |star_dom|
204
+ star_url_curr = star_dom[:url]
205
+ star_dom_len = star_url_curr.length
206
+ star_dom_x = ""
207
+ if star_url_curr[star_dom_len - 1] == "/"
208
+ star_dom_x = star_url_curr[0..star_dom_len - 2]
209
+ else
210
+ star_dom_x = star_url_curr
211
+ end
212
+ if belg_url.include?(star_dom_x)
213
+ blocked = 1
214
+ for_unblock_tmp[star_host[:hostname]].push(star_dom)
215
+ end
216
+ end
217
+ if blocked == 0
218
+ alert_unprotected[star_host[:hostname]].push(belg_url)
219
+ end
220
+ end
221
+ end
222
+
223
+ alert_unprotected.each do |proc_unpro|
224
+ da123 = proc_unpro[1]
225
+ alert_unprotected_out[proc_unpro[0]] = da123.uniq
226
+ notblocked_stat[proc_unpro[0]] = proc_unpro[1].length
227
+ end
228
+
229
+ for_unblock_tmp.each do |tmp_unbl|
230
+ hostname_st = tmp_unbl[0]
231
+ host_data_tmp = tmp_unbl[1].uniq
232
+ staros_all = data_staros[:add_format][hostname_st][:blocked_urls_http].uniq
233
+ da_annn = self.array_hash_compare(host_data_tmp, staros_all)
234
+ for_unblock[hostname_st] = da_annn.uniq
235
+ for_unblock_stat[hostname_st] = da_annn.uniq.length
236
+ end
237
+
238
+ output_answ[:code] = 200
239
+ output_answ[:result] = "Success"
240
+ output_answ[:body][:for_block][:notblocked_stat] = notblocked_stat
241
+ output_answ[:body][:for_block][:not_blocked_belgim] = alert_unprotected_out
242
+ output_answ[:body][:for_unblock][:for_unblock] = for_unblock
243
+ output_answ[:body][:for_unblock][:for_unblock_stat] = for_unblock_stat
244
+
245
+ rescue
246
+ output_answ = {:code => 507, :result => "staros_compare_http: Unknown SDK error"}
247
+ end
248
+ output_answ
249
+ end
250
+
251
+
252
+
253
+
254
+ def format_star_processed_answ(data)
255
+ answ_out = {:body => {:to_message => {:code => 200, :result => "Staros processed", :data => {:block_me => {}, :unblock_me=> {}}}, :config => {}}}
256
+ compa_n = 0
257
+ compa_n_data = ""
258
+ flag = 0
259
+ notbl_equal = 0
260
+ data[:body][:for_block][:notblocked_stat].each do |blo_for|
261
+ if flag == 0
262
+ compa_n = blo_for[1]
263
+ compa_n_data = blo_for[0]
264
+ end
265
+ if compa_n == blo_for[1]
266
+ nil
267
+ else
268
+ notbl_equal = 1
269
+ end
270
+ end
271
+
272
+ p notbl_equal
273
+ if notbl_equal == 0
274
+ block_me = {:for_block_count => data[:body][:for_block][:notblocked_stat][compa_n_data]}
275
+ unblock_me = {:for_unblock_count => data[:body][:for_unblock][:for_unblock_stat][compa_n_data]}
276
+
277
+ if block_me[:for_block_count] != 0 && unblock_me[:for_unblock_count] != 0
278
+ answ_out[:body][:to_message][:code] = 202
279
+ answ_out[:body][:to_message][:result] = "Something not actual"
280
+ else
281
+ answ_out[:body][:to_message][:code] = 200
282
+ answ_out[:body][:to_message][:result] = "Staros processed"
283
+ end
284
+
285
+ answ_out[:body][:to_message][:data][:block_me]= block_me
286
+ answ_out[:body][:to_message][:data][:unblock_me]= unblock_me
287
+ else
288
+ answ_out[:body][:to_message][:data][:block_me] = data[:body][:for_block][:notblocked_stat]
289
+ answ_out[:body][:to_message][:data][:unblock_me] = data[:body][:for_unblock][:for_unblock_stat]
290
+ end
291
+
292
+
293
+
294
+ answ_out
295
+ end
296
+
151
297
  end
@@ -1,3 +1,3 @@
1
1
  module Imperituroard
2
- VERSION = "0.5.5"
2
+ VERSION = "0.5.7"
3
3
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: imperituroard
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.5.5
4
+ version: 0.5.7
5
5
  platform: ruby
6
6
  authors:
7
7
  - Dzmitry Buynovskiy
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2020-05-24 00:00:00.000000000 Z
11
+ date: 2020-05-27 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -164,6 +164,20 @@ dependencies:
164
164
  - - '='
165
165
  - !ruby/object:Gem::Version
166
166
  version: 3.0.0
167
+ - !ruby/object:Gem::Dependency
168
+ name: rails
169
+ requirement: !ruby/object:Gem::Requirement
170
+ requirements:
171
+ - - '='
172
+ - !ruby/object:Gem::Version
173
+ version: 5.2.4.2
174
+ type: :runtime
175
+ prerelease: false
176
+ version_requirements: !ruby/object:Gem::Requirement
177
+ requirements:
178
+ - - '='
179
+ - !ruby/object:Gem::Version
180
+ version: 5.2.4.2
167
181
  description: Gem from imperituroard for different actions
168
182
  email:
169
183
  - imperituro.ard@gmail.com
@@ -191,13 +205,9 @@ files:
191
205
  - lib/imperituroard/platforms/cps/qps_connector.rb
192
206
  - lib/imperituroard/platforms/cps/request_formatter.rb
193
207
  - lib/imperituroard/platforms/public/telegram.rb
208
+ - lib/imperituroard/platforms/staros/get_data_ssh.rb
209
+ - lib/imperituroard/platforms/staros/staros_parser.rb
194
210
  - lib/imperituroard/projects/dns.rb
195
- - lib/imperituroard/projects/dns/ukaz60.rb
196
- - lib/imperituroard/projects/dns/ukaz60/belgim.rb
197
- - lib/imperituroard/projects/dns/ukaz60/dns.rb
198
- - lib/imperituroard/projects/dns/ukaz60/dns_update.rb
199
- - lib/imperituroard/projects/dns/ukaz60/fortigate.rb
200
- - lib/imperituroard/projects/dns/ukaz60/ukaz60_add_func.rb
201
211
  - lib/imperituroard/projects/iot.rb
202
212
  - lib/imperituroard/projects/iot/add_functions.rb
203
213
  - lib/imperituroard/projects/iot/hua_oceanconnect_adapter.rb
@@ -208,6 +218,13 @@ files:
208
218
  - lib/imperituroard/projects/mhub/sk.rb
209
219
  - lib/imperituroard/projects/mhub/subs/dabrab/dabrab_platform.rb
210
220
  - lib/imperituroard/projects/mhub/subs/dabrab/dabrab_proced.rb
221
+ - lib/imperituroard/projects/ukaz60.rb
222
+ - lib/imperituroard/projects/ukaz60/belgim.rb
223
+ - lib/imperituroard/projects/ukaz60/dns.rb
224
+ - lib/imperituroard/projects/ukaz60/dns_update.rb
225
+ - lib/imperituroard/projects/ukaz60/fortigate.rb
226
+ - lib/imperituroard/projects/ukaz60/staros.rb
227
+ - lib/imperituroard/projects/ukaz60/ukaz60_add_func.rb
211
228
  - lib/imperituroard/projects/vpn/ezuev_fun/functions_ezuev.rb
212
229
  - lib/imperituroard/projects/wttx/phpipamcps.rb
213
230
  - lib/imperituroard/projects/wttx/phpipamdb.rb
@@ -229,7 +246,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
229
246
  requirements:
230
247
  - - ">="
231
248
  - !ruby/object:Gem::Version
232
- version: 2.3.0
249
+ version: 2.5.0
233
250
  required_rubygems_version: !ruby/object:Gem::Requirement
234
251
  requirements:
235
252
  - - ">="
@@ -1,87 +0,0 @@
1
- $LOAD_PATH.unshift File.expand_path("../projects/dns/ukaz60", __dir__)
2
-
3
- require 'json'
4
-
5
- require 'imperituroard/projects/dns/ukaz60/belgim'
6
- require 'imperituroard/projects/dns/ukaz60/fortigate'
7
-
8
- class Ukaz60All_2
9
-
10
- attr_accessor :telegram_messanger,
11
- :belgim_login,
12
- :belgim_password,
13
- :belgim_url,
14
- :ukaz60_add_func,
15
- :belgim_connector,
16
- :forti_connector
17
-
18
- def initialize(telegram_api_url,
19
- telegram_chat_id,
20
- belgim_login,
21
- belgim_password,
22
- belgim_url,
23
- ansible_tmp_folder,
24
- local_tmp_directory,
25
- ansible_ssh_user,
26
- ansible_ssh_password,
27
- ansible_host,
28
- url_backup_dir)
29
- @telegram_messanger = Telegram_2.new(telegram_api_url, telegram_chat_id)
30
- @belgim_login = belgim_login
31
- @belgim_password = belgim_password
32
- @belgim_url = belgim_url
33
- @ukaz60_add_func = AddFuncUkaz60_2.new
34
- @belgim_connector = Belgim_2.new(telegram_api_url, telegram_chat_id, belgim_login, belgim_password, belgim_url)
35
- @forti_connector = FortiUkaz60_2.new(ansible_tmp_folder, local_tmp_directory, ansible_ssh_user, ansible_ssh_password, ansible_host, url_backup_dir)
36
-
37
- end
38
-
39
- def no_pasaran
40
-
41
- answer_output = {}
42
- forti_answer = {}
43
-
44
- begin
45
- get_belgim_data = belgim_connector.belgim_ukaz60_get
46
-
47
- if get_belgim_data[:code] == 200
48
-
49
- thr_forti = Thread.new do
50
- begin
51
- format_for_forti = forti_connector.prepare_url_config_fortigate(get_belgim_data)
52
- if format_for_forti[:code] == 200
53
- url_uploading = forti_connector.upload_url(format_for_forti[:body][:to_fortigate])
54
- if url_uploading[:code] == 200
55
- update_fortigate_ansible = forti_connector.update_weburl_fortigate
56
- if update_fortigate_ansible[:code] == 200
57
- forti_answer = {:code => 200, :result => "Fortigate processed", :data => update_fortigate_ansible[:body][:body]}
58
- else
59
- forti_answer = {:code => update_fortigate_ansible[:code], :result => update_fortigate_ansible[:result]}
60
- end
61
- forti_connector.clean_tmp_folders
62
- else
63
- forti_answer = {:code => 401, :result => "Failed for uploading data to ansible server"}
64
- end
65
- else
66
- forti_answer = {:code => 400, :result => "Error while processing data"}
67
- end
68
- rescue
69
- forti_answer = {:code => 507, :result => "Unknown error with Forti"}
70
- end
71
- end
72
-
73
- thr_forti.join
74
-
75
- answer_output = {:code => 200, :result => "No pasaran", :fortigate => forti_answer}
76
- else
77
- answer_output = {:code => 404, :result => "Failed to receive data from Belgim"}
78
- end
79
-
80
- rescue
81
- answer_output = {:code => 507, :result => "no_pasaran: Unknown SDK error"}
82
- end
83
- telegram_messanger.telegram_message(answer_output.to_s)
84
- answer_output
85
- end
86
-
87
- end