Пример #1
0
def test_meta_single(create_request):
    request = create_request(
        {"X-Forwarded-For": "177.139.233.139, 198.84.193.157, 198.84.193.158"}
    )

    result = get_client_ip(request)
    assert result == ("177.139.233.139", True)
Пример #2
0
def test_meta_proxy_trusted_ips(create_request):
    request = create_request(
        {
            "X-Forwarded-For": "3ffe:1900:4545:3:200:f8ff:fe21:67cf, 74dc::02ba, 74dc::02bb"
        }
    )
    result = get_client_ip(request, proxy_trusted_ips=["74dc::02bb"])
    assert result == ("3ffe:1900:4545:3:200:f8ff:fe21:67cf", True)
Пример #3
0
def test_meta_proxy_trusted_ips_proxy_count_less_error(create_request):
    request = create_request(
        {"X-Forwarded-For": "3ffe:1900:4545:3:200:f8ff:fe21:67cf, 74dc::02bb"}
    )
    result = get_client_ip(
        request, proxy_count=2, proxy_trusted_ips=["74dc::02bb"]
    )
    assert result == (None, False)
Пример #4
0
def test_meta_proxy_trusted_ips_proxy_count_more_error(create_request):
    request = create_request(
        {"X-Forwarded-For": "177.139.233.139, 198.84.193.157, 198.84.193.158"}
    )
    result = get_client_ip(
        request, proxy_count=1, proxy_trusted_ips=["198.84.193.158"]
    )
    assert result == (None, False)
Пример #5
0
def request_ip(request: Request):
    """
    Retrieves the ip address of the request.

    :param request: Sanic request.
    """
    ip, routable = get_client_ip(request)
    return ip if ip is not None else '0.0.0.0'
Пример #6
0
def test_meta_error_only(create_request):
    request = create_request(
        {
            "X-Forwarded-For": "unknown, 177.139.233.139, 198.84.193.157, 198.84.193.158"
        }
    )
    result = get_client_ip(request)
    assert result == (None, False)
Пример #7
0
def test_meta_proxy_trusted_ips_proxy_count(create_request):
    request = create_request(
        {"X-Forwarded-For": "177.139.233.139, 198.84.193.157, 198.84.193.158"}
    )
    result = get_client_ip(
        request, proxy_count=2, proxy_trusted_ips=["198.84.193.158"]
    )
    assert result == ("177.139.233.139", True)
Пример #8
0
def test_meta_error_only(create_request):
    request = create_request(
        {
            "Forwarded-For": "unknown, 3ffe:1900:4545:3:200:f8ff:fe21:67cf, 74dc::02ba, 74dc::02bb"
        }
    )
    result = get_client_ip(request)
    assert result == (None, False)
Пример #9
0
def test_meta_proxy_order_right_most(create_request):
    request = create_request(
        {
            "X-Forwarded-For": "3ffe:1900:4545:3:200:f8ff:fe21:67cf, 74dc::02ba, 74dc::02bb"
        }
    )
    result = get_client_ip(request, proxy_order="right-most")
    assert result == ("74dc::02bb", True)
Пример #10
0
def test_meta_singleton_proxy_count_private(create_request):
    request = create_request(
        {
            "X-Forwarded-For": "::1",
            "X-Real-IP": "3ffe:1900:4545:3:200:f8ff:fe21:67cf",
        }
    )
    result = get_client_ip(request, proxy_count=1)
    assert result == (None, False)
Пример #11
0
def test_meta_error_first(create_request):
    request = create_request(
        {
            "X-Forwarded-For": "unknown, 177.139.233.139, 198.84.193.157, 198.84.193.158",
            "Forwarded-For": "177.139.233.138, 198.84.193.157, 198.84.193.158",
        }
    )
    result = get_client_ip(request)
    assert result == ("177.139.233.138", True)
Пример #12
0
def test_meta_singleton_private_fallback(create_request):
    request = create_request(
        {
            "X-Forwarded-For": "::1",
            "X-Real-IP": "3ffe:1900:4545:3:200:f8ff:fe21:67cf",
        }
    )
    result = get_client_ip(request)
    assert result == ("3ffe:1900:4545:3:200:f8ff:fe21:67cf", True)
