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 |