Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Sign in / Register
Toggle navigation
G
gdut-drcom
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Locked Files
Issues
0
Issues
0
List
Boards
Labels
Service Desk
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Security & Compliance
Security & Compliance
Dependency List
License Compliance
Packages
Packages
List
Container Registry
Analytics
Analytics
CI / CD
Code Review
Insights
Issues
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
nanahira
gdut-drcom
Commits
17e2d1fb
Commit
17e2d1fb
authored
Oct 05, 2016
by
chenhaowen
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
add luci app, remove dependent of openssl
parent
de457698
Changes
4
Show whitespace changes
Inline
Side-by-side
Showing
4 changed files
with
92 additions
and
66 deletions
+92
-66
Makefile
Makefile
+15
-5
src/Makefile
src/Makefile
+18
-17
src/auth.c
src/auth.c
+42
-35
src/gdut-drcom.c
src/gdut-drcom.c
+17
-9
No files found.
Makefile
View file @
17e2d1fb
...
...
@@ -5,7 +5,7 @@ PKG_BUILD_DIR:=$(BUILD_DIR)/$(PKG_NAME)
PKG_NAME
:=
gdut-drcom
# Version: 1.0-1
PKG_VERSION
:=
1.
4
PKG_VERSION
:=
1.
5
PKG_RELEASE
:=
1
PKG_MAINTAINER
:=
CHW
# PKG_SOURCE_URL:=
...
...
@@ -15,7 +15,8 @@ define Package/gdut-drcom
DEFAULT
:=
y
TITLE
:=
xdh3c
--
a h3c client
for
linux
# DEPENDS:=+libgcrypt
DEPENDS
:=
+libopenssl
# DEPENDS:=+libopenssl
# DEPENDS:=+libpolarssl
endef
define
Build/Prepare
@echo
"############## Build/Prepare"
...
...
@@ -25,7 +26,8 @@ endef
define
Build/Compile
@echo
"############## Build/Compile"
export
CFLAGS
=
"
$CFLAGS
-DDEBUG"
$(call
Build/Compile/Default,
cryptlib
=
openssl
)
# $(call Build/Compile/Default, cryptlib=openssl)
$(call
Build/Compile/Default)
endef
define
Package/gdut-drcom/postinst
#!/bin/sh
...
...
@@ -44,9 +46,17 @@ define Package/gdut-drcom/install
$(INSTALL_DIR)
$(1)/usr/bin
$(INSTALL_BIN)
$(PKG_BUILD_DIR)/gdut-drcom
$(1)/usr/bin
$(INSTALL_DIR)
$(1)/etc
$(INSTALL_DATA)
$(PKG_BUILD_DIR)/etc/gdut-drcom.conf
$(1)/etc
$(INSTALL_DATA)
$(PKG_BUILD_DIR)/
root/
etc/gdut-drcom.conf
$(1)/etc
$(INSTALL_DIR)
$(1)/etc/init.d
$(INSTALL_BIN)
$(PKG_BUILD_DIR)/etc/init.d/gdut-drcom
$(1)/etc/init.d
$(INSTALL_BIN)
$(PKG_BUILD_DIR)/root/etc/init.d/gdut-drcom
$(1)/etc/init.d
$(INSTALL_DIR)
$(1)/etc/config
$(INSTALL_DATA)
$(PKG_BUILD_DIR)/root/etc/config/gdut_drcom
$(1)/etc/config
$(INSTALL_DIR)
$(1)/usr/lib/lua/luci/controller
$(INSTALL_DATA)
$(PKG_BUILD_DIR)/root/usr/lib/lua/luci/controller/gdut-drcom.lua
$(1)/usr/lib/lua/luci/controller
$(INSTALL_DIR)
$(1)/usr/lib/lua/luci/model/cbi
$(INSTALL_DATA)
$(PKG_BUILD_DIR)/root/usr/lib/lua/luci/model/cbi/gdut-drcom.lua
$(1)/usr/lib/lua/luci/model/cbi
endef
$(eval
$(call
BuildPackage,gdut-drcom))
src/Makefile
View file @
17e2d1fb
#CC:=gcc
CFLAGS
+=
-DDEBUG
#cryptlib=openssl
#ifeq ($(lib), openssl)
# CFLAGS+=-D_WITH_OPENSSL_
# LIBS:=-lcrypto
#else
# LIBS:=-lpolarssl
#endif
objects
=
gdut-drcom.o config.o auth.o
all
:
gdut-drcom
@
echo
gdut-drcom
ifeq
($(cryptlib), polarssl)
CFLAGS
+=
-D__WITH_POLARSSL__
LIBS
:=
-lpolarssl
CFLAGS
+=
-D__WITH_POLARSSL__
LIBS
:=
-lpolarssl
else
ifeq
($(cryptlib), gcrypt)
CFLAGS
+=
-D__WITH_GCRYPT__
LIBS
:=
-lgcrypt
CFLAGS
+=
-D__WITH_GCRYPT__
LIBS
:=
-lgcrypt
else
ifeq
($(cryptlib), openssl)
CFLAGS
+=
-D__WITH_OPENSSL__
LIBS
:=
-lcrypto
else
LIBS
:=
-lcrypt
o
objects
+=
md5.o md4.o sha1.
o
endif
all
:
gdut-drcom
@
echo
gdut-drcom
gdut-drcom
:
gdut-drcom.o config.o auth.o
$(CC)
gdut-drcom.o config.o auth.o
-o
gdut-drcom
$(CFLAGS)
$(LIBS)
gdut-drcom
:
$(objects)
$(CC)
*
.o
-o
gdut-drcom
$(CFLAGS)
$(LIBS)
gdut-drcom.o
:
gdut-drcom.c
$(CC)
$(CFLAGS)
-c
$<
...
...
@@ -32,6 +30,9 @@ config.o: config.c config.h
auth.o
:
auth.c config.h
$(CC)
$(CFLAGS)
-c
$<
md5.o md4.o sha1.o
:
$(CC)
-c
crypt/
*
.c
.PHONY
:
clean
clean
:
rm
-f
gdut-drcom
*
.o
src/auth.c
View file @
17e2d1fb
...
...
@@ -40,7 +40,7 @@
#define _MD5(data, len, _md5) gcry_md_hash_buffer(GCRY_MD_MD5, _md5, data, len)
#define _MD4(data, len, _md4) gcry_md_hash_buffer(GCRY_MD_MD4, _md4, data, len)
#define _SHA1(data, len, _sha1) gcry_md_hash_buffer(GCRY_MD_SHA1, _sha1, data, len)
#el
se
#el
if __WITH_OPENSSL__
#include <openssl/md5.h>
#include <openssl/md4.h>
#include <openssl/sha.h>
...
...
@@ -48,6 +48,14 @@
#define _MD5(data, len, _md5) MD5(data, len, _md5)
#define _MD4(data, len, _md4) MD4(data, len, _md4)
#define _SHA1(data, len, _sha1) SHA1(data, len, _sha1)
#else
#include "crypt/md5.h"
#include "crypt/md4.h"
#include "crypt/sha1.h"
#define _MD5(data, len, _md5) md5(data, len, _md5)
#define _MD4(data, len, _md4) md4(data, len, _md4)
#define _SHA1(data, len, _sha1) sha1(data, len, _sha1)
#endif
#include "config.h"
...
...
@@ -61,7 +69,7 @@ static int make_keep_alive2_pkt1(char *buf, unsigned char cnt, char *flag,\
static
int
make_keep_alive2_pkt2
(
char
*
buf
,
unsigned
char
cnt
,
char
*
flag
,
\
char
*
rand
,
char
*
key
,
char
*
host_ip
);
static
int
gen_ka1_checksum
(
char
*
checksum
,
char
*
seed
,
unsigned
char
mode
);
static
void
gen_ka1_checksum
(
char
*
checksum
,
char
*
seed
,
unsigned
char
mode
);
static
void
gen_ka2_checksum
(
char
*
data
,
int
len
,
char
*
checksum
);
static
int32_t
drcomCRC32
(
char
*
data
,
int
len
);
...
...
@@ -72,7 +80,7 @@ static void print_as_hex(char *buf, int len);
int
auth
(
void
)
{
/*variavles of packets*/
unsigned
char
buf
[
1024
]
=
{
0
};
//packet data buf
unsigned
char
pkt_data
[
1024
]
=
{
0
};
//packet data buf
int
length
;
//packet data length
/*variavles of packets*/
...
...
@@ -132,20 +140,20 @@ HEART_BEAT_START:
retry_cnt
=
1
;
while
(
1
)
{
length
=
make_keep_alive1_pkt1
(
buf
,
kp1_cnt
);
sendto
(
client_sockfd
,
buf
,
length
,
0
,
\
length
=
make_keep_alive1_pkt1
(
pkt_data
,
kp1_cnt
);
sendto
(
client_sockfd
,
pkt_data
,
length
,
0
,
\
(
struct
sockaddr
*
)
&
remote_addr
,
sizeof
(
remote_addr
));
fprintf
(
stdout
,
"<==[sended kap1_1 request %d] len = %d
\n
"
,
\
kp1_cnt
,
length
);
fflush
(
stdout
);
print_as_hex
(
buf
,
length
);
print_as_hex
(
pkt_data
,
length
);
if
(
retry_cnt
>
5
)
{
goto
HEART_BEAT_START
;
}
memset
(
buf
,
0x00
,
1024
);
if
((
length
=
recvfrom
(
client_sockfd
,
buf
,
1024
,
0
,
\
memset
(
pkt_data
,
0x00
,
1024
);
if
((
length
=
recvfrom
(
client_sockfd
,
pkt_data
,
1024
,
0
,
\
(
struct
sockaddr
*
)
&
remote_addr
,
&
sin_size
))
==
-
1
)
{
fprintf
(
stdout
,
"recv kap1_1 timeout, retry %d!
\n
"
,
retry_cnt
++
);
...
...
@@ -160,29 +168,29 @@ HEART_BEAT_START:
fprintf
(
stdout
,
"==>[recieved kap1_1 response %d] len = %d
\n
"
,
\
kp1_cnt
,
length
);
fflush
(
stdout
);
print_as_hex
(
buf
,
length
);
memcpy
(
seed
,
buf
+
8
,
4
);
memcpy
(
host_ip
,
buf
+
12
,
4
);
// memcpy(drcom_config.host_ip,
buf
+12, 4);
print_as_hex
(
pkt_data
,
length
);
memcpy
(
seed
,
pkt_data
+
8
,
4
);
memcpy
(
host_ip
,
pkt_data
+
12
,
4
);
// memcpy(drcom_config.host_ip,
pkt_data
+12, 4);
kp1_cnt
++
;
retry_cnt
=
1
;
while
(
1
)
{
length
=
make_keep_alive1_pkt2
(
buf
,
seed
,
host_ip
,
kp1_cnt
);
sendto
(
client_sockfd
,
buf
,
length
,
0
,
\
length
=
make_keep_alive1_pkt2
(
pkt_data
,
seed
,
host_ip
,
kp1_cnt
);
sendto
(
client_sockfd
,
pkt_data
,
length
,
0
,
\
(
struct
sockaddr
*
)
&
remote_addr
,
sizeof
(
remote_addr
));
fprintf
(
stdout
,
"<==[sended kap1_2 request %d] len = %d
\n
"
,
\
kp1_cnt
,
length
);
fflush
(
stdout
);
print_as_hex
(
buf
,
length
);
print_as_hex
(
pkt_data
,
length
);
length
=
0
;
if
(
retry_cnt
>
5
)
{
goto
HEART_BEAT_START
;
}
if
((
length
=
recvfrom
(
client_sockfd
,
buf
,
1024
,
0
,
\
if
((
length
=
recvfrom
(
client_sockfd
,
pkt_data
,
1024
,
0
,
\
(
struct
sockaddr
*
)
&
remote_addr
,
&
sin_size
))
==
-
1
)
{
fprintf
(
stdout
,
"recv kap1_2 timeout, retry %d!
\n
"
,
retry_cnt
++
);
...
...
@@ -197,7 +205,7 @@ HEART_BEAT_START:
fprintf
(
stdout
,
"==>[recieved kap1_2 response %d] len = %d
\n
"
,
\
kp1_cnt
,
length
);
fflush
(
stdout
);
print_as_hex
(
buf
,
length
);
print_as_hex
(
pkt_data
,
length
);
kp1_cnt
++
;
retry_cnt
=
0
;
...
...
@@ -208,20 +216,20 @@ HEART_BEAT_START:
sleep
(
3
);
while
(
1
)
{
length
=
make_keep_alive2_pkt1
(
buf
,
kp2_cnt
,
ka2_flag
,
rand
,
ka2_key
);
sendto
(
client_sockfd
,
buf
,
length
,
0
,
\
length
=
make_keep_alive2_pkt1
(
pkt_data
,
kp2_cnt
,
ka2_flag
,
rand
,
ka2_key
);
sendto
(
client_sockfd
,
pkt_data
,
length
,
0
,
\
(
struct
sockaddr
*
)
&
remote_addr
,
sizeof
(
remote_addr
));
fprintf
(
stdout
,
"<==[sended kap2_1 request %d] len = %d
\n
"
,
\
kp2_cnt
,
length
);
fflush
(
stdout
);
print_as_hex
(
buf
,
length
);
print_as_hex
(
pkt_data
,
length
);
if
(
retry_cnt
>
5
)
{
goto
HEART_BEAT_START
;
}
memset
(
buf
,
0x00
,
1024
);
if
((
length
=
recvfrom
(
client_sockfd
,
buf
,
1024
,
0
,
\
memset
(
pkt_data
,
0x00
,
1024
);
if
((
length
=
recvfrom
(
client_sockfd
,
pkt_data
,
1024
,
0
,
\
(
struct
sockaddr
*
)
&
remote_addr
,
&
sin_size
))
==
-
1
)
{
fprintf
(
stdout
,
"recv kap2_1 timeout, retry %d!
\n
"
,
retry_cnt
++
);
...
...
@@ -229,13 +237,13 @@ HEART_BEAT_START:
}
else
{
if
(
buf
[
0
]
==
0x07
&&
buf
[
2
]
==
0x10
)
if
(
pkt_data
[
0
]
==
0x07
&&
pkt_data
[
2
]
==
0x10
)
{
memcpy
(
ka2_flag
,
buf
+
6
,
2
);
memcpy
(
ka2_flag
,
pkt_data
+
6
,
2
);
fprintf
(
stdout
,
"==>[recieved kap2_1 response %d] len = %d
\n
"
,
\
kp2_cnt
,
length
);
fflush
(
stdout
);
print_as_hex
(
buf
,
length
);
print_as_hex
(
pkt_data
,
length
);
kp2_cnt
++
;
continue
;
}
...
...
@@ -245,26 +253,26 @@ HEART_BEAT_START:
fprintf
(
stdout
,
"==>[recieved kap2_1 response %d] len = %d
\n
"
,
\
kp2_cnt
,
length
);
fflush
(
stdout
);
print_as_hex
(
buf
,
length
);
memcpy
(
ka2_key
,
buf
+
16
,
4
);
print_as_hex
(
pkt_data
,
length
);
memcpy
(
ka2_key
,
pkt_data
+
16
,
4
);
kp2_cnt
++
;
while
(
1
)
{
length
=
make_keep_alive2_pkt2
(
buf
,
kp2_cnt
,
ka2_flag
,
rand
,
ka2_key
,
host_ip
);
sendto
(
client_sockfd
,
buf
,
length
,
0
,
\
length
=
make_keep_alive2_pkt2
(
pkt_data
,
kp2_cnt
,
ka2_flag
,
rand
,
ka2_key
,
host_ip
);
sendto
(
client_sockfd
,
pkt_data
,
length
,
0
,
\
(
struct
sockaddr
*
)
&
remote_addr
,
sizeof
(
remote_addr
));
fprintf
(
stdout
,
"<==[sended kap2_2 request %d] len = %d
\n
"
,
\
kp2_cnt
,
length
);
fflush
(
stdout
);
print_as_hex
(
buf
,
length
);
print_as_hex
(
pkt_data
,
length
);
if
(
retry_cnt
>
5
)
{
goto
HEART_BEAT_START
;
}
memset
(
buf
,
0x00
,
1024
);
if
((
length
=
recvfrom
(
client_sockfd
,
buf
,
1024
,
0
,
\
memset
(
pkt_data
,
0x00
,
1024
);
if
((
length
=
recvfrom
(
client_sockfd
,
pkt_data
,
1024
,
0
,
\
(
struct
sockaddr
*
)
&
remote_addr
,
&
sin_size
))
==
-
1
)
{
fprintf
(
stdout
,
"recv kap2_2 timeout, retry %d!
\n
"
,
retry_cnt
++
);
...
...
@@ -278,7 +286,7 @@ HEART_BEAT_START:
fprintf
(
stdout
,
"==>[recieved kap2_2 response %d] len = %d
\n
"
,
\
kp2_cnt
,
length
);
fflush
(
stdout
);
print_as_hex
(
buf
,
length
);
print_as_hex
(
pkt_data
,
length
);
kp2_cnt
++
;
...
...
@@ -394,7 +402,7 @@ static int make_keep_alive1_pkt2(char *buf, char *seed,\
return
index
+
16
*
4
;
}
static
int
gen_ka1_checksum
(
char
*
checksum
,
char
*
seed
,
unsigned
char
mode
)
static
void
gen_ka1_checksum
(
char
*
checksum
,
char
*
seed
,
unsigned
char
mode
)
{
char
checksum_t
[
32
]
=
{
0
};
int32_t
temp_num
;
...
...
@@ -445,7 +453,6 @@ static int gen_ka1_checksum(char *checksum, char *seed, unsigned char mode)
default:
break
;
}
return
0
;
}
...
...
src/gdut-drcom.c
View file @
17e2d1fb
...
...
@@ -78,17 +78,25 @@ int main(int argc, char *argv[])
static
void
print_help
(
char
*
name
)
{
fprintf
(
stdout
,
"gdut-drcom
\n
"
);
fprintf
(
stdout
,
" A third-partydrcom client for gdut.
\n\n
"
);
// fprintf(stdout, "gdut-drcom\n");
fprintf
(
stdout
,
" __ __ __
\n
"
" ___ ___/ /_ __/ /_ ___/ /__________ __ _
\n
"
" / _ `/ _ / // / __/ / _ / __/ __/ _
\\
/ '
\\\n
"
"
\\
_, /
\\
_,_/
\\
_,_/
\\
__/
\\
_,_/_/
\\
__/
\\
___/_/_/_/
\n
"
" /___/
\n\n
"
);
fprintf
(
stdout
,
" A third-party drcom client for gdut.
\n\n
"
);
fprintf
(
stdout
,
"usage:
\n
"
);
fprintf
(
stdout
,
" %s
\n
"
,
name
);
fprintf
(
stdout
,
" --remote-ip <ip addr>
\t\t
The server ip.
\n
"
);
fprintf
(
stdout
,
" --remote-ip <ip addr>
The server ip.
\n
"
);
fprintf
(
stdout
,
"
\n
"
);
fprintf
(
stdout
,
" [--remote-port <port>]
\t\t
The server port, default as 61440.
\n
"
);
fprintf
(
stdout
,
" [--keep-alive1-flag <flag>]
\t\t
The keep alive 1 packet's flag,
"
"
\t\t\t\t\t\t\t\t
default as 00.
\n
"
);
fprintf
(
stdout
,
" [-c, --config-file <file>]
\t\t
The path to config file.
"
"
\t\t\t\t\t\t\t\t
default as /etc/gdut-drcom.conf
\n
"
);
fprintf
(
stdout
,
" [-h, --help]
\t\t\t
Print this message.
\n
"
);
fprintf
(
stdout
,
" [--remote-port <port>]
The server port, default as 61440.
\n
"
);
fprintf
(
stdout
,
" [--keep-alive1-flag <flag>]
The keep alive 1 packet's flag.
\n
"
"
default as 00.
\n
"
);
fprintf
(
stdout
,
" [-c, --config-file <file>]
The path to config file.
\n
"
" default as /etc/gdut-drcom.conf.
\n
"
);
fprintf
(
stdout
,
" [-h, --help]
Print this message.
\n
"
);
}
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