#include "Logger.h" #include "CcCollectdClientSocket.h" #include #include #include #include #include #include #include #include #include #define LOG_PATH "/user/service/logs" // Log °æ·Î #define SERVER_ADDR "222.122.152.5" // KT LogBackup Server IP //#define SERVER_ADDR "210.124.122.211" // LG U+ LogBackup Server IP #define SERVER_LISTEN_PORT 13103 // cc_collectd Listen Port int main(int argc, char * argv[]) { std::string strServerAddr = SERVER_ADDR; std::string strFullFileName; if( argc == 2 ) { strFullFileName = argv[1]; } else if ( argc > 2 ) { fprintf( stderr, "Too many parameter.\n"); return EXIT_FAILURE; } else { // default strFullFileName = "/root/work/cc_collectd/interface/sample/test1.txt"; } // ÆÄÀÏ Full °æ·Î¿¡¼­ ÆÄÀϸí ÃßÃâ ó¸®. std::string::size_type pos = strFullFileName.rfind( '/' ); if( pos == std::string::npos ) { // ãÁö ¸øÇÑ °æ¿ì... fprintf( stderr, "File path is FULL PATH use. [%s]\n", strFullFileName.c_str() ); return EXIT_FAILURE; } // Àü¼ÛÇÒ ÆÄÀÏ Á¤º¸ std::string strTargetDir = strFullFileName.substr( 0, pos ); std::string strTragetFileName = strFullFileName.substr( pos+1 ); // Àü¼ÛÇÒ ÆÄÀÏ °ü·Ã Á¤º¸ ÃßÃâ. struct stat resultFileStat; if( stat( strFullFileName.c_str(), &resultFileStat ) != 0 ) { int errorNum = errno; fprintf( stderr, "file[%s] stat check error.[%d][%s]\n", strFullFileName.c_str(), errorNum, strerror( errorNum ) ); return EXIT_FAILURE; } // ÆÄÀÏ size ÃßÃâ. unsigned long long uFileSize = resultFileStat.st_size; // fd open int fd = open(strFullFileName.c_str(), O_RDONLY ); if( fd == -1 ) { int errorNum = errno; fprintf( stderr, "file[%s] open fail.[%d][%s]\n", strFullFileName.c_str(), errorNum, strerror( errorNum ) ); return EXIT_FAILURE; } // Log ó¸®¿ë °´Ã¼ »ý¼º ¹× ÃʱâÈ­. if( CLogger::Init( PROG_NAME, LOG_PATH, LDBG ) == false ) { close( fd ); fprintf( stderr, "[error] Logger object created failed.."); return EXIT_FAILURE; } // socket »ý¼º ¹× ¿¬°á CCcCollectdClientSocket serverSocket; if( serverSocket.ConnectTarget( strServerAddr, SERVER_LISTEN_PORT ) == false ) { // Á¢¼Ó ½ÇÆÐ½Ã close( fd ); _LOG( LERR, "cc_collectd connect fail. [%s][%d]", strServerAddr.c_str(), SERVER_LISTEN_PORT ); return EXIT_FAILURE; } std::string szErrorMessage; // Log ÆÄÀÏ Á¸Àç ¿©ºÎ È®ÀÎ unsigned long long uExistFileSize = 0; if( serverSocket.CheckFile( "collectd_client", strTragetFileName, uExistFileSize, szErrorMessage ) == false ) { close( fd ); _LOG( LERR, "cc_collectd exist check fail.[%s][%llu] -> [%s]", strTragetFileName.c_str(), uFileSize, szErrorMessage.c_str() ); return EXIT_FAILURE; } else { _LOG( LDBG, "cc_collectd exist check OK.local[%s][%llu] remote[%llu]", strTragetFileName.c_str(), uFileSize, uExistFileSize ); // Log ÆÄÀÏ Å©±â°¡ ´Ù¸¥ °æ¿ì¿¡¸¸ Àü¼Û ó¸®ÇÑ´Ù. if( uFileSize == uExistFileSize ) { _LOG( LDBG, "cc_collectd same file exist. not send. local[%s][%llu] remote[%llu]", strTragetFileName.c_str(), uFileSize, uExistFileSize ); } else { // ÆÄÀÏ Å©±â°¡ ´Ù¸¥ °æ¿ì¿¡¸¸ Àü¼Û ó¸®. // Log ÆÄÀÏ Àü¼Û ó¸® if( serverSocket.SendFile( "collectd_client", strTragetFileName, fd, uFileSize, szErrorMessage ) == false ) { close( fd ); _LOG( LERR, "cc_collectd send fail.[%s][%llu] -> [%s]", strTragetFileName.c_str(), uFileSize, szErrorMessage.c_str() ); return EXIT_FAILURE; } else { _LOG( LDBG, "cc_collectd send OK.[%s][%llu]", strTragetFileName.c_str(), uFileSize ); } } } close( fd ); return EXIT_SUCCESS; }