?? 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 + -