Merge branch 'develop' into 'master'
Develop See merge request PanGu/ntc_radius_plug!1
This commit is contained in:
134
.gitlab-ci.yml
Normal file
134
.gitlab-ci.yml
Normal file
@@ -0,0 +1,134 @@
|
||||
image: "docker:stable"
|
||||
|
||||
services:
|
||||
- docker:dind
|
||||
|
||||
variables:
|
||||
GIT_STRATEGY: "clone"
|
||||
IMAGE_TAG: $CI_REGISTRY_IMAGE:$CI_COMMIT_REF_SLUG
|
||||
|
||||
stages:
|
||||
- build
|
||||
- fvt
|
||||
- package
|
||||
- release
|
||||
|
||||
.build_before_script:
|
||||
before_script:
|
||||
- mkdir -p /tmp/padding_for_CPACK_RPM_BUILD_SOURCE_DIRS_PREFIX/$CI_PROJECT_NAMESPACE/
|
||||
- ln -s $CI_PROJECT_DIR /tmp/padding_for_CPACK_RPM_BUILD_SOURCE_DIRS_PREFIX/$CI_PROJECT_PATH
|
||||
- cd /tmp/padding_for_CPACK_RPM_BUILD_SOURCE_DIRS_PREFIX/$CI_PROJECT_PATH
|
||||
|
||||
.build_ntc_radius_plug:
|
||||
extends: .build_before_script
|
||||
image: git.mesalab.cn:7443/mesa_platform/radius:master
|
||||
script:
|
||||
- source /etc/profile.d/MESA.sh
|
||||
- mkdir -p build
|
||||
- cd build
|
||||
- cmake .. -DCMAKE_BUILD_TYPE=$BUILD_TYPE
|
||||
- make
|
||||
- make package
|
||||
|
||||
.fvt:
|
||||
script:
|
||||
- source /etc/profile.d/MESA.sh
|
||||
- rpm -ivh ./build/*.rpm
|
||||
- sed -i 's/LOG_LEVEL=30/LOG_LEVEL=10/g' /home/mesasoft/sapp_run/conf/radius/radius.conf
|
||||
- sed -i 's/.\/plug\/business\/gtest_sapp\/gtest_sapp.inf/#.\/plug\/business\/gtest_sapp\/gtest_sapp.inf/g' /home/mesasoft/sapp_run/plug/conflist.inf
|
||||
- sed -i 's/.\/plug\/business\/test_app\/test_app.inf/#.\/plug\/business\/test_app\/test_app.inf/g' /home/mesasoft/sapp_run/plug/conflist.inf
|
||||
- cd /home/mesasoft/
|
||||
- git clone https://$USER_NAME:$CI_TOKEN@git.mesalab.cn/tango/fvt.git
|
||||
- cd fvt/
|
||||
- sh +x fvt_verify.sh /home/mesasoft/sapp_run/ /home/mesasoft/sapp_run/conf/radius/radius_maat.json /home/mesasoft/sapp_run/log/ntc_radius_plug/ntc_radius_plug /home/mesasoft/fvt/radius/
|
||||
|
||||
.package_ntc_radius_plug:
|
||||
extends: .build_before_script
|
||||
image: git.mesalab.cn:7443/mesa_platform/radius:master
|
||||
script:
|
||||
- source /etc/profile.d/MESA.sh
|
||||
- mkdir -p build
|
||||
- cd build
|
||||
- cmake .. -DCMAKE_BUILD_TYPE=$BUILD_TYPE
|
||||
- make package
|
||||
|
||||
build:
|
||||
stage: build
|
||||
extends: .build_ntc_radius_plug
|
||||
tags:
|
||||
- share
|
||||
variables:
|
||||
BUILD_TYPE: "Release"
|
||||
artifacts:
|
||||
name: "$CI_JOB_NAME-$CI_COMMIT_SHORT_SHA"
|
||||
paths:
|
||||
- ./build/*.rpm
|
||||
except:
|
||||
- tags
|
||||
|
||||
fvt:
|
||||
stage: fvt
|
||||
image: git.mesalab.cn:7443/mesa_platform/radius:master
|
||||
extends: .fvt
|
||||
tags:
|
||||
- share
|
||||
except:
|
||||
- tags
|
||||
|
||||
ntc_radius_plug-release-package:
|
||||
stage: package
|
||||
extends: .package_ntc_radius_plug
|
||||
tags:
|
||||
- share
|
||||
variables:
|
||||
BUILD_TYPE: "Release"
|
||||
artifacts:
|
||||
name: "$CI_JOB_NAME-$CI_COMMIT_REF_NAME"
|
||||
paths:
|
||||
- ./build/*.rpm
|
||||
expire_in: "2 years"
|
||||
only:
|
||||
- tags
|
||||
|
||||
ntc_radius_plug-debug-package:
|
||||
stage: package
|
||||
extends: .package_ntc_radius_plug
|
||||
tags:
|
||||
- share
|
||||
variables:
|
||||
BUILD_TYPE: "Debug"
|
||||
artifacts:
|
||||
name: "$CI_JOB_NAME-$CI_COMMIT_REF_NAME"
|
||||
paths:
|
||||
- ./build/*.rpm
|
||||
expire_in: "2 years"
|
||||
only:
|
||||
- tags
|
||||
|
||||
release-ntc_radius_plug-release:
|
||||
stage: release
|
||||
image: git.mesalab.cn:7443/mesa_platform/radius:master
|
||||
tags:
|
||||
- share
|
||||
only:
|
||||
- tags
|
||||
variables:
|
||||
ARTIFACTS_JOB: "ntc_radius_plug-release-package"
|
||||
PROJECT_NAME: "ntc_radius_plug"
|
||||
USER_DEFINE: "release"
|
||||
script:
|
||||
- /bin/bash -x ./autorelease.sh $CI_API_V4_URL $CI_PROJECT_URL $CI_PROJECT_ID $CI_TOKEN $CI_COMMIT_TAG $ARTIFACTS_JOB $CI_PROJECT_NAME $USER_DEFINE
|
||||
|
||||
release-ntc_radius_plug-debug:
|
||||
stage: release
|
||||
image: git.mesalab.cn:7443/mesa_platform/radius:master
|
||||
tags:
|
||||
- share
|
||||
only:
|
||||
- tags
|
||||
variables:
|
||||
ARTIFACTS_JOB: "ntc_radius_plug-debug-package"
|
||||
PROJECT_NAME: "ntc_radius_plug"
|
||||
USER_DEFINE: "debug"
|
||||
script:
|
||||
- /bin/bash -x ./autorelease.sh $CI_API_V4_URL $CI_PROJECT_URL $CI_PROJECT_ID $CI_TOKEN $CI_COMMIT_TAG $ARTIFACTS_JOB $CI_PROJECT_NAME $USER_DEFINE
|
||||
38
CMakeLists.txt
Normal file
38
CMakeLists.txt
Normal file
@@ -0,0 +1,38 @@
|
||||
cmake_minimum_required (VERSION 2.8)
|
||||
|
||||
project(ntc_radius_plug)
|
||||
|
||||
set(CMAKE_MODULE_PATH ${PROJECT_SOURCE_DIR}/cmake)
|
||||
include(Version)
|
||||
|
||||
set(CMAKE_MACOSX_RPATH 0)
|
||||
|
||||
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wall")
|
||||
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -g")
|
||||
|
||||
include_directories(/opt/MESA/include/)
|
||||
|
||||
option(ENABLE_WARNING_ALL "Enable all optional warnings which are desirable for normal code" TRUE)
|
||||
option(ENABLE_SANITIZE_ADDRESS "Enable AddressSanitizer" FALSE)
|
||||
option(ENABLE_SANITIZE_THREAD "Enable ThreadSanitizer" FALSE)
|
||||
|
||||
if(ENABLE_SANITIZE_ADDRESS)
|
||||
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -fsanitize=address -fno-omit-frame-pointer")
|
||||
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fsanitize=address -fno-omit-frame-pointer")
|
||||
set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -lasan")
|
||||
set(CMAKE_SHARED_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -lasan")
|
||||
elseif(ENABLE_SANITIZE_THREAD)
|
||||
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -fsanitize=thread -fno-omit-frame-pointer")
|
||||
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fsanitize=thread -fno-omit-frame-pointer")
|
||||
set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -lasan")
|
||||
set(CMAKE_SHARED_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -lasan")
|
||||
endif()
|
||||
|
||||
set(CMAKE_INSTALL_PREFIX /home/mesasoft/sapp_run)
|
||||
|
||||
add_subdirectory (src)
|
||||
|
||||
SET(CPACK_RPM_PRE_INSTALL_SCRIPT_FILE "${PROJECT_SOURCE_DIR}/preinstall/install.sh")
|
||||
SET(CPACK_RPM_PRE_UNINSTALL_SCRIPT_FILE "${PROJECT_SOURCE_DIR}/preinstall/uninstall.sh")
|
||||
|
||||
include(Package)
|
||||
34
autorelease.sh
Normal file
34
autorelease.sh
Normal file
@@ -0,0 +1,34 @@
|
||||
#!/bin/sh
|
||||
if [ $# -lt 8 ] ; then
|
||||
echo "USAGE: ./autorelease.sh [API_V4_URL] [PROJECT_URL]
|
||||
[PROJECT_ID] [TOKEN]
|
||||
[COMMIT_TAG] [JOB] [PROJECT_NAME] [USER_DEFINE]"
|
||||
echo "$1; $2; $3; $4; $5; $6; $7; $8"
|
||||
exit 1;
|
||||
fi
|
||||
|
||||
CI_API_V4_URL=$1
|
||||
CI_PROJECT_URL=$2
|
||||
CI_PROJECT_ID=$3
|
||||
CI_TOKEN=$4
|
||||
CI_COMMIT_TAG=$5
|
||||
ARTIFACTS_JOB=$6
|
||||
CI_PROJECT_NAME=$7
|
||||
USER_DEFINE=$8
|
||||
|
||||
res=`echo -e "curl --header \"PRIVATE-TOKEN: $CI_TOKEN\" $CI_API_V4_URL/projects/$CI_PROJECT_ID/releases/$CI_COMMIT_TAG -o /dev/null -s -w %{http_code}"| /bin/bash`
|
||||
|
||||
if [[ $res == "200" ]]; then
|
||||
eval $(echo -e "curl --request POST --header \"PRIVATE-TOKEN: $CI_TOKEN\" \
|
||||
--data name=\"$CI_PROJECT_NAME-$USER_DEFINE-$CI_COMMIT_TAG.zip\" \
|
||||
--data url=\"$CI_PROJECT_URL/-/jobs/artifacts/$CI_COMMIT_TAG/download?job=$ARTIFACTS_JOB\"\
|
||||
$CI_API_V4_URL/projects/$CI_PROJECT_ID/releases/$CI_COMMIT_TAG/assets/links")
|
||||
else
|
||||
eval $(echo -e "curl --header 'Content-Type: application/json' --header \
|
||||
\"PRIVATE-TOKEN: $CI_TOKEN\" --data '{ \"name\": \"$CI_COMMIT_TAG\", \
|
||||
\"tag_name\": \"$CI_COMMIT_TAG\", \"description\": \"auto_release\",\
|
||||
\"assets\": { \"links\": [{ \"name\": \
|
||||
\"$CI_PROJECT_NAME-$USER_DEFINE-$CI_COMMIT_TAG.zip\", \"url\": \
|
||||
\"$CI_PROJECT_URL/-/jobs/artifacts/$CI_COMMIT_TAG/download?job=$ARTIFACTS_JOB\"\
|
||||
}] } }' --request POST $CI_API_V4_URL/projects/$CI_PROJECT_ID/releases/")
|
||||
fi
|
||||
1268
autorevision.sh
Normal file
1268
autorevision.sh
Normal file
File diff suppressed because it is too large
Load Diff
@@ -1,12 +1,9 @@
|
||||
[PLUGINFO]
|
||||
PLUGNAME=RADIUS
|
||||
SO_PATH=./plug/business/radius/radius.so
|
||||
INIT_FUNC=RADIUS_INIT
|
||||
DESTROY_FUNC=RADIUS_DESTROY
|
||||
FLAGCHANGE_FUNC=FLAG_CHANGE
|
||||
FLAGSTATE_FUNC=PROT_FUNSTAT
|
||||
GETPLUGID_FUNC=GET_PLUGID
|
||||
PLUGNAME=NTC_RADIUS_PLUG
|
||||
SO_PATH=./plug/business/ntc_radius_plug/ntc_radius_plug.so
|
||||
INIT_FUNC=NTC_RADIUS_PLUG_INIT
|
||||
DESTROY_FUNC=NTC_RADIUS_PLUG_DESTROY
|
||||
|
||||
[UDP]
|
||||
[RADIUS]
|
||||
FUNC_FLAG=ALL
|
||||
FUNC_NAME=RADIUS_ENTRY
|
||||
FUNC_NAME=NTC_RADIUS_PLUG_ENTRY
|
||||
|
||||
41
cmake/Package.cmake
Normal file
41
cmake/Package.cmake
Normal file
@@ -0,0 +1,41 @@
|
||||
if(CMAKE_BUILD_TYPE STREQUAL "Debug")
|
||||
set(CPACK_PACKAGE_NAME "${PROJECT_NAME}-debug")
|
||||
else()
|
||||
set(CPACK_PACKAGE_NAME ${PROJECT_NAME})
|
||||
endif()
|
||||
|
||||
message(STATUS "Package: ${CPACK_PACKAGE_NAME}")
|
||||
|
||||
set(CPACK_PACKAGE_VECDOR "MESA")
|
||||
set(CPACK_PACKAGE_VERSION_MAJOR "${VERSION_MAJOR}")
|
||||
set(CPACK_PACKAGE_VERSION_MINOR "${VERSION_MINOR}")
|
||||
set(CPACK_PACKAGE_VERSION_PATCH "${VERSION_PATCH}.${VERSION_BUILD}")
|
||||
set(CPACK_PACKAGING_INSTALL_PREFIX ${CMAKE_INSTALL_PREFIX})
|
||||
|
||||
set(CPACK_COMPONENTS_ALL devel)
|
||||
set(CPACK_RPM_PACKAGE_DEBUG 1)
|
||||
set(CPACK_RPM_COMPONENT_INSTALL OFF)
|
||||
set(CPACK_RPM_DEVEL_FILE_NAME "${PROJECT_NAME}-devel.rpm")
|
||||
set(CPACK_RPM_DEVEL_DEBUGINFO_FILE_NAME "${PROJECT_NAME}-devel-debuginfo.rpm")
|
||||
|
||||
# RPM Build
|
||||
set(CPACK_GENERATOR "RPM")
|
||||
set(CPACK_RPM_AUTO_GENERATED_FILE_NAME ON)
|
||||
set(CPACK_RPM_FILE_NAME "RPM-DEFAULT")
|
||||
set(CPACK_RPM_PACKAGE_VENDOR "MESA")
|
||||
set(CPACK_RPM_PACKAGE_AUTOREQPROV "no")
|
||||
set(CPACK_RPM_PACKAGE_RELEASE_DIST ON)
|
||||
set(CPACK_RPM_DEBUGINFO_PACKAGE ON)
|
||||
|
||||
|
||||
set(CPACK_BUILD_SOURCE_DIRS "${CMAKE_SOURCE_DIR}")
|
||||
|
||||
# Must uninstall the debug package before install release package
|
||||
if(CMAKE_BUILD_TYPE STREQUAL "Debug")
|
||||
set(CPACK_RPM_PACKAGE_CONFLICTS "${PROJECT_NAME}-debug")
|
||||
else()
|
||||
set(CPACK_RPM_PACKAGE_CONFLICTS ${PROJECT_NAME})
|
||||
# set(CPACK_STRIP_FILES TRUE)
|
||||
endif()
|
||||
|
||||
include(CPack)
|
||||
53
cmake/Version.cmake
Normal file
53
cmake/Version.cmake
Normal file
@@ -0,0 +1,53 @@
|
||||
|
||||
# Using autorevision.sh to generate version information
|
||||
|
||||
set(__SOURCE_AUTORESIVISION ${CMAKE_SOURCE_DIR}/autorevision.sh)
|
||||
set(__AUTORESIVISION ${CMAKE_BINARY_DIR}/autorevision.sh)
|
||||
set(__VERSION_CACHE ${CMAKE_SOURCE_DIR}/version.txt)
|
||||
set(__VERSION_CONFIG ${CMAKE_BINARY_DIR}/version.cmake)
|
||||
|
||||
file(COPY ${__SOURCE_AUTORESIVISION} DESTINATION ${CMAKE_BINARY_DIR}
|
||||
FILE_PERMISSIONS OWNER_READ OWNER_WRITE OWNER_EXECUTE GROUP_READ GROUP_EXECUTE
|
||||
WORLD_READ WORLD_EXECUTE)
|
||||
|
||||
# execute autorevision.sh to generate version information
|
||||
execute_process(COMMAND ${__AUTORESIVISION} -t cmake -o ${__VERSION_CACHE}
|
||||
OUTPUT_FILE ${__VERSION_CONFIG} ERROR_QUIET)
|
||||
include(${__VERSION_CONFIG})
|
||||
|
||||
# extract major, minor, patch version from git tag
|
||||
string(REGEX REPLACE "^v([0-9]+)\\..*" "\\1" VERSION_MAJOR "${VCS_TAG}")
|
||||
string(REGEX REPLACE "^v[0-9]+\\.([0-9]+).*" "\\1" VERSION_MINOR "${VCS_TAG}")
|
||||
string(REGEX REPLACE "^v[0-9]+\\.[0-9]+\\.([0-9]+).*" "\\1" VERSION_PATCH "${VCS_TAG}")
|
||||
|
||||
if(NOT VERSION_MAJOR)
|
||||
set(VERSION_MAJOR 1)
|
||||
endif()
|
||||
|
||||
if(NOT VERSION_MINOR)
|
||||
set(VERSION_MINOR 0)
|
||||
endif()
|
||||
|
||||
if(NOT VERSION_PATCH)
|
||||
set(VERSION_PATCH 0)
|
||||
endif()
|
||||
|
||||
set(VERSION "${VERSION_MAJOR}_${VERSION_MINOR}_${VERSION_PATCH}")
|
||||
set(VERSION_BUILD "${VCS_SHORT_HASH}")
|
||||
|
||||
# print information
|
||||
message(STATUS "Version: ${VERSION}-${VERSION_BUILD}")
|
||||
|
||||
if(NOT DEFINE_GIT_VERSION)
|
||||
option(DEFINE_GIT_VERSION "Set DEFINE_GIT_VERSION to OFF" OFF)
|
||||
|
||||
set(GIT_VERSION
|
||||
"${VERSION}-${CMAKE_BUILD_TYPE}-${VERSION_BUILD}-${VCS_BRANCH}-${VCS_TAG}-${VCS_DATE}")
|
||||
string(REGEX REPLACE "[-:+/\\.]" "_" GIT_VERSION ${GIT_VERSION})
|
||||
|
||||
if(DEFINE_GIT_VERSION)
|
||||
add_definitions(-DGIT_VERSION=${GIT_VERSION})
|
||||
option(DEFINE_GIT_VERSION "Set DEFINE_GIT_VERSION to OFF" ON)
|
||||
endif()
|
||||
|
||||
endif()
|
||||
26
preinstall/install.sh
Normal file
26
preinstall/install.sh
Normal file
@@ -0,0 +1,26 @@
|
||||
#!/bin/sh
|
||||
CONFILE=conf/radius/radius.conf
|
||||
DST=${RPM_INSTALL_PREFIX}
|
||||
mkdir -p ${DST}/plug/business/
|
||||
touch ${DST}/plug/conflist.inf
|
||||
mkdir -p ${DST}/conf/
|
||||
touch ${DST}/${CONFILE}
|
||||
|
||||
if [[ -z `grep -rn '\[business\]' ${DST}/plug/conflist.inf` ]];then
|
||||
echo '[business]' >> ${DST}/plug/conflist.inf
|
||||
fi
|
||||
|
||||
if [[ -z `grep -rn 'ntc_radius_plug.inf' ${DST}/plug/conflist.inf` ]];then
|
||||
sed -i '/\[business\]/a\./plug/business/ntc_radius_plug/ntc_radius_plug.inf' ${DST}/plug/conflist.inf
|
||||
fi
|
||||
|
||||
if [[ -z `grep -rn '\[RADIUS_PLUG\]' ${DST}/${CONFILE}` ]];then
|
||||
sed -i '1i\\[RADIUS_PLUG\]' ${DST}/${CONFILE}
|
||||
sed -i '/\[RADIUS_PLUG\]/a\LOG_LEVEL=30' ${DST}/${CONFILE}
|
||||
sed -i '/\[RADIUS_PLUG\]/a\LOG_PATH=./log/ntc_radius_plug/ntc_radius_plug' ${DST}/${CONFILE}
|
||||
sed -i '/\[RADIUS_PLUG\]/a\NIC_NAME=lo' ${DST}/${CONFILE}
|
||||
sed -i '/\[RADIUS_PLUG\]/a\SERVICE_ID=162' ${DST}/${CONFILE}
|
||||
sed -i '/\[RADIUS_PLUG\]/a\COLLECT_TOPIC=RADIUS-RECORD-LOG' ${DST}/${CONFILE}
|
||||
sed -i '/\[RADIUS_PLUG\]/a\BROKERLIST=127.0.0.1:9092' ${DST}/${CONFILE}
|
||||
sed -i '/\[RADIUS_PLUG\]/a\DEVICE_ID=0' ${DST}/${CONFILE}
|
||||
fi
|
||||
8
preinstall/uninstall.sh
Normal file
8
preinstall/uninstall.sh
Normal file
@@ -0,0 +1,8 @@
|
||||
#!/bin/sh
|
||||
CONFILE=conf/radius/radius.conf
|
||||
DST=${RPM_INSTALL_PREFIX}
|
||||
mkdir -p ${DST}/plug/business/
|
||||
touch ${DST}/plug/conflist.inf
|
||||
touch ${DST}/${CONFILE}
|
||||
sed -i '/fw_mail_plug.inf/d' ${DST}/plug/conflist.inf
|
||||
sed -i '/\[RADIUS_PLUG\]/,+7d' ${DST}/${CONFILE}
|
||||
17
src/CMakeLists.txt
Normal file
17
src/CMakeLists.txt
Normal file
@@ -0,0 +1,17 @@
|
||||
cmake_minimum_required(VERSION 2.8)
|
||||
|
||||
add_definitions(-fPIC)
|
||||
|
||||
set(SRC ntc_radius_plug.cpp)
|
||||
|
||||
include_directories(${CMAKE_SOURCE_DIR}/src)
|
||||
include_directories(/opt/MESA/include/)
|
||||
|
||||
set(DEPEND_DYN_LIB MESA_handle_logger MESA_prof_load cjson rdkafka)
|
||||
|
||||
add_library(ntc_radius_plug SHARED ${SRC})
|
||||
target_link_libraries(ntc_radius_plug ${DEPEND_DYN_LIB})
|
||||
set_target_properties(ntc_radius_plug PROPERTIES PREFIX "")
|
||||
|
||||
install(TARGETS ntc_radius_plug DESTINATION ${CMAKE_INSTALL_PREFIX}/plug/business/ntc_radius_plug)
|
||||
install(FILES ../bin/ntc_radius_plug.inf DESTINATION ${CMAKE_INSTALL_PREFIX}/plug/business/ntc_radius_plug)
|
||||
@@ -25,8 +25,30 @@
|
||||
|
||||
#include "ntc_radius_plug.h"
|
||||
|
||||
static int NTC_RADIUS_PLUG_VERSION_20191022=0;
|
||||
const char *config_file="t1conf/main.conf";
|
||||
#ifdef __cplusplus
|
||||
extern "C"
|
||||
{
|
||||
#endif
|
||||
|
||||
#define GIT_VERSION_CATTER(v) __attribute__((__used__)) const char * GIT_VERSION_##v = NULL
|
||||
#define GIT_VERSION_EXPEND(v) GIT_VERSION_CATTER(v)
|
||||
|
||||
/* VERSION TAG */
|
||||
#ifdef GIT_VERSION
|
||||
GIT_VERSION_EXPEND(GIT_VERSION);
|
||||
#else
|
||||
static __attribute__((__used__)) const char * GIT_VERSION_UNKNOWN = NULL;
|
||||
#endif
|
||||
#undef GIT_VERSION_CATTER
|
||||
#undef GIT_VERSION_EXPEND
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
|
||||
static int NTC_RADIUS_PLUG_VERSION_20191211=0;
|
||||
const char *config_file="conf/radius/radius.conf";
|
||||
g_ntc_radius_plug_t g_ntc_radius_plug;
|
||||
|
||||
|
||||
@@ -65,88 +87,157 @@ error:
|
||||
}
|
||||
|
||||
|
||||
int get_radius_object_element(cJSON *radius_info_object, radius_header_t *radius_header, radius_body_t *radius_body)
|
||||
int get_radius_object_element(cJSON *radius_info_object, cJSON *radius_debug, radius_header_t *radius_header, radius_body_t *radius_body, int *account_index)
|
||||
{
|
||||
int i=0;
|
||||
cJSON *radius_json_obj = radius_info_object;
|
||||
|
||||
cJSON_AddNumberToObject(radius_json_obj, "CODE", radius_header->code);
|
||||
cJSON_AddNumberToObject(radius_debug, "radius_packet_type", radius_header->code);
|
||||
cJSON_AddNumberToObject(radius_info_object, "radius_packet_type", radius_header->code);
|
||||
|
||||
for(i=0; i<radius_body->attribute_num; i++)
|
||||
{
|
||||
switch(radius_body->attribute[i].type)
|
||||
{
|
||||
case RADIUS_USER_NAME:
|
||||
cJSON_AddStringToObject(radius_json_obj, "user_name", (char *)(radius_body->attribute[i].value));
|
||||
break;
|
||||
case CALLBACK_NUMBER:
|
||||
cJSON_AddStringToObject(radius_json_obj, "CALLBACK_NUMBER", (char *)(radius_body->attribute[i].value));
|
||||
break;
|
||||
case CALLBACK_ID:
|
||||
cJSON_AddStringToObject(radius_json_obj, "CALLBACK_ID", (char *)(radius_body->attribute[i].value));
|
||||
break;
|
||||
case CALLED_STATION_ID:
|
||||
cJSON_AddStringToObject(radius_json_obj, "CALLED_STATION_ID", (char *)(radius_body->attribute[i].value));
|
||||
break;
|
||||
case CALLING_STATION_ID:
|
||||
cJSON_AddStringToObject(radius_json_obj, "CALLING_STATION_ID", (char *)(radius_body->attribute[i].value));
|
||||
break;
|
||||
case ACCT_SESSION_ID:
|
||||
cJSON_AddStringToObject(radius_json_obj, "ACCT_SESSION_ID", (char *)(radius_body->attribute[i].value));
|
||||
break;
|
||||
case ACCT_MULTI_SESSION_ID:
|
||||
cJSON_AddStringToObject(radius_json_obj, "ACCT_MULTI_SESSION_ID", (char *)(radius_body->attribute[i].value));
|
||||
case USER_NAME:
|
||||
cJSON_AddStringToObject(radius_debug, "radius_account", (char *)(radius_body->attribute[i].value));
|
||||
cJSON_AddStringToObject(radius_info_object, "radius_account", (char *)(radius_body->attribute[i].value));
|
||||
*account_index=i;
|
||||
break;
|
||||
case NAS_IP_ADDRESS:
|
||||
cJSON_AddStringToObject(radius_json_obj, "NAS_IP_ADDRESS", (char *)(radius_body->attribute[i].value));
|
||||
cJSON_AddStringToObject(radius_debug, "radius_nas_ip", (char *)(radius_body->attribute[i].value));
|
||||
cJSON_AddStringToObject(radius_info_object, "radius_nas_ip", (char *)(radius_body->attribute[i].value));
|
||||
break;
|
||||
case FRAMED_IP_ADDRESS:
|
||||
cJSON_AddStringToObject(radius_json_obj, "FRAMED_IP_ADDRESS", (char *)(radius_body->attribute[i].value));
|
||||
break;
|
||||
case FRAMED_IP_NETMASK:
|
||||
cJSON_AddStringToObject(radius_json_obj, "FRAMED_IP_NETMASK", (char *)(radius_body->attribute[i].value));
|
||||
case NAS_PORT:
|
||||
cJSON_AddNumberToObject(radius_debug, "radius_nas_port", *(unsigned int *)(radius_body->attribute[i].value));
|
||||
cJSON_AddNumberToObject(radius_info_object, "radius_nas_port", *(unsigned int *)(radius_body->attribute[i].value));
|
||||
break;
|
||||
case SERVICE_TYPE:
|
||||
cJSON_AddNumberToObject(radius_json_obj, "SERVICE_TYPE", *(unsigned int *)(radius_body->attribute[i].value));
|
||||
cJSON_AddNumberToObject(radius_debug, "radius_service_type", *(unsigned int *)(radius_body->attribute[i].value));
|
||||
cJSON_AddNumberToObject(radius_info_object, "radius_service_type", *(unsigned int *)(radius_body->attribute[i].value));
|
||||
break;
|
||||
case FRAMED_PROTOCOL:
|
||||
cJSON_AddNumberToObject(radius_debug, "radius_framed_protocol", *(unsigned int *)(radius_body->attribute[i].value));
|
||||
cJSON_AddNumberToObject(radius_info_object, "radius_framed_protocol", *(unsigned int *)(radius_body->attribute[i].value));
|
||||
break;
|
||||
case FRAMED_IP_ADDRESS:
|
||||
cJSON_AddStringToObject(radius_debug, "radius_framed_ip", (char *)(radius_body->attribute[i].value));
|
||||
cJSON_AddStringToObject(radius_info_object, "radius_framed_ip", (char *)(radius_body->attribute[i].value));
|
||||
break;
|
||||
case FRAMED_IP_NETMASK:
|
||||
cJSON_AddStringToObject(radius_debug, "radius_framed_ip_netmask", (char *)(radius_body->attribute[i].value));
|
||||
break;
|
||||
case FRAMED_ROUTING:
|
||||
cJSON_AddNumberToObject(radius_debug, "radius_framed_routing", *(unsigned int *)(radius_body->attribute[i].value));
|
||||
break;
|
||||
case FILTER_ID:
|
||||
cJSON_AddStringToObject(radius_debug, "radius_filter_id", (char *)(radius_body->attribute[i].value));
|
||||
break;
|
||||
case FRAMED_MTU:
|
||||
cJSON_AddNumberToObject(radius_json_obj, "FRAMED_MTU", *(unsigned int *)(radius_body->attribute[i].value));
|
||||
cJSON_AddNumberToObject(radius_debug, "radius_framed_mtu", *(unsigned int *)(radius_body->attribute[i].value));
|
||||
break;
|
||||
case FRAMED_COMPRESSION:
|
||||
cJSON_AddNumberToObject(radius_debug, "radius_framed_compression", *(unsigned int *)(radius_body->attribute[i].value));
|
||||
break;
|
||||
case CALLBACK_NUMBER:
|
||||
cJSON_AddStringToObject(radius_debug, "radius_callback_number", (char *)(radius_body->attribute[i].value));
|
||||
cJSON_AddStringToObject(radius_info_object, "radius_callback_number", (char *)(radius_body->attribute[i].value));
|
||||
break;
|
||||
case CALLBACK_ID:
|
||||
cJSON_AddStringToObject(radius_debug, "radius_callback_id", (char *)(radius_body->attribute[i].value));
|
||||
cJSON_AddStringToObject(radius_info_object, "radius_callback_id", (char *)(radius_body->attribute[i].value));
|
||||
break;
|
||||
case CLASS:
|
||||
cJSON_AddStringToObject(radius_debug, "radius_class", (char *)(radius_body->attribute[i].value));
|
||||
break;
|
||||
case SESSION_TIMEOUT:
|
||||
cJSON_AddNumberToObject(radius_json_obj, "SESSION_TIMEOUT", *(unsigned int *)(radius_body->attribute[i].value));
|
||||
break;
|
||||
cJSON_AddNumberToObject(radius_debug, "radius_session_timeout", *(unsigned int *)(radius_body->attribute[i].value));
|
||||
cJSON_AddNumberToObject(radius_info_object, "radius_session_timeout", *(unsigned int *)(radius_body->attribute[i].value));
|
||||
break;
|
||||
case IDLE_TIMEOUT:
|
||||
cJSON_AddNumberToObject(radius_json_obj, "IDLE_TIMEOUT", *(unsigned int *)(radius_body->attribute[i].value));
|
||||
break;
|
||||
cJSON_AddNumberToObject(radius_debug, "radius_idle_timeout", *(unsigned int *)(radius_body->attribute[i].value));
|
||||
cJSON_AddNumberToObject(radius_info_object, "radius_idle_timeout", *(unsigned int *)(radius_body->attribute[i].value));
|
||||
break;
|
||||
case TERMINATION_ACTION:
|
||||
cJSON_AddNumberToObject(radius_json_obj, "TERMINATION_ACTION", *(unsigned int *)(radius_body->attribute[i].value));
|
||||
cJSON_AddNumberToObject(radius_debug, "radius_termination_action", *(unsigned int *)(radius_body->attribute[i].value));
|
||||
cJSON_AddNumberToObject(radius_info_object, "radius_termination_action", *(unsigned int *)(radius_body->attribute[i].value));
|
||||
break;
|
||||
case CALLED_STATION_ID:
|
||||
cJSON_AddStringToObject(radius_debug, "radius_called_station_id", (char *)(radius_body->attribute[i].value));
|
||||
cJSON_AddStringToObject(radius_info_object, "radius_called_station_id", (char *)(radius_body->attribute[i].value));
|
||||
break;
|
||||
case CALLING_STATION_ID:
|
||||
cJSON_AddStringToObject(radius_debug, "radius_calling_station_id", (char *)(radius_body->attribute[i].value));
|
||||
cJSON_AddStringToObject(radius_info_object, "radius_calling_station_id", (char *)(radius_body->attribute[i].value));
|
||||
break;
|
||||
case NAS_IDENTIFIER:
|
||||
cJSON_AddStringToObject(radius_debug, "radius_nas_indentifies", (char *)(radius_body->attribute[i].value));
|
||||
break;
|
||||
case PROXY_STATE:
|
||||
cJSON_AddNumberToObject(radius_json_obj, "PROXY_STATE", *(unsigned int *)(radius_body->attribute[i].value));
|
||||
cJSON_AddNumberToObject(radius_debug, "radius_proxy_state", *(unsigned int *)(radius_body->attribute[i].value));
|
||||
break;
|
||||
case ACCT_STATUS_TYPE:
|
||||
cJSON_AddNumberToObject(radius_json_obj, "ACCT_STATUS_TYPE", *(unsigned int *)(radius_body->attribute[i].value));
|
||||
cJSON_AddNumberToObject(radius_debug, "radius_acct_status_type", *(unsigned int *)(radius_body->attribute[i].value));
|
||||
cJSON_AddNumberToObject(radius_info_object, "radius_acct_status_type", *(unsigned int *)(radius_body->attribute[i].value));
|
||||
break;
|
||||
case ACCT_DELAY_TIME:
|
||||
cJSON_AddNumberToObject(radius_debug, "radius_acct_delay_time", *(unsigned int *)(radius_body->attribute[i].value));
|
||||
cJSON_AddNumberToObject(radius_info_object, "radius_acct_delay_time", *(unsigned int *)(radius_body->attribute[i].value));
|
||||
break;
|
||||
case ACCT_SESSION_ID:
|
||||
cJSON_AddStringToObject(radius_debug, "radius_acct_session_id", (char *)(radius_body->attribute[i].value));
|
||||
cJSON_AddStringToObject(radius_info_object, "radius_acct_session_id", (char *)(radius_body->attribute[i].value));
|
||||
break;
|
||||
case ACCT_MULTI_SESSION_ID:
|
||||
cJSON_AddStringToObject(radius_debug, "radius_acct_multi_session_id", (char *)(radius_body->attribute[i].value));
|
||||
cJSON_AddStringToObject(radius_info_object, "radius_acct_multi_session_id", (char *)(radius_body->attribute[i].value));
|
||||
break;
|
||||
case ACCT_INPUT_OCTETS:
|
||||
cJSON_AddNumberToObject(radius_json_obj, "ACCT_INPUT_OCTETS", *(unsigned int *)(radius_body->attribute[i].value));
|
||||
cJSON_AddNumberToObject(radius_debug, "radius_acct_input_octets", *(unsigned int *)(radius_body->attribute[i].value));
|
||||
cJSON_AddNumberToObject(radius_info_object, "radius_acct_input_octets", *(unsigned int *)(radius_body->attribute[i].value));
|
||||
break;
|
||||
case ACCT_OUTPUT_OCTETS:
|
||||
cJSON_AddNumberToObject(radius_json_obj, "ACCT_OUTPUT_OCTETS", *(unsigned int *)(radius_body->attribute[i].value));
|
||||
cJSON_AddNumberToObject(radius_debug, "radius_acct_output_octets", *(unsigned int *)(radius_body->attribute[i].value));
|
||||
cJSON_AddNumberToObject(radius_info_object, "radius_acct_output_octets", *(unsigned int *)(radius_body->attribute[i].value));
|
||||
break;
|
||||
case ACCT_INPUT_PACKETS:
|
||||
cJSON_AddNumberToObject(radius_json_obj, "ACCT_INPUT_PACKETS", *(unsigned int *)(radius_body->attribute[i].value));
|
||||
cJSON_AddNumberToObject(radius_debug, "radius_acct_input_packets", *(unsigned int *)(radius_body->attribute[i].value));
|
||||
cJSON_AddNumberToObject(radius_info_object, "radius_acct_input_packets", *(unsigned int *)(radius_body->attribute[i].value));
|
||||
break;
|
||||
case ACCT_OUTPUT_PACKETS:
|
||||
cJSON_AddNumberToObject(radius_json_obj, "ACCT_OUTPUT_PACKETS", *(unsigned int *)(radius_body->attribute[i].value));
|
||||
cJSON_AddNumberToObject(radius_debug, "radius_acct_output_packets", *(unsigned int *)(radius_body->attribute[i].value));
|
||||
cJSON_AddNumberToObject(radius_info_object, "radius_acct_output_packets", *(unsigned int *)(radius_body->attribute[i].value));
|
||||
break;
|
||||
case ACCT_SESSION_TIME:
|
||||
cJSON_AddNumberToObject(radius_debug, "radius_acct_session_time", *(unsigned int *)(radius_body->attribute[i].value));
|
||||
cJSON_AddNumberToObject(radius_info_object, "radius_acct_session_time", *(unsigned int *)(radius_body->attribute[i].value));
|
||||
break;
|
||||
case ACCT_TERMINATE_CAUSE:
|
||||
cJSON_AddNumberToObject(radius_json_obj, "ACCT_TERMINATE_CAUSE", *(unsigned int *)(radius_body->attribute[i].value));
|
||||
cJSON_AddNumberToObject(radius_debug, "radius_acct_terminate_cause", *(unsigned int *)(radius_body->attribute[i].value));
|
||||
cJSON_AddNumberToObject(radius_info_object, "radius_acct_terminate_cause", *(unsigned int *)(radius_body->attribute[i].value));
|
||||
break;
|
||||
case ACCT_LINK_COUNT:
|
||||
cJSON_AddNumberToObject(radius_json_obj, "ACCT_LINK_COUNT", *(unsigned int *)(radius_body->attribute[i].value));
|
||||
cJSON_AddNumberToObject(radius_debug, "radius_acct_link_count", *(unsigned int *)(radius_body->attribute[i].value));
|
||||
cJSON_AddNumberToObject(radius_info_object, "radius_acct_link_count", *(unsigned int *)(radius_body->attribute[i].value));
|
||||
break;
|
||||
case ACCT_INPUT_GIGAWORDS:
|
||||
cJSON_AddNumberToObject(radius_debug, "radius_acct_input_gigawords", *(unsigned int *)(radius_body->attribute[i].value));
|
||||
break;
|
||||
case ACCT_OUTPUT_GIGAWORDS:
|
||||
cJSON_AddNumberToObject(radius_debug, "radius_acct_output_gigawords", *(unsigned int *)(radius_body->attribute[i].value));
|
||||
break;
|
||||
case ACCT_EVENT_TIMESTAMP:
|
||||
cJSON_AddNumberToObject(radius_debug, "radius_event_timestamp", *(unsigned int *)(radius_body->attribute[i].value));
|
||||
cJSON_AddNumberToObject(radius_info_object, "radius_event_timestamp", *(unsigned int *)(radius_body->attribute[i].value));
|
||||
break;
|
||||
case NAS_PORT_TYPE:
|
||||
cJSON_AddNumberToObject(radius_debug, "radius_nas_port_type", *(unsigned int *)(radius_body->attribute[i].value));
|
||||
break;
|
||||
case ACCT_INTERIM_INTERVAL:
|
||||
cJSON_AddNumberToObject(radius_json_obj, "ACCT_INTERIM_INTERVAL", *(unsigned int *)(radius_body->attribute[i].value));
|
||||
cJSON_AddNumberToObject(radius_debug, "radius_acct_interim_interval", *(unsigned int *)(radius_body->attribute[i].value));
|
||||
cJSON_AddNumberToObject(radius_info_object, "radius_acct_interim_interval", *(unsigned int *)(radius_body->attribute[i].value));
|
||||
break;
|
||||
case NAS_PORT_ID:
|
||||
cJSON_AddStringToObject(radius_debug, "radius_nas_port_id", (char *)(radius_body->attribute[i].value));
|
||||
break;
|
||||
default:
|
||||
continue;
|
||||
@@ -158,7 +249,8 @@ int get_radius_object_element(cJSON *radius_info_object, radius_header_t *radius
|
||||
|
||||
static int streamInfo2jsonObject(cJSON *json_obj, const struct streaminfo *a_stream)
|
||||
{
|
||||
int ret = 0;
|
||||
time_t cur_time;
|
||||
int ret=0,con_duration_ms=0;
|
||||
const char *addr_proto = NULL;
|
||||
unsigned short tunnel_type=0;
|
||||
char nest_addr_buf[1024];
|
||||
@@ -166,37 +258,64 @@ static int streamInfo2jsonObject(cJSON *json_obj, const struct streaminfo *a_str
|
||||
const struct layer_addr *addr=NULL;
|
||||
char src_ip_str[128] = {0}, dst_ip_str[128] = {0};
|
||||
|
||||
cJSON_AddNumberToObject(json_obj, "stream_dir", a_stream->dir);
|
||||
cJSON_AddNumberToObject(json_obj, "common_stream_dir", a_stream->dir);
|
||||
|
||||
addr=&(a_stream->addr);
|
||||
switch(addr->addrtype)
|
||||
{
|
||||
case ADDR_TYPE_IPV4:
|
||||
case __ADDR_TYPE_IP_PAIR_V4:
|
||||
cJSON_AddNumberToObject(json_obj, "addr_type", 4);
|
||||
cJSON_AddNumberToObject(json_obj, "common_address_type", 4);
|
||||
inet_ntop(AF_INET, &addr->ipv4->saddr, src_ip_str, sizeof(src_ip_str));
|
||||
inet_ntop(AF_INET, &addr->ipv4->daddr, dst_ip_str, sizeof(dst_ip_str));
|
||||
cJSON_AddStringToObject(json_obj, "s_ip", src_ip_str);
|
||||
cJSON_AddStringToObject(json_obj, "d_ip", dst_ip_str);
|
||||
cJSON_AddNumberToObject(json_obj, "s_port", ntohs(addr->ipv4->source));
|
||||
cJSON_AddNumberToObject(json_obj, "d_port", ntohs(addr->ipv4->dest));
|
||||
cJSON_AddStringToObject(json_obj, "common_client_ip", src_ip_str);
|
||||
cJSON_AddStringToObject(json_obj, "common_server_ip", dst_ip_str);
|
||||
cJSON_AddNumberToObject(json_obj, "common_client_port", ntohs(addr->ipv4->source));
|
||||
cJSON_AddNumberToObject(json_obj, "common_server_port", ntohs(addr->ipv4->dest));
|
||||
break;
|
||||
case ADDR_TYPE_IPV6:
|
||||
case __ADDR_TYPE_IP_PAIR_V6:
|
||||
cJSON_AddNumberToObject(json_obj, "addr_type", 6);
|
||||
cJSON_AddNumberToObject(json_obj, "common_address_type", 6);
|
||||
inet_ntop(AF_INET6, addr->ipv6->saddr, src_ip_str, sizeof(src_ip_str));
|
||||
inet_ntop(AF_INET6, addr->ipv6->daddr, dst_ip_str, sizeof(dst_ip_str));
|
||||
cJSON_AddStringToObject(json_obj, "s_ip", src_ip_str);
|
||||
cJSON_AddStringToObject(json_obj, "d_ip", dst_ip_str);
|
||||
cJSON_AddNumberToObject(json_obj, "s_port", ntohs(addr->ipv6->source));
|
||||
cJSON_AddNumberToObject(json_obj, "d_port", ntohs(addr->ipv6->dest));
|
||||
cJSON_AddStringToObject(json_obj, "common_client_ip", src_ip_str);
|
||||
cJSON_AddStringToObject(json_obj, "common_server_ip", dst_ip_str);
|
||||
cJSON_AddNumberToObject(json_obj, "common_client_port", ntohs(addr->ipv6->source));
|
||||
cJSON_AddNumberToObject(json_obj, "common_server_port", ntohs(addr->ipv6->dest));
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
|
||||
cJSON_AddNumberToObject(json_obj, "common_c2s_pkt_num", a_stream->ptcpdetail->serverpktnum);
|
||||
cJSON_AddNumberToObject(json_obj, "common_s2c_pkt_num", a_stream->ptcpdetail->clientpktnum);
|
||||
cJSON_AddNumberToObject(json_obj, "common_c2s_byte_num", a_stream->ptcpdetail->serverbytes);
|
||||
cJSON_AddNumberToObject(json_obj, "common_s2c_byte_num", a_stream->ptcpdetail->clientbytes);
|
||||
|
||||
cur_time = time(NULL);
|
||||
if(a_stream!=NULL && a_stream->ptcpdetail!=NULL)
|
||||
{
|
||||
cJSON_AddNumberToObject(json_obj, "common_start_time", a_stream->ptcpdetail->createtime);
|
||||
cJSON_AddNumberToObject(json_obj, "common_end_time", a_stream->ptcpdetail->lastmtime);
|
||||
|
||||
con_duration_ms=(a_stream->ptcpdetail->lastmtime-a_stream->ptcpdetail->createtime)*1000;
|
||||
cJSON_AddNumberToObject(json_obj, "common_con_duration_ms", con_duration_ms);
|
||||
}
|
||||
else
|
||||
{
|
||||
con_duration_ms=0;
|
||||
cJSON_AddNumberToObject(json_obj, "common_start_time", cur_time);
|
||||
cJSON_AddNumberToObject(json_obj, "common_end_time", cur_time);
|
||||
cJSON_AddNumberToObject(json_obj, "common_con_duration_ms", con_duration_ms);
|
||||
}
|
||||
|
||||
int device_id_size=sizeof(unsigned long long);
|
||||
unsigned long long device_id=(unsigned long long)g_ntc_radius_plug.device_id;
|
||||
MESA_get_stream_opt(a_stream, MSO_GLOBAL_STREAM_ID, (void *)&device_id, &device_id_size);
|
||||
cJSON_AddNumberToObject(json_obj, "common_stream_trace_id", device_id);
|
||||
|
||||
addr_proto = layer_addr_prefix_ntop(a_stream);
|
||||
cJSON_AddStringToObject(json_obj, "trans_proto", addr_proto);
|
||||
cJSON_AddStringToObject(json_obj, "common_l4_protocol", addr_proto);
|
||||
|
||||
ret=MESA_get_stream_opt(a_stream, MSO_STREAM_TUNNEL_TYPE, &tunnel_type, &tunnel_type_size);
|
||||
assert(ret==0);
|
||||
@@ -209,7 +328,7 @@ static int streamInfo2jsonObject(cJSON *json_obj, const struct streaminfo *a_str
|
||||
stream_addr_list_ntop(a_stream,nest_addr_buf, sizeof(nest_addr_buf));
|
||||
}
|
||||
|
||||
cJSON_AddStringToObject(json_obj, "addr_list", nest_addr_buf);
|
||||
cJSON_AddStringToObject(json_obj, "common_address_list", nest_addr_buf);
|
||||
|
||||
return 0;
|
||||
}
|
||||
@@ -217,72 +336,50 @@ static int streamInfo2jsonObject(cJSON *json_obj, const struct streaminfo *a_str
|
||||
|
||||
char NTC_RADIUS_PLUG_ENTRY(stSessionInfo *session_info, void **pme, int thread_seq, struct streaminfo *stream, void *a_packet)
|
||||
{
|
||||
int ret=0,status=0;
|
||||
int status=0;
|
||||
int config_id=0;
|
||||
int payload_len=0;
|
||||
time_t cur_time;
|
||||
int payload_len=0,index=0;
|
||||
char *payload=NULL;
|
||||
struct vxlan_info vinfo;
|
||||
int opt_val_len = sizeof(vinfo);
|
||||
radius_info_t *radius_info=(radius_info_t *)session_info->app_info;
|
||||
cJSON *radius_info_object=cJSON_CreateObject();
|
||||
|
||||
streamInfo2jsonObject(radius_info_object, stream);
|
||||
get_radius_object_element(radius_info_object, &radius_info->header, &radius_info->body);
|
||||
|
||||
cJSON_AddNumberToObject(radius_info_object, "cfg_id", config_id);
|
||||
cJSON_AddNumberToObject(radius_info_object, "service", g_ntc_radius_plug.service_id);
|
||||
cJSON_AddNumberToObject(radius_info_object, "common_policy_id", config_id);
|
||||
cJSON_AddNumberToObject(radius_info_object, "common_service", g_ntc_radius_plug.service_id);
|
||||
|
||||
cJSON_AddStringToObject(radius_info_object, "common_sled_ip", g_ntc_radius_plug.local_ip);
|
||||
cJSON_AddStringToObject(radius_info_object, "common_schema_type", "RADIUS");
|
||||
|
||||
cJSON *radius_debug=cJSON_Duplicate(radius_info_object, 1);
|
||||
|
||||
cur_time = time(NULL);
|
||||
if(stream!=NULL && stream->ptcpdetail!=NULL)
|
||||
{
|
||||
cJSON_AddNumberToObject(radius_info_object, "recv_time", stream->ptcpdetail->createtime);
|
||||
}
|
||||
else
|
||||
{
|
||||
cJSON_AddNumberToObject(radius_info_object, "recv_time", cur_time);
|
||||
}
|
||||
cJSON_AddNumberToObject(radius_info_object, "found_time", cur_time);
|
||||
|
||||
ret = MESA_get_stream_opt(stream, MSO_STREAM_VXLAN_INFO, &vinfo, &opt_val_len);
|
||||
if(ret < 0)
|
||||
{
|
||||
MESA_handle_runtime_log(g_ntc_radius_plug.logger, RLOG_LV_FATAL, "DNS_COLLECT_LOG", "soq log: get vxlan info error, tuple4: %s", printaddr(&stream->addr, thread_seq));
|
||||
}
|
||||
else
|
||||
{
|
||||
cJSON_AddNumberToObject(radius_info_object, "entrance_id", vinfo.entrance_id);
|
||||
cJSON_AddNumberToObject(radius_info_object, "direction", vinfo.link_dir);
|
||||
cJSON_AddNumberToObject(radius_info_object, "device_id", vinfo.dev_id);
|
||||
cJSON_AddNumberToObject(radius_info_object, "encap_type", vinfo.encap_type);
|
||||
cJSON_AddNumberToObject(radius_info_object, "link_id", vinfo.link_id);
|
||||
|
||||
cJSON_AddStringToObject(radius_info_object, "inner_smac", (char *)vinfo.inner_smac);
|
||||
cJSON_AddStringToObject(radius_info_object, "inner_dmac", (char *)vinfo.inner_dmac);
|
||||
}
|
||||
|
||||
cJSON_AddStringToObject(radius_info_object, "cap_ip", g_ntc_radius_plug.local_ip);
|
||||
|
||||
get_radius_object_element(radius_info_object, radius_debug, &radius_info->header, &radius_info->body, &index);
|
||||
|
||||
payload = cJSON_PrintUnformatted(radius_info_object);
|
||||
payload_len = strlen(payload);
|
||||
|
||||
|
||||
status = rd_kafka_produce(g_ntc_radius_plug.topic_rkt, RD_KAFKA_PARTITION_UA, RD_KAFKA_MSG_F_COPY, payload, payload_len, NULL, 0, NULL);
|
||||
status = rd_kafka_produce(g_ntc_radius_plug.topic_rkt, RD_KAFKA_PARTITION_UA, RD_KAFKA_MSG_F_COPY, payload, payload_len,
|
||||
radius_info->body.attribute[index].value, radius_info->body.attribute[index].len, NULL);
|
||||
|
||||
if(status < 0)
|
||||
{
|
||||
MESA_handle_runtime_log(g_ntc_radius_plug.logger,RLOG_LV_INFO,"sendlog", "sendlog to kafka is error, status: %d, topic: %s payload: %s", status, g_ntc_radius_plug.topic_name, payload);
|
||||
MESA_handle_runtime_log(g_ntc_radius_plug.logger,RLOG_LV_INFO,"SEND_LOG", "sendlog to kafka is error, status: %d, topic: %s payload: %s", status, g_ntc_radius_plug.topic_name, payload);
|
||||
}
|
||||
else
|
||||
{
|
||||
MESA_handle_runtime_log(g_ntc_radius_plug.logger,RLOG_LV_INFO,"sendlog", "topic: %s %s", g_ntc_radius_plug.topic_name, payload);
|
||||
MESA_handle_runtime_log(g_ntc_radius_plug.logger,RLOG_LV_INFO,"SEND_LOG", "topic: %s %s", g_ntc_radius_plug.topic_name, payload);
|
||||
}
|
||||
|
||||
|
||||
free(payload);
|
||||
cJSON_Delete(radius_info_object);
|
||||
radius_info_object = NULL;
|
||||
|
||||
payload = cJSON_PrintUnformatted(radius_debug);
|
||||
MESA_handle_runtime_log(g_ntc_radius_plug.logger,RLOG_LV_INFO, "RADIUS_DEBUG", "payload: %s", payload);
|
||||
free(payload);
|
||||
cJSON_Delete(radius_debug);
|
||||
radius_debug = NULL;
|
||||
|
||||
return APP_STATE_GIVEME;
|
||||
}
|
||||
@@ -297,12 +394,13 @@ int NTC_RADIUS_PLUG_INIT(void)
|
||||
rd_kafka_topic_conf_t *topic_conf;
|
||||
|
||||
memset(&g_ntc_radius_plug,0,sizeof(g_ntc_radius_plug_t));
|
||||
MESA_load_profile_string_def(config_file, "SYSTEM", "NIC_NAME", nic_name, sizeof(nic_name), "eth0");
|
||||
MESA_load_profile_string_def(config_file, "RADIUS","LOG_PATH",g_ntc_radius_plug.pathname, sizeof(g_ntc_radius_plug.pathname), "./t1log/ntc_radius_plug/ntc_radius_plug");
|
||||
MESA_load_profile_int_def(config_file, "RADIUS", "SERVICE_ID", &g_ntc_radius_plug.service_id, 0xA2);
|
||||
MESA_load_profile_int_def(config_file, "RADIUS","LEVEL", &g_ntc_radius_plug.level, RLOG_LV_FATAL);
|
||||
MESA_load_profile_string_def(config_file, "RADIUS", "COLLECT_TOPIC", g_ntc_radius_plug.topic_name, sizeof(g_ntc_radius_plug.topic_name), "eth0");
|
||||
MESA_load_profile_string_def(config_file, "RADIUS", "BROKERLIST", g_ntc_radius_plug.brokerlist, sizeof(g_ntc_radius_plug.brokerlist), "127.0.0.1:9092");
|
||||
MESA_load_profile_string_def(config_file, "RADIUS_PLUG", "NIC_NAME", nic_name, sizeof(nic_name), "lo");
|
||||
MESA_load_profile_string_def(config_file, "RADIUS_PLUG","LOG_PATH",g_ntc_radius_plug.pathname, sizeof(g_ntc_radius_plug.pathname), "./log/ntc_radius_plug/ntc_radius_plug");
|
||||
MESA_load_profile_int_def(config_file, "RADIUS_PLUG", "SERVICE_ID", &g_ntc_radius_plug.service_id, 0xA2);
|
||||
MESA_load_profile_int_def(config_file, "RADIUS_PLUG","LOG_LEVEL", &g_ntc_radius_plug.level, RLOG_LV_FATAL);
|
||||
MESA_load_profile_string_def(config_file, "RADIUS_PLUG", "COLLECT_TOPIC", g_ntc_radius_plug.topic_name, sizeof(g_ntc_radius_plug.topic_name), "RADIUS-RECORD-LOG");
|
||||
MESA_load_profile_string_def(config_file, "RADIUS_PLUG", "BROKERLIST", g_ntc_radius_plug.brokerlist, sizeof(g_ntc_radius_plug.brokerlist), "127.0.0.1:9092");
|
||||
MESA_load_profile_int_def(config_file, "RADIUS_PLUG", "DEVICE_ID", &g_ntc_radius_plug.device_id, 0);
|
||||
|
||||
g_ntc_radius_plug.logger = MESA_create_runtime_log_handle(g_ntc_radius_plug.pathname, g_ntc_radius_plug.level);
|
||||
if(g_ntc_radius_plug.logger == NULL)
|
||||
@@ -345,7 +443,7 @@ int NTC_RADIUS_PLUG_INIT(void)
|
||||
return -1;
|
||||
}
|
||||
|
||||
printf("INIT NTC_RADIUS_PLUG SUCCESS, VERSION: %d\n", NTC_RADIUS_PLUG_VERSION_20191022);
|
||||
printf("INIT NTC_RADIUS_PLUG SUCCESS, VERSION: %d\n", NTC_RADIUS_PLUG_VERSION_20191211);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
@@ -11,6 +11,7 @@ typedef struct _ntc_radius_plug
|
||||
{
|
||||
int level;
|
||||
int service_id;
|
||||
int device_id;
|
||||
void *logger;
|
||||
char pathname[128];
|
||||
char topic_name[128];
|
||||
|
||||
Reference in New Issue
Block a user