Add properties for enhanced recursive lookup queries
This commit is contained in:
@@ -22,6 +22,7 @@ package io.kamax.mxisd.controller.v1
|
|||||||
|
|
||||||
import groovy.json.JsonOutput
|
import groovy.json.JsonOutput
|
||||||
import groovy.json.JsonSlurper
|
import groovy.json.JsonSlurper
|
||||||
|
import io.kamax.mxisd.lookup.ALookupRequest
|
||||||
import io.kamax.mxisd.lookup.BulkLookupRequest
|
import io.kamax.mxisd.lookup.BulkLookupRequest
|
||||||
import io.kamax.mxisd.lookup.SingleLookupRequest
|
import io.kamax.mxisd.lookup.SingleLookupRequest
|
||||||
import io.kamax.mxisd.lookup.ThreePidMapping
|
import io.kamax.mxisd.lookup.ThreePidMapping
|
||||||
@@ -52,16 +53,24 @@ class MappingController {
|
|||||||
@Autowired
|
@Autowired
|
||||||
private SignatureManager signMgr
|
private SignatureManager signMgr
|
||||||
|
|
||||||
|
private void setRequesterInfo(ALookupRequest lookupReq, HttpServletRequest req) {
|
||||||
|
lookupReq.setRequester(req.getRemoteAddr())
|
||||||
|
String xff = req.getHeader("X-FORWARDED-FOR")
|
||||||
|
lookupReq.setRecursive(StringUtils.isNotBlank(xff))
|
||||||
|
if (lookupReq.isRecursive()) {
|
||||||
|
lookupReq.setRecurseHosts(Arrays.asList(xff.split(",")))
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
@RequestMapping(value = "/_matrix/identity/api/v1/lookup", method = GET)
|
@RequestMapping(value = "/_matrix/identity/api/v1/lookup", method = GET)
|
||||||
String lookup(HttpServletRequest request, @RequestParam String medium, @RequestParam String address) {
|
String lookup(HttpServletRequest request, @RequestParam String medium, @RequestParam String address) {
|
||||||
String remote = StringUtils.defaultIfBlank(request.getHeader("X-FORWARDED-FOR"), request.getRemoteAddr())
|
|
||||||
log.info("Got request from {}", remote)
|
|
||||||
|
|
||||||
SingleLookupRequest lookupRequest = new SingleLookupRequest()
|
SingleLookupRequest lookupRequest = new SingleLookupRequest()
|
||||||
lookupRequest.setRequester(remote)
|
setRequesterInfo(lookupRequest, request)
|
||||||
lookupRequest.setType(medium)
|
lookupRequest.setType(medium)
|
||||||
lookupRequest.setThreePid(address)
|
lookupRequest.setThreePid(address)
|
||||||
|
|
||||||
|
log.info("Got request from {} - Is recursive? {}", lookupRequest.getRequester(), lookupRequest.isRecursive())
|
||||||
|
|
||||||
Optional<?> lookupOpt = strategy.find(lookupRequest)
|
Optional<?> lookupOpt = strategy.find(lookupRequest)
|
||||||
if (!lookupOpt.isPresent()) {
|
if (!lookupOpt.isPresent()) {
|
||||||
log.info("No mapping was found, return empty JSON object")
|
log.info("No mapping was found, return empty JSON object")
|
||||||
@@ -79,11 +88,9 @@ class MappingController {
|
|||||||
|
|
||||||
@RequestMapping(value = "/_matrix/identity/api/v1/bulk_lookup", method = POST)
|
@RequestMapping(value = "/_matrix/identity/api/v1/bulk_lookup", method = POST)
|
||||||
String bulkLookup(HttpServletRequest request) {
|
String bulkLookup(HttpServletRequest request) {
|
||||||
String remote = StringUtils.defaultIfBlank(request.getHeader("X-FORWARDED-FOR"), request.getRemoteAddr())
|
|
||||||
log.info("Got request from {}", remote)
|
|
||||||
|
|
||||||
BulkLookupRequest lookupRequest = new BulkLookupRequest()
|
BulkLookupRequest lookupRequest = new BulkLookupRequest()
|
||||||
lookupRequest.setRequester(remote)
|
setRequesterInfo(lookupRequest, request)
|
||||||
|
log.info("Got request from {} - Is recursive? {}", lookupRequest.getRequester(), lookupRequest.isRecursive())
|
||||||
|
|
||||||
ClientBulkLookupRequest input = (ClientBulkLookupRequest) json.parseText(request.getInputStream().getText())
|
ClientBulkLookupRequest input = (ClientBulkLookupRequest) json.parseText(request.getInputStream().getText())
|
||||||
List<ThreePidMapping> mappings = new ArrayList<>()
|
List<ThreePidMapping> mappings = new ArrayList<>()
|
||||||
|
@@ -20,9 +20,22 @@
|
|||||||
|
|
||||||
package io.kamax.mxisd.lookup;
|
package io.kamax.mxisd.lookup;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
public abstract class ALookupRequest {
|
public abstract class ALookupRequest {
|
||||||
|
|
||||||
|
private String id;
|
||||||
private String requester;
|
private String requester;
|
||||||
|
private boolean isRecursive;
|
||||||
|
private List<String> recurseHosts;
|
||||||
|
|
||||||
|
public String getId() {
|
||||||
|
return id;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setId(String id) {
|
||||||
|
this.id = id;
|
||||||
|
}
|
||||||
|
|
||||||
public String getRequester() {
|
public String getRequester() {
|
||||||
return requester;
|
return requester;
|
||||||
@@ -32,4 +45,20 @@ public abstract class ALookupRequest {
|
|||||||
this.requester = requester;
|
this.requester = requester;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public boolean isRecursive() {
|
||||||
|
return isRecursive;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setRecursive(boolean recursive) {
|
||||||
|
isRecursive = recursive;
|
||||||
|
}
|
||||||
|
|
||||||
|
public List<String> getRecurseHosts() {
|
||||||
|
return recurseHosts;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setRecurseHosts(List<String> recurseHosts) {
|
||||||
|
this.recurseHosts = recurseHosts;
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user