forked from Hithomelabs/CFTunnels
Compare commits
82 Commits
0cd1a827ab
...
ccfe79f7f1
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
ccfe79f7f1 | ||
|
|
a40865e989 | ||
| 5ea76dab56 | |||
| 4c7f0dad4b | |||
| 82244741ed | |||
| 7d450e0023 | |||
| 4377b437d1 | |||
| 54320b8085 | |||
| 39b3c0bb48 | |||
| 2f67dbfbca | |||
| 0130ee364a | |||
| 9e5af51cf9 | |||
| 22d5310223 | |||
| 24beaf678b | |||
| 38a0bd9659 | |||
| 667f7c81dd | |||
| 4d7a52b0ba | |||
| 77f8395837 | |||
| 5cc342462c | |||
| 3b572787f8 | |||
| ecf87ad1e3 | |||
| dd67fe89c9 | |||
| c6af4cf227 | |||
| 4a0c4dba52 | |||
| 4a545d8a30 | |||
| f9c8d9fcca | |||
| b4112eb005 | |||
| 2f61047255 | |||
| c380f8da10 | |||
| 8efa0e495e | |||
| 9561772b9c | |||
| 35e83eed48 | |||
| a239a7e143 | |||
| eaaa1f7cc3 | |||
| af51165e49 | |||
| 8b90815f69 | |||
| df63ab652f | |||
| ce2f83106c | |||
| b5886c4eca | |||
| 770da7d675 | |||
| af7adec1cb | |||
| 19ef13d8f7 | |||
| 58d8f2fed0 | |||
| 089c7facee | |||
| 5a179ae287 | |||
| 8146145be5 | |||
| a3ca19d48a | |||
| 014cac1fc0 | |||
| b02a334dbe | |||
| 60711270c4 | |||
| 431b4ff0c7 | |||
| 889e29d82e | |||
| 611fe50a25 | |||
| a72d751951 | |||
| c09615d066 | |||
| d3456b5efd | |||
| 1dd7b9143d | |||
| 926feca855 | |||
| babd86e063 | |||
| c3fddb29dd | |||
| 07f9f2f479 | |||
| 475ac22f79 | |||
| 9423178737 | |||
| e16548b54a | |||
| e40bcce202 | |||
| c45df6867f | |||
| 2a242df197 | |||
| baef77d389 | |||
| 50d2fc099b | |||
| f10c52adcb | |||
| c0b881974b | |||
| 524be544bc | |||
| 72ada2d0dd | |||
| 507fd17539 | |||
| f64579e393 | |||
| 89f6620214 | |||
| c90756ebe3 | |||
| 558b570121 | |||
| 75eb408980 | |||
| 5d74960c7f | |||
| cef7dd18e2 | |||
| 6d115abb95 |
@ -20,9 +20,6 @@ public class CustomOidcUserConfiguration extends OidcUserService {
|
|||||||
@Autowired
|
@Autowired
|
||||||
AuthoritiesToGroupMapping authoritiesToGroupMapping;
|
AuthoritiesToGroupMapping authoritiesToGroupMapping;
|
||||||
|
|
||||||
@Autowired
|
|
||||||
UserRepository userRepository;
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public OidcUser loadUser(OidcUserRequest userRequest) {
|
public OidcUser loadUser(OidcUserRequest userRequest) {
|
||||||
// * * Delegate to the default implementation for loading user and claims
|
// * * Delegate to the default implementation for loading user and claims
|
||||||
@ -39,16 +36,6 @@ public class CustomOidcUserConfiguration extends OidcUserService {
|
|||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
String email = oidcUser.getEmail();
|
|
||||||
String name = oidcUser.getNickName();
|
|
||||||
|
|
||||||
userRepository.findByEmail(email).orElseGet(() -> {
|
|
||||||
User user = new User();
|
|
||||||
user.setEmail(email);
|
|
||||||
user.setName(name);
|
|
||||||
return userRepository.save(user);
|
|
||||||
});
|
|
||||||
|
|
||||||
// * * Return a new DefaultOidcUser with merged authorities
|
// * * Return a new DefaultOidcUser with merged authorities
|
||||||
return new DefaultOidcUser(
|
return new DefaultOidcUser(
|
||||||
mappedAuthorities,
|
mappedAuthorities,
|
||||||
|
|||||||
@ -4,6 +4,7 @@ import com.fasterxml.jackson.core.JsonProcessingException;
|
|||||||
import com.hithomelabs.CFTunnels.Config.AuthoritiesToGroupMapping;
|
import com.hithomelabs.CFTunnels.Config.AuthoritiesToGroupMapping;
|
||||||
import com.hithomelabs.CFTunnels.Config.CloudflareConfig;
|
import com.hithomelabs.CFTunnels.Config.CloudflareConfig;
|
||||||
import com.hithomelabs.CFTunnels.Config.RestTemplateConfig;
|
import com.hithomelabs.CFTunnels.Config.RestTemplateConfig;
|
||||||
|
import com.hithomelabs.CFTunnels.Entity.Request;
|
||||||
import com.hithomelabs.CFTunnels.Entity.User;
|
import com.hithomelabs.CFTunnels.Entity.User;
|
||||||
import com.hithomelabs.CFTunnels.Headers.AuthKeyEmailHeader;
|
import com.hithomelabs.CFTunnels.Headers.AuthKeyEmailHeader;
|
||||||
import com.hithomelabs.CFTunnels.Models.Config;
|
import com.hithomelabs.CFTunnels.Models.Config;
|
||||||
@ -141,13 +142,13 @@ public class TunnelController implements ErrorController {
|
|||||||
return ResponseEntity.ok(jsonResponse);
|
return ResponseEntity.ok(jsonResponse);
|
||||||
}
|
}
|
||||||
|
|
||||||
@PreAuthorize("hasAnyRole('DEVELOPER')")
|
// @PreAuthorize("hasAnyRole('DEVELOPER')")
|
||||||
@PutMapping("/tunnel/{tunnelId}/request")
|
@PutMapping("/tunnel/{tunnelId}/request")
|
||||||
public ResponseEntity<Ingress> createTunnelMappingRequest(@PathVariable UUID tunnelId, @AuthenticationPrincipal OidcUser oidcUser, @RequestBody Ingress ingess){
|
public ResponseEntity<Request> createTunnelMappingRequest(@PathVariable String tunnelId, @AuthenticationPrincipal OidcUser oidcUser, @RequestBody Ingress ingess){
|
||||||
String email = oidcUser.getEmail();
|
Request request = mappingRequestService.createMappingRequest(tunnelId, ingess, oidcUser);
|
||||||
User user = userRepository.findByEmail(email).orElseThrow(() -> new RuntimeException("User Not Found: " + email));
|
if(request.getId() != null)
|
||||||
mappingRequestService.createMappingRequest(tunnelId, ingess, user);
|
return ResponseEntity.status(HttpStatus.CREATED).body(request);
|
||||||
return ResponseEntity.ok(ingess);
|
return ResponseEntity.status(HttpStatus.BAD_REQUEST).build();
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@ -47,13 +47,4 @@ public class Ingress {
|
|||||||
public void setOriginRequest(Map<String, Object> originRequest) {
|
public void setOriginRequest(Map<String, Object> originRequest) {
|
||||||
this.originRequest = originRequest;
|
this.originRequest = originRequest;
|
||||||
}
|
}
|
||||||
|
|
||||||
public int getPort(){
|
|
||||||
URI url = URI.create(this.service);
|
|
||||||
return url.getPort();
|
|
||||||
}
|
|
||||||
|
|
||||||
public String getSubdomain(){
|
|
||||||
return this.hostname.split("//")[0];
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|||||||
@ -10,8 +10,10 @@ import com.hithomelabs.CFTunnels.Repositories.RequestRepository;
|
|||||||
import com.hithomelabs.CFTunnels.Repositories.TunnelRepository;
|
import com.hithomelabs.CFTunnels.Repositories.TunnelRepository;
|
||||||
import com.hithomelabs.CFTunnels.Repositories.UserRepository;
|
import com.hithomelabs.CFTunnels.Repositories.UserRepository;
|
||||||
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
|
import org.springframework.security.oauth2.core.oidc.user.OidcUser;
|
||||||
import org.springframework.stereotype.Service;
|
import org.springframework.stereotype.Service;
|
||||||
|
|
||||||
|
import java.util.Map;
|
||||||
import java.util.UUID;
|
import java.util.UUID;
|
||||||
|
|
||||||
@Service
|
@Service
|
||||||
@ -31,10 +33,7 @@ public class MappingRequestService {
|
|||||||
|
|
||||||
public Mapping createMapping(UUID tunnelId, Ingress ingress){
|
public Mapping createMapping(UUID tunnelId, Ingress ingress){
|
||||||
Tunnel tunnel = tunnelRepository.findByCfTunnelId(tunnelId).orElseThrow(() -> new RuntimeException("Tunnel not found"));
|
Tunnel tunnel = tunnelRepository.findByCfTunnelId(tunnelId).orElseThrow(() -> new RuntimeException("Tunnel not found"));
|
||||||
Mapping mapping = new Mapping();
|
Mapping mapping = createMappingFromTunnelIngress(tunnel, ingress);
|
||||||
mapping.setTunnel(tunnel);
|
|
||||||
mapping.setPort(ingress.getPort());
|
|
||||||
mapping.setSubdomain(ingress.getSubdomain());
|
|
||||||
return mappingRepository.save(mapping);
|
return mappingRepository.save(mapping);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -46,8 +45,27 @@ public class MappingRequestService {
|
|||||||
return requestRepository.save(request);
|
return requestRepository.save(request);
|
||||||
}
|
}
|
||||||
|
|
||||||
public Request createMappingRequest(UUID tunnelId, Ingress ingress, User user){
|
public Request createMappingRequest(String tunnelId, Ingress ingress, OidcUser oidcUser){
|
||||||
Mapping mapping = createMapping(tunnelId, ingress);
|
User user = userRepository.findByEmail(oidcUser.getEmail()).orElseGet(()-> mapUser(oidcUser));
|
||||||
|
Mapping mapping = createMapping(UUID.fromString(tunnelId), ingress);
|
||||||
return createRequest(mapping, user);
|
return createRequest(mapping, user);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public User mapUser(OidcUser oidcUser){
|
||||||
|
String email = oidcUser.getEmail();
|
||||||
|
String name = oidcUser.getNickName();
|
||||||
|
User user = new User();
|
||||||
|
user.setEmail(email);
|
||||||
|
user.setName(name);
|
||||||
|
userRepository.save(user);
|
||||||
|
return user;
|
||||||
|
}
|
||||||
|
|
||||||
|
public Mapping createMappingFromTunnelIngress(Tunnel tunnel, Ingress ingress){
|
||||||
|
Mapping mapping = new Mapping();
|
||||||
|
mapping.setTunnel(tunnel);
|
||||||
|
mapping.setPort(Integer.parseInt(ingress.getService().split(":")[2]));
|
||||||
|
mapping.setSubdomain(ingress.getHostname().split("\\.")[0]);
|
||||||
|
return mapping;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user