Merge pull request #14 from Neocky/dev/v1.3.2

Dev/v1.3.2
This commit is contained in:
Neocky 2021-03-27 19:02:21 +01:00 committed by GitHub
commit aceca0dec3
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
8 changed files with 181 additions and 161 deletions

View File

@ -6,52 +6,49 @@ from pathlib import Path
from utils.consoleoutput import oColors from utils.consoleoutput import oColors
def checkConfig(): class configurationValues:
currentFolder = os.getcwd() def __init__(self):
configAvailable = os.path.isfile("config.ini") config = configparser.ConfigParser()
config.sections()
config.read("config.ini")
localPluginFolder = config['General']['LocalPluginFolder']
self.pathToPluginFolder = Path(config['General']['PathToPluginFolder'])
seperateDownloadPath = config['General']['SeperateDownloadPath']
self.pathToSeperateDownloadPath = Path(config['General']['PathToSeperateDownloadPath'])
self.sftp_server = config['SFTP - Remote Server']['Server']
self.sftp_user = config['SFTP - Remote Server']['Username']
self.sftp_password = config['SFTP - Remote Server']['Password']
sftp_port = config['SFTP - Remote Server']['Port']
self.sftp_folderPath = config['SFTP - Remote Server']['PluginFolderOnServer']
sftp_seperateDownloadPath = config['SFTP - Remote Server']['SeperateDownloadPath']
self.sftp_pathToSeperateDownloadPath = config['SFTP - Remote Server']['PathToSeperateDownloadPath']
self.sftp_port = int(sftp_port)
if localPluginFolder == 'True':
self.localPluginFolder = True
else:
self.localPluginFolder = False
if seperateDownloadPath == 'True':
self.seperateDownloadPath = True
else:
self.seperateDownloadPath = False
if sftp_seperateDownloadPath == 'True':
self.sftp_seperateDownloadPath = True
else:
self.sftp_seperateDownloadPath = False
def checkConfig():
configAvailable = os.path.isfile("config.ini")
if not configAvailable: if not configAvailable:
createConfig() createConfig()
print(oColors.brightRed + "Config created. Edit config before executing again!" + oColors.standardWhite) print(oColors.brightRed + "Config created. Edit config before executing again!" + oColors.standardWhite)
input("Press any key + enter to exit...") input("Press any key + enter to exit...")
sys.exit() sys.exit()
class configValues:
config = configparser.ConfigParser()
config.sections()
config.read("config.ini")
localPluginFolder = config['General']['LocalPluginFolder']
pathToPluginFolder = Path(config['General']['PathToPluginFolder'])
seperateDownloadPath = config['General']['SeperateDownloadPath']
pathToSeperateDownloadPath = Path(config['General']['PathToSeperateDownloadPath'])
sftp_server = config['SFTP - Remote Server']['Server']
sftp_user = config['SFTP - Remote Server']['Username']
sftp_password = config['SFTP - Remote Server']['Password']
sftp_port = config['SFTP - Remote Server']['Port']
sftp_folderPath = config['SFTP - Remote Server']['PluginFolderOnServer']
sftp_seperateDownloadPath = config['SFTP - Remote Server']['SeperateDownloadPath']
sftp_pathToSeperateDownloadPath = config['SFTP - Remote Server']['PathToSeperateDownloadPath']
sftp_port = int(sftp_port)
if localPluginFolder == 'True':
localPluginFolder = True
else:
localPluginFolder = False
if seperateDownloadPath == 'True':
seperateDownloadPath = True
else:
seperateDownloadPath = False
if sftp_seperateDownloadPath == 'True':
sftp_seperateDownloadPath = True
else:
sftp_seperateDownloadPath = False
os.chdir(currentFolder)
return configValues
def createConfig(): def createConfig():
config = configparser.ConfigParser(allow_no_value=True) config = configparser.ConfigParser(allow_no_value=True)

View File

@ -2,7 +2,7 @@ import sys
from utils.consoleoutput import oColors from utils.consoleoutput import oColors
from utils.utilities import getHelp, getCommandHelp from utils.utilities import getHelp, getCommandHelp
from handlers.handle_config import checkConfig from handlers.handle_config import configurationValues
from plugin.plugin_downloader import searchPackage, getSpecificPackage from plugin.plugin_downloader import searchPackage, getSpecificPackage
from plugin.plugin_updatechecker import updateInstalledPackage, checkInstalledPackage from plugin.plugin_updatechecker import updateInstalledPackage, checkInstalledPackage
from plugin.plugin_remover import removePlugin from plugin.plugin_remover import removePlugin
@ -30,21 +30,22 @@ def createInputLists():
def handleInput(inputCommand, inputSelectedObject, inputParams): def handleInput(inputCommand, inputSelectedObject, inputParams):
configValues = configurationValues()
while True: while True:
if inputCommand == 'get': if inputCommand == 'get':
if inputSelectedObject.isdigit(): if inputSelectedObject.isdigit():
if not checkConfig().localPluginFolder: if not configValues.localPluginFolder:
if checkConfig().sftp_seperateDownloadPath is True: if configValues.sftp_seperateDownloadPath is True:
pluginPath = checkConfig().sftp_pathToSeperateDownloadPath pluginPath = configValues.sftp_pathToSeperateDownloadPath
else: else:
pluginPath = checkConfig().sftp_folderPath pluginPath = configValues.sftp_folderPath
getSpecificPackage(inputSelectedObject, pluginPath, inputParams) getSpecificPackage(inputSelectedObject, pluginPath, inputParams)
break break
else: else:
if checkConfig().seperateDownloadPath is True: if configValues.seperateDownloadPath is True:
pluginPath = checkConfig().pathToSeperateDownloadPath pluginPath = configValues.pathToSeperateDownloadPath
else: else:
pluginPath = checkConfig().pathToPluginFolder pluginPath = configValues.pathToPluginFolder
getSpecificPackage(inputSelectedObject, pluginPath, inputParams) getSpecificPackage(inputSelectedObject, pluginPath, inputParams)
break break
else: else:

View File

@ -5,18 +5,11 @@ from pathlib import Path
from utils.consoleoutput import oColors from utils.consoleoutput import oColors
from utils.web_request import doAPIRequest from utils.web_request import doAPIRequest
from utils.utilities import createTempPluginFolder, deleteTempPluginFolder from utils.utilities import createTempPluginFolder, deleteTempPluginFolder, calculateFileSizeKb, calculateFileSizeMb
from handlers.handle_config import checkConfig from handlers.handle_config import configurationValues
from handlers.handle_sftp import sftp_upload_file, sftp_cdPluginDir, createSFTPConnection from handlers.handle_sftp import sftp_upload_file, sftp_cdPluginDir, createSFTPConnection
def calculateFileSize(downloadFileSize):
fileSizeDownload = int(downloadFileSize)
fileSizeKb = fileSizeDownload / 1024
roundedFileSize = round(fileSizeKb, 2)
return roundedFileSize
def handleRegexPackageName(packageNameFull): def handleRegexPackageName(packageNameFull):
packageNameFull2 = packageNameFull packageNameFull2 = packageNameFull
# trims the part of the package that has for example "[1.1 Off]" in it # trims the part of the package that has for example "[1.1 Off]" in it
@ -58,6 +51,7 @@ def getVersionName(packageId, versionId):
def searchPackage(ressourceName): def searchPackage(ressourceName):
configValues = configurationValues()
url = f"https://api.spiget.org/v2/search/resources/{ressourceName}?field=name&sort=-downloads" url = f"https://api.spiget.org/v2/search/resources/{ressourceName}?field=name&sort=-downloads"
packageName = doAPIRequest(url) packageName = doAPIRequest(url)
i = 1 i = 1
@ -78,19 +72,20 @@ def searchPackage(ressourceName):
if ressourceSelected != 0: if ressourceSelected != 0:
ressourceSelected = ressourceSelected - 1 ressourceSelected = ressourceSelected - 1
ressourceId = packageName[ressourceSelected]["id"] ressourceId = packageName[ressourceSelected]["id"]
if not checkConfig().localPluginFolder: if not configValues.localPluginFolder:
try: try:
getSpecificPackage(ressourceId, checkConfig().sftp_folderPath) getSpecificPackage(ressourceId, configValues.sftp_folderPath)
except HTTPError as err: except HTTPError as err:
print(oColors.brightRed + f"Error: {err.code} - {err.reason}" + oColors.standardWhite) print(oColors.brightRed + f"Error: {err.code} - {err.reason}" + oColors.standardWhite)
else: else:
try: try:
getSpecificPackage(ressourceId, checkConfig().pathToPluginFolder) getSpecificPackage(ressourceId, configValues.pathToPluginFolder)
except HTTPError as err: except HTTPError as err:
print(oColors.brightRed + f"Error: {err.code} - {err.reason}" + oColors.standardWhite) print(oColors.brightRed + f"Error: {err.code} - {err.reason}" + oColors.standardWhite)
def downloadSpecificVersion(ressourceId, downloadPath, versionID='latest'): def downloadSpecificVersion(ressourceId, downloadPath, versionID='latest'):
configValues = configurationValues()
if versionID != 'latest': if versionID != 'latest':
#url = f"https://spigotmc.org/resources/{ressourceId}/download?version={versionID}" #url = f"https://spigotmc.org/resources/{ressourceId}/download?version={versionID}"
print(oColors.brightRed + "Sorry but specific version downloads aren't supported because of cloudflare protection. :(" + oColors.standardWhite) print(oColors.brightRed + "Sorry but specific version downloads aren't supported because of cloudflare protection. :(" + oColors.standardWhite)
@ -102,16 +97,22 @@ def downloadSpecificVersion(ressourceId, downloadPath, versionID='latest'):
remotefile = urllib.request.urlopen(url) remotefile = urllib.request.urlopen(url)
filesize = remotefile.info()['Content-Length'] filesize = remotefile.info()['Content-Length']
urllib.request.urlretrieve(url, downloadPath) urllib.request.urlretrieve(url, downloadPath)
filesizeData = calculateFileSize(filesize) filesize = int(filesize)
print(f"Downloadsize: {filesizeData} KB") print(" ", end='')
print(f"File downloaded here: {downloadPath}") if filesize >= 1000000:
if not checkConfig().localPluginFolder: filesizeData = calculateFileSizeMb(filesize)
print("Downloaded " + (str(filesizeData)).rjust(9) + f" MB here {downloadPath}")
else:
filesizeData = calculateFileSizeKb(filesize)
print("Downloaded " + (str(filesizeData)).rjust(9) + f" KB here {downloadPath}")
if not configValues.localPluginFolder:
sftpSession = createSFTPConnection() sftpSession = createSFTPConnection()
sftp_upload_file(sftpSession, downloadPath) sftp_upload_file(sftpSession, downloadPath)
def getSpecificPackage(ressourceId, downloadPath, inputPackageVersion='latest'): def getSpecificPackage(ressourceId, downloadPath, inputPackageVersion='latest'):
if checkConfig().localPluginFolder == False: configValues = configurationValues()
if configValues.localPluginFolder == False:
downloadPath = createTempPluginFolder() downloadPath = createTempPluginFolder()
url = f"https://api.spiget.org/v2/resources/{ressourceId}" url = f"https://api.spiget.org/v2/resources/{ressourceId}"
packageDetails = doAPIRequest(url) packageDetails = doAPIRequest(url)
@ -121,13 +122,13 @@ def getSpecificPackage(ressourceId, downloadPath, inputPackageVersion='latest'):
packageVersion = getVersionName(ressourceId, versionId) packageVersion = getVersionName(ressourceId, versionId)
packageDownloadName = f"{packageNameNew}-{packageVersion}.jar" packageDownloadName = f"{packageNameNew}-{packageVersion}.jar"
downloadPackagePath = Path(f"{downloadPath}/{packageDownloadName}") downloadPackagePath = Path(f"{downloadPath}/{packageDownloadName}")
if checkConfig().localPluginFolder: if configValues.localPluginFolder:
if inputPackageVersion is None or inputPackageVersion == 'latest': if inputPackageVersion is None or inputPackageVersion == 'latest':
downloadSpecificVersion(ressourceId=ressourceId, downloadPath=downloadPackagePath) downloadSpecificVersion(ressourceId=ressourceId, downloadPath=downloadPackagePath)
else: else:
downloadSpecificVersion(ressourceId, downloadPackagePath, versionId) downloadSpecificVersion(ressourceId, downloadPackagePath, versionId)
if not checkConfig().localPluginFolder: if not configValues.localPluginFolder:
if inputPackageVersion is None or inputPackageVersion == 'latest': if inputPackageVersion is None or inputPackageVersion == 'latest':
downloadSpecificVersion(ressourceId=ressourceId, downloadPath=downloadPackagePath) downloadSpecificVersion(ressourceId=ressourceId, downloadPath=downloadPackagePath)
deleteTempPluginFolder(downloadPath) deleteTempPluginFolder(downloadPath)

View File

@ -3,18 +3,19 @@ import re
from pathlib import Path from pathlib import Path
from utils.consoleoutput import oColors from utils.consoleoutput import oColors
from handlers.handle_config import checkConfig from handlers.handle_config import configurationValues
from handlers.handle_sftp import createSFTPConnection, sftp_listAll from handlers.handle_sftp import createSFTPConnection, sftp_listAll
from plugin.plugin_updatechecker import getFileName, getFileVersion, getInstalledPlugin, createPluginList from plugin.plugin_updatechecker import getFileName, getFileVersion, getInstalledPlugin, createPluginList
def removePlugin(pluginToRemove): def removePlugin(pluginToRemove):
configValues = configurationValues()
createPluginList() createPluginList()
if not checkConfig().localPluginFolder: if not configValues.localPluginFolder:
sftp = createSFTPConnection() sftp = createSFTPConnection()
pluginList = sftp_listAll(sftp) pluginList = sftp_listAll(sftp)
else: else:
pluginList = os.listdir(checkConfig().pathToPluginFolder) pluginList = os.listdir(configValues.pathToPluginFolder)
i = 0 i = 0
try: try:
for plugin in pluginList: for plugin in pluginList:
@ -28,8 +29,8 @@ def removePlugin(pluginToRemove):
if pluginToRemove == pluginIdStr or re.search(pluginToRemove, fileName, re.IGNORECASE): if pluginToRemove == pluginIdStr or re.search(pluginToRemove, fileName, re.IGNORECASE):
print(f"Removing: {fileName}") print(f"Removing: {fileName}")
if not checkConfig().localPluginFolder: if not configValues.localPluginFolder:
pluginPath = checkConfig().sftp_folderPath pluginPath = configValues.sftp_folderPath
pluginPath = f"{pluginPath}/{plugin}" pluginPath = f"{pluginPath}/{plugin}"
sftp = createSFTPConnection() sftp = createSFTPConnection()
sftp.remove(pluginPath) sftp.remove(pluginPath)
@ -37,7 +38,7 @@ def removePlugin(pluginToRemove):
i += 1 i += 1
break break
else: else:
pluginPath = checkConfig().pathToPluginFolder pluginPath = configValues.pathToPluginFolder
pluginPath = Path(f"{pluginPath}/{plugin}") pluginPath = Path(f"{pluginPath}/{plugin}")
os.remove(pluginPath) os.remove(pluginPath)
print(f"Removed: {fileName}") print(f"Removed: {fileName}")

View File

