|
@@ -18,7 +18,7 @@ func init() {
|
|
|
|
|
|
var expressions = []string{
|
|
var expressions = []string{
|
|
`([ ]([A-Za-z0-9-_]{4,}\.)+\w+)`, // domain name
|
|
`([ ]([A-Za-z0-9-_]{4,}\.)+\w+)`, // domain name
|
|
- `([ ]/[A-Za-z0-9-_/.]{3,}[ ])`, // URI path (also partial)
|
|
|
|
|
|
+ `([ ]/[A-Za-z0-9-_/.]{4,}[ ])`, // URI path (also partial)
|
|
`[[:alpha:]]{4,32}`, // alpha digit token
|
|
`[[:alpha:]]{4,32}`, // alpha digit token
|
|
`([0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3})`, // IP address
|
|
`([0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3})`, // IP address
|
|
`([0-9a-fA-F]{8}\-[0-9a-fA-F]{4}\-[0-9a-fA-F]{4}\-[0-9a-fA-F]{4}\-[0-9a-fA-F]{12})`, // UUID
|
|
`([0-9a-fA-F]{8}\-[0-9a-fA-F]{4}\-[0-9a-fA-F]{4}\-[0-9a-fA-F]{4}\-[0-9a-fA-F]{12})`, // UUID
|
|
@@ -35,9 +35,9 @@ func passAndLearn(resp *http.Response) error {
|
|
req := ProxyFlow.request
|
|
req := ProxyFlow.request
|
|
|
|
|
|
switch {
|
|
switch {
|
|
- case resp.StatusCode == 401:
|
|
|
|
|
|
+ case isAuth(resp):
|
|
log.Println("401: We don't want to store credentials")
|
|
log.Println("401: We don't want to store credentials")
|
|
- case resp.StatusCode > 399:
|
|
|
|
|
|
+ case IsError(resp):
|
|
buf := bytes.NewBufferString(BlockMessage)
|
|
buf := bytes.NewBufferString(BlockMessage)
|
|
resp.Body = ioutil.NopCloser(buf)
|
|
resp.Body = ioutil.NopCloser(buf)
|
|
resp.Status = "403 Forbidden"
|
|
resp.Status = "403 Forbidden"
|
|
@@ -47,7 +47,7 @@ func passAndLearn(resp *http.Response) error {
|
|
log.Println("Filing inside bad class")
|
|
log.Println("Filing inside bad class")
|
|
feedRequest(req, "BAD")
|
|
feedRequest(req, "BAD")
|
|
ControPlane.StatsTokens <- "DOWNGRADE"
|
|
ControPlane.StatsTokens <- "DOWNGRADE"
|
|
- default:
|
|
|
|
|
|
+ case isSuccess(resp):
|
|
log.Println("Filing inside Good Class: ", resp.StatusCode)
|
|
log.Println("Filing inside Good Class: ", resp.StatusCode)
|
|
feedRequest(req, "GOOD")
|
|
feedRequest(req, "GOOD")
|
|
}
|
|
}
|
|
@@ -69,12 +69,12 @@ func blockAndlearn(resp *http.Response) error {
|
|
resp.Header.Set("Content-Encoding", "none")
|
|
resp.Header.Set("Content-Encoding", "none")
|
|
|
|
|
|
switch {
|
|
switch {
|
|
- case resp.StatusCode == 401:
|
|
|
|
|
|
+ case isAuth(resp):
|
|
log.Println("401: We don't want to store credentials")
|
|
log.Println("401: We don't want to store credentials")
|
|
- case resp.StatusCode > 399:
|
|
|
|
|
|
+ case IsError(resp):
|
|
log.Println("Filing inside bad class")
|
|
log.Println("Filing inside bad class")
|
|
feedRequest(req, "BAD")
|
|
feedRequest(req, "BAD")
|
|
- default:
|
|
|
|
|
|
+ case isSuccess(resp):
|
|
log.Println("Filing inside Good Class: ", resp.StatusCode)
|
|
log.Println("Filing inside Good Class: ", resp.StatusCode)
|
|
ControPlane.StatsTokens <- "UPGRADED"
|
|
ControPlane.StatsTokens <- "UPGRADED"
|
|
feedRequest(req, "GOOD")
|
|
feedRequest(req, "GOOD")
|
|
@@ -155,3 +155,15 @@ func Unique(slice []string) []string {
|
|
}
|
|
}
|
|
return uniqSlice
|
|
return uniqSlice
|
|
}
|
|
}
|
|
|
|
+
|
|
|
|
+func isSuccess(resp *http.Response) bool {
|
|
|
|
+ return resp.StatusCode <= 299
|
|
|
|
+}
|
|
|
|
+
|
|
|
|
+func isAuth(resp *http.Response) bool {
|
|
|
|
+ return resp.StatusCode == 401
|
|
|
|
+}
|
|
|
|
+
|
|
|
|
+func IsError(resp *http.Response) bool {
|
|
|
|
+ return resp.StatusCode >= 400
|
|
|
|
+}
|