📄 d_pop3.cpp
字号:
// D_Pop3.cpp : implementation file
//
#include "stdafx.h"
#include "InetServer.h"
#include "D_Pop3.h"
#include <direct.h>
#include "tools.h"
#include "D_Alias.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
/////////////////////////////////////////////////////////////////////////////
// D_Pop3 dialog
D_Pop3::D_Pop3(CWnd* pParent /*=NULL*/)
: CDialog(D_Pop3::IDD, pParent)
{
//{{AFX_DATA_INIT(D_Pop3)
m_username = _T("");
m_password = _T("");
m_flags = _T("");
m_comment = _T("");
//}}AFX_DATA_INIT
}
void D_Pop3::DoDataExchange(CDataExchange* pDX)
{
CDialog::DoDataExchange(pDX);
//{{AFX_DATA_MAP(D_Pop3)
DDX_Control(pDX, IDC_LIST1, mc_list1);
DDX_Text(pDX, IDC_EDIT2, m_username);
DDX_Text(pDX, IDC_EDIT3, m_password);
DDX_Text(pDX, IDC_EDIT1, m_flags);
DDX_Text(pDX, IDC_COMMENT, m_comment);
//}}AFX_DATA_MAP
}
BEGIN_MESSAGE_MAP(D_Pop3, CDialog)
//{{AFX_MSG_MAP(D_Pop3)
ON_BN_CLICKED(IDC_ADD, OnAdd)
ON_NOTIFY(NM_CLICK, IDC_LIST1, OnClickList1)
ON_NOTIFY(LVN_ITEMCHANGING, IDC_LIST1, OnItemchangingList1)
ON_NOTIFY(LVN_ITEMCHANGED, IDC_LIST1, OnItemchangedList1)
ON_BN_CLICKED(IDOK, OnOk)
ON_BN_CLICKED(IDC_BUTTON3, OnButton3)
ON_BN_CLICKED(IDC_BUTTON5, OnButton5)
ON_BN_CLICKED(IDC_BUTTON1, OnButton1)
ON_BN_CLICKED(IDC_ALIASES, OnAliases)
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
/////////////////////////////////////////////////////////////////////////////
// D_Pop3 message handlers
BOOL D_Pop3::OnInitDialog()
{
CDialog::OnInitDialog();
CImageList *m_pimagelistSmall;
m_pimagelistSmall = new CImageList();
m_pimagelistSmall->Create(16, 16, TRUE/*bMask*/, 1, 4);
m_pimagelistSmall->Add(AfxGetApp()->LoadIcon(IDI_USER));
CRect rect;
LV_COLUMN lvcolumn;
TCHAR rgtsz[4][20] = {_T("Username"),_T("Password"),_T("Flags"),_T("Comment")};
mc_list1.SetImageList(m_pimagelistSmall, LVSIL_SMALL);
mc_list1.GetWindowRect(&rect);
lvcolumn.mask = LVCF_FMT | LVCF_SUBITEM | LVCF_TEXT | LVCF_WIDTH;
lvcolumn.fmt = LVCFMT_LEFT;
lvcolumn.pszText = rgtsz[0];
lvcolumn.iSubItem = 0;
lvcolumn.cx = 100;
mc_list1.InsertColumn(0, &lvcolumn);
lvcolumn.pszText = rgtsz[1];
lvcolumn.iSubItem = 1;
lvcolumn.cx = 70;
mc_list1.InsertColumn(1, &lvcolumn);
lvcolumn.pszText = rgtsz[2];
lvcolumn.iSubItem = 2;
lvcolumn.cx = 80;
mc_list1.InsertColumn(2, &lvcolumn);
lvcolumn.pszText = rgtsz[3];
lvcolumn.iSubItem = 3;
lvcolumn.cx = 150;
mc_list1.InsertColumn(3, &lvcolumn);
LV_ITEM lvitem;
int iActualItem,iIcon;
iIcon = 0;
//////////////////////////////////////////////////////////
char t1[255];
char t2[255];
char t3[255];
char t4[255];
FILE *stream;
char tempstr[255];
if( (stream = fopen("popuser.ctl", "rt" )) != NULL )
{
while (!feof(stream))
{
fgets(tempstr,255,stream);
if (!feof(stream))
{
UpdateData(TRUE);
sprintf(t1,"");
sprintf(t2,"");
sprintf(t3,"");
sprintf(t4,"");
int pusrpos = 0;
char seps[] = ";\r\n";
char tempstr2[255];
char *token;
token = strtok( tempstr, seps );
while( token != NULL )
{
sprintf(tempstr2,"%s",token);
if (pusrpos == 0)
{
sprintf(t2,"%s",tempstr2);
}
if (pusrpos == 1)
{
sprintf(t3,"%s",tempstr2);
}
if (pusrpos == 2)
{
sprintf(t1,"%s",tempstr2);
}
if (pusrpos == 3)
{
sprintf(t4,"%s",tempstr2);
}
pusrpos++;
token = strtok( NULL, seps );
}
UINT x = 0;
for (x = 1;x<=strlen(t1)-1;x++) t1[x-1] = t1[x];
for (x = 1;x<=strlen(t2)-1;x++) t2[x-1] = t2[x];
for (x = 1;x<=strlen(t3)-1;x++) t3[x-1] = t3[x];
for (x = 1;x<=strlen(t4)-1;x++) t4[x-1] = t4[x];
t1[strlen(t1)-2] = '\0';
t2[strlen(t2)-2] = '\0';
t3[strlen(t3)-2] = '\0';
t4[strlen(t4)-2] = '\0';
lvitem.mask = LVIF_TEXT | LVIF_IMAGE;
lvitem.iItem = 0;
lvitem.iSubItem = 0;
lvitem.iImage = iIcon;
lvitem.pszText = t2;
iActualItem = mc_list1.InsertItem(&lvitem);
lvitem.mask = LVIF_TEXT;
lvitem.iItem = iActualItem;
lvitem.iSubItem = 1;
lvitem.pszText = t3;
mc_list1.SetItem(&lvitem);
lvitem.iSubItem = 2;
lvitem.pszText = t1;
mc_list1.SetItem(&lvitem);
lvitem.iSubItem = 3;
lvitem.pszText = t4;
mc_list1.SetItem(&lvitem);
UpdateData(FALSE);
}
}
fclose(stream);
}
else
{
MessageBox("Could not open popuser.ctl!");
}
UpdateData(FALSE);
return TRUE; // return TRUE unless you set the focus to a control
// EXCEPTION: OCX Property Pages should return FALSE
}
void D_Pop3::OnAdd()
{
char tempstr[255];
char tempstr1[255];
LV_ITEM lvitem;
int iActualItem,iIcon;
iIcon = 0;
UpdateData(TRUE);
if (m_username == "")
{
MessageBox("You must enter a username!");
return;
}
if (m_password == "")
{
MessageBox("You must enter a password!");
return;
}
lvitem.mask = LVIF_TEXT | LVIF_IMAGE;
lvitem.iItem = 0;
lvitem.iSubItem = 0;
lvitem.iImage = iIcon;
sprintf(tempstr,"%s",m_username);
lvitem.pszText = tempstr;
iActualItem = mc_list1.InsertItem(&lvitem);
lvitem.mask = LVIF_TEXT;
lvitem.iItem = iActualItem;
lvitem.iSubItem = 1;
sprintf(tempstr,"%s",m_password);
sprintf(tempstr1,"%s",CreatePassword(tempstr));
lvitem.pszText = tempstr1;
mc_list1.SetItem(&lvitem);
lvitem.iSubItem = 2;
sprintf(tempstr,"%s",m_flags);
lvitem.pszText = tempstr;
mc_list1.SetItem(&lvitem);
lvitem.iSubItem = 3;
sprintf(tempstr,"%s",m_comment);
lvitem.pszText = tempstr;
mc_list1.SetItem(&lvitem);
UpdateData(FALSE);
}
void D_Pop3::OnClickList1(NMHDR* pNMHDR, LRESULT* pResult)
{
UpdateData(TRUE);
m_flags = mc_list1.GetItemText(mc_list1.GetNextItem(-1,LVNI_SELECTED),2);
m_username = mc_list1.GetItemText(mc_list1.GetNextItem(-1,LVNI_SELECTED),0);
m_password = "";
m_comment = mc_list1.GetItemText(mc_list1.GetNextItem(-1,LVNI_SELECTED),3);
UpdateData(FALSE);
*pResult = 0;
}
void D_Pop3::OnItemchangingList1(NMHDR* pNMHDR, LRESULT* pResult)
{
NM_LISTVIEW* pNMListView = (NM_LISTVIEW*)pNMHDR;
UpdateData(TRUE);
m_flags= mc_list1.GetItemText(mc_list1.GetNextItem(-1,LVNI_SELECTED),2);
m_username = mc_list1.GetItemText(mc_list1.GetNextItem(-1,LVNI_SELECTED),0);
m_password = "";
m_comment = mc_list1.GetItemText(mc_list1.GetNextItem(-1,LVNI_SELECTED),3);
UpdateData(FALSE);
*pResult = 0;
}
void D_Pop3::OnItemchangedList1(NMHDR* pNMHDR, LRESULT* pResult)
{
NM_LISTVIEW* pNMListView = (NM_LISTVIEW*)pNMHDR;
UpdateData(TRUE);
m_flags= mc_list1.GetItemText(mc_list1.GetNextItem(-1,LVNI_SELECTED),2);
m_username = mc_list1.GetItemText(mc_list1.GetNextItem(-1,LVNI_SELECTED),0);
m_password = "";
m_comment = mc_list1.GetItemText(mc_list1.GetNextItem(-1,LVNI_SELECTED),3);
UpdateData(FALSE);
*pResult = 0;
}
void D_Pop3::OnOk()
{
UpdateData(TRUE);
FILE *stream;
if( (stream = fopen("popuser.ctl", "wt" )) != NULL )
{
CString flags;
CString username;
CString passw;
CString comment;
char pathx[255];
for (int i = 0;i<=mc_list1.GetItemCount()-1;i++)
{
username = mc_list1.GetItemText( i, 0);
passw = mc_list1.GetItemText( i, 1);
flags = mc_list1.GetItemText( i, 2 );
comment = mc_list1.GetItemText( i, 3 );
sprintf(pathx,"mail\\%s",username);
mkdir(pathx);
fprintf(stream,"\'%s\';\'%s\';\'%s\';\'%s\'\r\n",username,passw,flags,comment);
}
fclose(stream);
}
else
{
MessageBox("Could not save popuser.ctl!");
}
CDialog::OnOK();
}
void D_Pop3::OnButton3()
{
if (mc_list1.GetNextItem(-1,LVNI_SELECTED) == -1) return;
UpdateData(TRUE);
mc_list1.DeleteItem(mc_list1.GetNextItem(-1,LVNI_SELECTED));
}
void D_Pop3::OnButton5()
{
if (mc_list1.GetNextItem(-1,LVNI_SELECTED) == -1) return;
LV_ITEM lvitem;
char nopass[255];
UpdateData(TRUE);
if (m_username == "")
{
MessageBox("You must enter a username!");
return;
}
if (m_password == "")
{
MessageBox("No password entered. leaving the old one");
sprintf(nopass,"%s",mc_list1.GetItemText( mc_list1.GetNextItem(-1,LVNI_SELECTED), 1));
}
char t1[255];
char t2[255];
char t3[255];
char t4[255];
char tempstr1[255];
sprintf(t1,"%s",m_username);
sprintf(t2,"%s",m_password);
sprintf(t3,"%s",m_flags);
sprintf(t4,"%s",m_comment);
lvitem.mask = LVIF_TEXT;
lvitem.iItem = mc_list1.GetNextItem(-1,LVNI_SELECTED);
lvitem.iSubItem = 0;
lvitem.iImage = 0;
lvitem.pszText = t1;
mc_list1.SetItem(&lvitem);
if (strlen(t2) != 0)
{
lvitem.iSubItem = 1;
MessageBox("OK");
sprintf(tempstr1,"%s",CreatePassword(t2));
lvitem.pszText = tempstr1;
mc_list1.SetItem(&lvitem);
}
else
{
lvitem.iSubItem = 1;
lvitem.pszText = nopass;
mc_list1.SetItem(&lvitem);
}
lvitem.iSubItem = 2;
lvitem.pszText = t3;
mc_list1.SetItem(&lvitem);
lvitem.iSubItem = 3;
lvitem.pszText = t4;
mc_list1.SetItem(&lvitem);
m_flags = t3;
m_comment = t4;
m_username = t1;
UpdateData(FALSE);
}
void D_Pop3::OnButton1()
{
MessageBox("Enter one or more flags here:\r\n"
"T\t user has telnet access\r\n"
"O\t Telnet Operator access (requires T)\r\n\tUser can delete and create new users via the telnet interface"
);
}
void D_Pop3::OnAliases()
{
D_Alias dlg;
dlg.DoModal();
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -