Skip to content

Commit 20ee269

Browse files
committed
Fix issues.
1 parent a7bb209 commit 20ee269

File tree

19 files changed

+910
-438
lines changed

19 files changed

+910
-438
lines changed

.local.env

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,9 @@
1-
SENTRIUS_VERSION=1.1.341
1+
SENTRIUS_VERSION=1.1.345
22
SENTRIUS_SSH_VERSION=1.1.41
33
SENTRIUS_KEYCLOAK_VERSION=1.1.53
44
SENTRIUS_AGENT_VERSION=1.1.42
55
SENTRIUS_AI_AGENT_VERSION=1.1.263
66
LLMPROXY_VERSION=1.0.78
77
LAUNCHER_VERSION=1.0.82
88
AGENTPROXY_VERSION=1.0.85
9-
SSHPROXY_VERSION=1.0.6
9+
SSHPROXY_VERSION=1.0.31

.local.env.bak

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,9 @@
1-
SENTRIUS_VERSION=1.1.341
1+
SENTRIUS_VERSION=1.1.345
22
SENTRIUS_SSH_VERSION=1.1.41
33
SENTRIUS_KEYCLOAK_VERSION=1.1.53
44
SENTRIUS_AGENT_VERSION=1.1.42
55
SENTRIUS_AI_AGENT_VERSION=1.1.263
66
LLMPROXY_VERSION=1.0.78
77
LAUNCHER_VERSION=1.0.82
88
AGENTPROXY_VERSION=1.0.85
9-
SSHPROXY_VERSION=1.0.6
9+
SSHPROXY_VERSION=1.0.31

