Skip to content

Commit 02a008f

Browse files
authored
Merge pull request #6 from securenative/dev
Support proxy headers
2 parents 88bacdd + 68e4321 commit 02a008f

22 files changed

Lines changed: 1075 additions & 62 deletions

.github/workflows/build.yml

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,9 @@ jobs:
3030
- uses: php-actions/composer@v1
3131
- uses: nanasess/setup-php@master
3232
- uses: php-actions/phpunit@v9
33+
with:
34+
configuration: ./phpunit.xml
35+
args: --coverage-text
3336

3437
- name: Publish to codecov
3538
run: bash <(curl -s https://codecov.io/bash)
@@ -54,4 +57,4 @@ jobs:
5457
message_id: ${{ steps.slack.outputs.message_id }}
5558
channel: github-actions
5659
status: FAILED
57-
color: danger
60+
color: danger

.github/workflows/ci.yml

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,9 @@ jobs:
2626
- uses: php-actions/composer@v1
2727
- uses: nanasess/setup-php@master
2828
- uses: php-actions/phpunit@v9
29+
with:
30+
configuration: ./phpunit.xml
31+
args: --coverage-text
2932

3033
- name: Publish to codecov
3134
run: bash <(curl -s https://codecov.io/bash)

.github/workflows/publish.yml

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@ name: Publish
33
on:
44
release:
55
types: [created]
6-
6+
77
jobs:
88
release:
99
runs-on: ubuntu-latest
@@ -22,17 +22,18 @@ jobs:
2222
- uses: actions/checkout@v2
2323
- uses: php-actions/composer@v1
2424
- uses: nanasess/setup-php@master
25-
- uses: php-actions/phpunit@v9
26-
27-
- name: Publish to codecov
28-
run: bash <(curl -s https://codecov.io/bash)
2925

3026
- name: Publish
3127
uses: musps/action-deployer-php@master
3228
with:
3329
env:
3430
SSH_PRIVATE_KEY: ${{ secrets.PRIVATE_KEY }}
3531

32+
- name: Create changelog
33+
uses: heinrichreimer/github-changelog-generator-action@v2.1.1
34+
with:
35+
token: ${{ secrets.GITHUB_TOKEN }}
36+
3637
- name: Notify slack success
3738
if: success()
3839
env:

.phpunit.result.cache

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
C:37:"PHPUnit\Runner\DefaultTestResultCache":5287:{a:2:{s:7:"defects";a:36:{s:30:"AgentTest::testApiKeyException";i:4;s:18:"ApiTest::testTrack";i:4;s:19:"ApiTest::testVerify";i:4;s:44:"ConfigurationManagerTest::testReadConfigFile";i:3;s:50:"ConfigurationManagerTest::testEnvironmentVariables";i:4;s:43:"ConfigurationManagerTest::testDefaultParams";i:3;s:58:"ConfigurationManagerTest::testEnvironmentVariablesOverride";i:4;s:34:"EventManagerTest::testEventOptions";i:4;s:32:"EventManagerTest::testBuildEvent";i:4;s:30:"EventManagerTest::testSendSync";i:4;s:34:"EventManagerTest::testSendFailSync";i:4;s:38:"EventManagerTest::testAsyncShouldRetry";i:4;s:31:"EventManagerTest::testSendAsync";i:4;s:62:"RequestUtilsTest::testIpExtractionUsingXFORWARDEDFORHeaderIpv6";i:3;s:70:"RequestUtilsTest::testIpExtractionUsingXFORWARDEDFORHeaderMultipleIpv4";i:3;s:68:"RequestUtilsTest::testIpExtractionUsingHTTPXREALIPHeaderMultipleIpv4";i:3;s:59:"RequestUtilsTest::testIpExtractionUsingREMOTEADDRHeaderIpv6";i:3;s:67:"RequestUtilsTest::testIpExtractionUsingREMOTEADDRHeaderMultipleIpv4";i:3;s:58:"RequestUtilsTest::testIpExtractionUsingXClientIpHeaderIpv6";i:3;s:66:"RequestUtilsTest::testIpExtractionUsingXClientIpHeaderMultipleIpv4";i:3;s:56:"RequestUtilsTest::testIpExtractionUsingXRealIpHeaderIpv6";i:3;s:64:"RequestUtilsTest::testIpExtractionUsingXRealIpHeaderMultipleIpv4";i:3;s:61:"RequestUtilsTest::testIpExtractionUsingForwardedForHeaderIpv6";i:3;s:69:"RequestUtilsTest::testIpExtractionUsingForwardedForHeaderMultipleIpv4";i:3;s:65:"RequestUtilsTest::testIpExtractionUsingXClusterClientIpHeaderIpv6";i:3;s:73:"RequestUtilsTest::testIpExtractionUsingXClusterClientIpHeaderMultipleIpv4";i:3;s:59:"RequestUtilsTest::testIpExtractionUsingXForwardedHeaderIpv6";i:3;s:67:"RequestUtilsTest::testIpExtractionUsingXForwardedHeaderMultipleIpv4";i:3;s:58:"RequestUtilsTest::testIpExtractionUsingForwardedHeaderIpv6";i:3;s:66:"RequestUtilsTest::testIpExtractionUsingForwardedHeaderMultipleIpv4";i:3;s:52:"RequestUtilsTest::testIpExtractionUsingViaHeaderIpv6";i:3;s:60:"RequestUtilsTest::testIpExtractionUsingViaHeaderMultipleIpv4";i:3;s:62:"RequestUtilsTest::testIpExtractionUsingHTTPXCLIENTIPHeaderIpv6";i:3;s:70:"RequestUtilsTest::testIpExtractionUsingHTTPXCLIENTIPHeaderMultipleIpv4";i:3;s:60:"RequestUtilsTest::testIpExtractionUsingHTTPXREALIPHeaderIpv6";i:3;s:60:"RequestUtilsTest::testExtractionPriorityWithoutXForwardedFor";i:3;}s:5:"times";a:45:{s:30:"AgentTest::testApiKeyException";d:0.023;s:18:"ApiTest::testTrack";d:0.015;s:31:"ApiTest::testTrackCustomContext";d:0.001;s:19:"ApiTest::testVerify";d:0.001;s:44:"ConfigurationManagerTest::testReadConfigFile";d:0.001;s:41:"ConfigurationManagerTest::testUnknownKeys";d:0.001;s:41:"ConfigurationManagerTest::testInvalidFile";d:0.001;s:48:"ConfigurationManagerTest::testInvalidFileEntries";d:0.001;s:40:"ConfigurationManagerTest::testLoadConfig";d:0;s:50:"ConfigurationManagerTest::testEnvironmentVariables";d:0;s:43:"ConfigurationManagerTest::testDefaultParams";d:0;s:58:"ConfigurationManagerTest::testEnvironmentVariablesOverride";d:0;s:34:"EventManagerTest::testEventOptions";d:0;s:32:"EventManagerTest::testBuildEvent";d:0;s:30:"EventManagerTest::testSendSync";d:0.002;s:34:"EventManagerTest::testSendFailSync";d:0.002;s:38:"EventManagerTest::testAsyncShouldRetry";d:0.002;s:31:"EventManagerTest::testSendAsync";d:0.001;s:42:"RequestUtilsTest::testProxyHeadersWithIpv4";d:0;s:42:"RequestUtilsTest::testProxyHeadersWithIpv6";d:0;s:53:"RequestUtilsTest::testProxyHeadersWithMultipleHeaders";d:0;s:62:"RequestUtilsTest::testIpExtractionUsingXFORWARDEDFORHeaderIpv6";d:0;s:70:"RequestUtilsTest::testIpExtractionUsingXFORWARDEDFORHeaderMultipleIpv4";d:0;s:60:"RequestUtilsTest::testIpExtractionUsingHTTPXREALIPHeaderIpv6";d:0;s:68:"RequestUtilsTest::testIpExtractionUsingHTTPXREALIPHeaderMultipleIpv4";d:0;s:59:"RequestUtilsTest::testIpExtractionUsingREMOTEADDRHeaderIpv6";d:0;s:67:"RequestUtilsTest::testIpExtractionUsingREMOTEADDRHeaderMultipleIpv4";d:0;s:58:"RequestUtilsTest::testIpExtractionUsingXClientIpHeaderIpv6";d:0;s:66:"RequestUtilsTest::testIpExtractionUsingXClientIpHeaderMultipleIpv4";d:0;s:56:"RequestUtilsTest::testIpExtractionUsingXRealIpHeaderIpv6";d:0;s:64:"RequestUtilsTest::testIpExtractionUsingXRealIpHeaderMultipleIpv4";d:0;s:61:"RequestUtilsTest::testIpExtractionUsingForwardedForHeaderIpv6";d:0;s:69:"RequestUtilsTest::testIpExtractionUsingForwardedForHeaderMultipleIpv4";d:0;s:65:"RequestUtilsTest::testIpExtractionUsingXClusterClientIpHeaderIpv6";d:0;s:73:"RequestUtilsTest::testIpExtractionUsingXClusterClientIpHeaderMultipleIpv4";d:0;s:59:"RequestUtilsTest::testIpExtractionUsingXForwardedHeaderIpv6";d:0;s:67:"RequestUtilsTest::testIpExtractionUsingXForwardedHeaderMultipleIpv4";d:0;s:58:"RequestUtilsTest::testIpExtractionUsingForwardedHeaderIpv6";d:0;s:66:"RequestUtilsTest::testIpExtractionUsingForwardedHeaderMultipleIpv4";d:0;s:52:"RequestUtilsTest::testIpExtractionUsingViaHeaderIpv6";d:0;s:60:"RequestUtilsTest::testIpExtractionUsingViaHeaderMultipleIpv4";d:0;s:62:"RequestUtilsTest::testIpExtractionUsingHTTPXCLIENTIPHeaderIpv6";d:0;s:70:"RequestUtilsTest::testIpExtractionUsingHTTPXCLIENTIPHeaderMultipleIpv4";d:0;s:57:"RequestUtilsTest::testExtractionPriorityWithXForwardedFor";d:0;s:60:"RequestUtilsTest::testExtractionPriorityWithoutXForwardedFor";d:0;}}}

README.md

Lines changed: 30 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -68,9 +68,9 @@ Attach `securenative.json` file to your root folder:
6868

6969
```json
7070
{
71-
"SECURENATIVE_API_KEY": "SOME_API_KEY",
72-
"SECURENATIVE_APP_NAME": "SOME_APP_NAME",
73-
"SECURENATIVE_API_URL": "SOME_API_URL",
71+
"SECURENATIVE_API_KEY": "YOUR_API_KEY",
72+
"SECURENATIVE_APP_NAME": "APP_NAME",
73+
"SECURENATIVE_API_URL": "API_URL",
7474
"SECURENATIVE_INTERVAL": 1000,
7575
"SECURENATIVE_MAX_EVENTS": 100,
7676
"SECURENATIVE_TIMEOUT": 1500,
@@ -161,10 +161,12 @@ SecureNative::track(array(
161161
**Example**
162162

163163
```php
164+
$options = new SecureNativeOptions();
165+
164166
$ver = SecureNative::verify(array(
165167
'event' => EventTypes::VERIFY,
166168
'userId' => '1234',
167-
'context' => SecureNativeContext::fromRequest(),
169+
'context' => SecureNative::fromRequest(),
168170
'userTraits' => (object)[
169171
'name' => 'Your Name',
170172
'email' => 'name@gmail.com'
@@ -187,3 +189,27 @@ if ($verified) {
187189
// Request is trusted (coming from SecureNative)
188190
}
189191
```
192+
193+
## Extract proxy headers from cloud providers
194+
195+
You can specify custom header keys to allow extraction of client ip from different providers.
196+
This example demonstrates the usage of proxy headers for ip extraction from Cloudflare.
197+
198+
### Option 1: Using config file
199+
```json
200+
{
201+
"SECURENATIVE_API_KEY": "YOUR_API_KEY",
202+
"SECURENATIVE_PROXY_HEADERS": ["CF-Connecting-IP"]
203+
}
204+
```
205+
206+
Initialize sdk as shown above.
207+
208+
### Options 2: Using ConfigurationBuilder
209+
210+
```php
211+
$options = new SecureNativeOptions();
212+
$options->setProxyHeaders(["CF-Connecting-IP"]);
213+
214+
SecureNative::init();
215+
```

0 commit comments

Comments
 (0)