📄 proppagefilesharepermissions.cpp
字号:
#include "StdAfx.h"#include "WarServerSnapin.h"#include "WarSvrSnapin.h"#include "WarMmcNodeFileShare.h"#include "PropPageFileSharePermissions.h"#include "PropPageFileShareUrl.h"PropPageFileSharePermissions::PropPageFileSharePermissions( warmmc_file_share_data_ptr_t dataPtr, long lNotifyHandle, bool bDeleteHandle, TCHAR* pTitle) : CSnapInPropertyPageImpl<PropPageFileSharePermissions> (pTitle),m_lNotifyHandle(lNotifyHandle),m_bDeleteHandle(bDeleteHandle), // Should be true for only page.mDataPtr(dataPtr){}PropPageFileSharePermissions::~PropPageFileSharePermissions(){ if (m_bDeleteHandle) MMCFreeNotifyHandle(m_lNotifyHandle);}LRESULT PropPageFileSharePermissions::OnInitDialog(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled){ SendDlgItemMessage(IDC_SYMLINKS, CB_INSERTSTRING, 0, (LPARAM)_T("Nowhere (denied)")); SendDlgItemMessage(IDC_SYMLINKS, CB_INSERTSTRING, 1, (LPARAM)_T("Within this path (safe)")); SendDlgItemMessage(IDC_SYMLINKS, CB_INSERTSTRING, 2, (LPARAM)_T("Within defined paths (safe)")); SendDlgItemMessage(IDC_SYMLINKS, CB_INSERTSTRING, 3, (LPARAM)_T("Everywhere (DANGEROUS!!!)")); return TRUE;}BOOL PropPageFileSharePermissions::OnSetActive(){ UpdatePermsOnScreen(true); ::PostMessage(GetParent(), PSM_SETWIZBUTTONS, 0, PSWIZB_FINISH | PSWIZB_BACK); return TRUE;}BOOL PropPageFileSharePermissions::OnApply(){ mDataPtr->Apply(m_lNotifyHandle, (1 << 3)); return TRUE;}BOOL PropPageFileSharePermissions::OnWizardFinish(){ mDataPtr->Apply(m_lNotifyHandle, -1); return TRUE;}#define CHECK(id, flag) CheckDlgButton(id, \ IsPermissionSet(perms, flag) ? BST_CHECKED : BST_UNCHECKED)void PropPageFileSharePermissions::UpdatePermsOnScreen(bool doFullUpdate){ war_uint32_t perms = mDataPtr->GetPermissions(); CHECK(IDC_DENY,DENY_ALL); CHECK(IDC_HIDE,HIDE_ALL); CHECK(IDC_RECURSIVE,RECURSIVE); CHECK(IDC_FREE,SHARE_FREE); CHECK(IDC_SHARED_UPLOAD,SHARED_UPLOAD); CHECK(IDC_LIST,ALLOW_LIST); CHECK(IDC_CWD,ALLOW_CWD); CHECK(IDC_CREATE,ALLOW_DIR_CREATE); CHECK(IDC_REMOVE,ALLOW_DIR_DELETE); CHECK(IDC_READ,ALLOW_READ); CHECK(IDC_WRITE,ALLOW_WRITE); CHECK(IDC_APPEND,ALLOW_APPEND); CHECK(IDC_DELETE,ALLOW_DELETE); CHECK(IDC_EXECUTE,ALLOW_EXEC); CHECK(IDC_MK_SYMLINK,ALLOW_SYMLINK); CHECK(IDC_MAP_SYMLINKS,MAP_SYMLINK); SendDlgItemMessage(IDC_SYMLINKS,CB_SETCURSEL, (perms & SYMLINK_ALL), 0); #define DEF_SHOW ((perms & (DENY_ALL | SHARED_UPLOAD)) == 0) ::EnableWindow(GetDlgItem(IDC_HIDE), (perms & DENY_ALL) != 0); ::EnableWindow(GetDlgItem(IDC_FREE), (perms & DENY_ALL) == 0); ::EnableWindow(GetDlgItem(IDC_SHARED_UPLOAD), (perms & DENY_ALL) == 0); ::EnableWindow(GetDlgItem(IDC_LIST), DEF_SHOW); ::EnableWindow(GetDlgItem(IDC_CWD), DEF_SHOW); ::EnableWindow(GetDlgItem(IDC_FREE), (perms & DENY_ALL) == 0); ::EnableWindow(GetDlgItem(IDC_CREATE), (perms & DENY_ALL) == 0); ::EnableWindow(GetDlgItem(IDC_REMOVE), (perms & DENY_ALL) == 0); ::EnableWindow(GetDlgItem(IDC_READ), DEF_SHOW); ::EnableWindow(GetDlgItem(IDC_WRITE), DEF_SHOW); ::EnableWindow(GetDlgItem(IDC_APPEND), DEF_SHOW); ::EnableWindow(GetDlgItem(IDC_DELETE), DEF_SHOW); ::EnableWindow(GetDlgItem(IDC_EXECUTE), (perms & DENY_ALL) == 0); ::EnableWindow(GetDlgItem(IDC_MK_SYMLINK), (perms & DENY_ALL) == 0); ::EnableWindow(GetDlgItem(IDC_SYMLINKS), (perms & DENY_ALL) == 0); ::EnableWindow(GetDlgItem(IDC_MAP_SYMLINKS), ((perms & DENY_ALL) == 0) && IsSymlink(perms)); ReloadStyles(doFullUpdate);}#undef CHECK#undef DEF_SHOW#define CHKD(id, flag) perms |= ((IsDlgButtonChecked(id) == BST_CHECKED) ? flag : 0)void PropPageFileSharePermissions::ReloadStyles(bool doFullUpdate){ WarMmcFileTypes::GetObject().UpdateComboBox( GetDlgItem(IDC_STYLE), WarCollector<TCHAR>( mDataPtr->GetUrl().GetDriverName()).GetValue().c_str(), mDataPtr->GetPermissions(), doFullUpdate);}void PropPageFileSharePermissions::UpdatePermsFromScreen(){ war_uint32_t perms = 0; CHKD(IDC_DENY, DENY_ALL); CHKD(IDC_HIDE, HIDE_ALL); CHKD(IDC_RECURSIVE, RECURSIVE); CHKD(IDC_FREE, SHARE_FREE); CHKD(IDC_SHARED_UPLOAD, SHARED_UPLOAD); CHKD(IDC_LIST, ALLOW_LIST); CHKD(IDC_CWD, ALLOW_CWD); CHKD(IDC_CREATE, ALLOW_DIR_CREATE); CHKD(IDC_REMOVE, ALLOW_DIR_DELETE); CHKD(IDC_READ, ALLOW_READ); CHKD(IDC_WRITE, ALLOW_WRITE); CHKD(IDC_APPEND, ALLOW_APPEND); CHKD(IDC_DELETE, ALLOW_DELETE); CHKD(IDC_EXECUTE, ALLOW_EXEC); CHKD(IDC_MK_SYMLINK, ALLOW_SYMLINK); CHKD(IDC_MAP_SYMLINKS, MAP_SYMLINK); int index = SendDlgItemMessage(IDC_SYMLINKS, CB_GETCURSEL, 0, 0); if (index != CB_ERR) perms |= (index & SYMLINK_ALL); mDataPtr->SetPermissions(GetSanePerms(perms)); mDataPtr->AddMask((1 << 3));}#undef CHKDLRESULT PropPageFileSharePermissions::OnClickedDeny(WORD wNotifyCode, WORD wID, HWND hWndCtl, BOOL& bHandled){ UpdatePermsFromScreen(); UpdatePermsOnScreen(); return 0;}LRESULT PropPageFileSharePermissions::OnSelchangeSymlinks(WORD wNotifyCode, WORD wID, HWND hWndCtl, BOOL& bHandled){ UpdatePermsFromScreen(); UpdatePermsOnScreen(); return 0;}LRESULT PropPageFileSharePermissions::OnClicked(WORD wNotifyCode, WORD wID, HWND hWndCtl, BOOL& bHandled){ UpdatePermsFromScreen(); UpdatePermsOnScreen(); return 0;}LRESULT PropPageFileSharePermissions::OnSelchangeStyle(WORD wNotifyCode, WORD wID, HWND hWndCtl, BOOL& bHandled){ try { int index = SendDlgItemMessage(IDC_STYLE, CB_GETCURSEL, 0, 0); if (index != CB_ERR) { mDataPtr->SetPermissions( SendDlgItemMessage(IDC_STYLE, CB_GETITEMDATA, index, 0)); } } catch(WarException) { } UpdatePermsOnScreen(); return 0;}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -