comparison src/main.cpp @ 15:c262e17de9b1

db download skip-mode.
author pyon@macmini
date Sat, 08 Jun 2019 15:50:59 +0900
parents f5ffc34f045a
children
comparison
equal deleted inserted replaced
14:c1dc1fcee7fe 15:c262e17de9b1
1 // Filename : main.cpp 1 // Filename : main.cpp
2 // Last Change: 2018-11-14 水 12:54:16. 2 // Last Change: 2019-05-29 水 15:04:09.
3 // 3 //
4 4
5 #include <wx/socket.h> 5 #include <wx/socket.h>
6 #include <wx/sstream.h> 6 #include <wx/sstream.h>
7 #include <wx/protocol/http.h> 7 #include <wx/protocol/http.h>
42 42
43 wxExecute( wxJoin( args, ' ', '\\' ) ); 43 wxExecute( wxJoin( args, ' ', '\\' ) );
44 return false; 44 return false;
45 } 45 }
46 46
47 // Validation Host
48 bool valid_host = false;
49 if ( !m_unlock_key.IsEmpty() ) {
50 wxIPV4address addr;
51 addr.Hostname( wxGetFullHostName() );
52
53 wxString key = wxT( "re:searcher" ) + addr.IPAddress();
54 wxArrayString args;
55 args.Add( wxT( "crypto.exe" ) );
56 args.Add( wxT( "-a" ) );
57 args.Add( key );
58
59 wxArrayString output, errors;
60 wxExecute( wxJoin( args, ' ', '\\' ), output, errors );
61
62 if ( m_unlock_key.IsSameAs( output[0] ) ) valid_host = true;
63 }
64
47 wxImage::AddHandler( new wxJPEGHandler ); 65 wxImage::AddHandler( new wxJPEGHandler );
48 wxImage::AddHandler( new wxPNGHandler ); 66 wxImage::AddHandler( new wxPNGHandler );
49 wxFileSystem::AddHandler( new wxZipFSHandler ); 67 wxFileSystem::AddHandler( new wxZipFSHandler );
50 68
51 // Main Window 69 // Main Window
52 MainFrame *mainframe = new MainFrame( NULL, ID_MAIN, wxEmptyString, wxPoint( rect.x, rect.y ), rect.GetSize(), wxDEFAULT_FRAME_STYLE ); 70 MainFrame *mainframe = new MainFrame( NULL, ID_MAIN, wxEmptyString, wxPoint( rect.x, rect.y ), rect.GetSize(), wxDEFAULT_FRAME_STYLE );
53 mainframe->SetServer( m_serveraddr, m_serverport ); 71 mainframe->SetServer( m_serveraddr, m_serverport );
54 mainframe->SetDBdir( m_dbdir ); 72 mainframe->SetDBdir( m_dbdir );
55 mainframe->InDevelop( true ); 73 mainframe->InDevelop( true );
56 if ( !mainframe->GetDB( 1, 1, 1 ) ) { 74
75 bool dlhhs = false;
76 if ( valid_host && !m_qdlhhs ) {
77 dlhhs = true;
78 } else {
79 wxMessageDialog dlg( NULL, wxT("download h-data ?"), wxT("Ask"), wxYES_NO );
80 if ( wxID_YES == dlg.ShowModal() ) dlhhs = true;
81 }
82
83 if ( !mainframe->GetDB( true, dlhhs, false ) ) {
57 mainframe->Destroy(); 84 mainframe->Destroy();
58 return true; 85 return true;
59 } 86 }
60 87
61 // Splash Screen 88 // Splash Screen
62 SplashScreen( splash ); 89 SplashScreen( m_splash );
63 90
64 // Mode 91 if ( valid_host ) {
65 if ( !unlock_key.IsEmpty() ) { 92 mainframe->SetUser( wxT( "root" ) );
66 wxIPV4address addr; 93 mainframe->SetTitle( wxT( "Re:Searcher - root" ) );
67 addr.Hostname( wxGetFullHostName() ); 94 mainframe->LoadDB( dlhhs );
68 95 mainframe->Show( true );
69 wxString key = wxT( "re:searcher" ) + addr.IPAddress(); 96 mainframe->Raise();
70 wxArrayString args; 97 return true;
71 args.Add( wxT( "crypto.exe" ) );
72 args.Add( wxT( "-a" ) );
73 args.Add( key );
74
75 wxArrayString output, errors;
76 wxExecute( wxJoin( args, ' ', '\\' ), output, errors );
77
78 if ( unlock_key.IsSameAs( output[0] ) ) {
79 mainframe->SetUser( wxT( "root" ) );
80 mainframe->SetTitle( wxT( "Re:Searcher - root" ) );
81 mainframe->LoadDB();
82 mainframe->Show( true );
83 return true;
84 }
85 } 98 }
86 99
87 // User Dialog 100 // User Dialog
88 AuthDialog *authdlg = new AuthDialog( NULL, wxID_ANY, wxT( "Who are you ?" ), wxDefaultPosition, wxDefaultSize, wxCAPTION ); 101 AuthDialog *authdlg = new AuthDialog( NULL, wxID_ANY, wxT( "Who are you ?" ), wxDefaultPosition, wxDefaultSize, wxCAPTION );
89 if ( !authdlg->LoadDB() ) { 102 if ( !authdlg->LoadDB() ) {
111 delete fs; 124 delete fs;
112 } 125 }
113 126
114 mainframe->SetUser( authdlg->GetUser() ); 127 mainframe->SetUser( authdlg->GetUser() );
115 mainframe->SetTitle( wxT( "Re:Searcher - " ) + authdlg->GetUser() ); 128 mainframe->SetTitle( wxT( "Re:Searcher - " ) + authdlg->GetUser() );
116 mainframe->LoadDB(); 129 mainframe->LoadDB( dlhhs );
117 mainframe->Show( true ); 130 mainframe->Show( true );
118 } else { 131 } else {
119 mainframe->Destroy(); 132 mainframe->Destroy();
120 } 133 }
121 authdlg->Destroy(); 134 authdlg->Destroy();
146 config->Read( wxT( "w" ), &rect.width ); 159 config->Read( wxT( "w" ), &rect.width );
147 config->Read( wxT( "h" ), &rect.height ); 160 config->Read( wxT( "h" ), &rect.height );
148 161
149 config->SetPath( wxT( "/DBManage" ) ); 162 config->SetPath( wxT( "/DBManage" ) );
150 config->Read( wxT( "dbdir" ), &m_dbdir ); 163 config->Read( wxT( "dbdir" ), &m_dbdir );
164 config->Read( wxT( "qdlhhs" ), &m_qdlhhs );
151 165
152 config->SetPath( wxT( "/Server" ) ); 166 config->SetPath( wxT( "/Server" ) );
153 config->Read( wxT( "proxy_address" ), &m_serveraddr ); 167 config->Read( wxT( "proxy_address" ), &m_serveraddr );
154 config->Read( wxT( "proxy_port" ), &m_serverport ); 168 config->Read( wxT( "proxy_port" ), &m_serverport );
155 if ( m_serveraddr.IsSameAs( wxEmptyString, false ) ) { 169 if ( m_serveraddr.IsSameAs( wxEmptyString, false ) ) {
160 if ( m_serveraddr.IsSameAs( wxEmptyString, false ) ) { 174 if ( m_serveraddr.IsSameAs( wxEmptyString, false ) ) {
161 m_serveraddr = wxT( "192.168.21.151" ); // nginx 175 m_serveraddr = wxT( "192.168.21.151" ); // nginx
162 m_serverport = 80; 176 m_serverport = 80;
163 } 177 }
164 178
179 config->SetPath( wxT( "/Print" ) );
180 config->Read( wxT( "zoom" ), &pzoom );
181
165 config->SetPath( wxT( "/Misc" ) ); 182 config->SetPath( wxT( "/Misc" ) );
166 config->Read( wxT( "splash" ), &splash ); 183 config->Read( wxT( "splash" ), &m_splash );
167 config->Read( wxT( "unlock_key" ), &unlock_key ); 184 config->Read( wxT( "unlock_key" ), &m_unlock_key );
168 185
169 delete config; 186 delete config;
170 } 187 }
171 188
172 void MyApp::SaveSetting() 189 void MyApp::SaveSetting()
176 config->SetPath( wxT( "/Geometry" ) ); 193 config->SetPath( wxT( "/Geometry" ) );
177 config->Write( wxT( "x" ), rect.x ); 194 config->Write( wxT( "x" ), rect.x );
178 config->Write( wxT( "y" ), rect.y ); 195 config->Write( wxT( "y" ), rect.y );
179 config->Write( wxT( "w" ), rect.width ); 196 config->Write( wxT( "w" ), rect.width );
180 config->Write( wxT( "h" ), rect.height ); 197 config->Write( wxT( "h" ), rect.height );
198
199 config->SetPath( wxT( "/Print" ) );
200 config->Write( wxT( "zoom" ), pzoom );
201
181 delete config; 202 delete config;
182 } 203 }
183 204
184 void MyApp::SplashScreen( int ms ) 205 void MyApp::SplashScreen( int ms )
185 { 206 {
191 wxFSFile* file = fs->OpenFile( archive + wxString::Format( wxT( "#zip:startup%02d.png" ), i ) ); 212 wxFSFile* file = fs->OpenFile( archive + wxString::Format( wxT( "#zip:startup%02d.png" ), i ) );
192 if ( file ) { 213 if ( file ) {
193 wxInputStream* s = file->GetStream(); 214 wxInputStream* s = file->GetStream();
194 wxImage image( *s, wxBITMAP_TYPE_PNG ); 215 wxImage image( *s, wxBITMAP_TYPE_PNG );
195 wxBitmap bmp = wxBitmap( image ); 216 wxBitmap bmp = wxBitmap( image );
196 wxSplashScreen* splash = new wxSplashScreen( bmp, wxSPLASH_CENTRE_ON_SCREEN|wxSPLASH_TIMEOUT, 2000, NULL, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxBORDER_NONE|wxSTAY_ON_TOP ); 217 wxSplashScreen* splashwin = new wxSplashScreen( bmp, wxSPLASH_CENTRE_ON_SCREEN|wxSPLASH_TIMEOUT, 2000, NULL, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxBORDER_NONE|wxSTAY_ON_TOP );
197 delete file; 218 delete file;
198 } 219 }
199 wxMilliSleep( ms ); 220 wxMilliSleep( ms );
200 } 221 }
201 delete fs; 222 delete fs;