Skip to content

Commit 217db87

Browse files
author
“Jianxiang
committed
based on brazil Team's code to build a test server
1. First stage can successfully store the AP TelemetryData
0 parents  commit 217db87

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

52 files changed

+31501
-0
lines changed

Diff for: .dockerignore

+16
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
**/node_modules/
2+
**/build/
3+
**/lib/binding/
4+
**/*.log
5+
**/README*
6+
**/.git
7+
**/npm-debug.log*
8+
**/.npm
9+
**/.eslintcache
10+
**/.cache
11+
**/.DS_Store
12+
**/.gitignore
13+
**/Dockerfile
14+
**/docker-compose*.yml
15+
**/*.avsc
16+
**/*.proto

Diff for: .gitignore

+2
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
target/
2+
node_modules/

Diff for: .idea/.gitignore

+2
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

Diff for: .idea/misc.xml

+9
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

Diff for: .idea/modules.xml

+8
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

Diff for: .idea/vcs.xml

+6
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

Diff for: Dockerfile

+34
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,34 @@
1+
FROM node:8-alpine
2+
3+
ARG PROJECT
4+
ENV PROJECT ${PROJECT}
5+
6+
WORKDIR /usr/local/lib/${PROJECT}/raven/services/${PROJECT}
7+
8+
RUN apk add --no-cache \
9+
cyrus-sasl-dev \
10+
openssl-dev \
11+
zlib-dev \
12+
lz4-dev;
13+
14+
COPY package.json /usr/local/lib/${PROJECT}/raven/services/${PROJECT}/
15+
COPY target/docker/common /usr/local/lib/${PROJECT}/raven/common/
16+
17+
RUN apk add --no-cache --virtual .build-deps \
18+
gcc \
19+
g++ \
20+
python \
21+
make \
22+
bash \
23+
libc-dev \
24+
bsd-compat-headers \
25+
py-setuptools \
26+
ca-certificates \
27+
musl-dev \
28+
&& npm install --production --unsafe-perm --loglevel verbose \
29+
&& apk del .build-deps
30+
31+
COPY src /usr/local/lib/${PROJECT}/raven/services/${PROJECT}/src/
32+
COPY cert /usr/local/lib/${PROJECT}/raven/services/${PROJECT}/cert/
33+
34+
CMD [ "npm", "start" ]

Diff for: Makefile

