Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Contribute to GitLab
Sign in / Register
Toggle navigation
A
ademco_hb
Project
Project
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
captainwong
ademco_hb
Commits
845eccb0
Commit
845eccb0
authored
Aug 03, 2023
by
captainwong
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
publish
parent
a94e728e
Hide whitespace changes
Inline
Side-by-side
Showing
7 changed files
with
69 additions
and
19 deletions
+69
-19
README.md
examples/README.md
+14
-0
build.sh
examples/build.sh
+9
-8
httprelay.c
examples/httprelay/httprelay.c
+10
-9
clean.sh
tools/clean.sh
+1
-0
mkrelease.sh
tools/mkrelease.sh
+20
-2
test.sh
tools/test.sh
+13
-0
win_node.bat
tools/win_node.bat
+2
-0
No files found.
examples/README.md
View file @
845eccb0
...
...
@@ -5,3 +5,17 @@ Windows 下的 安定宝 `dll` 工程。
## server_demo
C++ 编写的简易版接警中心,可用来接收主机连接,进行简单交互:接收主机事件;布撤防。
## httprelay
C 编写的简易版 TCP 服务器与 HTTP 转发器,可以用来接收主机连接,并转发主机事件到指定的 URI.
依赖
`libuv, libcurl`
.
示例:
```
bash
./httprelay 12345 http://your-http-server.com:8080/ademco
```
httprelay 须运行在公网环境,报警主机配置直连接警中心IP、端口,主机有事件发生时将转发至 http://your-http-server.com:8080/ademco
examples/build.sh
View file @
845eccb0
...
...
@@ -3,13 +3,14 @@
mkdir
-p
build
cd
build
opt
=
"-std=c++11 -O3"
eb
=
0
if
[
x
$1
!=
x
]
;
then
if
[
$1
-eq
1
]
;
then
eb
=
1
fi
cc
=
gcc
cxx
=
g++
if
[
$(
command
-v
clang++ &> /dev/null
;
echo
$?
)
-eq
0
]
cc
=
clang
cxx
=
clang++
fi
g++
$opt
../server_demo/server_demo.cpp ../../ademco.c
-I
../../
-lpthread
-o
server_demo
\ No newline at end of file
${
cxx
}
-std
=
c++11
-O3
../server_demo/server_demo.cpp ../../ademco.c
-I
../../
-lpthread
-o
server_demo
${
cc
}
../../ademco.c ../../hb_com.c ../httprelay/cJSON/cJSON.c ../httprelay/uvlib/
*
.c ../httprelay/uvlib/llhttp/src/
*
.c ../httprelay/
*
.c
-I
../httprelay/uvlib/llhttp/include
-luv
-lcurl
-o
httprelay
examples/httprelay/httprelay.c
View file @
845eccb0
...
...
@@ -4,6 +4,7 @@
#include "uvlib/uv_tcpserver.h"
#include "cJSON/cJSON.h"
#include <curl/curl.h>
#include <string.h>
typedef
struct
machine_info_s
{
char
acct
[
ADEMCO_PACKET_ACCT_MAX_LEN
+
1
];
...
...
@@ -123,7 +124,7 @@ void on_tcp_connection(uv_tcpserver_client_context_t* client, int connected) {
uv_tcp_parse_result_t
on_tcp_parse
(
uv_tcpserver_client_context_t
*
client
,
const
char
*
buf
,
size_t
len
,
size_t
*
ate
)
{
AdemcoPacket
pkt
;
auto
res
=
ademcoPacketParse
(
buf
,
len
,
&
pkt
,
ate
);
AdemcoParseResult
res
=
ademcoPacketParse
(
buf
,
len
,
&
pkt
,
ate
);
switch
(
res
)
{
case
RESULT_OK
:
switch
(
pkt
.
id
)
{
...
...
@@ -175,34 +176,34 @@ uv_tcp_parse_result_t on_tcp_parse(uv_tcpserver_client_context_t* client, const
}
}
int
init_tcpd
(
const
char
*
addr
,
int
port
)
{
int
init_tcpd
(
int
port
)
{
static
uv_tcpserver_settings_t
settings
=
{
on_tcp_connection
,
on_tcp_parse
,
NULL
};
int
r
=
uv_tcpserver_create
(
&
context
.
tcpd
,
context
.
loop
,
&
settings
);
fatal_on_uv_err
(
r
,
"uv_tcpserver_create"
);
r
=
uv_tcpserver_start_listen
(
context
.
tcpd
,
addr
,
port
);
r
=
uv_tcpserver_start_listen
(
context
.
tcpd
,
"0.0.0.0"
,
port
);
fatal_on_uv_err
(
r
,
"uv_tcpserver_start_listen"
);
printf
(
"tcp server listening on %s:%d
\n
"
,
addr
,
port
);
printf
(
"tcp server listening on %s:%d
\n
"
,
"0.0.0.0"
,
port
);
return
r
;
}
int
main
(
int
argc
,
char
**
argv
)
{
if
(
argc
!=
4
)
{
fprintf
(
stderr
,
"Usage: %s tcp_
bind_addr tcp_
server_listening_port http_client_relay_to_uri
\n
"
" Example: %s
0.0.0.0 12345 http://your-http-server.com/ademco:8080
\n
"
,
if
(
argc
!=
3
)
{
fprintf
(
stderr
,
"Usage: %s tcp_server_listening_port http_client_relay_to_uri
\n
"
" Example: %s
12345 http://your-http-server.com:8080/ademco
\n
"
,
argv
[
0
],
argv
[
0
]);
exit
(
1
);
}
uv_log_set_level
(
uv_log_level_debug
);
memset
(
&
context
,
0
,
sizeof
(
context
));
context
.
uri
=
argv
[
3
];
context
.
uri
=
argv
[
2
];
context
.
loop
=
uv_default_loop
();
fatal_if_null
(
context
.
loop
);
curl_global_init
(
CURL_GLOBAL_ALL
);
if
(
init_tcpd
(
a
rgv
[
1
],
atoi
(
argv
[
2
])))
{
if
(
init_tcpd
(
a
toi
(
argv
[
1
])))
{
abort
();
}
...
...
tools/clean.sh
View file @
845eccb0
...
...
@@ -5,5 +5,6 @@ rm -rf mac_java
rm
-rf
win_csharp
rm
-rf
win_java
rm
-rf
server_demo
rm
-rf
win_node
cd
../swig
rm
-rf
*
.exp
*
.lib
*
.dll
*
.exe
*
.obj
*
.class com/
tools/mkrelease.sh
View file @
845eccb0
#!/bin/bash
branch
=
http
# examples
./clean.sh
./examples.bat
...
...
@@ -9,12 +11,16 @@ mkdir examples/x86
mkdir
examples/x64
cp
"/e/dev/AlarmCenterTestTools/Release/直连型主机模拟器V1.13.exe"
examples/x86/
cp
"/g/dev_libs/libevent-2.1.12-stable-install/lib/event_core.dll"
examples/x86/
cp
"/g/dev_libs/curl-7.87.0/builds/libcurl-vc14-x86-debug-dll-ipv6-sspi-schannel/bin/libcurl_debug.dll"
examples/x86/
cp
../examples/Win32/Release/server_demo.exe examples/x86/
cp
../examples/Win32/Release/httprelay.exe examples/x86/
cp
../examples/Release/ademco.dll examples/x86/
cp
../examples/Release/ademco.lib examples/x86/
cp
../examples/x64/Release/server_demo_x64.exe examples/x64/
cp
../examples/x64/Release/ademco.dll examples/x64/
cp
../examples/x64/Release/ademco.lib examples/x64/
cp
../examples/x64/Release/httprelay.exe examples/x64/
cp
"/g/dev_libs/curl-7.87.0/builds/libcurl-vc14-x64-release-dll-ipv6-sspi-schannel/bin/libcurl_debug.dll"
examples/x86/
rm
-f
examples.zip
cd
examples
zip
-r
../examples.zip
.
*
...
...
@@ -52,14 +58,26 @@ rm -rf win_csharp
# ubuntu20.04 java
ssh
-t
root@192.168.2.107
"cd /root/projects/ademco_hb && git checkout
master && git reset --hard HEAD && git pull origin master
&& cd swig && export JAVA_HOME='/usr/lib/jvm/java-8-openjdk-amd64' && ./linux_java.sh && cd ../tools && ./linux_java.sh"
ssh
-t
root@192.168.2.107
"cd /root/projects/ademco_hb && git checkout
${
branch
}
&& git reset --hard HEAD && git pull origin
${
branch
}
&& cd swig && export JAVA_HOME='/usr/lib/jvm/java-8-openjdk-amd64' && ./linux_java.sh && cd ../tools && ./linux_java.sh"
scp root@192.168.2.107:/root/projects/ademco_hb/tools/linux_java.zip
.
ssh
-t
root@192.168.2.107
"rm -f /root/projects/ademco_hb/tools/linux_java.zip"
# macOS java
ssh
-t
jack@JackMacBook-Pro.local
"cd /Users/jack/projects/ademco_hb && git checkout
master && git reset --hard HEAD && git pull origin master
&& cd swig && ./mac_java.sh && cd ../tools && ./mac_java.sh"
ssh
-t
jack@JackMacBook-Pro.local
"cd /Users/jack/projects/ademco_hb && git checkout
${
branch
}
&& git reset --hard HEAD && git pull origin
${
branch
}
&& cd swig && ./mac_java.sh && cd ../tools && ./mac_java.sh"
scp jack@JackMacBook-Pro.local:/Users/jack/projects/ademco_hb/tools/mac_java.zip
.
ssh
-t
jack@JackMacBook-Pro.local
"rm -f /Users/jack/projects/ademco_hb/tools/mac_java.zip"
# win-node
./clean.sh
mkdir
-p
win_node
./win_node.bat
cp
-r
../swig/build/ win_node/
cp
../swig/nodejs-demo.js win_node/
rm
-f
win_node.zip
cd
win_node
zip
-r
../win_node.zip
.
*
cd
..
rm
-rf
win_node/
tools/test.sh
0 → 100644
View file @
845eccb0
#!/bin/bash
# win-node
./clean.sh
mkdir
-p
win_node
./win_node.bat
cp
-r
../swig/build/ win_node/
cp
../swig/nodejs-demo.js win_node/
rm
-f
win_node.zip
cd
win_node
zip
-r
../win_node.zip
.
*
cd
..
rm
-rf
win_node/
tools/win_node.bat
0 → 100644
View file @
845eccb0
cd ..\swig
win_node.bat
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment