diff --git a/README.md b/README.md index c987a7b..62bdfe5 100644 --- a/README.md +++ b/README.md @@ -4,7 +4,7 @@ _malias_ is a helper for mailcow instances. You can create, delete, search and l ## Installation -Download the latest relase from https://gitlab.pm/rune/malias/releases. Unzip and move to a folder in you path (ease of use). You can also rename the file ```malias.py``` to just ```malias``` and make the file executable with ```chmod +x malias```. To install required python modules run ```pip3 install -r requirements.txt``` +Download the latest release from https://gitlab.pm/rune/malias/releases. Unzip and move to a folder in you path (ease of use). I also recommend rename the file ```malias.py``` to just ```malias``` and make the file executable with ```chmod +x malias```. To install required python modules run ```pip3 install -r requirements.txt``` ## Usage diff --git a/malias.py b/malias.py old mode 100644 new mode 100755 index 55992cb..ff0196d --- a/malias.py +++ b/malias.py @@ -10,12 +10,12 @@ import requests import os import time import sys +import git from types import SimpleNamespace from datetime import datetime from string import ascii_letters, digits from rich import print from argparse import RawTextHelpFormatter -#from urllib import Request, urlopen from urllib.request import urlopen # Info pages for dev @@ -29,7 +29,7 @@ database = filepath.joinpath('malias.db') logfile = filepath.joinpath('malias.log') Path(filepath).mkdir(parents=True, exist_ok=True) logging.basicConfig(filename=logfile,level=logging.INFO,format='%(message)s') -app_version = '0.2.1' +app_version = '0.2.2' def connect_database(): @@ -343,6 +343,31 @@ def search(alias): print('\n\nData from server') +def get_mailcow_version(): + apikey = get_api() + mail_server = get_settings('mail_server') + req = urllib.request.Request('https://'+mail_server+'/api/v1/get/status/version') + req.add_header('Content-Type', 'application/json') + req.add_header('X-API-Key', apikey) + current = urllib.request.urlopen(req) + remote = current.read().decode('utf-8') + remoteData = json.loads(remote) + #repo = Repo("https://github.com/mailcow/mailcow-dockerized") + # info = repo.git.ls_remote() + # tags = repo.tags + remote_heads = git.cmd.Git().ls_remote('https://github.com/mailcow/mailcow-dockerized', tags=True) + # tags = remote_heads.rstrip('refs/tags/') + tags = remote_heads.splitlines() + for x in tags: + string = x.rsplit('/',2) + + if remoteData['version'] != string[2]: + versionInfo = 'Your Mailcow version is %s and the latest is %s' %(remoteData['version'], string[2]) + else: + versionInfo = 'You have the latest Mailcow version %s' %remoteData['version'] + + return (versionInfo) + def show_current_info(): API = get_api() @@ -356,12 +381,15 @@ def show_current_info(): aliases_server = number_of_aliases_on_server() alias_db = number_of_aliases_in_db() + mailcow_version = get_mailcow_version() print('\n[b]malias[/b] - Manage aliases on mailcow Instance.') print('===================================================') print('API key : [b]%s[/b]' % (API)) print('mailcow Instance : [b]%s[/b]' % (mail_server)) + print('Mailcow version : [b]%s[/b]' % (mailcow_version)) print('Logfile : [b]%s[/b]' % (logfile)) + print('Databse : [b]%s[b]' % (database)) print('Aliases on server : [b]%s[/b]' % (aliases_server)) print('Aliases in DB : [b]%s[/b]' % (alias_db)) print('') @@ -394,7 +422,7 @@ parser.add_argument('-d', '--delete', help='Delete alias.\n\n', nargs=1, metavar=('alias@domain.com'), required=False, action="append") -parser.add_argument('-v', '--version', help='Show current version and config info\n\n', +parser.add_argument('-i', '--info', help='Show current version and config info\n\n', required=False, action='store_true') parser.add_argument('-c', '--copy', help='Copy alias data from mailcow server to local DB.\n\n', @@ -416,7 +444,7 @@ elif args['add']: create(args['add'][0][0],args['add'][0][1]) elif args['delete']: delete_alias(args['delete'][0][0]) -elif args['version']: +elif args['info']: show_current_info() elif args['copy']: copy_data() @@ -425,4 +453,5 @@ elif args['list']: else: + #get_mailcow_version() print('\n\nEh, sorry! I need something more to help you! If you write [b]malias -h[/b] I\'ll show a help screen to get you going!!!\n\n\n') \ No newline at end of file diff --git a/requirements.txt b/requirements.txt index 5d974a7..6f6610a 100644 --- a/requirements.txt +++ b/requirements.txt @@ -11,7 +11,9 @@ click==8.1.3 docopt==0.6.2 docutils==0.19 frozenlist==1.3.3 -gpg==1.19.0 +gitdb==4.0.10 +GitPython==3.1.32 +gpg==1.21.0 idna==3.4 importlib-metadata==6.1.0 jaraco.classes==3.2.3 @@ -36,6 +38,7 @@ requests-toolbelt==0.10.1 rfc3986==2.0.0 rich==13.3.1 six==1.16.0 +smmap==5.0.0 tqdm==4.65.0 twine==4.0.2 urllib3==1.26.14