Compare commits

...

6 Commits

10 changed files with 95 additions and 13 deletions

View File

@ -27,6 +27,9 @@ dependencies {
implementation 'org.springframework.boot:spring-boot-starter-web'
testImplementation 'org.springframework.boot:spring-boot-starter-test'
testRuntimeOnly 'org.junit.platform:junit-platform-launcher'
implementation 'org.springframework.boot:spring-boot-starter-data-jpa'
runtimeOnly 'org.postgresql:postgresql'
implementation 'org.hibernate.validator:hibernate-validator'
}
tasks.named('test') {

View File

@ -12,6 +12,20 @@ services:
- OAUTH_CLIENT_ID=${OAUTH_CLIENT_ID}
- OAUTH_CLIENT_SECRET=${OAUTH_CLIENT_SECRET}
- HOST_PORT=${HOST_PORT}
- POSTGRES_USER=${POSTGRES_USERNAME}
- POSTGRES_PASSWORD=${POSTGRES_PASSWORD}
env_file:
- stack.env
restart: unless-stopped
postgres:
image: postgres:15-alpine
container_name: cftunnel-db
environment:
POSTGRES_DB: cftunnel
POSTGRES_USER: ${POSTGRES_USERNAME}
POSTGRES_PASSWORD: ${POSTGRES_PASSWORD}
restart: unless-stopped
ports:
- "${DB_PORT}:5432"
volumes:
- ${DB_PATH}:/var/lib/postgresql/data

View File

@ -11,12 +11,12 @@ import java.util.ArrayList;
@Configuration
public class OpenApiConfig {
@Value("${api.corsResolveUrl}")
private String corsResolveUrl;
@Value("${api.baseUrl}")
private String baseUrl;
@Bean
public OpenAPI openAPI(){
Server httpsServer = new Server().url(corsResolveUrl);
Server httpsServer = new Server().url(baseUrl);
OpenAPI openApi = new OpenAPI();
ArrayList<Server> servers = new ArrayList<>();
servers.add(httpsServer);

View File

@ -29,8 +29,9 @@ public class SecuirtyConfig {
http
.authorizeHttpRequests(auth -> auth
.anyRequest().authenticated()
)
.with(new OAuth2LoginConfigurer<>(), oauth2 -> oauth2.userInfoEndpoint(u -> u.oidcUserService(customOidcUserConfiguration)));
).csrf(csrf -> csrf.disable())
.with(new OAuth2LoginConfigurer<>(),
oauth2 -> oauth2.userInfoEndpoint(u -> u.oidcUserService(customOidcUserConfiguration)));
return http.build();

View File

@ -87,7 +87,7 @@ public class TunnelController implements ErrorController {
return ResponseEntity.ok(jsonResponse);
}
// 50df9101-f625-4618-b7c5-100338a57124
// 50df9101-f625-4618-b7c5-100338a57124
@PreAuthorize("hasAnyRole('ADMIN')")
@PutMapping("/tunnel/{tunnelId}/add")
public ResponseEntity<Map<String, Object>> addTunnelconfiguration(@PathVariable String tunnelId, @RequestBody Ingress ingress) throws JsonProcessingException {

View File

@ -1 +1,10 @@
api.corsResolveUrl=http://localhost:8080
api.baseUrl=http://localhost:8080
management.health.db.enabled=true
management.endpoints.web.exposure.include=health
management.endpoint.health.show-details=always
logging.level.org.hibernate.SQL=DEBUG
debug=true
spring.datasource.url=jdbc:postgresql://localhost:5432/cftunnel

View File

@ -1 +1 @@
api.corsResolveUrl=https://cftunnels.hithomelabs.com
api.baseUrl=https://cftunnels.hithomelabs.com

View File

@ -1 +1 @@
api.corsResolveUrl=https://testcf.hithomelabs.com
api.baseUrl=https://testcf.hithomelabs.com

View File

@ -4,6 +4,12 @@ cloudflare.apiKey=${CLOUDFLARE_API_KEY}
cloudflare.email=${CLOUDFLARE_EMAIL}
spring.profiles.active=${ENV}
# set root level
logging.level.root=INFO
# package-specific
logging.level.org.springframework=TRACE
logging.level.com.myapp=INFO
/ * * Masking sure app works behind a reverse proxy
server.forward-headers-strategy=framework
@ -17,3 +23,15 @@ spring.security.oauth2.client.provider.cftunnels.token-uri=https://auth.hithomel
spring.security.oauth2.client.provider.cftunnels.user-info-uri=https://auth.hithomelabs.com/application/o/userinfo/
spring.security.oauth2.client.provider.cftunnels.jwk-set-uri=https://auth.hithomelabs.com/application/o/cftunnels/jwks/
spring.security.oauth2.client.provider.cftunnels.issuer-uri=https://auth.hithomelabs.com/application/o/cftunnels/
spring.datasource.url=jdbc:postgresql://192.168.0.100:5432/cftunnel
spring.datasource.username=${POSTGRES_USERNAME}
spring.datasource.password=${POSTGRES_PASSWORD}
spring.datasource.driver-class-name=org.postgresql.Driver
spring.sql.init.mode=never
spring.jpa.hibernate.ddl-auto=update
spring.jpa.show-sql=true
spring.jpa.properties.hibernate.dialect=org.hibernate.dialect.PostgreSQLDialect
spring.jpa.open-in-view=false

View File

@ -0,0 +1,37 @@
-- schema.sql
-- Roles table
CREATE TABLE IF NOT EXISTS roles (
role_id SERIAL PRIMARY KEY,
role_name VARCHAR(50) UNIQUE NOT NULL
);
-- Users table
CREATE TABLE IF NOT EXISTS users (
user_id SERIAL PRIMARY KEY,
user_name VARCHAR(100) NOT NULL,
password VARCHAR(255) NOT NULL
);
-- User-Role Mapping table (many-to-many relationship)
CREATE TABLE IF NOT EXISTS user_role_mapping (
mapping_id SERIAL PRIMARY KEY,
user_id INTEGER NOT NULL REFERENCES users(user_id) ON DELETE CASCADE,
role_id INTEGER NOT NULL REFERENCES roles(role_id) ON DELETE CASCADE
);
-- Tunnels table
CREATE TABLE IF NOT EXISTS tunnels (
tunnel_id SERIAL PRIMARY KEY,
tunnel_name VARCHAR(100) NOT NULL,
tunnel_type VARCHAR(50) NOT NULL
);
-- Mapping Requests table
CREATE TABLE IF NOT EXISTS mapping_requests (
request_id SERIAL PRIMARY KEY,
request_date TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
status VARCHAR(20) NOT NULL,
user_id INTEGER REFERENCES users(user_id) ON DELETE SET NULL,
tunnel_id INTEGER REFERENCES tunnels(tunnel_id) ON DELETE SET NULL
);