@ -8,7 +8,7 @@ from rich.progress import track
from utils.consoleoutput import oColors from utils.consoleoutput import oColors
from utils.web_request import doAPIRequest from utils.web_request import doAPIRequest
from handlers.handle_config import checkConfig from handlers.handle_config import configurationValues
from handlers.handle_sftp import createSFTPConnection, sftp_listAll from handlers.handle_sftp import createSFTPConnection, sftp_listAll
from plugin.plugin_downloader import getSpecificPackage from plugin.plugin_downloader import getSpecificPackage
@ -64,10 +64,11 @@ def compareVersions(plugin_latest_version, pluginVersion):
def eggCrackingJar(localJarFileName): def eggCrackingJar(localJarFileName):
if not checkConfig().localPluginFolder: configValues = configurationValues()
pluginPath = checkConfig().sftp_folderPath if not configValues.localPluginFolder:
pluginPath = configValues.sftp_folderPath
else: else:
pluginPath = checkConfig().pathToPluginFolder pluginPath = configValues.pathToPluginFolder
pathToPluginJar = Path(f"{pluginPath}/{localJarFileName}") pathToPluginJar = Path(f"{pluginPath}/{localJarFileName}")
pluginVersion = '' pluginVersion = ''
with ZipFile(pathToPluginJar, 'r') as pluginJar: with ZipFile(pathToPluginJar, 'r') as pluginJar:
@ -86,20 +87,21 @@ def eggCrackingJar(localJarFileName):
def checkInstalledPackage(inputSelectedObject="all"): def checkInstalledPackage(inputSelectedObject="all"):
configValues = configurationValues()
createPluginList() createPluginList()
if not checkConfig().localPluginFolder: if not configValues.localPluginFolder:
sftp = createSFTPConnection() sftp = createSFTPConnection()
pluginList = sftp_listAll(sftp) pluginList = sftp_listAll(sftp)
else: else:
pluginList = os.listdir(checkConfig().pathToPluginFolder) pluginList = os.listdir(configValues.pathToPluginFolder)
i = 0 i = 0
oldPackages = 0 oldPlugins = 0
print(oColors.brightBlack + f"Checking: {inputSelectedObject}" + oColors.standardWhite) print(oColors.brightBlack + f"Checking: {inputSelectedObject}" + oColors.standardWhite)
print("┌─────┬────────────────────────────────┬──────────────┬───────────┬───────────────────┐") print("┌─────┬────────────────────────────────┬──────────────┬──────────────┬───────────────────┐")
print("│ No. │ Name │ Installed V. │ Latest V. │ Update available │") print("│ No. │ Name │ Installed V. │ Latest V. │ Update available │")
print("└─────┴────────────────────────────────┴──────────────┴───────────┴───────────────────┘") print("└─────┴────────────────────────────────┴──────────────┴──────────────┴───────────────────┘")
try: try:
for plugin in track(pluginList, description="Checking for updates" ,transient=True, complete_style="cyan"): for plugin in track(pluginList, description="Checking for updates" ,transient=True, complete_style="bright_yellow"):
try: try:
fileName = getFileName(plugin) fileName = getFileName(plugin)
fileVersion = getFileVersion(plugin) fileVersion = getFileVersion(plugin)
@ -127,42 +129,45 @@ def checkInstalledPackage(inputSelectedObject="all"):
pluginIsOutdated = 'N/A' pluginIsOutdated = 'N/A'
if pluginIsOutdated == True: if pluginIsOutdated == True:
oldPackages = oldPackages + 1 oldPlugins = oldPlugins + 1
if inputSelectedObject != "*" and inputSelectedObject != "all": if inputSelectedObject != "*" and inputSelectedObject != "all":
if inputSelectedObject == pluginIdStr or re.search(inputSelectedObject, fileName, re.IGNORECASE): if inputSelectedObject == pluginIdStr or re.search(inputSelectedObject, fileName, re.IGNORECASE):
if pluginLatestVersion == 'N/A': if pluginLatestVersion == 'N/A':
print(oColors.brightBlack + f" [{1}]".ljust(8), end='') print(oColors.brightBlack + f" [{1}]".rjust(6), end='')
else: else:
print(f" [{1}]".ljust(8), end='') print(f" [{1}]".rjust(6), end='')
print(" ", end='')
print(f"{fileName}".ljust(33), end='') print(f"{fileName}".ljust(33), end='')
print(f"{fileVersion}".ljust(15), end='') print(f"{fileVersion}".ljust(15), end='')
print(f"{pluginLatestVersion}".ljust(12), end='') print(f"{pluginLatestVersion}".ljust(15), end='')
print(f" {pluginIsOutdated}".ljust(5) + oColors.standardWhite) print(f"{pluginIsOutdated}".ljust(5) + oColors.standardWhite)
break break
else: else:
if pluginLatestVersion == 'N/A': if pluginLatestVersion == 'N/A':
print(oColors.brightBlack + f" [{i+1}]".ljust(8), end='') print(oColors.brightBlack + f" [{i+1}]".rjust(6), end='')
else: else:
print(f" [{i+1}]".ljust(8), end='') print(f" [{i+1}]".rjust(6), end='')
print(" ", end='')
print(f"{fileName}".ljust(33), end='') print(f"{fileName}".ljust(33), end='')
print(f"{fileVersion}".ljust(15), end='') print(f"{fileVersion}".ljust(15), end='')
print(f"{pluginLatestVersion}".ljust(12), end='') print(f"{pluginLatestVersion}".ljust(15), end='')
print(f" {pluginIsOutdated}".ljust(5) + oColors.standardWhite) print(f"{pluginIsOutdated}".ljust(5) + oColors.standardWhite)
i += 1 i += 1
except TypeError: except TypeError:
print(oColors.brightRed + "Error occured: Aborted checking for updates." + oColors.standardWhite) print(oColors.brightRed + "Error occured: Aborted checking for updates." + oColors.standardWhite)
print(oColors.brightYellow + f"Old packages: [{oldPackages}/{i}]" + oColors.standardWhite) print(oColors.brightYellow + f"Outdated plugins: [{oldPlugins}/{i}]" + oColors.standardWhite)
def updateInstalledPackage(inputSelectedObject='all'): def updateInstalledPackage(inputSelectedObject='all'):
configValues = configurationValues()
createPluginList() createPluginList()
if not checkConfig().localPluginFolder: if not configValues.localPluginFolder:
sftp = createSFTPConnection() sftp = createSFTPConnection()
pluginList = sftp_listAll(sftp) pluginList = sftp_listAll(sftp)
else: else:
pluginList = os.listdir(checkConfig().pathToPluginFolder) pluginList = os.listdir(configValues.pathToPluginFolder)
i = 0 i = 0
pluginsUpdated = 0 pluginsUpdated = 0
indexNumberUpdated = 0 indexNumberUpdated = 0
@ -171,7 +176,7 @@ def updateInstalledPackage(inputSelectedObject='all'):
print("│ No. │ Name │ Old V. │ New V. │") print("│ No. │ Name │ Old V. │ New V. │")
print("└─────┴────────────────────────────────┴────────────┴──────────┘") print("└─────┴────────────────────────────────┴────────────┴──────────┘")
try: try:
for plugin in track(pluginList, description="Updating" ,transient=True, complete_style="red"): for plugin in track(pluginList, description="Updating" ,transient=True, complete_style="bright_magenta"):
try: try:
fileName = getFileName(plugin) fileName = getFileName(plugin)
fileVersion = getFileVersion(plugin) fileVersion = getFileVersion(plugin)
@ -189,24 +194,25 @@ def updateInstalledPackage(inputSelectedObject='all'):
continue continue
if inputSelectedObject == pluginIdStr or re.search(inputSelectedObject, fileName, re.IGNORECASE): if inputSelectedObject == pluginIdStr or re.search(inputSelectedObject, fileName, re.IGNORECASE):
if INSTALLEDPLUGINLIST[i][3] == True: if INSTALLEDPLUGINLIST[i][3] == True:
print(f" [{indexNumberUpdated+1}]".ljust(8), end='') print(f" [{indexNumberUpdated+1}]".rjust(6), end='')
print(" ", end='')
print(f"{fileName}".ljust(33), end='') print(f"{fileName}".ljust(33), end='')
print(f"{fileVersion}".ljust(8), end='') print(f"{fileVersion}".ljust(13), end='')
print(" ", end='') #print(" ", end='')
print(f"{latestVersion}".ljust(8)) print(f"{latestVersion}".ljust(13))
if not checkConfig().localPluginFolder: if not configValues.localPluginFolder:
if checkConfig().sftp_seperateDownloadPath is True: if configValues.sftp_seperateDownloadPath is True:
pluginPath = checkConfig().sftp_pathToSeperateDownloadPath pluginPath = configValues.sftp_pathToSeperateDownloadPath
else: else:
pluginPath = checkConfig().sftp_folderPath pluginPath = configValues.sftp_folderPath
pluginPath = Path(f"{pluginPath}/{plugin}") pluginPath = Path(f"{pluginPath}/{plugin}")
sftp = createSFTPConnection() sftp = createSFTPConnection()
indexNumberUpdated += 1 indexNumberUpdated += 1
pluginsUpdated += 1 pluginsUpdated += 1
try: try:
getSpecificPackage(pluginId, checkConfig().sftp_folderPath) getSpecificPackage(pluginId, configValues.sftp_folderPath)
if checkConfig().sftp_seperateDownloadPath is False: if configValues.sftp_seperateDownloadPath is False:
sftp.remove(pluginPath) sftp.remove(pluginPath)
except HTTPError as err: except HTTPError as err:
print(oColors.brightRed + f"Error: {err.code} - {err.reason}" + oColors.standardWhite) print(oColors.brightRed + f"Error: {err.code} - {err.reason}" + oColors.standardWhite)
@ -214,16 +220,16 @@ def updateInstalledPackage(inputSelectedObject='all'):
except FileNotFoundError: except FileNotFoundError:
print(oColors.brightRed + "Error: Old plugin file coulnd't be deleted" + oColors.standardWhite) print(oColors.brightRed + "Error: Old plugin file coulnd't be deleted" + oColors.standardWhite)
else: else:
if checkConfig().seperateDownloadPath is True: if configValues.seperateDownloadPath is True:
pluginPath = checkConfig().pathToSeperateDownloadPath pluginPath = configValues.pathToSeperateDownloadPath
else: else:
pluginPath = checkConfig().pathToPluginFolder pluginPath = configValues.pathToPluginFolder
pluginPath = Path(f"{pluginPath}/{plugin}") pluginPath = Path(f"{pluginPath}/{plugin}")
indexNumberUpdated += 1 indexNumberUpdated += 1
pluginsUpdated += 1 pluginsUpdated += 1
try: try:
getSpecificPackage(pluginId, checkConfig().pathToPluginFolder) getSpecificPackage(pluginId, configValues.pathToPluginFolder)
if checkConfig().seperateDownloadPath is False: if configValues.seperateDownloadPath is False:
os.remove(pluginPath) os.remove(pluginPath)
except HTTPError as err: except HTTPError as err:
print(oColors.brightRed + f"Error: {err.code} - {err.reason}" + oColors.standardWhite) print(oColors.brightRed + f"Error: {err.code} - {err.reason}" + oColors.standardWhite)
@ -238,24 +244,25 @@ def updateInstalledPackage(inputSelectedObject='all'):
if inputSelectedObject == 'all': if inputSelectedObject == 'all':
if INSTALLEDPLUGINLIST[i][3] == True: if INSTALLEDPLUGINLIST[i][3] == True:
print(f" [{indexNumberUpdated+1}]".ljust(8), end='') print(f" [{indexNumberUpdated+1}]".rjust(6), end='')
print(" ", end='')
print(f"{fileName}".ljust(33), end='') print(f"{fileName}".ljust(33), end='')
print(f"{fileVersion}".ljust(8), end='') print(f"{fileVersion}".ljust(13), end='')
print(" ", end='') #print(" ", end='')
print(f"{latestVersion}".ljust(8)) print(f"{latestVersion}".ljust(13))
if not checkConfig().localPluginFolder: if not configValues.localPluginFolder:
if checkConfig().sftp_seperateDownloadPath is True: if configValues.sftp_seperateDownloadPath is True:
pluginPath = checkConfig().sftp_pathToSeperateDownloadPath pluginPath = configValues.sftp_pathToSeperateDownloadPath
else: else:
pluginPath = checkConfig().sftp_folderPath pluginPath = configValues.sftp_folderPath
pluginPath = f"{pluginPath}/{plugin}" pluginPath = f"{pluginPath}/{plugin}"
sftp = createSFTPConnection() sftp = createSFTPConnection()
indexNumberUpdated += 1 indexNumberUpdated += 1
pluginsUpdated += 1 pluginsUpdated += 1
try: try:
getSpecificPackage(pluginId, checkConfig().sftp_folderPath) getSpecificPackage(pluginId, configValues.sftp_folderPath)
if checkConfig().sftp_seperateDownloadPath is False: if configValues.sftp_seperateDownloadPath is False:
sftp.remove(pluginPath) sftp.remove(pluginPath)
except HTTPError as err: except HTTPError as err:
print(oColors.brightRed + f"Error: {err.code} - {err.reason}" + oColors.standardWhite) print(oColors.brightRed + f"Error: {err.code} - {err.reason}" + oColors.standardWhite)
@ -264,16 +271,16 @@ def updateInstalledPackage(inputSelectedObject='all'):
print(oColors.brightRed + f"Error: Old plugin file coulnd't be deleted" + oColors.standardWhite) print(oColors.brightRed + f"Error: Old plugin file coulnd't be deleted" + oColors.standardWhite)
else: else:
if checkConfig().seperateDownloadPath is True: if configValues.seperateDownloadPath is True:
pluginPath = checkConfig().pathToSeperateDownloadPath pluginPath = configValues.pathToSeperateDownloadPath
else: else:
pluginPath = checkConfig().pathToPluginFolder pluginPath = configValues.pathToPluginFolder
pluginPath = Path(f"{pluginPath}/{plugin}") pluginPath = Path(f"{pluginPath}/{plugin}")
indexNumberUpdated += 1 indexNumberUpdated += 1
pluginsUpdated += 1 pluginsUpdated += 1
try: try:
getSpecificPackage(pluginId, checkConfig().pathToPluginFolder) getSpecificPackage(pluginId, configValues.pathToPluginFolder)
if checkConfig().seperateDownloadPath is False: if configValues.seperateDownloadPath is False:
os.remove(pluginPath) os.remove(pluginPath)
except HTTPError as err: except HTTPError as err:
print(oColors.brightRed + f"Error: {err.code} - {err.reason}" + oColors.standardWhite) print(oColors.brightRed + f"Error: {err.code} - {err.reason}" + oColors.standardWhite)
@ -284,7 +291,7 @@ def updateInstalledPackage(inputSelectedObject='all'):
i = i + 1 i = i + 1
except TypeError: except TypeError:
print(oColors.brightRed + "Error occured: Aborted updating for plugins." + oColors.standardWhite) print(oColors.brightRed + "Error occured: Aborted updating for plugins." + oColors.standardWhite)
print(oColors.brightYellow + f"[{pluginsUpdated}/{i}] Plugins updated" + oColors.standardWhite) print(oColors.brightYellow + f"Plugins updated: [{pluginsUpdated}/{i}]" + oColors.standardWhite)
if inputSelectedObject =='all' and pluginsUpdated == 0: if inputSelectedObject =='all' and pluginsUpdated == 0:
print(oColors.brightGreen + "All found plugins are on the latest version!" + oColors.standardWhite) print(oColors.brightGreen + "All found plugins are on the latest version!" + oColors.standardWhite)

