Пример #1
0
def lookup(bot, userId, args):

    response = messages.markdown("<u><b>Node lookup<b><u>\n\n", bot.messenger)

    if bot.nodeList.synced() and bot.nodeList.lastBlock:

        if not len(args):
            response += messages.lookupArgumentRequiredError(bot.messenger)
        else:

            errors = []
            lookups = []

            for arg in args:

                ip = util.validateIp(arg)

                if not ip:
                    errors.append(messages.invalidIpError(bot.messenger, arg))
                else:

                    dbNode = bot.nodeList.getNodeByIp(ip)

                    if dbNode:

                        result = bot.nodeList.lookup(dbNode['collateral'])

                        if result:
                            lookups.append(
                                messages.lookupResult(bot.messenger, result))
                        else:
                            errors.append(
                                messages.lookupError(bot.messenger, ip))

                    else:
                        errors.append(
                            messages.nodeNotInListError(bot.messenger, ip))

            for e in errors:
                response += e

            for l in lookups:
                response += l
    else:
        response += "*Sorry, the bot is currently not synced with the network. Try it again in few minutes...*"

    return response
Пример #2
0
def lookup(bot, userId, args):

    response = messages.markdown("<u><b>Node lookup<b><u>\n\n", bot.messenger)

    with bot.nodeList as nodeList:

        if nodeList.synced() and nodeList.lastBlock:

            if not len(args):
                response += messages.lookupArgumentRequiredError(bot.messenger)
            else:

                errors = []
                lookups = []

                for arg in args:

                    ip = util.validateIp(arg)

                    if not ip:
                        errors.append(
                            messages.invalidIpError(bot.messenger, arg))
                    else:

                        result = nodeList.lookup(ip)

                        if result:
                            lookups.append(
                                messages.lookupResult(bot.messenger, result))
                        else:
                            errors.append(
                                messages.nodeNotInListError(bot.messenger, ip))

                for e in errors:
                    response += e

                for l in lookups:
                    response += l
        else:
            response += messages.notSynced(bot.messenger)

    return response
Пример #3
0
def nodeAdd(bot, update, args):

    userInfo = util.crossMessengerSplit(update)
    userId = userInfo['user'] if 'user' in userInfo else None
    userName = userInfo['name'] if 'name' in userInfo else None

    response = messages.markdown("<u><b>Add<b><u>\n\n", bot.messenger)

    logger.debug("add - " + " ".join(args))
    logger.debug("add - user: {}".format(userId))

    if len(args) == 0:

        response += messages.markdown((
            "<b>ERROR<b>: Arguments required: <b>IPAddress_0;name_0 ... IPAddress_n;name_n<b>\n\n"
            "Example: <cb>add<ca> 43.121.56.87;Node1 56.76.27.100;Node2\n"),
                                      bot.messenger)
        valid = False

    else:
        with bot.nodeList as nodeList:

            for arg in args:

                valid = True

                newNode = arg.split(";")

                if len(newNode) != 2:

                    response += messages.invalidParameterError(
                        bot.messenger, arg)
                    valid = False
                else:

                    ip = util.validateIp(newNode[0])
                    name = util.validateName(newNode[1])

                    if not ip:

                        response += messages.invalidIpError(
                            bot.messenger, newNode[0])
                        valid = False

                    if not name:

                        response += messages.invalidNameError(
                            bot.messenger, newNode[1])
                        valid = False

                if valid:

                    node = nodeList.getNodeByIp(ip)

                    if node == None:
                        response += messages.nodeNotInListError(
                            bot.messenger, ip)
                    else:

                        if bot.database.addNode(node.collateral, name, userId,
                                                userName):

                            response += "Added node {}!\n".format(ip)

                        else:

                            response += messages.nodeExistsError(
                                bot.messenger, ip)

    return response
