From 47bb8ec687d44bbff730538fc7361e7e64ac48b7 Mon Sep 17 00:00:00 2001 From: 23rd <23rd@vivaldi.net> Date: Sat, 5 Sep 2020 02:49:59 +0300 Subject: [PATCH] Added Github Action that updates user-agent for DNS. --- .github/workflows/user_agent_updater.yml | 90 ++++++++++++++++++++++++ 1 file changed, 90 insertions(+) create mode 100644 .github/workflows/user_agent_updater.yml diff --git a/.github/workflows/user_agent_updater.yml b/.github/workflows/user_agent_updater.yml new file mode 100644 index 000000000..44c2515af --- /dev/null +++ b/.github/workflows/user_agent_updater.yml @@ -0,0 +1,90 @@ +name: User-agent updater. + +on: + repository_dispatch: + types: ["Restart user_agent_updater workflow."] + schedule: + # At 00:00 on day-of-month 1. + - cron: '0 0 1 * *' + +jobs: + User-agent: + runs-on: ubuntu-latest + + env: + code_file: "Telegram/SourceFiles/mtproto/details/mtproto_domain_resolver.cpp" + skip: "0" + + steps: + - name: Clone. + if: env.skip == '0' + uses: actions/checkout@v2 + + - name: Write a new version of Google Chrome to the user-agent for DNS. + if: env.skip == '0' + shell: python + run: | + import subprocess, os, re; + + regExpVersion = "[0-9]+.[0-9]+.[0-9]+.[0-9]+"; + chrome = "Chrome/"; + + def newVersion(): + output = subprocess.check_output(["google-chrome", "--version"]); + version = re.search(regExpVersion, output); + if not version: + print("Can't find a Chrome version."); + exit(); + return version.group(0); + + newChromeVersion = newVersion(); + print(newChromeVersion); + + def writeUserAgent(): + p = os.environ['code_file']; + w = open(p, "r"); + content = w.read(); + w.close(); + + regExpChrome = chrome + regExpVersion; + + version = re.search(regExpChrome, content); + if not version: + print("Can't find an user-agent in the code."); + exit(); + content = re.sub(regExpChrome, chrome + newChromeVersion, content); + + w = open(p, "w"); + w.write(content); + + print("::set-env name=ChromeVersion::" + newChromeVersion); + + writeUserAgent(); + + - name: Push to the current branch. + if: env.skip == '0' && env.ChromeVersion != '' + run: | + token=${{ secrets.TOKEN_FOR_MASTER_UPDATER }} + if [ -z "${token}" ]; then + echo "Token is unset. Nothing to do." + exit 0 + fi + + url=https://x-access-token:$token@github.com/$GITHUB_REPOSITORY + + git config --local user.email "action@github.com" + git config --local user.name "GitHub Action" + + git diff > git_diff.txt + if [[ ! -s git_diff.txt ]]; then + echo "Nothing to commit." + exit 0 + fi + + git add $code_file + git commit -m "Update User-Agent for DNS to Chrome $ChromeVersion." + + git remote set-url origin $url + + git push origin HEAD:$GITHUB_REF + echo "Done!"