imperituroard 0.4.2 → 0.4.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/lib/imperituroard/iot.rb +785 -0
- data/lib/imperituroard/platforms/cps/qps_connector.rb +45 -0
- data/lib/imperituroard/platforms/cps/request_formatter.rb +43 -0
- data/lib/imperituroard/projects/iot/internal_functions.rb +19 -0
- data/lib/imperituroard/projects/iot/mongoconnector.rb +82 -0
- data/lib/imperituroard/version.rb +1 -1
- data/lib/imperituroard.rb +52 -525
- metadata +5 -2
data/lib/imperituroard.rb
CHANGED
@@ -2,7 +2,7 @@ $LOAD_PATH.unshift File.expand_path("../projects/iot", __dir__)
|
|
2
2
|
$LOAD_PATH.unshift File.expand_path("../projects/wttx", __dir__)
|
3
3
|
$LOAD_PATH.unshift File.expand_path("../projects/mhub", __dir__)
|
4
4
|
$LOAD_PATH.unshift File.expand_path("../projects/mhub/subs/dabrab", __dir__)
|
5
|
-
|
5
|
+
$LOAD_PATH.unshift File.expand_path("../platforms/cps", __dir__)
|
6
6
|
|
7
7
|
require "imperituroard/version"
|
8
8
|
require "imperituroard/phpipamdb"
|
@@ -15,6 +15,8 @@ require 'imperituroard/projects/mhub/infobip'
|
|
15
15
|
require 'imperituroard/projects/mhub/sk'
|
16
16
|
require 'imperituroard/projects/mhub/subs/dabrab/dabrab_proced'
|
17
17
|
require 'imperituroard/projects/mhub/subs/dabrab/dabrab_platform'
|
18
|
+
require 'imperituroard/iot'
|
19
|
+
require 'imperituroard/platforms/cps/qps_connector'
|
18
20
|
require 'json'
|
19
21
|
require 'ipaddr'
|
20
22
|
require 'date'
|
@@ -109,7 +111,8 @@ class Iot
|
|
109
111
|
:real_ip, #real ip address of procedure caller
|
110
112
|
:remote_ip, #ip address of balancer
|
111
113
|
:hua_aceanconnect_connector,
|
112
|
-
:internal_func
|
114
|
+
:internal_func,
|
115
|
+
:iot_connector
|
113
116
|
|
114
117
|
def initialize(mongoip, mongoport, iotip, mongo_database,
|
115
118
|
iotplatform_ip, iotplatform_port, cert_path, key_path, telegram_api_url, telegram_chat_id, real_ip, remote_ip)
|
@@ -127,6 +130,8 @@ class Iot
|
|
127
130
|
@remote_ip = remote_ip
|
128
131
|
@hua_aceanconnect_connector = HuaIot.new(iotplatform_ip, iotplatform_port, cert_path, key_path)
|
129
132
|
@internal_func = InternalFunc.new
|
133
|
+
@iot_connector = IotFunctions_2.new(mongoip, mongoport, iotip, mongo_database,
|
134
|
+
iotplatform_ip, iotplatform_port, cert_path, key_path, telegram_api_url, telegram_chat_id, real_ip, remote_ip)
|
130
135
|
end
|
131
136
|
|
132
137
|
#error list
|
@@ -134,7 +139,6 @@ class Iot
|
|
134
139
|
#:code => 507, :result => "Unknown SDK error"
|
135
140
|
#{:code => 200, :result => "Request completed successfully", :body => result_ps}
|
136
141
|
|
137
|
-
|
138
142
|
#!!1. Add device to profile (only for new device)
|
139
143
|
#login - login for client identification
|
140
144
|
#profile - profile for device
|
@@ -145,108 +149,7 @@ class Iot
|
|
145
149
|
#+++
|
146
150
|
#iot logic added
|
147
151
|
def add_device_to_profile(login, imei_list)
|
148
|
-
|
149
|
-
resp_out = {}
|
150
|
-
begin
|
151
|
-
|
152
|
-
thr1 = Thread.new do
|
153
|
-
if add_functions_connector.check_input_1(login, imei_list)[:code]==200
|
154
|
-
|
155
|
-
imei = []
|
156
|
-
list1 = {}
|
157
|
-
for_insert = []
|
158
|
-
not_processed_list = []
|
159
|
-
processed_list = []
|
160
|
-
|
161
|
-
for ii in imei_list
|
162
|
-
list1[ii["imei"]] = ii
|
163
|
-
imei.append(ii["imei"])
|
164
|
-
end
|
165
|
-
list_checked = mongo_client.check_imei_exists(imei)
|
166
|
-
for ss in list_checked[:body][:exists]
|
167
|
-
not_processed_list.append({:imei => ss, :error => "Device exists in database"})
|
168
|
-
end
|
169
|
-
|
170
|
-
for jj in list_checked[:body][:not_exists]
|
171
|
-
begin
|
172
|
-
get_login_info = mongo_client.check_login_prof_perm_id_one(login, list1[jj]["profile"])[:code]
|
173
|
-
if get_login_info==200
|
174
|
-
for_insert.append(list1[jj])
|
175
|
-
else
|
176
|
-
not_processed_list.append({:imei => list1[jj], :error => "Permission denied for this profile"})
|
177
|
-
end
|
178
|
-
rescue
|
179
|
-
not_processed_list.append({:imei => list1[jj], :error => "Unknown error"})
|
180
|
-
end
|
181
|
-
end
|
182
|
-
|
183
|
-
begin
|
184
|
-
added_on_iot_platf = []
|
185
|
-
if for_insert!=[]
|
186
|
-
##Logic for IOT Platform connection###
|
187
|
-
|
188
|
-
credentials = mongo_client.get_iot_oceanconnect_credent(login)
|
189
|
-
|
190
|
-
if credentials[:code]==200
|
191
|
-
for aaa in for_insert
|
192
|
-
begin
|
193
|
-
dev_name = aaa["imei"].to_s
|
194
|
-
|
195
|
-
#get {"model"=>"BGT_PPMC", "ManufacturerID"=>"unknown", "ManufacturerNAME"=>"unknown", "device_type"=>"unknown"}
|
196
|
-
#from database
|
197
|
-
model_data = mongo_client.get_device_type_info_by_model(aaa["device_type"])
|
198
|
-
resss = hua_aceanconnect_connector.add_new_device_on_huawei(credentials[:body][:app_id],
|
199
|
-
credentials[:body][:secret],
|
200
|
-
aaa["imei"],
|
201
|
-
dev_name,
|
202
|
-
aaa["description"],
|
203
|
-
model_data[:body]["device_type"],
|
204
|
-
aaa["profile"],
|
205
|
-
model_data[:body]["ManufacturerID"],
|
206
|
-
model_data[:body]["ManufacturerNAME"],
|
207
|
-
model_data[:body]["model"]
|
208
|
-
)
|
209
|
-
if resss[:code]=="200"
|
210
|
-
s1 = aaa
|
211
|
-
s1[:huadata] = resss
|
212
|
-
s1[:created] = DateTime.now
|
213
|
-
added_on_iot_platf.append(s1)
|
214
|
-
else
|
215
|
-
not_processed_list.append({:imei => aaa["imei"], :error => resss})
|
216
|
-
end
|
217
|
-
rescue
|
218
|
-
not_processed_list.append({:imei => aaa["imei"], :error => "Unknown error with insertion imei on IOT platform"})
|
219
|
-
end
|
220
|
-
end
|
221
|
-
|
222
|
-
#########end iot platform logic#######
|
223
|
-
|
224
|
-
mongo_client.imei_insert_list(added_on_iot_platf)
|
225
|
-
resp_out = {:code => 200, :result => "Data processed", :body => {:imei_processed => added_on_iot_platf, :error_list => not_processed_list}}
|
226
|
-
else
|
227
|
-
resp_out = {:code => 400, :result => "IOT platform credentials not found"}
|
228
|
-
end
|
229
|
-
|
230
|
-
|
231
|
-
else
|
232
|
-
resp_out = {:code => 202, :result => "Nothing for insertion", :body => {:imei_processed => added_on_iot_platf, :error_list => not_processed_list}}
|
233
|
-
|
234
|
-
end
|
235
|
-
rescue
|
236
|
-
resp_out = {:code => 505, :result => "Error with database communication"}
|
237
|
-
end
|
238
|
-
|
239
|
-
else
|
240
|
-
resp_out = {:code => 509, :result => "Input data invalid"}
|
241
|
-
end
|
242
|
-
end
|
243
|
-
rescue
|
244
|
-
resp_out = {:code => 507, :result => "Unknown SDK error"}
|
245
|
-
end
|
246
|
-
thr1.join
|
247
|
-
|
248
|
-
mongo_client.audit_logger("add_device_to_profile", remote_ip, input_json, resp_out, real_ip)
|
249
|
-
resp_out
|
152
|
+
iot_connector.add_device_to_prof_2(login, imei_list)
|
250
153
|
end
|
251
154
|
|
252
155
|
|
@@ -258,55 +161,7 @@ class Iot
|
|
258
161
|
# imei_list =[41234,23452345,132412]
|
259
162
|
#++
|
260
163
|
def device_find(login, imei_list)
|
261
|
-
|
262
|
-
ime_list_approved = []
|
263
|
-
ime_list_notapproved = []
|
264
|
-
resp_out = {}
|
265
|
-
begin
|
266
|
-
thr2 = Thread.new do
|
267
|
-
if add_functions_connector.check_input_2(login, imei_list)[:code]==200
|
268
|
-
|
269
|
-
for t in imei_list
|
270
|
-
prof_name1 = mongo_client.get_profile_name_from_imei(t)
|
271
|
-
if prof_name1[:code]==200
|
272
|
-
begin
|
273
|
-
permiss1 = mongo_client.check_login_profile_permiss(login, prof_name1[:body]["profile"])
|
274
|
-
p "permiss1"
|
275
|
-
p permiss1
|
276
|
-
if permiss1[:code]==200
|
277
|
-
ime_list_approved.append(t)
|
278
|
-
else
|
279
|
-
ime_list_notapproved.append({:imei => t, :error => permiss1})
|
280
|
-
end
|
281
|
-
rescue
|
282
|
-
ime_list_notapproved.append({:imei => t, :error => {:code => 405, :result => "Unknown error when check_login_profile_permiss imei #{t.to_s}"}})
|
283
|
-
end
|
284
|
-
else
|
285
|
-
ime_list_notapproved.append({:imei => t, :error => prof_name1})
|
286
|
-
end
|
287
|
-
end
|
288
|
-
begin
|
289
|
-
if ime_list_approved != []
|
290
|
-
data = mongo_client.get_imei_info_from_db(ime_list_approved)
|
291
|
-
|
292
|
-
resp_out = {:code => 200, :result => "Request completed successfully", :data => {:approved_list => data, :unapproved_list => ime_list_notapproved}}
|
293
|
-
|
294
|
-
else
|
295
|
-
resp_out = {:code => 404, :result => "Invalidate data", :data => {:approved_list => [], :unapproved_list => ime_list_notapproved}}
|
296
|
-
end
|
297
|
-
rescue
|
298
|
-
resp_out = {:code => 504, :result => "Unsuccessfully data transfer"}
|
299
|
-
end
|
300
|
-
else
|
301
|
-
resp_out = {:code => 509, :result => "Input data invalid"}
|
302
|
-
end
|
303
|
-
end
|
304
|
-
rescue
|
305
|
-
resp_out = {:code => 507, :result => "Unknown SDK error"}
|
306
|
-
end
|
307
|
-
thr2.join
|
308
|
-
mongo_client.audit_logger("device_find", remote_ip, input_json, resp_out, real_ip)
|
309
|
-
resp_out
|
164
|
+
iot_connector.device_find_2(login, imei_list)
|
310
165
|
end
|
311
166
|
|
312
167
|
#!3 device modify, change imei
|
@@ -317,160 +172,9 @@ class Iot
|
|
317
172
|
#im_list = [{"imei_old"=>7967843245667, "imei_new"=>7967843245665}]
|
318
173
|
#++
|
319
174
|
def imei_replace(login, im_list)
|
320
|
-
|
321
|
-
resp_out = {}
|
322
|
-
|
323
|
-
begin
|
324
|
-
|
325
|
-
thr3 = Thread.new do
|
326
|
-
|
327
|
-
if add_functions_connector.check_input_3(login, im_list)[:code]==200
|
328
|
-
|
329
|
-
li_new_imei = []
|
330
|
-
list1 = {}
|
331
|
-
|
332
|
-
#dictionary for imeis which not processed. Final dictionary
|
333
|
-
not_processed_list = []
|
334
|
-
|
335
|
-
#dictionary for devices which was processed correctly
|
336
|
-
processed_list = []
|
337
|
-
|
338
|
-
#array for translations from old imei to new
|
339
|
-
old_new_translation = {}
|
340
|
-
|
341
|
-
approved_list = []
|
342
|
-
|
343
|
-
|
344
|
-
#old_imei_list for query to iot platform for data request
|
345
|
-
step1_approved_dict_old=[]
|
346
|
-
|
347
|
-
#form dictionary for processing
|
348
|
-
for pr1 in im_list
|
349
|
-
li_new_imei.append(pr1["imei_new"])
|
350
|
-
list1[pr1["imei_new"]]=pr1["imei_old"]
|
351
|
-
old_new_translation[pr1["imei_old"]]=pr1["imei_new"]
|
352
|
-
end
|
353
|
-
|
354
|
-
#check if imei_new exists in database. If exists - not process this imei
|
355
|
-
list_checked = mongo_client.check_imei_exists(li_new_imei)
|
356
|
-
|
357
|
-
internal_func.printer_texter({:function => "imei_replace Step1", :list_checked => list_checked}, "debug")
|
358
|
-
|
359
|
-
#add already exists new IMEI in error dictionary
|
360
|
-
for ss in list_checked[:body][:exists]
|
361
|
-
not_processed_list.append({:record => {:imei_old => list1[ss], :imei_new => ss}, :error => "New IMEI exists in database"})
|
362
|
-
end
|
363
|
-
|
364
|
-
#new_imei list which processed step1
|
365
|
-
step2_list = list_checked[:body][:not_exists]
|
366
|
-
|
367
|
-
internal_func.printer_texter({:function => "imei_replace Step2", :step2_list => step2_list}, "debug")
|
368
|
-
|
369
|
-
|
370
|
-
for a in step2_list
|
371
|
-
begin
|
372
|
-
|
373
|
-
#step3 checking permission for writing for imei list
|
374
|
-
prof_name1 = mongo_client.get_profile_name_from_imei(list1[a])
|
375
|
-
|
376
|
-
internal_func.printer_texter({:function => "imei_replace Step3", :prof_name1 => prof_name1}, "debug")
|
377
|
-
|
378
|
-
if prof_name1[:code]==200
|
379
|
-
permiss1 = mongo_client.check_login_profile_permiss(login, prof_name1[:body]["profile"])[:code]
|
380
|
-
internal_func.printer_texter({:function => "imei_replace Step4", :permiss1 => permiss1, :input => prof_name1[:body]["profile"]}, "debug")
|
381
|
-
if permiss1==200
|
382
|
-
|
383
|
-
approved_list.append({:imei_old => list1[a], :imei_new => a})
|
384
|
-
step1_approved_dict_old.append(list1[a])
|
385
|
-
|
386
|
-
else
|
387
|
-
not_processed_list.append({:record => {:imei_old => list1[a], :imei_new => a}, :error => "Old IMEI modification denied"})
|
388
|
-
end
|
389
|
-
else
|
390
|
-
not_processed_list.append({:record => {:imei_old => list1[a], :imei_new => a}, :error => "Old IMEI not exists in database"})
|
391
|
-
end
|
392
|
-
rescue
|
393
|
-
not_processed_list.append({:record => {:imei_old => list1[a], :imei_new => a}, :error => "Unknown error"})
|
394
|
-
end
|
395
|
-
end
|
396
|
-
|
397
|
-
internal_func.printer_texter({:function => "imei_replace Step5", :not_processed_list => not_processed_list, :input => list1, :approved_list => approved_list, :step1_approved_dict_old => step1_approved_dict_old}, "debug")
|
398
|
-
|
399
|
-
|
400
|
-
##Logic for IOT Platform connection###
|
401
|
-
|
402
|
-
list_from_iot = self.get_info_by_imeilist_from_iot(login, step1_approved_dict_old)
|
403
|
-
|
404
|
-
internal_func.printer_texter({:function => "imei_replace Step6", :list_from_iot => list_from_iot, :description => "data from iot platform by old imei"}, "debug")
|
405
|
-
|
406
|
-
#processing data. modifying data on iot platform and mongoDB
|
407
|
-
if list_from_iot[:code]=="200"
|
408
|
-
|
409
|
-
for ard in list_from_iot[:body]["devices"]
|
410
|
-
p ard
|
411
|
-
new_data_cur_dev = {}
|
412
|
-
mongo_answer = {}
|
413
|
-
current_old_dev = ard["deviceInfo"]["nodeId"]
|
414
|
-
current_device_id = ard["deviceId"]
|
415
|
-
new_data_cur_dev = ard["deviceInfo"]
|
416
|
-
new_data_cur_dev["nodeId"] = old_new_translation[current_old_dev.to_i].to_s
|
417
|
-
|
418
|
-
credentials = mongo_client.get_iot_oceanconnect_credent(login)
|
419
|
-
|
420
|
-
if credentials[:code]==200
|
421
|
-
flag_remove=0
|
422
|
-
flag_create=0
|
423
|
-
remove_answer = hua_aceanconnect_connector.remove_one_device_from_iot(credentials[:body][:app_id], credentials[:body][:secret], current_device_id)
|
424
|
-
create_answer = hua_aceanconnect_connector.add_new_device_on_huawei2(credentials[:body][:app_id], credentials[:body][:secret], new_data_cur_dev)
|
425
|
-
|
426
|
-
if remove_answer[:code]=="204" || remove_answer[:code]=="200"
|
427
|
-
flag_remove=1
|
428
|
-
end
|
429
|
-
if create_answer[:code]=="200"
|
430
|
-
flag_create=1
|
431
|
-
end
|
432
|
-
if flag_remove==1 && flag_create==1
|
433
|
-
mongo_answer = mongo_client.device_modify_any_attr_mongo(current_old_dev.to_i, {:imei => old_new_translation[current_old_dev.to_i], :huadata => {:body => create_answer[:body]}, :updated => DateTime.now})
|
434
|
-
processed_list.append({:imei_old => current_old_dev.to_i, :imei_new => old_new_translation[current_old_dev.to_i]})
|
435
|
-
else
|
436
|
-
not_processed_list.append({:record => {:imei_old => current_old_dev.to_i, :imei_new => old_new_translation[current_old_dev.to_i]}, :error => "Failed for provisioning to IOT platform"})
|
437
|
-
end
|
438
|
-
|
439
|
-
internal_func.printer_texter({:function => "imei_replace Step7", :remove_answer => remove_answer, :create_answer => create_answer, :mongo_answer => mongo_answer, :description => "processing imei #{current_old_dev.to_s}"}, "debug")
|
440
|
-
|
441
|
-
else
|
442
|
-
approved_list=[]
|
443
|
-
end
|
444
|
-
end
|
445
|
-
|
446
|
-
else
|
447
|
-
approved_list=[]
|
448
|
-
end
|
449
|
-
|
450
|
-
if approved_list!=[]
|
451
|
-
resp_out = {:code => 200, :result => "Request completed successfully", :data => {:approved_list => processed_list, :unapproved_list => not_processed_list}}
|
452
|
-
else
|
453
|
-
resp_out = {:code => 202, :result => "Nothing to do", :data => {:approved_list => processed_list, :unapproved_list => not_processed_list}}
|
454
|
-
end
|
455
|
-
|
456
|
-
else
|
457
|
-
resp_out = {:code => 509, :result => "Input data invalid"}
|
458
|
-
end
|
459
|
-
|
460
|
-
end
|
461
|
-
|
462
|
-
rescue
|
463
|
-
resp_out = {:code => 507, :result => "Unknown SDK error"}
|
464
|
-
end
|
465
|
-
|
466
|
-
thr3.join
|
467
|
-
mongo_client.audit_logger("imei_replace", remote_ip, input_json, resp_out, real_ip)
|
468
|
-
|
469
|
-
resp_out
|
470
|
-
|
175
|
+
iot_connector.imei_replace_2(login, im_list)
|
471
176
|
end
|
472
177
|
|
473
|
-
|
474
178
|
#!!4 remove device
|
475
179
|
#login
|
476
180
|
#imei
|
@@ -480,69 +184,10 @@ class Iot
|
|
480
184
|
#+++
|
481
185
|
#IOT logic added
|
482
186
|
def device_remove(login, imei)
|
187
|
+
iot_connector.device_remove_2(login, imei)
|
188
|
+
end
|
483
189
|
|
484
|
-
input_json = {:login => login, :imei_list => imei}
|
485
|
-
resp_out = {}
|
486
190
|
|
487
|
-
begin
|
488
|
-
thr4 = Thread.new do
|
489
|
-
|
490
|
-
if add_functions_connector.check_input_4(login, imei)[:code]==200
|
491
|
-
|
492
|
-
prof_name = mongo_client.get_profile_name_from_imei(imei)
|
493
|
-
if prof_name[:code]==200
|
494
|
-
permiss = mongo_client.check_login_profile_permiss(login, prof_name[:body]["profile"])
|
495
|
-
if permiss[:code]==200
|
496
|
-
|
497
|
-
##Logic for IOT Platform connection###
|
498
|
-
|
499
|
-
credentials = mongo_client.get_iot_oceanconnect_credent(login)
|
500
|
-
resp = {}
|
501
|
-
|
502
|
-
if credentials[:code]==200
|
503
|
-
|
504
|
-
imei_data = mongo_client.get_imei_info_from_db([imei])
|
505
|
-
if imei_data[:body]!=[]
|
506
|
-
ans = hua_aceanconnect_connector.remove_one_device_from_iot(credentials[:body][:app_id], credentials[:body][:secret], imei_data[:body][0]["huadata"]["body"]["deviceId"])
|
507
|
-
p ans
|
508
|
-
if ans[:code]=="204" or ans[:code]=="200"
|
509
|
-
resp = mongo_client.device_remove_single_mongo(imei)
|
510
|
-
else
|
511
|
-
resp = {:code => 500, :result => "Unknown IOT platform error", :body => ans}
|
512
|
-
end
|
513
|
-
else
|
514
|
-
resp_out = {:code => 404, :result => "Data not found"}
|
515
|
-
end
|
516
|
-
|
517
|
-
#########end iot platform logic#######
|
518
|
-
|
519
|
-
if resp[:code]==200
|
520
|
-
resp_out = {:code => 200, :result => "Request completed successfully"}
|
521
|
-
else
|
522
|
-
resp_out=resp
|
523
|
-
end
|
524
|
-
else
|
525
|
-
resp_out = {:code => 400, :result => "IOT platform credentials not found"}
|
526
|
-
end
|
527
|
-
else
|
528
|
-
resp_out=permiss
|
529
|
-
end
|
530
|
-
else
|
531
|
-
resp_out=prof_name
|
532
|
-
end
|
533
|
-
else
|
534
|
-
resp_out = {:code => 509, :result => "Input data invalid"}
|
535
|
-
end
|
536
|
-
|
537
|
-
end
|
538
|
-
|
539
|
-
rescue
|
540
|
-
resp_out = {:code => 507, :result => "Unknown SDK error"}
|
541
|
-
end
|
542
|
-
thr4.join
|
543
|
-
mongo_client.audit_logger("device_remove", remote_ip, input_json, resp_out, real_ip)
|
544
|
-
resp_out
|
545
|
-
end
|
546
191
|
|
547
192
|
|
548
193
|
#!5 add address to device
|
@@ -553,72 +198,9 @@ class Iot
|
|
553
198
|
#+++
|
554
199
|
#iot platform integration completed
|
555
200
|
def device_add_address(login, newdevice_list)
|
556
|
-
|
557
|
-
p newdevice_list
|
558
|
-
p "gas"
|
559
|
-
p MyJSON.valid?(newdevice_list[0].to_s)
|
560
|
-
p "sdfsdfgs"
|
561
|
-
input_json = {:login => login, :devices => newdevice_list}
|
562
|
-
resp_out = {}
|
563
|
-
not_processed = []
|
564
|
-
processed = []
|
565
|
-
begin
|
566
|
-
thr5 = Thread.new do
|
567
|
-
if add_functions_connector.check_input_5(login, newdevice_list)[:code]==200
|
568
|
-
|
569
|
-
for p in newdevice_list
|
570
|
-
prof_name = mongo_client.get_profile_name_from_imei(p[:imei])
|
571
|
-
|
572
|
-
if prof_name[:code]==200
|
573
|
-
permiss = mongo_client.check_login_profile_permiss(login, prof_name[:body]["profile"])
|
574
|
-
if permiss[:code]==200
|
575
|
-
|
576
|
-
##Logic for IOT Platform connection###
|
577
|
-
credentials = mongo_client.get_iot_oceanconnect_credent(login)
|
578
|
-
resp = {}
|
579
|
-
|
580
|
-
if credentials[:code]==200
|
581
|
-
imei_data = mongo_client.get_imei_info_from_db([p[:imei]])
|
582
|
-
if imei_data[:body]!=[]
|
583
|
-
ans =hua_aceanconnect_connector.modify_location_iot(credentials[:body][:app_id], credentials[:body][:secret], imei_data[:body][0]["huadata"]["body"]["deviceId"], p[:address])
|
584
|
-
|
585
|
-
internal_func.printer_texter({:function => "device_add_address Step2", :ans => ans, :descrition => "answer from hua IOT", :input => {:did => imei_data[:body][0]["huadata"]["body"]["deviceId"], :appid => credentials[:body][:app_id], :secret => credentials[:body][:secret], :address => p[:address]}}, "debug")
|
586
|
-
end
|
587
|
-
|
588
|
-
end
|
589
|
-
|
590
|
-
#########end iot platform logic#######
|
591
|
-
|
592
|
-
resp = mongo_client.device_modify_attr_mongo(p[:imei], p[:address])
|
593
|
-
if resp[:code]==200
|
594
|
-
processed.append({:imei => p[:imei]})
|
595
|
-
end
|
596
|
-
else
|
597
|
-
not_processed.append({:imei => p[:imei], :address => p[:address], :error => permiss})
|
598
|
-
end
|
599
|
-
else
|
600
|
-
not_processed.append({:imei => p[:imei], :address => p[:address], :error => prof_name})
|
601
|
-
end
|
602
|
-
end
|
603
|
-
|
604
|
-
if processed!=[]
|
605
|
-
resp_out = {:code => 200, :result => "Request completed successfully", :body => {:imei_processed => processed, :error_list => not_processed}}
|
606
|
-
else
|
607
|
-
resp_out = {:code => 202, :result => "Nothing processed", :body => {:imei_processed => processed, :error_list => not_processed}}
|
608
|
-
end
|
609
|
-
else
|
610
|
-
resp_out = {:code => 509, :result => "Input data invalid"}
|
611
|
-
end
|
612
|
-
end
|
613
|
-
rescue
|
614
|
-
resp_out = {:code => 507, :result => "Unknown SDK error"}
|
615
|
-
end
|
616
|
-
thr5.join
|
617
|
-
mongo_client.audit_logger("device_add_address", remote_ip, input_json, resp_out, real_ip)
|
618
|
-
resp_out
|
201
|
+
iot_connector.device_add_address_2(login, newdevice_list)
|
619
202
|
end
|
620
203
|
|
621
|
-
|
622
204
|
#6 add service by SPA
|
623
205
|
#imei
|
624
206
|
#profile
|
@@ -627,115 +209,37 @@ class Iot
|
|
627
209
|
#newdevice_list=[{:imei=>7967843245665, :attributes=>{:address=>"Golubeva51", :profile=>"wqeqcqeqwev", :msisdn=>375298766719, :imsi=>25702858586756875}}]
|
628
210
|
#+
|
629
211
|
def add_service(login, device_list)
|
630
|
-
|
631
|
-
not_processed = []
|
632
|
-
processed = []
|
633
|
-
|
634
|
-
input_json = {:login => login, :devices => device_list}
|
635
|
-
|
636
|
-
begin
|
637
|
-
|
638
|
-
thr6 = Thread.new do
|
639
|
-
|
640
|
-
if add_functions_connector.check_input_5(login, device_list)[:code]==200
|
641
|
-
|
642
|
-
for g in device_list
|
643
|
-
|
644
|
-
prof_name1 = mongo_client.get_profile_name_from_imei(g["imei"])
|
645
|
-
|
646
|
-
if prof_name1[:code]==200
|
647
|
-
permiss1 = mongo_client.check_login_profile_permiss(login, prof_name1[:body]["profile"])
|
648
|
-
if permiss1[:code]==200
|
649
|
-
|
650
|
-
if g["attributes"].key?("profile")
|
651
|
-
permiss2 = mongo_client.check_login_profile_permiss(login, g["attributes"]["profile"])[:code]
|
652
|
-
|
653
|
-
if permiss2==200
|
654
|
-
|
655
|
-
attr = g["attributes"]
|
656
|
-
#mod_attr = {}
|
657
|
-
|
658
|
-
if attr.key?("profile")
|
659
|
-
if attr["profile"].is_a? Integer
|
660
|
-
p "Ok"
|
661
|
-
else
|
662
|
-
p new = mongo_client.get_profile_id_by_name(attr["profile"])
|
663
|
-
attr["profile"] = new["profile_id"]
|
664
|
-
end
|
665
|
-
end
|
666
|
-
mongo_client.device_modify_any_attr_mongo(g["imei"], attr)
|
667
|
-
processed.append(g["imei"])
|
668
|
-
else
|
669
|
-
not_processed.append({:imei => g["imei"], :description => "New profile permission error", :error => permiss2})
|
670
|
-
end
|
671
|
-
|
672
|
-
else
|
673
|
-
attr = g["attributes"]
|
674
|
-
mongo_client.device_modify_any_attr_mongo(g["imei"], attr)
|
675
|
-
processed.append(g["imei"])
|
676
|
-
end
|
677
|
-
else
|
678
|
-
not_processed.append({:imei => g["imei"], :description => "Old profile permission error", :error => permiss1})
|
679
|
-
end
|
680
|
-
|
681
|
-
else
|
682
|
-
not_processed.append({:imei => g["imei"], :error => prof_name1})
|
683
|
-
end
|
684
|
-
|
685
|
-
end
|
686
|
-
resp_out = {:code => 200, :result => "Request completed successfully", :body => {:imei_processed => processed, :error_list => not_processed}}
|
687
|
-
else
|
688
|
-
resp_out = {:code => 509, :result => "Input data invalid"}
|
689
|
-
end
|
690
|
-
|
691
|
-
end
|
692
|
-
|
693
|
-
rescue
|
694
|
-
resp_out = {:code => 507, :result => "Unknown SDK error"}
|
695
|
-
end
|
696
|
-
thr6.join
|
697
|
-
mongo_client.audit_logger("device_remove", remote_ip, input_json, resp_out, real_ip)
|
698
|
-
resp_out
|
212
|
+
iot_connector.add_service_2(login, device_list)
|
699
213
|
end
|
700
214
|
|
701
215
|
|
702
216
|
#7 procedure for subscriber autorization
|
703
217
|
def autorize_subscriber(login, password)
|
704
|
-
|
705
|
-
resp_out = {}
|
706
|
-
thr7 = Thread.new do
|
707
|
-
begin
|
708
|
-
login_inform = mongo_client.get_login_info(login)
|
709
|
-
if login_inform[:code]==200
|
710
|
-
pass_mongo = login_inform[:body]["password"]
|
711
|
-
if pass_mongo == password
|
712
|
-
resp_out = {:code => 200, :result => "Access granted"}
|
713
|
-
else
|
714
|
-
resp_out = {:code => 400, :result => "Access denied"}
|
715
|
-
end
|
716
|
-
else
|
717
|
-
resp_out = {:code => 401, :result => "Access denied. Incorrect login"}
|
718
|
-
end
|
719
|
-
rescue
|
720
|
-
resp_out = {:code => 507, :result => "Unknown SDK error"}
|
721
|
-
end
|
722
|
-
end
|
723
|
-
thr7.join
|
724
|
-
mongo_client.audit_logger("autorize_subscriber", remote_ip, input_json, resp_out, real_ip)
|
725
|
-
resp_out
|
218
|
+
iot_connector.autorize_subscriber_2(login, password)
|
726
219
|
end
|
727
220
|
|
728
|
-
def get_available_profiles(login)
|
729
221
|
|
222
|
+
#8 get available profiles for login
|
223
|
+
def get_available_profiles(login)
|
224
|
+
iot_connector.get_available_prof_2(login)
|
730
225
|
end
|
731
226
|
|
227
|
+
|
228
|
+
#9 get available types for login
|
732
229
|
def get_available_types(login)
|
230
|
+
iot_connector.get_available_types_2(login)
|
231
|
+
end
|
733
232
|
|
233
|
+
|
234
|
+
#10 get info for device type
|
235
|
+
def get_info_data_type(type)
|
236
|
+
iot_connector.get_info_data_type_2(type)
|
734
237
|
end
|
735
238
|
|
736
239
|
|
737
|
-
|
738
|
-
|
240
|
+
#11 get info for profile
|
241
|
+
def get_info_data_profile(profile)
|
242
|
+
iot_connector.get_info_data_profile_2(profile)
|
739
243
|
end
|
740
244
|
|
741
245
|
|
@@ -743,6 +247,8 @@ class Iot
|
|
743
247
|
mongo_client.audit_logger(proc_name, src_ip, input_json, output_json, real_ip)
|
744
248
|
end
|
745
249
|
|
250
|
+
|
251
|
+
|
746
252
|
#additional procedure for checking status on iot platform
|
747
253
|
def get_info_by_imeilist_from_iot(login, imei_list)
|
748
254
|
resp_out={}
|
@@ -934,4 +440,25 @@ class Mhub_2
|
|
934
440
|
hh.test
|
935
441
|
end
|
936
442
|
|
443
|
+
end
|
444
|
+
|
445
|
+
|
446
|
+
class CpsFunctions_2
|
447
|
+
|
448
|
+
attr_accessor :qps_connector
|
449
|
+
|
450
|
+
def initialize(cps_wsdl, cps_endpoint, cps_namespace)
|
451
|
+
@qps_connector = Qps_2.new(cps_wsdl, cps_endpoint, cps_namespace)
|
452
|
+
end
|
453
|
+
|
454
|
+
def recreate_cps_profile(msisdn)
|
455
|
+
p gettt = qps_connector.get_subscriber_msisdn(msisdn)
|
456
|
+
p qps_connector.delete_subscriber(msisdn)
|
457
|
+
p qps_connector.recreate_subscriber(gettt)
|
458
|
+
end
|
459
|
+
|
460
|
+
def get_subscriber_profile(msisdn)
|
461
|
+
qps_connector.get_subscriber_msisdn(msisdn)
|
462
|
+
end
|
463
|
+
|
937
464
|
end
|