📄 vtft.cc
字号:
#include <vtft.h>CvtFTC::CvtFTC ( ){}CvtFTC::~CvtFTC ( ){}int CvtFTC::Setup (char* PpstrHostName, char* PpstrCmd, char* PpstrLocalPath, char* PpstrRemotePath, CVAString* PpvastrLists){ strcpy(strHostName,PpstrHostName); strcpy(strCmd,PpstrCmd); strcpy(strLocalPath,PpstrLocalPath); strcpy(strRemotePath,PpstrRemotePath); pvastrLists = PpvastrLists; psHostent = gethostbyname(strHostName); //puchBuf = (guchar *)(psHostent->h_addr); //sprintf(strHostAdd,"%u.%u.%u.%u",*puchBuf,*(puchBuf+1),*(puchBuf+2),*(puchBuf+3)); return 0;}int CvtFTC::UploadSetup ( ){ char strTmp[4096]; char strPath[4096]; struct dirent **namelist; int iListSize, iSize,iN, iLoop,iRow,iRows,iFln,iDln,iDidx; long liStrLen; iListSize = pvastrLists->size(); iFln = 0; iDln = 0; for (iLoop = 0; iLoop < iListSize; iLoop++) { strcpy(strTmp,(char*)(*pvastrLists)[iLoop]); liStrLen = strlen(strTmp); if (strTmp[liStrLen-1] != '/') { vastrFileList.resize(iFln+1); vastrFileList[iFln] = (*pvastrLists)[iLoop]; iFln++; } else { vastrDirListBuf.resize(iDln+1); vastrDirList.resize(iDln+1); vastrDirListBuf[iDln] = strLocalPath; vastrDirListBuf[iDln] += "/"; strTmp[liStrLen-1] = '\0'; vastrDirListBuf[iDln] += strTmp; vastrDirList[iDln] = strTmp; iDln++; } } iDidx = 0;while (1){ if (iDidx >= vastrDirListBuf.size() ) break; iN = scandir((char*)vastrDirListBuf[iDidx], &namelist, 0, alphasort); if (iN < 0) perror("scandir"); else { for (iLoop = 0; iLoop < iN; iLoop++) { sprintf(strPath,"%s/%s",(char*)vastrDirListBuf[iDidx],namelist[iLoop]->d_name); stat(strPath, &mystat); vstrPath = vastrDirListBuf[iDidx]; if (S_ISDIR(mystat.st_mode)) { if (strcmp(namelist[iLoop]->d_name,".") && strcmp(namelist[iLoop]->d_name,"..")) { vastrDirListBuf.resize(iDln+1); vastrDirList.resize(iDln+1); vastrDirListBuf[iDln] = vstrPath; vastrDirListBuf[iDln] += "/"; vastrDirListBuf[iDln] += namelist[iLoop]->d_name; liStrLen = strlen(strLocalPath); vastrDirList[iDln] = (char*)vastrDirListBuf[iDln] + liStrLen + 1; iDln++; } } else { vastrFileList.resize(iFln+1); liStrLen = strlen(strLocalPath); vastrFileList[iFln] = (char*)vstrPath + liStrLen + 1; vastrFileList[iFln] += "/"; vastrFileList[iFln] += namelist[iLoop]->d_name; iFln++; } } free(namelist); } iDidx++;} return 0;}int CvtFTC::DownloadSetup ( ){ char strbuf00[1256]; char strbuf01[1256]; char strbuf02[1256]; char strbuf03[1256]; int istrstart; int iRow; char *pstrifdir; char *pstrdir; int iRows,iLoop; int ierror; int iListSize, iSize,iN,iFln,iDln,iDidx; long liStrLen; iListSize = pvastrLists->size(); iFln = 0; iDln = 0; for (iLoop = 0; iLoop < iListSize; iLoop++) { strcpy(strTmp,(char*)(*pvastrLists)[iLoop]); liStrLen = strlen(strTmp); if (strTmp[liStrLen-1] != '/') { vastrFileList.resize(iFln+1); vastrFileList[iFln] = (*pvastrLists)[iLoop]; iFln++; } else { vastrDirListBuf.resize(iDln+1); vastrDirList.resize(iDln+1); vastrDirListBuf[iDln] = strRemotePath; if (strcmp(strRemotePath,"/") != 0) vastrDirListBuf[iDln] += "/"; strTmp[liStrLen-1] = '\0'; vastrDirListBuf[iDln] += strTmp; vastrDirList[iDln] = strTmp; iDln++; } } iDidx = 0;while (1){ if (iDidx >= vastrDirListBuf.size() ) break; vstrPath = vastrDirListBuf[iDidx]; puchBuf = (guchar *)(psHostent->h_addr); sprintf(strHostAdd,"%u.%u.%u.%u",*puchBuf,*(puchBuf+1),*(puchBuf+2),*(puchBuf+3)); strcpy(strPort,"80"); iSock = socket(AF_INET, SOCK_STREAM, 0); sSoin.sin_family = AF_INET; sSoin.sin_addr.s_addr = inet_addr(strHostAdd); sSoin.sin_port = htons(atoi(strPort)); ierror = connect(iSock, (struct sockaddr *)&sSoin, sizeof(sSoin)); int iPackAttrib = 100; sprintf(strTmp,"%8d%s:%s",iPackAttrib,"ls",(char*)vastrDirListBuf[iDidx]); iStrlens=strlen(strTmp); sprintf(chPostBuf,"POST /perl/fts.cgi HTTP/1.1\r\nHost: 127.0.0.1\r\nContent-Length: %d\r\n\r\n%s\r\n",iStrlens,strTmp); write(iSock, chPostBuf,strlen(chPostBuf)); ifstream ifsock(iSock); iRows = 0; while (1) { ifsock.getline(strTmp,1024,'\n'); if (ifsock.good() == 0) break; //int n = read(sock, buffer, sizeof(buffer)); strTmp[1024] = '\0'; iStrlens = strlen(strTmp); for (iLoop =0; iLoop < iStrlens; iLoop++) { if (strTmp[iLoop] == ',') { strTmp[iLoop] = '\0'; strcpy(strbuf00,strTmp); break; } } istrstart = iLoop+1; for (iLoop = istrstart; iLoop < iStrlens; iLoop++) { if (strTmp[iLoop] == ',') { strTmp[iLoop] = '\0'; strcpy(strbuf01,&strTmp[istrstart]); break; } } istrstart = iLoop+1; for (iLoop = istrstart; iLoop < iStrlens; iLoop++) { if (strTmp[iLoop] == ',') { strTmp[iLoop] = '\0'; strcpy(strbuf02,&strTmp[istrstart]); break; } } strcpy(strbuf03,&strTmp[iLoop + 1]); if (strcmp(strbuf00,"/") == 0) { if (strcmp(strbuf01,".") && strcmp(strbuf01,"..")) { vastrDirListBuf.resize(iDln+1); vastrDirList.resize(iDln+1); vastrDirListBuf[iDln] = vstrPath; if (strcmp((char*)vstrPath,"/") != 0) vastrDirListBuf[iDln] += "/"; vastrDirListBuf[iDln] += strbuf01; liStrLen = strlen(strRemotePath); vastrDirList[iDln] = (char*)vastrDirListBuf[iDln] + liStrLen; iDln++; } } else { vastrFileList.resize(iFln+1); liStrLen = strlen(strRemotePath); vastrFileList[iFln] = (char*)vstrPath + liStrLen; if (strcmp((char*)strRemotePath,"/") != 0) vastrFileList[iFln] = (char*)vstrPath + liStrLen + 1; if (strcmp((char*)vastrFileList[iFln],"/") != 0) vastrFileList[iFln] += "/"; vastrFileList[iFln] += strbuf01; iFln++; } } close(iSock); iDidx++;} for (iLoop = 0; iLoop < iDln; iLoop++) {
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -