annotate src/auth.cpp @ 3:db4813125eb8

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