Compare commits

...

2 Commits

3 changed files with 40 additions and 7 deletions

View File

@ -6,6 +6,7 @@ This too has several functions:
## To-Do
* Auto-clean files/tmp/ folder
* Prettier code
* Only update once per day, except if `-u` `--update`
* Adding more services to listen to ?

View File

@ -19,12 +19,21 @@
},
"githubreleasesync": {
"carlospolop/PEASS-ng": {
"local_version": "20220417",
"local_version": "20220424",
"files": [
"linpeas.sh",
"winPEAS.bat",
"winPEASany.exe"
]
},
"jpillora/chisel": {
"local_version": "v1.7.7",
"files": [
{
"filename": "chisel_{short_version}_windows_amd64.gz",
"binpath": "chisel.exe"
}
]
}
},
"ncat": {

View File

@ -9,6 +9,7 @@ import subprocess
from io import BytesIO
import zipfile
import rpmfile
import gzip
def compute_file_hash(filepath):
@ -53,6 +54,9 @@ def extract_bin(archtype, binpath, destpath, content):
with open(destpath, 'wb') as f:
f.write(fd.read())
elif archtype == 'gz':
with open(destpath, 'wb') as f:
f.write(gzip.decompress(content))
ioobj.close()
@ -83,18 +87,34 @@ def githubmastersync(reponame, filepaths, credz):
def githubreleasesync(reponame, repoinfo, credz):
local_version = repoinfo['local_version']
last_version = get_last_release_info(reponame, credz)
short_version = last_version.replace('v', '')
filenames = repoinfo['files']
for filename in filenames:
localfile = pathlib.Path('files').joinpath(pathlib.Path(filename).name)
if isinstance(filename, dict):
binpath = filename['binpath']
filename = filename['filename']
filename = filename.replace('{last_version}', last_version).replace('{short_version}', short_version)
localfile = pathlib.Path('files').joinpath(pathlib.Path(binpath).name)
if filename.endswith('.gz'):
is_gz = True
print(f" * {localfile} ", end='')
else:
filename = filename.replace('{last_version}', last_version).replace('{short_version}', short_version)
localfile = pathlib.Path('files').joinpath(pathlib.Path(filename).name)
print(f" * {localfile} ", end='')
urldl = f'https://github.com/{reponame}/releases/download/{last_version}/{filename}'
print(f" * {localfile} ", end='')
if not localfile.exists():
content = requests.get(urldl, auth=credz).content
with open(localfile, 'wb') as f:
f.write(content)
if is_gz:
extract_bin('gz', binpath, localfile, content)
else:
with open(localfile, 'wb') as f:
f.write(content)
print('-> Installed! ;)')
else:
@ -103,8 +123,11 @@ def githubreleasesync(reponame, repoinfo, credz):
else:
content = requests.get(urldl, auth=credz).content
with open(localfile, 'wb') as f:
f.write(content)
if is_gz:
extract_bin('gz', binpath, localfile, content)
else:
with open(localfile, 'wb') as f:
f.write(content)
print('-> Updated!')
with open("config.json", "r") as jsonfile: