Пример #1
0
def update_node(store, request, language=GLSetting.memory_copy.default_language):
    """
    Update the node, setting the last update time on it.

    Password:
        If old_password and password are present, password update is performed

    URLs:
        If one url is present, is properly validated

    Returns:
        the last update time of the node as a :class:`datetime.datetime`
        instance
    """
    node = store.find(Node).one()

    for attr in getattr(node, "localized_strings"):
        new_value = unicode(request[attr])
        request[attr] = getattr(node, attr)
        request[attr][language] = new_value

    password = request.get('password', None)
    old_password = request.get('old_password', None)

    if password and old_password and len(password) and len(old_password):
        admin = store.find(User, (User.username == unicode('admin'))).one()
        admin.password = security.change_password(admin.password,
                                    old_password, password, admin.salt)

    if len(request['public_site']) > 1:
        if not utility.acquire_url_address(request['public_site'], hidden_service=True, http=True):
            log.err("Invalid public page regexp in [%s]" % request['public_site'])
            raise errors.InvalidInputFormat("Invalid public site")

    if len(request['hidden_service']) > 1:
        if not utility.acquire_url_address(request['hidden_service'], hidden_service=True, http=False):
            log.err("Invalid hidden service regexp in [%s]" % request['hidden_service'])
            raise errors.InvalidInputFormat("Invalid hidden service")

    # verify that the languages enabled are valid 'code' in the languages supported
    node.languages_enabled = []
    for lang_code in request['languages_enabled']:
        if lang_code in LANGUAGES_SUPPORTED_CODES:
            node.languages_enabled.append(lang_code)
        else:
            raise errors.InvalidInputFormat("Invalid lang code enabled: %s" % lang_code)

    if not request['default_language'] in LANGUAGES_SUPPORTED_CODES:
        raise errors.InvalidInputFormat("Invalid lang code as default")

    # name, description tor2web boolean value are acquired here
    node.update(request)

    node.last_update = utility.datetime_now()

    return admin_serialize_node(node, language)
Пример #2
0
def apply_cli_options(store):

    accepted = {}
    if GLSetting.cmdline_options.public_website:
        if not acquire_url_address(GLSetting.cmdline_options.public_website, hidden_service=False, http=True):
            print "[!!] Invalid public site: %s: Ignored" % GLSetting.cmdline_options.public_website
        else:
            print "[+] Hardwriting tor2web in DB:", GLSetting.cmdline_options.public_website
            accepted.update({"public_site": unicode(GLSetting.cmdline_options.public_website)})

    if GLSetting.cmdline_options.hidden_service:
        if not acquire_url_address(GLSetting.cmdline_options.hidden_service, hidden_service=True, http=True):
            print "[!!] Invalid hidden service: %s: Ignored" % GLSetting.cmdline_options.hidden_service
        else:
            print "[+] Hardwriting hidden service in DB:", GLSetting.cmdline_options.hidden_service
            accepted.update({"hidden_service": unicode(GLSetting.cmdline_options.hidden_service)})

    if accepted:
        node = store.find(Node).one()
        for k, v in accepted.iteritems():
            setattr(node, k, v)