Compare commits

..

4 Commits

Author SHA1 Message Date
Neocky
cd4a66002c Added new discord picture 2021-05-15 01:30:22 +02:00
Neocky
0d709cfb6f Fixed typo 2021-05-15 00:47:06 +02:00
Neocky
edc300a33d Eggcracking for better name finding & added better version digging
Added:
- eggcracking to get plugin name
- better version find mechanism
2021-05-15 00:46:29 +02:00
Neocky
6e980a1580 Fixed typo & added part about security warning 2021-04-12 23:26:12 +02:00
2 changed files with 58 additions and 28 deletions

View File

@@ -69,7 +69,7 @@ pluGET can:
- update every installed/one specific plugin - update every installed/one specific plugin
- check for an update of every installed/one specific plugin - check for an update of every installed/one specific plugin
- remove a plugin from the plugin folder - remove a plugin from the plugin folder
- manager server software: - manage server software:
- download a specific server software version - download a specific server software version
- check installed server software for update - check installed server software for update
- update installed server software to a specific version - update installed server software to a specific version
@@ -88,7 +88,7 @@ If you feel like showing your love and/or appreciation for this project then how
## Need help? ## Need help?
[<img src="https://i.imgur.com/D5vyVzC.png" alt="Discord" width="272"/>](https://discord.gg/475Uf4NBPF) [<img src="https://i.ibb.co/CMKbT0L/rsz-1rsz-discord.png" alt="Discord" width="272"/>](https://discord.gg/475Uf4NBPF)
## Installation ## Installation
@@ -104,7 +104,7 @@ py -m pip install -r requirements.txt
### Edit the Config ### Edit the Config
When run the first time, the `config.ini` file will be created in the `\src`folder and the program will close. When run the first time, the `config.ini` file will be created in the `\src` folder and the program will close.
Edit the config to your needs and relaunch pluGET. Edit the config to your needs and relaunch pluGET.
**Now you are good to go!** **Now you are good to go!**
@@ -112,6 +112,10 @@ Edit the config to your needs and relaunch pluGET.
### Windows: ### Windows:
Execute the `launcher.bat` in the `\pluGET` folder. Execute the `launcher.bat` in the `\pluGET` folder.
This will launch pluGET correctly. This will launch pluGET correctly.
Sometimes the security warning `Windows protected your PC` comes when launching the `launcher.bat` file.
This is a normal behaviour from the windows defender because this is a unknown `.bat` file.
To run the `launcher.bat` anyway, click `More Info` and then `Run anyway` when the message pops up.
### Linux: ### Linux:
Use `cd` to change into the `/pluGET` directory and change the permission of the `launcher.sh` to make it executeable: Use `cd` to change into the `/pluGET` directory and change the permission of the `launcher.sh` to make it executeable:
``` ```

View File

@@ -46,7 +46,7 @@ def getFileVersion(pluginName):
if pluginVersionString.endswith('.'): if pluginVersionString.endswith('.'):
pluginVersionString = '' pluginVersionString = ''
if pluginVersionString == '': if pluginVersionString == '':
pluginVersionString = eggCrackingJar(pluginNameFull) pluginVersionString = eggCrackingJar(pluginNameFull, 'version')
return pluginVersionString return pluginVersionString
@@ -65,7 +65,7 @@ def compareVersions(plugin_latest_version, pluginVersion):
return plugin_is_outdated return plugin_is_outdated
def eggCrackingJar(localJarFileName): def eggCrackingJar(localJarFileName, searchMode):
configValues = configurationValues() configValues = configurationValues()
if not configValues.localPluginFolder: if not configValues.localPluginFolder:
if configValues.sftp_useSftp: if configValues.sftp_useSftp:
@@ -82,21 +82,34 @@ def eggCrackingJar(localJarFileName):
pluginPath = configValues.pathToPluginFolder pluginPath = configValues.pathToPluginFolder
pathToPluginJar = Path(f"{pluginPath}/{localJarFileName}") pathToPluginJar = Path(f"{pluginPath}/{localJarFileName}")
pluginVersion = '' pluginVersion = ''
pluginName = ''
with ZipFile(pathToPluginJar, 'r') as pluginJar: with ZipFile(pathToPluginJar, 'r') as pluginJar:
try: try:
with io.TextIOWrapper(pluginJar.open('plugin.yml', 'r'), encoding="utf-8") as pluginYml: with io.TextIOWrapper(pluginJar.open('plugin.yml', 'r'), encoding="utf-8") as pluginYml:
pluginYmlContentLine = pluginYml.readlines() pluginYmlContentLine = pluginYml.readlines()
for line in pluginYmlContentLine: for line in pluginYmlContentLine:
if "version: " in line: if searchMode == 'version':
pluginVersion = line.replace('version: ', '') if re.match(r'^version: ', line):
pluginVersion = pluginVersion.replace('\n', '') pluginVersion = line.replace('version: ', '')
break pluginVersion = pluginVersion.replace('\n', '')
pluginVersion = pluginVersion.replace("'", '')
pluginVersion = pluginVersion.replace('"', '')
elif searchMode == 'name':
if re.match(r'^name: ', line):
pluginName = line.replace('name: ', '')
pluginName = pluginName.replace('\n', '')
pluginName = pluginName.replace("'", '')
pluginName = pluginName.replace('"', '')
except FileNotFoundError: except FileNotFoundError:
pluginVersion = '' pluginVersion = ''
pluginName = ''
if not configValues.localPluginFolder: if not configValues.localPluginFolder:
deleteTempPluginFolder(tempPluginFolderPath) deleteTempPluginFolder(tempPluginFolderPath)
return pluginVersion if searchMode == 'version':
return pluginVersion
if searchMode == 'name':
return pluginName
def checkInstalledPackage(inputSelectedObject="all"): def checkInstalledPackage(inputSelectedObject="all"):
@@ -122,7 +135,7 @@ def checkInstalledPackage(inputSelectedObject="all"):
try: try:
fileName = getFileName(plugin) fileName = getFileName(plugin)
fileVersion = getFileVersion(plugin) fileVersion = getFileVersion(plugin)
pluginId = getInstalledPlugin(fileName, fileVersion) pluginId = getInstalledPlugin(fileName, fileVersion, plugin)
except TypeError: except TypeError:
continue continue
pluginIdStr = str(pluginId) pluginIdStr = str(pluginId)
@@ -200,7 +213,7 @@ def updateInstalledPackage(inputSelectedObject='all'):
try: try:
fileName = getFileName(plugin) fileName = getFileName(plugin)
fileVersion = getFileVersion(plugin) fileVersion = getFileVersion(plugin)
pluginId = getInstalledPlugin(fileName, fileVersion) pluginId = getInstalledPlugin(fileName, fileVersion, plugin)
latestVersion = getLatestPluginVersion(pluginId) latestVersion = getLatestPluginVersion(pluginId)
except TypeError: except TypeError:
continue continue
@@ -331,27 +344,40 @@ def updateInstalledPackage(inputSelectedObject='all'):
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)
def getInstalledPlugin(localFileName, localFileVersion): def getInstalledPlugin(localFileName, localFileVersion, localPluginFullName):
url = "https://api.spiget.org/v2/search/resources/" + localFileName + "?field=name&sort=-downloads" url = "https://api.spiget.org/v2/search/resources/" + localFileName + "?field=name&sort=-downloads"
packageName = doAPIRequest(url) packageName = doAPIRequest(url)
plugin_match_found = False plugin_match_found = False
pluginID = None pluginID = None
for ressource in packageName: localFileVersionNew = localFileVersion
i = 0
for i in range(0, 3):
if plugin_match_found == True: if plugin_match_found == True:
break break
pID = ressource["id"] if i == 1:
url2 = f"https://api.spiget.org/v2/resources/{pID}/versions?size=100&sort=-name" localFileVersionNew = re.sub(r'(\-\w*)', '', localFileVersion)
packageVersions = doAPIRequest(url2) if i == 2:
for updates in packageVersions: pluginNameinYML = eggCrackingJar(localPluginFullName, 'name')
updateVersion = updates["name"] url = "https://api.spiget.org/v2/search/resources/" + pluginNameinYML + "?field=name&sort=-downloads"
if localFileVersion in updateVersion: packageName = doAPIRequest(url)
plugin_match_found = True localFileVersion = localFileVersionNew
pluginID = pID
updateId = updates["id"] for ressource in packageName:
plugin_latest_version = getLatestPluginVersion(pID) if plugin_match_found == True:
plugin_is_outdated = compareVersions(plugin_latest_version, updateVersion) break
addToPluginList(pID, updateId, plugin_latest_version , plugin_is_outdated) pID = ressource["id"]
return pluginID url2 = f"https://api.spiget.org/v2/resources/{pID}/versions?size=100&sort=-name"
packageVersions = doAPIRequest(url2)
for updates in packageVersions:
updateVersion = updates["name"]
if localFileVersionNew in updateVersion:
plugin_match_found = True
pluginID = pID
updateId = updates["id"]
plugin_latest_version = getLatestPluginVersion(pID)
plugin_is_outdated = compareVersions(plugin_latest_version, updateVersion)
addToPluginList(pID, updateId, plugin_latest_version , plugin_is_outdated)
return pluginID
else: else:
if plugin_match_found != True: if plugin_match_found != True: