added proxycomamnd to be used directly by ssh
This commit is contained in:
		
							parent
							
								
									33e23b69bd
								
							
						
					
					
						commit
						0508ce0daf
					
				| @ -11,7 +11,7 @@ RUN go build -ldflags "-linkmode 'external' -extldflags '-static'" -o bin ./cmd/ | |||||||
| FROM scratch | FROM scratch | ||||||
| 
 | 
 | ||||||
| COPY --from=builder /opt/converge/bin/converge /opt/converge/bin/ | COPY --from=builder /opt/converge/bin/converge /opt/converge/bin/ | ||||||
| COPY --from=builder /opt/converge/bin/agent /opt/converge/bin/tcptows /opt/converge/docs/ | COPY --from=builder /opt/converge/bin/agent /opt/converge/bin/tcptows /opt/converge/bin/convergeproxy /opt/converge/docs/ | ||||||
| COPY --from=builder /opt/converge/static/ /opt/converge/docs/ | COPY --from=builder /opt/converge/static/ /opt/converge/docs/ | ||||||
| 
 | 
 | ||||||
| ENTRYPOINT ["/opt/converge/bin/converge", "/opt/converge/docs" ] | ENTRYPOINT ["/opt/converge/bin/converge", "/opt/converge/docs" ] | ||||||
|  | |||||||
| @ -154,9 +154,9 @@ func (f ReaderFunc) Read(p []byte) (n int, err error) { | |||||||
| func main() { | func main() { | ||||||
| 	wsURL := os.Args[1] | 	wsURL := os.Args[1] | ||||||
| 
 | 
 | ||||||
| 	advanceWarningTime := 1 * time.Minute | 	advanceWarningTime := 10 * time.Minute | ||||||
| 	agentExpriryTime := 2 * time.Minute | 	agentExpriryTime := 30 * time.Minute | ||||||
| 	tickerInterval := 10 * time.Second | 	tickerInterval := 60 * time.Second | ||||||
| 	agent.ConfigureAgent(advanceWarningTime, agentExpriryTime, tickerInterval) | 	agent.ConfigureAgent(advanceWarningTime, agentExpriryTime, tickerInterval) | ||||||
| 
 | 
 | ||||||
| 	conn, _, err := websocket.DefaultDialer.Dial(wsURL, nil) | 	conn, _, err := websocket.DefaultDialer.Dial(wsURL, nil) | ||||||
|  | |||||||
							
								
								
									
										40
									
								
								cmd/convergeproxy/proxy.go
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										40
									
								
								cmd/convergeproxy/proxy.go
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,40 @@ | |||||||
|  | package main | ||||||
|  | 
 | ||||||
|  | import ( | ||||||
|  | 	"cidebug/pkg/iowrappers" | ||||||
|  | 	"cidebug/pkg/websocketutil" | ||||||
|  | 	"github.com/gorilla/websocket" | ||||||
|  | 	"log" | ||||||
|  | 	"net" | ||||||
|  | 	"os" | ||||||
|  | ) | ||||||
|  | 
 | ||||||
|  | func closeConnection(conn net.Conn) { | ||||||
|  | 	if tcpConn, ok := conn.(*net.TCPConn); ok { | ||||||
|  | 		tcpConn.SetLinger(0) | ||||||
|  | 	} | ||||||
|  | 	_ = conn.Close() | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | type Stdio struct{} | ||||||
|  | 
 | ||||||
|  | func (stdio Stdio) Read(b []byte) (n int, err error) { | ||||||
|  | 	return os.Stdin.Read(b) | ||||||
|  | } | ||||||
|  | func (stdio Stdio) Write(b []byte) (n int, err error) { | ||||||
|  | 	return os.Stdout.Write(b) | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | func main() { | ||||||
|  | 	wsURL := os.Args[1] | ||||||
|  | 
 | ||||||
|  | 	_wsConn, _, err := websocket.DefaultDialer.Dial(wsURL, nil) | ||||||
|  | 	if err != nil { | ||||||
|  | 		log.Println("WebSocket connection error:", err) | ||||||
|  | 		panic(err) | ||||||
|  | 	} | ||||||
|  | 	wsConn := websocketutil.NewWebSocketConn(_wsConn) | ||||||
|  | 	defer wsConn.Close() | ||||||
|  | 
 | ||||||
|  | 	iowrappers.SynchronizeStreams(wsConn, Stdio{}) | ||||||
|  | } | ||||||
| @ -40,7 +40,10 @@ | |||||||
|         to establish a connection to the CI job through converge. |         to establish a connection to the CI job through converge. | ||||||
|     </p> |     </p> | ||||||
| 
 | 
 | ||||||
|     <h2>Local clients</h2> |     <h2>Local clients: with a local TCP forwarding proxy</h2> | ||||||
|  | 
 | ||||||
|  |     This option is less convenient than the proxy command because it requires two separate | ||||||
|  |     commands to execute. | ||||||
| 
 | 
 | ||||||
|     <p> |     <p> | ||||||
|         Local clients can connect using regular ssh and sftp commands through a tunnel that |         Local clients can connect using regular ssh and sftp commands through a tunnel that | ||||||
| @ -51,14 +54,14 @@ | |||||||
| 
 | 
 | ||||||
|     <pre> |     <pre> | ||||||
|     # for HTTP hosted server |     # for HTTP hosted server | ||||||
|     curl http://HOST:PORT/docs/wstotcp > wstotcp |     curl http://HOST:PORT/docs/tcptows > tcptows | ||||||
|     chmod 755 wstotcp |     chmod 755 tcptows | ||||||
|     ./wstotcp 10000 ws://HOST:PORT/client/ID |     ./tcptows 10000 ws://HOST:PORT/client/ID | ||||||
| 
 | 
 | ||||||
|     # for HTTPS hosted server |     # for HTTPS hosted server | ||||||
|     curl https://HOST:PORT/docs/wstotcp > wstotcp |     curl https://HOST:PORT/docs/tcptows > tcptows | ||||||
|     chmod 755 wstotcp |     chmod 755 tcptows | ||||||
|     ./wstotcp 10000 wss://HOST:PORT/client/ID |     ./tcptows 10000 wss://HOST:PORT/client/ID | ||||||
| </pre> | </pre> | ||||||
| 
 | 
 | ||||||
|     <p> |     <p> | ||||||
| @ -86,6 +89,8 @@ | |||||||
|         <li><a href="/docs/tcptows">tcptows</a>: TCP to WS tunnel for allowing regular |         <li><a href="/docs/tcptows">tcptows</a>: TCP to WS tunnel for allowing regular | ||||||
|             SSH and SFTP clients to connect to converge. |             SSH and SFTP clients to connect to converge. | ||||||
|         </li> |         </li> | ||||||
|  |         <li><a href="/docs/convergeproxy">convergeproxy</a>: SSH proxy command that can be directly used by ssh | ||||||
|  |         </li> | ||||||
|     </ul> |     </ul> | ||||||
| 
 | 
 | ||||||
| </div> | </div> | ||||||
|  | |||||||
		Loading…
	
		Reference in New Issue
	
	Block a user