View File

@ -4,17 +4,18 @@ from urllib.error import HTTPError
from pathlib import Path from pathlib import Path
from handlers.handle_sftp import createSFTPConnection, sftp_listFilesInServerRoot from handlers.handle_sftp import createSFTPConnection, sftp_listFilesInServerRoot
from handlers.handle_config import checkConfig from handlers.handle_config import configurationValues
from utils.consoleoutput import oColors from utils.consoleoutput import oColors
from serverjar.serverjar_paper import paperCheckForUpdate, papermc_downloader from serverjar.serverjar_paper import paperCheckForUpdate, papermc_downloader
def checkInstalledServerjar(): def checkInstalledServerjar():
if not checkConfig().localPluginFolder: configValues = configurationValues()
if not configValues.localPluginFolder:
sftp = createSFTPConnection() sftp = createSFTPConnection()
serverRootList = sftp_listFilesInServerRoot(sftp) serverRootList = sftp_listFilesInServerRoot(sftp)
else: else:
serverRootList = os.path.dirname(checkConfig().pathToPluginFolder) serverRootList = os.path.dirname(configValues.pathToPluginFolder)
serverRootList = os.listdir(serverRootList) serverRootList = os.listdir(serverRootList)
installedServerjarFullName = None installedServerjarFullName = None
try: try:
@ -34,7 +35,7 @@ def checkInstalledServerjar():
print(oColors.brightRed + "Aborting the process." + oColors.standardWhite) print(oColors.brightRed + "Aborting the process." + oColors.standardWhite)
input("Press any key + enter to exit...") input("Press any key + enter to exit...")
sys.exit() sys.exit()
print(oColors.brightBlack + f"Checking: {installedServerjarFullName}" + oColors.standardWhite)
if 'paper' in installedServerjarFullName: if 'paper' in installedServerjarFullName:
paperCheckForUpdate(installedServerjarFullName) paperCheckForUpdate(installedServerjarFullName)
@ -44,19 +45,20 @@ def checkInstalledServerjar():
def updateServerjar(serverJarBuild='latest'): def updateServerjar(serverJarBuild='latest'):
configValues = configurationValues()
try: try:
if serverJarBuild == None: if serverJarBuild == None:
serverJarBuild = 'latest' serverJarBuild = 'latest'
if not checkConfig().localPluginFolder: if not configValues.localPluginFolder:
sftp = createSFTPConnection() sftp = createSFTPConnection()
serverRootPath = checkConfig().sftp_folderPath serverRootPath = configValues.sftp_folderPath
serverRootPath = Path(str(serverRootPath).replace(r'/plugins', '')) serverRootPath = Path(str(serverRootPath).replace(r'/plugins', ''))
serverRootList = sftp_listFilesInServerRoot(sftp) serverRootList = sftp_listFilesInServerRoot(sftp)
else: else:
serverRoot = os.path.dirname(checkConfig().pathToPluginFolder) serverRoot = os.path.dirname(configValues.pathToPluginFolder)
serverRootList = os.listdir(serverRoot) serverRootList = os.listdir(serverRoot)
serverRootPath = checkConfig().pathToPluginFolder serverRootPath = configValues.pathToPluginFolder
helpPath = Path('/plugins') helpPath = Path('/plugins')
helpPathstr = str(helpPath) helpPathstr = str(helpPath)
serverRootPath = Path(str(serverRootPath).replace(helpPathstr, '')) serverRootPath = Path(str(serverRootPath).replace(helpPathstr, ''))
@ -90,8 +92,8 @@ def updateServerjar(serverJarBuild='latest'):
serverJarPath = Path(f"{serverRootPath}/{installedServerjarFullName}") serverJarPath = Path(f"{serverRootPath}/{installedServerjarFullName}")
if 'paper' in installedServerjarFullName: if 'paper' in installedServerjarFullName:
print(f"Updating Paper to build: {serverJarBuild}") print(oColors.brightBlack + f"Updating Paper to build: {serverJarBuild}" + oColors.standardWhite)
if not checkConfig().localPluginFolder: if not configValues.localPluginFolder:
try: try:
papermc_downloader(serverJarBuild, installedServerjarFullName) papermc_downloader(serverJarBuild, installedServerjarFullName)
sftp.remove(serverJarPath) sftp.remove(serverJarPath)

