⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 users.cpp

📁 mini http server,可以集成嵌入到程序中,实现简单的web功能
💻 CPP
📖 第 1 页 / 共 3 页
字号:
								{
								SendMessage( hWndMethod, WM_SETTEXT, 0,
									(LPARAM)szBuf );
								if (!strcmp(szBuf,"Ntlm"))
									{
									EnableWindow( hWndUser, FALSE);
									EnableWindow( hWndPassword, FALSE );
									EnableWindow( hWndConfirm, FALSE );
									}
								}
							break;

						default:;
						};
					break;

				case IDC_NEW:
					if ( DialogBox(
						NULL,
						MAKEINTRESOURCE( IDD_NEWREALM ),
						hDlg,
						(DLGPROC)NewRealmDialogProc
						) )
						{ AD_Changed( hDlg ); };
					break;


				case IDC_REMOVE:
					{
					int iSel = SendMessage( hWndRealm, CB_GETCURSEL, 0, 0 );
					if ( iSel==CB_ERR )
						{ break; };

					SendMessage( hWndRealm, WM_GETTEXT, BUF_SIZE, (LPARAM)szBuf );
		
					if ( !Internal_canDeleteRealm( hDlg, szBuf ) )
						{ break; };

					SendMessage( hWndRealm, CB_DELETESTRING, iSel, 0 );
					int iCount = SendMessage( hWndRealm, CB_GETCOUNT, 0, 0);
					if (iSel >= iCount) {
						SendMessage( hWndRealm, CB_SETCURSEL, iCount-1, 0 );
					} else {
						SendMessage( hWndRealm, CB_SETCURSEL, iSel, 0 );
					};
					PIString sSection( "__" );
					sSection.Concatenate( szBuf );
					AD_deleteValue( __pConfig, sSection, "Base64" );
					Internal_clearArrays();
					SendMessage( hWndList, LB_RESETCONTENT, 0, 0 );
					SendMessage( hWndUser, WM_SETTEXT, 0, (LPARAM)"" );
					SendMessage( hWndPassword, WM_SETTEXT, 0, (LPARAM)"" );
					SendMessage( hWndConfirm, WM_SETTEXT, 0, (LPARAM)"" );
					AD_Changed( hDlg );

					/*
					** remove realm from configuration
					*/
					PIString sRealm = szBuf;
					PIString sTmp = "";
					*szBuf = '\0';
					SendMessage( hWndMethod, WM_GETTEXT, BUF_SIZE, (LPARAM)szBuf );
					int iTmp = 0;
					for(;; iTmp++ ) {
						const char *pTmp = AD_lookupValueEx( __pConfig, "Realms", szBuf, iTmp );
						if ( !pTmp ) { break; };
						if (!strcmp(pTmp,sRealm)) { continue; };
						if (sTmp.Len()) sTmp.Concatenate(":");
						sTmp.Concatenate(pTmp);
					};
					AD_deleteValue( __pConfig, "Realms", szBuf );
					if (sTmp.Len()) {
						StringTokenizer tTokens(sTmp,":");
						for(iTmp=0;iTmp<tTokens.NumTokens();iTmp++) {
							AD_addValue(__pConfig,"Realms",szBuf,tTokens.GetToken(iTmp));
						}
					}

					if ( SendMessage( hWndRealm, CB_GETCURSEL, 0, 0 )==CB_ERR )
						{
						SendMessage( hWndRealm, CB_SETCURSEL, (WPARAM)iSel, 0 );
						SendMessage( hWndMethod, WM_SETTEXT, 0, (LPARAM)"" );
						EnableWindow( hWndUser, FALSE );
						EnableWindow( hWndPassword, FALSE );
						EnableWindow( hWndConfirm, FALSE );
						};
					};

					/*
					** update static method text for realm
					*/
					*szBuf = '\0';
					SendMessage( hWndRealm, WM_GETTEXT, BUF_SIZE, (LPARAM)szBuf );
					if ( Internal_findMethod( szBuf )) {
						SendMessage( hWndMethod, WM_SETTEXT, 0, (LPARAM)szBuf );
						if (!strcmp(szBuf,"Ntlm")) {
							EnableWindow( hWndUser, FALSE);
							EnableWindow( hWndPassword, FALSE );
							EnableWindow( hWndConfirm, FALSE );
						}
					}
					break;

				case IDC_ADD:
					{
					int i;
					*szBuf = '\0';
					SendMessage( hWndUser, WM_GETTEXT, BUF_SIZE, (LPARAM)szBuf );
					/*
					** Username cannot contain ':' character
					*/
					for( i=0; i<BUF_SIZE && szBuf[i] && szBuf[i]!=':'; i++ );
					if ( szBuf[i]==':' ) 
						{
						MessageBox( hDlg, "A username may not contain the colon (:) \
character.", "Add User", 
							MB_OK | MB_ICONEXCLAMATION );
						SetFocus( hWndUser );
						SendMessage( hWndUser, EM_SETSEL, 0, -1 );
						break;
						};
					for( i=0; i<BUF_SIZE && szBuf[i] && !isspace( szBuf[i] ); i++ );
					if ( szBuf[i] ) { szBuf[i] = '\0'; };
					PIString sUser( szBuf );
					szBuf[i++] = '\t';
					SendMessage( hWndPassword, WM_GETTEXT, BUF_SIZE-i, (LPARAM)&(szBuf[i]) );
					PIString sPassword( &(szBuf[i]) );
					SendMessage( hWndConfirm, WM_GETTEXT, BUF_SIZE-i, (LPARAM)&(szBuf[i]) );
					PIString sConfirm( &(szBuf[i]) );
					if ( !(sPassword==sConfirm) )
						{
						MessageBox( hDlg, "Passwords do not match", "New User", 
							MB_OK | MB_ICONEXCLAMATION );
						SetFocus( hWndPassword );
						SendMessage( hWndPassword, EM_SETSEL, 0, -1 );
						break;
						};

					/*
					** Compute digest password if appropriate
					*/
					*szBuf = '\0';
					SendMessage( hWndMethod, WM_GETTEXT, BUF_SIZE, (LPARAM)szBuf );
					if (!strcmp(szBuf,"Digest"))
						{
						*szBuf = '\0';
						SendMessage( hWndRealm, WM_GETTEXT, BUF_SIZE, (LPARAM)szBuf );
						sConfirm = sUser;
						sConfirm.Concatenate(':');
						sConfirm.Concatenate(szBuf);
						sConfirm.Concatenate(':');
						sConfirm.Concatenate(sPassword);
						sPassword = "";
						MD5Encode((const char *)sConfirm, sPassword);
						}
					strcpy(szBuf,sUser);
					strcat(szBuf,"\t");
					strcpy(&szBuf[i],sPassword);

					lUsers.Append( (DblList::type)PI_NEW( PIString( sUser ) ) );
					lPasswords.Append( (DblList::type)PI_NEW( PIString ( sPassword ) ) );
					SendMessage( hWndList, LB_ADDSTRING, 0, (LPARAM)szBuf );

					/*
					** Clear edit fields, focus to list
					*/
					SendMessage( hWndUser, WM_SETTEXT, 0, (LPARAM)"" );
					SendMessage( hWndPassword, WM_SETTEXT, 0, (LPARAM)"" );
					SendMessage( hWndConfirm, WM_SETTEXT, 0, (LPARAM)"" );
					Internal_reloadArrays();
					int iIndex = SendMessage( hWndList, LB_FINDSTRINGEXACT, 0,
						(LPARAM)szBuf );
					if ( iIndex!=LB_ERR ) SendMessage( hWndList, LB_SETTOPINDEX, iIndex, 0 );
					SetFocus( hWndList );
					AD_Changed( hDlg );
					};
					break;
	
				case IDC_REPLACE:
					{
					/*
					** Get selected item index 
					*/
					int iCurSel = SendMessage( hWndList, LB_GETCURSEL, 0, 0 );

					/*
					** Get text to add and add it to internal lists only
					*/
					int i;
					*szBuf = '\0';
					SendMessage( hWndUser, WM_GETTEXT, BUF_SIZE, (LPARAM)szBuf );
					/*
					** Username cannot contain ':' character
					*/
					for( i=0; i<BUF_SIZE && szBuf[i] && szBuf[i]!=':'; i++ );
					if ( szBuf[i]==':' ) 
						{
						MessageBox( hDlg, "A username may not contain the colon (:) \
character.", "Add User", 
							MB_OK | MB_ICONEXCLAMATION );
						SetFocus( hWndUser );
						SendMessage( hWndUser, EM_SETSEL, 0, -1 );
						break;
						};
					for( i=0; i<BUF_SIZE && szBuf[i] && !isspace( szBuf[i] ); i++ );
					if ( szBuf[i] ) { szBuf[i] = '\0'; };
					PIString sUser( szBuf );
					szBuf[i++] = '\t';
					SendMessage( hWndPassword, WM_GETTEXT, BUF_SIZE-i, (LPARAM)&(szBuf[i]) );
					PIString sPassword( &(szBuf[i]) );
					SendMessage( hWndConfirm, WM_GETTEXT, BUF_SIZE-i, (LPARAM)&(szBuf[i]) );
					PIString sConfirm( &(szBuf[i]) );
					if ( !(sPassword==sConfirm) )
						{
						MessageBox( hDlg, "Passwords do not match", "New User", 
							MB_OK | MB_ICONEXCLAMATION );
						SetFocus( hWndPassword );
						SendMessage( hWndPassword, EM_SETSEL, 0, -1 );
						break;
						};

					/*
					** Compute digest password if appropriate
					*/
					*szBuf = '\0';
					SendMessage( hWndMethod, WM_GETTEXT, BUF_SIZE, (LPARAM)szBuf );
					if (!strcmp(szBuf,"Digest"))
						{
						*szBuf = '\0';
						SendMessage( hWndRealm, WM_GETTEXT, BUF_SIZE, (LPARAM)szBuf );
						sConfirm = sUser;
						sConfirm.Concatenate(':');
						sConfirm.Concatenate(szBuf);
						sConfirm.Concatenate(':');
						sConfirm.Concatenate(sPassword);
						MD5Encode((const char *)sConfirm, sPassword);
						}
					strcpy(szBuf,sUser);
					strcat(szBuf,"\t");
					strcpy(&szBuf[i],sPassword);

					lUsers.Append( (DblList::type)PI_NEW( PIString( sUser ) ) );
					lPasswords.Append( (DblList::type)PI_NEW( PIString ( sPassword ) ) );

					/*
					** Delete the item from the list and internal lists
					*/
					SendMessage( hWndList, LB_DELETESTRING,	iCurSel, 0 );
					PI_DELETE( (PIString *)lUsers.Detach( iCurSel) );
					PI_DELETE( (PIString *)lPasswords.Detach( iCurSel) );
					
					/*
					** Add new item to listbox
					*/
					SendMessage( hWndList, LB_ADDSTRING, 0, (LPARAM)szBuf );

					/*
					** Clear edit fields, focus to list
					*/
					SendMessage( hWndUser, WM_SETTEXT, 0, (LPARAM)"" );
					SendMessage( hWndPassword, WM_SETTEXT, 0, (LPARAM)"" );
					SendMessage( hWndConfirm, WM_SETTEXT, 0, (LPARAM)"" );
					Internal_reloadArrays();
					int iIndex = SendMessage( hWndList, LB_FINDSTRINGEXACT, 0, (LPARAM)szBuf );
					if ( iIndex!=LB_ERR ) SendMessage( hWndList, LB_SETTOPINDEX, iIndex, 0 );
					SetFocus( hWndList );
					AD_Changed( hDlg );
					};
					break;

				case IDC_DELETE:
					{
					int iCurSel = SendMessage( hWndList, LB_GETCURSEL, 0, 0 );
					SendMessage( hWndList, LB_DELETESTRING,	iCurSel, 0 );
					PI_DELETE( (PIString *)lUsers.Detach( iCurSel) );
					PI_DELETE( (PIString *)lPasswords.Detach( iCurSel) );
			
					/*
					** Clear edit fields, focus to list
					*/
					SendMessage( hWndUser, WM_SETTEXT, 0, (LPARAM)"" );
					SendMessage( hWndPassword, WM_SETTEXT, 0, (LPARAM)"" );
					SendMessage( hWndConfirm, WM_SETTEXT, 0, (LPARAM)"" );
					SetFocus( hWndList );
					AD_Changed( hDlg );
					};
					break;

				case IDC_USER:
					if ( GET_WM_COMMAND_CMD(wParam, lParam)==EN_CHANGE ) {
						*szBuf = '\0';
						SendMessage( hWndUser, WM_GETTEXT, BUF_SIZE, (LPARAM)szBuf ); 
						Internal_updateButtons( wParam, lParam, hWndUser, 
							hWndPassword, szBuf );

						/*
						** If user exist, fill password field, otherwise delete,
						*/
						*szBuf = '\0';
						SendMessage( hWndMethod, WM_GETTEXT, BUF_SIZE,(LPARAM)szBuf );
						int iSel;
						iSel = SendMessage( hWndList, LB_GETCURSEL, 0, 0 );
						if (iSel != LB_ERR && !strcmp(szBuf,"Basic")) {
							SendMessage( hWndPassword, WM_SETTEXT, 0,
								(LPARAM)(const char *)*((PIString *)lPasswords[iSel]) );
							SendMessage( hWndConfirm, WM_SETTEXT, 0,
								(LPARAM)(const char *)*((PIString *)lPasswords[iSel]) );
						} else {
							SendMessage( hWndPassword, WM_SETTEXT, 0, (LPARAM)"" );
							SendMessage( hWndConfirm, WM_SETTEXT, 0, (LPARAM)"" );
						}
					}
					break;

				case IDC_PASSWORD:
				case IDC_CONFIRM:
					if ( GET_WM_COMMAND_CMD(wParam, lParam)==EN_CHANGE ) {
						*szBuf = '\0';
						SendMessage( hWndUser, WM_GETTEXT, BUF_SIZE,(LPARAM)szBuf );
						Internal_updateButtons( wParam, lParam, hWndPassword, 
							hWndUser, szBuf );
					}
					break;

				case IDC_LIST:
					if ( GET_WM_COMMAND_CMD(wParam, lParam)==LBN_SELCHANGE )
						{
						*szBuf = '\0';
						SendMessage( hWndMethod, WM_GETTEXT, BUF_SIZE,(LPARAM)szBuf );
						int iSel = SendMessage( hWndList, LB_GETCURSEL, 0, 0 );
						if (iSel != LB_ERR)
							{
							assert( iSel>=0 && iSel<lUsers.Size() );
							EnableWindow( hWndDelete, TRUE );
							SendMessage( hWndUser, WM_SETTEXT, 0,
								(LPARAM)(const char *)*((PIString *)lUsers[iSel]) );
							 if (!strcmp(szBuf,"Basic"))
								{
								SendMessage( hWndPassword, WM_SETTEXT, 0,
									(LPARAM)(const char *)*((PIString *)lPasswords[iSel]) );
								SendMessage( hWndConfirm, WM_SETTEXT, 0,
									(LPARAM)(const char *)*((PIString *)lPasswords[iSel]) );
								};
							};
						};
					break;

				default:;		
				}
			break;

		case WM_NOTIFY:
			switch( ((NMHDR *)lParam)->code )
				{
				case PSN_QUERYCANCEL:
					return AD_cancel( hDlg );

				case PSN_KILLACTIVE:
					/*
					** Save values
					*/
					*szBuf = '\0';
					SendMessage( hWndRealm, WM_GETTEXT, BUF_SIZE, (LPARAM)szBuf );
					Internal_saveItems( szBuf );
					SetWindowLong( hDlg, DWL_MSGRESULT, FALSE );
					break;

				default:
					return (FALSE);
				};
			break;

		default:
			return (FALSE);
		};

	return (TRUE);
}

/*____________________________________________________________________________*\
 *
 Description:
	Definitions and global values
\*____________________________________________________________________________*/
DLGPROC fnUsers = (DLGPROC)DialogProc;

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -