imperituroard 0.1.9 → 0.2.0
Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: d355c409ea8712d63e24193ade8edc75da42d22c
|
4
|
+
data.tar.gz: 57d1a26a82303b7ff92dcae72080d8483b04f760
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 0777e7b6d50cdf31b7a0e01469510ea12ab8bc33d2f94566a2c8663021305e5018b10729c84caf4c5ddc571edc63ba622430682e8fbf36b6ca8a8dd4284523d1
|
7
|
+
data.tar.gz: a3ac19f8a9d18a3faeb807bd445aa558291b016f9676ffff9ae66f11124a42ad40420993cab190d3a47498a153ac29408a620cf1ce5e0a415408238934e64d48
|
@@ -114,7 +114,9 @@ class HuaIot
|
|
114
114
|
token = get_token(app_id, secret)[:body]["accessToken"]
|
115
115
|
path = "/iocm/app/dm/v1.1.0/queryDeviceIdByNodeId?nodeId=" + node_id
|
116
116
|
p path
|
117
|
+
p path
|
117
118
|
url_string = "https://" + platformip + ":" + platformport + path
|
119
|
+
p url_string
|
118
120
|
uri = URI.parse url_string
|
119
121
|
https = Net::HTTP.new(uri.host, uri.port)
|
120
122
|
https.use_ssl = true
|
@@ -125,6 +127,7 @@ class HuaIot
|
|
125
127
|
request.content_type = 'application/json'
|
126
128
|
request['Authorization'] = 'Bearer ' + token
|
127
129
|
request['app_key'] = app_id
|
130
|
+
p request.body
|
128
131
|
res = https.request(request)
|
129
132
|
p res.body.to_s
|
130
133
|
{:code => res.code, :message => res.message, :body => JSON.parse(res.body.to_s)}
|
@@ -1,29 +1,31 @@
|
|
1
1
|
require 'mongo'
|
2
2
|
|
3
|
+
require 'json'
|
4
|
+
require 'rubygems'
|
5
|
+
require 'nokogiri'
|
6
|
+
require 'rails'
|
7
|
+
|
3
8
|
#class for communication with mongo database for iot API
|
4
9
|
class MongoIot
|
5
10
|
|
6
|
-
attr_accessor :
|
11
|
+
attr_accessor :mongo_ip, :mongo_port, :client, :mongo_database
|
7
12
|
|
8
|
-
def initialize(
|
9
|
-
@
|
10
|
-
@
|
11
|
-
@
|
12
|
-
|
13
|
-
|
14
|
-
@client = Mongo::Client.new(client_host, :database => database)
|
13
|
+
def initialize(mongo_ip, mongo_port, mongo_database)
|
14
|
+
@mongo_database = mongo_database
|
15
|
+
@mongo_ip = mongo_ip
|
16
|
+
@mongo_port = mongo_port
|
17
|
+
client_host = [mongo_ip + ":" + mongo_port]
|
18
|
+
@client = Mongo::Client.new(client_host, :database => mongo_database)
|
15
19
|
end
|
16
20
|
|
17
|
-
def audit_logger(proc_name)
|
21
|
+
def audit_logger(proc_name, src_ip, input_json, output_json)
|
18
22
|
begin
|
19
23
|
collection = client[:audit]
|
20
24
|
doc = {
|
21
25
|
proc_name: proc_name,
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
sisters: 1
|
26
|
-
}
|
26
|
+
sender: {src_ip: src_ip},
|
27
|
+
input_params: input_json,
|
28
|
+
output_params: output_json
|
27
29
|
}
|
28
30
|
result = collection.insert_one(doc)
|
29
31
|
p result
|
@@ -32,6 +34,184 @@ class MongoIot
|
|
32
34
|
end
|
33
35
|
end
|
34
36
|
|
37
|
+
def get_profiles_by_login(login)
|
38
|
+
begin
|
39
|
+
login_profiles = []
|
40
|
+
req2 = []
|
41
|
+
result_ps = []
|
42
|
+
collection = client[:users]
|
43
|
+
collection2 = client[:device_profiles]
|
44
|
+
collection.find({:login => login}).each { |row|
|
45
|
+
login_profiles = row["permit_profiles"]
|
46
|
+
}
|
47
|
+
for i in login_profiles
|
48
|
+
req2.append({:profile_id => i})
|
49
|
+
end
|
50
|
+
collection2.find({:$or => req2}, {:_id => 0}).each { |row|
|
51
|
+
result_ps.append(row)
|
52
|
+
}
|
53
|
+
result_ps
|
54
|
+
rescue
|
55
|
+
[]
|
56
|
+
end
|
57
|
+
end
|
58
|
+
|
59
|
+
def get_imei_info_from_db(imeilist)
|
60
|
+
begin
|
61
|
+
req2 = []
|
62
|
+
result_ps = []
|
63
|
+
collection = client[:device_imei]
|
64
|
+
for i in imeilist
|
65
|
+
req2.append({:imei => i})
|
66
|
+
end
|
67
|
+
p req2
|
68
|
+
collection.find({:$or => req2}, {:_id => 0}).each { |row|
|
69
|
+
result_ps.append(row)
|
70
|
+
}
|
71
|
+
result_ps
|
72
|
+
rescue
|
73
|
+
[]
|
74
|
+
end
|
75
|
+
end
|
76
|
+
|
77
|
+
def get_profile_id_by_name(profile_name)
|
78
|
+
begin
|
79
|
+
result_ps = []
|
80
|
+
collection = client[:device_profiles]
|
81
|
+
collection.find({"profile" => profile_name}).each { |row|
|
82
|
+
result_ps.append(row)
|
83
|
+
}
|
84
|
+
result_ps[0]
|
85
|
+
rescue
|
86
|
+
[]
|
87
|
+
end
|
88
|
+
end
|
89
|
+
|
90
|
+
def get_profile_name_by_id(profile_id)
|
91
|
+
begin
|
92
|
+
result_ps = []
|
93
|
+
collection = client[:device_profiles]
|
94
|
+
collection.find({"profile_id" => profile_id}).each { |row|
|
95
|
+
result_ps.append(row)
|
96
|
+
}
|
97
|
+
result_ps[0]
|
98
|
+
rescue
|
99
|
+
[]
|
100
|
+
end
|
101
|
+
end
|
102
|
+
|
103
|
+
def check_login_profile_permiss(login, profile)
|
104
|
+
p "profile"
|
105
|
+
p profile
|
106
|
+
get_login_info = get_profiles_by_login(login)
|
107
|
+
p "get_login_info"
|
108
|
+
p get_login_info
|
109
|
+
dst_profile = get_profile_id_by_name(profile)
|
110
|
+
p "dst_profile"
|
111
|
+
p dst_profile
|
112
|
+
access=1
|
113
|
+
if get_login_info!=[]
|
114
|
+
if dst_profile!=[]
|
115
|
+
for j in get_login_info
|
116
|
+
p j
|
117
|
+
if j["profile_id"]==dst_profile["profile_id"]
|
118
|
+
access=0
|
119
|
+
end
|
120
|
+
if access==0
|
121
|
+
return {:code => 200, :result => "Permission granted"}
|
122
|
+
else
|
123
|
+
return {:code => 400,:result => "Access denied. This incident will be reported."}
|
124
|
+
end
|
125
|
+
end
|
126
|
+
else return {:code => 501,:result => "Profile not found"}
|
127
|
+
end
|
128
|
+
else {:code => 500,:result => "Login not found"}
|
129
|
+
end
|
130
|
+
end
|
131
|
+
|
132
|
+
def check_imei_exists(imei_list)
|
133
|
+
res = []
|
134
|
+
imei_list = get_imei_info_from_db(imei_list)
|
135
|
+
for k in imei_list
|
136
|
+
res.append(k["imei"])
|
137
|
+
end
|
138
|
+
res
|
139
|
+
end
|
140
|
+
|
141
|
+
|
142
|
+
def imei_insert_list(imei_list)
|
143
|
+
begin
|
144
|
+
collection = client[:device_imei]
|
145
|
+
p imei_list
|
146
|
+
for l in imei_list
|
147
|
+
doc = {
|
148
|
+
imei: l,
|
149
|
+
imsi: "",
|
150
|
+
msisdn: "",
|
151
|
+
description: "test imei",
|
152
|
+
note: "second description",
|
153
|
+
profile: 0,
|
154
|
+
type: 0,
|
155
|
+
address: "unknown"
|
156
|
+
}
|
157
|
+
result = collection.insert_one(l)
|
158
|
+
p result
|
159
|
+
end
|
160
|
+
rescue
|
161
|
+
continue
|
162
|
+
end
|
163
|
+
end
|
164
|
+
|
165
|
+
def get_profile_name_from_imei(imei)
|
166
|
+
info = get_imei_info_from_db([imei])
|
167
|
+
p "123"
|
168
|
+
p info
|
169
|
+
id = info[0]["profile"]
|
170
|
+
get_profile_name_by_id(id)
|
171
|
+
end
|
172
|
+
|
173
|
+
|
174
|
+
def device_remove_single_mongo(imei)
|
175
|
+
|
176
|
+
collection = client[:device_imei]
|
177
|
+
doc = {
|
178
|
+
"imei" => imei
|
179
|
+
}
|
180
|
+
result = collection.delete_many(doc)
|
181
|
+
p result
|
182
|
+
end
|
183
|
+
|
184
|
+
def device_modify_attr_mongo(imei,address)
|
185
|
+
begin
|
186
|
+
collection = client[:device_imei]
|
187
|
+
doc = {
|
188
|
+
"imei" => imei
|
189
|
+
}
|
190
|
+
sett = {'$set' => { address: address}}
|
191
|
+
result = collection.update_one(doc, sett)
|
192
|
+
p result
|
193
|
+
rescue
|
194
|
+
continue
|
195
|
+
end
|
196
|
+
end
|
197
|
+
|
198
|
+
def device_modify_any_attr_mongo(imei,attr_list)
|
199
|
+
begin
|
200
|
+
collection = client[:device_imei]
|
201
|
+
doc = {
|
202
|
+
"imei" => imei
|
203
|
+
}
|
204
|
+
sett = {'$set' => attr_list}
|
205
|
+
result = collection.update_one(doc, sett)
|
206
|
+
p result
|
207
|
+
rescue
|
208
|
+
continue
|
209
|
+
end
|
210
|
+
end
|
211
|
+
|
212
|
+
|
213
|
+
|
214
|
+
|
35
215
|
def ttt
|
36
216
|
p "111111"
|
37
217
|
begin
|
data/lib/imperituroard.rb
CHANGED
@@ -70,27 +70,192 @@ class Pipam
|
|
70
70
|
end
|
71
71
|
|
72
72
|
class Iot
|
73
|
-
attr_accessor :mongoip, :mongoport, :iotip, :iottoken, :
|
73
|
+
attr_accessor :mongoip, :mongoport, :iotip, :iottoken, :mongo_database, :iotplatform_ip, :iotplatform_port, :cert_path, :key_path, :mongo_client
|
74
74
|
|
75
|
-
def initialize(mongoip, mongoport, iotip,
|
75
|
+
def initialize(mongoip, mongoport, iotip, mongo_database, iotplatform_ip, iotplatform_port, cert_path, key_path)
|
76
76
|
@mongoip = mongoip
|
77
77
|
@mongoport = mongoport
|
78
78
|
@iotip = iotip
|
79
|
-
@
|
79
|
+
@mongo_database = mongo_database
|
80
80
|
@iotplatform_ip = iotplatform_ip
|
81
81
|
@iotplatform_port = iotplatform_port
|
82
|
+
@cert_path = cert_path
|
83
|
+
@key_path = key_path
|
84
|
+
@mongo_client = MongoIot.new(mongoip, mongoport, mongo_database)
|
82
85
|
end
|
83
86
|
|
84
87
|
|
88
|
+
#1. Add device to profile
|
89
|
+
#login - login for client identification
|
90
|
+
#profile - profile for device
|
91
|
+
#imei_list - device identificator
|
92
|
+
#imei_list = {
|
93
|
+
# imei: imei,
|
94
|
+
# imsi: imsi,
|
95
|
+
# msisdn: msisdn,
|
96
|
+
# description: description,
|
97
|
+
# note: note,
|
98
|
+
# profile: profile,
|
99
|
+
# type: type,
|
100
|
+
# address: address
|
101
|
+
#}
|
102
|
+
#massive commands
|
103
|
+
#+
|
104
|
+
def add_device_to_profile(login, profile, imei_list)
|
105
|
+
imei = []
|
106
|
+
list1 = {}
|
107
|
+
for_insert = []
|
108
|
+
for t in imei_list
|
109
|
+
imei.append(t["imei"])
|
110
|
+
list1[t["imei"]] = t
|
111
|
+
end
|
112
|
+
get_login_info = mongo_client.check_login_profile_permiss(login, profile)[:code]
|
113
|
+
if get_login_info==200
|
114
|
+
list_exists = mongo_client.check_imei_exists(imei)
|
115
|
+
for_upload = imei - list_exists
|
116
|
+
for h in for_upload
|
117
|
+
for_insert.append(list1[h])
|
118
|
+
end
|
119
|
+
mongo_client.imei_insert_list(for_insert)
|
120
|
+
else get_login_info
|
121
|
+
end
|
122
|
+
end
|
123
|
+
|
124
|
+
|
125
|
+
#2 Find device (only mongo datebase. IOT platform not need)
|
126
|
+
# login
|
127
|
+
# imei
|
128
|
+
# imei_list =[41234,23452345,132412]
|
129
|
+
#+
|
130
|
+
def device_find(login, imei_list)
|
131
|
+
|
132
|
+
ime_list_approved = []
|
133
|
+
ime_list_notapproved = []
|
134
|
+
begin
|
135
|
+
for t in imei_list
|
136
|
+
prof_name1 = mongo_client.get_profile_name_from_imei(t)
|
137
|
+
p "prof_name1"
|
138
|
+
p prof_name1
|
139
|
+
if prof_name1!=nil
|
140
|
+
permiss1 = mongo_client.check_login_profile_permiss(login, prof_name1["profile"])[:code]
|
141
|
+
if permiss1==200
|
142
|
+
ime_list_approved.append(t)
|
143
|
+
end
|
144
|
+
end
|
145
|
+
end
|
146
|
+
data = mongo_client.get_imei_info_from_db(ime_list_approved)
|
147
|
+
{:code=>507, :result => "Unknown error", :data => data}
|
148
|
+
rescue
|
149
|
+
{:code=>507, :result => "Unknown error"}
|
150
|
+
end
|
151
|
+
end
|
152
|
+
|
153
|
+
#3 device modify, change imei
|
154
|
+
#login
|
155
|
+
#imei_old
|
156
|
+
#imei_new
|
157
|
+
#massive commands
|
158
|
+
#im_list = [{:imei_old=>7967843245667, :imei_new=>7967843245665}]
|
159
|
+
#+
|
160
|
+
def imei_replace(login, im_list)
|
161
|
+
for a in im_list
|
162
|
+
p a
|
163
|
+
prof_name1 = mongo_client.get_profile_name_from_imei(a[:imei_old])
|
164
|
+
p prof_name1
|
165
|
+
permiss1 = mongo_client.check_login_profile_permiss(login, prof_name1["profile"])[:code]
|
166
|
+
if permiss1==200
|
167
|
+
mongo_client.device_modify_any_attr_mongo(a[:imei_old],{:imei=>a[:imei_new]})
|
168
|
+
end
|
169
|
+
end
|
170
|
+
end
|
171
|
+
|
172
|
+
|
173
|
+
#4 remove device
|
174
|
+
#login
|
175
|
+
#imei
|
176
|
+
# not massive commands
|
177
|
+
#imei=11341341234
|
178
|
+
#login="test"
|
179
|
+
#+
|
180
|
+
def device_remove(login, imei)
|
181
|
+
prof_name = mongo_client.get_profile_name_from_imei(imei)
|
182
|
+
permiss = mongo_client.check_login_profile_permiss(login, prof_name["profile"])[:code]
|
183
|
+
if permiss==200
|
184
|
+
mongo_client.device_remove_single_mongo(imei)
|
185
|
+
end
|
186
|
+
end
|
187
|
+
|
188
|
+
|
189
|
+
#5 add address to device
|
190
|
+
#login
|
191
|
+
#imei = newdevice_list
|
192
|
+
#address = newdevice_list
|
193
|
+
#newdevice_list=[{:imei=>7967843245665, :address=>"Golubeva51"}]
|
194
|
+
#+
|
195
|
+
def device_add_address(login, newdevice_list)
|
196
|
+
for p in newdevice_list
|
197
|
+
prof_name = mongo_client.get_profile_name_from_imei(p[:imei])
|
198
|
+
p "prof_name"
|
199
|
+
p prof_name
|
200
|
+
permiss = mongo_client.check_login_profile_permiss(login, prof_name["profile"])[:code]
|
201
|
+
if permiss==200
|
202
|
+
mongo_client.device_modify_attr_mongo(p[:imei],p[:address])
|
203
|
+
end
|
204
|
+
end
|
205
|
+
end
|
206
|
+
|
207
|
+
#6 add service by SPA
|
208
|
+
#imei
|
209
|
+
#profile
|
210
|
+
#imsi
|
211
|
+
#msisdn
|
212
|
+
#newdevice_list=[{:imei=>7967843245665, :attributes=>{:address=>"Golubeva51", :profile=>"wqeqcqeqwev", :msisdn=>375298766719, :imsi=>25702858586756875}}]
|
213
|
+
#+
|
214
|
+
def add_service(login, device_list)
|
215
|
+
for g in device_list
|
216
|
+
prof_name1 = mongo_client.get_profile_name_from_imei(g[:imei])
|
217
|
+
p prof_name1
|
218
|
+
permiss1 = mongo_client.check_login_profile_permiss(login, prof_name1["profile"])[:code]
|
219
|
+
p permiss1
|
220
|
+
permiss2 = mongo_client.check_login_profile_permiss(login, g[:attributes][:profile])[:code]
|
221
|
+
if permiss1==200 && permiss2==200
|
222
|
+
|
223
|
+
attr = g[:attributes]
|
224
|
+
#mod_attr = {}
|
225
|
+
|
226
|
+
if attr.key?(:profile)
|
227
|
+
if attr[:profile].is_a? Integer
|
228
|
+
p "Ok"
|
229
|
+
else
|
230
|
+
p new = mongo_client.get_profile_id_by_name(attr[:profile])
|
231
|
+
attr[:profile] = new["profile_id"]
|
232
|
+
end
|
233
|
+
end
|
234
|
+
p attr
|
235
|
+
|
236
|
+
mongo_client.device_modify_any_attr_mongo(g[:imei],attr)
|
237
|
+
end
|
238
|
+
end
|
239
|
+
end
|
240
|
+
|
241
|
+
|
242
|
+
|
85
243
|
|
86
244
|
def test()
|
87
|
-
ddd = MongoIot.new(mongoip, mongoport,
|
88
|
-
ddd.
|
245
|
+
ddd = MongoIot.new(mongoip, mongoport, mongo_database)
|
246
|
+
#ddd.get_profiles_by_login("test")
|
247
|
+
|
248
|
+
ff = [131234123412341233, 131234123127341233]
|
249
|
+
#ddd.get_imsi_info_from_db(ff)
|
250
|
+
|
251
|
+
p ddd.get_profile_id_by_name("1341241")
|
89
252
|
end
|
90
253
|
|
254
|
+
|
255
|
+
|
91
256
|
def testhua()
|
92
|
-
cert_file =
|
93
|
-
key_file =
|
257
|
+
cert_file = cert_path
|
258
|
+
key_file = key_path
|
94
259
|
ddd1 = HuaIot.new(iotplatform_ip, iotplatform_port, "", "", cert_file, key_file)
|
95
260
|
#p ddd1.dev_register_verif_code_mode("Cd1v0k2gTBCbpQlMVlW1FVqOSqga", "kbfo5JlBxTIhjVwtjHleWS5Iw5wa", "7521234165452")
|
96
261
|
#ddd1.querying_device_id("Cd1v0k2gTBCbpQlMVlW1FVqOSqga", "kbfo5JlBxTIhjVwtjHleWS5Iw5wa", "a8834c5e-4b4d-4f0f-ad87-14e916f3d0bb")
|
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.
|
4
|
+
version: 0.2.0
|
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-04-
|
11
|
+
date: 2020-04-08 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|