Added user access firewall rules
This commit is contained in:
parent
46b0419acc
commit
6d7cd990b7
@ -20,6 +20,7 @@ import dorkbox.api.dns.CreateDnsRecord
|
|||||||
import dorkbox.api.dns.DeleteDnsRecord
|
import dorkbox.api.dns.DeleteDnsRecord
|
||||||
import dorkbox.api.dns.DnsRecord
|
import dorkbox.api.dns.DnsRecord
|
||||||
import dorkbox.api.dns.UpdateDnsRecord
|
import dorkbox.api.dns.UpdateDnsRecord
|
||||||
|
import dorkbox.api.firewall.AccessRule
|
||||||
import dorkbox.api.user.BillingHistory
|
import dorkbox.api.user.BillingHistory
|
||||||
import dorkbox.api.user.BillingProfile
|
import dorkbox.api.user.BillingProfile
|
||||||
import dorkbox.api.user.User
|
import dorkbox.api.user.User
|
||||||
@ -162,4 +163,16 @@ interface CloudflareActions {
|
|||||||
@Path("identifier") identifier: String
|
@Path("identifier") identifier: String
|
||||||
): Call<CfResponse<DeleteDnsRecord>>
|
): Call<CfResponse<DeleteDnsRecord>>
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Lists the access rules for the firewall.
|
||||||
|
*
|
||||||
|
* https://api.cloudflare.com/#dns-records-for-a-zone-delete-dns-record
|
||||||
|
*/
|
||||||
|
@Headers("Content-Type: application/json")
|
||||||
|
@GET("user/firewall/access_rules/rules")
|
||||||
|
fun listAccessRules(
|
||||||
|
@Header("X-Auth-Email") email: String,
|
||||||
|
@Header("X-Auth-Key") key: String
|
||||||
|
): Call<CfResponse<List<AccessRule>>>
|
||||||
|
|
||||||
}
|
}
|
||||||
|
109
src/dorkbox/api/firewall/AccessRule.kt
Normal file
109
src/dorkbox/api/firewall/AccessRule.kt
Normal file
@ -0,0 +1,109 @@
|
|||||||
|
/*
|
||||||
|
* Copyright 2019 dorkbox, llc
|
||||||
|
*
|
||||||
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
* you may not use this file except in compliance with the License.
|
||||||
|
* You may obtain a copy of the License at
|
||||||
|
*
|
||||||
|
* http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
*
|
||||||
|
* Unless required by applicable law or agreed to in writing, software
|
||||||
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
* See the License for the specific language governing permissions and
|
||||||
|
* limitations under the License.
|
||||||
|
*/
|
||||||
|
package dorkbox.api.firewall
|
||||||
|
|
||||||
|
import com.squareup.moshi.Json
|
||||||
|
import dorkbox.api.core.ISO8601
|
||||||
|
import java.time.LocalDateTime
|
||||||
|
|
||||||
|
/**
|
||||||
|
* https://api.cloudflare.com/#user-level-firewall-access-rule-properties
|
||||||
|
*/
|
||||||
|
class AccessRule {
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Access rule identifier tag
|
||||||
|
*/
|
||||||
|
@field:[Json(name = "id")]
|
||||||
|
val id = ""
|
||||||
|
|
||||||
|
/**
|
||||||
|
* A personal note about the rule. Typically used as a reminder or explanation for the rule.
|
||||||
|
*/
|
||||||
|
@field:[Json(name = "notes")]
|
||||||
|
val notes = ""
|
||||||
|
|
||||||
|
/**
|
||||||
|
* The possible modes the rule can be in.
|
||||||
|
*
|
||||||
|
* valid values: block, challenge, whitelist, js_challenge
|
||||||
|
*/
|
||||||
|
@field:[Json(name = "allowed_modes")]
|
||||||
|
val allowedModes = listOf<String>()
|
||||||
|
|
||||||
|
/**
|
||||||
|
* The action to apply to a matched request
|
||||||
|
*
|
||||||
|
* valid values: block, challenge, whitelist, js_challenge
|
||||||
|
*/
|
||||||
|
@field:[Json(name = "mode")]
|
||||||
|
val mode = ""
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Rule configuration
|
||||||
|
*/
|
||||||
|
@field:[Json(name = "configuration")]
|
||||||
|
val configuration = Configuration()
|
||||||
|
|
||||||
|
@field:[Json(name = "scope")]
|
||||||
|
val scope = Scope()
|
||||||
|
|
||||||
|
/**
|
||||||
|
* When the record was last modified
|
||||||
|
*/
|
||||||
|
@field:[Json(name = "modified_on") ISO8601]
|
||||||
|
var modifiedOn = LocalDateTime.now()
|
||||||
|
|
||||||
|
/**
|
||||||
|
* When the record was created
|
||||||
|
*/
|
||||||
|
@field:[Json(name = "created_on") ISO8601]
|
||||||
|
var createdOn = LocalDateTime.now()
|
||||||
|
|
||||||
|
override fun equals(other: Any?): Boolean {
|
||||||
|
if (this === other) return true
|
||||||
|
if (javaClass != other?.javaClass) return false
|
||||||
|
|
||||||
|
other as AccessRule
|
||||||
|
|
||||||
|
if (id != other.id) return false
|
||||||
|
if (notes != other.notes) return false
|
||||||
|
if (allowedModes != other.allowedModes) return false
|
||||||
|
if (mode != other.mode) return false
|
||||||
|
if (configuration != other.configuration) return false
|
||||||
|
if (scope != other.scope) return false
|
||||||
|
if (modifiedOn != other.modifiedOn) return false
|
||||||
|
if (createdOn != other.createdOn) return false
|
||||||
|
|
||||||
|
return true
|
||||||
|
}
|
||||||
|
|
||||||
|
override fun hashCode(): Int {
|
||||||
|
var result = id.hashCode()
|
||||||
|
result = 31 * result + notes.hashCode()
|
||||||
|
result = 31 * result + allowedModes.hashCode()
|
||||||
|
result = 31 * result + mode.hashCode()
|
||||||
|
result = 31 * result + configuration.hashCode()
|
||||||
|
result = 31 * result + scope.hashCode()
|
||||||
|
result = 31 * result + (modifiedOn?.hashCode() ?: 0)
|
||||||
|
result = 31 * result + (createdOn?.hashCode() ?: 0)
|
||||||
|
return result
|
||||||
|
}
|
||||||
|
|
||||||
|
override fun toString(): String {
|
||||||
|
return "AccessRule(id='$id', notes='$notes', allowedModes=$allowedModes, mode='$mode', configuration=$configuration, scope=$scope, modifiedOn=$modifiedOn, createdOn=$createdOn)"
|
||||||
|
}
|
||||||
|
}
|
65
src/dorkbox/api/firewall/Configuration.kt
Normal file
65
src/dorkbox/api/firewall/Configuration.kt
Normal file
@ -0,0 +1,65 @@
|
|||||||
|
/*
|
||||||
|
* Copyright 2019 dorkbox, llc
|
||||||
|
*
|
||||||
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
* you may not use this file except in compliance with the License.
|
||||||
|
* You may obtain a copy of the License at
|
||||||
|
*
|
||||||
|
* http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
*
|
||||||
|
* Unless required by applicable law or agreed to in writing, software
|
||||||
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
* See the License for the specific language governing permissions and
|
||||||
|
* limitations under the License.
|
||||||
|
*/
|
||||||
|
package dorkbox.api.firewall
|
||||||
|
|
||||||
|
import com.squareup.moshi.Json
|
||||||
|
|
||||||
|
/**
|
||||||
|
* https://api.cloudflare.com/#user-level-firewall-access-rule-properties
|
||||||
|
*/
|
||||||
|
class Configuration {
|
||||||
|
|
||||||
|
/**
|
||||||
|
* The request property to target
|
||||||
|
*
|
||||||
|
* ip, ip_range, asn, country
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
@field:[Json(name = "target")]
|
||||||
|
val target = ""
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* IP : The IP address to target in requests (198.51.100.4)
|
||||||
|
* IP_RANGE : The IP range to target in requests. Limited to /16 and /24 (198.51.100.4/16)
|
||||||
|
* ASN : The AS number to target in requests. (AS12345)
|
||||||
|
* COUNTRY : US, DE, etc
|
||||||
|
*/
|
||||||
|
@field:[Json(name = "value")]
|
||||||
|
val value = ""
|
||||||
|
|
||||||
|
override fun equals(other: Any?): Boolean {
|
||||||
|
if (this === other) return true
|
||||||
|
if (javaClass != other?.javaClass) return false
|
||||||
|
|
||||||
|
other as Configuration
|
||||||
|
|
||||||
|
if (target != other.target) return false
|
||||||
|
if (value != other.value) return false
|
||||||
|
|
||||||
|
return true
|
||||||
|
}
|
||||||
|
|
||||||
|
override fun hashCode(): Int {
|
||||||
|
var result = target.hashCode()
|
||||||
|
result = 31 * result + value.hashCode()
|
||||||
|
return result
|
||||||
|
}
|
||||||
|
|
||||||
|
override fun toString(): String {
|
||||||
|
return "Configuration(target='$target', value='$value')"
|
||||||
|
}
|
||||||
|
}
|
69
src/dorkbox/api/firewall/Scope.kt
Normal file
69
src/dorkbox/api/firewall/Scope.kt
Normal file
@ -0,0 +1,69 @@
|
|||||||
|
/*
|
||||||
|
* Copyright 2019 dorkbox, llc
|
||||||
|
*
|
||||||
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
* you may not use this file except in compliance with the License.
|
||||||
|
* You may obtain a copy of the License at
|
||||||
|
*
|
||||||
|
* http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
*
|
||||||
|
* Unless required by applicable law or agreed to in writing, software
|
||||||
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
* See the License for the specific language governing permissions and
|
||||||
|
* limitations under the License.
|
||||||
|
*/
|
||||||
|
package dorkbox.api.firewall
|
||||||
|
|
||||||
|
import com.squareup.moshi.Json
|
||||||
|
|
||||||
|
/**
|
||||||
|
* https://api.cloudflare.com/#user-level-firewall-access-rule-properties
|
||||||
|
*/
|
||||||
|
class Scope {
|
||||||
|
|
||||||
|
/**
|
||||||
|
* User identifier tag
|
||||||
|
*/
|
||||||
|
@field:[Json(name = "id")]
|
||||||
|
val id = ""
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Your contact email address
|
||||||
|
*/
|
||||||
|
@field:[Json(name = "email")]
|
||||||
|
val email = ""
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* The scope of the rule
|
||||||
|
*
|
||||||
|
* valid values: user
|
||||||
|
*/
|
||||||
|
@field:[Json(name = "type")]
|
||||||
|
val type = "user"
|
||||||
|
|
||||||
|
override fun equals(other: Any?): Boolean {
|
||||||
|
if (this === other) return true
|
||||||
|
if (javaClass != other?.javaClass) return false
|
||||||
|
|
||||||
|
other as Scope
|
||||||
|
|
||||||
|
if (id != other.id) return false
|
||||||
|
if (email != other.email) return false
|
||||||
|
if (type != other.type) return false
|
||||||
|
|
||||||
|
return true
|
||||||
|
}
|
||||||
|
|
||||||
|
override fun hashCode(): Int {
|
||||||
|
var result = id.hashCode()
|
||||||
|
result = 31 * result + email.hashCode()
|
||||||
|
result = 31 * result + type.hashCode()
|
||||||
|
return result
|
||||||
|
}
|
||||||
|
|
||||||
|
override fun toString(): String {
|
||||||
|
return "Scope(id='$id', email='$email', type='$type')"
|
||||||
|
}
|
||||||
|
}
|
Loading…
Reference in New Issue
Block a user