Пример #13
0
def test_meta_error_first(create_request):
    request = create_request(
        {
            "X-Forwarded-For": "unknown, 3ffe:1900:4545:3:200:f8ff:fe21:67cf, 74dc::02ba, 74dc::02bb",
            "Forwarded-For": "3ffe:1900:4545:3:200:f8ff:fe21:67cf, 74dc::02ba, 74dc::02bb",
        }
    )
    result = get_client_ip(request)
    assert result == ("3ffe:1900:4545:3:200:f8ff:fe21:67cf", True)
Пример #14
0
def test_meta_multi(create_request):
    request = create_request(
        {
            "X-Forwarded-For": "3ffe:1900:4545:3:200:f8ff:fe21:67cf, 74dc::02ba, 74dc::02bb",
            "Via": "74dc::02bc",
        }
    )
    result = get_client_ip(request)
    assert result == ("3ffe:1900:4545:3:200:f8ff:fe21:67cf", True)
Пример #15
0
def test_request_header_order_specific(create_request):
    request = create_request(
        {
            "X-Real-IP": "192.168.1.1",
            "Via": "177.139.233.139",
            "X-Forwarded-For": "177.139.233.139, 198.84.193.157, 198.84.193.158",
        }
    )
    ip = get_client_ip(request, request_header_order=["X-Forwarded-For"])
    assert ip == ("177.139.233.139", True)
Пример #16
0
def test_meta_multi_precedence_order(create_request):
    request = create_request(
        {
            "Forwarded-For": "177.139.233.138, 198.84.193.157, 198.84.193.158",
            "X-Forwarded-For": "177.139.233.139, 198.84.193.157, 198.84.193.158",
            "X-Cluster-Client-IP": "177.139.233.133",
        }
    )
    result = get_client_ip(request)
    assert result == ("177.139.233.139", True)
Пример #17
0
def test_meta_multi_precedence_invalid_first(create_request):
    request = create_request(
        {
            "X-Forwarded-For": "unknown, 10.0.0.1, 10.0.0.2",
            "X-Cluster-Client-IP": "177.139.233.138, 198.84.193.157, 198.84.193.158",
            "True-Client-IP": "177.139.233.133",
        }
    )
    result = get_client_ip(request)
    assert result == ("177.139.233.138", True)
Пример #18
0
def test_meta_multi_precedence_invalid_first(create_request):
    request = create_request(
        {
            "X-Forwarded-For": "unknown, 2001:db8:, ::1",
            "Forwarded-For": "3ffe:1900:4545:3:200:f8ff:fe21:67cf, 74dc::02ba, 74dc::02bb",
            "Via": "74dc::02bc",
        }
    )
    result = get_client_ip(request)
    assert result == ("3ffe:1900:4545:3:200:f8ff:fe21:67cf", True)
Пример #19
0
def test_request_header_order_multiple(create_request):
    request = create_request(
        {
            "X-Forwarded-For": "177.139.233.139, 198.84.193.157, 198.84.193.158",
            "Forwarded-For": "177.139.233.138, 198.84.193.157, 198.84.193.158",
            "Via": "177.139.233.133",
        }
    )
    ip = get_client_ip(
        request, request_header_order=["Forwarded-For", "X-Forwarded-For"]
    )
    assert ip == ("177.139.233.138", True)
