From dde3b8d84e1cd01bd974fbeb72f517a8e497abb8 Mon Sep 17 00:00:00 2001 From: Nicolas Pomepuy <nicolas@videolabs.io> Date: Tue, 28 Jan 2025 09:25:44 +0100 Subject: [PATCH 1/4] Rename the webserver module to remote-access-server --- application/app/build.gradle | 6 +-- .../.gitignore | 0 .../build.gradle | 2 +- .../consumer-rules.pro | 0 .../gradle.properties | 0 .../proguard-rules.pro | 0 .../ExampleInstrumentedTest.kt | 4 +- .../src/main/AndroidManifest.xml | 0 .../remoteaccessserver}/RemoteAccessOTP.kt | 8 +-- .../RemoteAccessRouting.kt | 24 ++++----- .../remoteaccessserver}/RemoteAccessServer.kt | 10 ++-- .../RemoteAccessService.kt | 2 +- .../RemoteAccessSession.kt | 6 +-- .../vlc/remoteaccessserver}/ServerStatus.kt | 2 +- .../remoteaccessserver}/TranslationMapping.kt | 2 +- .../remoteaccess/RemoteAccessShareActivity.kt | 14 ++--- .../adapters/ConnnectionAdapter.kt | 10 ++-- .../RemoteAccessOnboardingActivity.kt | 28 +++++++++- .../RemoteAccessOnboardingContentFragment.kt | 28 +++++++++- .../RemoteAccessOnboardingFragment.kt | 6 +-- .../RemoteAccessOnboardingHowFragment.kt | 28 +++++++++- .../RemoteAccessOnboardingOtpFragment.kt | 30 +++++++++-- .../RemoteAccessOnboardingSslFragment.kt | 28 +++++++++- .../RemoteAccessOnboardingWelcomeFragment.kt | 53 +++++++++++++++++++ .../ssl/SecretGenerator.kt | 30 ++++++++--- .../remoteaccessserver}/utils/CypherUtils.kt | 4 +- .../utils/MediaZipUtils.kt | 2 +- .../utils/PreferenceUtil.kt | 2 +- .../RemoteAccessOnboardingViewModel.kt | 34 ++++++++++++ .../websockets/RemoteAccessWebSockets.kt | 14 ++--- .../websockets/WSAuthTicket.kt | 2 +- .../websockets/WSIncomingMessage.kt | 2 +- .../remote_access_onboarding_content.xml | 0 .../remote_access_onboarding_how.xml | 0 .../remote_access_onboarding_otp.xml | 0 .../remote_access_onboarding_ssl.xml | 0 .../remote_access_onboarding_welcome.xml | 0 .../layout/remote_access_connection_item.xml | 0 .../remote_access_onboarding_content.xml | 0 .../layout/remote_access_onboarding_how.xml | 0 .../layout/remote_access_onboarding_otp.xml | 0 .../layout/remote_access_onboarding_ssl.xml | 0 .../remote_access_onboarding_welcome.xml | 0 .../layout/remote_access_share_activity.xml | 0 .../src/main/res/menu/remote_access_share.xml | 0 .../remoteaccessserver}/ExampleUnitTest.kt | 2 +- .../java/org/videolan/resources/Constants.kt | 4 +- .../src/org/videolan/vlc/StartActivity.kt | 2 +- .../RemoteAccessOnboardingWelcomeFragment.kt | 29 ---------- .../RemoteAccessOnboardingViewModel.kt | 10 ---- settings.gradle | 2 +- 51 files changed, 307 insertions(+), 123 deletions(-) rename application/{webserver => remote-access-server}/.gitignore (100%) rename application/{webserver => remote-access-server}/build.gradle (98%) rename application/{webserver => remote-access-server}/consumer-rules.pro (100%) rename application/{webserver => remote-access-server}/gradle.properties (100%) rename application/{webserver => remote-access-server}/proguard-rules.pro (100%) rename application/{webserver/src/androidTest/java/org/videolan/vlc/webserver => remote-access-server/src/androidTest/java/org/videolan/vlc/remoteaccessserver}/ExampleInstrumentedTest.kt (92%) rename application/{webserver => remote-access-server}/src/main/AndroidManifest.xml (100%) rename application/{webserver/src/main/java/org/videolan/vlc/webserver => remote-access-server/src/main/java/org/videolan/vlc/remoteaccessserver}/RemoteAccessOTP.kt (94%) rename application/{webserver/src/main/java/org/videolan/vlc/webserver => remote-access-server/src/main/java/org/videolan/vlc/remoteaccessserver}/RemoteAccessRouting.kt (98%) rename application/{webserver/src/main/java/org/videolan/vlc/webserver => remote-access-server/src/main/java/org/videolan/vlc/remoteaccessserver}/RemoteAccessServer.kt (99%) rename application/{webserver/src/main/java/org/videolan/vlc/webserver => remote-access-server/src/main/java/org/videolan/vlc/remoteaccessserver}/RemoteAccessService.kt (99%) rename application/{webserver/src/main/java/org/videolan/vlc/webserver => remote-access-server/src/main/java/org/videolan/vlc/remoteaccessserver}/RemoteAccessSession.kt (96%) rename application/{webserver/src/main/java/org/videolan/vlc/webserver => remote-access-server/src/main/java/org/videolan/vlc/remoteaccessserver}/ServerStatus.kt (96%) rename application/{webserver/src/main/java/org/videolan/vlc/webserver => remote-access-server/src/main/java/org/videolan/vlc/remoteaccessserver}/TranslationMapping.kt (99%) rename application/{webserver/src/main/java/org/videolan/vlc/webserver => remote-access-server/src/main/java/org/videolan/vlc/remoteaccessserver}/gui/remoteaccess/RemoteAccessShareActivity.kt (95%) rename application/{webserver/src/main/java/org/videolan/vlc/webserver => remote-access-server/src/main/java/org/videolan/vlc/remoteaccessserver}/gui/remoteaccess/adapters/ConnnectionAdapter.kt (86%) rename application/{webserver/src/main/java/org/videolan/vlc/webserver => remote-access-server/src/main/java/org/videolan/vlc/remoteaccessserver}/gui/remoteaccess/onboarding/RemoteAccessOnboardingActivity.kt (71%) rename application/{webserver/src/main/java/org/videolan/vlc/webserver => remote-access-server/src/main/java/org/videolan/vlc/remoteaccessserver}/gui/remoteaccess/onboarding/RemoteAccessOnboardingContentFragment.kt (72%) rename application/{webserver/src/main/java/org/videolan/vlc/webserver => remote-access-server/src/main/java/org/videolan/vlc/remoteaccessserver}/gui/remoteaccess/onboarding/RemoteAccessOnboardingFragment.kt (91%) rename application/{webserver/src/main/java/org/videolan/vlc/webserver => remote-access-server/src/main/java/org/videolan/vlc/remoteaccessserver}/gui/remoteaccess/onboarding/RemoteAccessOnboardingHowFragment.kt (79%) rename application/{webserver/src/main/java/org/videolan/vlc/webserver => remote-access-server/src/main/java/org/videolan/vlc/remoteaccessserver}/gui/remoteaccess/onboarding/RemoteAccessOnboardingOtpFragment.kt (81%) rename application/{webserver/src/main/java/org/videolan/vlc/webserver => remote-access-server/src/main/java/org/videolan/vlc/remoteaccessserver}/gui/remoteaccess/onboarding/RemoteAccessOnboardingSslFragment.kt (71%) create mode 100644 application/remote-access-server/src/main/java/org/videolan/vlc/remoteaccessserver/gui/remoteaccess/onboarding/RemoteAccessOnboardingWelcomeFragment.kt rename application/{webserver/src/main/java/org/videolan/vlc/webserver => remote-access-server/src/main/java/org/videolan/vlc/remoteaccessserver}/ssl/SecretGenerator.kt (93%) rename application/{webserver/src/main/java/org/videolan/vlc/webserver => remote-access-server/src/main/java/org/videolan/vlc/remoteaccessserver}/utils/CypherUtils.kt (93%) rename application/{webserver/src/main/java/org/videolan/vlc/webserver => remote-access-server/src/main/java/org/videolan/vlc/remoteaccessserver}/utils/MediaZipUtils.kt (99%) rename application/{webserver/src/main/java/org/videolan/vlc/webserver => remote-access-server/src/main/java/org/videolan/vlc/remoteaccessserver}/utils/PreferenceUtil.kt (97%) create mode 100644 application/remote-access-server/src/main/java/org/videolan/vlc/remoteaccessserver/viewmodels/RemoteAccessOnboardingViewModel.kt rename application/{webserver/src/main/java/org/videolan/vlc/webserver => remote-access-server/src/main/java/org/videolan/vlc/remoteaccessserver}/websockets/RemoteAccessWebSockets.kt (97%) rename application/{webserver/src/main/java/org/videolan/vlc/webserver => remote-access-server/src/main/java/org/videolan/vlc/remoteaccessserver}/websockets/WSAuthTicket.kt (95%) rename application/{webserver/src/main/java/org/videolan/vlc/webserver => remote-access-server/src/main/java/org/videolan/vlc/remoteaccessserver}/websockets/WSIncomingMessage.kt (97%) rename application/{webserver => remote-access-server}/src/main/res/layout-land/remote_access_onboarding_content.xml (100%) rename application/{webserver => remote-access-server}/src/main/res/layout-land/remote_access_onboarding_how.xml (100%) rename application/{webserver => remote-access-server}/src/main/res/layout-land/remote_access_onboarding_otp.xml (100%) rename application/{webserver => remote-access-server}/src/main/res/layout-land/remote_access_onboarding_ssl.xml (100%) rename application/{webserver => remote-access-server}/src/main/res/layout-land/remote_access_onboarding_welcome.xml (100%) rename application/{webserver => remote-access-server}/src/main/res/layout/remote_access_connection_item.xml (100%) rename application/{webserver => remote-access-server}/src/main/res/layout/remote_access_onboarding_content.xml (100%) rename application/{webserver => remote-access-server}/src/main/res/layout/remote_access_onboarding_how.xml (100%) rename application/{webserver => remote-access-server}/src/main/res/layout/remote_access_onboarding_otp.xml (100%) rename application/{webserver => remote-access-server}/src/main/res/layout/remote_access_onboarding_ssl.xml (100%) rename application/{webserver => remote-access-server}/src/main/res/layout/remote_access_onboarding_welcome.xml (100%) rename application/{webserver => remote-access-server}/src/main/res/layout/remote_access_share_activity.xml (100%) rename application/{webserver => remote-access-server}/src/main/res/menu/remote_access_share.xml (100%) rename application/{webserver/src/test/java/org/videolan/vlc/webserver => remote-access-server/src/test/java/org/videolan/vlc/remoteaccessserver}/ExampleUnitTest.kt (96%) delete mode 100644 application/webserver/src/main/java/org/videolan/vlc/webserver/gui/remoteaccess/onboarding/RemoteAccessOnboardingWelcomeFragment.kt delete mode 100644 application/webserver/src/main/java/org/videolan/vlc/webserver/viewmodels/RemoteAccessOnboardingViewModel.kt diff --git a/application/app/build.gradle b/application/app/build.gradle index 71827eb569..be1e8e0d55 100644 --- a/application/app/build.gradle +++ b/application/app/build.gradle @@ -162,12 +162,12 @@ android { dependencies { implementation project(':application:vlc-android') implementation project(':application:television') - devImplementation project(':application:webserver') - debugImplementation project(':application:webserver') + devImplementation project(':application:remote-access-server') + debugImplementation project(':application:remote-access-server') releaseImplementation "org.videolan.android:remote-access:$rootProject.ext.remoteAccessVersion" vlcBundleImplementation "org.videolan.android:remote-access:$rootProject.ext.remoteAccessVersion" testImplementation project(':application:television') - testImplementation project(':application:webserver') + testImplementation project(':application:remote-access-server') androidTestImplementation "androidx.test.espresso:espresso-contrib:$rootProject.espressoVersion" androidTestImplementation "androidx.test.espresso:espresso-core:$rootProject.espressoVersion" diff --git a/application/webserver/.gitignore b/application/remote-access-server/.gitignore similarity index 100% rename from application/webserver/.gitignore rename to application/remote-access-server/.gitignore diff --git a/application/webserver/build.gradle b/application/remote-access-server/build.gradle similarity index 98% rename from application/webserver/build.gradle rename to application/remote-access-server/build.gradle index 589bf32145..c6c72aecd7 100644 --- a/application/webserver/build.gradle +++ b/application/remote-access-server/build.gradle @@ -8,7 +8,7 @@ ext { library_version = "$rootProject.ext.remoteAccessVersion" } android { - namespace 'org.videolan.vlc.webserver' + namespace 'org.videolan.vlc.remoteaccessserver' dataBinding { enabled = true diff --git a/application/webserver/consumer-rules.pro b/application/remote-access-server/consumer-rules.pro similarity index 100% rename from application/webserver/consumer-rules.pro rename to application/remote-access-server/consumer-rules.pro diff --git a/application/webserver/gradle.properties b/application/remote-access-server/gradle.properties similarity index 100% rename from application/webserver/gradle.properties rename to application/remote-access-server/gradle.properties diff --git a/application/webserver/proguard-rules.pro b/application/remote-access-server/proguard-rules.pro similarity index 100% rename from application/webserver/proguard-rules.pro rename to application/remote-access-server/proguard-rules.pro diff --git a/application/webserver/src/androidTest/java/org/videolan/vlc/webserver/ExampleInstrumentedTest.kt b/application/remote-access-server/src/androidTest/java/org/videolan/vlc/remoteaccessserver/ExampleInstrumentedTest.kt similarity index 92% rename from application/webserver/src/androidTest/java/org/videolan/vlc/webserver/ExampleInstrumentedTest.kt rename to application/remote-access-server/src/androidTest/java/org/videolan/vlc/remoteaccessserver/ExampleInstrumentedTest.kt index 38fa1fa924..fe7775ae2c 100644 --- a/application/webserver/src/androidTest/java/org/videolan/vlc/webserver/ExampleInstrumentedTest.kt +++ b/application/remote-access-server/src/androidTest/java/org/videolan/vlc/remoteaccessserver/ExampleInstrumentedTest.kt @@ -22,7 +22,7 @@ * */ -package org.videolan.vlc.webserver +package org.videolan.vlc.remoteaccessserver import androidx.test.platform.app.InstrumentationRegistry import androidx.test.ext.junit.runners.AndroidJUnit4 @@ -43,6 +43,6 @@ class ExampleInstrumentedTest { fun useAppContext() { // Context of the app under test. val appContext = InstrumentationRegistry.getInstrumentation().targetContext - assertEquals("org.videolan.vlc.webserver.test", appContext.packageName) + assertEquals("org.videolan.vlc.remoteaccessserver.test", appContext.packageName) } } \ No newline at end of file diff --git a/application/webserver/src/main/AndroidManifest.xml b/application/remote-access-server/src/main/AndroidManifest.xml similarity index 100% rename from application/webserver/src/main/AndroidManifest.xml rename to application/remote-access-server/src/main/AndroidManifest.xml diff --git a/application/webserver/src/main/java/org/videolan/vlc/webserver/RemoteAccessOTP.kt b/application/remote-access-server/src/main/java/org/videolan/vlc/remoteaccessserver/RemoteAccessOTP.kt similarity index 94% rename from application/webserver/src/main/java/org/videolan/vlc/webserver/RemoteAccessOTP.kt rename to application/remote-access-server/src/main/java/org/videolan/vlc/remoteaccessserver/RemoteAccessOTP.kt index e12bb1c809..9dd8bd91b2 100644 --- a/application/webserver/src/main/java/org/videolan/vlc/webserver/RemoteAccessOTP.kt +++ b/application/remote-access-server/src/main/java/org/videolan/vlc/remoteaccessserver/RemoteAccessOTP.kt @@ -2,7 +2,7 @@ * ************************************************************************ * RemoteAccessOTP.kt * ************************************************************************* - * Copyright © 2023 VLC authors and VideoLAN + * Copyright © 2025 VLC authors and VideoLAN * Author: Nicolas POMEPUY * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -22,14 +22,14 @@ * */ -package org.videolan.vlc.webserver +package org.videolan.vlc.remoteaccessserver import android.content.Context import androidx.core.app.NotificationManagerCompat import org.videolan.vlc.gui.helpers.NotificationHelper import org.videolan.vlc.gui.helpers.REMOTE_ACCESS_CODE_ID -import org.videolan.vlc.webserver.ssl.SecretGenerator -import org.videolan.vlc.webserver.utils.CypherUtils +import org.videolan.vlc.remoteaccessserver.ssl.SecretGenerator +import org.videolan.vlc.remoteaccessserver.utils.CypherUtils import java.security.SecureRandom diff --git a/application/webserver/src/main/java/org/videolan/vlc/webserver/RemoteAccessRouting.kt b/application/remote-access-server/src/main/java/org/videolan/vlc/remoteaccessserver/RemoteAccessRouting.kt similarity index 98% rename from application/webserver/src/main/java/org/videolan/vlc/webserver/RemoteAccessRouting.kt rename to application/remote-access-server/src/main/java/org/videolan/vlc/remoteaccessserver/RemoteAccessRouting.kt index 61f64bae5f..9e190000fe 100644 --- a/application/webserver/src/main/java/org/videolan/vlc/webserver/RemoteAccessRouting.kt +++ b/application/remote-access-server/src/main/java/org/videolan/vlc/remoteaccessserver/RemoteAccessRouting.kt @@ -2,7 +2,7 @@ * ************************************************************************ * RemoteAccessRouting.kt * ************************************************************************* - * Copyright © 2023 VLC authors and VideoLAN + * Copyright © 2025 VLC authors and VideoLAN * Author: Nicolas POMEPUY * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -22,7 +22,7 @@ * */ -package org.videolan.vlc.webserver +package org.videolan.vlc.remoteaccessserver import android.content.Context import android.content.res.Resources @@ -131,16 +131,16 @@ import org.videolan.vlc.util.slugify import org.videolan.vlc.util.toByteArray import org.videolan.vlc.viewmodels.browser.FavoritesProvider import org.videolan.vlc.viewmodels.browser.PathOperationDelegate -import org.videolan.vlc.webserver.RemoteAccessServer.Companion.getServerFiles -import org.videolan.vlc.webserver.RemoteAccessServer.PlayerStatus -import org.videolan.vlc.webserver.RemoteAccessSession.verifyLogin -import org.videolan.vlc.webserver.utils.MediaZipUtils -import org.videolan.vlc.webserver.utils.serveAudios -import org.videolan.vlc.webserver.utils.servePlaylists -import org.videolan.vlc.webserver.utils.serveSearch -import org.videolan.vlc.webserver.utils.serveVideos -import org.videolan.vlc.webserver.websockets.RemoteAccessWebSockets -import org.videolan.vlc.webserver.websockets.WSIncomingMessage +import org.videolan.vlc.remoteaccessserver.RemoteAccessServer.Companion.getServerFiles +import org.videolan.vlc.remoteaccessserver.RemoteAccessServer.PlayerStatus +import org.videolan.vlc.remoteaccessserver.RemoteAccessSession.verifyLogin +import org.videolan.vlc.remoteaccessserver.utils.MediaZipUtils +import org.videolan.vlc.remoteaccessserver.utils.serveAudios +import org.videolan.vlc.remoteaccessserver.utils.servePlaylists +import org.videolan.vlc.remoteaccessserver.utils.serveSearch +import org.videolan.vlc.remoteaccessserver.utils.serveVideos +import org.videolan.vlc.remoteaccessserver.websockets.RemoteAccessWebSockets +import org.videolan.vlc.remoteaccessserver.websockets.WSIncomingMessage import java.io.BufferedWriter import java.io.File import java.io.FileNotFoundException diff --git a/application/webserver/src/main/java/org/videolan/vlc/webserver/RemoteAccessServer.kt b/application/remote-access-server/src/main/java/org/videolan/vlc/remoteaccessserver/RemoteAccessServer.kt similarity index 99% rename from application/webserver/src/main/java/org/videolan/vlc/webserver/RemoteAccessServer.kt rename to application/remote-access-server/src/main/java/org/videolan/vlc/remoteaccessserver/RemoteAccessServer.kt index a55bd6b278..64f743e7cd 100644 --- a/application/webserver/src/main/java/org/videolan/vlc/webserver/RemoteAccessServer.kt +++ b/application/remote-access-server/src/main/java/org/videolan/vlc/remoteaccessserver/RemoteAccessServer.kt @@ -2,7 +2,7 @@ * ************************************************************************ * RemoteAccessServer.kt * ************************************************************************* - * Copyright © 2023 VLC authors and VideoLAN + * Copyright © 2025 VLC authors and VideoLAN * Author: Nicolas POMEPUY * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -22,7 +22,7 @@ * */ -package org.videolan.vlc.webserver +package org.videolan.vlc.remoteaccessserver import android.annotation.SuppressLint import android.content.Context @@ -112,9 +112,9 @@ import org.videolan.vlc.viewmodels.CallBackDelegate import org.videolan.vlc.viewmodels.ICallBackHandler import org.videolan.vlc.viewmodels.browser.IPathOperationDelegate import org.videolan.vlc.viewmodels.browser.PathOperationDelegate -import org.videolan.vlc.webserver.ssl.SecretGenerator -import org.videolan.vlc.webserver.websockets.RemoteAccessWebSockets -import org.videolan.vlc.webserver.websockets.RemoteAccessWebSockets.setupWebSockets +import org.videolan.vlc.remoteaccessserver.ssl.SecretGenerator +import org.videolan.vlc.remoteaccessserver.websockets.RemoteAccessWebSockets +import org.videolan.vlc.remoteaccessserver.websockets.RemoteAccessWebSockets.setupWebSockets import java.io.File import java.math.BigInteger import java.net.InetAddress diff --git a/application/webserver/src/main/java/org/videolan/vlc/webserver/RemoteAccessService.kt b/application/remote-access-server/src/main/java/org/videolan/vlc/remoteaccessserver/RemoteAccessService.kt similarity index 99% rename from application/webserver/src/main/java/org/videolan/vlc/webserver/RemoteAccessService.kt rename to application/remote-access-server/src/main/java/org/videolan/vlc/remoteaccessserver/RemoteAccessService.kt index 2020f5f4be..690c25f6d0 100644 --- a/application/webserver/src/main/java/org/videolan/vlc/webserver/RemoteAccessService.kt +++ b/application/remote-access-server/src/main/java/org/videolan/vlc/remoteaccessserver/RemoteAccessService.kt @@ -17,7 +17,7 @@ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301, USA. */ -package org.videolan.vlc.webserver +package org.videolan.vlc.remoteaccessserver import android.annotation.SuppressLint import android.app.ForegroundServiceStartNotAllowedException diff --git a/application/webserver/src/main/java/org/videolan/vlc/webserver/RemoteAccessSession.kt b/application/remote-access-server/src/main/java/org/videolan/vlc/remoteaccessserver/RemoteAccessSession.kt similarity index 96% rename from application/webserver/src/main/java/org/videolan/vlc/webserver/RemoteAccessSession.kt rename to application/remote-access-server/src/main/java/org/videolan/vlc/remoteaccessserver/RemoteAccessSession.kt index 47e88342a8..9b67122417 100644 --- a/application/webserver/src/main/java/org/videolan/vlc/webserver/RemoteAccessSession.kt +++ b/application/remote-access-server/src/main/java/org/videolan/vlc/remoteaccessserver/RemoteAccessSession.kt @@ -2,7 +2,7 @@ * ************************************************************************ * RemoteAccessSession.kt * ************************************************************************* - * Copyright © 2023 VLC authors and VideoLAN + * Copyright © 2025 VLC authors and VideoLAN * Author: Nicolas POMEPUY * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -22,7 +22,7 @@ * */ -package org.videolan.vlc.webserver +package org.videolan.vlc.remoteaccessserver import android.content.SharedPreferences import com.squareup.moshi.JsonAdapter @@ -36,7 +36,7 @@ import io.ktor.server.response.respond import io.ktor.server.sessions.sessions import io.ktor.util.pipeline.PipelineContext import org.videolan.tools.putSingle -import org.videolan.vlc.webserver.ssl.SecretGenerator +import org.videolan.vlc.remoteaccessserver.ssl.SecretGenerator private const val VALID_SESSIONS = "valid_sessions" diff --git a/application/webserver/src/main/java/org/videolan/vlc/webserver/ServerStatus.kt b/application/remote-access-server/src/main/java/org/videolan/vlc/remoteaccessserver/ServerStatus.kt similarity index 96% rename from application/webserver/src/main/java/org/videolan/vlc/webserver/ServerStatus.kt rename to application/remote-access-server/src/main/java/org/videolan/vlc/remoteaccessserver/ServerStatus.kt index 31a14e8f25..665415baec 100644 --- a/application/webserver/src/main/java/org/videolan/vlc/webserver/ServerStatus.kt +++ b/application/remote-access-server/src/main/java/org/videolan/vlc/remoteaccessserver/ServerStatus.kt @@ -22,7 +22,7 @@ * */ -package org.videolan.vlc.webserver +package org.videolan.vlc.remoteaccessserver /** * Describe the sharing server status diff --git a/application/webserver/src/main/java/org/videolan/vlc/webserver/TranslationMapping.kt b/application/remote-access-server/src/main/java/org/videolan/vlc/remoteaccessserver/TranslationMapping.kt similarity index 99% rename from application/webserver/src/main/java/org/videolan/vlc/webserver/TranslationMapping.kt rename to application/remote-access-server/src/main/java/org/videolan/vlc/remoteaccessserver/TranslationMapping.kt index 900348ce27..a1c0e81763 100644 --- a/application/webserver/src/main/java/org/videolan/vlc/webserver/TranslationMapping.kt +++ b/application/remote-access-server/src/main/java/org/videolan/vlc/remoteaccessserver/TranslationMapping.kt @@ -22,7 +22,7 @@ * */ -package org.videolan.vlc.webserver +package org.videolan.vlc.remoteaccessserver import android.content.Context import android.os.Build diff --git a/application/webserver/src/main/java/org/videolan/vlc/webserver/gui/remoteaccess/RemoteAccessShareActivity.kt b/application/remote-access-server/src/main/java/org/videolan/vlc/remoteaccessserver/gui/remoteaccess/RemoteAccessShareActivity.kt similarity index 95% rename from application/webserver/src/main/java/org/videolan/vlc/webserver/gui/remoteaccess/RemoteAccessShareActivity.kt rename to application/remote-access-server/src/main/java/org/videolan/vlc/remoteaccessserver/gui/remoteaccess/RemoteAccessShareActivity.kt index d8ee9f8964..dd2e30d8ef 100644 --- a/application/webserver/src/main/java/org/videolan/vlc/webserver/gui/remoteaccess/RemoteAccessShareActivity.kt +++ b/application/remote-access-server/src/main/java/org/videolan/vlc/remoteaccessserver/gui/remoteaccess/RemoteAccessShareActivity.kt @@ -2,7 +2,7 @@ * ************************************************************************ * RemoteAccessShareActivity.kt * ************************************************************************* - * Copyright © 2023 VLC authors and VideoLAN + * Copyright © 2025 VLC authors and VideoLAN * Author: Nicolas POMEPUY * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -22,7 +22,7 @@ * */ -package org.videolan.vlc.webserver.gui.remoteaccess +package org.videolan.vlc.remoteaccessserver.gui.remoteaccess import android.content.Intent import android.os.Bundle @@ -49,11 +49,11 @@ import org.videolan.tools.setVisible import org.videolan.vlc.gui.BaseActivity import org.videolan.vlc.util.UrlUtils import org.videolan.vlc.util.share -import org.videolan.vlc.webserver.R -import org.videolan.vlc.webserver.RemoteAccessServer -import org.videolan.vlc.webserver.ServerStatus -import org.videolan.vlc.webserver.databinding.RemoteAccessShareActivityBinding -import org.videolan.vlc.webserver.gui.remoteaccess.adapters.ConnnectionAdapter +import org.videolan.vlc.remoteaccessserver.R +import org.videolan.vlc.remoteaccessserver.RemoteAccessServer +import org.videolan.vlc.remoteaccessserver.ServerStatus +import org.videolan.vlc.remoteaccessserver.databinding.RemoteAccessShareActivityBinding +import org.videolan.vlc.remoteaccessserver.gui.remoteaccess.adapters.ConnnectionAdapter /** diff --git a/application/webserver/src/main/java/org/videolan/vlc/webserver/gui/remoteaccess/adapters/ConnnectionAdapter.kt b/application/remote-access-server/src/main/java/org/videolan/vlc/remoteaccessserver/gui/remoteaccess/adapters/ConnnectionAdapter.kt similarity index 86% rename from application/webserver/src/main/java/org/videolan/vlc/webserver/gui/remoteaccess/adapters/ConnnectionAdapter.kt rename to application/remote-access-server/src/main/java/org/videolan/vlc/remoteaccessserver/gui/remoteaccess/adapters/ConnnectionAdapter.kt index 05115cec75..824a51c88e 100644 --- a/application/webserver/src/main/java/org/videolan/vlc/webserver/gui/remoteaccess/adapters/ConnnectionAdapter.kt +++ b/application/remote-access-server/src/main/java/org/videolan/vlc/remoteaccessserver/gui/remoteaccess/adapters/ConnnectionAdapter.kt @@ -1,8 +1,8 @@ /* * ************************************************************************ - * ConnectionAdapter.kt + * ConnnectionAdapter.kt * ************************************************************************* - * Copyright © 2023 VLC authors and VideoLAN + * Copyright © 2025 VLC authors and VideoLAN * Author: Nicolas POMEPUY * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -22,14 +22,14 @@ * */ -package org.videolan.vlc.webserver.gui.remoteaccess.adapters +package org.videolan.vlc.remoteaccessserver.gui.remoteaccess.adapters import android.view.LayoutInflater import android.view.ViewGroup import androidx.recyclerview.widget.RecyclerView import org.videolan.vlc.gui.helpers.SelectorViewHolder -import org.videolan.vlc.webserver.RemoteAccessServer -import org.videolan.vlc.webserver.databinding.RemoteAccessConnectionItemBinding +import org.videolan.vlc.remoteaccessserver.RemoteAccessServer +import org.videolan.vlc.remoteaccessserver.databinding.RemoteAccessConnectionItemBinding class ConnnectionAdapter(private val layoutInflater: LayoutInflater, var connections:List<RemoteAccessServer.RemoteAccessConnection>) : RecyclerView.Adapter<ConnnectionAdapter.ViewHolder>() { diff --git a/application/webserver/src/main/java/org/videolan/vlc/webserver/gui/remoteaccess/onboarding/RemoteAccessOnboardingActivity.kt b/application/remote-access-server/src/main/java/org/videolan/vlc/remoteaccessserver/gui/remoteaccess/onboarding/RemoteAccessOnboardingActivity.kt similarity index 71% rename from application/webserver/src/main/java/org/videolan/vlc/webserver/gui/remoteaccess/onboarding/RemoteAccessOnboardingActivity.kt rename to application/remote-access-server/src/main/java/org/videolan/vlc/remoteaccessserver/gui/remoteaccess/onboarding/RemoteAccessOnboardingActivity.kt index d452b8588a..3c89829665 100644 --- a/application/webserver/src/main/java/org/videolan/vlc/webserver/gui/remoteaccess/onboarding/RemoteAccessOnboardingActivity.kt +++ b/application/remote-access-server/src/main/java/org/videolan/vlc/remoteaccessserver/gui/remoteaccess/onboarding/RemoteAccessOnboardingActivity.kt @@ -1,4 +1,28 @@ -package org.videolan.vlc.webserver.gui.remoteaccess.onboarding +/* + * ************************************************************************ + * RemoteAccessOnboardingActivity.kt + * ************************************************************************* + * Copyright © 2025 VLC authors and VideoLAN + * Author: Nicolas POMEPUY + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301, USA. + * ************************************************************************** + * + * + */ + +package org.videolan.vlc.remoteaccessserver.gui.remoteaccess.onboarding import android.os.Bundle import android.view.View @@ -8,7 +32,7 @@ import androidx.appcompat.app.AppCompatActivity import androidx.fragment.app.commit import org.videolan.tools.setGone import org.videolan.vlc.R -import org.videolan.vlc.webserver.viewmodels.RemoteAccessOnboardingViewModel +import org.videolan.vlc.remoteaccessserver.viewmodels.RemoteAccessOnboardingViewModel class RemoteAccessOnboardingActivity : AppCompatActivity(), OnboardingFragmentListener { diff --git a/application/webserver/src/main/java/org/videolan/vlc/webserver/gui/remoteaccess/onboarding/RemoteAccessOnboardingContentFragment.kt b/application/remote-access-server/src/main/java/org/videolan/vlc/remoteaccessserver/gui/remoteaccess/onboarding/RemoteAccessOnboardingContentFragment.kt similarity index 72% rename from application/webserver/src/main/java/org/videolan/vlc/webserver/gui/remoteaccess/onboarding/RemoteAccessOnboardingContentFragment.kt rename to application/remote-access-server/src/main/java/org/videolan/vlc/remoteaccessserver/gui/remoteaccess/onboarding/RemoteAccessOnboardingContentFragment.kt index 78b459489c..7b308a36d1 100644 --- a/application/webserver/src/main/java/org/videolan/vlc/webserver/gui/remoteaccess/onboarding/RemoteAccessOnboardingContentFragment.kt +++ b/application/remote-access-server/src/main/java/org/videolan/vlc/remoteaccessserver/gui/remoteaccess/onboarding/RemoteAccessOnboardingContentFragment.kt @@ -1,4 +1,28 @@ -package org.videolan.vlc.webserver.gui.remoteaccess.onboarding +/* + * ************************************************************************ + * RemoteAccessOnboardingContentFragment.kt + * ************************************************************************* + * Copyright © 2025 VLC authors and VideoLAN + * Author: Nicolas POMEPUY + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301, USA. + * ************************************************************************** + * + * + */ + +package org.videolan.vlc.remoteaccessserver.gui.remoteaccess.onboarding import android.animation.Animator import android.animation.AnimatorSet @@ -17,7 +41,7 @@ import androidx.lifecycle.repeatOnLifecycle import kotlinx.coroutines.delay import kotlinx.coroutines.launch import org.videolan.vlc.gui.view.MiniVisualizer -import org.videolan.vlc.webserver.R +import org.videolan.vlc.remoteaccessserver.R class RemoteAccessOnboardingContentFragment : RemoteAccessOnboardingFragment() { diff --git a/application/webserver/src/main/java/org/videolan/vlc/webserver/gui/remoteaccess/onboarding/RemoteAccessOnboardingFragment.kt b/application/remote-access-server/src/main/java/org/videolan/vlc/remoteaccessserver/gui/remoteaccess/onboarding/RemoteAccessOnboardingFragment.kt similarity index 91% rename from application/webserver/src/main/java/org/videolan/vlc/webserver/gui/remoteaccess/onboarding/RemoteAccessOnboardingFragment.kt rename to application/remote-access-server/src/main/java/org/videolan/vlc/remoteaccessserver/gui/remoteaccess/onboarding/RemoteAccessOnboardingFragment.kt index c18053a809..4d72914cfc 100644 --- a/application/webserver/src/main/java/org/videolan/vlc/webserver/gui/remoteaccess/onboarding/RemoteAccessOnboardingFragment.kt +++ b/application/remote-access-server/src/main/java/org/videolan/vlc/remoteaccessserver/gui/remoteaccess/onboarding/RemoteAccessOnboardingFragment.kt @@ -1,8 +1,8 @@ /* * ************************************************************************ - * OnboardingFragment.kt + * RemoteAccessOnboardingFragment.kt * ************************************************************************* - * Copyright © 2021 VLC authors and VideoLAN + * Copyright © 2025 VLC authors and VideoLAN * Author: Nicolas POMEPUY * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -22,7 +22,7 @@ * */ -package org.videolan.vlc.webserver.gui.remoteaccess.onboarding +package org.videolan.vlc.remoteaccessserver.gui.remoteaccess.onboarding import android.view.View import android.view.accessibility.AccessibilityEvent diff --git a/application/webserver/src/main/java/org/videolan/vlc/webserver/gui/remoteaccess/onboarding/RemoteAccessOnboardingHowFragment.kt b/application/remote-access-server/src/main/java/org/videolan/vlc/remoteaccessserver/gui/remoteaccess/onboarding/RemoteAccessOnboardingHowFragment.kt similarity index 79% rename from application/webserver/src/main/java/org/videolan/vlc/webserver/gui/remoteaccess/onboarding/RemoteAccessOnboardingHowFragment.kt rename to application/remote-access-server/src/main/java/org/videolan/vlc/remoteaccessserver/gui/remoteaccess/onboarding/RemoteAccessOnboardingHowFragment.kt index 19374dae79..5759d85aa3 100644 --- a/application/webserver/src/main/java/org/videolan/vlc/webserver/gui/remoteaccess/onboarding/RemoteAccessOnboardingHowFragment.kt +++ b/application/remote-access-server/src/main/java/org/videolan/vlc/remoteaccessserver/gui/remoteaccess/onboarding/RemoteAccessOnboardingHowFragment.kt @@ -1,4 +1,28 @@ -package org.videolan.vlc.webserver.gui.remoteaccess.onboarding +/* + * ************************************************************************ + * RemoteAccessOnboardingHowFragment.kt + * ************************************************************************* + * Copyright © 2025 VLC authors and VideoLAN + * Author: Nicolas POMEPUY + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301, USA. + * ************************************************************************** + * + * + */ + +package org.videolan.vlc.remoteaccessserver.gui.remoteaccess.onboarding import android.animation.AnimatorSet import android.animation.ObjectAnimator @@ -24,7 +48,7 @@ import org.videolan.tools.dp import org.videolan.tools.setGone import org.videolan.tools.setVisible import org.videolan.vlc.gui.view.MiniVisualizer -import org.videolan.vlc.webserver.R +import org.videolan.vlc.remoteaccessserver.R class RemoteAccessOnboardingHowFragment : RemoteAccessOnboardingFragment() { private lateinit var vizu: MiniVisualizer diff --git a/application/webserver/src/main/java/org/videolan/vlc/webserver/gui/remoteaccess/onboarding/RemoteAccessOnboardingOtpFragment.kt b/application/remote-access-server/src/main/java/org/videolan/vlc/remoteaccessserver/gui/remoteaccess/onboarding/RemoteAccessOnboardingOtpFragment.kt similarity index 81% rename from application/webserver/src/main/java/org/videolan/vlc/webserver/gui/remoteaccess/onboarding/RemoteAccessOnboardingOtpFragment.kt rename to application/remote-access-server/src/main/java/org/videolan/vlc/remoteaccessserver/gui/remoteaccess/onboarding/RemoteAccessOnboardingOtpFragment.kt index 3b19c93a28..fa6b651314 100644 --- a/application/webserver/src/main/java/org/videolan/vlc/webserver/gui/remoteaccess/onboarding/RemoteAccessOnboardingOtpFragment.kt +++ b/application/remote-access-server/src/main/java/org/videolan/vlc/remoteaccessserver/gui/remoteaccess/onboarding/RemoteAccessOnboardingOtpFragment.kt @@ -1,4 +1,28 @@ -package org.videolan.vlc.webserver.gui.remoteaccess.onboarding +/* + * ************************************************************************ + * RemoteAccessOnboardingOtpFragment.kt + * ************************************************************************* + * Copyright © 2025 VLC authors and VideoLAN + * Author: Nicolas POMEPUY + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301, USA. + * ************************************************************************** + * + * + */ + +package org.videolan.vlc.remoteaccessserver.gui.remoteaccess.onboarding import android.animation.Animator import android.animation.AnimatorSet @@ -21,8 +45,8 @@ import kotlinx.coroutines.delay import kotlinx.coroutines.launch import org.videolan.tools.Settings import org.videolan.tools.dp -import org.videolan.vlc.webserver.R -import org.videolan.vlc.webserver.RemoteAccessOTP +import org.videolan.vlc.remoteaccessserver.R +import org.videolan.vlc.remoteaccessserver.RemoteAccessOTP class RemoteAccessOnboardingOtpFragment : RemoteAccessOnboardingFragment() { diff --git a/application/webserver/src/main/java/org/videolan/vlc/webserver/gui/remoteaccess/onboarding/RemoteAccessOnboardingSslFragment.kt b/application/remote-access-server/src/main/java/org/videolan/vlc/remoteaccessserver/gui/remoteaccess/onboarding/RemoteAccessOnboardingSslFragment.kt similarity index 71% rename from application/webserver/src/main/java/org/videolan/vlc/webserver/gui/remoteaccess/onboarding/RemoteAccessOnboardingSslFragment.kt rename to application/remote-access-server/src/main/java/org/videolan/vlc/remoteaccessserver/gui/remoteaccess/onboarding/RemoteAccessOnboardingSslFragment.kt index 62f1004862..619e698d35 100644 --- a/application/webserver/src/main/java/org/videolan/vlc/webserver/gui/remoteaccess/onboarding/RemoteAccessOnboardingSslFragment.kt +++ b/application/remote-access-server/src/main/java/org/videolan/vlc/remoteaccessserver/gui/remoteaccess/onboarding/RemoteAccessOnboardingSslFragment.kt @@ -1,4 +1,28 @@ -package org.videolan.vlc.webserver.gui.remoteaccess.onboarding +/* + * ************************************************************************ + * RemoteAccessOnboardingSslFragment.kt + * ************************************************************************* + * Copyright © 2025 VLC authors and VideoLAN + * Author: Nicolas POMEPUY + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301, USA. + * ************************************************************************** + * + * + */ + +package org.videolan.vlc.remoteaccessserver.gui.remoteaccess.onboarding import android.animation.AnimatorSet import android.animation.ObjectAnimator @@ -13,7 +37,7 @@ import android.widget.TextView import androidx.core.animation.doOnRepeat import androidx.core.content.ContextCompat import org.videolan.tools.Settings -import org.videolan.vlc.webserver.R +import org.videolan.vlc.remoteaccessserver.R import java.security.SecureRandom class RemoteAccessOnboardingSslFragment : RemoteAccessOnboardingFragment() { diff --git a/application/remote-access-server/src/main/java/org/videolan/vlc/remoteaccessserver/gui/remoteaccess/onboarding/RemoteAccessOnboardingWelcomeFragment.kt b/application/remote-access-server/src/main/java/org/videolan/vlc/remoteaccessserver/gui/remoteaccess/onboarding/RemoteAccessOnboardingWelcomeFragment.kt new file mode 100644 index 0000000000..e31458e429 --- /dev/null +++ b/application/remote-access-server/src/main/java/org/videolan/vlc/remoteaccessserver/gui/remoteaccess/onboarding/RemoteAccessOnboardingWelcomeFragment.kt @@ -0,0 +1,53 @@ +/* + * ************************************************************************ + * RemoteAccessOnboardingWelcomeFragment.kt + * ************************************************************************* + * Copyright © 2025 VLC authors and VideoLAN + * Author: Nicolas POMEPUY + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301, USA. + * ************************************************************************** + * + * + */ + +package org.videolan.vlc.remoteaccessserver.gui.remoteaccess.onboarding + +import android.os.Bundle +import android.view.LayoutInflater +import android.view.View +import android.view.ViewGroup +import android.widget.TextView +import org.videolan.vlc.remoteaccessserver.R + +class RemoteAccessOnboardingWelcomeFragment : RemoteAccessOnboardingFragment() { + private lateinit var titleView: TextView + + override fun getDefaultViewForTalkback() = titleView + + override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View? { + return inflater.inflate(R.layout.remote_access_onboarding_welcome, container, false) + } + + override fun onViewCreated(view: View, savedInstanceState: Bundle?) { + super.onViewCreated(view, savedInstanceState) + titleView = view.findViewById(R.id.welcome_title) + } + + companion object { + fun newInstance(): RemoteAccessOnboardingWelcomeFragment { + return RemoteAccessOnboardingWelcomeFragment() + } + } +} \ No newline at end of file diff --git a/application/webserver/src/main/java/org/videolan/vlc/webserver/ssl/SecretGenerator.kt b/application/remote-access-server/src/main/java/org/videolan/vlc/remoteaccessserver/ssl/SecretGenerator.kt similarity index 93% rename from application/webserver/src/main/java/org/videolan/vlc/webserver/ssl/SecretGenerator.kt rename to application/remote-access-server/src/main/java/org/videolan/vlc/remoteaccessserver/ssl/SecretGenerator.kt index 78296b6472..a709b00959 100644 --- a/application/webserver/src/main/java/org/videolan/vlc/webserver/ssl/SecretGenerator.kt +++ b/application/remote-access-server/src/main/java/org/videolan/vlc/remoteaccessserver/ssl/SecretGenerator.kt @@ -1,11 +1,27 @@ /* -MIT License: https://opensource.org/licenses/MIT -Copyright 2017 Diederik Hattingh -Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: -The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. -*/ -package org.videolan.vlc.webserver.ssl + * ************************************************************************ + * SecretGenerator.kt + * ************************************************************************* + * Copyright © 2025 VLC authors and VideoLAN + * Author: Nicolas POMEPUY + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301, USA. + * ************************************************************************** + * + * + */ +package org.videolan.vlc.remoteaccessserver.ssl import android.annotation.SuppressLint import android.content.Context diff --git a/application/webserver/src/main/java/org/videolan/vlc/webserver/utils/CypherUtils.kt b/application/remote-access-server/src/main/java/org/videolan/vlc/remoteaccessserver/utils/CypherUtils.kt similarity index 93% rename from application/webserver/src/main/java/org/videolan/vlc/webserver/utils/CypherUtils.kt rename to application/remote-access-server/src/main/java/org/videolan/vlc/remoteaccessserver/utils/CypherUtils.kt index d257d8d648..0b738579f5 100644 --- a/application/webserver/src/main/java/org/videolan/vlc/webserver/utils/CypherUtils.kt +++ b/application/remote-access-server/src/main/java/org/videolan/vlc/remoteaccessserver/utils/CypherUtils.kt @@ -2,7 +2,7 @@ * ************************************************************************ * CypherUtils.kt * ************************************************************************* - * Copyright © 2023 VLC authors and VideoLAN + * Copyright © 2025 VLC authors and VideoLAN * Author: Nicolas POMEPUY * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -22,7 +22,7 @@ * */ -package org.videolan.vlc.webserver.utils +package org.videolan.vlc.remoteaccessserver.utils import java.security.MessageDigest diff --git a/application/webserver/src/main/java/org/videolan/vlc/webserver/utils/MediaZipUtils.kt b/application/remote-access-server/src/main/java/org/videolan/vlc/remoteaccessserver/utils/MediaZipUtils.kt similarity index 99% rename from application/webserver/src/main/java/org/videolan/vlc/webserver/utils/MediaZipUtils.kt rename to application/remote-access-server/src/main/java/org/videolan/vlc/remoteaccessserver/utils/MediaZipUtils.kt index 3eedb7f056..7f04b99b9b 100644 --- a/application/webserver/src/main/java/org/videolan/vlc/webserver/utils/MediaZipUtils.kt +++ b/application/remote-access-server/src/main/java/org/videolan/vlc/remoteaccessserver/utils/MediaZipUtils.kt @@ -22,7 +22,7 @@ * */ -package org.videolan.vlc.webserver.utils +package org.videolan.vlc.remoteaccessserver.utils import org.videolan.medialibrary.interfaces.Medialibrary import org.videolan.medialibrary.interfaces.media.* diff --git a/application/webserver/src/main/java/org/videolan/vlc/webserver/utils/PreferenceUtil.kt b/application/remote-access-server/src/main/java/org/videolan/vlc/remoteaccessserver/utils/PreferenceUtil.kt similarity index 97% rename from application/webserver/src/main/java/org/videolan/vlc/webserver/utils/PreferenceUtil.kt rename to application/remote-access-server/src/main/java/org/videolan/vlc/remoteaccessserver/utils/PreferenceUtil.kt index f72a3cd904..5e4a39e6ba 100644 --- a/application/webserver/src/main/java/org/videolan/vlc/webserver/utils/PreferenceUtil.kt +++ b/application/remote-access-server/src/main/java/org/videolan/vlc/remoteaccessserver/utils/PreferenceUtil.kt @@ -22,7 +22,7 @@ * */ -package org.videolan.vlc.webserver.utils +package org.videolan.vlc.remoteaccessserver.utils import android.content.Context import android.content.SharedPreferences diff --git a/application/remote-access-server/src/main/java/org/videolan/vlc/remoteaccessserver/viewmodels/RemoteAccessOnboardingViewModel.kt b/application/remote-access-server/src/main/java/org/videolan/vlc/remoteaccessserver/viewmodels/RemoteAccessOnboardingViewModel.kt new file mode 100644 index 0000000000..a1956cfd88 --- /dev/null +++ b/application/remote-access-server/src/main/java/org/videolan/vlc/remoteaccessserver/viewmodels/RemoteAccessOnboardingViewModel.kt @@ -0,0 +1,34 @@ +/* + * ************************************************************************ + * RemoteAccessOnboardingViewModel.kt + * ************************************************************************* + * Copyright © 2025 VLC authors and VideoLAN + * Author: Nicolas POMEPUY + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301, USA. + * ************************************************************************** + * + * + */ + +package org.videolan.vlc.remoteaccessserver.viewmodels + +import androidx.lifecycle.ViewModel +import org.videolan.vlc.remoteaccessserver.gui.remoteaccess.onboarding.FragmentName + +class RemoteAccessOnboardingViewModel : ViewModel() { + + var currentFragment = FragmentName.WELCOME +} + diff --git a/application/webserver/src/main/java/org/videolan/vlc/webserver/websockets/RemoteAccessWebSockets.kt b/application/remote-access-server/src/main/java/org/videolan/vlc/remoteaccessserver/websockets/RemoteAccessWebSockets.kt similarity index 97% rename from application/webserver/src/main/java/org/videolan/vlc/webserver/websockets/RemoteAccessWebSockets.kt rename to application/remote-access-server/src/main/java/org/videolan/vlc/remoteaccessserver/websockets/RemoteAccessWebSockets.kt index 9552c8b4d8..df3071f966 100644 --- a/application/webserver/src/main/java/org/videolan/vlc/webserver/websockets/RemoteAccessWebSockets.kt +++ b/application/remote-access-server/src/main/java/org/videolan/vlc/remoteaccessserver/websockets/RemoteAccessWebSockets.kt @@ -2,7 +2,7 @@ * ************************************************************************ * RemoteAccessWebSockets.kt * ************************************************************************* - * Copyright © 2023 VLC authors and VideoLAN + * Copyright © 2025 VLC authors and VideoLAN * Author: Nicolas POMEPUY * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -22,7 +22,7 @@ * */ -package org.videolan.vlc.webserver.websockets +package org.videolan.vlc.remoteaccessserver.websockets import android.content.Context import android.content.SharedPreferences @@ -47,11 +47,11 @@ import org.videolan.tools.REMOTE_ACCESS_PLAYBACK_CONTROL import org.videolan.vlc.PlaybackService import org.videolan.vlc.R import org.videolan.vlc.gui.video.VideoPlayerActivity -import org.videolan.vlc.webserver.BuildConfig -import org.videolan.vlc.webserver.RemoteAccessServer -import org.videolan.vlc.webserver.convertToJson -import org.videolan.vlc.webserver.ssl.SecretGenerator -import org.videolan.vlc.webserver.websockets.IncomingMessageType.* +import org.videolan.vlc.remoteaccessserver.BuildConfig +import org.videolan.vlc.remoteaccessserver.RemoteAccessServer +import org.videolan.vlc.remoteaccessserver.convertToJson +import org.videolan.vlc.remoteaccessserver.ssl.SecretGenerator +import org.videolan.vlc.remoteaccessserver.websockets.IncomingMessageType.* import java.util.Calendar import java.util.Collections import java.util.concurrent.ConcurrentHashMap diff --git a/application/webserver/src/main/java/org/videolan/vlc/webserver/websockets/WSAuthTicket.kt b/application/remote-access-server/src/main/java/org/videolan/vlc/remoteaccessserver/websockets/WSAuthTicket.kt similarity index 95% rename from application/webserver/src/main/java/org/videolan/vlc/webserver/websockets/WSAuthTicket.kt rename to application/remote-access-server/src/main/java/org/videolan/vlc/remoteaccessserver/websockets/WSAuthTicket.kt index 4bc497d717..65a9811104 100644 --- a/application/webserver/src/main/java/org/videolan/vlc/webserver/websockets/WSAuthTicket.kt +++ b/application/remote-access-server/src/main/java/org/videolan/vlc/remoteaccessserver/websockets/WSAuthTicket.kt @@ -22,7 +22,7 @@ * */ -package org.videolan.vlc.webserver.websockets +package org.videolan.vlc.remoteaccessserver.websockets data class WSAuthTicket( val id: String, diff --git a/application/webserver/src/main/java/org/videolan/vlc/webserver/websockets/WSIncomingMessage.kt b/application/remote-access-server/src/main/java/org/videolan/vlc/remoteaccessserver/websockets/WSIncomingMessage.kt similarity index 97% rename from application/webserver/src/main/java/org/videolan/vlc/webserver/websockets/WSIncomingMessage.kt rename to application/remote-access-server/src/main/java/org/videolan/vlc/remoteaccessserver/websockets/WSIncomingMessage.kt index fbd8311bca..a5286b2e38 100644 --- a/application/webserver/src/main/java/org/videolan/vlc/webserver/websockets/WSIncomingMessage.kt +++ b/application/remote-access-server/src/main/java/org/videolan/vlc/remoteaccessserver/websockets/WSIncomingMessage.kt @@ -22,7 +22,7 @@ * */ -package org.videolan.vlc.webserver.websockets +package org.videolan.vlc.remoteaccessserver.websockets data class WSIncomingMessage( val message: String, diff --git a/application/webserver/src/main/res/layout-land/remote_access_onboarding_content.xml b/application/remote-access-server/src/main/res/layout-land/remote_access_onboarding_content.xml similarity index 100% rename from application/webserver/src/main/res/layout-land/remote_access_onboarding_content.xml rename to application/remote-access-server/src/main/res/layout-land/remote_access_onboarding_content.xml diff --git a/application/webserver/src/main/res/layout-land/remote_access_onboarding_how.xml b/application/remote-access-server/src/main/res/layout-land/remote_access_onboarding_how.xml similarity index 100% rename from application/webserver/src/main/res/layout-land/remote_access_onboarding_how.xml rename to application/remote-access-server/src/main/res/layout-land/remote_access_onboarding_how.xml diff --git a/application/webserver/src/main/res/layout-land/remote_access_onboarding_otp.xml b/application/remote-access-server/src/main/res/layout-land/remote_access_onboarding_otp.xml similarity index 100% rename from application/webserver/src/main/res/layout-land/remote_access_onboarding_otp.xml rename to application/remote-access-server/src/main/res/layout-land/remote_access_onboarding_otp.xml diff --git a/application/webserver/src/main/res/layout-land/remote_access_onboarding_ssl.xml b/application/remote-access-server/src/main/res/layout-land/remote_access_onboarding_ssl.xml similarity index 100% rename from application/webserver/src/main/res/layout-land/remote_access_onboarding_ssl.xml rename to application/remote-access-server/src/main/res/layout-land/remote_access_onboarding_ssl.xml diff --git a/application/webserver/src/main/res/layout-land/remote_access_onboarding_welcome.xml b/application/remote-access-server/src/main/res/layout-land/remote_access_onboarding_welcome.xml similarity index 100% rename from application/webserver/src/main/res/layout-land/remote_access_onboarding_welcome.xml rename to application/remote-access-server/src/main/res/layout-land/remote_access_onboarding_welcome.xml diff --git a/application/webserver/src/main/res/layout/remote_access_connection_item.xml b/application/remote-access-server/src/main/res/layout/remote_access_connection_item.xml similarity index 100% rename from application/webserver/src/main/res/layout/remote_access_connection_item.xml rename to application/remote-access-server/src/main/res/layout/remote_access_connection_item.xml diff --git a/application/webserver/src/main/res/layout/remote_access_onboarding_content.xml b/application/remote-access-server/src/main/res/layout/remote_access_onboarding_content.xml similarity index 100% rename from application/webserver/src/main/res/layout/remote_access_onboarding_content.xml rename to application/remote-access-server/src/main/res/layout/remote_access_onboarding_content.xml diff --git a/application/webserver/src/main/res/layout/remote_access_onboarding_how.xml b/application/remote-access-server/src/main/res/layout/remote_access_onboarding_how.xml similarity index 100% rename from application/webserver/src/main/res/layout/remote_access_onboarding_how.xml rename to application/remote-access-server/src/main/res/layout/remote_access_onboarding_how.xml diff --git a/application/webserver/src/main/res/layout/remote_access_onboarding_otp.xml b/application/remote-access-server/src/main/res/layout/remote_access_onboarding_otp.xml similarity index 100% rename from application/webserver/src/main/res/layout/remote_access_onboarding_otp.xml rename to application/remote-access-server/src/main/res/layout/remote_access_onboarding_otp.xml diff --git a/application/webserver/src/main/res/layout/remote_access_onboarding_ssl.xml b/application/remote-access-server/src/main/res/layout/remote_access_onboarding_ssl.xml similarity index 100% rename from application/webserver/src/main/res/layout/remote_access_onboarding_ssl.xml rename to application/remote-access-server/src/main/res/layout/remote_access_onboarding_ssl.xml diff --git a/application/webserver/src/main/res/layout/remote_access_onboarding_welcome.xml b/application/remote-access-server/src/main/res/layout/remote_access_onboarding_welcome.xml similarity index 100% rename from application/webserver/src/main/res/layout/remote_access_onboarding_welcome.xml rename to application/remote-access-server/src/main/res/layout/remote_access_onboarding_welcome.xml diff --git a/application/webserver/src/main/res/layout/remote_access_share_activity.xml b/application/remote-access-server/src/main/res/layout/remote_access_share_activity.xml similarity index 100% rename from application/webserver/src/main/res/layout/remote_access_share_activity.xml rename to application/remote-access-server/src/main/res/layout/remote_access_share_activity.xml diff --git a/application/webserver/src/main/res/menu/remote_access_share.xml b/application/remote-access-server/src/main/res/menu/remote_access_share.xml similarity index 100% rename from application/webserver/src/main/res/menu/remote_access_share.xml rename to application/remote-access-server/src/main/res/menu/remote_access_share.xml diff --git a/application/webserver/src/test/java/org/videolan/vlc/webserver/ExampleUnitTest.kt b/application/remote-access-server/src/test/java/org/videolan/vlc/remoteaccessserver/ExampleUnitTest.kt similarity index 96% rename from application/webserver/src/test/java/org/videolan/vlc/webserver/ExampleUnitTest.kt rename to application/remote-access-server/src/test/java/org/videolan/vlc/remoteaccessserver/ExampleUnitTest.kt index 06a863ca0f..4ff66ac080 100644 --- a/application/webserver/src/test/java/org/videolan/vlc/webserver/ExampleUnitTest.kt +++ b/application/remote-access-server/src/test/java/org/videolan/vlc/remoteaccessserver/ExampleUnitTest.kt @@ -22,7 +22,7 @@ * */ -package org.videolan.vlc.webserver +package org.videolan.vlc.remoteaccessserver import org.junit.Test diff --git a/application/resources/src/main/java/org/videolan/resources/Constants.kt b/application/resources/src/main/java/org/videolan/resources/Constants.kt index 75b32e289a..0f7812e368 100644 --- a/application/resources/src/main/java/org/videolan/resources/Constants.kt +++ b/application/resources/src/main/java/org/videolan/resources/Constants.kt @@ -243,8 +243,8 @@ const val MOVIEPEDIA_ACTIVITY = "org.videolan.moviepedia.ui.MoviepediaActivity" const val TV_AUDIOPLAYER_ACTIVITY = "org.videolan.television.ui.audioplayer.AudioPlayerActivity" const val MEDIAPARSING_SERVICE = "org.videolan.vlc.MediaParsingService" const val TV_ONBOARDING_ACTIVITY = "org.videolan.television.ui.OnboardingActivity" -const val REMOTE_ACCESS_SERVICE = "org.videolan.vlc.webserver.RemoteAccessService" -const val REMOTE_ACCESS_ONBOARDING = "org.videolan.vlc.webserver.gui.remoteaccess.onboarding.RemoteAccessOnboardingActivity" +const val REMOTE_ACCESS_SERVICE = "org.videolan.vlc.remoteaccessserver.RemoteAccessService" +const val REMOTE_ACCESS_ONBOARDING = "org.videolan.vlc.remoteaccessserver.gui.remoteaccess.onboarding.RemoteAccessOnboardingActivity" const val ROOM_DATABASE = "/vlc_database.zip" const val EXPORT_SETTINGS_FILE = "/vlc_exported_settings.json" \ No newline at end of file diff --git a/application/vlc-android/src/org/videolan/vlc/StartActivity.kt b/application/vlc-android/src/org/videolan/vlc/StartActivity.kt index c73e4ffc17..6d13f85efd 100644 --- a/application/vlc-android/src/org/videolan/vlc/StartActivity.kt +++ b/application/vlc-android/src/org/videolan/vlc/StartActivity.kt @@ -211,7 +211,7 @@ class StartActivity : FragmentActivity() { } } } else if(action != null && action== "vlc.remoteaccess.share") { - startActivity(Intent().apply { component = ComponentName(this@StartActivity, "org.videolan.vlc.webserver.gui.remoteaccess.RemoteAccessShareActivity") }) + startActivity(Intent().apply { component = ComponentName(this@StartActivity, "org.videolan.vlc.remoteaccessserver.gui.remoteaccess.RemoteAccessShareActivity") }) } else { val target = idFromShortcut val service = PlaybackService.instance diff --git a/application/webserver/src/main/java/org/videolan/vlc/webserver/gui/remoteaccess/onboarding/RemoteAccessOnboardingWelcomeFragment.kt b/application/webserver/src/main/java/org/videolan/vlc/webserver/gui/remoteaccess/onboarding/RemoteAccessOnboardingWelcomeFragment.kt deleted file mode 100644 index 66162816a3..0000000000 --- a/application/webserver/src/main/java/org/videolan/vlc/webserver/gui/remoteaccess/onboarding/RemoteAccessOnboardingWelcomeFragment.kt +++ /dev/null @@ -1,29 +0,0 @@ -package org.videolan.vlc.webserver.gui.remoteaccess.onboarding - -import android.os.Bundle -import android.view.LayoutInflater -import android.view.View -import android.view.ViewGroup -import android.widget.TextView -import org.videolan.vlc.webserver.R - -class RemoteAccessOnboardingWelcomeFragment : RemoteAccessOnboardingFragment() { - private lateinit var titleView: TextView - - override fun getDefaultViewForTalkback() = titleView - - override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View? { - return inflater.inflate(R.layout.remote_access_onboarding_welcome, container, false) - } - - override fun onViewCreated(view: View, savedInstanceState: Bundle?) { - super.onViewCreated(view, savedInstanceState) - titleView = view.findViewById(R.id.welcome_title) - } - - companion object { - fun newInstance(): RemoteAccessOnboardingWelcomeFragment { - return RemoteAccessOnboardingWelcomeFragment() - } - } -} \ No newline at end of file diff --git a/application/webserver/src/main/java/org/videolan/vlc/webserver/viewmodels/RemoteAccessOnboardingViewModel.kt b/application/webserver/src/main/java/org/videolan/vlc/webserver/viewmodels/RemoteAccessOnboardingViewModel.kt deleted file mode 100644 index 0dbd6b110e..0000000000 --- a/application/webserver/src/main/java/org/videolan/vlc/webserver/viewmodels/RemoteAccessOnboardingViewModel.kt +++ /dev/null @@ -1,10 +0,0 @@ -package org.videolan.vlc.webserver.viewmodels - -import androidx.lifecycle.ViewModel -import org.videolan.vlc.webserver.gui.remoteaccess.onboarding.FragmentName - -class RemoteAccessOnboardingViewModel : ViewModel() { - - var currentFragment = FragmentName.WELCOME -} - diff --git a/settings.gradle b/settings.gradle index a90303ead3..c7fa53916b 100644 --- a/settings.gradle +++ b/settings.gradle @@ -1,4 +1,4 @@ include ':libvlcjni:libvlc', ':medialibrary' -include ':application:tools', ':application:resources', ':application:mediadb', ':application:app', ':application:live-plot-graph', ':application:television', ':application:donations', ':application:webserver' +include ':application:tools', ':application:resources', ':application:mediadb', ':application:app', ':application:live-plot-graph', ':application:television', ':application:donations', ':application:remote-access-server' include ':application:vlc-android' include ':application:moviepedia' -- GitLab From f0ee7f30a52c2a21f4452984c9b9ab92d37e8a1b Mon Sep 17 00:00:00 2001 From: Nicolas Pomepuy <nicolas@videolabs.io> Date: Tue, 28 Jan 2025 11:42:22 +0100 Subject: [PATCH 2/4] Create the new remote access client module and setup maven and CI Fixes #3131 --- application/app/build.gradle | 5 +- application/remote-access-client/.gitignore | 1 + application/remote-access-client/build.gradle | 126 ++++++++++++++++++ .../remote-access-client/consumer-rules.pro | 0 .../gradle.properties | 4 +- .../remote-access-client/proguard-rules.pro | 21 +++ .../src/main/AndroidManifest.xml | 28 ++++ application/remote-access-server/build.gradle | 60 +-------- buildsystem/gitlab/.gitlab-ci.yml | 2 +- settings.gradle | 1 + 10 files changed, 186 insertions(+), 62 deletions(-) create mode 100644 application/remote-access-client/.gitignore create mode 100644 application/remote-access-client/build.gradle create mode 100644 application/remote-access-client/consumer-rules.pro rename application/{remote-access-server => remote-access-client}/gradle.properties (94%) create mode 100644 application/remote-access-client/proguard-rules.pro create mode 100644 application/remote-access-client/src/main/AndroidManifest.xml diff --git a/application/app/build.gradle b/application/app/build.gradle index be1e8e0d55..64adb29a2a 100644 --- a/application/app/build.gradle +++ b/application/app/build.gradle @@ -162,10 +162,7 @@ android { dependencies { implementation project(':application:vlc-android') implementation project(':application:television') - devImplementation project(':application:remote-access-server') - debugImplementation project(':application:remote-access-server') - releaseImplementation "org.videolan.android:remote-access:$rootProject.ext.remoteAccessVersion" - vlcBundleImplementation "org.videolan.android:remote-access:$rootProject.ext.remoteAccessVersion" + implementation project(':application:remote-access-server') testImplementation project(':application:television') testImplementation project(':application:remote-access-server') diff --git a/application/remote-access-client/.gitignore b/application/remote-access-client/.gitignore new file mode 100644 index 0000000000..42afabfd2a --- /dev/null +++ b/application/remote-access-client/.gitignore @@ -0,0 +1 @@ +/build \ No newline at end of file diff --git a/application/remote-access-client/build.gradle b/application/remote-access-client/build.gradle new file mode 100644 index 0000000000..b39ecc5d52 --- /dev/null +++ b/application/remote-access-client/build.gradle @@ -0,0 +1,126 @@ +/* + * ************************************************************************ + * build.gradle + * ************************************************************************* + * Copyright © 2025 VLC authors and VideoLAN + * Author: Nicolas POMEPUY + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301, USA. + * ************************************************************************** + * + * + */ + +plugins { + id 'com.android.library' + id 'org.jetbrains.kotlin.android' + id 'com.vanniktech.maven.publish' +} + +ext { + library_version = "$rootProject.ext.remoteAccessVersion" +} + +android { + namespace 'org.videolan.vlc.remoteaccessclient' + + defaultConfig { + minSdkVersion rootProject.ext.minSdkVersion + targetSdkVersion rootProject.ext.targetSdkVersion + compileSdk rootProject.ext.compileSdkVersion + + testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner" + consumerProguardFiles "consumer-rules.pro" + resValue "string", "build_remote_access_revision", remoteAccessRevision() + resValue "string", "remote_access_version", remoteAccessVersion() + } + + buildTypes { + release { + minifyEnabled false + proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro' + } + } + compileOptions { + sourceCompatibility JavaVersion.VERSION_1_8 + targetCompatibility JavaVersion.VERSION_1_8 + } + kotlinOptions { + jvmTarget = '1.8' + } + + task webCopy(type: Copy) { + from '../../remoteaccess/dist' + into 'assets/dist' + } + + sourceSets.main { + assets.srcDirs = ['assets'] + } + + sourceSets.main { + assets.srcDirs = ['assets'] + } + + // Make per-variant version code + libraryVariants.all { variant -> + //Custom APK name + variant.outputs.each { output -> + if (output.outputFileName != null && output.outputFileName.endsWith('.aar')) { + output.outputFileName = "vlc-android-remote-access-${library_version}.aar" + } + } + } +} + +preBuild.dependsOn(webCopy) + +def remoteAccessVersion() { + def code = new ByteArrayOutputStream() + try { + if (file("../../remoteaccess/package.json").exists()) { + + exec { + commandLine = ['bash', '-c', 'grep -m1 "version" ../../remoteaccess/package.json'] + standardOutput = code + } + return code.toString().split("\"")[3] + + } + } catch (Exception e) { + } + return "unknown" +} + +def remoteAccessRevision() { + try { + def hash = new ByteArrayOutputStream() + exec { + commandLine = ['bash', '-c', 'git -C ../../remoteaccess rev-parse --short HEAD'] + standardOutput = hash + } + return hash.toString() + } catch (Exception e) { + } + return "unknown" +} + +dependencies { + + testImplementation 'junit:junit:4.13.2' + androidTestImplementation 'androidx.test.ext:junit:1.2.1' + androidTestImplementation 'androidx.test.espresso:espresso-core:3.6.1' +} + +apply from: '../../buildsystem/publish.gradle' diff --git a/application/remote-access-client/consumer-rules.pro b/application/remote-access-client/consumer-rules.pro new file mode 100644 index 0000000000..e69de29bb2 diff --git a/application/remote-access-server/gradle.properties b/application/remote-access-client/gradle.properties similarity index 94% rename from application/remote-access-server/gradle.properties rename to application/remote-access-client/gradle.properties index ee9ac55a81..26f8de8626 100644 --- a/application/remote-access-server/gradle.properties +++ b/application/remote-access-client/gradle.properties @@ -2,7 +2,7 @@ # ************************************************************************* # gradle.properties # ************************************************************************** -# Copyright © 2024 VLC authors and VideoLAN +# Copyright © 2025 VLC authors and VideoLAN # Author: Nicolas POMEPUY # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by @@ -28,4 +28,4 @@ POM_ARTIFACT_ID=remote-access POM_NAME=VLC-Android-RemoteAccess POM_DESCRIPTION=Android port of VLC's Remote Access -POM_INCEPTION_YEAR=2021 \ No newline at end of file +POM_INCEPTION_YEAR=2024 \ No newline at end of file diff --git a/application/remote-access-client/proguard-rules.pro b/application/remote-access-client/proguard-rules.pro new file mode 100644 index 0000000000..481bb43481 --- /dev/null +++ b/application/remote-access-client/proguard-rules.pro @@ -0,0 +1,21 @@ +# Add project specific ProGuard rules here. +# You can control the set of applied configuration files using the +# proguardFiles setting in build.gradle. +# +# For more details, see +# http://developer.android.com/guide/developing/tools/proguard.html + +# If your project uses WebView with JS, uncomment the following +# and specify the fully qualified class name to the JavaScript interface +# class: +#-keepclassmembers class fqcn.of.javascript.interface.for.webview { +# public *; +#} + +# Uncomment this to preserve the line number information for +# debugging stack traces. +#-keepattributes SourceFile,LineNumberTable + +# If you keep the line number information, uncomment this to +# hide the original source file name. +#-renamesourcefileattribute SourceFile \ No newline at end of file diff --git a/application/remote-access-client/src/main/AndroidManifest.xml b/application/remote-access-client/src/main/AndroidManifest.xml new file mode 100644 index 0000000000..13a607c102 --- /dev/null +++ b/application/remote-access-client/src/main/AndroidManifest.xml @@ -0,0 +1,28 @@ +<?xml version="1.0" encoding="utf-8"?> +<!-- + ~ ************************************************************************* + ~ AndroidManifest.xml + ~ ************************************************************************** + ~ Copyright © 2025 VLC authors and VideoLAN + ~ Author: Nicolas POMEPUY + ~ This program is free software; you can redistribute it and/or modify + ~ it under the terms of the GNU General Public License as published by + ~ the Free Software Foundation; either version 2 of the License, or + ~ (at your option) any later version. + ~ + ~ This program is distributed in the hope that it will be useful, + ~ but WITHOUT ANY WARRANTY; without even the implied warranty of + ~ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + ~ GNU General Public License for more details. + ~ + ~ You should have received a copy of the GNU General Public License + ~ along with this program; if not, write to the Free Software + ~ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301, USA. + ~ *************************************************************************** + ~ + ~ + --> + +<manifest xmlns:android="http://schemas.android.com/apk/res/android"> + +</manifest> \ No newline at end of file diff --git a/application/remote-access-server/build.gradle b/application/remote-access-server/build.gradle index c6c72aecd7..cb7d371d05 100644 --- a/application/remote-access-server/build.gradle +++ b/application/remote-access-server/build.gradle @@ -1,12 +1,8 @@ plugins { id 'com.android.library' id 'org.jetbrains.kotlin.android' - id 'com.vanniktech.maven.publish' } -ext { - library_version = "$rootProject.ext.remoteAccessVersion" -} android { namespace 'org.videolan.vlc.remoteaccessserver' @@ -23,8 +19,6 @@ android { testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner" consumerProguardFiles "consumer-rules.pro" buildConfigField 'Boolean', 'VLC_REMOTE_ACCESS_DEBUG', project.hasProperty("vlc_remote_access_debug") ? vlc_remote_access_debug : "false" - resValue "string", "build_remote_access_revision", remoteAccessRevision() - resValue "string", "remote_access_version", remoteAccessVersion() } @@ -43,11 +37,6 @@ android { } } - task webCopy(type: Copy) { - from '../../remoteaccess/dist' - into 'assets/dist' - } - sourceSets.main { assets.srcDirs = ['assets'] } @@ -68,51 +57,14 @@ android { buildConfig true } - // Make per-variant version code - libraryVariants.all { variant -> - //Custom APK name - variant.outputs.each { output -> - if (output.outputFileName != null && output.outputFileName.endsWith('.aar')) { - output.outputFileName = "vlc-android-remote-access-${library_version}.aar" - } - } - } -} - -def remoteAccessVersion() { - def code = new ByteArrayOutputStream() - try { - if (file("../../remoteaccess/package.json").exists()) { - - exec { - commandLine = ['bash', '-c', 'grep -m1 "version" ../../remoteaccess/package.json'] - standardOutput = code - } - return code.toString().split("\"")[3] - - } - } catch (Exception e) { - } - return "unknown" -} - -def remoteAccessRevision() { - try { - def hash = new ByteArrayOutputStream() - exec { - commandLine = ['bash', '-c', 'git -C ../../remoteaccess rev-parse --short HEAD'] - standardOutput = hash - } - return hash.toString() - } catch (Exception e) { - } - return "unknown" } -preBuild.dependsOn(webCopy) - dependencies { coreLibraryDesugaring 'com.android.tools:desugar_jdk_libs:2.0.4' + devImplementation project(':application:remote-access-client') + debugImplementation project(':application:remote-access-client') + releaseImplementation "org.videolan.android:remote-access:$rootProject.ext.remoteAccessVersion" + vlcBundleImplementation "org.videolan.android:remote-access:$rootProject.ext.remoteAccessVersion" implementation project(':application:vlc-android') implementation "io.ktor:ktor:$rootProject.ext.ktorVersion" implementation "io.ktor:ktor-server-netty:$rootProject.ext.ktorVersion" @@ -130,6 +82,4 @@ dependencies { testImplementation 'junit:junit:4.13.2' androidTestImplementation 'androidx.test.ext:junit:1.1.5' androidTestImplementation 'androidx.test.espresso:espresso-core:3.5.1' -} - -apply from: '../../buildsystem/publish.gradle' +} \ No newline at end of file diff --git a/buildsystem/gitlab/.gitlab-ci.yml b/buildsystem/gitlab/.gitlab-ci.yml index edc279541a..9f0fb4712d 100644 --- a/buildsystem/gitlab/.gitlab-ci.yml +++ b/buildsystem/gitlab/.gitlab-ci.yml @@ -466,7 +466,7 @@ publish_remote_access_lib: script: - mkdir -p $M2_REPO - ./buildsystem/compile.sh --init -b - - GRADLE_ABI=ALL RELEASE_SIGNING_ENABLED=false ./gradlew -Dmaven.repo.local=$M2_REPO -p application/webserver publishToMavenLocal + - GRADLE_ABI=ALL RELEASE_SIGNING_ENABLED=false ./gradlew -Dmaven.repo.local=$M2_REPO -p application/remote-access-client publishToMavenLocal artifacts: name: "${CI_COMMIT_TAG}" paths: diff --git a/settings.gradle b/settings.gradle index c7fa53916b..097de50d83 100644 --- a/settings.gradle +++ b/settings.gradle @@ -2,3 +2,4 @@ include ':libvlcjni:libvlc', ':medialibrary' include ':application:tools', ':application:resources', ':application:mediadb', ':application:app', ':application:live-plot-graph', ':application:television', ':application:donations', ':application:remote-access-server' include ':application:vlc-android' include ':application:moviepedia' +include ':application:remote-access-client' -- GitLab From afe591f95848e04528079cc6d4feeba08b70bfe8 Mon Sep 17 00:00:00 2001 From: Nicolas Pomepuy <nicolas@videolabs.io> Date: Tue, 28 Jan 2025 15:01:30 +0100 Subject: [PATCH 3/4] Move the remote access client git to the remote-access-client module directory --- application/remote-access-client/build.gradle | 8 ++++---- buildsystem/compile-remoteaccess.sh | 11 ++++++----- buildsystem/gitlab/.gitlab-ci.yml | 6 +++--- 3 files changed, 13 insertions(+), 12 deletions(-) diff --git a/application/remote-access-client/build.gradle b/application/remote-access-client/build.gradle index b39ecc5d52..bcfb43fb50 100644 --- a/application/remote-access-client/build.gradle +++ b/application/remote-access-client/build.gradle @@ -61,7 +61,7 @@ android { } task webCopy(type: Copy) { - from '../../remoteaccess/dist' + from 'remoteaccess/dist' into 'assets/dist' } @@ -89,10 +89,10 @@ preBuild.dependsOn(webCopy) def remoteAccessVersion() { def code = new ByteArrayOutputStream() try { - if (file("../../remoteaccess/package.json").exists()) { + if (file("remoteaccess/package.json").exists()) { exec { - commandLine = ['bash', '-c', 'grep -m1 "version" ../../remoteaccess/package.json'] + commandLine = ['bash', '-c', 'grep -m1 "version" remoteaccess/package.json'] standardOutput = code } return code.toString().split("\"")[3] @@ -107,7 +107,7 @@ def remoteAccessRevision() { try { def hash = new ByteArrayOutputStream() exec { - commandLine = ['bash', '-c', 'git -C ../../remoteaccess rev-parse --short HEAD'] + commandLine = ['bash', '-c', 'git -C remoteaccess rev-parse --short HEAD'] standardOutput = hash } return hash.toString() diff --git a/buildsystem/compile-remoteaccess.sh b/buildsystem/compile-remoteaccess.sh index c7b006efe8..cb09402a45 100755 --- a/buildsystem/compile-remoteaccess.sh +++ b/buildsystem/compile-remoteaccess.sh @@ -60,22 +60,23 @@ done REMOTE_ACCESS_TESTED_HASH=543dcf36610e6944c85cbf355b4b934b8ae451d3 REMOTE_ACCESS_REPOSITORY=https://code.videolan.org/videolan/remoteaccess - : ${VLC_REMOTE_ACCESS_PATH:="$(pwd -P)/remoteaccess"} + : ${VLC_REMOTE_ACCESS_PATH:="$(pwd -P)/application/remote-access-client/remoteaccess"} + diagnostic "VLC_REMOTE_ACCESS_PATH is $VLC_REMOTE_ACCESS_PATH" if [ ! -d "$VLC_REMOTE_ACCESS_PATH" ] || [ ! -d "$VLC_REMOTE_ACCESS_PATH/.git" ]; then diagnostic "Remote access sources: not found, cloning" branch="main" if [ ! -d "$VLC_REMOTE_ACCESS_PATH" ]; then - git clone --single-branch --branch ${branch} "${REMOTE_ACCESS_REPOSITORY}" - cd remoteaccess + git clone --single-branch --branch ${branch} "${REMOTE_ACCESS_REPOSITORY}" application/remote-access-client/remoteaccess + cd application/remote-access-client/remoteaccess else # folder exist with only the artifacts - cd remoteaccess + cd application/remote-access-client/remoteaccess git init git remote add origin "${REMOTE_ACCESS_REPOSITORY}" git pull origin ${branch} fi git reset --hard ${REMOTE_ACCESS_TESTED_HASH} || fail "Remote access sources: REMOTE_ACCESS_TESTED_HASH ${REMOTE_ACCESS_TESTED_HASH} not found" - cd .. + cd ../../.. fi if [ "$INIT_ONLY" != 1 ]; then diff --git a/buildsystem/gitlab/.gitlab-ci.yml b/buildsystem/gitlab/.gitlab-ci.yml index 9f0fb4712d..8f9a48611e 100644 --- a/buildsystem/gitlab/.gitlab-ci.yml +++ b/buildsystem/gitlab/.gitlab-ci.yml @@ -9,7 +9,7 @@ variables: VLC_ANDROID_IMAGE_30: registry.videolan.org/vlc-debian-android-3.0:20230621085943 VLC_ANDROID_IMAGE_40: registry.videolan.org/vlc-debian-android:20240731083648 VLC_WEB_BUILD_IMAGE: registry.videolan.org/videolan-alpine-node:20230523124511 - WEBSERVER_DIR: "./remoteaccess" + WEBSERVER_DIR: "./application/remote-access-client/remoteaccess" default: before_script: | @@ -53,7 +53,7 @@ webserver-install-dependencies: - npm install artifacts: paths: - - remoteaccess/ + - application/remote-access-client/remoteaccess/ when: on_success expire_in: 1h @@ -67,7 +67,7 @@ webserver-build: - npm run build-android artifacts: paths: - - remoteaccess/ + - application/remote-access-client/remoteaccess/ when: on_success expire_in: 1h -- GitLab From edcd1cbc6b9e4debd74076d53b55e560ad3f5299 Mon Sep 17 00:00:00 2001 From: Nicolas Pomepuy <nicolas@videolabs.io> Date: Tue, 28 Jan 2025 12:40:37 +0100 Subject: [PATCH 4/4] Bump the remote access artifact version to 0.2.0 --- build.gradle | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/build.gradle b/build.gradle index 614423cf3b..ce54a492db 100644 --- a/build.gradle +++ b/build.gradle @@ -42,7 +42,7 @@ ext { versionCode = 3060200 versionName = project.hasProperty('forceVlc4') && project.getProperty('forceVlc4') ? '4.0.0-preview - ' + versionCode : '3.6.2' vlcMajorVersion = project.hasProperty('forceVlc4') && project.getProperty('forceVlc4') ? 4 : 3 - remoteAccessVersion = '0.1.3' + remoteAccessVersion = '0.2.0' libvlcVersion = vlcMajorVersion == 3 ? '3.6.0-eap14' :'4.0.0-eap17' medialibraryVersion = vlcMajorVersion == 3 ? '0.13.13-rc14' : '0.13.13-vlc4-rc14' minSdkVersion = 17 -- GitLab