mirror of
https://github.com/bitfireAT/davx5-ose.git
synced 2025-12-23 23:17:50 -05:00
Further DAVdroid -> DAVx5 replacements
This commit is contained in:
@@ -82,7 +82,7 @@ class CustomTlsSocketFactory(
|
|||||||
|
|
||||||
/* For maximum security, preferredCiphers should *replace* enabled ciphers (thus
|
/* For maximum security, preferredCiphers should *replace* enabled ciphers (thus
|
||||||
* disabling ciphers which are enabled by default, but have become unsecure), but for
|
* disabling ciphers which are enabled by default, but have become unsecure), but for
|
||||||
* the security level of DAVdroid and maximum compatibility, disabling of insecure
|
* the security level of DAVx5 and maximum compatibility, disabling of insecure
|
||||||
* ciphers should be a server-side task */
|
* ciphers should be a server-side task */
|
||||||
|
|
||||||
// for the final set of enabled ciphers, take the ciphers enabled by default, ...
|
// for the final set of enabled ciphers, take the ciphers enabled by default, ...
|
||||||
|
|||||||
@@ -187,7 +187,7 @@ class HttpClient private constructor(
|
|||||||
val key = KeyChain.getPrivateKey(context, alias) ?: return@let
|
val key = KeyChain.getPrivateKey(context, alias) ?: return@let
|
||||||
logger.fine("Using client certificate $alias for authentication (chain length: ${certs.size})")
|
logger.fine("Using client certificate $alias for authentication (chain length: ${certs.size})")
|
||||||
|
|
||||||
// create Android KeyStore (performs key operations without revealing secret data to DAVdroid)
|
// create Android KeyStore (performs key operations without revealing secret data to DAVx5)
|
||||||
val keyStore = KeyStore.getInstance("AndroidKeyStore")
|
val keyStore = KeyStore.getInstance("AndroidKeyStore")
|
||||||
keyStore.load(null)
|
keyStore.load(null)
|
||||||
|
|
||||||
@@ -223,11 +223,10 @@ class HttpClient private constructor(
|
|||||||
|
|
||||||
|
|
||||||
private object UserAgentInterceptor: Interceptor {
|
private object UserAgentInterceptor: Interceptor {
|
||||||
|
|
||||||
// use Locale.US because numbers may be encoded as non-ASCII characters in other locales
|
// use Locale.US because numbers may be encoded as non-ASCII characters in other locales
|
||||||
private val userAgentDateFormat = SimpleDateFormat("yyyy/MM/dd", Locale.US)
|
private val userAgentDateFormat = SimpleDateFormat("yyyy/MM/dd", Locale.US)
|
||||||
private val userAgentDate = userAgentDateFormat.format(Date(BuildConfig.buildTime))
|
private val userAgentDate = userAgentDateFormat.format(Date(BuildConfig.buildTime))
|
||||||
private val userAgent = "DAVdroid/${BuildConfig.VERSION_NAME} ($userAgentDate; dav4android; okhttp/${Constants.okHttpVersion}) Android/${Build.VERSION.RELEASE}"
|
private val userAgent = "DAVx5/${BuildConfig.VERSION_NAME} ($userAgentDate; dav4android; okhttp/${Constants.okHttpVersion}) Android/${Build.VERSION.RELEASE}"
|
||||||
|
|
||||||
override fun intercept(chain: Interceptor.Chain): Response {
|
override fun intercept(chain: Interceptor.Chain): Response {
|
||||||
val locale = Locale.getDefault()
|
val locale = Locale.getDefault()
|
||||||
|
|||||||
@@ -31,9 +31,9 @@ import java.util.logging.Level
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* A local address book. Requires an own Android account, because Android manages contacts per
|
* A local address book. Requires an own Android account, because Android manages contacts per
|
||||||
* account and there is no such thing as "address books". So, DAVdroid creates a "DAVdroid
|
* account and there is no such thing as "address books". So, DAVx5 creates a "DAVx5
|
||||||
* address book" account for every CardDAV address book. These accounts are bound to a
|
* address book" account for every CardDAV address book. These accounts are bound to a
|
||||||
* DAVdroid main account.
|
* DAVx5 main account.
|
||||||
*/
|
*/
|
||||||
class LocalAddressBook(
|
class LocalAddressBook(
|
||||||
private val context: Context,
|
private val context: Context,
|
||||||
|
|||||||
@@ -27,7 +27,7 @@ class LocalContact: AndroidContact, LocalAddress {
|
|||||||
|
|
||||||
companion object {
|
companion object {
|
||||||
init {
|
init {
|
||||||
Contact.productID = "+//IDN bitfire.at//DAVdroid/" + BuildConfig.VERSION_NAME + " ez-vcard/" + Ezvcard.VERSION
|
Contact.productID = "+//IDN bitfire.at//DAVx5/" + BuildConfig.VERSION_NAME + " ez-vcard/" + Ezvcard.VERSION
|
||||||
}
|
}
|
||||||
|
|
||||||
const val COLUMN_FLAGS = ContactsContract.RawContacts.SYNC4
|
const val COLUMN_FLAGS = ContactsContract.RawContacts.SYNC4
|
||||||
@@ -214,7 +214,7 @@ class LocalContact: AndroidContact, LocalAddress {
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* Returns the IDs of all groups the contact was member of (cached memberships).
|
* Returns the IDs of all groups the contact was member of (cached memberships).
|
||||||
* Cached memberships are kept in sync with memberships by DAVdroid and are used to determine
|
* Cached memberships are kept in sync with memberships by DAVx5 and are used to determine
|
||||||
* whether a membership has been deleted/added when a raw contact is dirty.
|
* whether a membership has been deleted/added when a raw contact is dirty.
|
||||||
* @return set of {@link GroupMembership#GROUP_ROW_ID} (may be empty)
|
* @return set of {@link GroupMembership#GROUP_ROW_ID} (may be empty)
|
||||||
* @throws FileNotFoundException if the current contact can't be found
|
* @throws FileNotFoundException if the current contact can't be found
|
||||||
|
|||||||
@@ -21,7 +21,7 @@ class LocalEvent: AndroidEvent, LocalResource<Event> {
|
|||||||
|
|
||||||
companion object {
|
companion object {
|
||||||
init {
|
init {
|
||||||
ICalendar.prodId = ProdId("+//IDN bitfire.at//DAVdroid/" + BuildConfig.VERSION_NAME + " ical4j/" + Constants.ical4jVersion)
|
ICalendar.prodId = ProdId("+//IDN bitfire.at//DAVx5/" + BuildConfig.VERSION_NAME + " ical4j/" + Constants.ical4jVersion)
|
||||||
}
|
}
|
||||||
|
|
||||||
const val COLUMN_ETAG = CalendarContract.Events.SYNC_DATA1
|
const val COLUMN_ETAG = CalendarContract.Events.SYNC_DATA1
|
||||||
|
|||||||
@@ -70,12 +70,12 @@ class AccountSettings(
|
|||||||
const val KEY_TIME_RANGE_PAST_DAYS = "time_range_past_days"
|
const val KEY_TIME_RANGE_PAST_DAYS = "time_range_past_days"
|
||||||
const val DEFAULT_TIME_RANGE_PAST_DAYS = 90
|
const val DEFAULT_TIME_RANGE_PAST_DAYS = 90
|
||||||
|
|
||||||
/* Whether DAVdroid sets the local calendar color to the value from service DB at every sync
|
/* Whether DAVx5 sets the local calendar color to the value from service DB at every sync
|
||||||
value = null (not existing) true (default)
|
value = null (not existing) true (default)
|
||||||
"0" false */
|
"0" false */
|
||||||
const val KEY_MANAGE_CALENDAR_COLORS = "manage_calendar_colors"
|
const val KEY_MANAGE_CALENDAR_COLORS = "manage_calendar_colors"
|
||||||
|
|
||||||
/* Whether DAVdroid populates and uses CalendarContract.Colors
|
/* Whether DAVx5 populates and uses CalendarContract.Colors
|
||||||
value = null (not existing) false (default)
|
value = null (not existing) false (default)
|
||||||
"1" true */
|
"1" true */
|
||||||
const val KEY_EVENT_COLORS = "event_colors"
|
const val KEY_EVENT_COLORS = "event_colors"
|
||||||
|
|||||||
@@ -23,9 +23,9 @@ import java.util.logging.Level
|
|||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Account authenticator for the main DAVdroid account type.
|
* Account authenticator for the main DAVx5 account type.
|
||||||
*
|
*
|
||||||
* Gets started when a DAVdroid account is removed, too, so it also watches for account removals
|
* Gets started when a DAVx5 account is removed, too, so it also watches for account removals
|
||||||
* and contains the corresponding cleanup code.
|
* and contains the corresponding cleanup code.
|
||||||
*/
|
*/
|
||||||
class AccountAuthenticatorService: Service(), OnAccountsUpdateListener {
|
class AccountAuthenticatorService: Service(), OnAccountsUpdateListener {
|
||||||
|
|||||||
@@ -58,10 +58,10 @@ import java.util.logging.Level
|
|||||||
* to be checked whether its group memberships have changed. In this case, the respective
|
* to be checked whether its group memberships have changed. In this case, the respective
|
||||||
* groups have to be set to dirty. For instance, if contact A is in group G and H, and then
|
* groups have to be set to dirty. For instance, if contact A is in group G and H, and then
|
||||||
* group membership of G is removed, the contact will be set to dirty because of the changed
|
* group membership of G is removed, the contact will be set to dirty because of the changed
|
||||||
* [android.provider.ContactsContract.CommonDataKinds.GroupMembership]. DAVdroid will
|
* [android.provider.ContactsContract.CommonDataKinds.GroupMembership]. DAVx5 will
|
||||||
* then have to check whether the group memberships have actually changed, and if so,
|
* then have to check whether the group memberships have actually changed, and if so,
|
||||||
* all affected groups have to be set to dirty. To detect changes in group memberships,
|
* all affected groups have to be set to dirty. To detect changes in group memberships,
|
||||||
* DAVdroid always mirrors all [android.provider.ContactsContract.CommonDataKinds.GroupMembership]
|
* DAVx5 always mirrors all [android.provider.ContactsContract.CommonDataKinds.GroupMembership]
|
||||||
* data rows in respective [at.bitfire.vcard4android.CachedGroupMembership] rows.
|
* data rows in respective [at.bitfire.vcard4android.CachedGroupMembership] rows.
|
||||||
* If the cached group memberships are not the same as the current group member ships, the
|
* If the cached group memberships are not the same as the current group member ships, the
|
||||||
* difference set (in our example G, because its in the cached memberships, but not in the
|
* difference set (in our example G, because its in the cached memberships, but not in the
|
||||||
|
|||||||
@@ -81,7 +81,7 @@ class AccountActivity: AppCompatActivity(), Toolbar.OnMenuItemClickListener, Pop
|
|||||||
override fun onCreate(savedInstanceState: Bundle?) {
|
override fun onCreate(savedInstanceState: Bundle?) {
|
||||||
super.onCreate(savedInstanceState)
|
super.onCreate(savedInstanceState)
|
||||||
|
|
||||||
// account may be a DAVdroid address book account -> use main account in this case
|
// account may be a DAVx5 address book account -> use main account in this case
|
||||||
account = LocalAddressBook.mainAccount(this,
|
account = LocalAddressBook.mainAccount(this,
|
||||||
requireNotNull(intent.getParcelableExtra(EXTRA_ACCOUNT)))
|
requireNotNull(intent.getParcelableExtra(EXTRA_ACCOUNT)))
|
||||||
title = account.name
|
title = account.name
|
||||||
|
|||||||
@@ -186,7 +186,7 @@ class DebugInfoActivity: AppCompatActivity(), LoaderManager.LoaderCallbacks<Stri
|
|||||||
report.append("\nSOFTWARE INFORMATION\n")
|
report.append("\nSOFTWARE INFORMATION\n")
|
||||||
val pm = context.packageManager
|
val pm = context.packageManager
|
||||||
val appIDs = mutableSetOf( // we always want info about these packages
|
val appIDs = mutableSetOf( // we always want info about these packages
|
||||||
BuildConfig.APPLICATION_ID, // DAVdroid
|
BuildConfig.APPLICATION_ID, // DAVx5
|
||||||
"${BuildConfig.APPLICATION_ID}.jbworkaround", // DAVdroid JB Workaround
|
"${BuildConfig.APPLICATION_ID}.jbworkaround", // DAVdroid JB Workaround
|
||||||
"org.dmfs.tasks" // OpenTasks
|
"org.dmfs.tasks" // OpenTasks
|
||||||
)
|
)
|
||||||
|
|||||||
@@ -21,7 +21,7 @@ import at.bitfire.davdroid.R
|
|||||||
class DefaultAccountsDrawerHandler: IAccountsDrawerHandler {
|
class DefaultAccountsDrawerHandler: IAccountsDrawerHandler {
|
||||||
|
|
||||||
companion object {
|
companion object {
|
||||||
private const val BETA_FEEDBACK_URI = "mailto:support@davdroid.com?subject=${BuildConfig.APPLICATION_ID}/${BuildConfig.VERSION_NAME} feedback (${BuildConfig.VERSION_CODE})"
|
private const val BETA_FEEDBACK_URI = "mailto:support@davx5.com?subject=${BuildConfig.APPLICATION_ID}/${BuildConfig.VERSION_NAME} feedback (${BuildConfig.VERSION_CODE})"
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@@ -39,7 +39,7 @@ class DefaultAccountsDrawerHandler: IAccountsDrawerHandler {
|
|||||||
R.id.nav_beta_feedback ->
|
R.id.nav_beta_feedback ->
|
||||||
UiUtils.launchUri(activity, Uri.parse(BETA_FEEDBACK_URI), Intent.ACTION_SENDTO)
|
UiUtils.launchUri(activity, Uri.parse(BETA_FEEDBACK_URI), Intent.ACTION_SENDTO)
|
||||||
R.id.nav_twitter ->
|
R.id.nav_twitter ->
|
||||||
UiUtils.launchUri(activity, Uri.parse("https://twitter.com/davdroidapp"))
|
UiUtils.launchUri(activity, Uri.parse("https://twitter.com/" + activity.getString(R.string.twitter_handle)))
|
||||||
R.id.nav_website ->
|
R.id.nav_website ->
|
||||||
UiUtils.launchUri(activity, App.homepageUrl(activity))
|
UiUtils.launchUri(activity, App.homepageUrl(activity))
|
||||||
R.id.nav_manual ->
|
R.id.nav_manual ->
|
||||||
|
|||||||
@@ -31,7 +31,7 @@
|
|||||||
<item
|
<item
|
||||||
android:id="@+id/nav_twitter"
|
android:id="@+id/nav_twitter"
|
||||||
android:icon="@drawable/twitter"
|
android:icon="@drawable/twitter"
|
||||||
android:title="\@davdroidapp"
|
android:title="\@davx5app"
|
||||||
tools:ignore="HardcodedText"/>
|
tools:ignore="HardcodedText"/>
|
||||||
</menu>
|
</menu>
|
||||||
</item>
|
</item>
|
||||||
|
|||||||
@@ -21,6 +21,7 @@
|
|||||||
<string name="please_wait">Please wait …</string>
|
<string name="please_wait">Please wait …</string>
|
||||||
<string name="send">Send</string>
|
<string name="send">Send</string>
|
||||||
<string name="homepage_url" translatable="false">https://www.davx5.com/</string>
|
<string name="homepage_url" translatable="false">https://www.davx5.com/</string>
|
||||||
|
<string name="twitter_handle" translatable="false">davx5app</string>
|
||||||
|
|
||||||
<string name="notification_channel_debugging">Debugging</string>
|
<string name="notification_channel_debugging">Debugging</string>
|
||||||
<string name="notification_channel_general">Other important messages</string>
|
<string name="notification_channel_general">Other important messages</string>
|
||||||
|
|||||||
Reference in New Issue
Block a user