Commit 17e2d1fb authored by chenhaowen's avatar chenhaowen

add luci app, remove dependent of openssl

parent de457698
......@@ -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))
#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:=-lcrypto
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
......@@ -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)
#else
#elif __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;
}
......
......@@ -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\tThe server ip.\n");
fprintf(stdout, " --remote-ip <ip addr> The server ip.\n");
fprintf(stdout, "\n");
fprintf(stdout, " [--remote-port <port>]\t\tThe server port, default as 61440.\n");
fprintf(stdout, " [--keep-alive1-flag <flag>]\t\tThe 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\tThe 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\tPrint 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");
}
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment