From 8c0555024216ade762c105e1080ced2e63c7059d Mon Sep 17 00:00:00 2001 From: Roy Olav Purser Date: Tue, 15 Jun 2021 13:38:01 +0200 Subject: [PATCH] first commit --- .drone.yml | 17 +++++ .gitignore | 14 ++++ android/app/build.gradle | 31 ++++++++ android/app/proguard-rules.pro | 21 ++++++ android/app/src/main/AndroidManifest.xml | 19 +++++ .../app/src/main/ic_launcher-playstore.png | Bin 0 -> 12235 bytes .../java/it/purser/stream/ShareActivity.java | 69 ++++++++++++++++++ .../app/src/main/res/drawable/ic_launcher.xml | 15 ++++ .../app/src/main/res/values-night/themes.xml | 4 + android/app/src/main/res/values/colors.xml | 10 +++ android/app/src/main/res/values/strings.xml | 3 + android/app/src/main/res/values/themes.xml | 4 + .../it/purser/stream/ExampleUnitTest.java | 17 +++++ android/build.gradle | 24 ++++++ android/local.properties | 10 +++ android/settings.gradle | 2 + chrome/manifest.json | 17 +++++ chrome/popup.html | 9 +++ chrome/script.js | 33 +++++++++ icons.sh | 9 +++ pack-chrome.sh | 10 +++ 21 files changed, 338 insertions(+) create mode 100644 .drone.yml create mode 100644 .gitignore create mode 100644 android/app/build.gradle create mode 100644 android/app/proguard-rules.pro create mode 100644 android/app/src/main/AndroidManifest.xml create mode 100644 android/app/src/main/ic_launcher-playstore.png create mode 100644 android/app/src/main/java/it/purser/stream/ShareActivity.java create mode 100644 android/app/src/main/res/drawable/ic_launcher.xml create mode 100644 android/app/src/main/res/values-night/themes.xml create mode 100644 android/app/src/main/res/values/colors.xml create mode 100644 android/app/src/main/res/values/strings.xml create mode 100644 android/app/src/main/res/values/themes.xml create mode 100644 android/app/src/test/java/it/purser/stream/ExampleUnitTest.java create mode 100644 android/build.gradle create mode 100644 android/local.properties create mode 100644 android/settings.gradle create mode 100644 chrome/manifest.json create mode 100644 chrome/popup.html create mode 100644 chrome/script.js create mode 100755 icons.sh create mode 100755 pack-chrome.sh diff --git a/.drone.yml b/.drone.yml new file mode 100644 index 0000000..a753346 --- /dev/null +++ b/.drone.yml @@ -0,0 +1,17 @@ +kind: pipeline +name: default +steps: +- name: compile-chrome + image: roypur/chrome-packer:latest + commands: + - ./pack-chrome.sh +- name: gitea_release + image: plugins/gitea-release + settings: + api_key: + from_secret: gitea_token + base_url: https://git.purser.it + title: ${DRONE_TAG} + files: chrome.crx + when: + event: tag diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..e88340c --- /dev/null +++ b/.gitignore @@ -0,0 +1,14 @@ +*.pyc +app/gradle/wrapper/* +app/gradlew +app/gradlew.bat +app/gradle.properties +app/build/* +app/app/build/* +app/app/release/* +app/.idea/* +app/.gradle/* +app/gradle/* +chrome/*.png +*.crx +sources.json diff --git a/android/app/build.gradle b/android/app/build.gradle new file mode 100644 index 0000000..3e1564b --- /dev/null +++ b/android/app/build.gradle @@ -0,0 +1,31 @@ +plugins { + id 'com.android.application' +} + +android { + compileSdkVersion 29 + buildToolsVersion "30.0.3" + + defaultConfig { + applicationId "it.purser.stream" + minSdkVersion 25 + targetSdkVersion 29 + versionCode 109 + versionName "109.0" + } + + buildTypes { + release { + minifyEnabled false + proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro' + } + } + compileOptions { + sourceCompatibility JavaVersion.VERSION_1_8 + targetCompatibility JavaVersion.VERSION_1_8 + } +} + +dependencies { + testImplementation 'junit:junit:4.+' +} diff --git a/android/app/proguard-rules.pro b/android/app/proguard-rules.pro new file mode 100644 index 0000000..481bb43 --- /dev/null +++ b/android/app/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/android/app/src/main/AndroidManifest.xml b/android/app/src/main/AndroidManifest.xml new file mode 100644 index 0000000..d43e9db --- /dev/null +++ b/android/app/src/main/AndroidManifest.xml @@ -0,0 +1,19 @@ + + + + + + + + + + + + \ No newline at end of file diff --git a/android/app/src/main/ic_launcher-playstore.png b/android/app/src/main/ic_launcher-playstore.png new file mode 100644 index 0000000000000000000000000000000000000000..a61a702341039aa04830bdd2bf3a10f7a6444e93 GIT binary patch literal 12235 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 s;{b;iWZ7xV domains = new TreeMap<>(); + domains.put("youtu.be", "youtube"); + domains.put("youtube.com", "youtube"); + domains.put("www.youtube.com", "youtube"); + domains.put("tv.nrk.no", "nrk"); + domains.put("nx12210.your-storageshare.de", "nextcloud"); + + Intent intent = getIntent(); + Bundle bundle = intent.getExtras(); + for(String key: bundle.keySet()) { + try { + String txt = (String) bundle.get(key); + Uri uri = Uri.parse(txt); + String host = uri.getHost().toLowerCase(Locale.ROOT); + if(domains.containsKey(host)) { + if(host.contains("youtube.com")) { + Uri.Builder builder = new Uri.Builder(); + builder.authority(host); + builder.scheme("https"); + String path = uri.getQueryParameter("v"); + if(path != null) { + builder.path(path); + return new Upstream(builder.build(), domains.get(host)); + } + } + return new Upstream(uri, domains.get(host)); + } + } catch(Exception e) {} + } + return null; + } + @Override + protected void onCreate(Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + Upstream upstream = getSharedLink(); + if(upstream != null) { + Uri.Builder builder = new Uri.Builder(); + builder.authority("stream.purser.it"); + builder.scheme("https"); + builder.path(upstream.uri.getPath()); + builder.appendQueryParameter("provider", upstream.provider); + Intent launch = new Intent(Intent.ACTION_VIEW, builder.build()); + launch.setPackage("com.android.chrome"); + launch.putExtra("android.support.customtabs.extra.SESSION", "Proxy Stream"); + launch.putExtra("android.support.customtabs.extra.TOOLBAR_COLOR", 0xff0000); + startActivity(launch); + } + finish(); + } +} diff --git a/android/app/src/main/res/drawable/ic_launcher.xml b/android/app/src/main/res/drawable/ic_launcher.xml new file mode 100644 index 0000000..cb8b054 --- /dev/null +++ b/android/app/src/main/res/drawable/ic_launcher.xml @@ -0,0 +1,15 @@ + + + + + + diff --git a/android/app/src/main/res/values-night/themes.xml b/android/app/src/main/res/values-night/themes.xml new file mode 100644 index 0000000..3d57a7d --- /dev/null +++ b/android/app/src/main/res/values-night/themes.xml @@ -0,0 +1,4 @@ + + +