📄 pssuaprofbatch.c
字号:
/********************************************************************
Copyright(C), 2006, Wuhan Hongxu Information Technologies Co., Ltd.
Filename : pssUaprofBatch.c
Description: uaprof batch program.
Author : LiWeiBing
Version : Initial version
Date : 2006年12月
History :
<author> <time> <version > <desc>
********************************************************************/
#include "uaprof.h"
#include "sysdir.h"
#include "msspDefs.h"
#include "pssUaprofParser.h"
int gLogLevel = 1; /*可以配置,取值为1,2,3; 值越小打印的信息越多*/
FILE * gUaprofPrintFP = (FILE *)stdout;
int main()
{
UaprofConfSt UaprofConf;
int ret;
FILE *pFile;
pss_uaprof_t uaprof;
FTPLineList dirContent;
FTPLinePtr filePtr;
UINT8 fileName[512]={0};
UINT8 srcFileName[512]={0};
UINT8 reNum=0;
INT32 result = kNoErr;
FTPConnectionInfo cip;
memset(&UaprofConf, 0, sizeof(UaprofConfSt));
if(MSSP_FAILURE == uaprofReadConf(&UaprofConf))
{
UAPROF_LOG(ERR, "uaprofReadConf fail!\n");
return(-1);
}
gLogLevel = UaprofConf.iLogLevel;
UAPROF_LOG(TRACE, "gLogLevel = %d \n", gLogLevel);
if( UaprofConf.iPrintFile )
{
gUaprofPrintFP = fopen("batch_errlog", "w");
if( gUaprofPrintFP == NULL )
{
gUaprofPrintFP = (FILE *)stdout;
UAPROF_LOG(ERR, "fopen batch_errlog fail!errno=%d\n", errno);
}
}
/*初始化FTPCIPtr结构 */
result = FTPInitConetentInfo(&cip,UaprofConf.caUserName,UaprofConf.caPassWd,UaprofConf.caUaprofIp,UaprofConf.iFtpPort,kSendPortMode); /*passive没问题,port会出现无法收到数据连接消息的问题 */
if ( result != kNoErr)
{
UAPROF_LOG(ERR, "FTPInitConetentInfo fail!result=%d\n", result);
result = kErrInitConetentInfoFailed;
return result;
}
/*登陆FTP服务器 */
result = FTPOpenHost(&cip);
if ( result != kNoErr )
{
UAPROF_LOG(ERR, "FTPOpenHost fail!result=%d\n", result);
return result;
}
/*得到远端目录下文件列表 */
InitLineList(&dirContent);
result = FTPRemoteRecursiveFileList1(&cip, UaprofConf.caContentPath, &dirContent); /*采用NLST命令,保证每一行就是一个文件*/
if ( result < 0) /*若成功,则已经进入子目录 */
{
UAPROF_LOG(ERR, "FTPRemoteRecursiveFileList1 fail!result=%d\n", result);
return result;
}
/*成功,则获取每个文件 */
for ( filePtr = dirContent.first ; filePtr != NULL; filePtr =filePtr->next)
{
STRNCPY(fileName,filePtr->line); /*得到文件名 */
if (( strcmp(fileName, ".") == 0) || (strcmp(fileName,"..")==0))
{
/*当前目录或者根目录 */
continue;
}
/*得到本地文件名 */
STRNCPY(srcFileName,UaprofConf.caLocalPath);
STRNCAT(srcFileName,"/");
STRNCAT(srcFileName,UaprofConf.caContentPath);
STRNCAT(srcFileName,"/");
STRNCAT(srcFileName,fileName);
for ( reNum = 0; reNum < FTP_REGETDIR_MAX_NUM;reNum++)
{
result = FTPGetOneF(&cip, srcFileName, fileName, kTypeBinary); /*传输模式为kTypeBinary */
if ( result == kNoErr )
{
UAPROF_LOG(TRACE, "FTPGetOneF %s ok!\n", srcFileName);
break; /*若有一次成功,则退出此循环 */
}
}
/*若多次尝试后还是失败,则认为获取内容失败 */
if ( result != kNoErr )
{
UAPROF_LOG(ERR, "FTPGetOneF fail, file=%s, result=%d\n", srcFileName, result);
break;
}
/*xml parser*/
pFile = fopen(srcFileName, "r");
if( pFile == NULL )
{
UAPROF_LOG(ERR, "fopen fail!file=%s\n", srcFileName);
break;
}
ret = parsePssUaProf(&uaprof, pFile);
if( ret != UAPROF_PARSER_OK )
{
UAPROF_LOG(ERR, "parsePssUaProf fail!file=%s\n", srcFileName);
}
else
{
/*将该uaprof信息写入数据库*/
UAPROF_LOG(TRACE, "begin insert!model=%s, stream=%s, http=%s\n", uaprof.model, uaprof.pssStreaming.streamingAccept, uaprof.pssThreeGPFileFormat.threeGPAccept);
InsertUaprofDB(UaprofConf.caDataBaseIp, UaprofConf.iDataBasePort, &uaprof);
}
fclose(pFile);
}
/*释放dirContent内存 */
DisposeLineListContents(&dirContent);
/*无论成功与否,都需要关闭控制连接,数据连接在使用结束后,就关闭了 */
CloseDataConnection(&cip); /*关闭数据连接 */
/*是否需要向FTP服务器发送QUIT消息 */
/*关闭控制连接 */
CloseCtrlConnection(&cip);
cip.ctrlSocket = kInvaldSocket;
DisposeSReadlineInfo(&(cip.ctrlSrl));
return 0;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -