From cfd79f06e166e80ba308f1a3796513d388e36591 Mon Sep 17 00:00:00 2001 From: Eideen Date: Tue, 23 Apr 2019 22:19:09 +0200 Subject: [PATCH 1/2] add download xz file save (40%) and use sha256 --- settings.py | 6 ++++-- updater.py | 54 ++++++++++++++++++++++++++++++++++++++++++++++------- 2 files changed, 51 insertions(+), 9 deletions(-) diff --git a/settings.py b/settings.py index 7dfcb83..8554105 100644 --- a/settings.py +++ b/settings.py @@ -13,8 +13,10 @@ gtgithubapiurl = 'https://api.github.com/repos/go-gitea/gitea/releases/latest' # Gitea System gtsystem = 'linux-amd64' # Name and Path of gitea file -gtfile = '/home/git/gitea' +gtfile = '/usr/local/bin/gitea' +# tmp Name and Path of gitea file +tmpdir = '/tmp/' # Build new version from source? build_from_source = None # Source directroy -source_dir = '/home/git/go/src/code.gitea.io/gitea' \ No newline at end of file +source_dir = '/home/git/go/src/code.gitea.io/gitea' diff --git a/updater.py b/updater.py index f0e95a3..ccd1d83 100644 --- a/updater.py +++ b/updater.py @@ -17,6 +17,7 @@ def download(url, file_name): # get request response = requests.get(url) # write to file + print ("writing file", file_name) file.write(response.content) # Function to build the new version from source @@ -36,18 +37,19 @@ def buildFromSource(tag): # Version from gitea site current_version = requests.get(settings.gtsite).json()['version'] - +print ("current_version =", current_version) # Get version tag from github and remove first char (v) github_version_tag = requests.get(settings.gtgithubapiurl).json()['tag_name'] - +print ("github_version_tag =", github_version_tag) # Get version from version tag github_version = github_version_tag[1:] - # Check if there is a new version if github_version > current_version: + # Stop systemd service - os.system("systemctl stop gitea.service") + print ("new version available, stopping service") + #os.system("systemctl stop gitea.service") # Should the new version be build from source? if settings.build_from_source: @@ -55,12 +57,50 @@ if github_version > current_version: buildFromSource(github_version_tag) else: - # Set download url - gtdownload = 'https://github.com/go-gitea/gitea/releases/download/'+github_version_tag+'/gitea-'+github_version+'-'+settings.gtsystem + ## main file + gtdownload = 'https://github.com/go-gitea/gitea/releases/download/'+github_version_tag+'/gitea-'+github_version+'-'+settings.gtsystem+'.xz' + print (gtdownload) + ## sha256 file + shadownload = 'https://github.com/go-gitea/gitea/releases/download/'+github_version_tag+'/gitea-'+github_version+'-'+settings.gtsystem+'.xz.sha256' + print (shadownload) # Download file - download(gtdownload, settings.gtfile) + + ## downloading sha + print ("downloading sha256 hashsum") + download(shadownload, settings.tmpdir+'gitea.xz.sha256') + ## downloading xz + print ("downloading", github_version_tag+'gitea.xz') + tmpxz = settings.tmpdir+'gitea-'+github_version+'-'+settings.gtsystem+'.xz' + download(gtdownload, tmpxz) + + # doing sha256 sum + os.chdir(settings.tmpdir) + #sha_value = os.system("sha256sum -c gitea.xz.sha256 > /dev/null") + + if os.system("sha256sum -c gitea.xz.sha256 > /dev/null") == 0: + print ("sha ok, extracting file to location") + # extracting download file + cmd = "xz -d "+tmpxz + print (cmd) + os.system(cmd) + # moving temp file to gtfile location + cmd = 'mv '+settings.tmpdir+'gitea-'+github_version+'-'+settings.gtsystem+' '+settings.gtfile + print (cmd) + os.system(cmd) + else: + print ("error") + quit() # Start systemd service + print ("starting gitea.service") os.system("systemctl start gitea.service") + + print ("update successfully") + + +else: + + #Print current version is uptodate + print ("current version is uptodate") From 01796aa02456efd8329185fc9bc3023d257bdc1d Mon Sep 17 00:00:00 2001 From: Eideen Date: Tue, 23 Apr 2019 22:35:26 +0200 Subject: [PATCH 2/2] add check for xz --- updater.py | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/updater.py b/updater.py index ccd1d83..f532601 100644 --- a/updater.py +++ b/updater.py @@ -10,6 +10,7 @@ import settings import requests import os + # Function to download a file def download(url, file_name): # open in binary mode @@ -35,6 +36,18 @@ def buildFromSource(tag): # Move binary os.system("mv gitea "+settings.gtfile) +def is_tool(name): + ##Check whether `name` is on PATH and marked as executable. + + # from whichcraft import which + from shutil import which + + return which(name) is not None + +if not is_tool("xz"): + print ("missing dependency: xz") + quit() + # Version from gitea site current_version = requests.get(settings.gtsite).json()['version'] print ("current_version =", current_version)