├── .gitignore ├── DisconnectPro ├── .gitignore ├── README.ndk ├── app │ ├── build.gradle │ └── src │ │ ├── main │ │ ├── AndroidManifest.xml │ │ ├── java │ │ │ └── org │ │ │ │ └── strongswan │ │ │ │ └── android │ │ │ │ ├── data │ │ │ │ ├── LogContentProvider.java │ │ │ │ ├── VpnProfile.java │ │ │ │ ├── VpnProfileDataSource.java │ │ │ │ └── VpnType.java │ │ │ │ ├── logic │ │ │ │ ├── CharonVpnService.java │ │ │ │ ├── NetworkManager.java │ │ │ │ ├── SimpleFetcher.java │ │ │ │ ├── StrongSwanApplication.java │ │ │ │ ├── TrustedCertificateManager.java │ │ │ │ ├── VpnStateService.java │ │ │ │ └── imc │ │ │ │ │ ├── AndroidImc.java │ │ │ │ │ ├── ImcState.java │ │ │ │ │ ├── RemediationInstruction.java │ │ │ │ │ ├── attributes │ │ │ │ │ ├── Attribute.java │ │ │ │ │ ├── AttributeType.java │ │ │ │ │ ├── DeviceIdAttribute.java │ │ │ │ │ ├── InstalledPackagesAttribute.java │ │ │ │ │ ├── PortFilterAttribute.java │ │ │ │ │ ├── PrivateEnterpriseNumber.java │ │ │ │ │ ├── ProductInformationAttribute.java │ │ │ │ │ ├── SettingsAttribute.java │ │ │ │ │ └── StringVersionAttribute.java │ │ │ │ │ └── collectors │ │ │ │ │ ├── Collector.java │ │ │ │ │ ├── DeviceIdCollector.java │ │ │ │ │ ├── InstalledPackagesCollector.java │ │ │ │ │ ├── PortFilterCollector.java │ │ │ │ │ ├── ProductInformationCollector.java │ │ │ │ │ ├── Protocol.java │ │ │ │ │ ├── SettingsCollector.java │ │ │ │ │ └── StringVersionCollector.java │ │ │ │ ├── security │ │ │ │ ├── LocalCertificateKeyStoreProvider.java │ │ │ │ ├── LocalCertificateKeyStoreSpi.java │ │ │ │ ├── LocalCertificateStore.java │ │ │ │ └── TrustedCertificateEntry.java │ │ │ │ ├── ui │ │ │ │ ├── CertificateDeleteConfirmationDialog.java │ │ │ │ ├── ImcStateFragment.java │ │ │ │ ├── LogActivity.java │ │ │ │ ├── LogFragment.java │ │ │ │ ├── MainActivity.java │ │ │ │ ├── RemediationInstructionFragment.java │ │ │ │ ├── RemediationInstructionsActivity.java │ │ │ │ ├── RemediationInstructionsFragment.java │ │ │ │ ├── SelectedApplicationsActivity.java │ │ │ │ ├── SelectedApplicationsListFragment.java │ │ │ │ ├── SettingsActivity.java │ │ │ │ ├── SettingsFragment.java │ │ │ │ ├── TrustedCertificateImportActivity.java │ │ │ │ ├── TrustedCertificateListFragment.java │ │ │ │ ├── TrustedCertificatesActivity.java │ │ │ │ ├── VpnProfileControlActivity.java │ │ │ │ ├── VpnProfileDetailActivity.java │ │ │ │ ├── VpnProfileImportActivity.java │ │ │ │ ├── VpnProfileListFragment.java │ │ │ │ ├── VpnProfileSelectActivity.java │ │ │ │ ├── VpnStateFragment.java │ │ │ │ ├── VpnTileService.java │ │ │ │ ├── adapter │ │ │ │ │ ├── CertificateIdentitiesAdapter.java │ │ │ │ │ ├── RemediationInstructionAdapter.java │ │ │ │ │ ├── SelectedApplicationEntry.java │ │ │ │ │ ├── SelectedApplicationsAdapter.java │ │ │ │ │ ├── TrustedCertificateAdapter.java │ │ │ │ │ └── VpnProfileAdapter.java │ │ │ │ └── widget │ │ │ │ │ ├── CheckableLinearLayout.java │ │ │ │ │ └── TextInputLayoutHelper.java │ │ │ │ └── utils │ │ │ │ ├── BufferedByteWriter.java │ │ │ │ ├── Constants.java │ │ │ │ ├── IPRange.java │ │ │ │ ├── IPRangeSet.java │ │ │ │ ├── SettingsWriter.java │ │ │ │ └── Utils.java │ │ ├── jni │ │ │ ├── .gitignore │ │ │ ├── Android.mk │ │ │ ├── Application.mk │ │ │ └── libandroidbridge │ │ │ │ ├── Android.mk │ │ │ │ ├── android_jni.c │ │ │ │ ├── android_jni.h │ │ │ │ ├── backend │ │ │ │ ├── android_attr.c │ │ │ │ ├── android_attr.h │ │ │ │ ├── android_creds.c │ │ │ │ ├── android_creds.h │ │ │ │ ├── android_dns_proxy.c │ │ │ │ ├── android_dns_proxy.h │ │ │ │ ├── android_fetcher.c │ │ │ │ ├── android_fetcher.h │ │ │ │ ├── android_private_key.c │ │ │ │ ├── android_private_key.h │ │ │ │ ├── android_service.c │ │ │ │ └── android_service.h │ │ │ │ ├── byod │ │ │ │ ├── imc_android.c │ │ │ │ ├── imc_android.h │ │ │ │ ├── imc_android_state.c │ │ │ │ └── imc_android_state.h │ │ │ │ ├── charonservice.c │ │ │ │ ├── charonservice.h │ │ │ │ ├── kernel │ │ │ │ ├── android_ipsec.c │ │ │ │ ├── android_ipsec.h │ │ │ │ ├── android_net.c │ │ │ │ ├── android_net.h │ │ │ │ ├── network_manager.c │ │ │ │ └── network_manager.h │ │ │ │ ├── vpnservice_builder.c │ │ │ │ └── vpnservice_builder.h │ │ └── res │ │ │ ├── color │ │ │ └── checkable_text_color.xml │ │ │ ├── drawable-hdpi │ │ │ ├── ic_close_white_24dp.png │ │ │ ├── ic_launcher.png │ │ │ ├── ic_notification.png │ │ │ ├── ic_notification_connecting.png │ │ │ ├── ic_notification_disconnect.png │ │ │ ├── ic_notification_disconnected.png │ │ │ └── ic_notification_warning.png │ │ │ ├── drawable-mdpi │ │ │ ├── ic_close_white_24dp.png │ │ │ ├── ic_launcher.png │ │ │ ├── ic_notification.png │ │ │ ├── ic_notification_connecting.png │ │ │ ├── ic_notification_disconnect.png │ │ │ ├── ic_notification_disconnected.png │ │ │ └── ic_notification_warning.png │ │ │ ├── drawable-xhdpi │ │ │ ├── ic_close_white_24dp.png │ │ │ ├── ic_launcher.png │ │ │ ├── ic_notification.png │ │ │ ├── ic_notification_connecting.png │ │ │ ├── ic_notification_disconnect.png │ │ │ ├── ic_notification_disconnected.png │ │ │ └── ic_notification_warning.png │ │ │ ├── drawable │ │ │ ├── activated_background.xml │ │ │ ├── error_background.xml │ │ │ ├── remediation_instruction_background_large.xml │ │ │ └── state_background.xml │ │ │ ├── layout-large │ │ │ └── remediation_instructions.xml │ │ │ ├── layout │ │ │ ├── imc_state_fragment.xml │ │ │ ├── log_activity.xml │ │ │ ├── log_fragment.xml │ │ │ ├── log_list_item.xml │ │ │ ├── login_dialog.xml │ │ │ ├── main.xml │ │ │ ├── profile_detail_view.xml │ │ │ ├── profile_import_view.xml │ │ │ ├── profile_list_fragment.xml │ │ │ ├── profile_list_item.xml │ │ │ ├── remediation_instruction.xml │ │ │ ├── remediation_instruction_item.xml │ │ │ ├── remediation_instructions.xml │ │ │ ├── selected_application_item.xml │ │ │ ├── trusted_certificates_activity.xml │ │ │ ├── trusted_certificates_item.xml │ │ │ ├── two_line_button.xml │ │ │ ├── vpn_profile_select.xml │ │ │ └── vpn_state_fragment.xml │ │ │ ├── menu │ │ │ ├── certificates.xml │ │ │ ├── log.xml │ │ │ ├── main.xml │ │ │ ├── profile_edit.xml │ │ │ ├── profile_import.xml │ │ │ ├── profile_list.xml │ │ │ └── profile_list_context.xml │ │ │ ├── mipmap-anydpi-v26 │ │ │ ├── ic_launcher.xml │ │ │ └── ic_shortcut.xml │ │ │ ├── mipmap-anydpi │ │ │ ├── ic_launcher.xml │ │ │ └── ic_shortcut.xml │ │ │ ├── mipmap-xxxhdpi-v26 │ │ │ ├── ic_launcher_bg.png │ │ │ ├── ic_launcher_fg.png │ │ │ ├── ic_shortcut_bg.png │ │ │ └── ic_shortcut_fg.png │ │ │ ├── values-de │ │ │ ├── arrays.xml │ │ │ └── strings.xml │ │ │ ├── values-pl │ │ │ ├── arrays.xml │ │ │ └── strings.xml │ │ │ ├── values-ru │ │ │ ├── arrays.xml │ │ │ └── strings.xml │ │ │ ├── values-ua │ │ │ ├── arrays.xml │ │ │ └── strings.xml │ │ │ ├── values-v15 │ │ │ └── styles.xml │ │ │ ├── values-v21 │ │ │ └── styles.xml │ │ │ ├── values-zh-rCN │ │ │ ├── arrays.xml │ │ │ └── strings.xml │ │ │ ├── values-zh-rTW │ │ │ ├── arrays.xml │ │ │ └── strings.xml │ │ │ ├── values │ │ │ ├── arrays.xml │ │ │ ├── attrs.xml │ │ │ ├── colors.xml │ │ │ ├── strings.xml │ │ │ └── styles.xml │ │ │ └── xml │ │ │ └── settings.xml │ │ └── test │ │ └── java │ │ └── org │ │ └── strongswan │ │ └── android │ │ └── test │ │ ├── BufferedByteWriterTest.java │ │ ├── IPRangeSetTest.java │ │ ├── IPRangeTest.java │ │ └── SettingsWriterTest.java ├── build.gradle ├── disconnect │ ├── .gitignore │ ├── build.gradle │ ├── proguard-rules.pro │ ├── schemas │ │ └── pro.disconnect.me.comms.database.DisconnectDatabase │ │ │ └── 1.json │ └── src │ │ ├── androidTest │ │ └── java │ │ │ └── pro │ │ │ └── disconnect │ │ │ └── me │ │ │ └── ExampleInstrumentedTest.java │ │ ├── main │ │ ├── AndroidManifest.xml │ │ ├── assets │ │ │ ├── ca.crt │ │ │ ├── loadingShield.json │ │ │ └── protectionShield2.json │ │ ├── java │ │ │ └── pro │ │ │ │ └── disconnect │ │ │ │ └── me │ │ │ │ ├── LocationDialog.java │ │ │ │ ├── ProtectionFragment.java │ │ │ │ ├── SplashActivity.java │ │ │ │ ├── StartUpViewModel.java │ │ │ │ ├── TabbedActivity.java │ │ │ │ ├── UpgradeViewModel.java │ │ │ │ ├── billing │ │ │ │ ├── BillingManager.java │ │ │ │ ├── Security.java │ │ │ │ ├── SkusViewModel.java │ │ │ │ ├── SubsItem.java │ │ │ │ ├── SubscriptionRecyclerViewAdapter.java │ │ │ │ └── UpgradeFragment.java │ │ │ │ ├── comms │ │ │ │ ├── CommsEngine.java │ │ │ │ ├── DisconnectAPI.java │ │ │ │ ├── ServerLocations.java │ │ │ │ ├── database │ │ │ │ │ ├── DateConverter.java │ │ │ │ │ ├── DisconnectDatabase.java │ │ │ │ │ ├── PostsDao.java │ │ │ │ │ └── TrackersDao.java │ │ │ │ ├── models │ │ │ │ │ ├── AccountUpgrade.java │ │ │ │ │ ├── CountryContinent.java │ │ │ │ │ ├── NewUser.java │ │ │ │ │ ├── NewsItems.java │ │ │ │ │ ├── PartnerProvision.java │ │ │ │ │ ├── Post.java │ │ │ │ │ ├── ServerInfo.java │ │ │ │ │ ├── Status.java │ │ │ │ │ ├── Tracker.java │ │ │ │ │ ├── TrackerDescriptions.java │ │ │ │ │ └── Trackers.java │ │ │ │ └── utils │ │ │ │ │ ├── ApiResponse.java │ │ │ │ │ ├── LiveDataCallAdapter.java │ │ │ │ │ ├── LiveDataCallAdapterFactory.java │ │ │ │ │ ├── NetworkBoundResource.java │ │ │ │ │ ├── Objects.java │ │ │ │ │ └── Resource.java │ │ │ │ ├── feeds │ │ │ │ ├── OnPostInteractionListener.java │ │ │ │ ├── PostsFragment.java │ │ │ │ ├── PostsViewModel.java │ │ │ │ ├── TimeAgo.java │ │ │ │ ├── alerts │ │ │ │ │ ├── AlertsFragment.java │ │ │ │ │ └── AlertsRecyclerViewAdapter.java │ │ │ │ ├── news │ │ │ │ │ ├── NewsFragment.java │ │ │ │ │ └── NewsRecyclerViewAdapter.java │ │ │ │ └── tips │ │ │ │ │ ├── TipsFragment.java │ │ │ │ │ └── TipsRecyclerViewAdapter.java │ │ │ │ ├── settings │ │ │ │ ├── SettingRecyclerViewAdapter.java │ │ │ │ ├── SettingsActivity.java │ │ │ │ ├── SettingsContent.java │ │ │ │ ├── SettingsFragment.java │ │ │ │ └── SettingsViewModel.java │ │ │ │ └── trackers │ │ │ │ ├── IndividualTrackerFragment.java │ │ │ │ ├── StatsViewModel.java │ │ │ │ ├── TrackerBucket.java │ │ │ │ ├── TrackerFragment.java │ │ │ │ ├── TrackerRecyclerViewAdapter.java │ │ │ │ ├── TrackersViewModel.java │ │ │ │ └── XAxisFormatter.java │ │ └── res │ │ │ ├── anim │ │ │ ├── anim_down.xml │ │ │ └── anim_up.xml │ │ │ ├── drawable-hdpi │ │ │ ├── d_logo.png │ │ │ ├── d_shield.png │ │ │ ├── encryption_btn_bg.png │ │ │ ├── feature_icn_3devices.png │ │ │ ├── feature_icn_cancel_anytime.png │ │ │ ├── feature_icn_encrypted.png │ │ │ ├── feature_icn_location.png │ │ │ ├── feature_icn_protection.png │ │ │ ├── feature_icn_tutorial.png │ │ │ ├── feature_icon_alerts.png │ │ │ ├── help_btn_bg.png │ │ │ ├── icn_alerts_active.png │ │ │ ├── icn_alerts_normal.png │ │ │ ├── icn_blocked_tracker.png │ │ │ ├── icn_news_active.png │ │ │ ├── icn_news_normal.png │ │ │ ├── icn_protection_blocking.png │ │ │ ├── icn_protection_off.png │ │ │ ├── icn_settings_btn.png │ │ │ ├── icn_tips_active.png │ │ │ ├── icn_tips_normal.png │ │ │ ├── icon_protection_encrypted.png │ │ │ ├── icon_stats.png │ │ │ ├── particle_circle.png │ │ │ ├── premium_shield.png │ │ │ ├── protection_bg_nodes.png │ │ │ ├── rocket.png │ │ │ └── stats_btn_bg.png │ │ │ ├── drawable-mdpi │ │ │ ├── d_logo.png │ │ │ ├── d_shield.png │ │ │ ├── encryption_btn_bg.png │ │ │ ├── feature_icn_3devices.png │ │ │ ├── feature_icn_cancel_anytime.png │ │ │ ├── feature_icn_encrypted.png │ │ │ ├── feature_icn_location.png │ │ │ ├── feature_icn_protection.png │ │ │ ├── feature_icn_tutorial.png │ │ │ ├── feature_icon_alerts.png │ │ │ ├── help_btn_bg.png │ │ │ ├── icn_alerts_active.png │ │ │ ├── icn_alerts_normal.png │ │ │ ├── icn_blocked_tracker.png │ │ │ ├── icn_news_active.png │ │ │ ├── icn_news_normal.png │ │ │ ├── icn_protection_blocking.png │ │ │ ├── icn_protection_off.png │ │ │ ├── icn_settings_btn.png │ │ │ ├── icn_tips_active.png │ │ │ ├── icn_tips_normal.png │ │ │ ├── icon_protection_encrypted.png │ │ │ ├── icon_stats.png │ │ │ ├── particle_circle.png │ │ │ ├── premium_shield.png │ │ │ ├── protection_bg_nodes.png │ │ │ ├── rocket.png │ │ │ └── stats_btn_bg.png │ │ │ ├── drawable-v24 │ │ │ └── ic_launcher_foreground.xml │ │ │ ├── drawable-xhdpi │ │ │ ├── d_logo.png │ │ │ ├── d_shield.png │ │ │ ├── encryption_btn_bg.png │ │ │ ├── feature_icn_3devices.png │ │ │ ├── feature_icn_cancel_anytime.png │ │ │ ├── feature_icn_encrypted.png │ │ │ ├── feature_icn_location.png │ │ │ ├── feature_icn_protection.png │ │ │ ├── feature_icn_tutorial.png │ │ │ ├── feature_icon_alerts.png │ │ │ ├── help_btn_bg.png │ │ │ ├── icn_alerts_active.png │ │ │ ├── icn_alerts_normal.png │ │ │ ├── icn_blocked_tracker.png │ │ │ ├── icn_news_active.png │ │ │ ├── icn_news_normal.png │ │ │ ├── icn_protection_blocking.png │ │ │ ├── icn_protection_off.png │ │ │ ├── icn_settings_btn.png │ │ │ ├── icn_tips_active.png │ │ │ ├── icn_tips_normal.png │ │ │ ├── icon_protection_encrypted.png │ │ │ ├── icon_stats.png │ │ │ ├── particle_circle.png │ │ │ ├── premium_shield.png │ │ │ ├── protection_bg_nodes.png │ │ │ ├── rocket.png │ │ │ └── stats_btn_bg.png │ │ │ ├── drawable-xxhdpi │ │ │ ├── d_logo.png │ │ │ ├── d_shield.png │ │ │ ├── encryption_btn_bg.png │ │ │ ├── feature_icn_3devices.png │ │ │ ├── feature_icn_cancel_anytime.png │ │ │ ├── feature_icn_encrypted.png │ │ │ ├── feature_icn_location.png │ │ │ ├── feature_icn_protection.png │ │ │ ├── feature_icn_tutorial.png │ │ │ ├── feature_icon_alerts.png │ │ │ ├── help_btn_bg.png │ │ │ ├── icn_alerts_active.png │ │ │ ├── icn_alerts_normal.png │ │ │ ├── icn_blocked_tracker.png │ │ │ ├── icn_news_active.png │ │ │ ├── icn_news_normal.png │ │ │ ├── icn_protection_blocking.png │ │ │ ├── icn_protection_off.png │ │ │ ├── icn_settings_btn.png │ │ │ ├── icn_tips_active.png │ │ │ ├── icn_tips_normal.png │ │ │ ├── icon_protection_encrypted.png │ │ │ ├── icon_stats.png │ │ │ ├── particle_circle.png │ │ │ ├── premium_shield.png │ │ │ ├── protection_bg_nodes.png │ │ │ ├── rocket.png │ │ │ └── stats_btn_bg.png │ │ │ ├── drawable-xxxhdpi │ │ │ ├── d_logo.png │ │ │ ├── d_shield.png │ │ │ ├── encryption_btn_bg.png │ │ │ ├── feature_icn_3devices.png │ │ │ ├── feature_icn_cancel_anytime.png │ │ │ ├── feature_icn_encrypted.png │ │ │ ├── feature_icn_location.png │ │ │ ├── feature_icn_protection.png │ │ │ ├── feature_icn_tutorial.png │ │ │ ├── feature_icon_alerts.png │ │ │ ├── help_btn_bg.png │ │ │ ├── icn_alerts_active.png │ │ │ ├── icn_alerts_normal.png │ │ │ ├── icn_blocked_tracker.png │ │ │ ├── icn_news_active.png │ │ │ ├── icn_news_normal.png │ │ │ ├── icn_protection_blocking.png │ │ │ ├── icn_protection_off.png │ │ │ ├── icn_settings_btn.png │ │ │ ├── icn_tips_active.png │ │ │ ├── icn_tips_normal.png │ │ │ ├── icon_protection_encrypted.png │ │ │ ├── icon_stats.png │ │ │ ├── particle_circle.png │ │ │ ├── premium_shield.png │ │ │ ├── protection_bg_nodes.png │ │ │ ├── rocket.png │ │ │ └── stats_btn_bg.png │ │ │ ├── drawable │ │ │ ├── alerts_icon.xml │ │ │ ├── dark_circle.xml │ │ │ ├── difficulty_orange.xml │ │ │ ├── difficulty_red.xml │ │ │ ├── difficulty_yellow.xml │ │ │ ├── ic_account_circle_green.xml │ │ │ ├── ic_arrow_back_purple.xml │ │ │ ├── ic_arrow_forward_white.xml │ │ │ ├── ic_cancel_white.xml │ │ │ ├── ic_chevron_right_black.xml │ │ │ ├── ic_dashboard_black_24dp.xml │ │ │ ├── ic_home_black_24dp.xml │ │ │ ├── ic_info_green.xml │ │ │ ├── ic_launcher_background.xml │ │ │ ├── ic_notifications_black_24dp.xml │ │ │ ├── ic_poll_green.xml │ │ │ ├── ic_restore_green.xml │ │ │ ├── learn_icon.xml │ │ │ ├── location_button_background.xml │ │ │ ├── new_button.xml │ │ │ ├── news_icon.xml │ │ │ ├── protection_background.xml │ │ │ ├── roundedbutton.xml │ │ │ ├── splash_screen.png │ │ │ ├── stats_bucket_background.xml │ │ │ ├── subscription_background.xml │ │ │ ├── subscription_price_background.xml │ │ │ ├── tracker_status.xml │ │ │ ├── tracker_timestamp_background.xml │ │ │ ├── video_background_gradient.xml │ │ │ ├── white_circle.xml │ │ │ └── white_divider.xml │ │ │ ├── layout │ │ │ ├── actionbar_title.xml │ │ │ ├── activity_settings.xml │ │ │ ├── activity_splash.xml │ │ │ ├── fragment_alerts_read_item.xml │ │ │ ├── fragment_alerts_unread_item.xml │ │ │ ├── fragment_individual_tracker.xml │ │ │ ├── fragment_news_item.xml │ │ │ ├── fragment_news_list.xml │ │ │ ├── fragment_setting.xml │ │ │ ├── fragment_setting_list.xml │ │ │ ├── fragment_subscription.xml │ │ │ ├── fragment_tips_item.xml │ │ │ ├── fragment_tracker.xml │ │ │ ├── fragment_tracker_list.xml │ │ │ ├── fragment_upgrade.xml │ │ │ ├── main.xml │ │ │ ├── protection_layout.xml │ │ │ └── stats_layout.xml │ │ │ ├── menu │ │ │ └── main_menu.xml │ │ │ ├── mipmap-anydpi-v26 │ │ │ ├── ic_launcher.xml │ │ │ └── ic_launcher_round.xml │ │ │ ├── mipmap-hdpi │ │ │ ├── ic_launcher.png │ │ │ └── ic_launcher_round.png │ │ │ ├── mipmap-mdpi │ │ │ ├── ic_launcher.png │ │ │ └── ic_launcher_round.png │ │ │ ├── mipmap-xhdpi │ │ │ ├── ic_launcher.png │ │ │ └── ic_launcher_round.png │ │ │ ├── mipmap-xxhdpi │ │ │ ├── ic_launcher.png │ │ │ └── ic_launcher_round.png │ │ │ ├── mipmap-xxxhdpi │ │ │ ├── ic_launcher.png │ │ │ └── ic_launcher_round.png │ │ │ ├── raw │ │ │ └── country_continent.json │ │ │ └── values │ │ │ ├── colors.xml │ │ │ ├── dimens.xml │ │ │ ├── strings.xml │ │ │ └── styles.xml │ │ └── test │ │ └── java │ │ └── pro │ │ └── disconnect │ │ └── me │ │ └── ExampleUnitTest.java ├── gradle │ └── wrapper │ │ ├── gradle-wrapper.jar │ │ └── gradle-wrapper.properties ├── gradlew ├── gradlew.bat └── settings.gradle ├── LICENSE └── README.md /.gitignore: -------------------------------------------------------------------------------- 1 | # Built application files 2 | *.apk 3 | *.ap_ 4 | 5 | # Files for the ART/Dalvik VM 6 | *.dex 7 | 8 | # Java class files 9 | *.class 10 | 11 | # Generated files 12 | bin/ 13 | gen/ 14 | out/ 15 | 16 | # Gradle files 17 | .gradle/ 18 | build/ 19 | 20 | # Local configuration file (sdk path, etc) 21 | local.properties 22 | 23 | # Proguard folder generated by Eclipse 24 | proguard/ 25 | 26 | # Log Files 27 | *.log 28 | 29 | # Android Studio Navigation editor temp files 30 | .navigation/ 31 | 32 | # Android Studio captures folder 33 | captures/ 34 | 35 | # IntelliJ 36 | *.iml 37 | .idea/workspace.xml 38 | .idea/tasks.xml 39 | .idea/gradle.xml 40 | .idea/assetWizardSettings.xml 41 | .idea/dictionaries 42 | .idea/libraries 43 | .idea/caches 44 | 45 | # Keystore files 46 | # Uncomment the following line if you do not want to check your keystore files in. 47 | #*.jks 48 | 49 | # External native build folder generated in Android Studio 2.2 and later 50 | .externalNativeBuild 51 | 52 | # Google Services (e.g. APIs or Firebase) 53 | google-services.json 54 | 55 | # Freeline 56 | freeline.py 57 | freeline/ 58 | freeline_project_description.json 59 | 60 | # fastlane 61 | fastlane/report.xml 62 | fastlane/Preview.html 63 | fastlane/screenshots 64 | fastlane/test_output 65 | fastlane/readme.md 66 | .DS_Store 67 | -------------------------------------------------------------------------------- /DisconnectPro/.gitignore: -------------------------------------------------------------------------------- 1 | .gradle/ 2 | .idea/ 3 | build/ 4 | app/build/ 5 | app/src/main/libs 6 | app/src/main/obj 7 | *.iml 8 | local.properties 9 | 10 | # Built application files 11 | *.apk 12 | *.ap_ 13 | 14 | # Files for the ART/Dalvik VM 15 | *.dex 16 | 17 | # Java class files 18 | *.class 19 | 20 | # Generated files 21 | bin/ 22 | gen/ 23 | out/ 24 | 25 | # Gradle files 26 | .gradle/ 27 | build/ 28 | 29 | # Local configuration file (sdk path, etc) 30 | local.properties 31 | 32 | # Proguard folder generated by Eclipse 33 | proguard/ 34 | 35 | # Log Files 36 | *.log 37 | 38 | # Android Studio Navigation editor temp files 39 | .navigation/ 40 | 41 | # Android Studio captures folder 42 | captures/ 43 | 44 | # IntelliJ 45 | *.iml 46 | .idea/workspace.xml 47 | .idea/tasks.xml 48 | .idea/gradle.xml 49 | .idea/assetWizardSettings.xml 50 | .idea/dictionaries 51 | .idea/libraries 52 | .idea/caches 53 | 54 | # Keystore files 55 | # Uncomment the following line if you do not want to check your keystore files in. 56 | #*.jks 57 | 58 | # External native build folder generated in Android Studio 2.2 and later 59 | .externalNativeBuild 60 | 61 | # Google Services (e.g. APIs or Firebase) 62 | google-services.json 63 | 64 | # Freeline 65 | freeline.py 66 | freeline/ 67 | freeline_project_description.json 68 | 69 | # fastlane 70 | fastlane/report.xml 71 | fastlane/Preview.html 72 | fastlane/screenshots 73 | fastlane/test_output 74 | fastlane/readme.md 75 | .DS_Store 76 | -------------------------------------------------------------------------------- /DisconnectPro/README.ndk: -------------------------------------------------------------------------------- 1 | To build this within the NDK the following things have to be done: 2 | 3 | - By default the strongSwan sources of the current Git tree are used. They have 4 | to be prepared first (see HACKING for a list of required tools): 5 | 6 | ./autogen.sh && ./configure && make && make distclean 7 | 8 | It is also possible to use the sources from a different directory (e.g. an 9 | extracted tarball) by setting strongswan_DIR in app/src/main/jni/Android.mk. 10 | 11 | - The OpenSSL or BoringSSL sources are expected in app/src/main/jni/openssl. 12 | Since the sources need to be changed to be built on Android (and especially 13 | in the NDK) we provide a modified mirror of the official Android repositories 14 | on git.strongswan.org. 15 | -------------------------------------------------------------------------------- /DisconnectPro/app/build.gradle: -------------------------------------------------------------------------------- 1 | apply plugin: 'com.android.library' 2 | 3 | android { 4 | compileSdkVersion 26 5 | buildToolsVersion '26.0.2' 6 | 7 | defaultConfig { 8 | minSdkVersion 19 9 | targetSdkVersion 26 10 | versionCode 50 11 | versionName "1.9.6" 12 | } 13 | 14 | sourceSets.main { 15 | jni.srcDirs = [] // disables the default ndk-build call (with on-the-fly Android.mk files) 16 | jniLibs.srcDir 'src/main/libs' 17 | } 18 | 19 | task buildNative(type: Exec) { 20 | workingDir 'src/main/jni' 21 | commandLine "${android.ndkDirectory}/ndk-build", '-j', Runtime.runtime.availableProcessors() 22 | } 23 | 24 | task cleanNative(type: Exec) { 25 | workingDir 'src/main/jni' 26 | commandLine "${android.ndkDirectory}/ndk-build", 'clean' 27 | } 28 | 29 | tasks.withType(JavaCompile) { 30 | compileTask -> compileTask.dependsOn buildNative 31 | options.compilerArgs << "-Xlint:unchecked" << "-Xlint:deprecation" 32 | } 33 | 34 | clean.dependsOn 'cleanNative' 35 | 36 | buildTypes { 37 | release { 38 | minifyEnabled false 39 | proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.txt' 40 | } 41 | } 42 | 43 | compileOptions { 44 | sourceCompatibility JavaVersion.VERSION_1_8 45 | targetCompatibility JavaVersion.VERSION_1_8 46 | } 47 | } 48 | 49 | dependencies { 50 | implementation 'com.android.support:appcompat-v7:26.0.2' 51 | implementation 'com.android.support:design:26.0.2' 52 | implementation 'com.android.support:preference-v7:26.0.2' 53 | implementation 'com.android.support:support-v4:26.0.2' 54 | testImplementation 'junit:junit:4.12' 55 | } 56 | -------------------------------------------------------------------------------- /DisconnectPro/app/src/main/java/org/strongswan/android/logic/imc/ImcState.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (C) 2013 Tobias Brunner 3 | * HSR Hochschule fuer Technik Rapperswil 4 | * 5 | * This program is free software; you can redistribute it and/or modify it 6 | * under the terms of the GNU General Public License as published by the 7 | * Free Software Foundation; either version 2 of the License, or (at your 8 | * option) any later version. See . 9 | * 10 | * This program is distributed in the hope that it will be useful, but 11 | * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY 12 | * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License 13 | * for more details. 14 | */ 15 | 16 | package org.strongswan.android.logic.imc; 17 | 18 | public enum ImcState 19 | { 20 | UNKNOWN(0), 21 | ALLOW(1), 22 | BLOCK(2), 23 | ISOLATE(3); 24 | 25 | private final int mValue; 26 | 27 | private ImcState(int value) 28 | { 29 | mValue = value; 30 | } 31 | 32 | /** 33 | * Get the numeric value of the IMC state. 34 | * @return numeric value 35 | */ 36 | public int getValue() 37 | { 38 | return mValue; 39 | } 40 | 41 | /** 42 | * Get the enum entry from a numeric value, if defined 43 | * 44 | * @param value numeric value 45 | * @return the enum entry or null 46 | */ 47 | public static ImcState fromValue(int value) 48 | { 49 | for (ImcState state : ImcState.values()) 50 | { 51 | if (state.mValue == value) 52 | { 53 | return state; 54 | } 55 | } 56 | return null; 57 | } 58 | } 59 | -------------------------------------------------------------------------------- /DisconnectPro/app/src/main/java/org/strongswan/android/logic/imc/attributes/Attribute.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (C) 2013 Tobias Brunner 3 | * HSR Hochschule fuer Technik Rapperswil 4 | * 5 | * This program is free software; you can redistribute it and/or modify it 6 | * under the terms of the GNU General Public License as published by the 7 | * Free Software Foundation; either version 2 of the License, or (at your 8 | * option) any later version. See . 9 | * 10 | * This program is distributed in the hope that it will be useful, but 11 | * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY 12 | * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License 13 | * for more details. 14 | */ 15 | 16 | package org.strongswan.android.logic.imc.attributes; 17 | 18 | /** 19 | * Interface to be implemented by attribute classes 20 | */ 21 | public interface Attribute 22 | { 23 | /** 24 | * Returns the binary encoding of the attribute 25 | * @return binary encoding 26 | */ 27 | public byte[] getEncoding(); 28 | } 29 | -------------------------------------------------------------------------------- /DisconnectPro/app/src/main/java/org/strongswan/android/logic/imc/attributes/DeviceIdAttribute.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (C) 2013 Tobias Brunner 3 | * HSR Hochschule fuer Technik Rapperswil 4 | * 5 | * This program is free software; you can redistribute it and/or modify it 6 | * under the terms of the GNU General Public License as published by the 7 | * Free Software Foundation; either version 2 of the License, or (at your 8 | * option) any later version. See . 9 | * 10 | * This program is distributed in the hope that it will be useful, but 11 | * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY 12 | * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License 13 | * for more details. 14 | */ 15 | 16 | package org.strongswan.android.logic.imc.attributes; 17 | 18 | /** 19 | * ITA Device ID attribute 20 | * 21 | * 1 2 3 22 | * 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 23 | * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 24 | * | Device ID (Variable Length) | 25 | * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 26 | */ 27 | public class DeviceIdAttribute implements Attribute 28 | { 29 | private String mDeviceId; 30 | 31 | /** 32 | * Set the device ID 33 | * @param version version number 34 | */ 35 | public void setDeviceId(String deviceId) 36 | { 37 | this.mDeviceId = deviceId; 38 | } 39 | 40 | @Override 41 | public byte[] getEncoding() 42 | { 43 | return mDeviceId.getBytes(); 44 | } 45 | } 46 | -------------------------------------------------------------------------------- /DisconnectPro/app/src/main/java/org/strongswan/android/logic/imc/attributes/PrivateEnterpriseNumber.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (C) 2013 Tobias Brunner 3 | * HSR Hochschule fuer Technik Rapperswil 4 | * 5 | * This program is free software; you can redistribute it and/or modify it 6 | * under the terms of the GNU General Public License as published by the 7 | * Free Software Foundation; either version 2 of the License, or (at your 8 | * option) any later version. See . 9 | * 10 | * This program is distributed in the hope that it will be useful, but 11 | * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY 12 | * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License 13 | * for more details. 14 | */ 15 | 16 | package org.strongswan.android.logic.imc.attributes; 17 | 18 | public enum PrivateEnterpriseNumber 19 | { 20 | IETF(0x000000), 21 | GOOGLE(0x002B79), 22 | ITA(0x00902a), 23 | UNASSIGNED(0xfffffe), 24 | RESERVED(0xffffff); 25 | 26 | private int mValue; 27 | 28 | /** 29 | * Enum for private enterprise numbers (PEN) as allocated by IANA 30 | * 31 | * @param value numeric value 32 | */ 33 | private PrivateEnterpriseNumber(int value) 34 | { 35 | mValue = value; 36 | } 37 | 38 | /** 39 | * Get the numeric value of a PEN 40 | * 41 | * @return numeric value 42 | */ 43 | public int getValue() 44 | { 45 | return mValue; 46 | } 47 | 48 | /** 49 | * Get the enum entry from a numeric value, if defined 50 | * 51 | * @param value numeric value 52 | * @return the enum entry or null 53 | */ 54 | public static PrivateEnterpriseNumber fromValue(int value) 55 | { 56 | for (PrivateEnterpriseNumber pen : PrivateEnterpriseNumber.values()) 57 | { 58 | if (pen.mValue == value) 59 | { 60 | return pen; 61 | } 62 | } 63 | return null; 64 | } 65 | } 66 | -------------------------------------------------------------------------------- /DisconnectPro/app/src/main/java/org/strongswan/android/logic/imc/collectors/Collector.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (C) 2013 Tobias Brunner 3 | * HSR Hochschule fuer Technik Rapperswil 4 | * 5 | * This program is free software; you can redistribute it and/or modify it 6 | * under the terms of the GNU General Public License as published by the 7 | * Free Software Foundation; either version 2 of the License, or (at your 8 | * option) any later version. See . 9 | * 10 | * This program is distributed in the hope that it will be useful, but 11 | * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY 12 | * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License 13 | * for more details. 14 | */ 15 | 16 | package org.strongswan.android.logic.imc.collectors; 17 | 18 | import org.strongswan.android.logic.imc.attributes.Attribute; 19 | 20 | /** 21 | * Interface for measurement collectors 22 | */ 23 | public interface Collector 24 | { 25 | /** 26 | * This method shall return the result of a measurement, if available 27 | * @return attribute or null 28 | */ 29 | public abstract Attribute getMeasurement(); 30 | } 31 | -------------------------------------------------------------------------------- /DisconnectPro/app/src/main/java/org/strongswan/android/logic/imc/collectors/DeviceIdCollector.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (C) 2013 Tobias Brunner 3 | * HSR Hochschule fuer Technik Rapperswil 4 | * 5 | * This program is free software; you can redistribute it and/or modify it 6 | * under the terms of the GNU General Public License as published by the 7 | * Free Software Foundation; either version 2 of the License, or (at your 8 | * option) any later version. See . 9 | * 10 | * This program is distributed in the hope that it will be useful, but 11 | * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY 12 | * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License 13 | * for more details. 14 | */ 15 | 16 | package org.strongswan.android.logic.imc.collectors; 17 | 18 | import org.strongswan.android.logic.imc.attributes.Attribute; 19 | import org.strongswan.android.logic.imc.attributes.DeviceIdAttribute; 20 | 21 | import android.content.ContentResolver; 22 | import android.content.Context; 23 | 24 | public class DeviceIdCollector implements Collector 25 | { 26 | private final ContentResolver mContentResolver; 27 | 28 | public DeviceIdCollector(Context context) 29 | { 30 | mContentResolver = context.getContentResolver(); 31 | } 32 | 33 | @Override 34 | public Attribute getMeasurement() 35 | { 36 | String id = android.provider.Settings.Secure.getString(mContentResolver, "android_id"); 37 | if (id != null) 38 | { 39 | DeviceIdAttribute attribute = new DeviceIdAttribute(); 40 | attribute.setDeviceId(id); 41 | return attribute; 42 | } 43 | return null; 44 | } 45 | } 46 | -------------------------------------------------------------------------------- /DisconnectPro/app/src/main/java/org/strongswan/android/logic/imc/collectors/ProductInformationCollector.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (C) 2013 Tobias Brunner 3 | * Copyright (C) 2012 Christoph Buehler 4 | * Copyright (C) 2012 Patrick Loetscher 5 | * HSR Hochschule fuer Technik Rapperswil 6 | * 7 | * This program is free software; you can redistribute it and/or modify it 8 | * under the terms of the GNU General Public License as published by the 9 | * Free Software Foundation; either version 2 of the License, or (at your 10 | * option) any later version. See . 11 | * 12 | * This program is distributed in the hope that it will be useful, but 13 | * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY 14 | * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License 15 | * for more details. 16 | */ 17 | 18 | package org.strongswan.android.logic.imc.collectors; 19 | 20 | import org.strongswan.android.logic.imc.attributes.Attribute; 21 | import org.strongswan.android.logic.imc.attributes.ProductInformationAttribute; 22 | 23 | public class ProductInformationCollector implements Collector 24 | { 25 | @Override 26 | public Attribute getMeasurement() 27 | { /* this is currently hardcoded in the attribute */ 28 | return new ProductInformationAttribute(); 29 | } 30 | } 31 | -------------------------------------------------------------------------------- /DisconnectPro/app/src/main/java/org/strongswan/android/logic/imc/collectors/Protocol.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (C) 2013 Tobias Brunner 3 | * HSR Hochschule fuer Technik Rapperswil 4 | * 5 | * This program is free software; you can redistribute it and/or modify it 6 | * under the terms of the GNU General Public License as published by the 7 | * Free Software Foundation; either version 2 of the License, or (at your 8 | * option) any later version. See . 9 | * 10 | * This program is distributed in the hope that it will be useful, but 11 | * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY 12 | * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License 13 | * for more details. 14 | */ 15 | 16 | package org.strongswan.android.logic.imc.collectors; 17 | 18 | public enum Protocol 19 | { 20 | TCP((byte)6, "tcp", "tcp6"), 21 | UDP((byte)17, "udp", "udp6"); 22 | 23 | private final byte mValue; 24 | private String[] mNames; 25 | 26 | private Protocol(byte value, String... names) 27 | { 28 | mValue = value; 29 | mNames = names; 30 | } 31 | 32 | /** 33 | * Get the numeric value of the protocol. 34 | * @return numeric value 35 | */ 36 | public byte getValue() 37 | { 38 | return mValue; 39 | } 40 | 41 | /** 42 | * Get the protocol from the given protocol name, if found. 43 | * @param name protocol name (e.g. "udp" or "tcp") 44 | * @return enum entry or null 45 | */ 46 | public static Protocol fromName(String name) 47 | { 48 | for (Protocol protocol : Protocol.values()) 49 | { 50 | for (String keyword : protocol.mNames) 51 | { 52 | if (keyword.equalsIgnoreCase(name)) 53 | { 54 | return protocol; 55 | } 56 | } 57 | } 58 | return null; 59 | } 60 | } 61 | -------------------------------------------------------------------------------- /DisconnectPro/app/src/main/java/org/strongswan/android/logic/imc/collectors/StringVersionCollector.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (C) 2013 Tobias Brunner 3 | * Copyright (C) 2012 Christoph Buehler 4 | * Copyright (C) 2012 Patrick Loetscher 5 | * HSR Hochschule fuer Technik Rapperswil 6 | * 7 | * This program is free software; you can redistribute it and/or modify it 8 | * under the terms of the GNU General Public License as published by the 9 | * Free Software Foundation; either version 2 of the License, or (at your 10 | * option) any later version. See . 11 | * 12 | * This program is distributed in the hope that it will be useful, but 13 | * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY 14 | * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License 15 | * for more details. 16 | */ 17 | 18 | package org.strongswan.android.logic.imc.collectors; 19 | 20 | import org.strongswan.android.logic.imc.attributes.Attribute; 21 | import org.strongswan.android.logic.imc.attributes.StringVersionAttribute; 22 | 23 | public class StringVersionCollector implements Collector 24 | { 25 | @Override 26 | public Attribute getMeasurement() 27 | { 28 | StringVersionAttribute attribute = new StringVersionAttribute(); 29 | attribute.setProductVersionNumber(android.os.Build.VERSION.RELEASE); 30 | attribute.setInternalBuildNumber(android.os.Build.DISPLAY); 31 | return attribute; 32 | } 33 | } 34 | -------------------------------------------------------------------------------- /DisconnectPro/app/src/main/java/org/strongswan/android/security/LocalCertificateKeyStoreProvider.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (C) 2014 Tobias Brunner 3 | * HSR Hochschule fuer Technik Rapperswil 4 | * 5 | * This program is free software; you can redistribute it and/or modify it 6 | * under the terms of the GNU General Public License as published by the 7 | * Free Software Foundation; either version 2 of the License, or (at your 8 | * option) any later version. See . 9 | * 10 | * This program is distributed in the hope that it will be useful, but 11 | * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY 12 | * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License 13 | * for more details. 14 | */ 15 | 16 | package org.strongswan.android.security; 17 | 18 | import java.security.Provider; 19 | 20 | public class LocalCertificateKeyStoreProvider extends Provider 21 | { 22 | private static final long serialVersionUID = 3515038332469843219L; 23 | 24 | public LocalCertificateKeyStoreProvider() 25 | { 26 | super("LocalCertificateKeyStoreProvider", 1.0, "KeyStore provider for local certificates"); 27 | put("KeyStore.LocalCertificateStore", LocalCertificateKeyStoreSpi.class.getName()); 28 | } 29 | } 30 | -------------------------------------------------------------------------------- /DisconnectPro/app/src/main/java/org/strongswan/android/ui/SettingsActivity.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (C) 2018 Tobias Brunner 3 | * HSR Hochschule fuer Technik Rapperswil 4 | * 5 | * This program is free software; you can redistribute it and/or modify it 6 | * under the terms of the GNU General Public License as published by the 7 | * Free Software Foundation; either version 2 of the License, or (at your 8 | * option) any later version. See . 9 | * 10 | * This program is distributed in the hope that it will be useful, but 11 | * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY 12 | * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License 13 | * for more details. 14 | */ 15 | 16 | package org.strongswan.android.ui; 17 | 18 | import android.os.Bundle; 19 | import android.support.v7.app.AppCompatActivity; 20 | import android.view.MenuItem; 21 | 22 | public class SettingsActivity extends AppCompatActivity 23 | { 24 | 25 | @Override 26 | protected void onCreate(Bundle savedInstanceState) 27 | { 28 | super.onCreate(savedInstanceState); 29 | 30 | getSupportActionBar().setDisplayHomeAsUpEnabled(true); 31 | 32 | getSupportFragmentManager().beginTransaction() 33 | .replace(android.R.id.content, new SettingsFragment()) 34 | .commit(); 35 | } 36 | 37 | @Override 38 | public boolean onOptionsItemSelected(MenuItem item) 39 | { 40 | switch (item.getItemId()) 41 | { 42 | case android.R.id.home: 43 | finish(); 44 | return true; 45 | default: 46 | return super.onOptionsItemSelected(item); 47 | } 48 | } 49 | } 50 | -------------------------------------------------------------------------------- /DisconnectPro/app/src/main/java/org/strongswan/android/ui/widget/CheckableLinearLayout.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (C) 2017 Tobias Brunner 3 | * HSR Hochschule fuer Technik Rapperswil 4 | * 5 | * This program is free software; you can redistribute it and/or modify it 6 | * under the terms of the GNU General Public License as published by the 7 | * Free Software Foundation; either version 2 of the License, or (at your 8 | * option) any later version. See . 9 | * 10 | * This program is distributed in the hope that it will be useful, but 11 | * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY 12 | * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License 13 | * for more details. 14 | */ 15 | 16 | package org.strongswan.android.ui.widget; 17 | 18 | import android.content.Context; 19 | import android.support.annotation.Nullable; 20 | import android.util.AttributeSet; 21 | import android.widget.Checkable; 22 | import android.widget.LinearLayout; 23 | 24 | public class CheckableLinearLayout extends LinearLayout implements Checkable 25 | { 26 | private static final int[] CHECKED_STATE_SET = {android.R.attr.state_checked}; 27 | private boolean mChecked; 28 | 29 | public CheckableLinearLayout(Context context, @Nullable AttributeSet attrs) 30 | { 31 | super(context, attrs); 32 | } 33 | 34 | @Override 35 | public void setChecked(boolean checked) 36 | { 37 | if (mChecked != checked) 38 | { 39 | mChecked = checked; 40 | refreshDrawableState(); 41 | } 42 | } 43 | 44 | @Override 45 | public boolean isChecked() 46 | { 47 | return mChecked; 48 | } 49 | 50 | @Override 51 | public void toggle() 52 | { 53 | setChecked(!mChecked); 54 | } 55 | 56 | @Override 57 | protected int[] onCreateDrawableState(int extraSpace) 58 | { 59 | final int[] drawableState = super.onCreateDrawableState(extraSpace + 1); 60 | if (isChecked()) 61 | { 62 | mergeDrawableStates(drawableState, CHECKED_STATE_SET); 63 | } 64 | return drawableState; 65 | } 66 | } 67 | -------------------------------------------------------------------------------- /DisconnectPro/app/src/main/java/org/strongswan/android/utils/Utils.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (C) 2014-2017 Tobias Brunner 3 | * HSR Hochschule fuer Technik Rapperswil 4 | * 5 | * This program is free software; you can redistribute it and/or modify it 6 | * under the terms of the GNU General Public License as published by the 7 | * Free Software Foundation; either version 2 of the License, or (at your 8 | * option) any later version. See . 9 | * 10 | * This program is distributed in the hope that it will be useful, but 11 | * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY 12 | * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License 13 | * for more details. 14 | */ 15 | 16 | package org.strongswan.android.utils; 17 | 18 | 19 | public class Utils 20 | { 21 | static final char[] HEXDIGITS = "0123456789abcdef".toCharArray(); 22 | 23 | /** 24 | * Converts the given byte array to a hexadecimal string encoding. 25 | * 26 | * @param bytes byte array to convert 27 | * @return hex string 28 | */ 29 | public static String bytesToHex(byte[] bytes) 30 | { 31 | char[] hex = new char[bytes.length * 2]; 32 | for (int i = 0; i < bytes.length; i++) 33 | { 34 | int value = bytes[i]; 35 | hex[i*2] = HEXDIGITS[(value & 0xf0) >> 4]; 36 | hex[i*2+1] = HEXDIGITS[ value & 0x0f]; 37 | } 38 | return new String(hex); 39 | } 40 | 41 | /** 42 | * Validate the given proposal string 43 | * 44 | * @param ike true for IKE, false for ESP 45 | * @param proposal proposal string 46 | * @return true if valid 47 | */ 48 | public native static boolean isProposalValid(boolean ike, String proposal); 49 | } 50 | -------------------------------------------------------------------------------- /DisconnectPro/app/src/main/jni/.gitignore: -------------------------------------------------------------------------------- 1 | openssl 2 | strongswan 3 | -------------------------------------------------------------------------------- /DisconnectPro/app/src/main/jni/Application.mk: -------------------------------------------------------------------------------- 1 | # select the ABI(s) to build for (see CPU-ARCH-ABIS.html in the NDK docs). 2 | APP_PLATFORM := android-19 3 | -------------------------------------------------------------------------------- /DisconnectPro/app/src/main/jni/libandroidbridge/Android.mk: -------------------------------------------------------------------------------- 1 | LOCAL_PATH := $(call my-dir) 2 | include $(CLEAR_VARS) 3 | 4 | # copy-n-paste from Makefile.am 5 | LOCAL_SRC_FILES := \ 6 | android_jni.c \ 7 | backend/android_attr.c \ 8 | backend/android_creds.c \ 9 | backend/android_fetcher.c \ 10 | backend/android_dns_proxy.c \ 11 | backend/android_private_key.c \ 12 | backend/android_service.c \ 13 | charonservice.c \ 14 | kernel/android_ipsec.c \ 15 | kernel/android_net.c \ 16 | kernel/network_manager.c \ 17 | vpnservice_builder.c 18 | 19 | ifneq ($(strongswan_USE_BYOD),) 20 | LOCAL_SRC_FILES += \ 21 | byod/imc_android_state.c \ 22 | byod/imc_android.c 23 | endif 24 | 25 | # build libandroidbridge ------------------------------------------------------- 26 | 27 | LOCAL_C_INCLUDES += \ 28 | $(strongswan_PATH)/src/libipsec \ 29 | $(strongswan_PATH)/src/libcharon \ 30 | $(strongswan_PATH)/src/libstrongswan 31 | 32 | ifneq ($(strongswan_USE_BYOD),) 33 | LOCAL_C_INCLUDES += \ 34 | $(strongswan_PATH)/src/libimcv \ 35 | $(strongswan_PATH)/src/libtncif \ 36 | $(strongswan_PATH)/src/libtnccs \ 37 | $(strongswan_PATH)/src/libtpmtss \ 38 | $(strongswan_PATH)/src/libtls 39 | endif 40 | 41 | LOCAL_CFLAGS := $(strongswan_CFLAGS) \ 42 | -DPLUGINS='"$(strongswan_CHARON_PLUGINS)"' 43 | 44 | ifneq ($(strongswan_USE_BYOD),) 45 | LOCAL_CFLAGS += -DPLUGINS_BYOD='"$(strongswan_BYOD_PLUGINS)"' 46 | endif 47 | 48 | LOCAL_MODULE := libandroidbridge 49 | 50 | LOCAL_MODULE_TAGS := optional 51 | 52 | LOCAL_ARM_MODE := arm 53 | 54 | LOCAL_PRELINK_MODULE := false 55 | 56 | LOCAL_LDLIBS := -llog 57 | 58 | LOCAL_SHARED_LIBRARIES := libstrongswan libipsec libcharon 59 | 60 | ifneq ($(strongswan_USE_BYOD),) 61 | LOCAL_SHARED_LIBRARIES += libimcv libtncif libtnccs libtpmtss 62 | endif 63 | 64 | include $(BUILD_SHARED_LIBRARY) 65 | -------------------------------------------------------------------------------- /DisconnectPro/app/src/main/jni/libandroidbridge/backend/android_attr.h: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (C) 2012 Giuliano Grassi 3 | * Copyright (C) 2012 Ralf Sager 4 | * HSR Hochschule fuer Technik Rapperswil 5 | * 6 | * This program is free software; you can redistribute it and/or modify it 7 | * under the terms of the GNU General Public License as published by the 8 | * Free Software Foundation; either version 2 of the License, or (at your 9 | * option) any later version. See . 10 | * 11 | * This program is distributed in the hope that it will be useful, but 12 | * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY 13 | * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License 14 | * for more details. 15 | */ 16 | 17 | /** 18 | * @defgroup android_attr android_attr 19 | * @{ @ingroup android_backend 20 | */ 21 | 22 | #ifndef ANDROID_ATTR_H_ 23 | #define ANDROID_ATTR_H_ 24 | 25 | #include 26 | #include 27 | 28 | typedef struct android_attr_t android_attr_t; 29 | 30 | /** 31 | * Handler for DNS configuration 32 | */ 33 | struct android_attr_t { 34 | 35 | /** 36 | * implements the attribute_handler_t interface 37 | */ 38 | attribute_handler_t handler; 39 | 40 | /** 41 | * Destroy a android_attr_t 42 | */ 43 | void (*destroy)(android_attr_t *this); 44 | }; 45 | 46 | /** 47 | * Create a android_attr_t instance. 48 | */ 49 | android_attr_t *android_attr_create(void); 50 | 51 | #endif /** ANDROID_ATTR_H_ @}*/ 52 | 53 | -------------------------------------------------------------------------------- /DisconnectPro/app/src/main/jni/libandroidbridge/backend/android_fetcher.h: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (C) 2017 Tobias Brunner 3 | * HSR Hochschule fuer Technik Rapperswil 4 | * 5 | * This program is free software; you can redistribute it and/or modify it 6 | * under the terms of the GNU General Public License as published by the 7 | * Free Software Foundation; either version 2 of the License, or (at your 8 | * option) any later version. See . 9 | * 10 | * This program is distributed in the hope that it will be useful, but 11 | * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY 12 | * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License 13 | * for more details. 14 | */ 15 | 16 | /** 17 | * @defgroup android_fetcher android_fetcher 18 | * @{ @ingroup android_backend 19 | */ 20 | 21 | #ifndef ANDROID_FETCHER_H_ 22 | #define ANDROID_FETCHER_H_ 23 | 24 | #include 25 | 26 | /** 27 | * Create an Android-specific fetcher instance based on SimpleFetcher 28 | * 29 | * @return fetcher_t instance 30 | */ 31 | fetcher_t *android_fetcher_create(); 32 | 33 | #endif /** ANDROID_FETCHER_H_ @}*/ 34 | -------------------------------------------------------------------------------- /DisconnectPro/app/src/main/jni/libandroidbridge/backend/android_private_key.h: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (C) 2012 Tobias Brunner 3 | * HSR Hochschule fuer Technik Rapperswil 4 | * 5 | * This program is free software; you can redistribute it and/or modify it 6 | * under the terms of the GNU General Public License as published by the 7 | * Free Software Foundation; either version 2 of the License, or (at your 8 | * option) any later version. See . 9 | * 10 | * This program is distributed in the hope that it will be useful, but 11 | * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY 12 | * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License 13 | * for more details. 14 | */ 15 | 16 | /** 17 | * @defgroup android_private_key android_private_key 18 | * @{ @ingroup android_backend 19 | */ 20 | 21 | #ifndef ANDROID_PRIVATE_KEY_H_ 22 | #define ANDROID_PRIVATE_KEY_H_ 23 | 24 | #include 25 | 26 | #include 27 | 28 | /** 29 | * Create a JNI backed key, stored in the Android KeyChain 30 | * 31 | * @param key PrivateKey instance 32 | * @param pubkey public key as extracted from the certificate (gets adopted) 33 | * @return private_key_t instance 34 | */ 35 | private_key_t *android_private_key_create(jobject key, public_key_t *pubkey); 36 | 37 | #endif /** ANDROID_PRIVATE_KEY_H_ @}*/ 38 | 39 | -------------------------------------------------------------------------------- /DisconnectPro/app/src/main/jni/libandroidbridge/backend/android_service.h: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (C) 2010-2015 Tobias Brunner 3 | * Copyright (C) 2012 Giuliano Grassi 4 | * Copyright (C) 2012 Ralf Sager 5 | * HSR Hochschule fuer Technik Rapperswil 6 | * 7 | * This program is free software; you can redistribute it and/or modify it 8 | * under the terms of the GNU General Public License as published by the 9 | * Free Software Foundation; either version 2 of the License, or (at your 10 | * option) any later version. See . 11 | * 12 | * This program is distributed in the hope that it will be useful, but 13 | * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY 14 | * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License 15 | * for more details. 16 | */ 17 | 18 | /** 19 | * @defgroup android_service android_service 20 | * @{ @ingroup android_backend 21 | */ 22 | 23 | #ifndef ANDROID_SERVICE_H_ 24 | #define ANDROID_SERVICE_H_ 25 | 26 | #include "android_creds.h" 27 | 28 | #include 29 | #include 30 | 31 | typedef struct android_service_t android_service_t; 32 | 33 | /** 34 | * Service that sets up an IKE_SA/CHILD_SA and handles events 35 | */ 36 | struct android_service_t { 37 | 38 | /** 39 | * Implements listener_t. 40 | */ 41 | listener_t listener; 42 | 43 | /** 44 | * Destroy a android_service_t. 45 | */ 46 | void (*destroy)(android_service_t *this); 47 | 48 | }; 49 | 50 | /** 51 | * Create an Android service instance. Queues a job that starts initiation of a 52 | * new IKE SA. 53 | * 54 | * @param creds Android specific credential set 55 | * @param settings configuration settings (gets adopted) 56 | */ 57 | android_service_t *android_service_create(android_creds_t *creds, 58 | settings_t *settings); 59 | 60 | #endif /** ANDROID_SERVICE_H_ @}*/ 61 | -------------------------------------------------------------------------------- /DisconnectPro/app/src/main/jni/libandroidbridge/byod/imc_android.h: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (C) 2013 Tobias Brunner 3 | * HSR Hochschule fuer Technik Rapperswil 4 | * 5 | * This program is free software; you can redistribute it and/or modify it 6 | * under the terms of the GNU General Public License as published by the 7 | * Free Software Foundation; either version 2 of the License, or (at your 8 | * option) any later version. See . 9 | * 10 | * This program is distributed in the hope that it will be useful, but 11 | * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY 12 | * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License 13 | * for more details. 14 | */ 15 | 16 | /** 17 | * @defgroup android_imc android_imc 18 | * @{ @ingroup android_byod 19 | */ 20 | 21 | #ifndef ANDROID_IMC_H_ 22 | #define ANDROID_IMC_H_ 23 | 24 | /** 25 | * Callback for the Android IMC plugin 26 | */ 27 | bool imc_android_register(plugin_t *plugin, plugin_feature_t *feature, 28 | bool reg, void *data); 29 | 30 | #endif /** ANDROID_IMC_H_ @}*/ 31 | -------------------------------------------------------------------------------- /DisconnectPro/app/src/main/jni/libandroidbridge/byod/imc_android_state.h: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (C) 2012 Tobias Brunner 3 | * HSR Hochschule fuer Technik Rapperswil 4 | * 5 | * This program is free software; you can redistribute it and/or modify it 6 | * under the terms of the GNU General Public License as published by the 7 | * Free Software Foundation; either version 2 of the License, or (at your 8 | * option) any later version. See . 9 | * 10 | * This program is distributed in the hope that it will be useful, but 11 | * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY 12 | * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License 13 | * for more details. 14 | */ 15 | 16 | /** 17 | * @defgroup imc_android_state imc_android_state 18 | * @{ @ingroup android_byod 19 | */ 20 | 21 | #ifndef IMC_ANDROID_STATE_H_ 22 | #define IMC_ANDROID_STATE_H_ 23 | 24 | #include 25 | #include 26 | 27 | typedef struct imc_android_state_t imc_android_state_t; 28 | 29 | /** 30 | * Internal state of an imc_android_t connection instance 31 | */ 32 | struct imc_android_state_t { 33 | 34 | /** 35 | * imc_state_t interface 36 | */ 37 | imc_state_t interface; 38 | 39 | /** 40 | * Get TCG Platform Trust Service (PTS) object 41 | */ 42 | pts_t *(*get_pts)(imc_android_state_t *this); 43 | }; 44 | 45 | /** 46 | * Create an imc_android_state_t instance 47 | * 48 | * @param id connection ID 49 | */ 50 | imc_state_t* imc_android_state_create(TNC_ConnectionID id); 51 | 52 | #endif /** IMC_ANDROID_STATE_H_ @}*/ 53 | -------------------------------------------------------------------------------- /DisconnectPro/app/src/main/jni/libandroidbridge/kernel/android_ipsec.h: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (C) 2012 Giuliano Grassi 3 | * Copyright (C) 2012 Ralf Sager 4 | * HSR Hochschule fuer Technik Rapperswil 5 | * 6 | * This program is free software; you can redistribute it and/or modify it 7 | * under the terms of the GNU General Public License as published by the 8 | * Free Software Foundation; either version 2 of the License, or (at your 9 | * option) any later version. See . 10 | * 11 | * This program is distributed in the hope that it will be useful, but 12 | * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY 13 | * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License 14 | * for more details. 15 | */ 16 | 17 | /** 18 | * @defgroup kernel_android_ipsec kernel_android_ipsec 19 | * @{ @ingroup android_kernel 20 | */ 21 | 22 | #ifndef KERNEL_ANDROID_IPSEC_H_ 23 | #define KERNEL_ANDROID_IPSEC_H_ 24 | 25 | #include 26 | #include 27 | 28 | typedef struct kernel_android_ipsec_t kernel_android_ipsec_t; 29 | 30 | /** 31 | * Implementation of the ipsec interface using libipsec on Android 32 | */ 33 | struct kernel_android_ipsec_t { 34 | 35 | /** 36 | * Implements kernel_ipsec_t interface 37 | */ 38 | kernel_ipsec_t interface; 39 | }; 40 | 41 | /** 42 | * Create a android ipsec interface instance. 43 | * 44 | * @return kernel_android_ipsec_t instance 45 | */ 46 | kernel_android_ipsec_t *kernel_android_ipsec_create(); 47 | 48 | #endif /** KERNEL_ANDROID_IPSEC_H_ @}*/ 49 | -------------------------------------------------------------------------------- /DisconnectPro/app/src/main/jni/libandroidbridge/kernel/android_net.h: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (C) 2012-2015 Tobias Brunner 3 | * HSR Hochschule fuer Technik Rapperswil 4 | * 5 | * This program is free software; you can redistribute it and/or modify it 6 | * under the terms of the GNU General Public License as published by the 7 | * Free Software Foundation; either version 2 of the License, or (at your 8 | * option) any later version. See . 9 | * 10 | * This program is distributed in the hope that it will be useful, but 11 | * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY 12 | * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License 13 | * for more details. 14 | */ 15 | 16 | /** 17 | * @defgroup android_net android_net 18 | * @{ @ingroup android_kernel 19 | */ 20 | 21 | #ifndef ANDROID_NET_H_ 22 | #define ANDROID_NET_H_ 23 | 24 | #include 25 | #include 26 | 27 | /** 28 | * Create an Android-specific kernel_net_t instance. 29 | * 30 | * @return kernel_net_t instance 31 | */ 32 | kernel_net_t *kernel_android_net_create(); 33 | 34 | 35 | #endif /** ANDROID_NET_H_ @}*/ 36 | -------------------------------------------------------------------------------- /DisconnectPro/app/src/main/res/color/checkable_text_color.xml: -------------------------------------------------------------------------------- 1 | 2 | 16 | 17 | 18 | 19 | 20 | -------------------------------------------------------------------------------- /DisconnectPro/app/src/main/res/drawable-hdpi/ic_close_white_24dp.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/disconnectme/premium-android/8fe2f1414dc0267f376a33842d6f1f7e2f6595b5/DisconnectPro/app/src/main/res/drawable-hdpi/ic_close_white_24dp.png -------------------------------------------------------------------------------- /DisconnectPro/app/src/main/res/drawable-hdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/disconnectme/premium-android/8fe2f1414dc0267f376a33842d6f1f7e2f6595b5/DisconnectPro/app/src/main/res/drawable-hdpi/ic_launcher.png -------------------------------------------------------------------------------- /DisconnectPro/app/src/main/res/drawable-hdpi/ic_notification.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/disconnectme/premium-android/8fe2f1414dc0267f376a33842d6f1f7e2f6595b5/DisconnectPro/app/src/main/res/drawable-hdpi/ic_notification.png -------------------------------------------------------------------------------- /DisconnectPro/app/src/main/res/drawable-hdpi/ic_notification_connecting.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/disconnectme/premium-android/8fe2f1414dc0267f376a33842d6f1f7e2f6595b5/DisconnectPro/app/src/main/res/drawable-hdpi/ic_notification_connecting.png -------------------------------------------------------------------------------- /DisconnectPro/app/src/main/res/drawable-hdpi/ic_notification_disconnect.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/disconnectme/premium-android/8fe2f1414dc0267f376a33842d6f1f7e2f6595b5/DisconnectPro/app/src/main/res/drawable-hdpi/ic_notification_disconnect.png -------------------------------------------------------------------------------- /DisconnectPro/app/src/main/res/drawable-hdpi/ic_notification_disconnected.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/disconnectme/premium-android/8fe2f1414dc0267f376a33842d6f1f7e2f6595b5/DisconnectPro/app/src/main/res/drawable-hdpi/ic_notification_disconnected.png -------------------------------------------------------------------------------- /DisconnectPro/app/src/main/res/drawable-hdpi/ic_notification_warning.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/disconnectme/premium-android/8fe2f1414dc0267f376a33842d6f1f7e2f6595b5/DisconnectPro/app/src/main/res/drawable-hdpi/ic_notification_warning.png -------------------------------------------------------------------------------- /DisconnectPro/app/src/main/res/drawable-mdpi/ic_close_white_24dp.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/disconnectme/premium-android/8fe2f1414dc0267f376a33842d6f1f7e2f6595b5/DisconnectPro/app/src/main/res/drawable-mdpi/ic_close_white_24dp.png -------------------------------------------------------------------------------- /DisconnectPro/app/src/main/res/drawable-mdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/disconnectme/premium-android/8fe2f1414dc0267f376a33842d6f1f7e2f6595b5/DisconnectPro/app/src/main/res/drawable-mdpi/ic_launcher.png -------------------------------------------------------------------------------- /DisconnectPro/app/src/main/res/drawable-mdpi/ic_notification.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/disconnectme/premium-android/8fe2f1414dc0267f376a33842d6f1f7e2f6595b5/DisconnectPro/app/src/main/res/drawable-mdpi/ic_notification.png -------------------------------------------------------------------------------- /DisconnectPro/app/src/main/res/drawable-mdpi/ic_notification_connecting.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/disconnectme/premium-android/8fe2f1414dc0267f376a33842d6f1f7e2f6595b5/DisconnectPro/app/src/main/res/drawable-mdpi/ic_notification_connecting.png -------------------------------------------------------------------------------- /DisconnectPro/app/src/main/res/drawable-mdpi/ic_notification_disconnect.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/disconnectme/premium-android/8fe2f1414dc0267f376a33842d6f1f7e2f6595b5/DisconnectPro/app/src/main/res/drawable-mdpi/ic_notification_disconnect.png -------------------------------------------------------------------------------- /DisconnectPro/app/src/main/res/drawable-mdpi/ic_notification_disconnected.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/disconnectme/premium-android/8fe2f1414dc0267f376a33842d6f1f7e2f6595b5/DisconnectPro/app/src/main/res/drawable-mdpi/ic_notification_disconnected.png -------------------------------------------------------------------------------- /DisconnectPro/app/src/main/res/drawable-mdpi/ic_notification_warning.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/disconnectme/premium-android/8fe2f1414dc0267f376a33842d6f1f7e2f6595b5/DisconnectPro/app/src/main/res/drawable-mdpi/ic_notification_warning.png -------------------------------------------------------------------------------- /DisconnectPro/app/src/main/res/drawable-xhdpi/ic_close_white_24dp.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/disconnectme/premium-android/8fe2f1414dc0267f376a33842d6f1f7e2f6595b5/DisconnectPro/app/src/main/res/drawable-xhdpi/ic_close_white_24dp.png -------------------------------------------------------------------------------- /DisconnectPro/app/src/main/res/drawable-xhdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/disconnectme/premium-android/8fe2f1414dc0267f376a33842d6f1f7e2f6595b5/DisconnectPro/app/src/main/res/drawable-xhdpi/ic_launcher.png -------------------------------------------------------------------------------- /DisconnectPro/app/src/main/res/drawable-xhdpi/ic_notification.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/disconnectme/premium-android/8fe2f1414dc0267f376a33842d6f1f7e2f6595b5/DisconnectPro/app/src/main/res/drawable-xhdpi/ic_notification.png -------------------------------------------------------------------------------- /DisconnectPro/app/src/main/res/drawable-xhdpi/ic_notification_connecting.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/disconnectme/premium-android/8fe2f1414dc0267f376a33842d6f1f7e2f6595b5/DisconnectPro/app/src/main/res/drawable-xhdpi/ic_notification_connecting.png -------------------------------------------------------------------------------- /DisconnectPro/app/src/main/res/drawable-xhdpi/ic_notification_disconnect.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/disconnectme/premium-android/8fe2f1414dc0267f376a33842d6f1f7e2f6595b5/DisconnectPro/app/src/main/res/drawable-xhdpi/ic_notification_disconnect.png -------------------------------------------------------------------------------- /DisconnectPro/app/src/main/res/drawable-xhdpi/ic_notification_disconnected.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/disconnectme/premium-android/8fe2f1414dc0267f376a33842d6f1f7e2f6595b5/DisconnectPro/app/src/main/res/drawable-xhdpi/ic_notification_disconnected.png -------------------------------------------------------------------------------- /DisconnectPro/app/src/main/res/drawable-xhdpi/ic_notification_warning.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/disconnectme/premium-android/8fe2f1414dc0267f376a33842d6f1f7e2f6595b5/DisconnectPro/app/src/main/res/drawable-xhdpi/ic_notification_warning.png -------------------------------------------------------------------------------- /DisconnectPro/app/src/main/res/drawable/activated_background.xml: -------------------------------------------------------------------------------- 1 | 2 | 16 | 17 | 18 | 21 | 22 | 25 | 26 | 29 | 30 | 32 | 33 | 34 | -------------------------------------------------------------------------------- /DisconnectPro/app/src/main/res/drawable/error_background.xml: -------------------------------------------------------------------------------- 1 | 2 | 16 | 17 | 18 | 19 | 20 | 22 | 23 | 24 | 25 | 26 | 27 | 29 | 30 | 31 | 32 | 33 | -------------------------------------------------------------------------------- /DisconnectPro/app/src/main/res/drawable/remediation_instruction_background_large.xml: -------------------------------------------------------------------------------- 1 | 2 | 16 | 17 | 18 | 19 | 20 | 22 | 23 | 24 | 25 | 26 | 27 | 29 | 30 | 31 | 32 | 33 | -------------------------------------------------------------------------------- /DisconnectPro/app/src/main/res/drawable/state_background.xml: -------------------------------------------------------------------------------- 1 | 2 | 16 | 17 | 18 | 19 | 20 | 22 | 23 | 24 | 25 | 26 | 27 | 29 | 30 | 31 | 32 | 33 | -------------------------------------------------------------------------------- /DisconnectPro/app/src/main/res/layout-large/remediation_instructions.xml: -------------------------------------------------------------------------------- 1 | 2 | 16 | 21 | 22 | 28 | 29 | 35 | 36 | 41 | 42 | 43 | 44 | 45 | -------------------------------------------------------------------------------- /DisconnectPro/app/src/main/res/layout/log_activity.xml: -------------------------------------------------------------------------------- 1 | 2 | 16 | 19 | 20 | 25 | 26 | 27 | -------------------------------------------------------------------------------- /DisconnectPro/app/src/main/res/layout/log_fragment.xml: -------------------------------------------------------------------------------- 1 | 2 | 16 | 20 | 21 | 32 | 33 | 34 | 35 | 36 | -------------------------------------------------------------------------------- /DisconnectPro/app/src/main/res/layout/log_list_item.xml: -------------------------------------------------------------------------------- 1 | 2 | 16 | 24 | -------------------------------------------------------------------------------- /DisconnectPro/app/src/main/res/layout/main.xml: -------------------------------------------------------------------------------- 1 | 2 | 16 | 20 | 21 | 26 | 27 | 32 | 33 | 39 | 40 | 41 | -------------------------------------------------------------------------------- /DisconnectPro/app/src/main/res/layout/profile_list_fragment.xml: -------------------------------------------------------------------------------- 1 | 2 | 16 | 23 | 24 | 31 | 32 | 37 | 38 | 39 | -------------------------------------------------------------------------------- /DisconnectPro/app/src/main/res/layout/remediation_instructions.xml: -------------------------------------------------------------------------------- 1 | 2 | 16 | 20 | 21 | -------------------------------------------------------------------------------- /DisconnectPro/app/src/main/res/layout/trusted_certificates_activity.xml: -------------------------------------------------------------------------------- 1 | 2 | 16 | 21 | 22 | 28 | 29 | 34 | 35 | 36 | -------------------------------------------------------------------------------- /DisconnectPro/app/src/main/res/layout/trusted_certificates_item.xml: -------------------------------------------------------------------------------- 1 | 2 | 16 | 22 | 23 | 27 | 28 | 35 | 36 | 37 | -------------------------------------------------------------------------------- /DisconnectPro/app/src/main/res/layout/two_line_button.xml: -------------------------------------------------------------------------------- 1 | 2 | 16 | 24 | 25 | 30 | 31 | 39 | 40 | 41 | -------------------------------------------------------------------------------- /DisconnectPro/app/src/main/res/layout/vpn_profile_select.xml: -------------------------------------------------------------------------------- 1 | 2 | 16 | 21 | 22 | 29 | 30 | -------------------------------------------------------------------------------- /DisconnectPro/app/src/main/res/menu/certificates.xml: -------------------------------------------------------------------------------- 1 | 2 | 16 | 18 | 19 | 23 | 24 | 28 | 29 | 30 | -------------------------------------------------------------------------------- /DisconnectPro/app/src/main/res/menu/log.xml: -------------------------------------------------------------------------------- 1 | 2 | 16 | 18 | 19 | 23 | 24 | 25 | -------------------------------------------------------------------------------- /DisconnectPro/app/src/main/res/menu/main.xml: -------------------------------------------------------------------------------- 1 | 2 | 16 | 18 | 19 | 23 | 24 | 28 | 29 | 33 | 34 | 38 | 39 | 43 | 44 | 45 | -------------------------------------------------------------------------------- /DisconnectPro/app/src/main/res/menu/profile_edit.xml: -------------------------------------------------------------------------------- 1 | 2 | 16 | 18 | 19 | 23 | 24 | 28 | 29 | 30 | -------------------------------------------------------------------------------- /DisconnectPro/app/src/main/res/menu/profile_import.xml: -------------------------------------------------------------------------------- 1 | 2 | 16 | 18 | 19 | 23 | 24 | 25 | -------------------------------------------------------------------------------- /DisconnectPro/app/src/main/res/menu/profile_list.xml: -------------------------------------------------------------------------------- 1 | 2 | 16 | 18 | 19 | 22 | 23 | 24 | -------------------------------------------------------------------------------- /DisconnectPro/app/src/main/res/menu/profile_list_context.xml: -------------------------------------------------------------------------------- 1 | 2 | 16 | 17 | 18 | 20 | 21 | 23 | 24 | 25 | -------------------------------------------------------------------------------- /DisconnectPro/app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml: -------------------------------------------------------------------------------- 1 | 2 | 16 | 17 | 18 | 19 | 20 | -------------------------------------------------------------------------------- /DisconnectPro/app/src/main/res/mipmap-anydpi-v26/ic_shortcut.xml: -------------------------------------------------------------------------------- 1 | 2 | 16 | 17 | 18 | 19 | 20 | -------------------------------------------------------------------------------- /DisconnectPro/app/src/main/res/mipmap-anydpi/ic_launcher.xml: -------------------------------------------------------------------------------- 1 | 2 | 16 | -------------------------------------------------------------------------------- /DisconnectPro/app/src/main/res/mipmap-anydpi/ic_shortcut.xml: -------------------------------------------------------------------------------- 1 | 2 | 16 | -------------------------------------------------------------------------------- /DisconnectPro/app/src/main/res/mipmap-xxxhdpi-v26/ic_launcher_bg.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/disconnectme/premium-android/8fe2f1414dc0267f376a33842d6f1f7e2f6595b5/DisconnectPro/app/src/main/res/mipmap-xxxhdpi-v26/ic_launcher_bg.png -------------------------------------------------------------------------------- /DisconnectPro/app/src/main/res/mipmap-xxxhdpi-v26/ic_launcher_fg.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/disconnectme/premium-android/8fe2f1414dc0267f376a33842d6f1f7e2f6595b5/DisconnectPro/app/src/main/res/mipmap-xxxhdpi-v26/ic_launcher_fg.png -------------------------------------------------------------------------------- /DisconnectPro/app/src/main/res/mipmap-xxxhdpi-v26/ic_shortcut_bg.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/disconnectme/premium-android/8fe2f1414dc0267f376a33842d6f1f7e2f6595b5/DisconnectPro/app/src/main/res/mipmap-xxxhdpi-v26/ic_shortcut_bg.png -------------------------------------------------------------------------------- /DisconnectPro/app/src/main/res/mipmap-xxxhdpi-v26/ic_shortcut_fg.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/disconnectme/premium-android/8fe2f1414dc0267f376a33842d6f1f7e2f6595b5/DisconnectPro/app/src/main/res/mipmap-xxxhdpi-v26/ic_shortcut_fg.png -------------------------------------------------------------------------------- /DisconnectPro/app/src/main/res/values-de/arrays.xml: -------------------------------------------------------------------------------- 1 | 2 | 16 | 17 | 18 | 19 | IKEv2 EAP (Benutzername/Passwort) 20 | IKEv2 Zertifikat 21 | IKEv2 Zertifikat + EAP (Benutzername/Passwort) 22 | IKEv2 EAP-TLS (Zertifikat) 23 | IKEv2 EAP-TNC (Benutzername/Passwort) 24 | 25 | 26 | 27 | 28 | Alle Apps verwenden das VPN 29 | Ausgewählte Apps vom VPN ausschliessen 30 | Nur ausgewählte Apps verwenden das VPN 31 | 32 | -------------------------------------------------------------------------------- /DisconnectPro/app/src/main/res/values-pl/arrays.xml: -------------------------------------------------------------------------------- 1 | 2 | 16 | 17 | 18 | 19 | IKEv2 EAP (użytkownik/hasło) 20 | IKEv2 certyfikat 21 | IKEv2 certyfikat + EAP (użytkownik/hasło) 22 | IKEv2 EAP-TLS (certyfikat) 23 | IKEv2 EAP-TNC (użytkownik/hasło) 24 | 25 | 26 | 27 | 28 | All applications use the VPN 29 | Exclude selected applications from the VPN 30 | Only selected applications use the VPN 31 | 32 | -------------------------------------------------------------------------------- /DisconnectPro/app/src/main/res/values-ru/arrays.xml: -------------------------------------------------------------------------------- 1 | 2 | 15 | 16 | 17 | 18 | IKEv2 EAP (Логин/Пароль) 19 | IKEv2 Сертификат 20 | IKEv2 Сертификат + EAP (Логин/Пароль) 21 | IKEv2 EAP-TLS (Сертификат) 22 | IKEv2 EAP-TNC (Логин/Пароль) 23 | 24 | 25 | 26 | 27 | All applications use the VPN 28 | Exclude selected applications from the VPN 29 | Only selected applications use the VPN 30 | 31 | 32 | -------------------------------------------------------------------------------- /DisconnectPro/app/src/main/res/values-ua/arrays.xml: -------------------------------------------------------------------------------- 1 | 2 | 15 | 16 | 17 | 18 | IKEv2 EAP (Логін/Пароль) 19 | IKEv2 Сертифікати 20 | IKEv2 Сертифікати + EAP (Логін/Пароль) 21 | IKEv2 EAP-TLS (Сертифікати) 22 | IKEv2 EAP-TNC (Логін/Пароль) 23 | 24 | 25 | 26 | 27 | All applications use the VPN 28 | Exclude selected applications from the VPN 29 | Only selected applications use the VPN 30 | 31 | 32 | -------------------------------------------------------------------------------- /DisconnectPro/app/src/main/res/values-v15/styles.xml: -------------------------------------------------------------------------------- 1 | 2 | 16 | 17 | 18 | 22 | 23 | 26 | 27 | -------------------------------------------------------------------------------- /DisconnectPro/app/src/main/res/values-v21/styles.xml: -------------------------------------------------------------------------------- 1 | 2 | 16 | 17 | 18 | 20 | 21 | 23 | 24 | -------------------------------------------------------------------------------- /DisconnectPro/app/src/main/res/values-zh-rCN/arrays.xml: -------------------------------------------------------------------------------- 1 | 2 | 15 | 16 | 17 | 18 | IKEv2 EAP (用户名/密码) 19 | IKEv2 证书 20 | IKEv2 证书 + EAP (用户名/密码) 21 | IKEv2 EAP-TLS (证书) 22 | IKEv2 EAP-TNC (用户名/密码) 23 | 24 | 25 | 26 | 27 | All applications use the VPN 28 | Exclude selected applications from the VPN 29 | Only selected applications use the VPN 30 | 31 | -------------------------------------------------------------------------------- /DisconnectPro/app/src/main/res/values-zh-rTW/arrays.xml: -------------------------------------------------------------------------------- 1 | 2 | 15 | 16 | 17 | 18 | IKEv2 EAP (用戶名稱/密碼) 19 | IKEv2 憑證 20 | IKEv2 憑證 + EAP (用戶名稱/密碼) 21 | IKEv2 EAP-TLS (憑證) 22 | IKEv2 EAP-TNC (用戶名稱/密碼) 23 | 24 | 25 | 26 | 27 | All applications use the VPN 28 | Exclude selected applications from the VPN 29 | Only selected applications use the VPN 30 | 31 | -------------------------------------------------------------------------------- /DisconnectPro/app/src/main/res/values/arrays.xml: -------------------------------------------------------------------------------- 1 | 2 | 16 | 17 | 18 | 19 | IKEv2 EAP (Username/Password) 20 | IKEv2 Certificate 21 | IKEv2 Certificate + EAP (Username/Password) 22 | IKEv2 EAP-TLS (Certificate) 23 | IKEv2 EAP-TNC (Username/Password) 24 | 25 | 26 | 27 | 28 | All applications use the VPN 29 | Exclude selected applications from the VPN 30 | Only selected applications use the VPN 31 | 32 | 33 | -------------------------------------------------------------------------------- /DisconnectPro/app/src/main/res/values/attrs.xml: -------------------------------------------------------------------------------- 1 | 2 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | -------------------------------------------------------------------------------- /DisconnectPro/app/src/main/res/values/colors.xml: -------------------------------------------------------------------------------- 1 | 2 | 16 | 17 | 18 | #96BDC2 20 | 21 | #A2042C 23 | 24 | #323232 26 | 27 | #D9192C 29 | 30 | #FF9909 32 | 33 | #99CC00 35 | 36 | #444444 38 | 39 | #5a5a5a 41 | 42 | #4a4a4a 44 | 45 | #5a5a5a 47 | 48 | 49 | -------------------------------------------------------------------------------- /DisconnectPro/app/src/main/res/xml/settings.xml: -------------------------------------------------------------------------------- 1 | 2 | 16 | 17 | 18 | 22 | 23 | 24 | -------------------------------------------------------------------------------- /DisconnectPro/build.gradle: -------------------------------------------------------------------------------- 1 | buildscript { 2 | repositories { 3 | jcenter() 4 | maven { 5 | url 'https://maven.google.com/' 6 | name 'Google' 7 | } 8 | google() 9 | } 10 | dependencies { 11 | classpath 'com.android.tools.build:gradle:3.2.1' 12 | } 13 | } 14 | 15 | allprojects { 16 | repositories { 17 | jcenter() 18 | maven { 19 | url 'https://maven.google.com/' 20 | name 'Google' 21 | } 22 | maven { url "https://jitpack.io" } 23 | } 24 | } 25 | -------------------------------------------------------------------------------- /DisconnectPro/disconnect/.gitignore: -------------------------------------------------------------------------------- 1 | /build 2 | -------------------------------------------------------------------------------- /DisconnectPro/disconnect/proguard-rules.pro: -------------------------------------------------------------------------------- 1 | # Add project specific ProGuard rules here. 2 | # You can control the set of applied configuration files using the 3 | # proguardFiles setting in build.gradle. 4 | # 5 | # For more details, see 6 | # http://developer.android.com/guide/developing/tools/proguard.html 7 | 8 | # If your project uses WebView with JS, uncomment the following 9 | # and specify the fully qualified class name to the JavaScript interface 10 | # class: 11 | #-keepclassmembers class fqcn.of.javascript.interface.for.webview { 12 | # public *; 13 | #} 14 | 15 | # Uncomment this to preserve the line number information for 16 | # debugging stack traces. 17 | #-keepattributes SourceFile,LineNumberTable 18 | 19 | # If you keep the line number information, uncomment this to 20 | # hide the original source file name. 21 | #-renamesourcefileattribute SourceFile 22 | -------------------------------------------------------------------------------- /DisconnectPro/disconnect/src/androidTest/java/pro/disconnect/me/ExampleInstrumentedTest.java: -------------------------------------------------------------------------------- 1 | package pro.disconnect.me; 2 | 3 | import android.content.Context; 4 | import android.support.test.InstrumentationRegistry; 5 | import android.support.test.runner.AndroidJUnit4; 6 | 7 | import org.junit.Test; 8 | import org.junit.runner.RunWith; 9 | 10 | import static org.junit.Assert.*; 11 | 12 | /** 13 | * Instrumented test, which will execute on an Android device. 14 | * 15 | * @see Testing documentation 16 | */ 17 | @RunWith(AndroidJUnit4.class) 18 | public class ExampleInstrumentedTest { 19 | @Test 20 | public void useAppContext() throws Exception { 21 | // Context of the app under test. 22 | Context appContext = InstrumentationRegistry.getTargetContext(); 23 | 24 | assertEquals("pro.disconnect.me", appContext.getPackageName()); 25 | } 26 | } 27 | -------------------------------------------------------------------------------- /DisconnectPro/disconnect/src/main/assets/ca.crt: -------------------------------------------------------------------------------- 1 | -----BEGIN CERTIFICATE----- 2 | MIIDTTCCAjWgAwIBAgIJAM/IFDRgaXoMMA0GCSqGSIb3DQEBCwUAMB4xHDAaBgNV 3 | BAMTE0Rpc2Nvbm5lY3QsIEluYy4gQ0EwHhcNMTQwNDA4MjIyMTE0WhcNMjQwNDA1 4 | MjIyMTE0WjAeMRwwGgYDVQQDExNEaXNjb25uZWN0LCBJbmMuIENBMIIBIjANBgkq 5 | hkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAvOwzh/7LQYf7Bb9dMbRx8bHmJ4DMdYW9 6 | 1/K6oShaEFdPxh0Xpe2cuun21jkJ/mJvWDd6Meim9GJgtS45KFHrTZqqwIHttzK8 7 | 0PVugPJDgT/LJqQg1+UzvKOoQx7Z5ckFxgvIL9pY/A2ZVOwt0vdRDReLXA7AlIWX 8 | zESllbWcvg73KsmnUwduTuGmIfWqQbnmOacdm9elf9RWDSSkuoirbAIHOK9muiMk 9 | 4kyEGtQNm34L81RmWZRwC4QkYTad6z8ZvBmNO9HM5HH6nmQobxxfgOdjfBltnXWQ 10 | AS9V6921AQbyCt1XV/3jkyX/WWxl0HH2hB0P1Hf2cDX1x/3PIXuUaQIDAQABo4GN 11 | MIGKMB0GA1UdDgQWBBQCcO4qIKY8oCPLbVe6YS/ujSU5vzBOBgNVHSMERzBFgBQC 12 | cO4qIKY8oCPLbVe6YS/ujSU5v6EipCAwHjEcMBoGA1UEAxMTRGlzY29ubmVjdCwg 13 | SW5jLiBDQYIJAM/IFDRgaXoMMAwGA1UdEwQFMAMBAf8wCwYDVR0PBAQDAgEGMA0G 14 | CSqGSIb3DQEBCwUAA4IBAQB0xuZLmxC8mtvyqgOl9UzAalw8Y8LMggPjZQPM6T4J 15 | bczzA/H8dD2HjvUU16Dd67k1qbw+3WsPdXt20x+L1E4gAHzgpQGYO6bjOrtiSyIz 16 | DX7cJshSjFhR3eiB5BLzj7diBcABynQHRjeKyPiTCW0W1476BvZhO5iT2yDG+/lL 17 | SvJx7VFSeaXIzJrixiO1TBRtJIRCZSwu4COc/zjkR7uKyQAvO9x89sZIMefmPzJL 18 | bTJI6w9xGQdnDNQAedqsB/CaU3QFTav60r7w/x6DycLj5ud80NAy7Lav0VPxOrrZ 19 | vTljrf2aVi/9ThIpz6kqFySKY2GdalcauXcyOYESuZzv 20 | -----END CERTIFICATE----- 21 | -------------------------------------------------------------------------------- /DisconnectPro/disconnect/src/main/java/pro/disconnect/me/StartUpViewModel.java: -------------------------------------------------------------------------------- 1 | package pro.disconnect.me; 2 | 3 | import android.arch.lifecycle.LiveData; 4 | import android.arch.lifecycle.ViewModel; 5 | import android.content.Context; 6 | 7 | import org.strongswan.android.data.VpnProfile; 8 | 9 | import pro.disconnect.me.comms.CommsEngine; 10 | 11 | import pro.disconnect.me.comms.utils.Resource; 12 | 13 | public class StartUpViewModel extends ViewModel { 14 | private LiveData> mVpnProfile; 15 | private CommsEngine mCommsEngine; 16 | 17 | public LiveData> getVpnProfile() { 18 | return mVpnProfile; 19 | } 20 | 21 | public void init(Context aContext) { 22 | if (mCommsEngine == null) { 23 | mCommsEngine = CommsEngine.getInstance(aContext); 24 | mVpnProfile = mCommsEngine.start(); 25 | } 26 | } 27 | } -------------------------------------------------------------------------------- /DisconnectPro/disconnect/src/main/java/pro/disconnect/me/UpgradeViewModel.java: -------------------------------------------------------------------------------- 1 | package pro.disconnect.me; 2 | 3 | import android.arch.lifecycle.LiveData; 4 | import android.arch.lifecycle.ViewModel; 5 | import android.content.Context; 6 | 7 | 8 | import pro.disconnect.me.comms.CommsEngine; 9 | import pro.disconnect.me.comms.utils.Resource; 10 | 11 | public class UpgradeViewModel extends ViewModel{ 12 | private LiveData> mUpgradeStatus; 13 | private CommsEngine mCommsEngine; 14 | 15 | public LiveData> applyUpgradeCode(Context aContext, String aUpgradeCode){ 16 | mCommsEngine = CommsEngine.getInstance(aContext); 17 | return mCommsEngine.applyUpgradeCode(aUpgradeCode); 18 | } 19 | } 20 | -------------------------------------------------------------------------------- /DisconnectPro/disconnect/src/main/java/pro/disconnect/me/billing/SkusViewModel.java: -------------------------------------------------------------------------------- 1 | package pro.disconnect.me.billing; 2 | 3 | 4 | import android.app.Activity; 5 | import android.arch.lifecycle.LiveData; 6 | import android.arch.lifecycle.ViewModel; 7 | import android.content.Context; 8 | 9 | import com.android.billingclient.api.SkuDetails; 10 | 11 | import org.strongswan.android.data.VpnProfile; 12 | 13 | import java.util.List; 14 | 15 | import pro.disconnect.me.comms.CommsEngine; 16 | import pro.disconnect.me.comms.models.Post; 17 | import pro.disconnect.me.comms.utils.Resource; 18 | 19 | public class SkusViewModel extends ViewModel { 20 | private LiveData>> mSkuDetails; 21 | private LiveData> mVpnProfile; 22 | private CommsEngine mCommsEngine; 23 | 24 | public LiveData>> getSkuDetails() { 25 | return mSkuDetails; 26 | } 27 | public LiveData> getPurchaseResource() { 28 | return mVpnProfile; 29 | } 30 | 31 | public void init(Context aContext, String aSourceType){ 32 | if ( mCommsEngine == null ) { 33 | mCommsEngine = CommsEngine.getInstance(aContext); 34 | mSkuDetails = mCommsEngine.fetchProductInformation(); 35 | } 36 | } 37 | 38 | public LiveData> startPurchaseFlow(Activity aActivity, String aProductId){ 39 | mVpnProfile = mCommsEngine.initiatePurchaseFlow(aActivity, aProductId); 40 | return mVpnProfile; 41 | } 42 | } 43 | 44 | -------------------------------------------------------------------------------- /DisconnectPro/disconnect/src/main/java/pro/disconnect/me/billing/SubsItem.java: -------------------------------------------------------------------------------- 1 | package pro.disconnect.me.billing; 2 | 3 | 4 | import android.content.Context; 5 | import android.content.res.Resources; 6 | 7 | import java.util.ArrayList; 8 | import java.util.List; 9 | 10 | import pro.disconnect.me.R; 11 | 12 | public class SubsItem { 13 | public String mDescription; 14 | public String mId; 15 | public boolean mSaving; 16 | public float mPrice; 17 | public String mFormattedPrice; 18 | public String mMonthlyPrice; 19 | public int mNumberMonths; 20 | 21 | private static ArrayList mSubsItemsArray; 22 | 23 | public SubsItem(Resources aResources, int aValue, int aIdResId, boolean aSaving){ 24 | mDescription = aResources.getQuantityString(R.plurals.months, aValue, aValue); 25 | mId = aResources.getString(aIdResId); 26 | mSaving = aSaving; 27 | mNumberMonths = aValue; 28 | } 29 | 30 | public static List getSubsList(Context aContext){ 31 | Resources res = aContext.getResources(); 32 | if ( mSubsItemsArray == null ){ 33 | mSubsItemsArray = new ArrayList<>(); 34 | 35 | mSubsItemsArray.add(new SubsItem(res,12, R.string.product_id_1, true )); 36 | mSubsItemsArray.add(new SubsItem(res,6 , R.string.product_id_2, true)); 37 | mSubsItemsArray.add(new SubsItem(res, 3, R.string.product_id_3, true )); 38 | mSubsItemsArray.add(new SubsItem(res, 1, R.string.product_id_4, false )); 39 | } 40 | 41 | return mSubsItemsArray; 42 | } 43 | } 44 | -------------------------------------------------------------------------------- /DisconnectPro/disconnect/src/main/java/pro/disconnect/me/comms/database/DateConverter.java: -------------------------------------------------------------------------------- 1 | package pro.disconnect.me.comms.database; 2 | 3 | import android.arch.persistence.room.TypeConverter; 4 | 5 | import java.util.Date; 6 | 7 | public class DateConverter { 8 | @TypeConverter 9 | public static Date toDate(Long timestamp) { 10 | return timestamp == null ? null : new Date(timestamp); 11 | } 12 | 13 | @TypeConverter 14 | public static Long toTimestamp(Date date) { 15 | return date == null ? null : date.getTime(); 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /DisconnectPro/disconnect/src/main/java/pro/disconnect/me/comms/database/DisconnectDatabase.java: -------------------------------------------------------------------------------- 1 | package pro.disconnect.me.comms.database; 2 | 3 | import android.arch.persistence.room.Database; 4 | import android.arch.persistence.room.RoomDatabase; 5 | import android.arch.persistence.room.TypeConverters; 6 | 7 | import pro.disconnect.me.comms.models.Post; 8 | import pro.disconnect.me.comms.models.Tracker; 9 | 10 | @Database(entities = {Tracker.class, Post.class}, version = 1) 11 | @TypeConverters({DateConverter.class}) 12 | public abstract class DisconnectDatabase extends RoomDatabase { 13 | public abstract TrackersDao trackersDao(); 14 | public abstract PostsDao postsDao(); 15 | } 16 | 17 | -------------------------------------------------------------------------------- /DisconnectPro/disconnect/src/main/java/pro/disconnect/me/comms/database/PostsDao.java: -------------------------------------------------------------------------------- 1 | package pro.disconnect.me.comms.database; 2 | 3 | import android.arch.lifecycle.LiveData; 4 | import android.arch.persistence.room.Dao; 5 | import android.arch.persistence.room.Insert; 6 | import android.arch.persistence.room.Query; 7 | 8 | import java.util.List; 9 | 10 | import pro.disconnect.me.comms.models.Post; 11 | import pro.disconnect.me.comms.models.Tracker; 12 | 13 | import static android.arch.persistence.room.OnConflictStrategy.IGNORE; 14 | import static android.arch.persistence.room.OnConflictStrategy.REPLACE; 15 | 16 | @Dao 17 | public interface PostsDao { 18 | @Insert(onConflict = IGNORE) 19 | void save(List posts); 20 | 21 | @Query("SELECT * FROM post WHERE sourceType = :sourcetype ORDER BY publishedAt DESC" ) 22 | LiveData> load(String sourcetype); 23 | 24 | @Query("UPDATE post SET seen=1 WHERE id = :id") 25 | void markAsSeen(int id); 26 | 27 | @Query("SELECT publishedAt FROM post WHERE sourceType = :sourcetype ORDER BY publishedAt DESC LIMIT 1") 28 | String getTimestampLastPost(String sourcetype); 29 | } 30 | -------------------------------------------------------------------------------- /DisconnectPro/disconnect/src/main/java/pro/disconnect/me/comms/database/TrackersDao.java: -------------------------------------------------------------------------------- 1 | package pro.disconnect.me.comms.database; 2 | 3 | import android.arch.lifecycle.LiveData; 4 | import android.arch.persistence.room.Dao; 5 | import android.arch.persistence.room.Insert; 6 | import android.arch.persistence.room.Query; 7 | 8 | import java.util.List; 9 | 10 | import pro.disconnect.me.comms.models.Tracker; 11 | 12 | import static android.arch.persistence.room.OnConflictStrategy.REPLACE; 13 | 14 | @Dao 15 | public interface TrackersDao { 16 | @Insert(onConflict = REPLACE) 17 | void save(List trackers); 18 | 19 | @Query("SELECT * FROM tracker ORDER BY dateTimeStamp DESC" ) 20 | LiveData> load(); 21 | 22 | @Query("DELETE FROM tracker") 23 | void deleteTrackers(); 24 | 25 | @Query("SELECT dateTimeStamp FROM tracker ORDER BY dateTimeStamp DESC LIMIT 1") 26 | long getTimestampLastTracker(); 27 | 28 | @Query("SELECT count(*) FROM tracker WHERE dateTimeStamp BETWEEN :start AND :end") 29 | int getTrackersBetween(long start, long end); 30 | } 31 | -------------------------------------------------------------------------------- /DisconnectPro/disconnect/src/main/java/pro/disconnect/me/comms/models/CountryContinent.java: -------------------------------------------------------------------------------- 1 | package pro.disconnect.me.comms.models; 2 | 3 | import com.google.gson.annotations.Expose; 4 | import com.google.gson.annotations.SerializedName; 5 | 6 | public class CountryContinent { 7 | 8 | @SerializedName("country") 9 | private String country; 10 | @SerializedName("continent") 11 | private String continent; 12 | 13 | public String getContinent() { 14 | return continent; 15 | } 16 | 17 | public void setContinent(String continent) { 18 | this.continent = continent; 19 | } 20 | 21 | public String getCountry() { 22 | return country; 23 | } 24 | 25 | public void setCountry(String country) { 26 | this.country = country; 27 | } 28 | } 29 | 30 | 31 | -------------------------------------------------------------------------------- /DisconnectPro/disconnect/src/main/java/pro/disconnect/me/comms/models/NewsItems.java: -------------------------------------------------------------------------------- 1 | package pro.disconnect.me.comms.models; 2 | 3 | import com.google.gson.annotations.Expose; 4 | import com.google.gson.annotations.SerializedName; 5 | 6 | import java.util.List; 7 | 8 | public class NewsItems { 9 | @SerializedName("posts") 10 | @Expose 11 | private List posts = null; 12 | 13 | public List getPosts() { 14 | return posts; 15 | } 16 | 17 | public void setPosts(List posts) { 18 | this.posts = posts; 19 | } 20 | } 21 | -------------------------------------------------------------------------------- /DisconnectPro/disconnect/src/main/java/pro/disconnect/me/comms/models/PartnerProvision.java: -------------------------------------------------------------------------------- 1 | package pro.disconnect.me.comms.models; 2 | 3 | import com.google.gson.annotations.Expose; 4 | import com.google.gson.annotations.SerializedName; 5 | 6 | public class PartnerProvision { 7 | 8 | @SerializedName("status") 9 | @Expose 10 | private int status; 11 | @SerializedName("status_text") 12 | @Expose 13 | private String statusText; 14 | 15 | public int getStatus() { 16 | return status; 17 | } 18 | 19 | public void setStatus(int status) { 20 | this.status = status; 21 | } 22 | 23 | public String getStatusText() { 24 | return statusText; 25 | } 26 | 27 | public void setStatusText(String statusText) { 28 | this.statusText = statusText; 29 | } 30 | 31 | } 32 | -------------------------------------------------------------------------------- /DisconnectPro/disconnect/src/main/java/pro/disconnect/me/comms/models/ServerInfo.java: -------------------------------------------------------------------------------- 1 | package pro.disconnect.me.comms.models; 2 | 3 | import java.util.List; 4 | import com.google.gson.annotations.Expose; 5 | import com.google.gson.annotations.SerializedName; 6 | 7 | public class ServerInfo { 8 | 9 | @SerializedName("ca_file") 10 | @Expose 11 | private String caFile; 12 | @SerializedName("ovpn") 13 | @Expose 14 | private String ovpn; 15 | @SerializedName("servers") 16 | @Expose 17 | private List servers = null; 18 | 19 | public String getCaFile() { 20 | return caFile; 21 | } 22 | 23 | public void setCaFile(String caFile) { 24 | this.caFile = caFile; 25 | } 26 | 27 | public String getOvpn() { 28 | return ovpn; 29 | } 30 | 31 | public void setOvpn(String ovpn) { 32 | this.ovpn = ovpn; 33 | } 34 | 35 | public List getServers() { 36 | return servers; 37 | } 38 | 39 | public void setServers(List servers) { 40 | this.servers = servers; 41 | } 42 | } 43 | -------------------------------------------------------------------------------- /DisconnectPro/disconnect/src/main/java/pro/disconnect/me/comms/models/TrackerDescriptions.java: -------------------------------------------------------------------------------- 1 | package pro.disconnect.me.comms.models; 2 | 3 | import com.google.gson.annotations.Expose; 4 | import com.google.gson.annotations.SerializedName; 5 | 6 | import java.util.List; 7 | import java.util.Map; 8 | 9 | public class TrackerDescriptions { 10 | @SerializedName("descriptions") 11 | @Expose 12 | private Map descriptions = null; 13 | 14 | public Map getDescriptions() { 15 | return descriptions; 16 | } 17 | 18 | public void setDescriptions(Map descriptions) { 19 | this.descriptions = descriptions; 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /DisconnectPro/disconnect/src/main/java/pro/disconnect/me/comms/models/Trackers.java: -------------------------------------------------------------------------------- 1 | package pro.disconnect.me.comms.models; 2 | 3 | import com.google.gson.annotations.Expose; 4 | import com.google.gson.annotations.SerializedName; 5 | 6 | import java.util.List; 7 | 8 | public class Trackers { 9 | @SerializedName("domains") 10 | @Expose 11 | private List domains = null; 12 | 13 | public List getDomains() { 14 | return domains; 15 | } 16 | 17 | public void setDomains(List domains) { 18 | this.domains = domains; 19 | } 20 | } 21 | -------------------------------------------------------------------------------- /DisconnectPro/disconnect/src/main/java/pro/disconnect/me/comms/utils/LiveDataCallAdapterFactory.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (C) 2017 The Android Open Source Project 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | 17 | package pro.disconnect.me.comms.utils; 18 | 19 | import android.arch.lifecycle.LiveData; 20 | 21 | import java.lang.annotation.Annotation; 22 | import java.lang.reflect.ParameterizedType; 23 | import java.lang.reflect.Type; 24 | 25 | import retrofit2.CallAdapter; 26 | import retrofit2.Retrofit; 27 | 28 | public class LiveDataCallAdapterFactory extends CallAdapter.Factory { 29 | 30 | @Override 31 | public CallAdapter get(Type returnType, Annotation[] annotations, Retrofit retrofit) { 32 | if (getRawType(returnType) != LiveData.class) { 33 | return null; 34 | } 35 | Type observableType = getParameterUpperBound(0, (ParameterizedType) returnType); 36 | Class rawObservableType = getRawType(observableType); 37 | if (rawObservableType != ApiResponse.class) { 38 | throw new IllegalArgumentException("type must be a resource"); 39 | } 40 | if (! (observableType instanceof ParameterizedType)) { 41 | throw new IllegalArgumentException("resource must be parameterized"); 42 | } 43 | Type bodyType = getParameterUpperBound(0, (ParameterizedType) observableType); 44 | return new LiveDataCallAdapter<>(bodyType); 45 | } 46 | } 47 | -------------------------------------------------------------------------------- /DisconnectPro/disconnect/src/main/java/pro/disconnect/me/comms/utils/Objects.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (C) 2017 The Android Open Source Project 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | 17 | package pro.disconnect.me.comms.utils; 18 | 19 | public class Objects { 20 | public static boolean equals(Object o1, Object o2) { 21 | if (o1 == null) { 22 | return o2 == null; 23 | } 24 | if (o2 == null) { 25 | return false; 26 | } 27 | return o1.equals(o2); 28 | } 29 | } 30 | -------------------------------------------------------------------------------- /DisconnectPro/disconnect/src/main/java/pro/disconnect/me/feeds/OnPostInteractionListener.java: -------------------------------------------------------------------------------- 1 | package pro.disconnect.me.feeds; 2 | 3 | public interface OnPostInteractionListener { 4 | void onPostLink(int aId, String aUrl); 5 | } 6 | -------------------------------------------------------------------------------- /DisconnectPro/disconnect/src/main/java/pro/disconnect/me/feeds/PostsViewModel.java: -------------------------------------------------------------------------------- 1 | package pro.disconnect.me.feeds; 2 | 3 | 4 | import android.arch.lifecycle.LiveData; 5 | import android.arch.lifecycle.ViewModel; 6 | import android.content.Context; 7 | 8 | import java.util.List; 9 | 10 | import pro.disconnect.me.comms.CommsEngine; 11 | import pro.disconnect.me.comms.models.Post; 12 | import pro.disconnect.me.comms.models.Tracker; 13 | import pro.disconnect.me.comms.utils.Resource; 14 | 15 | public class PostsViewModel extends ViewModel { 16 | private LiveData>> mPosts; 17 | private CommsEngine mCommsEngine; 18 | 19 | public LiveData>> getPosts() { 20 | return mPosts; 21 | } 22 | 23 | public void init(Context aContext, String aSourceType){ 24 | if ( mCommsEngine == null ) { 25 | mCommsEngine = CommsEngine.getInstance(aContext); 26 | mPosts = mCommsEngine.getNewsItems(aSourceType); 27 | } 28 | } 29 | 30 | public void refresh(String aSourceType){ 31 | mPosts = mCommsEngine.getNewsItems(aSourceType); 32 | } 33 | } 34 | 35 | -------------------------------------------------------------------------------- /DisconnectPro/disconnect/src/main/java/pro/disconnect/me/settings/SettingsViewModel.java: -------------------------------------------------------------------------------- 1 | package pro.disconnect.me.settings; 2 | 3 | import android.arch.lifecycle.LiveData; 4 | import android.arch.lifecycle.MutableLiveData; 5 | import android.arch.lifecycle.ViewModel; 6 | import android.arch.persistence.room.Room; 7 | import android.content.Context; 8 | import android.os.AsyncTask; 9 | 10 | import pro.disconnect.me.comms.database.DisconnectDatabase; 11 | import pro.disconnect.me.comms.database.TrackersDao; 12 | 13 | public class SettingsViewModel extends ViewModel { 14 | private MutableLiveData mTrackerPurged = new MutableLiveData<>(); 15 | 16 | public LiveData getTrackersPurged() { 17 | return mTrackerPurged; 18 | } 19 | 20 | public void deleteTrackers(Context aContext){ 21 | final Context appContext = aContext.getApplicationContext(); 22 | mTrackerPurged.setValue(false); 23 | 24 | new AsyncTask(){ 25 | @Override 26 | protected Void doInBackground(Void... voids) { 27 | DisconnectDatabase database = Room.databaseBuilder(appContext, 28 | DisconnectDatabase.class, "disconnect-database").build(); 29 | TrackersDao dao = database.trackersDao(); 30 | dao.deleteTrackers(); 31 | return null; 32 | } 33 | 34 | @Override 35 | protected void onPostExecute(Void aVoid) { 36 | super.onPostExecute(aVoid); 37 | mTrackerPurged.setValue(true); 38 | } 39 | }.execute(); 40 | } 41 | 42 | } -------------------------------------------------------------------------------- /DisconnectPro/disconnect/src/main/java/pro/disconnect/me/trackers/TrackerBucket.java: -------------------------------------------------------------------------------- 1 | package pro.disconnect.me.trackers; 2 | 3 | import java.util.Date; 4 | 5 | public class TrackerBucket { 6 | public Date mDate; 7 | public int mCount; 8 | 9 | public TrackerBucket(long aTimeStamp, int aCount){ 10 | mDate = new Date(aTimeStamp); 11 | mCount = aCount; 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /DisconnectPro/disconnect/src/main/java/pro/disconnect/me/trackers/TrackersViewModel.java: -------------------------------------------------------------------------------- 1 | package pro.disconnect.me.trackers; 2 | 3 | 4 | import android.arch.lifecycle.LiveData; 5 | import android.arch.lifecycle.ViewModel; 6 | import android.content.Context; 7 | 8 | import java.util.List; 9 | 10 | import pro.disconnect.me.comms.CommsEngine; 11 | import pro.disconnect.me.comms.utils.Resource; 12 | import pro.disconnect.me.comms.models.Tracker; 13 | 14 | public class TrackersViewModel extends ViewModel { 15 | private LiveData>> mTrackers; 16 | private CommsEngine mCommsEngine; 17 | 18 | public LiveData>> getTrackers() { 19 | return mTrackers; 20 | } 21 | 22 | public void init(Context aContext){ 23 | if ( mCommsEngine == null ){ 24 | mCommsEngine = CommsEngine.getInstance(aContext); 25 | mTrackers = mCommsEngine.getBlockedTrackers(0); 26 | } 27 | } 28 | } 29 | 30 | -------------------------------------------------------------------------------- /DisconnectPro/disconnect/src/main/java/pro/disconnect/me/trackers/XAxisFormatter.java: -------------------------------------------------------------------------------- 1 | package pro.disconnect.me.trackers; 2 | 3 | import com.github.mikephil.charting.components.AxisBase; 4 | import com.github.mikephil.charting.formatter.IAxisValueFormatter; 5 | 6 | import java.text.SimpleDateFormat; 7 | import java.util.Date; 8 | import java.util.List; 9 | 10 | public class XAxisFormatter implements IAxisValueFormatter { 11 | 12 | private long mStartDate; 13 | private long mEndDate; 14 | private SimpleDateFormat simpleDateFormat; 15 | private int mCount; 16 | 17 | public XAxisFormatter(long aStartDate, long aEndDate, int count) { 18 | mStartDate = aStartDate; 19 | mEndDate = aEndDate; 20 | mCount = count; 21 | 22 | if ( mEndDate - mStartDate <= 24 * 60 * 60 * 1000) { 23 | simpleDateFormat = new SimpleDateFormat("h:mm a"); 24 | } else { 25 | simpleDateFormat = new SimpleDateFormat("MM/dd"); 26 | } 27 | } 28 | 29 | @Override 30 | public String getFormattedValue(float value, AxisBase axis) { 31 | long timeStamp = mStartDate + (long)((value / mCount) * ( mEndDate - mStartDate)); 32 | Date date = new Date(timeStamp); 33 | String formattedValue = simpleDateFormat.format(date); 34 | return formattedValue; 35 | } 36 | } -------------------------------------------------------------------------------- /DisconnectPro/disconnect/src/main/res/anim/anim_down.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 7 | -------------------------------------------------------------------------------- /DisconnectPro/disconnect/src/main/res/anim/anim_up.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 7 | -------------------------------------------------------------------------------- /DisconnectPro/disconnect/src/main/res/drawable-hdpi/d_logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/disconnectme/premium-android/8fe2f1414dc0267f376a33842d6f1f7e2f6595b5/DisconnectPro/disconnect/src/main/res/drawable-hdpi/d_logo.png -------------------------------------------------------------------------------- /DisconnectPro/disconnect/src/main/res/drawable-hdpi/d_shield.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/disconnectme/premium-android/8fe2f1414dc0267f376a33842d6f1f7e2f6595b5/DisconnectPro/disconnect/src/main/res/drawable-hdpi/d_shield.png -------------------------------------------------------------------------------- /DisconnectPro/disconnect/src/main/res/drawable-hdpi/encryption_btn_bg.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/disconnectme/premium-android/8fe2f1414dc0267f376a33842d6f1f7e2f6595b5/DisconnectPro/disconnect/src/main/res/drawable-hdpi/encryption_btn_bg.png -------------------------------------------------------------------------------- /DisconnectPro/disconnect/src/main/res/drawable-hdpi/feature_icn_3devices.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/disconnectme/premium-android/8fe2f1414dc0267f376a33842d6f1f7e2f6595b5/DisconnectPro/disconnect/src/main/res/drawable-hdpi/feature_icn_3devices.png -------------------------------------------------------------------------------- /DisconnectPro/disconnect/src/main/res/drawable-hdpi/feature_icn_cancel_anytime.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/disconnectme/premium-android/8fe2f1414dc0267f376a33842d6f1f7e2f6595b5/DisconnectPro/disconnect/src/main/res/drawable-hdpi/feature_icn_cancel_anytime.png -------------------------------------------------------------------------------- /DisconnectPro/disconnect/src/main/res/drawable-hdpi/feature_icn_encrypted.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/disconnectme/premium-android/8fe2f1414dc0267f376a33842d6f1f7e2f6595b5/DisconnectPro/disconnect/src/main/res/drawable-hdpi/feature_icn_encrypted.png -------------------------------------------------------------------------------- /DisconnectPro/disconnect/src/main/res/drawable-hdpi/feature_icn_location.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/disconnectme/premium-android/8fe2f1414dc0267f376a33842d6f1f7e2f6595b5/DisconnectPro/disconnect/src/main/res/drawable-hdpi/feature_icn_location.png -------------------------------------------------------------------------------- /DisconnectPro/disconnect/src/main/res/drawable-hdpi/feature_icn_protection.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/disconnectme/premium-android/8fe2f1414dc0267f376a33842d6f1f7e2f6595b5/DisconnectPro/disconnect/src/main/res/drawable-hdpi/feature_icn_protection.png -------------------------------------------------------------------------------- /DisconnectPro/disconnect/src/main/res/drawable-hdpi/feature_icn_tutorial.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/disconnectme/premium-android/8fe2f1414dc0267f376a33842d6f1f7e2f6595b5/DisconnectPro/disconnect/src/main/res/drawable-hdpi/feature_icn_tutorial.png -------------------------------------------------------------------------------- /DisconnectPro/disconnect/src/main/res/drawable-hdpi/feature_icon_alerts.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/disconnectme/premium-android/8fe2f1414dc0267f376a33842d6f1f7e2f6595b5/DisconnectPro/disconnect/src/main/res/drawable-hdpi/feature_icon_alerts.png -------------------------------------------------------------------------------- /DisconnectPro/disconnect/src/main/res/drawable-hdpi/help_btn_bg.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/disconnectme/premium-android/8fe2f1414dc0267f376a33842d6f1f7e2f6595b5/DisconnectPro/disconnect/src/main/res/drawable-hdpi/help_btn_bg.png -------------------------------------------------------------------------------- /DisconnectPro/disconnect/src/main/res/drawable-hdpi/icn_alerts_active.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/disconnectme/premium-android/8fe2f1414dc0267f376a33842d6f1f7e2f6595b5/DisconnectPro/disconnect/src/main/res/drawable-hdpi/icn_alerts_active.png -------------------------------------------------------------------------------- /DisconnectPro/disconnect/src/main/res/drawable-hdpi/icn_alerts_normal.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/disconnectme/premium-android/8fe2f1414dc0267f376a33842d6f1f7e2f6595b5/DisconnectPro/disconnect/src/main/res/drawable-hdpi/icn_alerts_normal.png -------------------------------------------------------------------------------- /DisconnectPro/disconnect/src/main/res/drawable-hdpi/icn_blocked_tracker.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/disconnectme/premium-android/8fe2f1414dc0267f376a33842d6f1f7e2f6595b5/DisconnectPro/disconnect/src/main/res/drawable-hdpi/icn_blocked_tracker.png -------------------------------------------------------------------------------- /DisconnectPro/disconnect/src/main/res/drawable-hdpi/icn_news_active.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/disconnectme/premium-android/8fe2f1414dc0267f376a33842d6f1f7e2f6595b5/DisconnectPro/disconnect/src/main/res/drawable-hdpi/icn_news_active.png -------------------------------------------------------------------------------- /DisconnectPro/disconnect/src/main/res/drawable-hdpi/icn_news_normal.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/disconnectme/premium-android/8fe2f1414dc0267f376a33842d6f1f7e2f6595b5/DisconnectPro/disconnect/src/main/res/drawable-hdpi/icn_news_normal.png -------------------------------------------------------------------------------- /DisconnectPro/disconnect/src/main/res/drawable-hdpi/icn_protection_blocking.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/disconnectme/premium-android/8fe2f1414dc0267f376a33842d6f1f7e2f6595b5/DisconnectPro/disconnect/src/main/res/drawable-hdpi/icn_protection_blocking.png -------------------------------------------------------------------------------- /DisconnectPro/disconnect/src/main/res/drawable-hdpi/icn_protection_off.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/disconnectme/premium-android/8fe2f1414dc0267f376a33842d6f1f7e2f6595b5/DisconnectPro/disconnect/src/main/res/drawable-hdpi/icn_protection_off.png -------------------------------------------------------------------------------- /DisconnectPro/disconnect/src/main/res/drawable-hdpi/icn_settings_btn.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/disconnectme/premium-android/8fe2f1414dc0267f376a33842d6f1f7e2f6595b5/DisconnectPro/disconnect/src/main/res/drawable-hdpi/icn_settings_btn.png -------------------------------------------------------------------------------- /DisconnectPro/disconnect/src/main/res/drawable-hdpi/icn_tips_active.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/disconnectme/premium-android/8fe2f1414dc0267f376a33842d6f1f7e2f6595b5/DisconnectPro/disconnect/src/main/res/drawable-hdpi/icn_tips_active.png -------------------------------------------------------------------------------- /DisconnectPro/disconnect/src/main/res/drawable-hdpi/icn_tips_normal.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/disconnectme/premium-android/8fe2f1414dc0267f376a33842d6f1f7e2f6595b5/DisconnectPro/disconnect/src/main/res/drawable-hdpi/icn_tips_normal.png -------------------------------------------------------------------------------- /DisconnectPro/disconnect/src/main/res/drawable-hdpi/icon_protection_encrypted.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/disconnectme/premium-android/8fe2f1414dc0267f376a33842d6f1f7e2f6595b5/DisconnectPro/disconnect/src/main/res/drawable-hdpi/icon_protection_encrypted.png -------------------------------------------------------------------------------- /DisconnectPro/disconnect/src/main/res/drawable-hdpi/icon_stats.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/disconnectme/premium-android/8fe2f1414dc0267f376a33842d6f1f7e2f6595b5/DisconnectPro/disconnect/src/main/res/drawable-hdpi/icon_stats.png -------------------------------------------------------------------------------- /DisconnectPro/disconnect/src/main/res/drawable-hdpi/particle_circle.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/disconnectme/premium-android/8fe2f1414dc0267f376a33842d6f1f7e2f6595b5/DisconnectPro/disconnect/src/main/res/drawable-hdpi/particle_circle.png -------------------------------------------------------------------------------- /DisconnectPro/disconnect/src/main/res/drawable-hdpi/premium_shield.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/disconnectme/premium-android/8fe2f1414dc0267f376a33842d6f1f7e2f6595b5/DisconnectPro/disconnect/src/main/res/drawable-hdpi/premium_shield.png -------------------------------------------------------------------------------- /DisconnectPro/disconnect/src/main/res/drawable-hdpi/protection_bg_nodes.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/disconnectme/premium-android/8fe2f1414dc0267f376a33842d6f1f7e2f6595b5/DisconnectPro/disconnect/src/main/res/drawable-hdpi/protection_bg_nodes.png -------------------------------------------------------------------------------- /DisconnectPro/disconnect/src/main/res/drawable-hdpi/rocket.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/disconnectme/premium-android/8fe2f1414dc0267f376a33842d6f1f7e2f6595b5/DisconnectPro/disconnect/src/main/res/drawable-hdpi/rocket.png -------------------------------------------------------------------------------- /DisconnectPro/disconnect/src/main/res/drawable-hdpi/stats_btn_bg.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/disconnectme/premium-android/8fe2f1414dc0267f376a33842d6f1f7e2f6595b5/DisconnectPro/disconnect/src/main/res/drawable-hdpi/stats_btn_bg.png -------------------------------------------------------------------------------- /DisconnectPro/disconnect/src/main/res/drawable-mdpi/d_logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/disconnectme/premium-android/8fe2f1414dc0267f376a33842d6f1f7e2f6595b5/DisconnectPro/disconnect/src/main/res/drawable-mdpi/d_logo.png -------------------------------------------------------------------------------- /DisconnectPro/disconnect/src/main/res/drawable-mdpi/d_shield.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/disconnectme/premium-android/8fe2f1414dc0267f376a33842d6f1f7e2f6595b5/DisconnectPro/disconnect/src/main/res/drawable-mdpi/d_shield.png -------------------------------------------------------------------------------- /DisconnectPro/disconnect/src/main/res/drawable-mdpi/encryption_btn_bg.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/disconnectme/premium-android/8fe2f1414dc0267f376a33842d6f1f7e2f6595b5/DisconnectPro/disconnect/src/main/res/drawable-mdpi/encryption_btn_bg.png -------------------------------------------------------------------------------- /DisconnectPro/disconnect/src/main/res/drawable-mdpi/feature_icn_3devices.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/disconnectme/premium-android/8fe2f1414dc0267f376a33842d6f1f7e2f6595b5/DisconnectPro/disconnect/src/main/res/drawable-mdpi/feature_icn_3devices.png -------------------------------------------------------------------------------- /DisconnectPro/disconnect/src/main/res/drawable-mdpi/feature_icn_cancel_anytime.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/disconnectme/premium-android/8fe2f1414dc0267f376a33842d6f1f7e2f6595b5/DisconnectPro/disconnect/src/main/res/drawable-mdpi/feature_icn_cancel_anytime.png -------------------------------------------------------------------------------- /DisconnectPro/disconnect/src/main/res/drawable-mdpi/feature_icn_encrypted.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/disconnectme/premium-android/8fe2f1414dc0267f376a33842d6f1f7e2f6595b5/DisconnectPro/disconnect/src/main/res/drawable-mdpi/feature_icn_encrypted.png -------------------------------------------------------------------------------- /DisconnectPro/disconnect/src/main/res/drawable-mdpi/feature_icn_location.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/disconnectme/premium-android/8fe2f1414dc0267f376a33842d6f1f7e2f6595b5/DisconnectPro/disconnect/src/main/res/drawable-mdpi/feature_icn_location.png -------------------------------------------------------------------------------- /DisconnectPro/disconnect/src/main/res/drawable-mdpi/feature_icn_protection.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/disconnectme/premium-android/8fe2f1414dc0267f376a33842d6f1f7e2f6595b5/DisconnectPro/disconnect/src/main/res/drawable-mdpi/feature_icn_protection.png -------------------------------------------------------------------------------- /DisconnectPro/disconnect/src/main/res/drawable-mdpi/feature_icn_tutorial.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/disconnectme/premium-android/8fe2f1414dc0267f376a33842d6f1f7e2f6595b5/DisconnectPro/disconnect/src/main/res/drawable-mdpi/feature_icn_tutorial.png -------------------------------------------------------------------------------- /DisconnectPro/disconnect/src/main/res/drawable-mdpi/feature_icon_alerts.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/disconnectme/premium-android/8fe2f1414dc0267f376a33842d6f1f7e2f6595b5/DisconnectPro/disconnect/src/main/res/drawable-mdpi/feature_icon_alerts.png -------------------------------------------------------------------------------- /DisconnectPro/disconnect/src/main/res/drawable-mdpi/help_btn_bg.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/disconnectme/premium-android/8fe2f1414dc0267f376a33842d6f1f7e2f6595b5/DisconnectPro/disconnect/src/main/res/drawable-mdpi/help_btn_bg.png -------------------------------------------------------------------------------- /DisconnectPro/disconnect/src/main/res/drawable-mdpi/icn_alerts_active.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/disconnectme/premium-android/8fe2f1414dc0267f376a33842d6f1f7e2f6595b5/DisconnectPro/disconnect/src/main/res/drawable-mdpi/icn_alerts_active.png -------------------------------------------------------------------------------- /DisconnectPro/disconnect/src/main/res/drawable-mdpi/icn_alerts_normal.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/disconnectme/premium-android/8fe2f1414dc0267f376a33842d6f1f7e2f6595b5/DisconnectPro/disconnect/src/main/res/drawable-mdpi/icn_alerts_normal.png -------------------------------------------------------------------------------- /DisconnectPro/disconnect/src/main/res/drawable-mdpi/icn_blocked_tracker.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/disconnectme/premium-android/8fe2f1414dc0267f376a33842d6f1f7e2f6595b5/DisconnectPro/disconnect/src/main/res/drawable-mdpi/icn_blocked_tracker.png -------------------------------------------------------------------------------- /DisconnectPro/disconnect/src/main/res/drawable-mdpi/icn_news_active.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/disconnectme/premium-android/8fe2f1414dc0267f376a33842d6f1f7e2f6595b5/DisconnectPro/disconnect/src/main/res/drawable-mdpi/icn_news_active.png -------------------------------------------------------------------------------- /DisconnectPro/disconnect/src/main/res/drawable-mdpi/icn_news_normal.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/disconnectme/premium-android/8fe2f1414dc0267f376a33842d6f1f7e2f6595b5/DisconnectPro/disconnect/src/main/res/drawable-mdpi/icn_news_normal.png -------------------------------------------------------------------------------- /DisconnectPro/disconnect/src/main/res/drawable-mdpi/icn_protection_blocking.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/disconnectme/premium-android/8fe2f1414dc0267f376a33842d6f1f7e2f6595b5/DisconnectPro/disconnect/src/main/res/drawable-mdpi/icn_protection_blocking.png -------------------------------------------------------------------------------- /DisconnectPro/disconnect/src/main/res/drawable-mdpi/icn_protection_off.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/disconnectme/premium-android/8fe2f1414dc0267f376a33842d6f1f7e2f6595b5/DisconnectPro/disconnect/src/main/res/drawable-mdpi/icn_protection_off.png -------------------------------------------------------------------------------- /DisconnectPro/disconnect/src/main/res/drawable-mdpi/icn_settings_btn.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/disconnectme/premium-android/8fe2f1414dc0267f376a33842d6f1f7e2f6595b5/DisconnectPro/disconnect/src/main/res/drawable-mdpi/icn_settings_btn.png -------------------------------------------------------------------------------- /DisconnectPro/disconnect/src/main/res/drawable-mdpi/icn_tips_active.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/disconnectme/premium-android/8fe2f1414dc0267f376a33842d6f1f7e2f6595b5/DisconnectPro/disconnect/src/main/res/drawable-mdpi/icn_tips_active.png -------------------------------------------------------------------------------- /DisconnectPro/disconnect/src/main/res/drawable-mdpi/icn_tips_normal.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/disconnectme/premium-android/8fe2f1414dc0267f376a33842d6f1f7e2f6595b5/DisconnectPro/disconnect/src/main/res/drawable-mdpi/icn_tips_normal.png -------------------------------------------------------------------------------- /DisconnectPro/disconnect/src/main/res/drawable-mdpi/icon_protection_encrypted.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/disconnectme/premium-android/8fe2f1414dc0267f376a33842d6f1f7e2f6595b5/DisconnectPro/disconnect/src/main/res/drawable-mdpi/icon_protection_encrypted.png -------------------------------------------------------------------------------- /DisconnectPro/disconnect/src/main/res/drawable-mdpi/icon_stats.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/disconnectme/premium-android/8fe2f1414dc0267f376a33842d6f1f7e2f6595b5/DisconnectPro/disconnect/src/main/res/drawable-mdpi/icon_stats.png -------------------------------------------------------------------------------- /DisconnectPro/disconnect/src/main/res/drawable-mdpi/particle_circle.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/disconnectme/premium-android/8fe2f1414dc0267f376a33842d6f1f7e2f6595b5/DisconnectPro/disconnect/src/main/res/drawable-mdpi/particle_circle.png -------------------------------------------------------------------------------- /DisconnectPro/disconnect/src/main/res/drawable-mdpi/premium_shield.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/disconnectme/premium-android/8fe2f1414dc0267f376a33842d6f1f7e2f6595b5/DisconnectPro/disconnect/src/main/res/drawable-mdpi/premium_shield.png -------------------------------------------------------------------------------- /DisconnectPro/disconnect/src/main/res/drawable-mdpi/protection_bg_nodes.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/disconnectme/premium-android/8fe2f1414dc0267f376a33842d6f1f7e2f6595b5/DisconnectPro/disconnect/src/main/res/drawable-mdpi/protection_bg_nodes.png -------------------------------------------------------------------------------- /DisconnectPro/disconnect/src/main/res/drawable-mdpi/rocket.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/disconnectme/premium-android/8fe2f1414dc0267f376a33842d6f1f7e2f6595b5/DisconnectPro/disconnect/src/main/res/drawable-mdpi/rocket.png -------------------------------------------------------------------------------- /DisconnectPro/disconnect/src/main/res/drawable-mdpi/stats_btn_bg.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/disconnectme/premium-android/8fe2f1414dc0267f376a33842d6f1f7e2f6595b5/DisconnectPro/disconnect/src/main/res/drawable-mdpi/stats_btn_bg.png -------------------------------------------------------------------------------- /DisconnectPro/disconnect/src/main/res/drawable-xhdpi/d_logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/disconnectme/premium-android/8fe2f1414dc0267f376a33842d6f1f7e2f6595b5/DisconnectPro/disconnect/src/main/res/drawable-xhdpi/d_logo.png -------------------------------------------------------------------------------- /DisconnectPro/disconnect/src/main/res/drawable-xhdpi/d_shield.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/disconnectme/premium-android/8fe2f1414dc0267f376a33842d6f1f7e2f6595b5/DisconnectPro/disconnect/src/main/res/drawable-xhdpi/d_shield.png -------------------------------------------------------------------------------- /DisconnectPro/disconnect/src/main/res/drawable-xhdpi/encryption_btn_bg.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/disconnectme/premium-android/8fe2f1414dc0267f376a33842d6f1f7e2f6595b5/DisconnectPro/disconnect/src/main/res/drawable-xhdpi/encryption_btn_bg.png -------------------------------------------------------------------------------- /DisconnectPro/disconnect/src/main/res/drawable-xhdpi/feature_icn_3devices.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/disconnectme/premium-android/8fe2f1414dc0267f376a33842d6f1f7e2f6595b5/DisconnectPro/disconnect/src/main/res/drawable-xhdpi/feature_icn_3devices.png -------------------------------------------------------------------------------- /DisconnectPro/disconnect/src/main/res/drawable-xhdpi/feature_icn_cancel_anytime.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/disconnectme/premium-android/8fe2f1414dc0267f376a33842d6f1f7e2f6595b5/DisconnectPro/disconnect/src/main/res/drawable-xhdpi/feature_icn_cancel_anytime.png -------------------------------------------------------------------------------- /DisconnectPro/disconnect/src/main/res/drawable-xhdpi/feature_icn_encrypted.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/disconnectme/premium-android/8fe2f1414dc0267f376a33842d6f1f7e2f6595b5/DisconnectPro/disconnect/src/main/res/drawable-xhdpi/feature_icn_encrypted.png -------------------------------------------------------------------------------- /DisconnectPro/disconnect/src/main/res/drawable-xhdpi/feature_icn_location.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/disconnectme/premium-android/8fe2f1414dc0267f376a33842d6f1f7e2f6595b5/DisconnectPro/disconnect/src/main/res/drawable-xhdpi/feature_icn_location.png -------------------------------------------------------------------------------- /DisconnectPro/disconnect/src/main/res/drawable-xhdpi/feature_icn_protection.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/disconnectme/premium-android/8fe2f1414dc0267f376a33842d6f1f7e2f6595b5/DisconnectPro/disconnect/src/main/res/drawable-xhdpi/feature_icn_protection.png -------------------------------------------------------------------------------- /DisconnectPro/disconnect/src/main/res/drawable-xhdpi/feature_icn_tutorial.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/disconnectme/premium-android/8fe2f1414dc0267f376a33842d6f1f7e2f6595b5/DisconnectPro/disconnect/src/main/res/drawable-xhdpi/feature_icn_tutorial.png -------------------------------------------------------------------------------- /DisconnectPro/disconnect/src/main/res/drawable-xhdpi/feature_icon_alerts.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/disconnectme/premium-android/8fe2f1414dc0267f376a33842d6f1f7e2f6595b5/DisconnectPro/disconnect/src/main/res/drawable-xhdpi/feature_icon_alerts.png -------------------------------------------------------------------------------- /DisconnectPro/disconnect/src/main/res/drawable-xhdpi/help_btn_bg.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/disconnectme/premium-android/8fe2f1414dc0267f376a33842d6f1f7e2f6595b5/DisconnectPro/disconnect/src/main/res/drawable-xhdpi/help_btn_bg.png -------------------------------------------------------------------------------- /DisconnectPro/disconnect/src/main/res/drawable-xhdpi/icn_alerts_active.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/disconnectme/premium-android/8fe2f1414dc0267f376a33842d6f1f7e2f6595b5/DisconnectPro/disconnect/src/main/res/drawable-xhdpi/icn_alerts_active.png -------------------------------------------------------------------------------- /DisconnectPro/disconnect/src/main/res/drawable-xhdpi/icn_alerts_normal.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/disconnectme/premium-android/8fe2f1414dc0267f376a33842d6f1f7e2f6595b5/DisconnectPro/disconnect/src/main/res/drawable-xhdpi/icn_alerts_normal.png -------------------------------------------------------------------------------- /DisconnectPro/disconnect/src/main/res/drawable-xhdpi/icn_blocked_tracker.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/disconnectme/premium-android/8fe2f1414dc0267f376a33842d6f1f7e2f6595b5/DisconnectPro/disconnect/src/main/res/drawable-xhdpi/icn_blocked_tracker.png -------------------------------------------------------------------------------- /DisconnectPro/disconnect/src/main/res/drawable-xhdpi/icn_news_active.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/disconnectme/premium-android/8fe2f1414dc0267f376a33842d6f1f7e2f6595b5/DisconnectPro/disconnect/src/main/res/drawable-xhdpi/icn_news_active.png -------------------------------------------------------------------------------- /DisconnectPro/disconnect/src/main/res/drawable-xhdpi/icn_news_normal.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/disconnectme/premium-android/8fe2f1414dc0267f376a33842d6f1f7e2f6595b5/DisconnectPro/disconnect/src/main/res/drawable-xhdpi/icn_news_normal.png -------------------------------------------------------------------------------- /DisconnectPro/disconnect/src/main/res/drawable-xhdpi/icn_protection_blocking.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/disconnectme/premium-android/8fe2f1414dc0267f376a33842d6f1f7e2f6595b5/DisconnectPro/disconnect/src/main/res/drawable-xhdpi/icn_protection_blocking.png -------------------------------------------------------------------------------- /DisconnectPro/disconnect/src/main/res/drawable-xhdpi/icn_protection_off.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/disconnectme/premium-android/8fe2f1414dc0267f376a33842d6f1f7e2f6595b5/DisconnectPro/disconnect/src/main/res/drawable-xhdpi/icn_protection_off.png -------------------------------------------------------------------------------- /DisconnectPro/disconnect/src/main/res/drawable-xhdpi/icn_settings_btn.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/disconnectme/premium-android/8fe2f1414dc0267f376a33842d6f1f7e2f6595b5/DisconnectPro/disconnect/src/main/res/drawable-xhdpi/icn_settings_btn.png -------------------------------------------------------------------------------- /DisconnectPro/disconnect/src/main/res/drawable-xhdpi/icn_tips_active.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/disconnectme/premium-android/8fe2f1414dc0267f376a33842d6f1f7e2f6595b5/DisconnectPro/disconnect/src/main/res/drawable-xhdpi/icn_tips_active.png -------------------------------------------------------------------------------- /DisconnectPro/disconnect/src/main/res/drawable-xhdpi/icn_tips_normal.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/disconnectme/premium-android/8fe2f1414dc0267f376a33842d6f1f7e2f6595b5/DisconnectPro/disconnect/src/main/res/drawable-xhdpi/icn_tips_normal.png -------------------------------------------------------------------------------- /DisconnectPro/disconnect/src/main/res/drawable-xhdpi/icon_protection_encrypted.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/disconnectme/premium-android/8fe2f1414dc0267f376a33842d6f1f7e2f6595b5/DisconnectPro/disconnect/src/main/res/drawable-xhdpi/icon_protection_encrypted.png -------------------------------------------------------------------------------- /DisconnectPro/disconnect/src/main/res/drawable-xhdpi/icon_stats.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/disconnectme/premium-android/8fe2f1414dc0267f376a33842d6f1f7e2f6595b5/DisconnectPro/disconnect/src/main/res/drawable-xhdpi/icon_stats.png -------------------------------------------------------------------------------- /DisconnectPro/disconnect/src/main/res/drawable-xhdpi/particle_circle.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/disconnectme/premium-android/8fe2f1414dc0267f376a33842d6f1f7e2f6595b5/DisconnectPro/disconnect/src/main/res/drawable-xhdpi/particle_circle.png -------------------------------------------------------------------------------- /DisconnectPro/disconnect/src/main/res/drawable-xhdpi/premium_shield.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/disconnectme/premium-android/8fe2f1414dc0267f376a33842d6f1f7e2f6595b5/DisconnectPro/disconnect/src/main/res/drawable-xhdpi/premium_shield.png -------------------------------------------------------------------------------- /DisconnectPro/disconnect/src/main/res/drawable-xhdpi/protection_bg_nodes.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/disconnectme/premium-android/8fe2f1414dc0267f376a33842d6f1f7e2f6595b5/DisconnectPro/disconnect/src/main/res/drawable-xhdpi/protection_bg_nodes.png -------------------------------------------------------------------------------- /DisconnectPro/disconnect/src/main/res/drawable-xhdpi/rocket.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/disconnectme/premium-android/8fe2f1414dc0267f376a33842d6f1f7e2f6595b5/DisconnectPro/disconnect/src/main/res/drawable-xhdpi/rocket.png -------------------------------------------------------------------------------- /DisconnectPro/disconnect/src/main/res/drawable-xhdpi/stats_btn_bg.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/disconnectme/premium-android/8fe2f1414dc0267f376a33842d6f1f7e2f6595b5/DisconnectPro/disconnect/src/main/res/drawable-xhdpi/stats_btn_bg.png -------------------------------------------------------------------------------- /DisconnectPro/disconnect/src/main/res/drawable-xxhdpi/d_logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/disconnectme/premium-android/8fe2f1414dc0267f376a33842d6f1f7e2f6595b5/DisconnectPro/disconnect/src/main/res/drawable-xxhdpi/d_logo.png -------------------------------------------------------------------------------- /DisconnectPro/disconnect/src/main/res/drawable-xxhdpi/d_shield.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/disconnectme/premium-android/8fe2f1414dc0267f376a33842d6f1f7e2f6595b5/DisconnectPro/disconnect/src/main/res/drawable-xxhdpi/d_shield.png -------------------------------------------------------------------------------- /DisconnectPro/disconnect/src/main/res/drawable-xxhdpi/encryption_btn_bg.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/disconnectme/premium-android/8fe2f1414dc0267f376a33842d6f1f7e2f6595b5/DisconnectPro/disconnect/src/main/res/drawable-xxhdpi/encryption_btn_bg.png -------------------------------------------------------------------------------- /DisconnectPro/disconnect/src/main/res/drawable-xxhdpi/feature_icn_3devices.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/disconnectme/premium-android/8fe2f1414dc0267f376a33842d6f1f7e2f6595b5/DisconnectPro/disconnect/src/main/res/drawable-xxhdpi/feature_icn_3devices.png -------------------------------------------------------------------------------- /DisconnectPro/disconnect/src/main/res/drawable-xxhdpi/feature_icn_cancel_anytime.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/disconnectme/premium-android/8fe2f1414dc0267f376a33842d6f1f7e2f6595b5/DisconnectPro/disconnect/src/main/res/drawable-xxhdpi/feature_icn_cancel_anytime.png -------------------------------------------------------------------------------- /DisconnectPro/disconnect/src/main/res/drawable-xxhdpi/feature_icn_encrypted.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/disconnectme/premium-android/8fe2f1414dc0267f376a33842d6f1f7e2f6595b5/DisconnectPro/disconnect/src/main/res/drawable-xxhdpi/feature_icn_encrypted.png -------------------------------------------------------------------------------- /DisconnectPro/disconnect/src/main/res/drawable-xxhdpi/feature_icn_location.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/disconnectme/premium-android/8fe2f1414dc0267f376a33842d6f1f7e2f6595b5/DisconnectPro/disconnect/src/main/res/drawable-xxhdpi/feature_icn_location.png -------------------------------------------------------------------------------- /DisconnectPro/disconnect/src/main/res/drawable-xxhdpi/feature_icn_protection.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/disconnectme/premium-android/8fe2f1414dc0267f376a33842d6f1f7e2f6595b5/DisconnectPro/disconnect/src/main/res/drawable-xxhdpi/feature_icn_protection.png -------------------------------------------------------------------------------- /DisconnectPro/disconnect/src/main/res/drawable-xxhdpi/feature_icn_tutorial.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/disconnectme/premium-android/8fe2f1414dc0267f376a33842d6f1f7e2f6595b5/DisconnectPro/disconnect/src/main/res/drawable-xxhdpi/feature_icn_tutorial.png -------------------------------------------------------------------------------- /DisconnectPro/disconnect/src/main/res/drawable-xxhdpi/feature_icon_alerts.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/disconnectme/premium-android/8fe2f1414dc0267f376a33842d6f1f7e2f6595b5/DisconnectPro/disconnect/src/main/res/drawable-xxhdpi/feature_icon_alerts.png -------------------------------------------------------------------------------- /DisconnectPro/disconnect/src/main/res/drawable-xxhdpi/help_btn_bg.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/disconnectme/premium-android/8fe2f1414dc0267f376a33842d6f1f7e2f6595b5/DisconnectPro/disconnect/src/main/res/drawable-xxhdpi/help_btn_bg.png -------------------------------------------------------------------------------- /DisconnectPro/disconnect/src/main/res/drawable-xxhdpi/icn_alerts_active.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/disconnectme/premium-android/8fe2f1414dc0267f376a33842d6f1f7e2f6595b5/DisconnectPro/disconnect/src/main/res/drawable-xxhdpi/icn_alerts_active.png -------------------------------------------------------------------------------- /DisconnectPro/disconnect/src/main/res/drawable-xxhdpi/icn_alerts_normal.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/disconnectme/premium-android/8fe2f1414dc0267f376a33842d6f1f7e2f6595b5/DisconnectPro/disconnect/src/main/res/drawable-xxhdpi/icn_alerts_normal.png -------------------------------------------------------------------------------- /DisconnectPro/disconnect/src/main/res/drawable-xxhdpi/icn_blocked_tracker.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/disconnectme/premium-android/8fe2f1414dc0267f376a33842d6f1f7e2f6595b5/DisconnectPro/disconnect/src/main/res/drawable-xxhdpi/icn_blocked_tracker.png -------------------------------------------------------------------------------- /DisconnectPro/disconnect/src/main/res/drawable-xxhdpi/icn_news_active.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/disconnectme/premium-android/8fe2f1414dc0267f376a33842d6f1f7e2f6595b5/DisconnectPro/disconnect/src/main/res/drawable-xxhdpi/icn_news_active.png -------------------------------------------------------------------------------- /DisconnectPro/disconnect/src/main/res/drawable-xxhdpi/icn_news_normal.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/disconnectme/premium-android/8fe2f1414dc0267f376a33842d6f1f7e2f6595b5/DisconnectPro/disconnect/src/main/res/drawable-xxhdpi/icn_news_normal.png -------------------------------------------------------------------------------- /DisconnectPro/disconnect/src/main/res/drawable-xxhdpi/icn_protection_blocking.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/disconnectme/premium-android/8fe2f1414dc0267f376a33842d6f1f7e2f6595b5/DisconnectPro/disconnect/src/main/res/drawable-xxhdpi/icn_protection_blocking.png -------------------------------------------------------------------------------- /DisconnectPro/disconnect/src/main/res/drawable-xxhdpi/icn_protection_off.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/disconnectme/premium-android/8fe2f1414dc0267f376a33842d6f1f7e2f6595b5/DisconnectPro/disconnect/src/main/res/drawable-xxhdpi/icn_protection_off.png -------------------------------------------------------------------------------- /DisconnectPro/disconnect/src/main/res/drawable-xxhdpi/icn_settings_btn.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/disconnectme/premium-android/8fe2f1414dc0267f376a33842d6f1f7e2f6595b5/DisconnectPro/disconnect/src/main/res/drawable-xxhdpi/icn_settings_btn.png -------------------------------------------------------------------------------- /DisconnectPro/disconnect/src/main/res/drawable-xxhdpi/icn_tips_active.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/disconnectme/premium-android/8fe2f1414dc0267f376a33842d6f1f7e2f6595b5/DisconnectPro/disconnect/src/main/res/drawable-xxhdpi/icn_tips_active.png -------------------------------------------------------------------------------- /DisconnectPro/disconnect/src/main/res/drawable-xxhdpi/icn_tips_normal.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/disconnectme/premium-android/8fe2f1414dc0267f376a33842d6f1f7e2f6595b5/DisconnectPro/disconnect/src/main/res/drawable-xxhdpi/icn_tips_normal.png -------------------------------------------------------------------------------- /DisconnectPro/disconnect/src/main/res/drawable-xxhdpi/icon_protection_encrypted.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/disconnectme/premium-android/8fe2f1414dc0267f376a33842d6f1f7e2f6595b5/DisconnectPro/disconnect/src/main/res/drawable-xxhdpi/icon_protection_encrypted.png -------------------------------------------------------------------------------- /DisconnectPro/disconnect/src/main/res/drawable-xxhdpi/icon_stats.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/disconnectme/premium-android/8fe2f1414dc0267f376a33842d6f1f7e2f6595b5/DisconnectPro/disconnect/src/main/res/drawable-xxhdpi/icon_stats.png -------------------------------------------------------------------------------- /DisconnectPro/disconnect/src/main/res/drawable-xxhdpi/particle_circle.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/disconnectme/premium-android/8fe2f1414dc0267f376a33842d6f1f7e2f6595b5/DisconnectPro/disconnect/src/main/res/drawable-xxhdpi/particle_circle.png -------------------------------------------------------------------------------- /DisconnectPro/disconnect/src/main/res/drawable-xxhdpi/premium_shield.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/disconnectme/premium-android/8fe2f1414dc0267f376a33842d6f1f7e2f6595b5/DisconnectPro/disconnect/src/main/res/drawable-xxhdpi/premium_shield.png -------------------------------------------------------------------------------- /DisconnectPro/disconnect/src/main/res/drawable-xxhdpi/protection_bg_nodes.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/disconnectme/premium-android/8fe2f1414dc0267f376a33842d6f1f7e2f6595b5/DisconnectPro/disconnect/src/main/res/drawable-xxhdpi/protection_bg_nodes.png -------------------------------------------------------------------------------- /DisconnectPro/disconnect/src/main/res/drawable-xxhdpi/rocket.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/disconnectme/premium-android/8fe2f1414dc0267f376a33842d6f1f7e2f6595b5/DisconnectPro/disconnect/src/main/res/drawable-xxhdpi/rocket.png -------------------------------------------------------------------------------- /DisconnectPro/disconnect/src/main/res/drawable-xxhdpi/stats_btn_bg.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/disconnectme/premium-android/8fe2f1414dc0267f376a33842d6f1f7e2f6595b5/DisconnectPro/disconnect/src/main/res/drawable-xxhdpi/stats_btn_bg.png -------------------------------------------------------------------------------- /DisconnectPro/disconnect/src/main/res/drawable-xxxhdpi/d_logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/disconnectme/premium-android/8fe2f1414dc0267f376a33842d6f1f7e2f6595b5/DisconnectPro/disconnect/src/main/res/drawable-xxxhdpi/d_logo.png -------------------------------------------------------------------------------- /DisconnectPro/disconnect/src/main/res/drawable-xxxhdpi/d_shield.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/disconnectme/premium-android/8fe2f1414dc0267f376a33842d6f1f7e2f6595b5/DisconnectPro/disconnect/src/main/res/drawable-xxxhdpi/d_shield.png -------------------------------------------------------------------------------- /DisconnectPro/disconnect/src/main/res/drawable-xxxhdpi/encryption_btn_bg.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/disconnectme/premium-android/8fe2f1414dc0267f376a33842d6f1f7e2f6595b5/DisconnectPro/disconnect/src/main/res/drawable-xxxhdpi/encryption_btn_bg.png -------------------------------------------------------------------------------- /DisconnectPro/disconnect/src/main/res/drawable-xxxhdpi/feature_icn_3devices.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/disconnectme/premium-android/8fe2f1414dc0267f376a33842d6f1f7e2f6595b5/DisconnectPro/disconnect/src/main/res/drawable-xxxhdpi/feature_icn_3devices.png -------------------------------------------------------------------------------- /DisconnectPro/disconnect/src/main/res/drawable-xxxhdpi/feature_icn_cancel_anytime.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/disconnectme/premium-android/8fe2f1414dc0267f376a33842d6f1f7e2f6595b5/DisconnectPro/disconnect/src/main/res/drawable-xxxhdpi/feature_icn_cancel_anytime.png -------------------------------------------------------------------------------- /DisconnectPro/disconnect/src/main/res/drawable-xxxhdpi/feature_icn_encrypted.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/disconnectme/premium-android/8fe2f1414dc0267f376a33842d6f1f7e2f6595b5/DisconnectPro/disconnect/src/main/res/drawable-xxxhdpi/feature_icn_encrypted.png -------------------------------------------------------------------------------- /DisconnectPro/disconnect/src/main/res/drawable-xxxhdpi/feature_icn_location.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/disconnectme/premium-android/8fe2f1414dc0267f376a33842d6f1f7e2f6595b5/DisconnectPro/disconnect/src/main/res/drawable-xxxhdpi/feature_icn_location.png -------------------------------------------------------------------------------- /DisconnectPro/disconnect/src/main/res/drawable-xxxhdpi/feature_icn_protection.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/disconnectme/premium-android/8fe2f1414dc0267f376a33842d6f1f7e2f6595b5/DisconnectPro/disconnect/src/main/res/drawable-xxxhdpi/feature_icn_protection.png -------------------------------------------------------------------------------- /DisconnectPro/disconnect/src/main/res/drawable-xxxhdpi/feature_icn_tutorial.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/disconnectme/premium-android/8fe2f1414dc0267f376a33842d6f1f7e2f6595b5/DisconnectPro/disconnect/src/main/res/drawable-xxxhdpi/feature_icn_tutorial.png -------------------------------------------------------------------------------- /DisconnectPro/disconnect/src/main/res/drawable-xxxhdpi/feature_icon_alerts.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/disconnectme/premium-android/8fe2f1414dc0267f376a33842d6f1f7e2f6595b5/DisconnectPro/disconnect/src/main/res/drawable-xxxhdpi/feature_icon_alerts.png -------------------------------------------------------------------------------- /DisconnectPro/disconnect/src/main/res/drawable-xxxhdpi/help_btn_bg.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/disconnectme/premium-android/8fe2f1414dc0267f376a33842d6f1f7e2f6595b5/DisconnectPro/disconnect/src/main/res/drawable-xxxhdpi/help_btn_bg.png -------------------------------------------------------------------------------- /DisconnectPro/disconnect/src/main/res/drawable-xxxhdpi/icn_alerts_active.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/disconnectme/premium-android/8fe2f1414dc0267f376a33842d6f1f7e2f6595b5/DisconnectPro/disconnect/src/main/res/drawable-xxxhdpi/icn_alerts_active.png -------------------------------------------------------------------------------- /DisconnectPro/disconnect/src/main/res/drawable-xxxhdpi/icn_alerts_normal.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/disconnectme/premium-android/8fe2f1414dc0267f376a33842d6f1f7e2f6595b5/DisconnectPro/disconnect/src/main/res/drawable-xxxhdpi/icn_alerts_normal.png -------------------------------------------------------------------------------- /DisconnectPro/disconnect/src/main/res/drawable-xxxhdpi/icn_blocked_tracker.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/disconnectme/premium-android/8fe2f1414dc0267f376a33842d6f1f7e2f6595b5/DisconnectPro/disconnect/src/main/res/drawable-xxxhdpi/icn_blocked_tracker.png -------------------------------------------------------------------------------- /DisconnectPro/disconnect/src/main/res/drawable-xxxhdpi/icn_news_active.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/disconnectme/premium-android/8fe2f1414dc0267f376a33842d6f1f7e2f6595b5/DisconnectPro/disconnect/src/main/res/drawable-xxxhdpi/icn_news_active.png -------------------------------------------------------------------------------- /DisconnectPro/disconnect/src/main/res/drawable-xxxhdpi/icn_news_normal.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/disconnectme/premium-android/8fe2f1414dc0267f376a33842d6f1f7e2f6595b5/DisconnectPro/disconnect/src/main/res/drawable-xxxhdpi/icn_news_normal.png -------------------------------------------------------------------------------- /DisconnectPro/disconnect/src/main/res/drawable-xxxhdpi/icn_protection_blocking.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/disconnectme/premium-android/8fe2f1414dc0267f376a33842d6f1f7e2f6595b5/DisconnectPro/disconnect/src/main/res/drawable-xxxhdpi/icn_protection_blocking.png -------------------------------------------------------------------------------- /DisconnectPro/disconnect/src/main/res/drawable-xxxhdpi/icn_protection_off.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/disconnectme/premium-android/8fe2f1414dc0267f376a33842d6f1f7e2f6595b5/DisconnectPro/disconnect/src/main/res/drawable-xxxhdpi/icn_protection_off.png -------------------------------------------------------------------------------- /DisconnectPro/disconnect/src/main/res/drawable-xxxhdpi/icn_settings_btn.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/disconnectme/premium-android/8fe2f1414dc0267f376a33842d6f1f7e2f6595b5/DisconnectPro/disconnect/src/main/res/drawable-xxxhdpi/icn_settings_btn.png -------------------------------------------------------------------------------- /DisconnectPro/disconnect/src/main/res/drawable-xxxhdpi/icn_tips_active.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/disconnectme/premium-android/8fe2f1414dc0267f376a33842d6f1f7e2f6595b5/DisconnectPro/disconnect/src/main/res/drawable-xxxhdpi/icn_tips_active.png -------------------------------------------------------------------------------- /DisconnectPro/disconnect/src/main/res/drawable-xxxhdpi/icn_tips_normal.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/disconnectme/premium-android/8fe2f1414dc0267f376a33842d6f1f7e2f6595b5/DisconnectPro/disconnect/src/main/res/drawable-xxxhdpi/icn_tips_normal.png -------------------------------------------------------------------------------- /DisconnectPro/disconnect/src/main/res/drawable-xxxhdpi/icon_protection_encrypted.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/disconnectme/premium-android/8fe2f1414dc0267f376a33842d6f1f7e2f6595b5/DisconnectPro/disconnect/src/main/res/drawable-xxxhdpi/icon_protection_encrypted.png -------------------------------------------------------------------------------- /DisconnectPro/disconnect/src/main/res/drawable-xxxhdpi/icon_stats.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/disconnectme/premium-android/8fe2f1414dc0267f376a33842d6f1f7e2f6595b5/DisconnectPro/disconnect/src/main/res/drawable-xxxhdpi/icon_stats.png -------------------------------------------------------------------------------- /DisconnectPro/disconnect/src/main/res/drawable-xxxhdpi/particle_circle.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/disconnectme/premium-android/8fe2f1414dc0267f376a33842d6f1f7e2f6595b5/DisconnectPro/disconnect/src/main/res/drawable-xxxhdpi/particle_circle.png -------------------------------------------------------------------------------- /DisconnectPro/disconnect/src/main/res/drawable-xxxhdpi/premium_shield.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/disconnectme/premium-android/8fe2f1414dc0267f376a33842d6f1f7e2f6595b5/DisconnectPro/disconnect/src/main/res/drawable-xxxhdpi/premium_shield.png -------------------------------------------------------------------------------- /DisconnectPro/disconnect/src/main/res/drawable-xxxhdpi/protection_bg_nodes.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/disconnectme/premium-android/8fe2f1414dc0267f376a33842d6f1f7e2f6595b5/DisconnectPro/disconnect/src/main/res/drawable-xxxhdpi/protection_bg_nodes.png -------------------------------------------------------------------------------- /DisconnectPro/disconnect/src/main/res/drawable-xxxhdpi/rocket.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/disconnectme/premium-android/8fe2f1414dc0267f376a33842d6f1f7e2f6595b5/DisconnectPro/disconnect/src/main/res/drawable-xxxhdpi/rocket.png -------------------------------------------------------------------------------- /DisconnectPro/disconnect/src/main/res/drawable-xxxhdpi/stats_btn_bg.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/disconnectme/premium-android/8fe2f1414dc0267f376a33842d6f1f7e2f6595b5/DisconnectPro/disconnect/src/main/res/drawable-xxxhdpi/stats_btn_bg.png -------------------------------------------------------------------------------- /DisconnectPro/disconnect/src/main/res/drawable/alerts_icon.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /DisconnectPro/disconnect/src/main/res/drawable/dark_circle.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | -------------------------------------------------------------------------------- /DisconnectPro/disconnect/src/main/res/drawable/difficulty_orange.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 6 | 8 | 11 | 12 | 13 | 14 | 16 | 18 | 21 | 22 | 23 | -------------------------------------------------------------------------------- /DisconnectPro/disconnect/src/main/res/drawable/difficulty_red.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 6 | 8 | 11 | 12 | 13 | 14 | 16 | 18 | 21 | 22 | 23 | -------------------------------------------------------------------------------- /DisconnectPro/disconnect/src/main/res/drawable/difficulty_yellow.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 6 | 8 | 11 | 12 | 13 | 14 | 16 | 18 | 21 | 22 | 23 | -------------------------------------------------------------------------------- /DisconnectPro/disconnect/src/main/res/drawable/ic_account_circle_green.xml: -------------------------------------------------------------------------------- 1 | 6 | 9 | 10 | -------------------------------------------------------------------------------- /DisconnectPro/disconnect/src/main/res/drawable/ic_arrow_back_purple.xml: -------------------------------------------------------------------------------- 1 | 6 | 9 | 10 | -------------------------------------------------------------------------------- /DisconnectPro/disconnect/src/main/res/drawable/ic_arrow_forward_white.xml: -------------------------------------------------------------------------------- 1 | 6 | 9 | 10 | -------------------------------------------------------------------------------- /DisconnectPro/disconnect/src/main/res/drawable/ic_cancel_white.xml: -------------------------------------------------------------------------------- 1 | 6 | 9 | 10 | -------------------------------------------------------------------------------- /DisconnectPro/disconnect/src/main/res/drawable/ic_chevron_right_black.xml: -------------------------------------------------------------------------------- 1 | 6 | 9 | 10 | -------------------------------------------------------------------------------- /DisconnectPro/disconnect/src/main/res/drawable/ic_dashboard_black_24dp.xml: -------------------------------------------------------------------------------- 1 | 6 | 9 | 10 | -------------------------------------------------------------------------------- /DisconnectPro/disconnect/src/main/res/drawable/ic_home_black_24dp.xml: -------------------------------------------------------------------------------- 1 | 6 | 9 | 10 | -------------------------------------------------------------------------------- /DisconnectPro/disconnect/src/main/res/drawable/ic_info_green.xml: -------------------------------------------------------------------------------- 1 | 6 | 9 | 10 | -------------------------------------------------------------------------------- /DisconnectPro/disconnect/src/main/res/drawable/ic_notifications_black_24dp.xml: -------------------------------------------------------------------------------- 1 | 6 | 9 | 10 | -------------------------------------------------------------------------------- /DisconnectPro/disconnect/src/main/res/drawable/ic_poll_green.xml: -------------------------------------------------------------------------------- 1 | 6 | 9 | 10 | -------------------------------------------------------------------------------- /DisconnectPro/disconnect/src/main/res/drawable/ic_restore_green.xml: -------------------------------------------------------------------------------- 1 | 6 | 9 | 10 | -------------------------------------------------------------------------------- /DisconnectPro/disconnect/src/main/res/drawable/learn_icon.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /DisconnectPro/disconnect/src/main/res/drawable/location_button_background.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 25 | 26 | 27 | -------------------------------------------------------------------------------- /DisconnectPro/disconnect/src/main/res/drawable/new_button.xml: -------------------------------------------------------------------------------- 1 | 2 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /DisconnectPro/disconnect/src/main/res/drawable/news_icon.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /DisconnectPro/disconnect/src/main/res/drawable/protection_background.xml: -------------------------------------------------------------------------------- 1 | 2 | 4 | 9 | -------------------------------------------------------------------------------- /DisconnectPro/disconnect/src/main/res/drawable/roundedbutton.xml: -------------------------------------------------------------------------------- 1 | 2 | 4 | 5 | 9 | -------------------------------------------------------------------------------- /DisconnectPro/disconnect/src/main/res/drawable/splash_screen.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/disconnectme/premium-android/8fe2f1414dc0267f376a33842d6f1f7e2f6595b5/DisconnectPro/disconnect/src/main/res/drawable/splash_screen.png -------------------------------------------------------------------------------- /DisconnectPro/disconnect/src/main/res/drawable/stats_bucket_background.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | -------------------------------------------------------------------------------- /DisconnectPro/disconnect/src/main/res/drawable/subscription_background.xml: -------------------------------------------------------------------------------- 1 | 2 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /DisconnectPro/disconnect/src/main/res/drawable/subscription_price_background.xml: -------------------------------------------------------------------------------- 1 | 2 | 4 | 5 | -------------------------------------------------------------------------------- /DisconnectPro/disconnect/src/main/res/drawable/tracker_status.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /DisconnectPro/disconnect/src/main/res/drawable/tracker_timestamp_background.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | -------------------------------------------------------------------------------- /DisconnectPro/disconnect/src/main/res/drawable/video_background_gradient.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 9 | -------------------------------------------------------------------------------- /DisconnectPro/disconnect/src/main/res/drawable/white_circle.xml: -------------------------------------------------------------------------------- 1 | 2 | 4 | 6 | -------------------------------------------------------------------------------- /DisconnectPro/disconnect/src/main/res/drawable/white_divider.xml: -------------------------------------------------------------------------------- 1 | 2 | 4 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /DisconnectPro/disconnect/src/main/res/layout/actionbar_title.xml: -------------------------------------------------------------------------------- 1 | 2 | 6 | 7 | 19 | 20 | -------------------------------------------------------------------------------- /DisconnectPro/disconnect/src/main/res/layout/activity_settings.xml: -------------------------------------------------------------------------------- 1 | 2 | 9 | 13 | 21 | 22 | -------------------------------------------------------------------------------- /DisconnectPro/disconnect/src/main/res/layout/activity_splash.xml: -------------------------------------------------------------------------------- 1 | 2 | 8 | 14 | 15 | 16 | -------------------------------------------------------------------------------- /DisconnectPro/disconnect/src/main/res/layout/fragment_news_list.xml: -------------------------------------------------------------------------------- 1 | 2 | 11 | 17 | 18 | -------------------------------------------------------------------------------- /DisconnectPro/disconnect/src/main/res/layout/fragment_setting.xml: -------------------------------------------------------------------------------- 1 | 2 | 9 | 17 | 26 | 34 | 35 | -------------------------------------------------------------------------------- /DisconnectPro/disconnect/src/main/res/layout/fragment_setting_list.xml: -------------------------------------------------------------------------------- 1 | 2 | 14 | -------------------------------------------------------------------------------- /DisconnectPro/disconnect/src/main/res/layout/fragment_tracker.xml: -------------------------------------------------------------------------------- 1 | 2 | 7 | 17 | 25 | 32 | 39 | 40 | 47 | 48 | -------------------------------------------------------------------------------- /DisconnectPro/disconnect/src/main/res/menu/main_menu.xml: -------------------------------------------------------------------------------- 1 | 2 | 4 | 10 | -------------------------------------------------------------------------------- /DisconnectPro/disconnect/src/main/res/mipmap-anydpi-v26/ic_launcher.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /DisconnectPro/disconnect/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /DisconnectPro/disconnect/src/main/res/mipmap-hdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/disconnectme/premium-android/8fe2f1414dc0267f376a33842d6f1f7e2f6595b5/DisconnectPro/disconnect/src/main/res/mipmap-hdpi/ic_launcher.png -------------------------------------------------------------------------------- /DisconnectPro/disconnect/src/main/res/mipmap-hdpi/ic_launcher_round.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/disconnectme/premium-android/8fe2f1414dc0267f376a33842d6f1f7e2f6595b5/DisconnectPro/disconnect/src/main/res/mipmap-hdpi/ic_launcher_round.png -------------------------------------------------------------------------------- /DisconnectPro/disconnect/src/main/res/mipmap-mdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/disconnectme/premium-android/8fe2f1414dc0267f376a33842d6f1f7e2f6595b5/DisconnectPro/disconnect/src/main/res/mipmap-mdpi/ic_launcher.png -------------------------------------------------------------------------------- /DisconnectPro/disconnect/src/main/res/mipmap-mdpi/ic_launcher_round.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/disconnectme/premium-android/8fe2f1414dc0267f376a33842d6f1f7e2f6595b5/DisconnectPro/disconnect/src/main/res/mipmap-mdpi/ic_launcher_round.png -------------------------------------------------------------------------------- /DisconnectPro/disconnect/src/main/res/mipmap-xhdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/disconnectme/premium-android/8fe2f1414dc0267f376a33842d6f1f7e2f6595b5/DisconnectPro/disconnect/src/main/res/mipmap-xhdpi/ic_launcher.png -------------------------------------------------------------------------------- /DisconnectPro/disconnect/src/main/res/mipmap-xhdpi/ic_launcher_round.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/disconnectme/premium-android/8fe2f1414dc0267f376a33842d6f1f7e2f6595b5/DisconnectPro/disconnect/src/main/res/mipmap-xhdpi/ic_launcher_round.png -------------------------------------------------------------------------------- /DisconnectPro/disconnect/src/main/res/mipmap-xxhdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/disconnectme/premium-android/8fe2f1414dc0267f376a33842d6f1f7e2f6595b5/DisconnectPro/disconnect/src/main/res/mipmap-xxhdpi/ic_launcher.png -------------------------------------------------------------------------------- /DisconnectPro/disconnect/src/main/res/mipmap-xxhdpi/ic_launcher_round.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/disconnectme/premium-android/8fe2f1414dc0267f376a33842d6f1f7e2f6595b5/DisconnectPro/disconnect/src/main/res/mipmap-xxhdpi/ic_launcher_round.png -------------------------------------------------------------------------------- /DisconnectPro/disconnect/src/main/res/mipmap-xxxhdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/disconnectme/premium-android/8fe2f1414dc0267f376a33842d6f1f7e2f6595b5/DisconnectPro/disconnect/src/main/res/mipmap-xxxhdpi/ic_launcher.png -------------------------------------------------------------------------------- /DisconnectPro/disconnect/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/disconnectme/premium-android/8fe2f1414dc0267f376a33842d6f1f7e2f6595b5/DisconnectPro/disconnect/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png -------------------------------------------------------------------------------- /DisconnectPro/disconnect/src/main/res/values/colors.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | #354C47 4 | @color/green_disconnect 5 | #d1e3da 6 | #337D63 7 | 8 | @color/disconnect_green 9 | @color/action_bar_color 10 | @android:color/black 11 | 12 | #3C4554 13 | 14 | #2c2632 15 | 16 | #47A57F 17 | #3B8C6D 18 | #F9F9F9 19 | #FAFAFA 20 | #EFEFEF 21 | #808180 22 | #D0D0D0 23 | #3C4554 24 | #241A27 25 | #ED7467 26 | #E99F49 27 | #F8F246 28 | 29 | #898989 30 | #9A9A9A 31 | #9DA2A9 32 | 33 | #252932 34 | #bb3C4554 35 | 36 | -------------------------------------------------------------------------------- /DisconnectPro/disconnect/src/main/res/values/dimens.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 16dp 4 | 16dp 5 | 16dp 6 | 8dp 7 | 16dp 8 | 8dp 9 | 10 | -------------------------------------------------------------------------------- /DisconnectPro/disconnect/src/test/java/pro/disconnect/me/ExampleUnitTest.java: -------------------------------------------------------------------------------- 1 | package pro.disconnect.me; 2 | 3 | import org.junit.Test; 4 | 5 | import static org.junit.Assert.*; 6 | 7 | /** 8 | * Example local unit test, which will execute on the development machine (host). 9 | * 10 | * @see Testing documentation 11 | */ 12 | public class ExampleUnitTest { 13 | @Test 14 | public void addition_isCorrect() throws Exception { 15 | assertEquals(4, 2 + 2); 16 | } 17 | } -------------------------------------------------------------------------------- /DisconnectPro/gradle/wrapper/gradle-wrapper.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/disconnectme/premium-android/8fe2f1414dc0267f376a33842d6f1f7e2f6595b5/DisconnectPro/gradle/wrapper/gradle-wrapper.jar -------------------------------------------------------------------------------- /DisconnectPro/gradle/wrapper/gradle-wrapper.properties: -------------------------------------------------------------------------------- 1 | #Thu Dec 27 11:49:06 PST 2018 2 | distributionBase=GRADLE_USER_HOME 3 | distributionPath=wrapper/dists 4 | zipStoreBase=GRADLE_USER_HOME 5 | zipStorePath=wrapper/dists 6 | distributionUrl=https\://services.gradle.org/distributions/gradle-4.6-all.zip 7 | -------------------------------------------------------------------------------- /DisconnectPro/settings.gradle: -------------------------------------------------------------------------------- 1 | include ':app', ':disconnect' 2 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # Disconnect Premium for Android 2 | 3 | ## Build instructions 4 | 1. The strongswan project needs to be build to generate the jni source files 5 | * Download strongswan project to /strongswan 6 | * Build strongswan project referring https://wiki.strongswan.org/projects/strongswan/wiki/AndroidVPNClientBuild 7 | 8 | 2. Clone git clone git://git.strongswan.org/android-ndk-boringssl.git -b ndk-static openssl into ./DisconnectPro/app/src/main/jni 9 | 10 | 3. Load DisconnectPro project into Android studio and build 11 | --------------------------------------------------------------------------------