Пример #1
0
def check_git_backend(app_configs, **kwargs):
    if find_git_http_backend() is None:
        return [
            weblate_check(
                "weblate.E022",
                "Failed to find git-http-backend, the git exporter will not work.",
            )
        ]
    return []
Пример #2
0
def check_git_backend(app_configs, **kwargs):
    if find_git_http_backend() is None:
        return [
            Critical(
                'Failed to find git-http-backend, ' 'the git exporter will not work.',
                hint=get_doc_url('admin/optionals', 'git-exporter'),
                id='weblate.E022',
            )
        ]
    return []
Пример #3
0
def check_git_backend(app_configs, **kwargs):
    if find_git_http_backend() is None:
        return [
            Critical(
                "Failed to find git-http-backend, " "the git exporter will not work.",
                hint=get_doc_url("admin/optionals", "git-exporter"),
                id="weblate.E022",
            )
        ]
    return []
Пример #4
0
def run_git_http(request, obj, path):
    """Git HTTP backend execution wrapper."""
    # Find Git HTTP backend
    git_http_backend = find_git_http_backend()
    if git_http_backend is None:
        return HttpResponseServerError('git-http-backend not found')

    # Invoke Git HTTP backend
    query = request.META.get('QUERY_STRING', '')
    process_env = {
        'REQUEST_METHOD': request.method,
        'PATH_TRANSLATED': os.path.join(obj.full_path, path),
        'GIT_HTTP_EXPORT_ALL': '1',
        'CONTENT_TYPE': request.META.get('CONTENT_TYPE', ''),
        'QUERY_STRING': query,
        'HTTP_CONTENT_ENCODING': request.META.get('HTTP_CONTENT_ENCODING', ''),
    }
    process = subprocess.Popen(
        [git_http_backend],
        env=process_env,
        stdin=subprocess.PIPE,
        stdout=subprocess.PIPE,
        stderr=subprocess.PIPE,
    )
    output, output_err = process.communicate(request.body)
    retcode = process.poll()

    # Log error
    if output_err:
        try:
            raise Exception('Git http backend error: {}'.format(
                force_text(output_err).splitlines()[0]
            ))
        except Exception as error:
            report_error(error, request, prefix='Git backend failure')

    # Handle failure
    if retcode:
        return HttpResponseServerError(output_err)

    headers, content = output.split(b'\r\n\r\n', 1)
    message = message_from_string(headers.decode('utf-8'))

    # Handle status in response
    if 'status' in message:
        return HttpResponse(
            status=int(message['status'].split()[0])
        )

    # Send content
    response = HttpResponse(
        content_type=message['content-type']
    )
    response.write(content)
    return response
Пример #5
0
def check_git_backend(app_configs, **kwargs):
    if find_git_http_backend() is None:
        return [
            Critical(
                'Failed to find git-http-backend, '
                'the git exporter will not work.',
                hint=get_doc_url('admin/optionals', 'git-exporter'),
                id='weblate.E022',
            )
        ]
    return []
Пример #6
0
def run_git_http(request, obj, path):
    """Git HTTP backend execution wrapper."""
    # Find Git HTTP backend
    git_http_backend = find_git_http_backend()
    if git_http_backend is None:
        return HttpResponseServerError('git-http-backend not found')

    # Invoke Git HTTP backend
    query = request.META.get('QUERY_STRING', '')
    process_env = {
        'REQUEST_METHOD': request.method,
        'PATH_TRANSLATED': os.path.join(obj.full_path, path),
        'GIT_HTTP_EXPORT_ALL': '1',
        'CONTENT_TYPE': request.META.get('CONTENT_TYPE', ''),
        'QUERY_STRING': query,
        'HTTP_CONTENT_ENCODING': request.META.get('HTTP_CONTENT_ENCODING', ''),
    }
    process = subprocess.Popen(
        [git_http_backend],
        env=process_env,
        stdin=subprocess.PIPE,
        stdout=subprocess.PIPE,
        stderr=subprocess.PIPE,
    )
    output, output_err = process.communicate(request.body)
    retcode = process.poll()

    # Log error
    if output_err:
        try:
            raise Exception(
                'Git http backend error: {}'.format(
                    force_text(output_err).splitlines()[0]
                )
            )
        except Exception as error:
            report_error(error, request, prefix='Git backend failure')

    # Handle failure
    if retcode:
        return HttpResponseServerError(output_err)

    headers, content = output.split(b'\r\n\r\n', 1)
    message = message_from_string(headers.decode('utf-8'))

    # Handle status in response
    if 'status' in message:
        return HttpResponse(status=int(message['status'].split()[0]))

    # Send content
    response = HttpResponse(content_type=message['content-type'])
    response.write(content)
    return response
Пример #7
0
def run_git_http(request, obj, path):
    """Git HTTP backend execution wrapper."""
    # Find Git HTTP backend
    git_http_backend = find_git_http_backend()
    if git_http_backend is None:
        return HttpResponseServerError("git-http-backend not found")

    # Invoke Git HTTP backend
    query = request.META.get("QUERY_STRING", "")
    process_env = {
        "REQUEST_METHOD": request.method,
        "PATH_TRANSLATED": os.path.join(obj.full_path, path),
        "GIT_HTTP_EXPORT_ALL": "1",
        "CONTENT_TYPE": request.META.get("CONTENT_TYPE", ""),
        "QUERY_STRING": query,
        "HTTP_CONTENT_ENCODING": request.META.get("HTTP_CONTENT_ENCODING", ""),
    }
    process = subprocess.Popen(
        [git_http_backend],
        env=process_env,
        stdin=subprocess.PIPE,
        stdout=subprocess.PIPE,
        stderr=subprocess.PIPE,
    )
    output, output_err = process.communicate(request.body)
    retcode = process.poll()

    # Log error
    if output_err:
        try:
            raise Exception(
                "Git http backend error: {}".format(
                    force_str(output_err).splitlines()[0]
                )
            )
        except Exception:
            report_error(cause="Git backend failure")

    # Handle failure
    if retcode:
        return HttpResponseServerError(output_err)

    headers, content = output.split(b"\r\n\r\n", 1)
    message = message_from_string(headers.decode())

    # Handle status in response
    if "status" in message:
        return HttpResponse(status=int(message["status"].split()[0]))

    # Send content
    response = HttpResponse(content_type=message["content-type"])
    response.write(content)
    return response