bool CGUIPassword::CheckLock(LockType btnType, const std::string& strPassword, int iHeading, bool& bCanceled) { bCanceled = false; if (btnType == LOCK_MODE_EVERYONE || strPassword == "-" || CProfilesManager::Get().GetMasterProfile().getLockMode() == LOCK_MODE_EVERYONE || g_passwordManager.bMasterUser) return true; int iVerifyPasswordResult = -1; std::string strHeading = g_localizeStrings.Get(iHeading); iVerifyPasswordResult = VerifyPassword(btnType, strPassword, strHeading); if (iVerifyPasswordResult == -1) bCanceled = true; return (iVerifyPasswordResult==0); }
bool CGUIPassword::CheckStartUpLock() { // prompt user for mastercode if the mastercode was set b4 or by xml int iVerifyPasswordResult = -1; std::string strHeader = g_localizeStrings.Get(20075); if (iMasterLockRetriesLeft == -1) iMasterLockRetriesLeft = CSettings::Get().GetInt("masterlock.maxretries"); if (g_passwordManager.iMasterLockRetriesLeft == 0) g_passwordManager.iMasterLockRetriesLeft = 1; std::string strPassword = CProfilesManager::Get().GetMasterProfile().getLockCode(); if (CProfilesManager::Get().GetMasterProfile().getLockMode() == 0) iVerifyPasswordResult = 0; else { for (int i=1; i <= g_passwordManager.iMasterLockRetriesLeft; i++) { iVerifyPasswordResult = VerifyPassword(CProfilesManager::Get().GetMasterProfile().getLockMode(), strPassword, strHeader); if (iVerifyPasswordResult != 0 ) { std::string strLabel1; strLabel1 = g_localizeStrings.Get(12343); int iLeft = g_passwordManager.iMasterLockRetriesLeft-i; std::string strLabel = StringUtils::Format("%i %s", iLeft, strLabel1.c_str()); // PopUp OK and Display: MasterLock mode has changed but no no Mastercode has been set! CGUIDialogOK::ShowAndGetInput(20076, 12367, 12368, strLabel); } else i=g_passwordManager.iMasterLockRetriesLeft; } } if (iVerifyPasswordResult == 0) { g_passwordManager.iMasterLockRetriesLeft = CSettings::Get().GetInt("masterlock.maxretries"); return true; // OK The MasterCode Accepted! XBMC Can Run! } else { CApplicationMessenger::Get().Shutdown(); // Turn off the box return false; } }
void CCreatePGSAccount::OnOK() { if(!VerifyAccountFormat()){ m_ecAccountID.SetFocus(); m_ecAccountID.SetSel(0,-1); return; } if(!VerifyPasswordFormat()){ m_ecPassword.SetFocus(); m_ecPassword.SetSel(0,-1); return; } if(!VerifyPassword()){ m_ecVerifyPassword.SetFocus(); m_ecVerifyPassword.SetSel(0,-1); return; } CDialog::OnOK(); }
bool CGUIPassword::IsMasterLockUnlocked(bool bPromptUser, bool& bCanceled) { bCanceled = false; if (iMasterLockRetriesLeft == -1) iMasterLockRetriesLeft = CSettings::Get().GetInt("masterlock.maxretries"); if ((LOCK_MODE_EVERYONE < CProfilesManager::Get().GetMasterProfile().getLockMode() && !bMasterUser) && !bPromptUser) // not unlocked, but calling code doesn't want to prompt user return false; if (g_passwordManager.bMasterUser || CProfilesManager::Get().GetMasterProfile().getLockMode() == LOCK_MODE_EVERYONE) return true; if (iMasterLockRetriesLeft == 0) { UpdateMasterLockRetryCount(false); return false; } // no, unlock since we are allowed to prompt int iVerifyPasswordResult = -1; std::string strHeading = g_localizeStrings.Get(20075); std::string strPassword = CProfilesManager::Get().GetMasterProfile().getLockCode(); iVerifyPasswordResult = VerifyPassword(CProfilesManager::Get().GetMasterProfile().getLockMode(), strPassword, strHeading); if (1 == iVerifyPasswordResult) UpdateMasterLockRetryCount(false); if (0 != iVerifyPasswordResult) { bCanceled = true; return false; } // user successfully entered mastercode UpdateMasterLockRetryCount(true); return true; }
bool CGUIPassword::IsItemUnlocked(CFileItem* pItem, const std::string &strType) { // \brief Tests if the user is allowed to access the share folder // \param pItem The share folder item to access // \param strType The type of share being accessed, e.g. "music", "video", etc. See CSettings::UpdateSources() // \return If access is granted, returns \e true if (CProfilesManager::Get().GetMasterProfile().getLockMode() == LOCK_MODE_EVERYONE) return true; while (pItem->m_iHasLock > 1) { std::string strLockCode = pItem->m_strLockCode; std::string strLabel = pItem->GetLabel(); int iResult = 0; // init to user succeeded state, doing this to optimize switch statement below char buffer[33]; // holds 32 places plus sign character if(g_passwordManager.bMasterUser)// Check if we are the MasterUser! { iResult = 0; } else { if (0 != CSettings::Get().GetInt("masterlock.maxretries") && pItem->m_iBadPwdCount >= CSettings::Get().GetInt("masterlock.maxretries")) { // user previously exhausted all retries, show access denied error CGUIDialogOK::ShowAndGetInput(12345, 12346, 0, 0); return false; } // show the appropriate lock dialog std::string strHeading = ""; if (pItem->m_bIsFolder) strHeading = g_localizeStrings.Get(12325); else strHeading = g_localizeStrings.Get(12348); iResult = VerifyPassword(pItem->m_iLockMode, strLockCode, strHeading); } switch (iResult) { case -1: { // user canceled out return false; break; } case 0: { // password entry succeeded pItem->m_iBadPwdCount = 0; pItem->m_iHasLock = 1; g_passwordManager.LockSource(strType,strLabel,false); sprintf(buffer,"%i",pItem->m_iBadPwdCount); CMediaSourceSettings::Get().UpdateSource(strType, strLabel, "badpwdcount", buffer); CMediaSourceSettings::Get().Save(); break; } case 1: { // password entry failed if (0 != CSettings::Get().GetInt("masterlock.maxretries")) pItem->m_iBadPwdCount++; sprintf(buffer,"%i",pItem->m_iBadPwdCount); CMediaSourceSettings::Get().UpdateSource(strType, strLabel, "badpwdcount", buffer); CMediaSourceSettings::Get().Save(); break; } default: { // this should never happen, but if it does, do nothing return false; break; } } } return true; }
void KeyInfoDispose_Debug() { //按键检测处理 System.Key.Value = KeyScan() ; System.Key.Keylong = &Keylong ; if(!System.Key.Value) { // 处理休眠操作 } else { // GR_DBG_PRINTF("keylong is %d OK it is %d\n\n",*System.Key.Keylong,Keylong); // 处理唤醒操作 System.Key.NoKeyTime = 0 ; if(System.Dsp.Mode == SLEEP_MODE) { CheckMode(); } //处理按键操作 switch(System.Key.Value) { case 1 :// 顶白光 { Top_W_On(); PhotoMvLeft() ; }break ; case 2 :// check: 850 940 770 闪烁 长按:进入PCCAM { #ifdef ONE_SENSOR Top_IR940_On_test(); PhotoMvUp() ; #else if(*System.Key.Keylong) { switch(System.Dsp.Mode ) { case PCCAM_MODE : CheckMode(); break; default: PccamMode(); break; } } else { if(System.Dsp.Mode == CHECK_MODE||PCCAM_MODE) { switch(System.Led.Statu) { case TOP_IR850_ON : Top_IR940_On();break ; case TOP_IR940_ON : Right_IR770_On();break ; default :Top_IR850_On(); break ; } } } #endif }break ; case 3 ://check: 紫外-激光 长按:进入校正 { if(*System.Key.Keylong)// 进入校正功能 { if(System.Dsp.Mode == CHECK_MODE) { PriorExposure(); } } else { if((System.Dsp.Mode ==PCCAM_MODE)||(System.Dsp.Mode ==CHECK_MODE)) { Double_UV_On(); } PhotoMvRight() ; } }break ; case 4 ://check : sensor1 sensor2 sensor3 ,长按:608 { switch(System.Dsp.Mode) { #ifdef ONE_SENSOR case PCCAM_MODE : { if(*System.Key.Keylong) { CheckMode(); } } break ; #endif case VIEW_MODE : case CHECK_MODE : { if(*System.Key.Keylong) { PccamMode(); } else { // switch(System.Led.Statu) // { // case C608_PWR_ON: CheckMode();break; // default:C608_On(); break; // } PhotoZoomUp(); } } break ; default :break ; } }break ; case 5 ://check: 左白光 右白光 左红外, 右红外 view:翻页 放大 { switch(System.Dsp.Mode) { case PCCAM_MODE : case CHECK_MODE : { switch(System.Led.Statu) { case LEFT_W_ON : Right_W_On(); break ; case RIGHT_W_ON : Left_IR850_On(); break ; case LEFT_IR850_ON: Right_IR850_On(); break ; default :Left_W_On(); } }break; case VIEW_MODE : { switch(System.Dsp.ViewMode.Zoom) { case X0 : PhotoPrevious(); break; default : PhotoMvLeft() ; } }break; default :break ; } }break ; case 6 ://check: 底白光,底红外 view :右边翻页 { switch(System.Dsp.Mode) { case PCCAM_MODE : case CHECK_MODE : { switch(System.Led.Statu) { case BOT_W_ON : Bot_IR_On(); break ; default :Bot_W_On(); } }break; case VIEW_MODE : { switch(System.Dsp.ViewMode.Zoom) { //case X0 : PhotoNext(); break ; default : PhotoMvDown() ; break ; } }break; default :break ; } }break ; case 7 ://view--check ; { switch(System.Dsp.Mode) { case CHECK_MODE : { VerifyPassword(0x07,&CheckMode,&ViewMode); } break; case VIEW_MODE : { CheckMode(); } break; default :break ; } }break ; case 8 ://check:短按单拍,长按8连拍 ,view 长按删除,短按确认 { switch(System.Dsp.Mode) { case CHECK_MODE : { #ifdef ONE_SENSOR PhotographOne(); #else if(*System.Key.Keylong) { //PhotographOne(); } else { PhotographEight(); } #endif }break; case VIEW_MODE : { if(*System.Key.Keylong) { PhotoDelAll(); } else { } }break; default :break ; } }break ; case 9 ://check: 短按连拍,长按修改密码 // view:自动回放 { switch(System.Dsp.Mode) { case CHECK_MODE : { if(*System.Key.Keylong) { VerifyPassword(0x09,&CheckMode,&ChangePassWord); CheckMode(); } else { PhotographFour(); } }break; case VIEW_MODE : { PhotoAutoView(); // 自动回放 }break; default :break ; } }break ; default : break ; } } }