Последняя активность 1749444410

roundcubeupdate.py Исходник
1# How to run
2# python3 roundcubeupdate.py
3#
4# You may need to run as root or www-data
5#
6# sudo -u www-data python3 roundcubeupdate.py
7#
8# sudo python3 roundcubeupdate.py
9
10from tqdm import tqdm
11import requests
12import sys
13import os
14import tarfile
15print("Checking latest version...")
16req = requests.get("https://api.github.com/repos/roundcube/roundcubemail/releases/latest").json()
17latest = req["tag_name"]
18download = ""
19for asset in req["assets"]:
20 if asset["name"] == f"roundcubemail-{latest}-complete.tar.gz":
21 download = asset["browser_download_url"]
22
23print(f"Latest: {latest}")
24print(f"Download Exists: {download != ''}")
25
26try:
27 current = open("/var/www/roundcube/index.php").read().split("Version ")[1].split(" ")[0]
28except:
29 current = 0
30print(f"Current: {current if current != 0 else 'Not installed!'}")
31if current == 0:
32 sys.exit(1)
33if current == latest:
34 print("No need to update.")
35 sys.exit()
36
37print("Downloading latest version...")
38
39response = requests.get(download, stream=True)
40
41total_size = int(response.headers.get("content-length", 0))
42block_size = 1024
43
44os.mkdir("roundcube.part")
45
46with tqdm(total=total_size, unit="B", unit_scale=True, leave=False) as progress_bar:
47 with open("roundcube.part/rc.tar.gz", "wb") as file:
48 for data in response.iter_content(block_size):
49 progress_bar.update(len(data))
50 file.write(data)
51
52file = tarfile.open('roundcube.part/rc.tar.gz')
53file.extractall('./roundcube.part')
54file.close()
55
56os.chdir("roundcube.part")
57os.system(f"./roundcubemail-{latest}/bin/installto.sh -y /var/www/roundcube")
58os.chdir("..")
59os.system("rm -r roundcube.part")
60