SecurityPage.cpp 14 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427
  1. /****************************************************************/
  2. /* */
  3. /* SecurityPage.cpp */
  4. /* */
  5. /* Implementation of the CSecurityPage class. */
  6. /* This class is a part of the FTP Server. */
  7. /* */
  8. /* Programmed by LYFZ van der Meer */
  9. /* Copyright LYFZ Software Solutions 2002 */
  10. /* http://www.LYFZvandermeer.nl */
  11. /* */
  12. /* Last updated: 10 july 2002 */
  13. /* */
  14. /****************************************************************/
  15. #include "stdafx.h"
  16. #include "DBServer.h"
  17. #include "theDBServer.h"
  18. #include "SecurityPage.h"
  19. //#include "AddIPDlg.h"
  20. #include "DBServerDlg.h"
  21. extern CtheDBServer theServer;
  22. #include "InputCode.h"
  23. #include "DlgShowNetShareInfo.h"
  24. #include "CreateSmallPhoto.h"
  25. //#include "PhotoDelMgr.h"
  26. //#include "PhotoBackupMgr.h"
  27. #include "DlgSetIni.h"
  28. #ifdef _DEBUG
  29. #define new DEBUG_NEW
  30. #undef THIS_FILE
  31. static char THIS_FILE[] = __FILE__;
  32. #endif
  33. CSecurityPage::CSecurityPage(CWnd* pParent /*=NULL*/)
  34. : CDialogResize(CSecurityPage::IDD, pParent)
  35. {
  36. //{{AFX_DATA_INIT(CSecurityPage)
  37. m_bBlockAll = FALSE;
  38. //}}AFX_DATA_INIT
  39. }
  40. void CSecurityPage::DoDataExchange(CDataExchange* pDX)
  41. {
  42. CDialogResize::DoDataExchange(pDX);
  43. //{{AFX_DATA_MAP(CSecurityPage)
  44. DDX_Control(pDX, IDC_BLOCKEDLIST, m_BlockedList);
  45. DDX_Control(pDX, IDC_NONBLOCKEDLIST, m_NonBlockedList);
  46. DDX_Check(pDX, IDC_BLOCK_ALL, m_bBlockAll);
  47. //}}AFX_DATA_MAP
  48. DDX_Control(pDX, IDC_PROGRESS1, m_ctrl_process);
  49. }
  50. BEGIN_MESSAGE_MAP(CSecurityPage, CDialogResize)
  51. //{{AFX_MSG_MAP(CSecurityPage)
  52. ON_WM_DESTROY()
  53. ON_BN_CLICKED(IDC_BUTTON1, OnButton1)
  54. ON_BN_CLICKED(IDC_BUTTON4, OnButton4)
  55. ON_BN_CLICKED(IDC_BUTTON5, OnButton5)
  56. ON_BN_CLICKED(IDC_VIEW, OnView)
  57. ON_BN_CLICKED(IDC_BUTTON6, OnButton6)
  58. ON_BN_CLICKED(IDC_BUTTON7, OnButton7)
  59. //}}AFX_MSG_MAP
  60. ON_BN_CLICKED(IDC_VIEW2, &CSecurityPage::OnBnClickedView2)
  61. ON_BN_CLICKED(IDC_CREATEPHOTO_BTN, &CSecurityPage::OnBnClickedCreatePhoto)
  62. ON_BN_CLICKED(IDC_BUTTON8, &CSecurityPage::OnBnClickedButton8)
  63. ON_BN_CLICKED(BTN_SYSCONFIG, &CSecurityPage::OnBnClickedSysconfig)
  64. ON_BN_CLICKED(CHECK_TECHSUPPORT, &CSecurityPage::OnBnClickedTechsupport)
  65. ON_BN_CLICKED(CHECK_ENABLECLOUND, &CSecurityPage::OnBnClickedEnableclound)
  66. ON_BN_CLICKED(CHECK_EXPORTBARCODE, &CSecurityPage::OnBnClickedExportbarcode)
  67. ON_BN_CLICKED(CHECK_CHECKDB, &CSecurityPage::OnBnClickedCheckdb)
  68. ON_EN_CHANGE(ET_CHECKDBTIMEOUT, &CSecurityPage::OnEnChangeCheckdbtimeout)
  69. END_MESSAGE_MAP()
  70. BEGIN_DLGRESIZE_MAP(CSecurityPage)
  71. DLGRESIZE_CONTROL(IDC_BLOCKEDLIST, DLSZ_SIZE_X)
  72. DLGRESIZE_CONTROL(IDC_NONBLOCKEDLIST, DLSZ_SIZE_X)
  73. END_DLGRESIZE_MAP()
  74. /********************************************************************/
  75. /* */
  76. /* Function name : OnInitDialog */
  77. /* Description : Initialize dialog */
  78. /* */
  79. /********************************************************************/
  80. BOOL CSecurityPage::OnInitDialog()
  81. {
  82. CDialogResize::OnInitDialog();
  83. if(g_bReg)GetDlgItem(IDC_VIEW)->EnableWindow(0);
  84. #ifdef CHILD_VERSION
  85. GetDlgItem(IDC_BUTTON6)->ShowWindow(SW_HIDE);
  86. #endif
  87. InitResizing(FALSE, FALSE, WS_CLIPCHILDREN);
  88. m_bBlockAll = AfxGetApp()->GetProfileInt("Settings", "BlockAll", 0);
  89. GetDlgItem(IDC_NONBLOCKEDLIST)->EnableWindow(m_bBlockAll);
  90. GetDlgItem(IDC_ADD_NONBLOCK)->EnableWindow(m_bBlockAll);
  91. GetDlgItem(IDC_EDIT_NONBLOCK)->EnableWindow(m_bBlockAll);
  92. GetDlgItem(IDC_REMOVE_NONBLOCK)->EnableWindow(m_bBlockAll);
  93. GetDlgItem(IDC_BLOCKEDLIST)->EnableWindow(!m_bBlockAll);
  94. GetDlgItem(IDC_ADD_BLOCK)->EnableWindow(!m_bBlockAll);
  95. GetDlgItem(IDC_EDIT_BLOCK)->EnableWindow(!m_bBlockAll);
  96. GetDlgItem(IDC_REMOVE_BLOCK)->EnableWindow(!m_bBlockAll);
  97. GetDlgItem(IDC_STATIC1)->EnableWindow(!m_bBlockAll);
  98. GetDlgItem(IDC_Restart_Btn)->EnableWindow(FALSE);
  99. UpdateData(FALSE);
  100. CStringArray strArray;
  101. theServer.m_SecurityManager.GetBlockedList(strArray);
  102. for (int i=0; i < strArray.GetSize(); i++)
  103. {
  104. m_BlockedList.AddString(strArray[i]);
  105. }
  106. theServer.m_SecurityManager.GetNonBlockedList(strArray);
  107. for (int j=0; j < strArray.GetSize(); j++)
  108. {
  109. m_NonBlockedList.AddString(strArray[j]);
  110. }
  111. // get list of all ip addresses in use by this system (only show first two...)
  112. char szHostName[128];
  113. HOSTENT *lpHost=NULL;
  114. struct sockaddr_in sock;
  115. gethostname(szHostName, sizeof(szHostName));
  116. lpHost = gethostbyname(szHostName);
  117. if (lpHost != NULL)
  118. {
  119. for(int i=0; lpHost->h_addr_list[i] != NULL ;i++)
  120. {
  121. memcpy(&(sock.sin_addr), lpHost->h_addr_list[i], lpHost->h_length);
  122. if (i == 0)
  123. {
  124. SetDlgItemText(IDC_IPADDRESS1, inet_ntoa(sock.sin_addr));
  125. }
  126. else
  127. if (i == 1)
  128. {
  129. SetDlgItemText(IDC_IPADDRESS2, inet_ntoa(sock.sin_addr));
  130. }
  131. }
  132. }
  133. CDatabase *pdb = NULL;
  134. ODBCConnGuard ConnGuard(pdb, -1, 3000);
  135. if ( pdb )
  136. {
  137. CString str = _T("");
  138. CRecordset rcSt(pdb);
  139. rcSt.Open(CRecordset::forwardOnly, _T("select count(*) as cot from [dbo].[user] where [account] = 'lyfzsupport'"));
  140. rcSt.GetFieldValue(_T("cot"), str);
  141. rcSt.Close();
  142. BOOL bCheckSupport = atoi(str);
  143. ((CButton*)GetDlgItem(CHECK_TECHSUPPORT))->SetCheck(bCheckSupport);
  144. ((CButton*)GetDlgItem(CHECK_ENABLECLOUND))->SetCheck(g_bEnableClound);
  145. ((CButton*)GetDlgItem(CHECK_EXPORTBARCODE))->SetCheck(g_bExportBarCode);
  146. }
  147. if ( g_bCheckdb )
  148. {
  149. ((CButton*)GetDlgItem(CHECK_CHECKDB))->SetCheck(TRUE);
  150. GetDlgItem(ET_CHECKDBTIMEOUT)->EnableWindow(TRUE);
  151. SetDlgItemInt(ET_CHECKDBTIMEOUT, g_dwCheckdbTimeOut);
  152. }
  153. else
  154. {
  155. ((CButton*)GetDlgItem(CHECK_CHECKDB))->SetCheck(FALSE);
  156. GetDlgItem(ET_CHECKDBTIMEOUT)->EnableWindow(FALSE);
  157. SetDlgItemInt(ET_CHECKDBTIMEOUT, 0);
  158. }
  159. // 隐藏进度条;
  160. GetDlgItem(IDC_PROGRESS1)->ShowWindow(FALSE);
  161. GetDlgItem(STATIC_COUNT)->ShowWindow(FALSE);
  162. return TRUE;
  163. }
  164. /********************************************************************/
  165. /* */
  166. /* Function name : OnDestroy */
  167. /* Description : Dialog is about to be destroyed. */
  168. /* */
  169. /********************************************************************/
  170. void CSecurityPage::OnDestroy()
  171. {
  172. UpdateData();
  173. AfxGetApp()->WriteProfileInt("Settings", "BlockAll", m_bBlockAll);
  174. CDialogResize::OnDestroy();
  175. }
  176. BOOL g_bConvertHisAll=0;
  177. extern CDBServerDlg *g_pMainWnd;
  178. void CSecurityPage::OnButton1()
  179. {
  180. // TODO: Add your control notification handler code here
  181. if(AfxMessageBox("温馨提示:此操作可能需要1-N小时, 应该在晚间无人操作软件时进行, 继续吗?", MB_YESNO|MB_ICONSTOP)!=IDYES)return;
  182. g_bConvertHisAll=1;
  183. g_pMainWnd->CheckHistoryData();
  184. }
  185. void CSecurityPage::OnButton4()
  186. {
  187. // TODO: Add your control notification handler code here
  188. CDatabase *pdb = NULL;
  189. ODBCConnGuard ConnGuard(pdb, -1, 3000);
  190. g_pMainWnd->MyExecuteSQL(pdb, "delete from singleincomemoney where id in(select id from singleincome where sale2type='' or sale2type is null)");
  191. g_pMainWnd->MyExecuteSQL(pdb, "delete from [singleincomemoney] where [paytype]='' or [paytype] is null");
  192. AfxMessageBox("命令已执行");
  193. }
  194. void CSecurityPage::OnButton5()
  195. {
  196. // TODO: Add your control notification handler code here
  197. CDatabase *pdb = NULL;
  198. ODBCConnGuard ConnGuard(pdb, -1, 3000);
  199. g_pMainWnd->MyExecuteSQL(pdb, "update dindanjd set bookingdate=date where bookingdate is null");
  200. g_pMainWnd->MyExecuteSQL(pdb, "update dindanjd set bookingdate=(select time2 from dindan where dindanjd.id=dindan.id) where bookingdate is null");
  201. g_pMainWnd->MyExecuteSQL(pdb, "update dindanjd set bookingdate=(select time2 from dindan where dindanjd.id=dindan.id) where bookingdate='' ");
  202. AfxMessageBox("命令已执行");
  203. }
  204. BOOL CSecurityPage::PreTranslateMessage(MSG* pMsg)
  205. {
  206. // TODO: Add your specialized code here and/or call the base class
  207. if(pMsg->message==WM_KEYDOWN)
  208. {
  209. }
  210. return CDialogResize::PreTranslateMessage(pMsg);
  211. }
  212. void CSecurityPage::OnView()
  213. {
  214. // TODO: Add your control notification handler code here
  215. InputCode dlg;
  216. dlg.DoModal ();
  217. }
  218. void CSecurityPage::OnButton6()
  219. {
  220. // TODO: Add your control notification handler code here
  221. g_pMainWnd->RestoreHQ();
  222. }
  223. //insert into client(id,name1,name2) select id,name1,name2 FROM dindan where id not in(select [id] from [db].[dbo].[client])
  224. void CSecurityPage::OnButton7()
  225. {
  226. // TODO: Add your control notification handler code here
  227. g_pMainWnd->ManagePhoto();
  228. }
  229. void CSecurityPage::OnBnClickedView2()
  230. {
  231. // TODO: 在此添加控件通知处理程序代码
  232. CDlgShowNetShareInfo dlg;
  233. dlg.DoModal();
  234. }
  235. //生成小图按扭
  236. void CSecurityPage::OnBnClickedCreatePhoto()
  237. {
  238. if(CreateSmallPhoto::GetInstance()->IsCreating())
  239. {
  240. MessageBox(_T("生成小图数量较多请稍后再试"));
  241. return;
  242. }
  243. GetDlgItem(IDC_PROGRESS1)->ShowWindow(TRUE);
  244. GetDlgItem(STATIC_COUNT)->ShowWindow(TRUE);
  245. ((CButton*)GetDlgItem(IDC_CREATEPHOTO_BTN))->EnableWindow(FALSE);
  246. CreateSmallPhoto::GetInstance()->StartThread(m_ctrl_process, GetDlgItem(STATIC_COUNT));
  247. ((CButton*)GetDlgItem(IDC_CREATEPHOTO_BTN))->EnableWindow(TRUE);
  248. }
  249. //管理删除相片
  250. void CSecurityPage::OnBnClickedButton8()
  251. {
  252. /*
  253. // TODO: 在此添加控件通知处理程序代码
  254. CPhotoDelMgr dlg;
  255. TCHAR szConnect[MAX_PATH] = {0};
  256. if (g_dwDBServerPort)
  257. {
  258. _stprintf_s(szConnect, _T("driver={SQL Server};Server=%s,%d;database=%s;uid=%s;pwd=%s"),
  259. g_szDBSource, g_dwDBServerPort, g_szDBName, g_szDBAccount, g_szDBPassWord);
  260. }
  261. else
  262. {
  263. _stprintf_s(szConnect, _T("driver={SQL Server};Server=%s;database=%s;uid=%s;pwd=%s"),
  264. g_szDBSource, g_szDBName, g_szDBAccount, g_szDBPassWord);
  265. }
  266. if(!dlg.OpenDb(szConnect))
  267. MessageBox(_T("读取数据失败!"));
  268. dlg.DoModal();
  269. */
  270. }
  271. void CSecurityPage::OnBnClickedSysconfig() // 系统设置;
  272. {
  273. CDlgSetIni dlg;
  274. dlg.DoModal();
  275. }
  276. void CSecurityPage::OnBnClickedTechsupport() // 启用技术支持账号;
  277. {
  278. BOOL bCheckTechSupport = FALSE;
  279. bCheckTechSupport = ((CButton*)(GetDlgItem(CHECK_TECHSUPPORT)))->GetCheck();
  280. CTime ct = CTime::GetCurrentTime();
  281. CString strSQL = _T("");
  282. CDatabase *pdb = NULL;
  283. ODBCConnGuard ConnGuard(pdb, -1, 3000);
  284. if ( pdb == NULL )
  285. return;
  286. if ( bCheckTechSupport == TRUE )
  287. {// 启用账号;
  288. strSQL = _T("INSERT [user] ([account],[name],[psw],[rights],[rights2],[discount],[discount2]) VALUES "
  289. "( N'lyfzsupport',N'技术支持',N'918d07f6473be88fd1a59b9bb24b3c7d',N'111111111111111111111111111111111111111111111111111111111111111111',N'*门市流程;1;开单;拍照;修片;选片;精修;设计;刻盘;相片冲印;发片/取件;数码安排;*财务管理;1;订单收款;散客消费;现金支出;其它收入;提成比例;计件提成;工资管理;员工奖罚;*统计查询;1;日财务表;月财务表;年财务表;年财务图表;订单图表;成本核算;工资报表;员工业绩;员工资料;员工奖惩;客户区域;* 短信管理 ;1;短信群发;短信发送;流程短信;员工短信;发送记录;短信设置;*会员管理;1;金卡会员;现金子卡;金卡图表;积分短信;蓝钻会员;转介绍返现;转介绍图表;积分设置;*礼服管理;1;礼服录入;礼服查看;礼服出租;撞期预警;礼服图片;*库存管理;1;入库单;出库单;库存查询;商品图表;固定资产管理;*客户管理;1;订单客户;老客户;意向客户;客户流失;客户来源;*来电精灵;1;客户来电;拨出电话;未接来电;*员工考勤;1;考勤记录;月统计;时间设置;排班设置;*客户服务;1;满意度;满意度汇总;*微信公众号;1;公众号设置;模板消息设置;推送记录;',N'0.0',N'0.0')");
  290. pdb->ExecuteSQL(strSQL);
  291. strSQL.Format(_T("INSERT [log] ([date],[datetime],[content]) VALUES ( '%s', '%s', '%s')"),
  292. ct.Format(_T("%Y-%m-%d")),
  293. ct.Format(_T("%Y-%m-%d %H:%M:%S")), _T("开启技术支持账号!") );
  294. pdb->ExecuteSQL(strSQL);
  295. }
  296. else
  297. {// 删除账号;
  298. strSQL = _T("delete from [user] where [account] = 'lyfzsupport' ");
  299. pdb->ExecuteSQL(strSQL);
  300. strSQL.Format(_T("INSERT [log] ([date],[datetime],[content]) VALUES ( '%s', '%s', '%s')"),
  301. ct.Format(_T("%Y-%m-%d")),
  302. ct.Format(_T("%Y-%m-%d %H:%M:%S")), _T("关闭技术支持账号!") );
  303. pdb->ExecuteSQL(strSQL);
  304. }
  305. }
  306. void CSecurityPage::OnBnClickedEnableclound()
  307. {
  308. UpdateData();
  309. g_bEnableClound = ((CButton*)(GetDlgItem(CHECK_ENABLECLOUND)))->GetCheck();
  310. TCHAR szFile[MAX_PATH] = {0};
  311. _stprintf_s(szFile, _T("%s\\ServiceInfo.ini"), g_ModulePath);
  312. WritePrivateProfileString(_T("SystemInfo"), _T("EnableClound"), g_bEnableClound ? _T("1") : _T("0"), szFile);
  313. }
  314. void CSecurityPage::OnBnClickedExportbarcode()
  315. {
  316. UpdateData();
  317. g_bExportBarCode = ((CButton*)(GetDlgItem(CHECK_EXPORTBARCODE)))->GetCheck();
  318. TCHAR szFile[MAX_PATH] = {0};
  319. _stprintf_s(szFile, _T("%s\\ServiceInfo.ini"), g_ModulePath);
  320. WritePrivateProfileString(_T("SystemInfo"), _T("ExportBarCode"), g_bExportBarCode ? _T("1") : _T("0"), szFile);
  321. }
  322. void CSecurityPage::OnBnClickedCheckdb()
  323. {
  324. // TODO: 在此添加控件通知处理程序代码
  325. UpdateData();
  326. g_bCheckdb = ((CButton*)GetDlgItem(CHECK_CHECKDB))->GetCheck();
  327. TCHAR szFile[MAX_PATH] = {0};
  328. _stprintf_s(szFile, _T("%s\\ServiceInfo.ini"), g_ModulePath);
  329. if ( g_bCheckdb )
  330. {
  331. GetDlgItem(ET_CHECKDBTIMEOUT)->EnableWindow(TRUE);
  332. SetDlgItemInt(ET_CHECKDBTIMEOUT,30);
  333. WritePrivateProfileString(_T("SystemInfo"), _T("CheckdbTimeOut"), _T("30"), szFile);
  334. HANDLE hThead = CreateThread(NULL, 0, CheckdbThread, NULL, 0, NULL);
  335. if ( hThead )
  336. CloseHandle(hThead);
  337. }
  338. else
  339. {
  340. g_bIsCatalogDamage = FALSE;
  341. GetDlgItem(ET_CHECKDBTIMEOUT)->EnableWindow(FALSE);
  342. SetDlgItemInt(ET_CHECKDBTIMEOUT,0);
  343. WritePrivateProfileString(_T("SystemInfo"), _T("CheckdbTimeOut"), _T("0"), szFile);
  344. }
  345. WritePrivateProfileString(_T("SystemInfo"), _T("Checkdb"), g_bCheckdb ? _T("1") : _T("0"), szFile);
  346. }
  347. void CSecurityPage::OnEnChangeCheckdbtimeout()
  348. {
  349. // TODO: 如果该控件是 RICHEDIT 控件,它将不
  350. // 发送此通知,除非重写 CDialogResize::OnInitDialog()
  351. // 函数并调用 CRichEditCtrl().SetEventMask(),
  352. // 同时将 ENM_CHANGE 标志“或”运算到掩码中。
  353. g_dwCheckdbTimeOut = GetDlgItemInt(ET_CHECKDBTIMEOUT);
  354. g_dwCheckdbTimeOut = g_dwCheckdbTimeOut ? g_dwCheckdbTimeOut : 1;
  355. TCHAR szFile[MAX_PATH] = {0};
  356. _stprintf_s(szFile, _T("%s\\ServiceInfo.ini"), g_ModulePath);
  357. TCHAR szCheckTimeout[10] = {0};
  358. _itoa_s(g_dwCheckdbTimeOut, szCheckTimeout, 10);
  359. WritePrivateProfileString(_T("SystemInfo"), _T("CheckdbTimeOut"), szCheckTimeout, szFile);
  360. #if 0 // 不在这里执行, 要在备份前执行;
  361. HANDLE hThead = CreateThread(NULL, 0, CheckdbThread, NULL, 0, NULL);
  362. if ( hThead )
  363. CloseHandle(hThead);
  364. #endif
  365. // TODO: 在此添加控件通知处理程序代码
  366. }