Added SSL Validation Override and CA Selection

- Added fields to login page to a) disable ssl validation or b) select
  a custom Certificate Authority certificate to use with the server.

- Changed visibility of widgets on login page from INVISIBLE to GONE so
  they don't take up space while hidden (since this was causing weird
  spacing issues with the new fields).

- Added state to settings to store ssl validation choice or certificate
  data.

- Added fields to various HTTP methods to disable ssl validation or set
  valid certificate authority if either setting is enabled.
This commit is contained in:
Galen Abell
2018-11-07 17:28:25 -05:00
parent 97ab5a6871
commit 2d14ef1b6f
10 changed files with 362 additions and 45 deletions

View File

@@ -25,7 +25,7 @@
android:layout_weight="1"
android:minWidth="40dp"
android:minHeight="40dp"
android:visibility="invisible"
android:visibility="gone"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintHorizontal_bias="0.501"
app:layout_constraintStart_toStartOf="parent"
@@ -38,7 +38,7 @@
android:layout_weight="1"
android:minWidth="40dp"
android:minHeight="40dp"
android:visibility="invisible"
android:visibility="gone"
app:layout_constraintEnd_toEndOf="@+id/checkurl"
app:layout_constraintStart_toStartOf="@+id/login"
app:layout_constraintTop_toTopOf="@+id/login" />
@@ -85,7 +85,7 @@
android:ems="10"
android:hint="@string/username"
android:inputType="textPersonName"
android:visibility="invisible"
android:visibility="gone"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/checkurl"
@@ -102,13 +102,91 @@
android:ems="10"
android:hint="@string/password"
android:inputType="textPassword"
android:visibility="invisible"
android:visibility="gone"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/username"
app:layout_constraintWidth_max="280dp"
tools:text="Password" />
<Button
android:id="@+id/showAdvanced"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_marginStart="8dp"
android:layout_marginTop="8dp"
android:layout_marginEnd="8dp"
android:background="@color/colorPrimaryDark"
android:textColor="@android:color/white"
android:ems="10"
android:text="@string/show_advanced"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/login"
app:layout_constraintWidth_max="280dp" />
<CheckBox
android:id="@+id/disableValidateSSL"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_marginStart="8dp"
android:layout_marginTop="8dp"
android:layout_marginEnd="8dp"
android:ems="10"
android:text="@string/disabled_validate_ssl"
android:visibility="gone"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/showAdvanced"
app:layout_constraintWidth_max="280dp" />
<TextView
android:id="@+id/or"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_marginStart="8dp"
android:layout_marginTop="8dp"
android:layout_marginEnd="8dp"
android:textAlignment="center"
android:ems="10"
android:text="@string/or"
android:visibility="gone"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/disableValidateSSL"
app:layout_constraintWidth_max="280dp" />
<Button
android:id="@+id/selectCACertificate"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_marginStart="8dp"
android:layout_marginTop="8dp"
android:layout_marginEnd="8dp"
android:ems="10"
android:text="@string/select_ca_certificate"
android:visibility="gone"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/or"
app:layout_constraintWidth_max="280dp" />
<TextView
android:id="@+id/caFile"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_marginStart="8dp"
android:layout_marginTop="8dp"
android:layout_marginEnd="8dp"
android:ems="10"
android:text="@string/no_ca_selected"
android:textAlignment="center"
android:visibility="gone"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/selectCACertificate"
app:layout_constraintWidth_max="280dp" />
<Button
android:id="@+id/login"
android:layout_width="0dp"
@@ -119,7 +197,7 @@
android:background="@color/colorPrimaryDark"
android:textColor="@android:color/white"
android:text="@string/login"
android:visibility="invisible"
android:visibility="gone"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/password"

View File

@@ -31,6 +31,14 @@
<string name="gotify_url">Gotify URL</string>
<string name="username">Username</string>
<string name="password">Password</string>
<string name="show_advanced">Show Advanced Options</string>
<string name="disabled_validate_ssl">Disable SSL Validation</string>
<string name="select_ca_certificate">Select CA Certificate</string>
<string name="select_ca_file">Select a Certificate File</string>
<string name="or">OR</string>
<string name="please_install_file_browser">Please install a file browser</string>
<string name="select_ca_failed">Failed to read CA: %s</string>
<string name="no_ca_selected">No CA selected</string>
<string name="login">Login</string>
<string name="check_url">Check URL</string>
<string name="gotify_logo">gotify logo</string>