imperituroard 0.5.5 → 0.5.7

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 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