From 6f844fcaee0566af4e4009bcdc7ce860853d0627 Mon Sep 17 00:00:00 2001 From: paspo Date: Mon, 15 Jan 2018 21:45:51 +0100 Subject: [PATCH] added client --- telegram-notify | 79 ++++++++++++++++++++++++++++++++++++++++++ telegram-notify-daemon | 4 +-- 2 files changed, 81 insertions(+), 2 deletions(-) create mode 100755 telegram-notify diff --git a/telegram-notify b/telegram-notify new file mode 100755 index 0000000..9068cbd --- /dev/null +++ b/telegram-notify @@ -0,0 +1,79 @@ +#!/usr/bin/env python2 + +import os +import sys +import argparse +import ConfigParser +import datetime +#import imghdr +from PIL import Image +import shutil + +version = 0.1 + +configFile = '/etc/telegram-notify/telegram-notify.conf' +if not os.path.isfile(configFile) or not os.access(configFile, os.R_OK): + configFile = './telegram-notify.conf' + if not os.path.isfile(configFile) or not os.access(configFile, os.R_OK): + configFile = '' + +parser = argparse.ArgumentParser(description='Send notification via Telegram') +parser.add_argument('-c', '--config', nargs='?', + help='start with specified config file (default: telegram-notify.conf in /etc/ or in current directory)') +parser.add_argument('-t', '--text', nargs='?', + help='send text') +parser.add_argument('-i', '--image', nargs='?', + help='send image') +parser.add_argument('-V', '--version', action='store_true', + help='show program version and quit') +args = parser.parse_args() + +if args.version: + print 'telegram-notify version %s - Copyright (C) 2018 by Paolo Asperti.' % version + sys.exit(0) + +if args.config: + if not os.path.isfile(args.config): + print 'specified config file doesn\'t exists or is not a file' + sys.exit(1) + if not os.access(args.config, os.R_OK): + print 'specified config file is not readable' + sys.exit(1) + configFile = args.config + +if configFile == '': + print 'no config file available' + sys.exit(1) + +defaults = { + 'spool_dir': '/var/spool/telegram-notify' +} + +configParser = ConfigParser.SafeConfigParser(defaults=defaults) +configParser.read(configFile) + +spool_dir = configParser.get('general', 'spool_dir') +t = datetime.datetime.now() +curdate = t.strftime('%Y-%m-%d_%H:%M:%S') + +if args.text: + outfile = spool_dir + '/' + curdate + '.txt' + f = open(outfile,"w") + f.write(args.text) + f.close() + +if args.image: + if not os.path.isfile(args.image): + print 'specified image file doesn\'t exists or is not a file' + sys.exit(1) + if not os.access(args.image, os.R_OK): + print 'specified image file is not readable' + sys.exit(1) + im = Image.open(args.image) + imgType = im.format + supportedTypes = {'JPEG':'jpg', 'GIF':'gif', 'PNG':'png'} + if any(imgType == s for s in supportedTypes): + outfile = spool_dir + '/' + curdate + '.' + supportedTypes[imgType] + shutil.copyfile(args.image,outfile) + else: + print 'unsupported image type (%s) for file %s' % (imgType, args.image) diff --git a/telegram-notify-daemon b/telegram-notify-daemon index 96bad1b..351b958 100755 --- a/telegram-notify-daemon +++ b/telegram-notify-daemon @@ -114,7 +114,7 @@ def handle(msg): def processFile(filename): logger.info('Processing %s' % filename) - if re.match(r'.*jpg$',filename): + if re.match(r'.*jpe?g$',filename): for c in chat_ids: try: logger.debug('sending %s as picture to %s' % (filename,c['username'])) @@ -198,7 +198,7 @@ def parseCmdLine(): args = parser.parse_args() if args.version: - print 'telegram-notify version %s - Copyright (C) 2018 by Paolo Asperti.' % version + print 'telegram-notify-daemon version %s - Copyright (C) 2018 by Paolo Asperti.' % version sys.exit(0) if args.config: