imperituroard 0.4.2 → 0.4.3
Sign up to get free protection for your applications and to get access to all the features.
- 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
|