Пример #20
0
def test_meta_proxy_trusted_ips_proxy_count_more_error_ignore_fallback(
    create_request
):
    request = create_request(
        {
            "X-Forwarded-For": "3ffe:1900:4545:3:200:f8ff:fe21:67cf, 74dc::02ba, 74dc::02bb",
            "X-Real-IP": "74dc::02bb",
        }
    )
    result = get_client_ip(
        request, proxy_count=1, proxy_trusted_ips=["74dc::02bb"]
    )
    assert result == (None, False)
    async def login(self, request, *args, **kwargs):
        """Logs in the user into this application
        - Receive and parse get request
        - Verify that the user is valid on the service
        - Go into AWS RDS and fetch user details and verify
        - Return success or unauthorized
        - end

        Arguments:
            request {object} -- the query parameters passed into this function

        Returns:
            object -- response from this endpoint
        """

        request_body = request.body
        body_params = {}
        if request_body != b'':
            body_params = json.loads(request_body)

        self.logger.info(
            'Received user login request: {params}'.format(params=body_params))

        username = request.json.get("username", None)
        password = request.json.get("password", None)

        if not username or not password:
            raise exceptions.AuthenticationFailed(
                "Missing username or password.")

        try:
            user = self.service.login(username, password)
        except LookupError as error:
            self.logger.error('Error Occurred: {error}'.format(error=error))
            raise exceptions.AuthenticationFailed(
                "You are not authorized to login.")

        if user is None:
            raise exceptions.AuthenticationFailed(
                "You are not authorized to login.")

        last_login_time = datetime.datetime.now(
        )  #.strftime("%Y-%m-%d %H:%M:%S")
        # pylint: disable=unused-variable,invalid-name
        ip, routable = get_client_ip(request)
        if ip is not None:
            # update the ip_address here for user
            pass

        return user
Пример #22
0
 def remote_addr(self):
     if not hasattr(self, "_remote_addr"):
         proxy_count = None
         proxy_trusted_ips = None
         request_header_order = None
         if self.app and self.app.config:
             proxy_count = getattr(
                 self.app.config, "IPWARE_PROXY_COUNT", None
             )
             proxy_trusted_ips = getattr(
                 self.app.config, "IPWARE_PROXY_TRUSTED_IPS", None
             )
             request_header_order = getattr(
                 self.app.config, "IPWARE_REQUEST_HEADER_ORDER", None
             )
         ip, _ = get_client_ip(
             self,
             proxy_count=proxy_count,
             proxy_trusted_ips=proxy_trusted_ips,
             request_header_order=request_header_order,
         )
         self._remote_addr = ip
     return self._remote_addr
Пример #23
0
def test_best_matched_ip_private_precedence(create_request):
    request = create_request({"X-Real-IP": "127.0.0.1", "Via": "192.168.1.1"})
    ip = get_client_ip(request)
    assert ip == ("192.168.1.1", False)
Пример #24
0
def test_meta_singleton_private_fallback(create_request):
    request = create_request(
        {"X-Forwarded-For": "10.0.0.0", "X-Real-IP": "177.139.233.139"}
    )
    result = get_client_ip(request)
    assert result == ("177.139.233.139", True)
Пример #25
0
def test_meta_singleton_proxy_count_private(create_request):
    request = create_request(
        {"X-Forwarded-For": "10.0.0.0", "X-Real-IP": "177.139.233.139"}
    )
    result = get_client_ip(request, proxy_count=1)
    assert result == (None, False)
Пример #26
0
def test_best_matched_ip_public(create_request):
    request = create_request(
        {"X-Real-IP": "177.31.233.122", "Via": "177.31.233.133"}
    )
    ip = get_client_ip(request)
    assert ip == ("177.31.233.122", True)
Пример #27
0
def test_100_block_private(create_request):
    request = create_request({"X-Real-IP": "100.76.0.9"})
    ip = get_client_ip(request)
    assert ip == ("100.76.0.9", False)
Пример #28
0
def test_meta_proxy_order_right_most(create_request):
    request = create_request(
        {"X-Forwarded-For": "177.139.233.139, 198.84.193.157, 198.84.193.158"}
    )
    result = get_client_ip(request, proxy_order="right-most")
    assert result == ("198.84.193.158", True)
Пример #29
0
def test_100_high_range_public(create_request):
    request = create_request({"X-Real-IP": "100.128.0.9"})
    ip = get_client_ip(request)
    assert ip == ("100.128.0.9", True)
Пример #30
0
def test_meta_none(create_request):
    request = create_request()
    ip, routable = get_client_ip(request)

    assert ip is None
    assert routable is False