View File

@ -3,11 +3,12 @@ import sys
import re import re
import urllib.request import urllib.request
from pathlib import Path from pathlib import Path
from rich.console import Console
from utils.consoleoutput import oColors from utils.consoleoutput import oColors
from utils.web_request import doAPIRequest from utils.web_request import doAPIRequest
from handlers.handle_sftp import sftp_upload_server_jar, sftp_cdPluginDir, createSFTPConnection from handlers.handle_sftp import sftp_upload_server_jar, sftp_cdPluginDir, createSFTPConnection
from handlers.handle_config import checkConfig from handlers.handle_config import configurationValues
from utils.utilities import createTempPluginFolder, deleteTempPluginFolder, calculateFileSizeMb from utils.utilities import createTempPluginFolder, deleteTempPluginFolder, calculateFileSizeMb
@ -107,23 +108,25 @@ def paperCheckForUpdate(installedServerjarFullName):
paperLatestBuild = findLatestBuild(versionGroup) paperLatestBuild = findLatestBuild(versionGroup)
paperVersionBehind = versionBehind(paperInstalledBuild, paperLatestBuild) paperVersionBehind = versionBehind(paperInstalledBuild, paperLatestBuild)
print(f"Paper for {mcVersion}") print("┌─────┬────────────────────────────────┬──────────────┬──────────────┬───────────────────┐")
print("Index | Name | Installed V. | Latest V. | Versions behind ") print("│ No. │ Name │ Installed V. │ Latest V. │ Versions behind │")
print(f" [1]".ljust(8), end='') print("└─────┴────────────────────────────────┴──────────────┴──────────────┴───────────────────┘")
print(f"paper".ljust(21), end='') print(" [1]".rjust(6), end='')
print(f"{paperInstalledBuild}".ljust(8), end='') print(" ", end='')
print(" ", end='') print("paper".ljust(33), end='')
print(f"{paperLatestBuild}".ljust(8), end='') print(f"{paperInstalledBuild}".ljust(15), end='')
print(" ", end='') print(f"{paperLatestBuild}".ljust(15), end='')
print(f"{paperVersionBehind}".ljust(8)) print(f"{paperVersionBehind}".ljust(8))
print(oColors.brightYellow + f"Versions behind: [{paperVersionBehind}]" + oColors.standardWhite)
# https://papermc.io/api/docs/swagger-ui/index.html?configUrl=/api/openapi/swagger-config#/ # https://papermc.io/api/docs/swagger-ui/index.html?configUrl=/api/openapi/swagger-config#/
def papermc_downloader(paperBuild='latest', installedServerjarName=None, mcVersion=None): def papermc_downloader(paperBuild='latest', installedServerjarName=None, mcVersion=None):
if checkConfig().localPluginFolder == False: configValues = configurationValues()
if configValues.localPluginFolder == False:
downloadPath = createTempPluginFolder() downloadPath = createTempPluginFolder()
else: else:
downloadPath = checkConfig().pathToPluginFolder downloadPath = configValues.pathToPluginFolder
helpPath = Path('/plugins') helpPath = Path('/plugins')
helpPathstr = str(helpPath) helpPathstr = str(helpPath)
downloadPath = Path(str(downloadPath).replace(helpPathstr, '')) downloadPath = Path(str(downloadPath).replace(helpPathstr, ''))
@ -149,22 +152,22 @@ def papermc_downloader(paperBuild='latest', installedServerjarName=None, mcVersi
downloadPackagePath = Path(f"{downloadPath}/{downloadFileName}") downloadPackagePath = Path(f"{downloadPath}/{downloadFileName}")
if checkConfig().localPluginFolder == False: if configValues.localPluginFolder == False:
downloadPath = createTempPluginFolder() downloadPath = createTempPluginFolder()
url = f"https://papermc.io/api/v2/projects/paper/versions/{mcVersion}/builds/{paperBuild}/downloads/{downloadFileName}" url = f"https://papermc.io/api/v2/projects/paper/versions/{mcVersion}/builds/{paperBuild}/downloads/{downloadFileName}"
remotefile = urllib.request.urlopen(url) remotefile = urllib.request.urlopen(url)
filesize = remotefile.info()['Content-Length'] filesize = remotefile.info()['Content-Length']
print(f"Starting Paper-{paperBuild} download for {mcVersion}...") print(f"Getting Paper {paperBuild} for {mcVersion}")
urllib.request.urlretrieve(url, downloadPackagePath) console = Console()
with console.status("Downloading...", spinner='line', spinner_style='bright_magenta') as status:
urllib.request.urlretrieve(url, downloadPackagePath)
filesizeData = calculateFileSizeMb(filesize) filesizeData = calculateFileSizeMb(filesize)
print("Downloaded " + (str(filesizeData)).rjust(9) + f" MB here {downloadPackagePath}")
print(f"Downloadsize: {filesizeData} MB") if not configValues.localPluginFolder:
print(f"File downloaded here: {downloadPackagePath}")
if not checkConfig().localPluginFolder:
sftpSession = createSFTPConnection() sftpSession = createSFTPConnection()
sftp_upload_server_jar(sftpSession, downloadPackagePath) sftp_upload_server_jar(sftpSession, downloadPackagePath)
deleteTempPluginFolder(downloadPath) deleteTempPluginFolder(downloadPath)
print(oColors.brightGreen + "Downloaded successfully " + oColors.standardWhite + f"Paper-{paperBuild}" + \ print(oColors.brightGreen + "Downloaded successfully " + oColors.standardWhite + f"Paper {paperBuild}" + \
oColors.brightGreen + " for " + oColors.standardWhite + f"{mcVersion}" + oColors.standardWhite) oColors.brightGreen + " for " + oColors.standardWhite + f"{mcVersion}" + oColors.standardWhite)

View File

@ -6,7 +6,7 @@ import requests
from pathlib import Path from pathlib import Path
from utils.consoleoutput import oColors from utils.consoleoutput import oColors
from handlers.handle_config import checkConfig from handlers.handle_config import configurationValues
from handlers.handle_sftp import createSFTPConnection from handlers.handle_sftp import createSFTPConnection
@ -95,11 +95,12 @@ def getCommandHelp(optionalParams):
def check_local_plugin_folder(): def check_local_plugin_folder():
if checkConfig().localPluginFolder: configValues = configurationValues()
if checkConfig().seperateDownloadPath: if configValues.localPluginFolder:
pluginFolderPath = checkConfig().pathToSeperateDownloadPath if configValues.seperateDownloadPath:
pluginFolderPath = configValues.pathToSeperateDownloadPath
else: else:
pluginFolderPath = checkConfig().pathToPluginFolder pluginFolderPath = configValues.pathToPluginFolder
if not os.path.isdir(pluginFolderPath): if not os.path.isdir(pluginFolderPath):
print(oColors.brightRed + "Plugin folder coulnd*t be found. Creating one..." + oColors.standardWhite) print(oColors.brightRed + "Plugin folder coulnd*t be found. Creating one..." + oColors.standardWhite)
@ -129,9 +130,10 @@ def apiTest():
def check_requirements(): def check_requirements():
configValues = configurationValues()
apiTest() apiTest()
check_local_plugin_folder() check_local_plugin_folder()
if not checkConfig().localPluginFolder: if not configValues.localPluginFolder:
createSFTPConnection() createSFTPConnection()
@ -160,3 +162,9 @@ def calculateFileSizeMb(downloadFileSize):
fileSizeMb = fileSizeDownload / 1024 / 1024 fileSizeMb = fileSizeDownload / 1024 / 1024
roundedFileSize = round(fileSizeMb, 2) roundedFileSize = round(fileSizeMb, 2)
return roundedFileSize return roundedFileSize
def calculateFileSizeKb(downloadFileSize):
fileSizeDownload = int(downloadFileSize)
fileSizeKb = fileSizeDownload / 1024
roundedFileSize = round(fileSizeKb, 2)
return roundedFileSize