public PBApp(IResolver moduleLoader, string[] args) { this.args = args == null ? new string[0] : args; clipboardTimer.Elapsed += clipboardTimer_Elapsed; this.moduleLoader = moduleLoader; pbData = moduleLoader.GetInstanceOf <IPBData>(); // pbData.OnProfileUnlock += pbData_OnProfileUnlock; pbData.OnUserLoggedIn += pbData_OnUserLoggedIn; pbData.OnCloseProfile += pbData_OnCloseProfile; currentLanguage = pbData.GetConfigurationValueByAccountAndKey(DefaultProperties.Configuration_DefaultAccount, "last_selected_lang"); if (string.IsNullOrWhiteSpace(currentLanguage)) { currentLanguage = "en"; } sync = moduleLoader.GetInstanceOf <IPBSync>(); sync.OnGetMergePassword(GetMergePassword); webAPI = moduleLoader.GetInstanceOf <IPBWebAPI>(); BrowserMonitor = moduleLoader.GetInstanceOf <IBrowserMonitor>(); updater = moduleLoader.GetInstanceOf <IAppUpdater>(); updater.UpdatedVersionDetected += UpdatedVersionDetected; categories = new Dictionary <string, string>(); resourcePaths = new Dictionary <string, Uri>(); resourcePaths.Add("Fonts", new Uri("/font;component/FontProperty.xaml", UriKind.RelativeOrAbsolute)); resourcePaths.Add("Themes", new Uri("/theme;component/Theme.xaml", UriKind.RelativeOrAbsolute)); resourcePaths.Add("Images", new Uri("/image;component/ImageResource.xaml", UriKind.RelativeOrAbsolute)); resourcePaths.Add("LocalStyles1", new Uri("pack://application:,,,/PBAppUI;component/resources/dictionary/styles/passwordbossresource.xaml", UriKind.RelativeOrAbsolute)); resourcePaths.Add("LocalStyles2", new Uri("pack://application:,,,/PBAppUI;component/resources/dictionary/styles/primarydashboardresource.xaml", UriKind.RelativeOrAbsolute)); resourcePaths.Add("LocalStyles3", new Uri("pack://application:,,,/PBAppUI;component/resources/dictionary/styles/AddControlStyles.xaml", UriKind.RelativeOrAbsolute)); foreach (var uri in resourcePaths.Values) { LoadAndMerge(uri); } SetLanguage(currentLanguage); SystemTray.SetResolver(moduleLoader); sysTray = new SystemTray(); sysTray.InitializeTrayProperties(); SystemTray.OnBeforeShutDownHandler += SystemTray_OnBeforeShutDownHandler; LoginWindow loginWindow = new LoginWindow(moduleLoader); Navigator.NavigationService = loginWindow.MainFrame.NavigationService; if (!pbData.ControllerIsUpToDate()) { pbData_OnInvalidVersion(DBFileType.Controller); } else { pbData.OnInvalidVersion += pbData_OnInvalidVersion; } Application.Current.Dispatcher.UnhandledException += onDispatcherUnhandledException; systemIdlePoller = new SystemIdlePoller(); }
void sync_OnSyncFinished(bool status) { try { IPBSync sync = resolver.GetInstanceOf <IPBSync>(); sync.OnSyncFinished -= sync_OnSyncFinished; var browserImporters = resolver.GetAllInstancesOf <BrowserImportStrategyBase>(); var results = browserImporters.Select(s => s.Import()); var importedSitesNum = results.Sum(r => r.Imported); var alredyImportedSitesNum = 0; List <SecureItem> userSites = pbData.GetSecureItemsByItemType(PasswordBoss.Helpers.DefaultProperties.SecurityItemType_PasswordVault).Where(x => x.Site.IsRecommendedSite == false).ToList(); if (userSites.Count == 0) { alredyImportedSitesNum = 0; //we didn't have anything previous. alredyImportedSitesNum can also mean overlapping between browsers } else { alredyImportedSitesNum = results.Sum(r => r.AlreadyImported); } var inAppAnalyitics = resolver.GetInstanceOf <IInAppAnalytics>(); if (inAppAnalyitics != null) { ImportPasswordsItem item = new ImportPasswordsItem(importedSitesNum, ImportPasswordsTrigger.Installer, null); var analytics = inAppAnalyitics.Get <Events.ImportPasswords, ImportPasswordsItem>(); analytics.Log(item); } pbData.ChangePrivateSetting("setup_wizard_imported_passwords_number", importedSitesNum.ToString()); pbData.ChangePrivateSetting("setup_wizard_already_passwords_number", alredyImportedSitesNum.ToString()); AddEmailToPI(); logger.Debug("sync images"); SyncImagesHelper syncImages = new SyncImagesHelper(pbData, webApi); //syncImages.SyncImagesAsync(); syncImages.SyncImages(); logger.Debug("Finished"); } finally { evDone.Set(); } }
public MainWindowAdvertising(IResolver resolver) { InitializeComponent(); this.resolver = resolver; pbData = resolver.GetInstanceOf <IPBData>(); sync = resolver.GetInstanceOf <IPBSync>(); if (sync != null) { sync.OnSyncFinished += sync_OnSyncSuccess; } this.Loaded += MainWindowAdvertising_Loaded; SetChildren(); }
public LoginWindowAdvertising(IResolver resolver) { InitializeComponent(); this.resolver = resolver; pbData = resolver.GetInstanceOf <IPBData>(); sync = resolver.GetInstanceOf <IPBSync>(); if (sync != null) { sync.OnSyncFinished += sync_OnSyncSuccess; } if (pbData != null) { pbData.OnUserLoggedIn += pbData_OnUserLoggedIn; } SetChildren(); }
public ShareCenterViewModel(IResolver resolver) { this.resolver = resolver; this.pbData = resolver.GetInstanceOf <IPBData>(); this.pbSync = resolver.GetInstanceOf <IPBSync>(); shareCommon = new ShareCommon(resolver); InitializeCommands(); SelectedIndexTabControl = 0; //vedo - async System.Threading.Tasks.Task.Factory.StartNew(() => { categoryList = pbData.GetFoldersBySecureItemType(); }); SortSharedWithMeAscendingVisibility = true; SortSharedWithMeDescendingVisibility = false; SortSharedByMeAscendingVisibility = true; SortSharedByMeDescendingVisibility = false; }
private void PerformInitialSync() { try { //TODO register device //if not default device goto verification dynamic deviceRegistrationResponse = webApi.RegisterDevice( new WEBApiJSON.DeviceRegistrationRequest() { /*application_language = "en-us", device_language = "en-us",*/ installation = pbData.InstallationUUID, nickname = Environment.MachineName, software_version = Assembly.GetExecutingAssembly().GetName().Version.ToString() }, pbData.ActiveUser); if (deviceRegistrationResponse == null) { MessageBox.Show("Error in device registration"); return; } else { if (deviceRegistrationResponse.error != null) { MessageBox.Show(deviceRegistrationResponse.error.message.ToString()); if (deviceRegistrationResponse.error.code.ToString() == "403") { //todo send verification post dynamic verificationRequestResponse = webApi.RequestVerificationCode(pbData.ActiveUser); var verificationScreen = resolver.GetInstanceOf <VerificationRequired>(); Navigator.NavigationService.Navigate(verificationScreen); } return; } } pbData.DeviceUUID = deviceRegistrationResponse.devices[0].uuid.ToString(); Guid g; if (!Guid.TryParse(pbData.DeviceUUID, out g)) { MessageBox.Show("Invalid device ID"); return; } logger.Debug("Adding device"); if (pbData.AddDevice( new DTO.Device() { InstallationId = pbData.InstallationUUID, UUID = pbData.DeviceUUID, Nickname = System.Windows.Forms.SystemInformation.ComputerName }) == null) { MessageBox.Show("Failed to save device data"); return; } evDone.Reset(); IPBSync sync = resolver.GetInstanceOf <IPBSync>(); //sync.OnGetMergePassword(GetMergePassword); sync.OnSyncFinished += sync_OnSyncFinished; Task.Factory.StartNew(() => { try { if (!sync.Sync(3, ProgressInfo)) { logger.Error("Initial sync failed"); } else { if (masterPasswordDiffers) { //Treba reci da se pass razlikuje lokalno i na cloud-u i pitati da li zeli promijeniti lokalni pass na onaj sa cloud-a //Ako kaze da onda treba uraditi pbData.ChangeMasterPassword(newPass) masterPasswordDiffers = true; } } } catch (Exception ex) { logger.Error(ex.Message); } finally { evSyncDone.Set(); } }); evSyncDone.WaitOne(); evDone.WaitOne(); } catch (Exception ex) { logger.Error(ex.Message); } }
public MainWindow([Import(typeof(IResolver))] IResolver resolver)//[ImportMany] IEnumerable<IUIComponent> components, [Import(typeof(IPBData))]IPBData pbData) { Application.Current.MainWindow = this; application = (PBApp)Application.Current; //masterDialog = new MasterPwdBox(); this.resolver = resolver; this.components = resolver.GetAllInstancesOf <IUIComponent>(); if (this.components == null) { this.components = new List <IUIComponent>(); } this.subComponents = resolver.GetAllInstancesOf <IUISubComponent>(); if (this.subComponents == null) { this.subComponents = new List <IUISubComponent>(); } this.dialogs = resolver.GetAllInstancesOf <IDialog>(); if (this.dialogs == null) { this.dialogs = new List <IDialog>(); } this.pbData = resolver.GetInstanceOf <IPBData>(); ServiceLocator.Register <IFolderService>(new FolderService(pbData)); this.webApi = resolver.GetInstanceOf <IPBWebAPI>(); this.accountSettingsUserControl = new AccountSettings.AccountSettings(resolver) { Visibility = System.Windows.Visibility.Collapsed }; this.accountSettingsUserControl.Loaded += accountSettingsUserControl_Loaded; this.searchViewModel = new SearchViewModel(resolver, SecureHolderCollection); searchViewModel.ChangeVisibility += (o, e) => { topGrid.Visibility = searchViewModel.IsOpen ? Visibility.Collapsed : Visibility.Visible; var component = components.FirstOrDefault(x => x.ID == selectedUIComponentID); if (component != null) { component.Selected = !searchViewModel.IsOpen; } }; folderTreeViewModel = new FoldersTreeViewModel(resolver); folderTreeViewModel.SelectedFolder_Changed += (o, e) => { if (selectedUIComponentID != null) { var component = components.FirstOrDefault(x => x.ID == selectedUIComponentID); if (component != null && component.ViewModel is ISecureHolder) { ((ISecureHolder)component.ViewModel).UpdateTreeView(); } } }; folderTreeViewModel.FolderList_Changed += (o, e) => { Reload(); }; folderTreeViewModel.ItemsToFolder_Moved += (o, e) => { if (selectedUIComponentID != null) { foreach (var item in e.Items.GroupBy(x => (x as ISecureItemVM).Type)) { var holder = SecureHolderCollection.FirstOrDefault(x => x.SecureItemType == item.Key); if (holder != null) { holder.MoveSecureItemToFolder(item, e.FolderId); } } } }; foreach (var holder in SecureHolderCollection) { holder.FolderListUpdated += (o, e) => { folderTreeViewModel.UpdateFolderTree(); }; holder.DataUpdated += (o, e) => { searchViewModel.Update(); }; holder.AddSecureItem += (o, e) => { addBtn_Click(null, null); }; } syncImagesHelper = new SyncImagesHelper(pbData, webApi); //this.pbData.OnLoginToProfile(pbData_LoginToProfile); this.pbData.OnProfileLock += ProfileLock; this.pbData.OnUserLoggedIn += pbData_OnUserLoggedIn; Title = this.pbData.ActiveUser; resizer = new WindowResizer(this); InitializeComponent(); LoadMenu(); //LoadDialog(dialogOrder); Closing += OnMainClosing; sync = resolver.GetInstanceOf <IPBSync>(); if (sync != null) { sync.OnSyncFinished += sync_OnSyncFinished; sync.OnSyncDeviceDeleted += sync_OnSyncDeviceDeleted; //sync.OnSyncSuccess += sync_OnSyncSuccess; } var advertControl = new MainWindowAdvertising(resolver); inAppAdvertisingGrid.Children.Add(advertControl); Grid.SetColumn(advertControl, 1); ucMainSearchBox.DataContext = searchViewModel; mainSearchResultPanel.DataContext = searchViewModel; selectFolderControl.DataContext = folderTreeViewModel; this.ResizeMode = System.Windows.ResizeMode.CanMinimize; this.ShowInTaskbar = true; LoadForShowOnStartup(); if (_pbExtSecureBrowserBridge == null) { _pbExtSecureBrowserBridge = resolver.GetInstanceOf <IPBExtSecureBrowserBridge>(); } this.Activated += MainWindow_Activated; SyncAsync(); var test = this.FindName("menuUserControl") as MenuUserControl; this.DataContext = new MainWindowViewModel(); }
/// <summary> /// /// </summary> /// <param name="obj"></param> private void SubmitButtonClick(object obj) { try { evtDone.Reset(); successVerification = false; if (String.IsNullOrWhiteSpace(VerificationText)) { MessageBoxInfoVisibility = true; MessageBoxInfoText = Application.Current.FindResource("CodeVerificationErrorNoCode").ToString(); return; } dynamic deviceRegistrationResponse = webAPI.RegisterDevice(new WEBApiJSON.DeviceRegistrationRequest() { installation = pbData.InstallationUUID, nickname = System.Windows.Forms.SystemInformation.ComputerName, software_version = Assembly.GetAssembly(typeof(PasswordBoss.PBApp)).GetName().Version.ToString(), verification = VerificationText }, email); if (deviceRegistrationResponse == null) { MessageBoxInfoVisibility = true; MessageBoxInfoText = Application.Current.FindResource("CodeVerificationErrorDeviceRegistration").ToString(); return; } else { if (deviceRegistrationResponse.error != null) { VerificationErrorMessage = Application.Current.FindResource("IncorrectVerificationCodeDescription").ToString(); VerificationApiErrorVisibility = true; return; } } pbData.DeviceUUID = deviceRegistrationResponse.devices[0].uuid.ToString(); Guid g; if (!Guid.TryParse(pbData.DeviceUUID, out g)) { MessageBoxInfoVisibility = true; MessageBoxInfoText = "Invalid device ID"; return; } if (!pbData.CreateProfile(email, mastePassword)) { MessageBoxInfoVisibility = true; MessageBoxInfoText = Application.Current.FindResource("ErrorSecureDatabaseCreating").ToString(); } if (pbData.AddDevice( new DTO.Device() { InstallationId = pbData.InstallationUUID, UUID = pbData.DeviceUUID, Nickname = System.Windows.Forms.SystemInformation.ComputerName }) == null) { MessageBoxInfoVisibility = true; MessageBoxInfoText = "Failed to save device data"; return; } // Account created, can delete pre-registrate message history pbData.TryToClearMessageHistory(); IPBSync sync = resolver.GetInstanceOf <IPBSync>(); sync.OnSyncFinished += sync_OnSyncFinished; Task.Factory.StartNew(() => { try { if (!sync.Sync(3, ProgressInfo)) { logger.Error("Initial sync failed"); } else { if (masterPasswordDiffers) { //Treba reci da se pass razlikuje lokalno i na cloud-u i pitati da li zeli promijeniti lokalni pass na onaj sa cloud-a //Ako kaze da onda treba uraditi pbData.ChangeMasterPassword(newPass) masterPasswordDiffers = true; } } } catch (Exception ex) { logger.Error(ex.Message); } finally { evSyncDone.Set(); } }); evSyncDone.WaitOne(); evtDone.WaitOne(); sync.OnSyncFinished -= sync_OnSyncFinished; if (_finishVerification) { ConfirmMasterPasswordViewModel.SetDefaultSettings(pbData); successVerification = true; } } catch (Exception ex) { logger.Debug(ex.ToString()); } }
void sync_OnSyncFinished(bool status) { try { IPBSync sync = resolver.GetInstanceOf <IPBSync>(); sync.OnSyncFinished -= sync_OnSyncFinished; List <LoginInfo> chromeLoginInfo = new List <LoginInfo>(); List <LoginInfo> ieLoginInfo = new List <LoginInfo>(); List <LoginInfo> ffLoginInfo = new List <LoginInfo>(); Parallel.Invoke(() => { //loading chrome items parallel if (Browsers.BrowserVersionGetter.GetChromeVersion() != null) { //if (!BrowserHelper.IsChromeOpened) //{ var tmploginInfo = pbData.GetChromeAccounts(); chromeLoginInfo.AddRange(tmploginInfo); //} } } , () => { if (Browsers.BrowserVersionGetter.GetIEVersion() != null) { //if (!BrowserHelper.IsIEOpened) //{ var tmploginInfo = pbData.GetIEAccounts(); ieLoginInfo.AddRange(tmploginInfo); //} } } , () => { if (Browsers.BrowserVersionGetter.GetFFVersion() != null) { //if (!BrowserHelper.IsFFOpened) //{ var tmploginInfo = pbData.GetFFAccounts(() => { return(null); }); ffLoginInfo.AddRange(tmploginInfo); //} } }); SecureItemHelper siHelper = new SecureItemHelper(pbData, sync); int ieImportedSitesNum = 0; int ffImportedSitesNum = 0; int chromeImportedSitesNum = 0; int ieAlredyImportedSitesNum = 0; int ffAlredyImportedSitesNum = 0; int chromeAlredyImportedSitesNum = 0; int alredyImportedSitesNum = 0; List <SecureItem> userSites = pbData.GetSecureItemsByItemType(PasswordBoss.Helpers.DefaultProperties.SecurityItemType_PasswordVault).Where(x => x.Site.IsRecommendedSite == false).ToList(); logger.Debug("Importing sites from browsers - Start"); siHelper.ImportLoginInfoList(chromeLoginInfo.Where(x => !string.IsNullOrWhiteSpace(x.UserName)).Distinct().ToList(), ref chromeImportedSitesNum, ref chromeAlredyImportedSitesNum); siHelper.ImportLoginInfoList(ieLoginInfo.Where(x => !string.IsNullOrWhiteSpace(x.UserName)).Distinct().ToList(), ref ieImportedSitesNum, ref ieAlredyImportedSitesNum); siHelper.ImportLoginInfoList(ffLoginInfo.Where(x => !string.IsNullOrWhiteSpace(x.UserName)).Distinct().ToList(), ref ffImportedSitesNum, ref ffAlredyImportedSitesNum); logger.Debug("Importing sites from browsers - Finish"); var importedSitesNum = ieImportedSitesNum + ffImportedSitesNum + chromeImportedSitesNum; if (userSites.Count == 0) { alredyImportedSitesNum = 0; //we didn't have anything previous. alredyImportedSitesNum can also mean overlapping between browsers } else { alredyImportedSitesNum = ieAlredyImportedSitesNum + ffAlredyImportedSitesNum + chromeAlredyImportedSitesNum; } var inAppAnalyitics = resolver.GetInstanceOf <IInAppAnalytics>(); if (inAppAnalyitics != null) { ImportPasswordsItem item = new ImportPasswordsItem(importedSitesNum, ImportPasswordsTrigger.Installer, null); var analytics = inAppAnalyitics.Get <Events.ImportPasswords, ImportPasswordsItem>(); analytics.Log(item); } pbData.ChangePrivateSetting("setup_wizard_imported_passwords_number", importedSitesNum.ToString()); pbData.ChangePrivateSetting("setup_wizard_already_passwords_number", alredyImportedSitesNum.ToString()); logger.Debug("private settings modified"); AddEmailToPI(); logger.Debug("added email to PI"); SyncImagesHelper syncImages = new SyncImagesHelper(pbData, webApi); syncImages.SyncImages(); logger.Debug("Finished"); } finally { evDone.Set(); } }
private void PerformInitialSync() { try { //if not default device goto verification string uuid = ""; if (!TryToRegisterDevice(pbData.ActiveUser, out uuid)) { return; } pbData.DeviceUUID = uuid; Guid g; if (!Guid.TryParse(pbData.DeviceUUID, out g)) { OnMessageRaised("Invalid device ID"); return; } logger.Debug("Adding device"); if (pbData.AddDevice( new DTO.Device() { InstallationId = pbData.InstallationUUID, UUID = pbData.DeviceUUID, Nickname = System.Windows.Forms.SystemInformation.ComputerName }) == null) { OnMessageRaised("Failed to save device data"); return; } evDone.Reset(); IPBSync sync = resolver.GetInstanceOf <IPBSync>(); //sync.OnGetMergePassword(GetMergePassword); sync.OnSyncFinished += sync_OnSyncFinished; Task.Factory.StartNew(() => { var sw = Stopwatch.StartNew(); try { if (!sync.Sync(3, ProgressInfo)) { logger.Error("Initial sync failed"); } else { } } catch (Exception ex) { logger.Error(ex.Message); } finally { var str = sw.Elapsed.ToString(); logger.Info("Sync elasped {0}", str); evSyncDone.Set(); } }); evSyncDone.WaitOne(); evDone.WaitOne(); } catch (Exception ex) { logger.Error(ex.Message); } }
/// <summary> /// Sets the system tray icon with menus and events binded /// </summary> public void InitializeTrayProperties() { sync = resolver.GetInstanceOf <IPBSync>(); if (sync != null) { sync.OnSyncSuccess += syncSuccessed; } forceMessageShowing = true; if (_trayNotify != null) { return; } //Set up the system tray icon _trayNotify = new System.Windows.Forms.NotifyIcon { //BalloonTipTitle = PBApp.ReturnResourceString(AppTitleKey), //BalloonTipText = PBApp.ReturnResourceString(ToolTipKey), Text = PBApp.ReturnResourceString(AppTitleKey) }; _trayNotify.MouseClick += _trayNotify_MouseClick; _trayNotify.MouseDoubleClick += _trayNotify_MouseDoubleClick; _trayMenu.Renderer = new MyRenderer(); _trayMenu.Opening += _trayMenu_Opening; _menuOpen.MouseEnter += item_MouseEnter; _menuOpen.MouseLeave += item_MouseLeave; _menuOpen.Click += _menuOpen_Click; _menuOpen.BackColor = System.Drawing.Color.White; _trayMenu.Items.Add(_menuOpen); _trayMenu.Items.Add(new System.Windows.Forms.ToolStripSeparator()); _menuManageDevices.MouseEnter += item_MouseEnter; _menuManageDevices.MouseLeave += item_MouseLeave; _menuManageDevices.Click += _menuManageDevices_Click; _menuManageDevices.BackColor = System.Drawing.Color.White; _trayMenu.Items.Add(_menuManageDevices); _menuCheckUpdates.MouseEnter += item_MouseEnter; _menuCheckUpdates.MouseLeave += item_MouseLeave; _menuCheckUpdates.Click += _menuCheckUpdates_Click; _menuCheckUpdates.BackColor = System.Drawing.Color.White; _trayMenu.Items.Add(_menuCheckUpdates); _menuBackupNow.MouseEnter += item_MouseEnter; _menuBackupNow.MouseLeave += item_MouseLeave; _menuBackupNow.Click += _menuBackupNow_Click; _menuBackupNow.BackColor = System.Drawing.Color.White; _trayMenu.Items.Add(_menuBackupNow); _trayMenu.Items.Add(new System.Windows.Forms.ToolStripSeparator()); _menuSetting.MouseEnter += item_MouseEnter; _menuSetting.MouseLeave += item_MouseLeave; _menuSetting.Click += _menuSetting_Click; _menuSetting.BackColor = System.Drawing.Color.White; _trayMenu.Items.Add(_menuSetting); _menuSupport.MouseEnter += item_MouseEnter; _menuSupport.MouseLeave += item_MouseLeave; _menuSupport.Click += _menuSupport_Click; _menuSupport.BackColor = System.Drawing.Color.White; _trayMenu.Items.Add(_menuSupport); _menuSysInfo.MouseEnter += item_MouseEnter; _menuSysInfo.MouseLeave += item_MouseLeave; _menuSysInfo.Click += _menuSysInfo_Click; _menuSysInfo.BackColor = System.Drawing.Color.White; _trayMenu.Items.Add(_menuSysInfo); #if DEBUG _trayMenu.Items.Add(new System.Windows.Forms.ToolStripSeparator()); _menuExit.MouseEnter += item_MouseEnter; _menuExit.MouseLeave += item_MouseLeave; _menuExit.Click += _menuExit_Click; _menuExit.BackColor = System.Drawing.Color.White; _trayMenu.Items.Add(_menuExit); #endif _trayNotify.ContextMenuStrip = _trayMenu; try { _trayNotify.Icon = new System.Drawing.Icon(TrayIconStream); if (_trayNotify != null) { // Show the icon _trayNotify.Visible = true; // Show the balloon tip // _trayNotify.ShowBalloonTip(2000); } } catch (Exception ex) { MessageBox.Show((string)System.Windows.Application.Current.FindResource("GeneralErrorText")); logger.Error(ex.Message); } }