Mercurial > mercurial > hgweb_rsearcher.cgi
comparison src/auth.cpp @ 3:db4813125eb8
many changes.
| author | pyon@macmini |
|---|---|
| date | Thu, 11 Oct 2018 22:11:09 +0900 |
| parents | eaa27e4ed5be |
| children | 06342fc544e4 |
comparison
equal
deleted
inserted
replaced
| 2:7fe3417cefc8 | 3:db4813125eb8 |
|---|---|
| 1 // Filename : auth.cpp | 1 // Filename : auth.cpp |
| 2 // Last Change: 2018-10-01 Mon 23:15:27. | 2 // Last Change: 2018-10-11 木 16:47:30. |
| 3 // | 3 // |
| 4 | 4 |
| 5 #include "auth.h" | 5 #include "auth.h" |
| 6 | 6 |
| 7 AuthDialog::AuthDialog( wxWindow* parent, wxWindowID id, const wxString& title, const wxPoint& pos, const wxSize& size, long style ) | 7 AuthDialog::AuthDialog( wxWindow* parent, wxWindowID id, const wxString& title, const wxPoint& pos, const wxSize& size, long style ) |
| 8 : wxDialog( parent, id, title, pos, size, style ) | 8 : wxDialog( parent, id, title, pos, size, style ) |
| 9 { | 9 { |
| 10 CreateControls(); | 10 CreateControls(); |
| 11 LoadUserID(); | |
| 12 } | 11 } |
| 13 | 12 |
| 14 AuthDialog::~AuthDialog() | 13 AuthDialog::~AuthDialog() |
| 15 { | 14 { |
| 16 } | 15 } |
| 17 | 16 |
| 18 // Event Table | 17 // Event Table |
| 19 BEGIN_EVENT_TABLE( AuthDialog, wxDialog ) | 18 BEGIN_EVENT_TABLE( AuthDialog, wxDialog ) |
| 19 EVT_SHOW( AuthDialog::OnShow ) | |
| 20 EVT_TEXT( ID_UID, AuthDialog::OnCheckUserID ) | 20 EVT_TEXT( ID_UID, AuthDialog::OnCheckUserID ) |
| 21 EVT_TEXT( ID_PW, AuthDialog::OnCheckPassword ) | 21 EVT_TEXT( ID_PW, AuthDialog::OnCheckPassword ) |
| 22 EVT_TEXT_ENTER( ID_UID, AuthDialog::OnEnter ) | 22 EVT_TEXT_ENTER( ID_UID, AuthDialog::OnEnter ) |
| 23 EVT_TEXT_ENTER( ID_PW, AuthDialog::OnEnter ) | 23 EVT_TEXT_ENTER( ID_PW, AuthDialog::OnEnter ) |
| 24 EVT_BUTTON( wxID_OK, AuthDialog::OnEnter ) | |
| 24 END_EVENT_TABLE() | 25 END_EVENT_TABLE() |
| 25 | 26 |
| 26 // Event Handler | 27 // Event Handler |
| 28 void AuthDialog::OnShow( wxShowEvent& WXUNUSED(event) ) | |
| 29 { | |
| 30 if ( m_load ) return; | |
| 31 wxArrayString args; // http get ( auth.db, hhs.db, index.db ) | |
| 32 args.Add( wxT( "client.exe" ) ); | |
| 33 args.Add( wxT( "-u" ) ); | |
| 34 args.Add( m_server ); | |
| 35 | |
| 36 wxExecute( wxJoin( args, ' ', '\\' ), wxEXEC_SYNC|wxEXEC_HIDE_CONSOLE ); | |
| 37 | |
| 38 wxTextFile file; | |
| 39 file.Open( wxT( "auth.db" ) ); | |
| 40 for ( int i = 0; i < file.GetLineCount(); i++ ) { | |
| 41 wxArrayString line = wxSplit( file.GetLine( i ), ' ', '\\' ); | |
| 42 m_users.Add( line[ 0 ] ); | |
| 43 } | |
| 44 file.Close(); | |
| 45 | |
| 46 m_load = true; | |
| 47 } | |
| 48 | |
| 27 void AuthDialog::OnCheckUserID( wxCommandEvent& WXUNUSED(event) ) | 49 void AuthDialog::OnCheckUserID( wxCommandEvent& WXUNUSED(event) ) |
| 28 { | 50 { |
| 29 wxString id = m_textCtrlId->GetValue(); | 51 wxString id = m_textCtrlId->GetValue(); |
| 30 if ( 1 ) { | 52 for ( int i = 0; i < m_users.GetCount(); i++ ) { |
| 31 m_staticTextIdmsg->SetLabel( "ok" ); | 53 if ( id.IsSameAs( m_users[ i ], true ) ) { |
| 32 m_staticTextPwmsg->SetLabel( wxT("← input") ); | 54 m_staticTextIdmsg->SetLabel( wxT( "ok" ) ); |
| 33 } | 55 m_staticTextPwmsg->SetLabel( wxT( "← input" ) ); |
| 34 else { | 56 m_textCtrlPw->SetValue( wxEmptyString ); |
| 35 m_staticTextIdmsg->SetLabel( wxT("← input") ); | 57 m_textCtrlPw->SetFocus(); |
| 36 m_staticTextIdmsg->SetLabel( wxEmptyString ); | 58 return; |
| 37 } | 59 } else { |
| 60 m_staticTextIdmsg->SetLabel( wxT( "← input" ) ); | |
| 61 m_staticTextPwmsg->SetLabel( wxEmptyString ); | |
| 62 } | |
| 63 } | |
| 38 } | 64 } |
| 39 | 65 |
| 40 void AuthDialog::OnCheckPassword( wxCommandEvent& WXUNUSED(event) ) | 66 void AuthDialog::OnCheckPassword( wxCommandEvent& WXUNUSED(event) ) |
| 41 { | 67 { |
| 42 wxString pw = m_textCtrlPw->GetValue(); | 68 wxString pw = m_textCtrlPw->GetValue(); |
| 43 if ( pw.Len() < 4 ) { | 69 if ( pw.Len() < 4 ) { |
| 44 m_staticTextPwmsg->SetLabel( wxT("← too short") ); | 70 m_staticTextPwmsg->SetLabel( wxT( "← too short" ) ); |
| 45 } | 71 } |
| 46 else { | 72 else { |
| 47 m_staticTextPwmsg->SetLabel( wxEmptyString ); | 73 m_staticTextPwmsg->SetLabel( wxEmptyString ); |
| 48 } | 74 } |
| 49 } | 75 } |
| 50 | 76 |
| 51 void AuthDialog::OnEnter( wxCommandEvent& WXUNUSED(event) ) | 77 void AuthDialog::OnEnter( wxCommandEvent& WXUNUSED(event) ) |
| 52 { | 78 { |
| 53 Close(); | 79 m_staticTextPwmsg->SetLabel( wxEmptyString ); |
| 80 if ( IsValidUser() ) { | |
| 81 m_user = m_textCtrlId->GetValue(); | |
| 82 EndModal( wxID_OK ); | |
| 83 } | |
| 84 m_staticTextPwmsg->SetLabel( wxT( "Bad User/Password !!" ) ); | |
| 85 m_textCtrlPw->SelectAll(); | |
| 86 return; | |
| 54 } | 87 } |
| 55 | 88 |
| 56 // Functions | 89 // Functions |
| 57 void AuthDialog::LoadUserID( void ) | |
| 58 { | |
| 59 // ファイルから UserID を読み込む | |
| 60 } | |
| 61 | |
| 62 void AuthDialog::InDevelop( bool flag ) | |
| 63 { | |
| 64 if ( !flag ) return; | |
| 65 SetTitle( "now on test" ); | |
| 66 m_textCtrlId->SetValue( "test" ); | |
| 67 m_textCtrlPw->SetValue( "test" ); | |
| 68 m_textCtrlPw->SetFocus(); | |
| 69 } | |
| 70 | |
| 71 void AuthDialog::CreateControls( void ) | 90 void AuthDialog::CreateControls( void ) |
| 72 { | 91 { |
| 73 this->SetIcon( wxIcon( wxT( "sample" ) ) ); | 92 this->SetIcon( wxIcon( wxT( "sample" ) ) ); |
| 74 this->SetSizeHints( wxDefaultSize, wxDefaultSize ); | 93 this->SetSizeHints( wxDefaultSize, wxDefaultSize ); |
| 75 this->SetBackgroundColour( wxColour( 0, 150, 230 ) ); | 94 this->SetBackgroundColour( wxColour( 0, 150, 230 ) ); |
| 76 | 95 |
| 77 wxGridSizer* gSizer = new wxGridSizer( 0, 3, 0, 0 ); | 96 wxGridSizer* gSizer = new wxGridSizer( 0, 3, 0, 0 ); |
| 78 | 97 |
| 79 // user id | 98 // user id |
| 80 m_staticTextId = new wxStaticText( this, wxID_ANY, wxT("User ID"), wxDefaultPosition, wxDefaultSize, 0 ); | 99 m_staticTextId = new wxStaticText( this, wxID_ANY, wxT( "User ID" ), wxDefaultPosition, wxDefaultSize, 0 ); |
| 81 gSizer->Add( m_staticTextId, 0, wxALL|wxALIGN_CENTER_VERTICAL|wxALIGN_RIGHT, 5 ); | 100 gSizer->Add( m_staticTextId, 0, wxALL|wxALIGN_CENTER_VERTICAL|wxALIGN_RIGHT, 5 ); |
| 82 | 101 |
| 83 m_textCtrlId = new wxTextCtrl( this, ID_UID, wxEmptyString, wxDefaultPosition, wxDefaultSize, wxTE_PROCESS_ENTER ); | 102 m_textCtrlId = new wxTextCtrl( this, ID_UID, wxEmptyString, wxDefaultPosition, wxDefaultSize, wxTE_PROCESS_ENTER ); |
| 84 gSizer->Add( m_textCtrlId, 0, wxALL|wxALIGN_CENTER_VERTICAL, 5 ); | 103 gSizer->Add( m_textCtrlId, 0, wxALL|wxALIGN_CENTER_VERTICAL, 5 ); |
| 85 | 104 |
| 86 m_staticTextIdmsg = new wxStaticText( this, wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, 0 ); | 105 m_staticTextIdmsg = new wxStaticText( this, wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, 0 ); |
| 87 m_staticTextIdmsg->SetForegroundColour( wxColour( 250, 0, 0 ) ); | 106 m_staticTextIdmsg->SetForegroundColour( wxColour( 250, 0, 0 ) ); |
| 88 gSizer->Add( m_staticTextIdmsg, 0, wxALL|wxALIGN_CENTER_VERTICAL, 5 ); | 107 gSizer->Add( m_staticTextIdmsg, 0, wxALL|wxALIGN_CENTER_VERTICAL, 5 ); |
| 89 | 108 |
| 90 // password | 109 // password |
| 91 m_staticTextPw = new wxStaticText( this, wxID_ANY, wxT("Password"), wxDefaultPosition, wxDefaultSize, 0 ); | 110 m_staticTextPw = new wxStaticText( this, wxID_ANY, wxT( "Password" ), wxDefaultPosition, wxDefaultSize, 0 ); |
| 92 gSizer->Add( m_staticTextPw, 0, wxALL|wxALIGN_CENTER_VERTICAL|wxALIGN_RIGHT, 5 ); | 111 gSizer->Add( m_staticTextPw, 0, wxALL|wxALIGN_CENTER_VERTICAL|wxALIGN_RIGHT, 5 ); |
| 93 | 112 |
| 94 m_textCtrlPw = new wxTextCtrl( this, ID_PW, wxEmptyString, wxDefaultPosition, wxDefaultSize, wxTE_PASSWORD|wxTE_PROCESS_ENTER ); | 113 m_textCtrlPw = new wxTextCtrl( this, ID_PW, wxEmptyString, wxDefaultPosition, wxDefaultSize, wxTE_PASSWORD|wxTE_PROCESS_ENTER ); |
| 95 gSizer->Add( m_textCtrlPw, 0, wxALL|wxALIGN_CENTER_VERTICAL, 5 ); | 114 gSizer->Add( m_textCtrlPw, 0, wxALL|wxALIGN_CENTER_VERTICAL, 5 ); |
| 96 | 115 |
| 97 m_staticTextPwmsg = new wxStaticText( this, wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, 0 ); | 116 m_staticTextPwmsg = new wxStaticText( this, wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, 0 ); |
| 98 m_staticTextPwmsg->SetForegroundColour( wxColour( 250, 0, 0 ) ); | 117 m_staticTextPwmsg->SetForegroundColour( wxColour( 250, 0, 0 ) ); |
| 99 gSizer->Add( m_staticTextPwmsg, 0, wxALL|wxALIGN_CENTER_VERTICAL, 5 ); | 118 gSizer->Add( m_staticTextPwmsg, 0, wxALL|wxALIGN_CENTER_VERTICAL, 5 ); |
| 119 | |
| 120 // buttons | |
| 121 gSizer->AddSpacer( 1 ); | |
| 122 | |
| 123 m_buttonLogin = new wxButton( this, wxID_OK, wxT( "Login" ), wxDefaultPosition, wxDefaultSize, 0 ); | |
| 124 gSizer->Add( m_buttonLogin, 0, wxALL|wxALIGN_CENTER_VERTICAL, 5 ); | |
| 125 | |
| 126 m_buttonCancel = new wxButton( this, wxID_CANCEL, wxT( "Cancel" ), wxDefaultPosition, wxDefaultSize, 0 ); | |
| 127 gSizer->Add( m_buttonCancel, 0, wxALL|wxALIGN_CENTER_VERTICAL, 5 ); | |
| 128 | |
| 100 | 129 |
| 101 this->SetSizer( gSizer ); | 130 this->SetSizer( gSizer ); |
| 102 this->Layout(); | 131 this->Layout(); |
| 103 gSizer->Fit( this ); | 132 gSizer->Fit( this ); |
| 104 | 133 |
| 105 this->Centre( wxBOTH ); | 134 this->Centre( wxBOTH ); |
| 135 m_textCtrlId->SetFocus(); | |
| 106 } | 136 } |
| 107 | 137 |
| 138 bool AuthDialog::IsValidUser( void ) | |
| 139 { | |
| 140 wxString id = m_textCtrlId->GetValue(); | |
| 141 wxString pw = m_textCtrlPw->GetValue(); | |
| 142 | |
| 143 wxArrayString args; | |
| 144 args.Add( wxT( "crypto.exe" ) ); | |
| 145 args.Add( wxT( "-c" ) ); | |
| 146 args.Add( wxT( "auth.db" ) ); | |
| 147 args.Add( wxT( "-s" ) ); | |
| 148 args.Add( wxT( "@#!;" ) ); // salt | |
| 149 args.Add( id ); | |
| 150 args.Add( pw ); | |
| 151 | |
| 152 int ret = wxExecute( wxJoin( args, ' ', '\\' ), wxEXEC_SYNC|wxEXEC_HIDE_CONSOLE ); | |
| 153 if ( ret == 39 ) return true; | |
| 154 | |
| 155 return false; | |
| 156 } | |
| 157 | |
| 158 void AuthDialog::InDevelop( bool flag ) | |
| 159 { | |
| 160 if ( !flag ) return; | |
| 161 m_textCtrlId->SetValue( "test" ); | |
| 162 m_textCtrlPw->SetValue( "test" ); | |
| 163 m_textCtrlPw->SetFocus(); | |
| 164 } | |
| 165 |
