Simple HTTP/S proxy server made with goproxy. Support for JSON-configurable rejecting rules.
Silverplate comes with 2 JSON config file : config.json and rules.json. config.json is for general proxy configuration and rules.json is where you will be defining your rejecting rules. An example rule is already provided.
{
"rules": [
{
"type": "DstHostIs",
"value": "www.reddit.com",
"conditions": {
"hourRange": [9, 18]
},
"rejectMessage": "Not permitted during working hours",
"httpStatusCode": 403
}
]
}
| Key |
Description |
Value type |
Default value |
Accepted value |
| verboseMode |
Sets verbose mode. Verbose mode will print all requests output to the console. |
boolean |
true |
true / false |
| keepDestinationHeaders |
Whether or not the headers in the response should be kept before proxying. |
boolean |
true |
true / false |
| keepHeader |
Sets if proxy headers should be kept. |
boolean |
true |
true / false |
| port |
Port on which the proxy server will be started on. |
number |
3128 |
Any valid port number |
| handleNonProxyRequests |
When set to true, all requests that cannot be proxied will be forwarded to a separate HTTP handler function and served as HTTP. Otherwise these requests are discarded. |
boolean |
true |
true / false |
| Key |
Description |
Value type |
| type |
The type of rule on which to evaluate the value |
RuleType |
| value |
Value of the rule. This is dependent on the chosen type of rule. For example, for a DstHostIs rule, the value should be a valid FQDN. |
string |
| conditions |
Additionnal conditions to check in order to evaluate the rule to true |
Condition[] |
| rejectMessage |
The message displayed to the client if the request is rejected |
string |
| httpStatusCode |
The returned HTTP status code to set in the headers if the request is rejected |
number |
| Rule |
Description |
| UrlHasPrefix |
Whether the URL has a prefix that matches [value] |
| UrlIs |
The URL is a perfect match with [value] |
| ReqHostMatches |
The request hostname matches [value]. Should be one or more regular expressions. |
| ReqHostIs |
The request hostname is a perfect match with value [value]. Should be a string. |
| UrlMatches |
The URL matches one or more regular expressions |
| DstHostIs |
The destination FQDN is a perfect match with [value] |
| SrcIpIs |
The source IP is a perfect match with [value] |
| Condition |
Description |
Value type |
| hourRange |
Evaluates to true if the current hour is in range |
number[] |
Distributed under the MIT License. See LICENSE.txt for more information.