api/src/main/java/io/sentrius/sso/websocket/AuditSocketHandler.java

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,8 +8,10 @@
88
import java.util.concurrent.ConcurrentHashMap;
99
import java.util.stream.Collectors;
1010
import java.util.stream.Stream;
11+
import io.sentrius.sso.core.integrations.ssh.DataWebSession;
1112
import io.sentrius.sso.core.services.security.CryptoService;
1213
import io.sentrius.sso.core.services.terminal.SessionTrackingService;
14+
import io.sentrius.sso.core.services.SshListenerService;
1315
import lombok.RequiredArgsConstructor;
1416
import lombok.extern.slf4j.Slf4j;
1517
import org.springframework.stereotype.Component;
@@ -43,7 +45,7 @@ public void afterConnectionEstablished(WebSocketSession session) throws Exceptio
4345
// Store the WebSocket session using the session ID from the query parameter
4446
sessions.put(sessionId, session);
4547
log.trace("*AUDITING New connection established, session ID: " + sessionId);
46-
sshListenerService.startAuditingSession(sessionId, session);
48+
sshListenerService.startAuditingSession(sessionId, new DataWebSession(session));
4749
} else {
4850
log.trace("Session ID not found in query parameters.");
4951
session.close(); // Close the session if no valid session ID is provided

api/src/main/java/io/sentrius/sso/websocket/ChatListenerService.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@
1919
import io.sentrius.sso.core.services.security.IntegrationSecurityTokenService;
2020
import io.sentrius.sso.core.services.terminal.SessionTrackingService;
2121
import io.sentrius.sso.core.utils.JsonUtil;
22+
import io.sentrius.sso.core.services.SshListenerService;
2223
import io.sentrius.sso.genai.ChatConversation;
2324
import io.sentrius.sso.genai.GenerativeAPI;
2425
import io.sentrius.sso.genai.GeneratorConfiguration;

api/src/main/java/io/sentrius/sso/websocket/TerminalWSHandler.java

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,10 +3,12 @@
33

44
import io.sentrius.sso.automation.auditing.Trigger;
55
import io.sentrius.sso.automation.auditing.TriggerAction;
6+
import io.sentrius.sso.core.integrations.ssh.DataWebSession;
67
import io.sentrius.sso.core.model.chat.ChatLog;
78
import io.sentrius.sso.core.services.ChatService;
89
import io.sentrius.sso.core.services.metadata.TerminalSessionMetadataService;
910
import io.sentrius.sso.core.services.security.CryptoService;
11+
import io.sentrius.sso.core.services.SshListenerService;
1012
import io.sentrius.sso.core.utils.StringUtils;
1113
import io.sentrius.sso.protobuf.Session;
1214
import io.sentrius.sso.core.services.terminal.SessionTrackingService;
@@ -57,7 +59,7 @@ public void afterConnectionEstablished(WebSocketSession session) throws Exceptio
5759
// Store the WebSocket session using the session ID from the query parameter
5860
sessions.put(sessionId, session);
5961
log.debug("New connection established, session ID: " + sessionId);
60-
sshListenerService.startListeningToSshServer(sessionId, session);
62+
sshListenerService.startListeningToSshServer(sessionId, new DataWebSession(session));
6163
} else {
6264
log.trace("Session ID not found in query parameters.");
6365
session.close(); // Close the session if no valid session ID is provided
Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
ALTER TABLE host_groups
2+
ADD COLUMN proxied_ssh_port INTEGER DEFAULT 0;

core/src/main/java/io/sentrius/sso/core/dto/HostGroupDTO.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,8 @@ public class HostGroupDTO {
1818
private String displayName;
1919
private String description;
2020
private int hostCount = 0;
21+
@Builder.Default
22+
private int proxiedSSHPort = 0;
2123
private ProfileConfiguration configuration;
2224
List<UserDTO> users = new ArrayList<>();
2325

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
package io.sentrius.sso.core.integrations.ssh;
2+
3+
import java.io.IOException;
4+
import org.springframework.web.socket.WebSocketMessage;
5+
6+
public interface DataSession {
7+
8+
String getId();
9+
10+
boolean isOpen();
11+
12+
void sendMessage(WebSocketMessage<?> message) throws IOException;
13+
}
Lines changed: 111 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,111 @@
1+
package io.sentrius.sso.core.integrations.ssh;
2+
3+
import java.io.IOException;
4+
import java.net.InetSocketAddress;
5+
import java.net.URI;
6+
import java.security.Principal;
7+
import java.util.List;
8+
import java.util.Map;
9+
import org.springframework.http.HttpHeaders;
10+
import org.springframework.web.socket.CloseStatus;
11+
import org.springframework.web.socket.WebSocketExtension;
12+
import org.springframework.web.socket.WebSocketSession;
13+
14+
public class DataWebSession implements DataSession, WebSocketSession {
15+
16+
private final WebSocketSession webSocketSession;
17+
18+
public DataWebSession(WebSocketSession webSocketSession) {
19+
this.webSocketSession = webSocketSession;
20+
}
21+
22+
@Override
23+
public String getId() {
24+
return webSocketSession.getId();
25+
}
26+
27+
@Override
28+
public URI getUri() {
29+
return webSocketSession.getUri();
30+
}
31+
32+
@Override
33+
public HttpHeaders getHandshakeHeaders() {
34+
return webSocketSession.getHandshakeHeaders();
35+
}
36+
37+
@Override
38+
public Map<String, Object> getAttributes() {
39+
return webSocketSession.getAttributes();
40+
}
41+
42+
@Override
43+
public Principal getPrincipal() {
44+
return webSocketSession.getPrincipal();
45+
}
46+
47+
@Override
48+
public InetSocketAddress getLocalAddress() {
49+
return webSocketSession.getLocalAddress();
50+
}
51+
52+
@Override
53+
public InetSocketAddress getRemoteAddress() {
54+
return webSocketSession.getRemoteAddress();
55+
}
56+
57+
@Override
58+
public String getAcceptedProtocol() {
59+
return webSocketSession.getAcceptedProtocol();
60+
}
61+
62+
@Override
63+
public void setTextMessageSizeLimit(int messageSizeLimit) {
64+
webSocketSession.setTextMessageSizeLimit(messageSizeLimit);
65+
}
66+
67+
@Override
68+
public int getTextMessageSizeLimit() {
69+
return webSocketSession.getTextMessageSizeLimit();
70+
}
71+
72+
@Override
73+
public void setBinaryMessageSizeLimit(int messageSizeLimit) {
74+
webSocketSession.setBinaryMessageSizeLimit(messageSizeLimit);
75+
}
76+
77+
@Override
78+
public int getBinaryMessageSizeLimit() {
79+
return webSocketSession.getBinaryMessageSizeLimit();
80+
}
81+
82+
@Override
83+
public List<WebSocketExtension> getExtensions() {
84+
return webSocketSession.getExtensions();
85+
}
86+
87+
@Override
88+
public boolean isOpen() {
89+
return webSocketSession.isOpen();
90+
}
91+
92+
@Override
93+
public void close() throws IOException {
94+
webSocketSession.close();
95+
}
96+
97+
@Override
98+
public void close(CloseStatus status) throws IOException {
99+
webSocketSession.close(status);
100+
}
101+
102+
// Delegate other WebSocketSession methods as needed
103+
// For example:
104+
@Override
105+
public void sendMessage(org.springframework.web.socket.WebSocketMessage<?> message) throws java.io.IOException {
106+
webSocketSession.sendMessage(message);
107+
}
108+
109+
// Add more methods as required by your application logic
110+
111+
}

dataplane/src/main/java/io/sentrius/sso/core/model/hostgroup/HostGroup.java

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -70,6 +70,10 @@ public class HostGroup {
7070
@Transient
7171
private boolean selected = false;
7272

73+
@Builder.Default
74+
@Column(name = "proxied_ssh_port")
75+
private Integer proxiedSSHPort = 0;
76+
7377
@ManyToMany(fetch = FetchType.LAZY)
7478
@JoinTable(
7579
name = "user_hostgroups",
@@ -139,6 +143,7 @@ public HostGroupDTO toDTO(boolean setUsers){
139143
builder.description(this.getDescription());
140144
builder.hostCount(this.getHostSystems().size());
141145
builder.configuration(this.getConfiguration());
146+
builder.proxiedSSHPort(this.getProxiedSSHPort());
142147
if (setUsers){
143148
builder.users(this.getUsers().stream().map(x -> x.toDto()).toList());
144149
}

0 commit comments

Comments
 (0)