www.pudn.com > MailSoftware.rar > 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(); 
}