aboutsummaryrefslogtreecommitdiff
path: root/app/src/main/res/layout
diff options
context:
space:
mode:
authorpacien2020-12-08 16:16:08 +0100
committerpacien2020-12-08 16:16:08 +0100
commit20ecd9840f1e237dba79674b71e49b43b074902e (patch)
tree4594947f1faf96e9851d95c9cfc7bfad0c9ff923 /app/src/main/res/layout
parentb1f98caca2f6960f7abb3ef7f7c27b903e1ef929 (diff)
downloadtincapp-20ecd9840f1e237dba79674b71e49b43b074902e.tar.gz
app: add configuration FTP server
This is a ridiculous workaround to make the configuration (and other files) accessible to the user necessary after the new storage access restriction enforced in Android 11 which prevent other applications from accessing the supposedly public application's directory. The app's internal private storage directory is now exposed to the user through an embedded FTP server that the user can turn on and off from the configuration activity. The user can then play with the configuration and retrieve logs through a remote or local FTP client application of their choice. GitHub: closes #103
Diffstat (limited to 'app/src/main/res/layout')
-rw-r--r--app/src/main/res/layout/configure_activity.xml24
-rw-r--r--app/src/main/res/layout/configure_tools_configuration_ftp_server_fragment.xml86
2 files changed, 103 insertions, 7 deletions
diff --git a/app/src/main/res/layout/configure_activity.xml b/app/src/main/res/layout/configure_activity.xml
index 6097384..2fde4a2 100644
--- a/app/src/main/res/layout/configure_activity.xml
+++ b/app/src/main/res/layout/configure_activity.xml
@@ -2,7 +2,7 @@
2 2
3<!-- 3<!--
4 * Tinc App, an Android binding and user interface for the tinc mesh VPN daemon 4 * Tinc App, an Android binding and user interface for the tinc mesh VPN daemon
5 * Copyright (C) 2017-2018 Pacien TRAN-GIRARD 5 * Copyright (C) 2017-2020 Pacien TRAN-GIRARD
6 * 6 *
7 * This program is free software: you can redistribute it and/or modify 7 * This program is free software: you can redistribute it and/or modify
8 * it under the terms of the GNU General Public License as published by 8 * it under the terms of the GNU General Public License as published by
@@ -28,23 +28,33 @@
28 android:layout_height="wrap_content" 28 android:layout_height="wrap_content"
29 android:orientation="vertical"> 29 android:orientation="vertical">
30 30
31 <TextView
32 style="@style/AppTheme.SectionTitle"
33 android:text="@string/configure_activity_title_configuration_server"/>
34
35 <fragment
36 android:id="@+id/configure_activity_configuration_sftp_server_fragment"
37 android:name="org.pacien.tincapp.activities.configure.ConfigurationFtpServerFragment"
38 android:layout_width="match_parent"
39 android:layout_height="wrap_content"/>
40
31 <TextView 41 <TextView
32 style="@style/AppTheme.SectionTitle" 42 style="@style/AppTheme.SectionTitle"
33 android:text="@string/configure_activity_title_path_info"/> 43 android:text="@string/configure_activity_title_tools"/>
34 44
35 <fragment 45 <fragment
36 android:id="@+id/configure_activity_path_info_fragment" 46 android:id="@+id/configure_activity_tools_fragment"
37 android:name="org.pacien.tincapp.activities.configure.PathInfoFragment" 47 android:name="org.pacien.tincapp.activities.configure.ToolsFragment"
38 android:layout_width="match_parent" 48 android:layout_width="match_parent"
39 android:layout_height="wrap_content"/> 49 android:layout_height="wrap_content"/>
40 50
41 <TextView 51 <TextView
42 style="@style/AppTheme.SectionTitle" 52 style="@style/AppTheme.SectionTitle"
43 android:text="@string/configure_activity_title_tools"/> 53 android:text="@string/configure_activity_title_internal_paths_info"/>
44 54
45 <fragment 55 <fragment
46 android:id="@+id/configure_activity_tools_fragment" 56 android:id="@+id/configure_activity_path_info_fragment"
47 android:name="org.pacien.tincapp.activities.configure.ToolsFragment" 57 android:name="org.pacien.tincapp.activities.configure.PathInfoFragment"
48 android:layout_width="match_parent" 58 android:layout_width="match_parent"
49 android:layout_height="wrap_content"/> 59 android:layout_height="wrap_content"/>
50 60
diff --git a/app/src/main/res/layout/configure_tools_configuration_ftp_server_fragment.xml b/app/src/main/res/layout/configure_tools_configuration_ftp_server_fragment.xml
new file mode 100644
index 0000000..24f3c36
--- /dev/null
+++ b/app/src/main/res/layout/configure_tools_configuration_ftp_server_fragment.xml
@@ -0,0 +1,86 @@
1<?xml version="1.0" encoding="utf-8"?>
2
3<!--
4 * Tinc App, an Android binding and user interface for the tinc mesh VPN daemon
5 * Copyright (C) 2017-2020 Pacien TRAN-GIRARD
6 *
7 * This program is free software: you can redistribute it and/or modify
8 * it under the terms of the GNU General Public License as published by
9 * the Free Software Foundation, either version 3 of the License, or
10 * (at your option) any later version.
11 *
12 * This program is distributed in the hope that it will be useful,
13 * but WITHOUT ANY WARRANTY; without even the implied warranty of
14 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15 * GNU General Public License for more details.
16 *
17 * You should have received a copy of the GNU General Public License
18 * along with this program. If not, see <https://www.gnu.org/licenses/>.
19-->
20
21<layout xmlns:android="http://schemas.android.com/apk/res/android">
22
23 <data>
24
25 <variable
26 name="ftpEnabled"
27 type="boolean" />
28
29 <variable
30 name="ftpUsername"
31 type="String" />
32
33 <variable
34 name="ftpPassword"
35 type="String" />
36
37 <variable
38 name="ftpPort"
39 type="int" />
40
41 <variable
42 name="toggleFtpState"
43 type="kotlin.jvm.functions.Function0&lt;kotlin.Unit>" />
44
45 </data>
46
47 <LinearLayout style="@style/AppTheme.List">
48
49 <LinearLayout
50 style="@style/AppTheme.ListBlock.Clickable"
51 android:onClick="@{() -> toggleFtpState.invoke()}"
52 android:orientation="horizontal">
53
54 <LinearLayout
55 android:layout_width="wrap_content"
56 android:layout_height="wrap_content"
57 android:layout_weight="1"
58 android:orientation="vertical">
59
60 <TextView
61 style="@style/AppTheme.BlockTitle"
62 android:layout_width="wrap_content"
63 android:layout_height="wrap_content"
64 android:text="@string/configure_configuration_server_ftp_access" />
65
66 <TextView
67 style="@style/AppTheme.BlockContent"
68 android:layout_width="wrap_content"
69 android:layout_height="wrap_content"
70 android:text="@{ftpEnabled ? @string/configure_configuration_server_ftp_access_endpoint_format(ftpUsername, ftpPassword, ftpPort) : @string/configure_configuration_server_ftp_access_not_active}"
71 android:textIsSelectable="@{ftpEnabled}" />
72
73 </LinearLayout>
74
75 <androidx.appcompat.widget.SwitchCompat
76 android:layout_width="wrap_content"
77 android:layout_height="match_parent"
78 android:layout_weight="0"
79 android:checked="@{ftpEnabled}"
80 android:onClick="@{() -> toggleFtpState.invoke()}" />
81
82 </LinearLayout>
83
84 </LinearLayout>
85
86</layout>