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