+115
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,115 @@
1+
SHELL = /bin/bash
2+
3+
export NAMESPACE := hub.docker.hpecorp.net/iot-gateway
4+
export PROJECT := ws-receiver
5+
export VERSION := v0.1.0
6+
7+
export FQPN := $(NAMESPACE)/$(PROJECT)
8+
export BUILD_DATE ?= $(shell date +%Y%m%d%H%M%S)
9+
10+
all: docker.run
11+
12+
CERT_DIR=cert
13+
CERT_FILE=$(PROJECT)-cert.pem
14+
KEY_FILE=$(PROJECT)-key.pem
15+
16+
DOCKER_FILE = Dockerfile
17+
DOCKER_CONTEXT = .
18+
DOCKER_TARGET = target/docker
19+
20+
DOCKER_LAST_TAG = $(DOCKER_TARGET)/main.last.docker.tag
21+
DOCKER_NEXT_TAG = $(DOCKER_TARGET)/main.$(BUILD_DATE).docker.tag
22+
23+
DOCKER_LAST_HASH = $(DOCKER_TARGET)/main.last.docker.hash
24+
DOCKER_NEXT_HASH = $(DOCKER_TARGET)/main.$(BUILD_DATE).docker.hash
25+
26+
SRC_MAIN := src ../../common
27+
SRC_TEST := test
28+
29+
MAIN_FILES := $(shell find $(SRC_MAIN) -name '*.*') package.json
30+
CERT_FILES := $(shell find $(CERT_DIR) -name '*.pem')
31+
32+
SOURCES := $(MAIN_FILES) $(TEST_FILES)
33+
DOCKER_ALL_FILES = Dockerfile $(SOURCES) $(CERT_FILES)
34+
35+
DOCKER_NETWORK_NAME = raven
36+
37+
docker.build: $(DOCKER_LAST_TAG)
38+
39+
$(DOCKER_LAST_TAG): $(DOCKER_LAST_HASH)
40+
$(MAKE) $(DOCKER_NEXT_TAG)
41+
cp $(DOCKER_NEXT_TAG) $(@)
42+
43+
$(DOCKER_LAST_HASH): $(DOCKER_ALL_FILES)
44+
$(MAKE) $(DOCKER_NEXT_HASH)
45+
cp $(DOCKER_NEXT_HASH) $(@)
46+
47+
docker.network: $(DOCKER_LAST_TAG)
48+
docker network create $(DOCKER_NETWORK_NAME) --attachable || true
49+
50+
docker.run: $(DOCKER_LAST_TAG) docker.network
51+
docker run --network $(DOCKER_NETWORK_NAME) \
52+
--rm -it -p "5002:5002" --name $(PROJECT) \
53+
-e RECEIVER_PORT='5002' \
54+
-e DEBUG=$(PROJECT),config,receiver-ws,kafka \
55+
-e BROKER_HOST=10.50.8.13 \
56+
-e BROKER_PORT=1025 \
57+
$(shell cat $(DOCKER_LAST_TAG))
58+
59+
docker.release: $(DOCKER_LAST_TAG)
60+
docker tag $(shell cat $(DOCKER_LAST_TAG)) $(FQPN):$(VERSION)
61+
62+
pipe_fail = set -o pipefail;
63+
64+
%.docker.log:
65+
-mkdir -p $(@D)
66+
rm -fr $(@D)/common
67+
mkdir -p $(@D)/common
68+
cp -r ../../common $(@D)
69+
$(pipe_fail) docker build \
70+
--build-arg http_proxy=$(http_proxy) \
71+
--build-arg https_proxy=$(https_proxy) \
72+
--build-arg PROJECT=$(PROJECT) \
73+
-f $(DOCKER_FILE) $(DOCKER_CONTEXT) \
74+
| tee $(@)
75+
76+
%.docker.hash: %.docker.log
77+
$(pipe_fail) grep 'Successfully built' $(*).docker.log \
78+
| awk '{print $$3}' > $(@)
79+
80+
%.docker.tag: %.docker.hash
81+
docker tag $(shell cat $(*).docker.hash) \
82+
$(FQPN):snapshot-$(BUILD_DATE)
83+
docker tag $(shell cat $(*).docker.hash) \
84+
$(FQPN):latest
85+
@echo $(FQPN):snapshot-$(BUILD_DATE) > $(@)
86+
87+
docker.clean.tags:
88+
-find $(DOCKER_TARGET) -name '*.docker.tag' \
89+
| xargs -r cat \
90+
| sort | uniq \
91+
| xargs -t -l -r docker image rm
92+
-find $(DOCKER_TARGET) -name '*.docker.tag' \
93+
| xargs -t -l -r rm
94+
-docker image list \
95+
--format '$(FQPN):{{ .Tag }}' \
96+
$(FQPN):snapshot-* \
97+
| xargs -t -l -r docker image rm
98+
99+
oui:
100+
-mkdir -p target
101+
wget -O target/oui.txt http://standards-oui.ieee.org/oui/oui.txt
102+
cat target/oui.txt | tr -d "\r" | grep -E '\(hex\)' | sort > src/oui.json
103+
sed -i -r -f src/oui.sed src/oui.json
104+
105+
clean:
106+
rm -fr target
107+
108+
$(CERT_DIR):
109+
-mkdir -p $(CERT_DIR)
110+
111+
gencert: $(CERT_DIR)
112+
@if [ ! -e $(CERT_DIR)/$(CERT_FILE) ]; then openssl req -subj '/CN=localhost/O=Hewlett Packard Enterprise Company/OU=RnD Center-Brazil/C=BR/ST=Rio Grande do Sul/L=Porto Alegre/' -newkey rsa:2048 -new -nodes -x509 -days 3650 -keyout $(CERT_DIR)/$(KEY_FILE) -out $(CERT_DIR)/$(CERT_FILE); fi;
113+
114+
lint:
115+
node node_modules/eslint/bin/eslint.js src/** --fix

Diff for: README.md

+20
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
to start up receiver-ap for testing. receiver-will be up and listening on port 8443. It will also bring other needed containers:
2+
make docker.compose.up
3+
4+
to stop the containers that were brought up:
5+
make docker.compose.down
6+
7+
to send data to receiver-ap:
8+
make producer
9+
or
10+
node src/ws-client.js --ws wss://localhost:8443 -i ./datasets/example.bin
11+
12+
to see the output on the receiver-ap:
13+
make docker.logs
14+
or
15+
docker logs -f receiver-ap_receiver-ap_1
16+
17+
to see the output of all the containers:
18+
docker-compose logs -f
19+
or
20+
make docker.compose.logs

Diff for: cert/ws-receiver-cert.pem

+24
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
-----BEGIN CERTIFICATE-----
2+
MIIEEjCCAvqgAwIBAgIJANSYNeLTuLQeMA0GCSqGSIb3DQEBCwUAMIGdMRIwEAYD
3+
VQQDDAlsb2NhbGhvc3QxKzApBgNVBAoMIkhld2xldHQgUGFja2FyZCBFbnRlcnBy
4+
aXNlIENvbXBhbnkxGjAYBgNVBAsMEVJuRCBDZW50ZXItQnJhemlsMQswCQYDVQQG
5+
EwJCUjEaMBgGA1UECAwRUmlvIEdyYW5kZSBkbyBTdWwxFTATBgNVBAcMDFBvcnRv
6+
IEFsZWdyZTAeFw0xOTAzMjkxNzUwMjlaFw0yOTAzMjYxNzUwMjlaMIGdMRIwEAYD
7+
VQQDDAlsb2NhbGhvc3QxKzApBgNVBAoMIkhld2xldHQgUGFja2FyZCBFbnRlcnBy
8+
aXNlIENvbXBhbnkxGjAYBgNVBAsMEVJuRCBDZW50ZXItQnJhemlsMQswCQYDVQQG
9+
EwJCUjEaMBgGA1UECAwRUmlvIEdyYW5kZSBkbyBTdWwxFTATBgNVBAcMDFBvcnRv
10+
IEFsZWdyZTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAM7YHnU8ZQm8
11+
p8aJCbIbohPjnSs6+VbcVAZwj5BT3wufSi5J3mga6OLdDHlpn9l2QPBJOy2XM/+h
12+
irvjYCY9CBtGLTBSWKy7GyYaLmgxnxzuxb753CJKOILUqEwUPI6IY+B6+ZFDvP8I
13+
J7Wt6AeOBUmoB3slRGWMUbMPIYimolJ06FyKy4IE1DipR6NF1CSqWMBCc3sDEPdg
14+
XSNLV2qvT1LdWhah1XD1b3XzgKuk2G4cBfbZ7y4DI0esPN7jIB0DH4X3pzT6lYSm
15+
o3RKliDMgxHESDvxVB4yt0xaGpqbHcDbTHu9GuKcJsDInn9kejorpvLt15OOYeQw
16+
ho1PodoLc70CAwEAAaNTMFEwHQYDVR0OBBYEFAOJJW4WpobN8xh3DmFUEKCJ0+X9
17+
MB8GA1UdIwQYMBaAFAOJJW4WpobN8xh3DmFUEKCJ0+X9MA8GA1UdEwEB/wQFMAMB
18+
Af8wDQYJKoZIhvcNAQELBQADggEBAFbZJmlbrB3d0QHIFFBUBwCo2cdQTKAVmXRv
19+
iWIDcN79S8lzRpQeQT/7SB0fPIZbAtvhTxDo2qo5QtF++jfVpQwTiSekMvLX9Ev2
20+
vZu+STdf2KMjZGaFxRSFo9r4OwUZZiw3zqzTyEgEbAJHe0x401dNGB9NnV38z1MS
21+
MwEILh+XC5mQRgSdAuzcJO0ErXtClrhAzDb2xKNXWMvj7P+zu3maag+NU41QKb16
22+
0Xp9DbgyE4/9G/5qTLfsEtl1fZbm2wCk1LN5CSrFIHxPpkGCOF/HdeZR95pSEO7H
23+
TRVCkzBPl+0oEmTIe/4SfHFobDezNGDq1HeSb7/G257LFY4YAzs=
24+
-----END CERTIFICATE-----

Diff for: cert/ws-receiver-key.pem

+28
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
-----BEGIN PRIVATE KEY-----
2+
MIIEvgIBADANBgkqhkiG9w0BAQEFAASCBKgwggSkAgEAAoIBAQDO2B51PGUJvKfG
3+
iQmyG6IT450rOvlW3FQGcI+QU98Ln0ouSd5oGuji3Qx5aZ/ZdkDwSTstlzP/oYq7
4+
42AmPQgbRi0wUlisuxsmGi5oMZ8c7sW++dwiSjiC1KhMFDyOiGPgevmRQ7z/CCe1
5+
regHjgVJqAd7JURljFGzDyGIpqJSdOhcisuCBNQ4qUejRdQkqljAQnN7AxD3YF0j
6+
S1dqr09S3VoWodVw9W9184CrpNhuHAX22e8uAyNHrDze4yAdAx+F96c0+pWEpqN0
7+
SpYgzIMRxEg78VQeMrdMWhqamx3A20x7vRrinCbAyJ5/ZHo6K6by7deTjmHkMIaN
8+
T6HaC3O9AgMBAAECggEAV4uNSJ1pPjfE4vi5S9L6RGS/7r4lLihOv/MAMFvvOWIP
9+
6YuGQJWzH+HjF7gm2cl9LrYv/9nRPk7HA0L3PPfz6GdJVPxlX6ZJlVTbc2odKAe/
10+
Vlc2XqT/ShBrsteV0dXUP/yMiHkdEuwGspSKcjgf8M7Xa72YN0qugZTT4px0c2UY
11+
a+GH3WNkalFo4SHBZbMfoLSslD7C++xsoHKx4k+tLrUOexy1RDizTYxXc12DsNWO
12+
r/vFT1HedGo/AJhq5Xh13sfDAGciEqpfmsLGPzARych7ktnfi6qwAR38QZqojj4G
13+
G6+nNnqDBBvUU1s6yCVnCrwG0RZybUQhYuBcxf5zwQKBgQD3k/VV51OOhTSBOIv3
14+
nR/kjoc9AJYSOO4Zwx7OquzKmwP5Zmi5ie7TTkslKIvJYw6QZ2jxt4ji9euFOXmy
15+
uhcAMyJ4YefMZ1oeAT98e23cse24UiwNbdommNM3ETIE1J4sQcL8EGCkk7KtgjXI
16+
SOuLMIqREuzPSJ5vMjDOPRE1WQKBgQDV4W3nwt1of3EgsS0OPjgZO5Edn+vBmnB8
17+
cOwJj6lFn6qX0niQyoa7/lBk0V8GYgkgOzFe0isMVnjA2WCuxGhC6x5DCPPKHPGv
18+
UjPKrl/gqt6BVk+xN3pdnDIPRMFTwo3lkXjidf+KrgKTD8F08WozfuAdKeuTt8Uf
19+
bnLe/66RBQKBgQCRERhDMp2qN/EQ+pJBD8c9RCqIGwzUNpmFbOhjTpIbEYPdoh0h
20+
Amp3VDwB1OU7pphFEuLSJ6nE2zYaxRfDGvkZO90pzqxk//Y0+KQ7i5NPKs7RHw0C
21+
/WhDD29Lp/64B+F6qznWOr52ELk0o8RhzCCAWXwID5/EwZdcLnucjPnFWQKBgQCc
22+
rYQ+mCBrsZgk08XmviuISHuY0RL6g3FNp8cxhd0BlOJ6T4NkxggHZVhtUncjDOQU
23+
iWg0Rw+j/SB+XX+W52hdRTGo98DnWWavAS/RlQXFZkaTRrAgaTypoIeHad2Zx1b9
24+
SiDc/IXTiH94Tb1xNnyO9q2kj5X0Y1XzHYzm0TSHJQKBgAmZNzy4IzkNwmt+9wcE
25+
5tAdUdHkaswtiuMoopwUvEaK4x349CEGIm31m9SepzkPCCA3/esUYO1mt77J4dhJ
26+
rEVIYpLiXvNZDTcIxtD1tHfV88CR6VzUlVzb/QCl8RsvSLELcou8GqH5CuoZ1Iu9
27+
7MSZA1zznGdG9ZAzuNd1YeRr
28+
-----END PRIVATE KEY-----
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
{
2+
"type": "record",
3+
"name": "EnrichedAdvertisemtentsKey",
4+
"namespace": "raven.ble.advertisements.enriched.key",
5+
"doc": "Enriched advertisements payload key",
6+
"fields": [
7+
{
8+
"name": "address",
9+
"type": "string",
10+
"doc": "Device Address"
11+
},
12+
{
13+
"name": "addressType",
14+
"type": {"type": "enum", "name": "AddressType", "symbols": ["public", "random"] },
15+
"doc": "Device Address Type"
16+
}]
17+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,60 @@
1+
{
2+
"type": "record",
3+
"name": "EnrichedAdvertisemtentsValue",
4+
"namespace": "raven.ble.advertisements.enriched.value",
5+
"doc": "Enriched advertisements payload",
6+
"fields": [
7+
{
8+
"name": "address",
9+
"type": "string",
10+
"doc": "Device Address"
11+
},
12+
{
13+
"name": "addressType",
14+
"type": {"type": "enum", "name": "AddressType", "symbols": ["public", "random"]},
15+
"doc": "Device Address Type"
16+
},
17+
{
18+
"name": "scannerUUID",
19+
"type": "string",
20+
"doc": "Scanner UUID"
21+
},
22+
{
23+
"name": "scannerAddress",
24+
"type": "string",
25+
"doc": "Device Address"
26+
},
27+
{
28+
"name": "rssi",
29+
"type": "float",
30+
"doc": "RSSI"
31+
},
32+
{
33+
"name": "capturedDatetime",
34+
"type": "string",
35+
"doc": "Captured Timestamp in String ISO 8601"
36+
},
37+
{
38+
"name": "capturedTimestamp",
39+
"type": {
40+
"type": "long",
41+
"logicalType": "timestamp-millis"
42+
},
43+
"doc": "Captured timestamp of payload in milliseconds"
44+
},
45+
{
46+
"name": "temperature",
47+
"type": "float",
48+
"doc": "Hanvit Temperature"
49+
},
50+
{
51+
"name": "humidity",
52+
"type": "float",
53+
"doc": "Hanvit humidity"
54+
},{
55+
"name": "battery",
56+
"type": "float",
57+
"doc": "Hanvit Battery"
58+
}]
59+
}
60+
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
{
2+
"type": "record",
3+
"name": "RawAdvertisemtentsKey",
4+
"namespace": "raven.ble.advertisements.raw.key",
5+
"doc": "Raw advertisements payload key",
6+
"fields": [
7+
{
8+
"name": "address",
9+
"type": "string",
10+
"doc": "Device Address"
11+
},
12+
{
13+
"name": "addressType",
14+
"type": {"type": "enum", "name": "AddressType", "symbols": ["public", "random"] },
15+
"doc": "Device Address Type"
16+
}]
17+
}

0 commit comments

Comments
 (0)