Windows NT KAMIDAKI 10.0 build 19045 (Windows 10) AMD64
Apache/2.4.58 (Win64) OpenSSL/3.1.3 PHP/8.3.9
Server IP : 192.168.3.16 & Your IP : 216.73.216.140
Domains :
Cant Read [ /etc/named.conf ]
User : SISTEMA
Terminal
Auto Root
Create File
Create Folder
Localroot Suggester
Backdoor Destroyer
Readme
C: /
xampp /
FileZillaFTP /
source /
interface /
Delete
Unzip
Name
Size
Permission
Date
Action
misc
[ DIR ]
drwxrwxrwx
2024-07-26 17:37
res
[ DIR ]
drwxrwxrwx
2024-07-26 17:37
AdminSocket.cpp
11.93
KB
-rw-rw-rw-
2012-04-16 19:30
AdminSocket.h
2.15
KB
-rw-rw-rw-
2012-04-16 19:30
ConnectDialog.cpp
3.33
KB
-rw-rw-rw-
2012-04-16 19:30
ConnectDialog.h
2.2
KB
-rw-rw-rw-
2012-04-16 19:30
DeleteGroupInUseDlg.cpp
2.21
KB
-rw-rw-rw-
2012-04-16 19:30
DeleteGroupInUseDlg.h
1.57
KB
-rw-rw-rw-
2012-04-16 19:30
EnterSomething.cpp
2.91
KB
-rw-rw-rw-
2012-04-16 19:30
EnterSomething.h
2.27
KB
-rw-rw-rw-
2012-04-16 19:30
FileZilla Server Interface.vcproj
46.3
KB
-rw-rw-rw-
2012-04-16 19:30
FileZilla server.cpp
6.09
KB
-rw-rw-rw-
2012-04-16 19:30
FileZilla server.h
2.37
KB
-rw-rw-rw-
2012-04-16 19:30
FileZilla server.rc
66.64
KB
-rw-rw-rw-
2012-04-16 19:30
GenerateCertificateDlg.cpp
3.22
KB
-rw-rw-rw-
2012-04-16 19:30
GenerateCertificateDlg.h
1.39
KB
-rw-rw-rw-
2012-04-16 19:30
GroupsDlg.cpp
13.45
KB
-rw-rw-rw-
2012-04-16 19:30
GroupsDlg.h
3.1
KB
-rw-rw-rw-
2012-04-16 19:30
GroupsDlgGeneral.cpp
5.01
KB
-rw-rw-rw-
2012-04-16 19:30
GroupsDlgGeneral.h
2.64
KB
-rw-rw-rw-
2012-04-16 19:30
GroupsDlgIpFilter.cpp
3.94
KB
-rw-rw-rw-
2012-04-16 19:30
GroupsDlgIpFilter.h
2.36
KB
-rw-rw-rw-
2012-04-16 19:30
GroupsDlgSharedFolders.cpp
18.15
KB
-rw-rw-rw-
2012-04-16 19:30
GroupsDlgSharedFolders.h
3.51
KB
-rw-rw-rw-
2012-04-16 19:30
GroupsDlgSpeedLimit.cpp
14.94
KB
-rw-rw-rw-
2012-04-16 19:30
GroupsDlgSpeedLimit.h
3.38
KB
-rw-rw-rw-
2012-04-16 19:30
MainFrm.cpp
35.15
KB
-rw-rw-rw-
2012-04-16 19:30
MainFrm.h
5.65
KB
-rw-rw-rw-
2012-04-16 19:30
NewUserDlg.cpp
2.68
KB
-rw-rw-rw-
2012-04-16 19:30
NewUserDlg.h
2.18
KB
-rw-rw-rw-
2012-04-16 19:30
OfflineAskDlg.cpp
2.05
KB
-rw-rw-rw-
2012-04-16 19:30
OfflineAskDlg.h
2.06
KB
-rw-rw-rw-
2012-04-16 19:30
Options.cpp
8.67
KB
-rw-rw-rw-
2012-04-16 19:30
Options.h
2.18
KB
-rw-rw-rw-
2012-04-16 19:30
OptionsAdminInterfacePage.cpp
7.01
KB
-rw-rw-rw-
2012-04-16 19:30
OptionsAdminInterfacePage.h
2.58
KB
-rw-rw-rw-
2012-04-16 19:30
OptionsAutobanPage.cpp
3.75
KB
-rw-rw-rw-
2012-04-16 19:30
OptionsAutobanPage.h
2.14
KB
-rw-rw-rw-
2012-04-16 19:30
OptionsCompressionPage.cpp
3.42
KB
-rw-rw-rw-
2012-04-16 19:30
OptionsCompressionPage.h
1.41
KB
-rw-rw-rw-
2012-04-16 19:30
OptionsDlg.cpp
10.44
KB
-rw-rw-rw-
2012-04-16 19:30
OptionsDlg.h
3.05
KB
-rw-rw-rw-
2012-04-16 19:30
OptionsGSSPage.cpp
2.32
KB
-rw-rw-rw-
2012-04-16 19:30
OptionsGSSPage.h
2.1
KB
-rw-rw-rw-
2012-04-16 19:30
OptionsGeneralIpbindingsPage.cpp
1.78
KB
-rw-rw-rw-
2012-04-16 19:30
OptionsGeneralIpbindingsPage.h
1.33
KB
-rw-rw-rw-
2012-04-16 19:30
OptionsGeneralPage.cpp
4.98
KB
-rw-rw-rw-
2012-04-16 19:30
OptionsGeneralPage.h
2.41
KB
-rw-rw-rw-
2012-04-16 19:30
OptionsGeneralWelcomemessagePage.cpp
3.5
KB
-rw-rw-rw-
2012-04-16 19:30
OptionsGeneralWelcomemessagePage.h
2.45
KB
-rw-rw-rw-
2012-04-16 19:30
OptionsIpFilterPage.cpp
3.15
KB
-rw-rw-rw-
2012-04-16 19:30
OptionsIpFilterPage.h
2.3
KB
-rw-rw-rw-
2012-04-16 19:30
OptionsLoggingPage.cpp
4.91
KB
-rw-rw-rw-
2012-04-16 19:30
OptionsLoggingPage.h
2.49
KB
-rw-rw-rw-
2012-04-16 19:30
OptionsMiscPage.cpp
3.78
KB
-rw-rw-rw-
2012-04-16 19:30
OptionsMiscPage.h
2.33
KB
-rw-rw-rw-
2012-04-16 19:30
OptionsPage.cpp
2.03
KB
-rw-rw-rw-
2012-04-16 19:30
OptionsPage.h
2.27
KB
-rw-rw-rw-
2012-04-16 19:30
OptionsPasvPage.cpp
5.96
KB
-rw-rw-rw-
2012-04-16 19:30
OptionsPasvPage.h
2.51
KB
-rw-rw-rw-
2012-04-16 19:30
OptionsSecurityPage.cpp
3.48
KB
-rw-rw-rw-
2012-04-16 19:30
OptionsSecurityPage.h
2.39
KB
-rw-rw-rw-
2012-04-16 19:30
OptionsSpeedLimitPage.cpp
12
KB
-rw-rw-rw-
2012-04-16 19:30
OptionsSpeedLimitPage.h
3.35
KB
-rw-rw-rw-
2012-04-16 19:30
OptionsSslPage.cpp
6.76
KB
-rw-rw-rw-
2012-04-16 19:30
OptionsSslPage.h
1.76
KB
-rw-rw-rw-
2012-04-16 19:30
OutputFormat.cpp
792
B
-rw-rw-rw-
2012-04-16 19:30
OutputFormat.h
178
B
-rw-rw-rw-
2012-04-16 19:30
SpeedLimitRuleDlg.cpp
5.04
KB
-rw-rw-rw-
2012-04-16 19:30
SpeedLimitRuleDlg.h
2.46
KB
-rw-rw-rw-
2012-04-16 19:30
StatusCtrl.cpp
10.46
KB
-rw-rw-rw-
2012-04-16 19:30
StatusCtrl.h
2.81
KB
-rw-rw-rw-
2012-04-16 19:30
StatusView.cpp
2.95
KB
-rw-rw-rw-
2012-04-16 19:30
StatusView.h
2.39
KB
-rw-rw-rw-
2012-04-16 19:30
StdAfx.cpp
1.03
KB
-rw-rw-rw-
2012-04-16 19:30
StdAfx.h
2.77
KB
-rw-rw-rw-
2012-04-16 19:30
UsersDlg.cpp
13.17
KB
-rw-rw-rw-
2012-04-16 19:30
UsersDlg.h
3.26
KB
-rw-rw-rw-
2012-04-16 19:30
UsersDlgGeneral.cpp
8.51
KB
-rw-rw-rw-
2012-04-16 19:30
UsersDlgGeneral.h
2.78
KB
-rw-rw-rw-
2012-04-16 19:30
UsersDlgIpFilter.cpp
3.88
KB
-rw-rw-rw-
2012-04-16 19:30
UsersDlgIpFilter.h
2.34
KB
-rw-rw-rw-
2012-04-16 19:30
UsersDlgSharedFolders.cpp
17.95
KB
-rw-rw-rw-
2012-04-16 19:30
UsersDlgSharedFolders.h
3.45
KB
-rw-rw-rw-
2012-04-16 19:30
UsersDlgSpeedLimit.cpp
15.4
KB
-rw-rw-rw-
2012-04-16 19:30
UsersDlgSpeedLimit.h
3.36
KB
-rw-rw-rw-
2012-04-16 19:30
UsersListCtrl.cpp
24.46
KB
-rw-rw-rw-
2012-04-16 19:30
UsersListCtrl.h
3.54
KB
-rw-rw-rw-
2012-04-16 19:30
UsersView.cpp
2.83
KB
-rw-rw-rw-
2012-04-16 19:30
UsersView.h
2.37
KB
-rw-rw-rw-
2012-04-16 19:30
resource.h
14.1
KB
-rw-rw-rw-
2012-04-16 19:30
splitex.cpp
10.85
KB
-rw-rw-rw-
2012-04-16 19:30
splitex.h
1.4
KB
-rw-rw-rw-
2012-04-16 19:30
Save
Rename
// FileZilla Server - a Windows ftp server // Copyright (C) 2002-2004 - Tim Kosse <tim.kosse@gmx.de> // This program is free software; you can redistribute it and/or // modify it under the terms of the GNU General Public License // as published by the Free Software Foundation; either version 2 // of the License, or (at your option) any later version. // This program is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // GNU General Public License for more details. // You should have received a copy of the GNU General Public License // along with this program; if not, write to the Free Software // Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. // GroupsDlg.cpp: Implementierungsdatei // #include "stdafx.h" #include "FileZilla server.h" #include "GroupsDlg.h" #include "misc\sbdestination.h" #include "entersomething.h" #include "GroupsDlgGeneral.h" #include "GroupsDlgSpeedLimit.h" #include "GroupsDlgSharedFolders.h" #include "GroupsDlgIpFilter.h" #include "DeleteGroupInUseDlg.h" #if defined(_DEBUG) && !defined(MMGR) #define new DEBUG_NEW #undef THIS_FILE static char THIS_FILE[] = __FILE__; #endif ///////////////////////////////////////////////////////////////////////////// // Dialogfeld CGroupsDlg CGroupsDlg::CGroupsDlg(CWnd* pParent, bool localConnection) : CSAPrefsDialog(CGroupsDlg::IDD, pParent) { m_localConnection = localConnection; m_insideSelchange = false; m_pGeneralPage = new CGroupsDlgGeneral(this); m_pSpeedLimitPage = new CGroupsDlgSpeedLimit(this); m_pSharedFoldersPage = new CGroupsDlgSharedFolders(this); m_pIpFilterPage = new CGroupsDlgIpFilter(this); AddPage(*m_pGeneralPage, _T("General")); AddPage(*m_pSharedFoldersPage, _T("Shared folders")); AddPage(*m_pSpeedLimitPage, _T("Speed Limits")); AddPage(*m_pIpFilterPage, _T("IP Filter")); } CGroupsDlg::~CGroupsDlg() { delete m_pGeneralPage; delete m_pSpeedLimitPage; delete m_pSharedFoldersPage; delete m_pIpFilterPage; } void CGroupsDlg::DoDataExchange(CDataExchange* pDX) { CSAPrefsDialog::DoDataExchange(pDX); //{{AFX_DATA_MAP(CGroupsDlg) DDX_Control(pDX, IDC_GROUPS_GROUPLIST, m_cGrouplist); //}}AFX_DATA_MAP } BEGIN_MESSAGE_MAP(CGroupsDlg, CSAPrefsDialog) //{{AFX_MSG_MAP(CGroupsDlg) ON_LBN_SELCHANGE(IDC_GROUPS_GROUPLIST, OnSelchangeGrouplist) ON_WM_CONTEXTMENU() ON_COMMAND(ID_GROUPMENU_ADD, OnGroupAdd) ON_COMMAND(ID_GROUPMENU_COPY, OnGroupCopy) ON_COMMAND(ID_GROUPMENU_REMOVE, OnGroupRemove) ON_COMMAND(ID_GROUPMENU_RENAME, OnGroupRename) ON_BN_CLICKED(IDC_GROUPS_ADDGROUP, OnGroupAdd) ON_BN_CLICKED(IDC_GROUPS_COPYGROUP, OnGroupCopy) ON_BN_CLICKED(IDC_GROUPS_REMOVEGROUP, OnGroupRemove) ON_BN_CLICKED(IDC_GROUPS_RENAMEGROUP, OnGroupRename) //}}AFX_MSG_MAP END_MESSAGE_MAP() ///////////////////////////////////////////////////////////////////////////// // Behandlungsroutinen f�r Nachrichten CGroupsDlg BOOL CGroupsDlg::OnInitDialog() { CSAPrefsDialog::OnInitDialog(); m_oldgroup = LB_ERR; m_cGrouplist.ResetContent(); UpdateData(FALSE); for (unsigned int i = 0; i < m_GroupsList.size(); i++) { int index = m_cGrouplist.AddString(m_GroupsList[i].group); m_cGrouplist.SetItemData(index, i); } if (m_GroupsList.size()) { m_cGrouplist.SetCurSel(0); OnSelchangeGrouplist(); } SetCtrlState(); return TRUE; // return TRUE unless you set the focus to a control // EXCEPTION: OCX-Propertypages should return FALSE } BOOL CGroupsDlg::Validate() { CString res = m_pGeneralPage->Validate(); if (res != _T("")) { ShowPage(m_pGeneralPage); m_cGrouplist.SetCurSel(m_oldgroup); MessageBox(res); return FALSE; } res = m_pSpeedLimitPage->Validate(); if (res != _T("")) { ShowPage(m_pSpeedLimitPage); m_cGrouplist.SetCurSel(m_oldgroup); MessageBox(res); return FALSE; } res = m_pSharedFoldersPage->Validate(); if (res != _T("")) { ShowPage(m_pSharedFoldersPage); m_cGrouplist.SetCurSel(m_oldgroup); MessageBox(res); return FALSE; } res = m_pIpFilterPage->Validate(); if (res != _T("")) { ShowPage(m_pIpFilterPage); m_cGrouplist.SetCurSel(m_oldgroup); MessageBox(res); return FALSE; } return TRUE; } void CGroupsDlg::OnSelchangeGrouplist() { m_insideSelchange = true; if (!Validate()) { m_insideSelchange = false; return; } m_insideSelchange = false; if (m_oldgroup != LB_ERR) { int oldindex = m_cGrouplist.GetItemData(m_oldgroup); VERIFY(m_pGeneralPage->SaveGroup(&m_GroupsList[oldindex])); VERIFY(m_pSpeedLimitPage->SaveGroup(&m_GroupsList[oldindex])); VERIFY(m_pSharedFoldersPage->SaveGroup(&m_GroupsList[oldindex])); VERIFY(m_pIpFilterPage->SaveGroup(&m_GroupsList[oldindex])); } int nItem = m_cGrouplist.GetCurSel(); if (nItem != LB_ERR) { m_oldgroup = nItem; int index = m_cGrouplist.GetItemData(nItem); VERIFY(m_pGeneralPage->DisplayGroup(&m_GroupsList[index])); VERIFY(m_pSpeedLimitPage->DisplayGroup(&m_GroupsList[index])); VERIFY(m_pSharedFoldersPage->DisplayGroup(&m_GroupsList[index])); VERIFY(m_pIpFilterPage->DisplayGroup(&m_GroupsList[index])); } else { VERIFY(m_pGeneralPage->DisplayGroup(NULL)); VERIFY(m_pSpeedLimitPage->DisplayGroup(NULL)); VERIFY(m_pSharedFoldersPage->DisplayGroup(NULL)); VERIFY(m_pIpFilterPage->DisplayGroup(NULL)); } SetCtrlState(); } void CGroupsDlg::OnOK() { if (!Validate()) return; m_cGrouplist.SetCurSel(-1); OnSelchangeGrouplist(); CSAPrefsDialog::OnOK(); } void CGroupsDlg::OnContextMenu(CWnd* pWnd, CPoint point) { if (pWnd==&m_cGrouplist) { CMenu menu; menu.LoadMenu(IDR_GROUPCONTEXT); CMenu* pPopup = menu.GetSubMenu(0); ASSERT(pPopup != NULL); CWnd* pWndPopupOwner = this; while (pWndPopupOwner->GetStyle() & WS_CHILD) pWndPopupOwner = pWndPopupOwner->GetParent(); if (m_cGrouplist.GetCurSel()==LB_ERR) { pPopup->EnableMenuItem(ID_GROUPMENU_COPY, MF_GRAYED); pPopup->EnableMenuItem(ID_GROUPMENU_REMOVE, MF_GRAYED); pPopup->EnableMenuItem(ID_GROUPMENU_RENAME, MF_GRAYED); } if (point.x==-1) GetCursorPos(&point); pPopup->TrackPopupMenu(TPM_LEFTALIGN | TPM_RIGHTBUTTON, point.x, point.y, pWndPopupOwner); } } void CGroupsDlg::OnGroupAdd() { if (!Validate()) return; CEnterSomething dlg(IDS_ADDGROUPDIALOG); if (dlg.DoModal()==IDOK) { CString newname=dlg.m_String; newname.MakeLower(); for (int i=0; i<m_cGrouplist.GetCount(); i++) { CString str; m_cGrouplist.GetText(i, str); str.MakeLower(); if (str==newname) { AfxMessageBox(IDS_ERRORMSG_GROUPALREADYEXISTS); return; } } t_group group; group.group = dlg.m_String; group.nBypassUserLimit = 0; group.nIpLimit = 0; group.nUserLimit = 0; group.forceSsl = 0; int nItem = m_cGrouplist.AddString(group.group); if (nItem <= m_oldgroup) m_oldgroup++; m_GroupsList.push_back(group); m_cGrouplist.SetItemData(nItem, m_GroupsList.size()-1); m_cGrouplist.SetCurSel(nItem); OnSelchangeGrouplist(); } } void CGroupsDlg::OnGroupCopy() { if (!Validate()) return; int pos = m_cGrouplist.GetCurSel(); if (pos==LB_ERR) return; int index = m_cGrouplist.GetItemData(pos); CEnterSomething dlg(IDS_COPYGROUPDIALOG); if (dlg.DoModal()==IDOK) { int i; CString newname = dlg.m_String; newname.MakeLower(); for (i=0;i<m_cGrouplist.GetCount();i++) { CString str; m_cGrouplist.GetText(i,str); str.MakeLower(); if (str==newname) { AfxMessageBox(IDS_ERRORMSG_GROUPALREADYEXISTS); return; } } t_group group = m_GroupsList[index]; group.group = dlg.m_String; int nItem = m_cGrouplist.AddString(group.group); if (nItem <= m_oldgroup) m_oldgroup++; m_GroupsList.push_back(group); m_cGrouplist.SetItemData(nItem, m_GroupsList.size()-1); m_cGrouplist.SetCurSel(nItem); OnSelchangeGrouplist(); } } void CGroupsDlg::OnGroupRemove() { int pos = m_cGrouplist.GetCurSel(); if (pos == LB_ERR) return; int index = m_cGrouplist.GetItemData(pos); m_oldgroup = LB_ERR; unsigned int i = 0; CString oldName; m_cGrouplist.GetText(pos, oldName); for (i = 0; i < m_UsersList.size(); i++) { if (!m_UsersList[i].group.CompareNoCase(oldName)) { CDeleteGroupInUseDlg dlg; dlg.m_groupName = oldName; dlg.m_GroupsList = &m_GroupsList; if (dlg.DoModal() != IDOK) return; if (!dlg.m_action) { for (unsigned int k = 0; k < m_UsersList.size(); k++) { t_user& user = m_UsersList[k]; if (user.group.CompareNoCase(oldName)) continue; user.group = dlg.m_groupName; } } else { // Delete affected users t_UsersList newList; for (unsigned int k = 0; k < m_UsersList.size(); k++) { if (m_UsersList[k].group.CompareNoCase(oldName)) newList.push_back(m_UsersList[k]); } m_UsersList = newList; } } } i = 0; for (t_GroupsList::iterator iter = m_GroupsList.begin(); iter != m_GroupsList.end(); iter++, i++) if (i == index) { m_GroupsList.erase(iter); break; } for (i = 0; i < (unsigned int)m_cGrouplist.GetCount(); i++) { int data = m_cGrouplist.GetItemData(i); if (data > index) m_cGrouplist.SetItemData(i, data-1); } m_cGrouplist.DeleteString(pos); OnSelchangeGrouplist(); } void CGroupsDlg::OnGroupRename() { if (!Validate()) return; int pos=m_cGrouplist.GetCurSel(); if (pos==LB_ERR) return; int index=m_cGrouplist.GetItemData(pos); CEnterSomething dlg(IDS_INPUTDIALOGTEXT_RENAME); if (dlg.DoModal()==IDOK) { CString newname=dlg.m_String; newname.MakeLower(); for (int i = 0; i < m_cGrouplist.GetCount(); i++) { if (i == pos) continue; CString str; m_cGrouplist.GetText(i, str); str.MakeLower(); if (str == newname) { AfxMessageBox(IDS_ERRORMSG_GROUPALREADYEXISTS); return; } } CString oldName; m_cGrouplist.GetText(pos, oldName); m_cGrouplist.DeleteString(pos); pos = m_cGrouplist.AddString(dlg.m_String); m_cGrouplist.SetItemData(pos,index); m_cGrouplist.SetCurSel(pos); m_oldgroup = pos; m_GroupsList[index].group = dlg.m_String; for (unsigned int i = 0; i < m_UsersList.size(); i++) { if (!m_UsersList[i].group.CompareNoCase(oldName)) m_UsersList[i].group = dlg.m_String; } OnSelchangeGrouplist(); } } void CGroupsDlg::SetCtrlState() { if (m_cGrouplist.GetCurSel() == LB_ERR) { GetDlgItem(IDC_GROUPS_REMOVEGROUP)->EnableWindow(FALSE); GetDlgItem(IDC_GROUPS_RENAMEGROUP)->EnableWindow(FALSE); GetDlgItem(IDC_GROUPS_COPYGROUP)->EnableWindow(FALSE); } else { GetDlgItem(IDC_GROUPS_REMOVEGROUP)->EnableWindow(TRUE); GetDlgItem(IDC_GROUPS_RENAMEGROUP)->EnableWindow(TRUE); GetDlgItem(IDC_GROUPS_COPYGROUP)->EnableWindow(TRUE); } m_pGeneralPage->SetCtrlState(); m_pSpeedLimitPage->SetCtrlState(); m_pSharedFoldersPage->SetCtrlState(); m_pIpFilterPage->SetCtrlState(); } BOOL CGroupsDlg::GetAsCommand(char **pBuffer, DWORD *nBufferLength) { if (!pBuffer) return FALSE; DWORD len = 4; t_GroupsList::iterator groupiter; for (groupiter=m_GroupsList.begin(); groupiter!=m_GroupsList.end(); groupiter++) len += groupiter->GetRequiredBufferLen(); t_UsersList::iterator iter; for (iter=m_UsersList.begin(); iter!=m_UsersList.end(); iter++) len += iter->GetRequiredBufferLen(); *pBuffer=new char[len]; char *p=*pBuffer; *p++ = m_GroupsList.size()/256; *p++ = m_GroupsList.size()%256; for (groupiter=m_GroupsList.begin(); groupiter!=m_GroupsList.end(); groupiter++) { p = groupiter->FillBuffer(p); if (!p) { delete [] *pBuffer; *pBuffer = NULL; return FALSE; } } *p++ = m_UsersList.size()/256; *p++ = m_UsersList.size()%256; for (iter=m_UsersList.begin(); iter!=m_UsersList.end(); iter++) { p = iter->FillBuffer(p); if (!p) { delete [] *pBuffer; *pBuffer = NULL; return FALSE; } } *nBufferLength = len; return TRUE; } BOOL CGroupsDlg::Init(unsigned char *pData, DWORD dwDataLength) { unsigned char *p=pData; unsigned int i; if (dwDataLength < 2) return FALSE; unsigned int num = *p * 256 + p[1]; p+=2; for (i=0; i<num; i++) { t_group group; p = group.ParseBuffer(p, dwDataLength-(p-pData)); if (!p) return FALSE; m_GroupsList.push_back(group); } if ((UINT)(p-pData+2)>dwDataLength) return FALSE; num = *p * 256 + p[1]; p+=2; for (i=0; i<num; i++) { t_user user; p = user.ParseBuffer(p, dwDataLength-(p-pData)); if (!p) return FALSE; m_UsersList.push_back(user); } return TRUE; } BOOL CGroupsDlg::PreTranslateMessage(MSG* pMsg) { if (pMsg->message==WM_KEYDOWN) { if (pMsg->wParam==VK_F2) { if (GetFocus() == &m_cGrouplist) { if (m_cGrouplist.GetCurSel() == LB_ERR) return TRUE; OnGroupRename(); } return TRUE; } } return CSAPrefsDialog::PreTranslateMessage(pMsg); } t_group* CGroupsDlg::GetCurrentGroup() { if (m_cGrouplist.GetCurSel() == LB_ERR) return NULL; else { if (m_insideSelchange) { if (m_oldgroup == LB_ERR) return NULL; else return &m_GroupsList[m_cGrouplist.GetItemData(m_oldgroup)]; } return &m_GroupsList[m_cGrouplist.GetItemData(m_cGrouplist.GetCurSel())]; } }