Code/Resource
Windows Develop
Linux-Unix program
Internet-Socket-Network
Web Server
Browser Client
Ftp Server
Ftp Client
Browser Plugins
Proxy Server
Email Server
Email Client
WEB Mail
Firewall-Security
Telnet Server
Telnet Client
ICQ-IM-Chat
Search Engine
Sniffer Package capture
Remote Control
xml-soap-webservice
P2P
WEB(ASP,PHP,...)
TCP/IP Stack
SNMP
Grid Computing
SilverLight
DNS
Cluster Service
Network Security
Communication-Mobile
Game Program
Editor
Multimedia program
Graph program
Compiler program
Compress-Decompress algrithms
Crypt_Decrypt algrithms
Mathimatics-Numerical algorithms
MultiLanguage
Disk/Storage
Java Develop
assembly language
Applications
Other systems
Database system
Embeded-SCM Develop
FlashMX/Flex
source in ebook
Delphi VCL
OS Develop
MiddleWare
MPI
MacOS develop
LabView
ELanguage
Software/Tools
E-Books
Artical/Document
Acl.cpp
Package: FireWall-C++.rar [view]
Upload User: kklily621
Upload Date: 2013-06-25
Package Size: 252k
Code Size: 10k
Category:
Firewall-Security
Development Platform:
Visual C++
- // Acl.cpp : implementation file
- //
- #include "stdafx.h"
- #include "Property.h"
- #include "Acl.h"
- //owner add
- #include "GuiRes.h"
- #include "AclSet.h"
- #include "MainSheet.h"
- #ifdef _DEBUG
- #define new DEBUG_NEW
- #undef THIS_FILE
- static char THIS_FILE[] = __FILE__;
- #endif
- /////////////////////////////////////////////////////////////////////////////
- // CAcl property page
- CAclSet* dlgAclSet = NULL;
- extern CAclFile m_AclFile;
- extern CPropertyApp theApp;
- extern CMainSheet *dlg;
- IMPLEMENT_DYNCREATE(CAcl, CPropertyPage)
- // static class member of variable
- CListCtrl CAcl::m_ListAcl;
- CAcl::CAcl() : CPropertyPage(CAcl::IDD)
- {
- //{{AFX_DATA_INIT(CAcl)
- // NOTE: the ClassWizard will add member initialization here
- //}}AFX_DATA_INIT
- }
- CAcl::~CAcl()
- {
- }
- void CAcl::DoDataExchange(CDataExchange* pDX)
- {
- CPropertyPage::DoDataExchange(pDX);
- //{{AFX_DATA_MAP(CAcl)
- DDX_Control(pDX, IDC_ACL_LIST , m_ListAcl);
- DDX_Control(pDX, IDC_ACL_RADIO_PASS , m_RadioPass);
- DDX_Control(pDX, IDC_ACL_RADIO_QUERY, m_RadioQuery);
- DDX_Control(pDX, IDC_ACL_RADIO_DENY , m_RadioDeny);
- //}}AFX_DATA_MAP
- }
- BEGIN_MESSAGE_MAP(CAcl, CPropertyPage)
- //{{AFX_MSG_MAP(CAcl)
- ON_BN_CLICKED(IDC_ACL_BUTTON_ADD , OnAclButtonAdd)
- ON_BN_CLICKED(IDC_ACL_BUTTON_EDIT , OnAclButtonEdit)
- ON_NOTIFY(LVN_ITEMCHANGED, IDC_ACL_LIST , OnItemchangedAclList)
- ON_NOTIFY(NM_DBLCLK, IDC_ACL_LIST , OnDblclkAclList)
- ON_NOTIFY(NM_CLICK, IDC_ACL_LIST , OnClickAclList)
- ON_BN_CLICKED(IDC_ACL_BUTTON_DELETE , OnAclButtonDelete)
- ON_BN_CLICKED(IDC_ACL_RADIO_DENY , OnAclRadioDeny)
- ON_BN_CLICKED(IDC_ACL_RADIO_PASS , OnAclRadioPass)
- ON_BN_CLICKED(IDC_ACL_RADIO_QUERY , OnAclRadioQuery)
- //}}AFX_MSG_MAP
- END_MESSAGE_MAP()
- //=============================================================================================
- // CAcl message handlers
- BOOL CAcl::OnInitDialog()
- {
- CPropertyPage::OnInitDialog();
- InitDlgResource();
- return TRUE;
- }
- //---------------------------------------------------------------------------------------------
- //initialize dialog's resource
- void CAcl::InitDlgResource()
- {
- SetDlgItemText(IDC_ACL_APPLICATION_SET_LABLE ,GUI_ACL_APPLICATION_SET_LABLE);
- SetDlgItemText(IDC_ACL_RADIO_PASS ,GUI_ACL_RADIO_PASS);
- SetDlgItemText(IDC_ACL_RADIO_QUERY ,GUI_ACL_RADIO_QUERY);
- SetDlgItemText(IDC_ACL_RADIO_DENY ,GUI_ACL_RADIO_DENY);
- SetDlgItemText(IDC_ACL_SET_LABLE ,GUI_ACL_SET_LABLE);
- SetDlgItemText(IDC_ACL_BUTTON_ADD ,GUI_ACL_BUTTON_ADD);
- SetDlgItemText(IDC_ACL_BUTTON_EDIT ,GUI_ACL_BUTTON_EDIT);
- SetDlgItemText(IDC_ACL_BUTTON_DELETE ,GUI_ACL_BUTTON_DELETE);
- InitList(&m_ListAcl);
- Refresh();
- }
- void CAcl::Refresh()
- {
- m_ListAcl.DeleteAllItems();
- m_RadioPass.SetCheck(FALSE);
- m_RadioQuery.SetCheck(FALSE);
- m_RadioDeny.SetCheck(FALSE);
- for(DWORD i = 0; i < m_AclFile.mAclHeader.ulAclCount; i++)
- ListAddOne(m_AclFile.mpAcl + i, !i);
- m_iType = m_AclFile.GetBit(m_AclFile.mAclHeader.bSet,4,2); //bit 5, 6
- if(m_iType == 0)
- m_RadioPass .SetCheck(TRUE);
- else if(m_iType == 1)
- m_RadioQuery.SetCheck(TRUE);
- else if(m_iType == 2)
- m_RadioDeny .SetCheck(TRUE);
- else
- {
- AfxMessageBox(GUI_ACL_MESSAGE_ACL_FILE_SET_ERROR);
- return;
- }
- }
- void CAcl::InitList(CListCtrl *mList)
- {
- ListView_SetExtendedListViewStyle(mList->m_hWnd ,
- LVS_EX_GRIDLINES | LVS_EX_FULLROWSELECT
- );
- mList->InsertColumn(0, GUI_ACL_LIST_ACTION,
- LVCFMT_LEFT,
- GUI_ACL_LIST_ACTION_SIZE
- );
- mList->InsertColumn(1, GUI_ACL_LIST_APPLICATION ,
- LVCFMT_LEFT,
- GUI_ACL_LIST_APPLICATION_SIZE + 40
- );
- mList->InsertColumn(2, GUI_ACL_LIST_DIRECTION,
- LVCFMT_LEFT,
- GUI_ACL_LIST_DIRECTION_SIZE
- );
- mList->InsertColumn(3, GUI_ACL_LIST_REMOTE_NET,
- LVCFMT_LEFT,
- GUI_ACL_LIST_REMOTE_NET_SIZE+ 30
- );
- mList->InsertColumn(4, GUI_ACL_LIST_ACCESS_TIME,
- LVCFMT_LEFT,
- GUI_ACL_LIST_ACCESS_TIME_SIZE + 30
- );
- mList->InsertColumn(5, GUI_ACL_LIST_TYPE_PORT,
- LVCFMT_LEFT,
- GUI_ACL_LIST_TYPE_PORT_SIZE
- );
- mList->InsertColumn(6, GUI_ACL_LIST_APPLICATION_PATH,
- LVCFMT_LEFT,
- GUI_ACL_LIST_APPLICATION_PATH_SIZE + 30
- );
- mList->InsertColumn(7, GUI_ACL_LIST_MEMO,
- LVCFMT_LEFT,
- GUI_ACL_LIST_MEMO_SIZE + 30
- );
- }
- int CAcl::ListAddOne(void* mpAcl, BOOL isSelected, BOOL isEdit, int EditIndex)
- {
- if(m_ListAcl.m_hWnd == NULL)
- return 0;
- XACL* mAcl = (XACL*)mpAcl;
- int iIndex = m_ListAcl.GetItemCount();
- if(isEdit)
- iIndex = EditIndex;
- else
- m_ListAcl.InsertItem(iIndex, GUI_ACTION[mAcl->bAction]);
- m_ListAcl.SetItemText(iIndex, 0, GUI_ACTION[mAcl->bAction]);
- m_ListAcl.SetItemText(iIndex, 1, CAclFile::GetName(mAcl->sApplication));
- m_ListAcl.SetItemText(iIndex, 2, GUI_DIRECTION[mAcl->bDirection]);
- m_ListAcl.SetItemText(iIndex, 3, GUI_NET[mAcl->bRemoteNetType]);
- m_ListAcl.SetItemText(iIndex, 4, GUI_TIME[mAcl->bAccessTimeType]);
- CString tmpStr;
- tmpStr.Format(_T("%s/%u"),GUI_SERVICE_TYPE[mAcl->bServiceType], mAcl->uiServicePort);
- m_ListAcl.SetItemText(iIndex,5,tmpStr);
- m_ListAcl.SetItemText(iIndex,6, CAclFile::GetPath(mAcl->sApplication));
- m_ListAcl.SetItemText(iIndex,7,mAcl->sMemo);
- if(isSelected)
- {
- m_ListAcl.EnsureVisible(iIndex,TRUE);
- m_ListAcl.SetItemState(iIndex,LVIS_SELECTED,LVIS_SELECTED);
- }
- return 0;
- }
- void CAcl::OnAclButtonAdd()
- {
- if(!GetDlgItem(IDC_ACL_BUTTON_ADD)->IsWindowEnabled())
- return;
- if(InitAddAcl(_T("")) != 0)
- return;
- GetOwner()->GetDlgItem(ID_APPLY_NOW)->EnableWindow(TRUE);
- }
- int CAcl::InitAddAcl(TCHAR* sPathName, BOOL EnableComboApplication)
- {
- if(MAX_ACL != 0 && m_AclFile.mAclHeader.ulAclCount >= MAX_ACL)
- {
- AfxMessageBox(GUI_ACL_MESSAGE_MAX_ACL);
- return -1;
- }
- XACL m_tmpAcl;
- m_tmpAcl.bAccessTimeType = ACL_TIME_TYPE_ALL;
- m_tmpAcl.bAction = ACL_ACTION_PASS;
- m_tmpAcl.bDirection = ACL_DIRECTION_IN_OUT;
- m_tmpAcl.bRemoteNetType = ACL_NET_TYPE_ALL;
- m_tmpAcl.bServiceType = ACL_SERVICE_TYPE_ALL;
- _tcscpy(m_tmpAcl.sApplication, _T(""));
- _tcscpy(m_tmpAcl.sMemo , _T(""));
- m_tmpAcl.uiServicePort = ACL_SERVICE_PORT_ALL;
- m_tmpAcl.ulAclID = 0;
- CAclSet::m_EnableComboApplication = EnableComboApplication;
- CAclSet::m_tmpAcl = m_tmpAcl;
- CAclSet::m_sPathName = sPathName;
- int iRet = ShowDlg();
- if(iRet == IDCANCEL)
- return IDCANCEL;
- m_tmpAcl = CAclSet::m_tmpAcl;
- if(m_AclFile.AddAcl(&m_tmpAcl,1) != 0)
- {
- AfxMessageBox(GUI_ACL_MESSAGE_ADD_ACL_ERROR);
- return -1;
- }
- if(m_ListAcl.m_hWnd != NULL)
- ListAddOne(&CAclSet::m_tmpAcl,TRUE);
- return 0;
- }
- BOOL WINAPI CAcl::AddAclQuery(TCHAR* sPathName, BOOL EnableComboApplication)
- {
- ODS("XFILTER.EXE: AddAclQuery");
- int iRet = InitAddAcl(sPathName, EnableComboApplication);
- if(iRet != 0)
- return FALSE;
- if(m_AclFile.SaveAcl() != XERR_SUCCESS)
- {
- AfxMessageBox(GUI_ACL_MESSAGE_SAVE_ACL_ERROR);
- return FALSE;
- }
- if(!theApp.InitDllData())
- {
- AfxMessageBox(GUI_ACL_MESSAGE_INIT_DLL_DATA_ERROR);
- return FALSE;
- }
- if(dlg != NULL)
- dlg->GetDlgItem(ID_APPLY_NOW)->EnableWindow(FALSE);
- return TRUE;
- }
- void CAcl::OnAclButtonEdit()
- {
- if(!GetDlgItem(IDC_ACL_BUTTON_EDIT)->IsWindowEnabled())
- return;
- if(m_iListIndex < 0)
- return;
- CAclSet::m_tmpAcl = m_AclFile.mpAcl[m_iListIndex];
- CAclSet::m_EnableComboApplication = TRUE;
- int iRet = ShowDlg();
- if(iRet == IDCANCEL)
- return;
- m_AclFile .mpAcl[m_iListIndex] = CAclSet::m_tmpAcl;
- ListAddOne (&CAclSet::m_tmpAcl,FALSE,TRUE,m_iListIndex);
- GetOwner() -> GetDlgItem(ID_APPLY_NOW) -> EnableWindow(TRUE);
- }
- int CAcl::ShowDlg()
- {
- EnableMenu(FALSE);
- dlgAclSet = new CAclSet;
- int iRet = dlgAclSet->DoModal();
- delete dlgAclSet;
- dlgAclSet = NULL;
- EnableMenu(TRUE);
- return iRet;
- }
- UINT CAcl::EnableMenu(UINT bEnable)
- {
- theApp.m_EnablePacketMonitor = bEnable;
- theApp.m_EnableQueryLog = bEnable;
- theApp.m_EnableAcl = bEnable;
- theApp.m_EnableSystemSet = bEnable;
- theApp.m_EnableAbout = bEnable;
- if(!CAclSet::m_EnableComboApplication)
- {
- theApp.m_EnableExit = bEnable;
- theApp.m_EnableContolFrame = bEnable;
- }
- return bEnable;
- }
- void CAcl::OnItemchangedAclList(NMHDR* pNMHDR, LRESULT* pResult)
- {
- NM_LISTVIEW* pNMListView = (NM_LISTVIEW*)pNMHDR;
- *pResult = 0;
- if((m_iListIndex = pNMListView->iItem) == -1)
- return;
- EnableButton(TRUE);
- }
- void CAcl::EnableButton(BOOL bEnable)
- {
- GetDlgItem(IDC_ACL_BUTTON_EDIT) ->EnableWindow(bEnable);
- GetDlgItem(IDC_ACL_BUTTON_DELETE) ->EnableWindow(bEnable);
- }
- void CAcl::OnDblclkAclList(NMHDR* pNMHDR, LRESULT* pResult)
- {
- NM_LISTVIEW* pNMListView = (NM_LISTVIEW*)pNMHDR;
- if((m_iListIndex = pNMListView->iItem) != -1)
- OnAclButtonEdit();
- *pResult = 0;
- }
- void CAcl::OnClickAclList(NMHDR* pNMHDR, LRESULT* pResult)
- {
- NM_LISTVIEW* pNMListView = (NM_LISTVIEW*)pNMHDR;
- if((m_iListIndex = pNMListView->iItem) == -1)
- EnableButton(FALSE);
- *pResult = 0;
- }
- void CAcl::OnAclButtonDelete()
- {
- if(!GetDlgItem(IDC_ACL_BUTTON_DELETE)->IsWindowEnabled())
- return;
- if(m_iListIndex < 0)
- return;
- int tmpIndex = m_iListIndex;
- m_AclFile.DelAcl(m_iListIndex, ACL_TYPE_ACL);
- m_ListAcl.DeleteItem(m_iListIndex);
- GetOwner()->GetDlgItem(ID_APPLY_NOW)->EnableWindow(TRUE);
- if(m_ListAcl.GetItemCount() <= 0)
- {
- EnableButton(FALSE);
- return;
- }
- if(tmpIndex == m_ListAcl.GetItemCount())
- tmpIndex -- ;
- m_ListAcl.SetItemState(tmpIndex, LVIS_SELECTED, LVIS_SELECTED);
- }
- void CAcl::OnAclRadioDeny()
- {
- SetType(2, TRUE, FALSE); //binary 10
- }
- void CAcl::OnAclRadioPass()
- {
- SetType(0, FALSE, FALSE); //binary 00
- }
- void CAcl::OnAclRadioQuery()
- {
- SetType(1, FALSE, TRUE); //binary 01
- }
- BOOL CAcl::SetType(int type, BOOL bit4, BOOL bit5)
- {
- if(type == m_iType)
- return FALSE;
- m_AclFile.SetBit(&m_AclFile.mAclHeader.bSet, 4, bit4);
- m_AclFile.SetBit(&m_AclFile.mAclHeader.bSet, 5, bit5);
- m_iType = type;
- GetOwner()->GetDlgItem(ID_APPLY_NOW)->EnableWindow(TRUE);
- return TRUE;
- }