www.pudn.com > mailserver-muiter.zip > D_Pop3.cpp
// D_Pop3.cpp : implementation file // #include "stdafx.h" #include "InetServer.h" #include "D_Pop3.h" #include#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(); }