亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來(lái)到蟲(chóng)蟲(chóng)下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲(chóng)蟲(chóng)下載站

?? usermanager.cpp

?? 用套接字實(shí)現(xiàn)的ftp文件傳輸源代碼
?? CPP
?? 第 1 頁(yè) / 共 2 頁(yè)
字號(hào):
	// goto parent directory
	if (strChangeTo.Right(2) == "..")
	{
		strChangeTo.TrimRight("..");
		strChangeTo.TrimRight("/");
		int nPos = strChangeTo.ReverseFind('/');
		if (nPos != -1)
		{
			strChangeTo = strChangeTo.Left(nPos);
		}
		if (strChangeTo == "")
		{
			// goto root
			strChangeTo = "/";
		}
	}

	// get local path
	CString strLocalPath;
	if (!ConvertPathToLocal(lpszUser, strChangeTo, strLocalPath))
	{
		// unable to convert to local path
		return 2;
	}
	
	// check if user has access right for this directory
	if (!CheckAccessRights(lpszUser, strLocalPath, FTP_DOWNLOAD))
	{
		// user has no permissions
		return 1;
	}

	// everything went successfully
	strCurrentdir = strChangeTo; 
	return 0;
}


/********************************************************************/
/*																	*/
/* Function name : GetDirectoryList									*/
/* Description   : Get directory listing for specfied directory		*/
/*																	*/
/********************************************************************/
int CUserManager::GetDirectoryList(LPCTSTR lpszUser, LPCTSTR lpszDirectory, CString &strResult)
{
	CString strDirectory = lpszDirectory;
	
	// make unix style
	strDirectory.Replace("\\","/");
	while(strDirectory.Replace("//","/"));

	// clear list
	strResult = "";

	CUser user;
	if (!GetUser(lpszUser, user))
	{
		// user not found -> no permissions
		return 1;
	}

	CString strLocalPath;
	if (!ConvertPathToLocal(lpszUser, strDirectory, strLocalPath))
	{
		// unable to convert to local path
		return 2;
	}

	// check if user has access right for this directory
	if (!CheckAccessRights(lpszUser, strLocalPath, FTP_DOWNLOAD))
	{
		// user has no permissions, to display this directory
		return 1;
	}

	CFileFind find;
	BOOL bFound = FALSE;

	// check if it's a directory
	if ((GetFileAttributes(strLocalPath) & FILE_ATTRIBUTE_DIRECTORY) == FILE_ATTRIBUTE_DIRECTORY)
	{
		bFound = find.FindFile(strLocalPath + "\\*.*");
	}
	else
	{
		// it's a file
		bFound = find.FindFile(strLocalPath);
	}

	while (bFound)
	{
		bFound = find.FindNextFile();
		
		// skip "." and ".." 
		if (find.IsDots())
			continue;

		// permissions
		if (find.IsDirectory())
			strResult += "drwx------";
		else
			strResult += "-rwx------";

		// groups
		strResult += " 1 user group ";
		// file size
		CString strLength;
		strLength.Format("%d", find.GetLength());
		CString strFiller = "              ";
		strResult += strFiller.Left(strFiller.GetLength() - strLength.GetLength());
		strResult += strLength;
		// file date
		strResult += GetFileDate(find);
		// file name
		strResult += find.GetFileName();
		// end of line
		strResult += "\r\n";
	}
	
	// if it's the root dir also show virtual directories
	for (int i=0; i<user.m_DirectoryArray.GetSize(); i++)
	{
		if (user.m_DirectoryArray.GetAt(i).m_bIsHomeDir)
		{
			CString strPath = user.m_DirectoryArray.GetAt(i).m_strDir;
			strPath.TrimRight('\\');
				
			if (strLocalPath.CompareNoCase(strPath) == 0)
			{
				for (int j=0; j<user.m_DirectoryArray.GetSize(); j++)
				{
					if (i != j && user.m_DirectoryArray.GetAt(j).m_strAlias != "")
					{
						if (find.FindFile(user.m_DirectoryArray.GetAt(j).m_strDir))
						{
							find.FindNextFile();

							strResult += "drwx------";
							// groups
							strResult += " 1 user group ";
							strResult += "             0";
							// file date
							strResult += GetFileDate(find);
							// file name
							strResult += user.m_DirectoryArray.GetAt(j).m_strAlias;
							// end of line
							strResult += "\r\n"; 
						}
					}
				}
			}
			break;
		}
	}
	return 0;
}


