Mercurial > mercurial > hgweb_rsearcher.cgi
diff src/auth.cpp @ 3:db4813125eb8
many changes.
author | pyon@macmini |
---|---|
date | Thu, 11 Oct 2018 22:11:09 +0900 |
parents | eaa27e4ed5be |
children | 06342fc544e4 |
line wrap: on
line diff
--- a/src/auth.cpp Tue Oct 02 21:20:05 2018 +0900 +++ b/src/auth.cpp Thu Oct 11 22:11:09 2018 +0900 @@ -1,5 +1,5 @@ // Filename : auth.cpp -// Last Change: 2018-10-01 Mon 23:15:27. +// Last Change: 2018-10-11 木 16:47:30. // #include "auth.h" @@ -8,7 +8,6 @@ : wxDialog( parent, id, title, pos, size, style ) { CreateControls(); - LoadUserID(); } AuthDialog::~AuthDialog() @@ -17,31 +16,58 @@ // Event Table BEGIN_EVENT_TABLE( AuthDialog, wxDialog ) + EVT_SHOW( AuthDialog::OnShow ) EVT_TEXT( ID_UID, AuthDialog::OnCheckUserID ) EVT_TEXT( ID_PW, AuthDialog::OnCheckPassword ) EVT_TEXT_ENTER( ID_UID, AuthDialog::OnEnter ) EVT_TEXT_ENTER( ID_PW, AuthDialog::OnEnter ) + EVT_BUTTON( wxID_OK, AuthDialog::OnEnter ) END_EVENT_TABLE() // Event Handler +void AuthDialog::OnShow( wxShowEvent& WXUNUSED(event) ) +{ + if ( m_load ) return; + wxArrayString args; // http get ( auth.db, hhs.db, index.db ) + args.Add( wxT( "client.exe" ) ); + args.Add( wxT( "-u" ) ); + args.Add( m_server ); + + wxExecute( wxJoin( args, ' ', '\\' ), wxEXEC_SYNC|wxEXEC_HIDE_CONSOLE ); + + wxTextFile file; + file.Open( wxT( "auth.db" ) ); + for ( int i = 0; i < file.GetLineCount(); i++ ) { + wxArrayString line = wxSplit( file.GetLine( i ), ' ', '\\' ); + m_users.Add( line[ 0 ] ); + } + file.Close(); + + m_load = true; +} + void AuthDialog::OnCheckUserID( wxCommandEvent& WXUNUSED(event) ) { wxString id = m_textCtrlId->GetValue(); - if ( 1 ) { - m_staticTextIdmsg->SetLabel( "ok" ); - m_staticTextPwmsg->SetLabel( wxT("← input") ); - } - else { - m_staticTextIdmsg->SetLabel( wxT("← input") ); - m_staticTextIdmsg->SetLabel( wxEmptyString ); - } + for ( int i = 0; i < m_users.GetCount(); i++ ) { + if ( id.IsSameAs( m_users[ i ], true ) ) { + m_staticTextIdmsg->SetLabel( wxT( "ok" ) ); + m_staticTextPwmsg->SetLabel( wxT( "← input" ) ); + m_textCtrlPw->SetValue( wxEmptyString ); + m_textCtrlPw->SetFocus(); + return; + } else { + m_staticTextIdmsg->SetLabel( wxT( "← input" ) ); + m_staticTextPwmsg->SetLabel( wxEmptyString ); + } + } } void AuthDialog::OnCheckPassword( wxCommandEvent& WXUNUSED(event) ) { wxString pw = m_textCtrlPw->GetValue(); if ( pw.Len() < 4 ) { - m_staticTextPwmsg->SetLabel( wxT("← too short") ); + m_staticTextPwmsg->SetLabel( wxT( "← too short" ) ); } else { m_staticTextPwmsg->SetLabel( wxEmptyString ); @@ -50,24 +76,17 @@ void AuthDialog::OnEnter( wxCommandEvent& WXUNUSED(event) ) { - Close(); + m_staticTextPwmsg->SetLabel( wxEmptyString ); + if ( IsValidUser() ) { + m_user = m_textCtrlId->GetValue(); + EndModal( wxID_OK ); + } + m_staticTextPwmsg->SetLabel( wxT( "Bad User/Password !!" ) ); + m_textCtrlPw->SelectAll(); + return; } // Functions -void AuthDialog::LoadUserID( void ) -{ - // ファイルから UserID を読み込む -} - -void AuthDialog::InDevelop( bool flag ) -{ - if ( !flag ) return; - SetTitle( "now on test" ); - m_textCtrlId->SetValue( "test" ); - m_textCtrlPw->SetValue( "test" ); - m_textCtrlPw->SetFocus(); -} - void AuthDialog::CreateControls( void ) { this->SetIcon( wxIcon( wxT( "sample" ) ) ); @@ -77,7 +96,7 @@ wxGridSizer* gSizer = new wxGridSizer( 0, 3, 0, 0 ); // user id - m_staticTextId = new wxStaticText( this, wxID_ANY, wxT("User ID"), wxDefaultPosition, wxDefaultSize, 0 ); + m_staticTextId = new wxStaticText( this, wxID_ANY, wxT( "User ID" ), wxDefaultPosition, wxDefaultSize, 0 ); gSizer->Add( m_staticTextId, 0, wxALL|wxALIGN_CENTER_VERTICAL|wxALIGN_RIGHT, 5 ); m_textCtrlId = new wxTextCtrl( this, ID_UID, wxEmptyString, wxDefaultPosition, wxDefaultSize, wxTE_PROCESS_ENTER ); @@ -88,7 +107,7 @@ gSizer->Add( m_staticTextIdmsg, 0, wxALL|wxALIGN_CENTER_VERTICAL, 5 ); // password - m_staticTextPw = new wxStaticText( this, wxID_ANY, wxT("Password"), wxDefaultPosition, wxDefaultSize, 0 ); + m_staticTextPw = new wxStaticText( this, wxID_ANY, wxT( "Password" ), wxDefaultPosition, wxDefaultSize, 0 ); gSizer->Add( m_staticTextPw, 0, wxALL|wxALIGN_CENTER_VERTICAL|wxALIGN_RIGHT, 5 ); m_textCtrlPw = new wxTextCtrl( this, ID_PW, wxEmptyString, wxDefaultPosition, wxDefaultSize, wxTE_PASSWORD|wxTE_PROCESS_ENTER ); @@ -97,11 +116,50 @@ m_staticTextPwmsg = new wxStaticText( this, wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, 0 ); m_staticTextPwmsg->SetForegroundColour( wxColour( 250, 0, 0 ) ); gSizer->Add( m_staticTextPwmsg, 0, wxALL|wxALIGN_CENTER_VERTICAL, 5 ); + + // buttons + gSizer->AddSpacer( 1 ); + + m_buttonLogin = new wxButton( this, wxID_OK, wxT( "Login" ), wxDefaultPosition, wxDefaultSize, 0 ); + gSizer->Add( m_buttonLogin, 0, wxALL|wxALIGN_CENTER_VERTICAL, 5 ); + + m_buttonCancel = new wxButton( this, wxID_CANCEL, wxT( "Cancel" ), wxDefaultPosition, wxDefaultSize, 0 ); + gSizer->Add( m_buttonCancel, 0, wxALL|wxALIGN_CENTER_VERTICAL, 5 ); + this->SetSizer( gSizer ); this->Layout(); gSizer->Fit( this ); this->Centre( wxBOTH ); + m_textCtrlId->SetFocus(); } +bool AuthDialog::IsValidUser( void ) +{ + wxString id = m_textCtrlId->GetValue(); + wxString pw = m_textCtrlPw->GetValue(); + + wxArrayString args; + args.Add( wxT( "crypto.exe" ) ); + args.Add( wxT( "-c" ) ); + args.Add( wxT( "auth.db" ) ); + args.Add( wxT( "-s" ) ); + args.Add( wxT( "@#!;" ) ); // salt + args.Add( id ); + args.Add( pw ); + + int ret = wxExecute( wxJoin( args, ' ', '\\' ), wxEXEC_SYNC|wxEXEC_HIDE_CONSOLE ); + if ( ret == 39 ) return true; + + return false; +} + +void AuthDialog::InDevelop( bool flag ) +{ + if ( !flag ) return; + m_textCtrlId->SetValue( "test" ); + m_textCtrlPw->SetValue( "test" ); + m_textCtrlPw->SetFocus(); +} +