Пример #4
0
def nodeRemove(bot, update, args):

    userInfo = util.crossMessengerSplit(update)
    userId = userInfo['user'] if 'user' in userInfo else None
    userName = userInfo['name'] if 'name' in userInfo else None

    response = messages.markdown("<u><b>Remove<b><u>\n\n", bot.messenger)

    logger.debug("remove - " + " ".join(args))
    logger.debug("remove - user: {}".format(userId))

    user = bot.database.getUser(userId)

    if user == None:

        response += messages.notActiveError(bot.messenger)

    elif len(args) < 1:

        response += messages.markdown(
            ("<b>ERROR<b>: Argument(s) required: <b>:ip0 :ipN<b>\n\n"
             "Example remove one: <cb>remove<ca> 21.23.34.44\n"
             "Example remove more: <cb>remove<ca> 21.23.34.44 21.23.34.43\n"
             "Example remove all: <cb>remove<ca> all\n"), bot.messenger)

    else:

        # Check if the user wants to remove all nodes.
        if len(args) == 1 and args[0] == 'all':

            bot.database.deleteNodesForUser(userId)
            response += messages.markdown(
                "Successfully removed <b>all<b> your nodes!\n", bot.messenger)

        else:

            # Else go through the parameters
            for arg in args:

                ip = util.validateIp(arg)

                if not ip:

                    response += messages.invalidIpError(bot.messenger, arg)
                    valid = False

                else:

                    with bot.nodeList as nodeList:

                        logger.info("remove - valid {}".format(ip))

                        node = nodeList.getNodeByIp(ip)

                        if node == None:
                            response += messages.nodeNotInListError(
                                bot.messenger, ip)
                        else:

                            userNode = bot.database.getNodes(
                                node.collateral, userId)

                            if userNode == None:
                                response += messages.nodeNotExistsError(
                                    bot.messenger, ip)
                            else:
                                bot.database.deleteNode(
                                    node.collateral, user['id'])
                                response += messages.markdown(
                                    "Node successfully removed. <b>{}<b>\n".
                                    format(ip), bot.messenger)

    return response
Пример #5
0
def nodeUpdate(bot, update, args):

    userInfo = util.crossMessengerSplit(update)
    userId = userInfo['user'] if 'user' in userInfo else None
    userName = userInfo['name'] if 'name' in userInfo else None

    response = messages.markdown("<u><b>Update<b><u>\n\n", bot.messenger)

    logger.debug("update - " + " ".join(args))
    logger.debug("update - user: {}".format(userId))

    user = bot.database.getUser(userId)

    if user == None:

        response += messages.notActiveError(bot.messenger)

    elif not len(args):

        response += messages.markdown((
            "<b>ERROR<b>: Argument(s) required: <b>ip0;newname0 ipN;newnameN<b>\n\n"
            "Where <b>ip<b> is the IP-Address of the node to update and <b>newname<b> the"
            " new name of the node.\n\n"
            "Example: <cb>update<ca> 23.132.143.34;MyNewNodeName\n"),
                                      bot.messenger)

    else:

        with bot.nodeList as nodeList:

            for arg in args:

                nodeEdit = arg.split(";")

                valid = True

                if len(nodeEdit) != 2:

                    response += messages.invalidParameterError(
                        bot.messenger, arg)
                    valid = False
                else:

                    ip = util.validateIp(nodeEdit[0])
                    name = util.validateName(nodeEdit[1])

                    if not ip:

                        response += messages.invalidIpError(
                            bot.messenger, nodeEdit[0])
                        valid = False

                    if not name:

                        response += messages.invalidNameError(
                            bot.messenger, nodeEdit[1])
                        valid = False

                if valid:

                    logger.info("update - {} {}".format(ip, user['id']))

                    node = nodeList.getNodeByIp(ip)

                    if node == None:
                        response += messages.nodeNotInListError(
                            bot.messenger, ip)
                    else:

                        userNode = bot.database.getNodes(
                            node.collateral, userId)

                        if userNode == None:
                            response += messages.nodeNotExistsError(
                                bot.messenger, ip)
                        else:

                            bot.database.updateNode(node.collateral,
                                                    user['id'], name)

                            response += "Node successfully updated. {}\n".format(
                                ip)

    return response