/********************************************************************/
/*																	*/
/* Function name : FileExists										*/
/* Description   : Check if file or directory exists				*/
/*																	*/
/********************************************************************/
BOOL CUserManager::FileExists(LPCTSTR lpszFileName, BOOL bIsDirCheck)
{
	// A quick'n'easy way to see if a file exists.
	DWORD dwAttributes = GetFileAttributes(lpszFileName);
    if (dwAttributes == 0xFFFFFFFF)
        return FALSE;

	if ((dwAttributes & FILE_ATTRIBUTE_DIRECTORY) == FILE_ATTRIBUTE_DIRECTORY)
	{
		if (bIsDirCheck)
			return TRUE;
		else
			return FALSE;
	}
	else
	{
		if (!bIsDirCheck)
			return TRUE;
		else
			return FALSE;
	}
}


/********************************************************************/
/*																	*/
/* Function name : CheckFileName									*/
/* Description   : Check if filename is valid and if user has		*/
/*				   access rights.									*/
/*																	*/
/********************************************************************/
int CUserManager::CheckFileName(LPCTSTR lpszUser, CString strFilename, CString strCurrentdir, int nOption, CString &strResult)
{
	// make unix style
	strFilename.Replace("\\", "/");
	while(strFilename.Replace("//", "/"));
	strFilename.TrimRight("/");
	
	if (strFilename == "")
	{
		// no file name
		return 2;
	}

	// append filename to directory
	CString strDirectory = strCurrentdir;

	// client has specified complete path 
	int nPos = strFilename.ReverseFind('/');
	if (nPos != -1)
	{
		strDirectory = strFilename.Left(nPos);
		if (strDirectory == "")
			strDirectory = "/";
		strFilename = strFilename.Mid(nPos+1);
	}

	// get local path
	CString strLocalPath;
	if (!ConvertPathToLocal(lpszUser, strDirectory, strLocalPath))
	{
		// directory does not exist
		return 2;
	}

	// create the complete path
	strResult = strLocalPath + "\\" + strFilename;

	if ((nOption != FTP_UPLOAD) && !FileExists(strResult, FALSE))
	{
		// file does not exist
		return 2;
	}

	// return relative path
	if (nOption == FTP_LIST)
	{
		strResult = strCurrentdir;
		strResult.TrimRight('/');
		strResult += "/" + strFilename;
		return 0;
	}

	// check file access rights
	if (!CheckAccessRights(lpszUser, strLocalPath, nOption))
	{
		// user has no permissions, to execute specified action
		return 1;
	}
	// everything is ok
	return 0;
}


/********************************************************************/
/*																	*/
/* Function name : CheckDirectory									*/
/* Description   : Check if directory exists and if user has		*/
/*				   appropriate permissions.							*/
/*																	*/
/********************************************************************/
int CUserManager::CheckDirectory(LPCTSTR lpszUser, CString strDirectory, CString strCurrentdir, int nOption, CString &strResult)
{
	// make unix compatible
	strDirectory.Replace("\\","/");
	while(strDirectory.Replace("//","/"));
	strDirectory.TrimRight("/");
	
	if (strDirectory == "")
	{
		// no directory
		return 2;
	}
	else
	{
		// first character '/' ?
		if (strDirectory.Left(1) != "/")
		{ 
			// client specified a path relative to their current path
			strCurrentdir.TrimRight("/");
			strDirectory = strCurrentdir + "/" + strDirectory;
		}
	}

	// split part into 2 parts
	int nPos = strDirectory.ReverseFind('/');
	if (nPos == -1)
		return 2;

	// get left part of directory
	CString strNode = strDirectory.Left(nPos);
	// root ?
	if (strNode == "")
		strNode = "/";
	// get right part of directory
	strDirectory = strDirectory.Mid(nPos+1);

	CString strLocalPath;

	do
	{
		// does parent directory exist ?
		if ((!ConvertPathToLocal(lpszUser, strNode, strLocalPath)) && (nOption == FTP_CREATE_DIR))
		{ 
			// directory could not be found, maybe one level higher
			int nPos = strNode.ReverseFind('/');
			// no more levels
			if (nPos == -1) 
				return 2;

			strDirectory = strNode.Mid(nPos+1) + "/" + strDirectory;
			strNode = strNode.Left(nPos);
			continue;
		}

		// check directory access rights
		if (!CheckAccessRights(lpszUser, strLocalPath, nOption))
		{
			// user has no permissions, to execute specified action
			return 1;
		}
		
		strNode = strLocalPath;
		break;
	} 
	while (strNode != "/");
	
	strDirectory.Replace("/","\\");
	strResult = strNode + "\\" + strDirectory;
		
	// check if directory exists
	if (!FileExists(strResult))
		return 2;

	// function successfull
	return 0;
}


/********************************************************************/
/*																	*/
/* Function name : GetUser											*/
/* Description   : Get user object for specified username			*/
/*																	*/
/********************************************************************/
BOOL CUserManager::GetUser(LPCTSTR lpszUser, CUser &user)
{
	m_CriticalSection.Lock();
	for (int i=0; i<m_UserArray.GetSize(); i++)
	{
		if (!m_UserArray[i].m_strName.CompareNoCase(lpszUser))
		{
			user = m_UserArray[i];
			m_CriticalSection.Unlock();
			return TRUE;
		}
	}
	m_CriticalSection.Unlock();
	return FALSE;
}


/********************************************************************/
/*																	*/
/* Function name : GetUserList										*/
/* Description   : Make copy of user array							*/
/*																	*/
/********************************************************************/
void CUserManager::GetUserList(CArray<CUser, CUser&>&array)
{
	m_CriticalSection.Lock();
	for (int i=0; i<m_UserArray.GetSize();i++)
	{
		array.Add(m_UserArray[i]);
	}
	m_CriticalSection.Unlock();
}


/********************************************************************/
/*																	*/
/* Function name : UpdateUserList									*/
/* Description   : Update user array								*/
/*																	*/
/********************************************************************/
void CUserManager::UpdateUserList(CArray<CUser, CUser&>&array)
{
	m_CriticalSection.Lock();
	m_UserArray.RemoveAll();
	for (int i=0; i<array.GetSize();i++)
	{
		m_UserArray.Add(array[i]);
	}
	m_CriticalSection.Unlock();
	Serialize(TRUE);
}


/********************************************************************/
/*																	*/
/* Function name : GetFileDate										*/
/* Description   : return file date in unix style					*/
/*																	*/
/********************************************************************/
CString CUserManager::GetFileDate(CFileFind &find)
{
	CString strResult;

	CTime time = CTime::GetCurrentTime();

	find.GetLastWriteTime(time);

	CTimeSpan timeSpan = CTime::GetCurrentTime() - time;

	if (timeSpan.GetDays() > 356)
	{
		strResult = time.Format(" %b %d %Y ");
	}
	else
	{
		strResult.Format(" %s %02d:%02d ", time.Format("%b %d"), time.GetHour(), time.GetMinute());
	}

	return strResult;
}


?? 快捷鍵說(shuō)明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美精品国产精品| 日韩精品一级二级| 国产精品你懂的在线欣赏| 久久久久国产免费免费| 久久久久免费观看| 久久久久久麻豆| 国产欧美一区二区精品性色| 国产日韩欧美在线一区| 国产精品天美传媒| 国产精品拍天天在线| 国产精品成人一区二区三区夜夜夜| 久久久久久久综合| 中文字幕成人av| 自拍偷拍国产亚洲| 一个色在线综合| 午夜精品福利一区二区三区av| 亚洲成人自拍网| 日韩精品成人一区二区三区 | 国产suv精品一区二区三区| 国内精品国产成人国产三级粉色| 国产一区二区三区久久久| 国产99精品视频| 日本高清无吗v一区| 精品视频1区2区| 欧美大片日本大片免费观看| 久久久亚洲国产美女国产盗摄 | 亚洲国产sm捆绑调教视频| 亚洲午夜精品网| 男人的j进女人的j一区| 国产麻豆欧美日韩一区| gogo大胆日本视频一区| 欧日韩精品视频| 精品福利在线导航| 中文字幕一区二区在线播放| 亚洲成人资源网| 国产一二三精品| 在线观看视频91| 欧美成人r级一区二区三区| 国产视频一区二区在线| 亚洲欧美乱综合| 免费的成人av| 色综合亚洲欧洲| 日韩无一区二区| 国产精品久久久久久妇女6080| 亚洲综合一二区| 国产麻豆欧美日韩一区| 欧日韩精品视频| 国产亚洲短视频| 亚洲一区中文在线| 欧美日韩中文字幕一区| 亚洲精品在线观| 夜夜精品视频一区二区| 国产一区二区影院| 一本久久综合亚洲鲁鲁五月天| 91精品国产福利在线观看| 国产精品欧美一区二区三区| 免费日本视频一区| 91官网在线免费观看| 精品国产露脸精彩对白| 亚洲一区二区三区四区的| 国产一区二区在线影院| 欧美二区乱c少妇| 中文字幕色av一区二区三区| 久久爱另类一区二区小说| 色88888久久久久久影院野外| 26uuu另类欧美| 午夜一区二区三区在线观看| 粉嫩嫩av羞羞动漫久久久| 欧美一级在线观看| 一区二区三区日韩精品| 成人综合婷婷国产精品久久免费| 欧美精品第1页| 亚洲精品视频在线观看免费| 国产91丝袜在线18| 日韩欧美久久一区| 一级女性全黄久久生活片免费| 丁香另类激情小说| 亚洲精品一区二区三区四区高清| 亚洲超碰精品一区二区| 91九色02白丝porn| 中文字幕一区av| 国产91高潮流白浆在线麻豆| 久久一夜天堂av一区二区三区| 日韩福利视频导航| 欧美亚一区二区| 亚洲日本在线天堂| 丰满放荡岳乱妇91ww| 国产亚洲一二三区| 国产一区二区三区香蕉| 欧美精品一区二区三区四区| 蜜臀av性久久久久蜜臀aⅴ| 欧美日韩国产系列| 亚洲高清免费在线| 欧美伊人精品成人久久综合97 | 亚洲亚洲精品在线观看| 91色九色蝌蚪| 日韩美女视频一区| 99久久综合狠狠综合久久| 国产亚洲精品中文字幕| 国产乱码精品一区二区三区av | 中文字幕一区二区三区在线播放| 国产成人免费网站| 国产欧美一区二区三区沐欲| 国产成人精品亚洲777人妖 | 偷拍与自拍一区| 国产色91在线| 国产精品一区二区你懂的| 久久奇米777| 国产a精品视频| 中文字幕一区三区| 91麻豆福利精品推荐| 亚洲欧洲综合另类| 在线免费观看视频一区| 亚洲地区一二三色| 在线成人av网站| 免费观看一级欧美片| 精品久久久久久久久久久久包黑料 | 粉嫩av一区二区三区| 国产精品久久三区| 色综合天天在线| 亚洲国产aⅴ成人精品无吗| 欧美肥妇bbw| 精品一区精品二区高清| 久久午夜色播影院免费高清| 不卡一区二区在线| 一区二区三区精品在线观看| 欧美日免费三级在线| 毛片一区二区三区| 国产日韩精品一区二区三区| 91日韩精品一区| 日韩高清欧美激情| 国产日韩欧美综合在线| 91在线无精精品入口| 亚洲国产中文字幕在线视频综合| 91精品国产91综合久久蜜臀| 国产福利精品导航| 亚洲免费视频中文字幕| 91精品免费观看| 国产福利精品导航| 亚洲高清不卡在线| 久久久高清一区二区三区| 91女厕偷拍女厕偷拍高清| 日韩精品1区2区3区| 久久久久久久久岛国免费| 91在线播放网址| 久久99精品久久久| 成人欧美一区二区三区| 欧美精品 日韩| 成人免费毛片高清视频| 日韩高清电影一区| 国产精品国产三级国产aⅴ中文| 欧美剧情片在线观看| 成人av在线看| 日本不卡在线视频| 18成人在线观看| 欧美变态tickling挠脚心| 91老司机福利 在线| 黄页网站大全一区二区| 亚洲猫色日本管| 久久久久久久久久久久久久久99| 欧美日韩在线精品一区二区三区激情| 国精产品一区一区三区mba视频 | 色婷婷综合久久久久中文| 免费观看91视频大全| **性色生活片久久毛片| 26uuu色噜噜精品一区二区| 在线看日本不卡| 成人美女视频在线观看| 美女精品自拍一二三四| 亚洲小少妇裸体bbw| 国产精品久久99| 精品国产免费一区二区三区四区| 在线免费观看日韩欧美| 国产不卡在线视频| 麻豆91精品视频| 亚洲电影中文字幕在线观看| 国产精品久久免费看| 久久久久高清精品| 日韩一区二区在线看| 欧美日韩一区二区电影| 99r精品视频| 国产成人精品亚洲日本在线桃色 | 色综合色综合色综合 | 制服丝袜亚洲精品中文字幕| 99免费精品在线观看| 黑人巨大精品欧美一区| 秋霞av亚洲一区二区三| 亚洲成人av一区| 亚洲一区二区成人在线观看| 自拍av一区二区三区| 中文字幕一区二区视频| 欧美经典一区二区三区| 久久午夜色播影院免费高清 | 日韩电影在线观看电影| 亚洲午夜一区二区| 亚洲另类春色校园小说| 亚洲色图在线视频| 亚洲视频一区二区免费在线观看| 国产欧美日韩激情| 国产精品色呦呦|