diff --git a/.github/workflows/build-pr.yml b/.github/workflows/build-pr.yml new file mode 100644 index 0000000..40fc93e --- /dev/null +++ b/.github/workflows/build-pr.yml @@ -0,0 +1,38 @@ +name: Build website PR + +on: + pull_request: + branches: + - "main" + types: + - closed + +concurrency: + group: "builders" + cancel-in-progress: true + +jobs: + if_merged: + if: github.event.pull_request.merged == true + runs-on: ubuntu-latest + steps: + - name: Checkout + uses: actions/checkout@v4 + with: + ref: main + fetch-depth: 0 + - name: Install dependencies + run: | + curl -sSL https://install.python-poetry.org | python3 - + make install + - name: Build website + run: make website + - name: Commit files + run: | + git config --local user.email "41898282+github-actions[bot]@users.noreply.github.com" + git config --local user.name "github-actions[bot]" + git commit -a -m "Built website" + - name: Push changes + uses: ad-m/github-push-action@master + with: + branch: main diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml new file mode 100644 index 0000000..08efb30 --- /dev/null +++ b/.github/workflows/build.yml @@ -0,0 +1,39 @@ +name: Build website + +on: + workflow_dispatch: + + push: + branches: + - 'main' + paths: + - './templates/**' + +concurrency: + group: "builders" + cancel-in-progress: true + +jobs: + build: + runs-on: ubuntu-latest + steps: + - name: Checkout + uses: actions/checkout@v4 + with: + ref: main + fetch-depth: 0 + - name: Install dependencies + run: | + curl -sSL https://install.python-poetry.org | python3 - + make install + - name: Build website + run: make website + - name: Commit files + run: | + git config --local user.email "41898282+github-actions[bot]@users.noreply.github.com" + git config --local user.name "github-actions[bot]" + git commit -a -m "Built website" + - name: Push changes + uses: ad-m/github-push-action@master + with: + branch: main diff --git a/.github/workflows/pages.yml b/.github/workflows/pages.yml index e7f5495..ebe5d52 100644 --- a/.github/workflows/pages.yml +++ b/.github/workflows/pages.yml @@ -3,12 +3,19 @@ name: Deploy static content to Pages on: # Runs on pushes targeting the default branch - push: - branches: ["main"] + #push: + # branches: ["main"] # Allows you to run this workflow manually from the Actions tab workflow_dispatch: + workflow_run: + workflows: + - Build website + - Build website PR + types: + - completed + # Sets permissions of the GITHUB_TOKEN to allow deployment to GitHub Pages permissions: contents: read @@ -29,14 +36,14 @@ jobs: runs-on: ubuntu-latest steps: - name: Checkout - uses: actions/checkout@v3 + uses: actions/checkout@v4 - name: Setup Pages - uses: actions/configure-pages@v2 + uses: actions/configure-pages@v3 - name: Upload artifact uses: actions/upload-pages-artifact@v1 with: # Upload entire repository - path: './public/' + path: "./public/" - name: Deploy to GitHub Pages id: deployment - uses: actions/deploy-pages@v1 + uses: actions/deploy-pages@v2 diff --git a/README.md b/README.md index dbdf4ef..fbee3c9 100644 --- a/README.md +++ b/README.md @@ -1 +1,19 @@ # Website for the OpenAndroidInstaller project + +## Website build workflow + +This website is made with Bulma and gets build to a static page via the Python tools `make`, `poetry` and `jinja2`. + +To build the website follow the two following steps: + +- Install the dependencies: + + ``` + make install + ``` + +- Build the website: + + ``` + make website + ``` \ No newline at end of file diff --git a/build.py b/build.py index 2392487..2d2c061 100644 --- a/build.py +++ b/build.py @@ -17,6 +17,7 @@ "imprint.html", "privacy.html", "feedback.html", + "404.html", ] # Load template files and write the rendered HTML @@ -24,8 +25,8 @@ # render the templates template = env.get_template(page) output = template.render( - version="v0.4.4-beta", - n_supported_devices=62, + version="v0.5.0-beta", + n_supported_devices=73, ) # write to file diff --git a/public/.htaccess b/public/.htaccess new file mode 100644 index 0000000..7a332ab --- /dev/null +++ b/public/.htaccess @@ -0,0 +1,47 @@ +##START HTTP Security Header## + +#Content Security Policy - CSP-HEADER +Header set Content-Security-Policy "frame-ancestors 'self'; default-src 'none'; script-src 'self' plausible.io peertube.tv opencollective.com liberapay.com; script-src-attr 'none'; script-src-elem 'self'; object-src 'self' img.shields.io; img-src 'self' opencollective.com liberapay.com; media-src 'self'; connect-src 'self'; frame-src 'self' img.shields.io peertube.tv; form-action 'self'; base-uri 'self'; font-src 'self'; style-src 'self'; style-src-elem 'self'; style-src-attr 'self';" + +#HTTP Content-Types +AddCharset UTF-8 .html + +#Public Key Pins +Header set Public-Key-Pins "pin-sha256=\"base64+primary==\"; pin-sha256=\"base64+backup==\"; max-age=5184000; includeSubDomains" + +#Strict-Transport-Security +Header set Strict-Transport-Security "max-age=31536000; includeSubDomains" + +#X-Content-Type-Options +Header always set X-Content-Type-Options "nosniff" + +#X-Frame-Options +Header always set X-Frame-Options "SAMEORIGIN" + +#X-Xss-Protection +Header always set X-Xss-Protection "1; mode=block" + +#Referrer-Policy +Header set Referrer-Policy "no-referrer, same-origin" + +##END HTTP Security Header## + +#HTTP Cache +Header set Cache-Control "max-age=604800" +# "max-age=604800" -> 1 Week +# "max-age=2592000" -> 30 Days +# "max-age=31536000" -> 1 Year + +Error pages +ErrorDocument 404 404.html + +##START File Extensions## + +RewriteEngine on + +# Remove .html +RewriteCond %{REQUEST_FILENAME} !-d +RewriteCond %{REQUEST_FILENAME}\.html -f +RewriteRule ^(.*)$ $1.html + +##END File Extensions## \ No newline at end of file diff --git a/public/static/BMBF_gefoerdert_2017_en.jpg b/public/static/BMBF_gefoerdert_2017_en.jpg deleted file mode 100644 index 97913aa..0000000 Binary files a/public/static/BMBF_gefoerdert_2017_en.jpg and /dev/null differ diff --git a/public/static/Screenshot-requirements-page.png b/public/static/Screenshot-requirements-page.png deleted file mode 100644 index 1c6a1f6..0000000 Binary files a/public/static/Screenshot-requirements-page.png and /dev/null differ diff --git a/public/static/Screenshot-select-page.png b/public/static/Screenshot-select-page.png deleted file mode 100644 index 44d0160..0000000 Binary files a/public/static/Screenshot-select-page.png and /dev/null differ diff --git a/public/static/Screenshot-start-page.png b/public/static/Screenshot-start-page.png deleted file mode 100644 index 2e5d370..0000000 Binary files a/public/static/Screenshot-start-page.png and /dev/null differ diff --git a/public/static/custom.css b/public/static/custom.css index dbeebe0..f08d8c1 100644 --- a/public/static/custom.css +++ b/public/static/custom.css @@ -2,6 +2,61 @@ html { scroll-behavior: smooth; } +.px-6 ul { + list-style: unset; +} + +.round { + border-radius: 4px; +} + +.hover-transition { + transition: ease-in 250ms; +} + +.hover-transition:hover { + transition: ease-in 250ms; +} + +#pf-funding-logos { + width: 333px; +} + +.pt-5 { + border-top: 1px solid #dee2e6; +} + +#user { + display: block; +} + +/*Donation options*/ + +#donate-widgets { + margin: auto; + margin-top: 10px; +} + +.opencollective, +#gh-sponsors { + display: flex !important; + margin: auto !important; +} + +.liberapay { + display: flex !important; + width: 50% !important; + margin-bottom: 10px; + margin-left: 46.05px !important; +} + +.liberapay-nojs { + display: flex; + margin: auto; + margin-top: -20px; + margin-bottom: 10px; +} + /* Style the tab content */ .tabcontent { display: none; diff --git a/public/static/openandroidinstaller-demo-preview.png b/public/static/openandroidinstaller-demo-preview.png deleted file mode 100644 index b71e20c..0000000 Binary files a/public/static/openandroidinstaller-demo-preview.png and /dev/null differ diff --git a/templates/404.html b/templates/404.html new file mode 100644 index 0000000..d7946fc --- /dev/null +++ b/templates/404.html @@ -0,0 +1,49 @@ +{% extends "base.html" %} +{% block title %}404 | OpenAndroidInstaller{% endblock %} +{% block robot %} + + +{% endblock %} +{% block content %} +
+ + + + +Oops! - The requested page does not exist or was not found.
+While we don't like google apps, some people feel that they need them to leverage the full experience of +
While we don't like Google apps, some people feel that they need them to leverage the full experience of their Android devices. We believe people should be free to do what they want with their devices. So installing them is supported as well. @@ -122,44 +121,149 @@
Of course, there are other things that can go wrong. If non of the above helps, write an email or raise an issue on GitHub. +
Of course, there are other things that can go wrong. If none of the above helps, write an e-mail or raise an issue on GitHub.
First of all, this tool will not help you bypass any vender locked bootloaders in non-official ways.
-- Devices by Samsung, Google and Fairphone make it fairly easy to unlock the bootloader and receive good support - in the installer. +
First of all, this tool will not help you bypass any vendor locked bootloaders in non-official ways.
+Devices by Samsung, Google, OnePlus, Fairphone and others make it relatively easy to unlock the + bootloader and get good support in the installer.
+For some devices, it is necessary to unlock the bootloader manually. You usually need to create an account on + the manufacturer's website, wait for a certain time and obtain a code from there. OpenAndroidInstaller will + try to guide you as far as possible. These vendors include Sony, Motorola and Xiaomi amongst others.
+Other phone manufacturers no longer allow you to unlock the bootloader. Nothing can be done if you have not + unlocked your device in time. These manufacturers include Huawei, Honor, LG and ASUS. Support for these + manufacturers will always be very limited.
- Some devices with require manual steps to unlock the bootloader. In general you will need to create an account - at a vendor website and receive some code from there. OpenAndroidInstaller will try to guide you as far as - possible. These vendors include Sony, Motorola, Xiaomi and OnePlus among others. + Here is a brief overview of the bootloader policies of some of the most popular brands (may be + incomplete/inaccurate):
-- Other phone vendors stops allowing to unlock the bootloader all together. There is nothing to be done if you - didn't unlock your device in time. These vendors include Huawei and LG among others. Support for these vendors - will always be very limited. +
Brand | +Flashing tool | +Unlocking Method | +Loss of guarantee* | +Supported models | +
---|---|---|---|---|
Fastboot | +OEM/Flashing unlock | +No | +Pixel and Nexus | +|
Samsung | +ODIN or Heimdall | +Download mode | +Yes | +Galaxy S and A series (Increasing complexity on and after S10) |
+
OnePlus | +Fastboot | +OEM/Flashing unlock | +No | +All | +
Fairphone | +Fastboot | +Code
+ from manufacturer (Already unlocked until FP2) |
+ No | +All | +
Xiaomi | +Fastboot | +Mi Unlock Tool | +Yes | +Mi 4c, Redmi Note 3, Mi Note Pro, Redmi 3, Mi 4S, Mi 5 and all devices from 2016 onwards | +
Motorola | +Fastboot | +Code from + manufacturer | +Yes | +Almost all except carrier specific models (e.g. Verizon, AT&T, Tracfone) and + certain other models | +
Sony | +Fastboot | +Code + from manufacturer | +Yes | +All except XQ-CT62 (1Ⅳ US) & XQ-CQ62 (5Ⅳ US) | +
Huawei | +Fastboot | +No official codes since 2017/2018 (Unofficial methods available) |
+ Yes | +Mate 9/9Pro, P10/P10Plus | +
Honor | +Fastboot | +No official codes since 2017/2018 (Unofficial methods available) |
+ Yes | +Honor 8 | +
LG | +Fastboot | +Impossible since December 2021 | +Yes | ++ |
ASUS | +Fastboot | +Impossible since May 2023 (ASUS unlocking App) | +Yes | +
* In the EU you won't loose your standard 2 years of the warranty when you unlock your + bootloader, flash your device or root it. (source)
+You can find more information about the brands and their bootloader policies here (in French).
+In some virus scanners the OpenAndroidInstaller shows up as a virus or trojan. This is a false positive. We
- explain the issue here.
- The code and build process of the distributed files is completely open source and can be found on github. So
+ explain the issue here:
+ The code and build process of the distributed files is completely open source and can be found on GitHub. So
people can verify that it's not malicious software.
The Installer is bundled and compiled python code made into an executable file. This is done with pyinstaller. + href="https://pyinstaller.org" rel="noopener" target="_blank">pyinstaller. As it turns out, false positive issues are known and people encounter them regularly.
For the flatpak, the logs are located in ~/.var/app/org.openandroidinstaller.OpenAndroidInstaller/data/openandroidinstaller.log
.
For the Flatpak, the logs are located in
+ ~/.var/app/org.openandroidinstaller.OpenAndroidInstaller/data/openandroidinstaller.log
.
+
If you are running the executable directly, the logs are located in the same directory as the executable.
Your feedback is processed in encrypted form by airform.io and if you provide an email address you might get an answer.
+Your feedback is processed in encrypted form by airform.io and if you provide an e-mail address you might get an answer.
Our data protection regulations can be found here. +
Our data protection regulations can be found here.
Comes packaged with all tools - like adb, fastboot and heimdall.
+ href="https://github.com/openandroidinstaller-dev/openandroidinstaller#tools" rel="noopener" + target="_blank">tools like adb, fastboot and heimdall.Demo: How to how to unlock the bootloader and install LineageOS.
- +Demo: How to how to unlock the bootloader and install + LineageOS.
Built-in support for {{ n_supported_devices }} + href="supported-devices.html">support for {{ n_supported_devices }} devices and an easy extension system.
Works on Windows, MacOS and Linux.
- @@ -142,7 +141,7 @@Note, that Ubuntu 22.04 can be booted - from a USB drive without installing it. + href="https://ubuntu.com/tutorials/try-ubuntu-before-you-install#1-getting-started" rel="noopener" + target="_blank">booted from a USB drive without installing it. This might be a simple solution if you face any compatibility issues.
Demo: How to install Addons like MicroG alongside LineageOS.
+Demo: How to install Addons like MicroG alongside + LineageOS.
The source code is hosted on GitHub. - A number of the issues are marked with the - "good first issue" label indicating - they are suitable for someone new to the OpenAndroidInstaller code base. + href="https://github.com/openandroidinstaller-dev/openandroidinstaller" rel="noopener" + target="_blank">GitHub. + A number of the issues are marked with the "good first issue" label indicating they are suitable for someone + new to the OpenAndroidInstaller code base.
Often there are pre-releases or specific features that need testing. What you can do:
There are currently two ways to support the project financially
-There are currently three ways to support the project financially:
+If you want to use a different method, please contact us.
Wir bitten Sie, sich regelmäßig über den Inhalt unserer Datenschutzerklärung zu informieren. Wir passen die @@ -146,7 +147,7 @@
Vendor | +Device Name | +CodeName | +Models | +Status | +
---|---|---|---|---|
Xiaomi | +Redmi Note 7 | +lavender | ++ | tested | +
Xiaomi | +Redmi 7A / 8 / 8A / 8A Dual | +Mi439 / pine / olive / olivelite / olivewood | ++ | tested | +
Xiaomi | +Redmi Note 8 / 8T | +ginkgo / willow | ++ | untested | +
Xiaomi | +Redmi 9A / 9C / 9AT / 9i / 9A Sport / 10A / 10A Sport | +garden / dandelion / blossom / angelican | ++ | tested | +
Xiaomi | +Mi 9T / Redmi K20 | +davinci | ++ | untested | +
Xiaomi | +Redmi K20 Pro / Mi 9T Pro | +raphael / raphaelin | ++ | untested | +
Xiaomi | +Redmi Note 9S / 9 Pro / 9 Pro Max / 10 Lite / Poco M2 pro | +miatoll / gram / curtana / excalibur / joyeuse | ++ | untested | +
Xiaomi | +Redmi Note 10S / 11SE / Poco M5S | +rosemary / maltose / secret /rosemary_p | ++ | untested | +
Xiaomi | +Poco X3 Pro | +vayu | ++ | untested | +
Xiaomi | +12 | +cupid | ++ | untested | +