Skip to content

Commit

Permalink
fix: get was messed up
Browse files Browse the repository at this point in the history
  • Loading branch information
jm33-m0 committed Feb 21, 2025
1 parent a9cc467 commit 348819b
Show file tree
Hide file tree
Showing 3 changed files with 10 additions and 16 deletions.
11 changes: 6 additions & 5 deletions core/internal/cc/server/dispatcher.go
Original file line number Diff line number Diff line change
Expand Up @@ -18,9 +18,10 @@ import (
func apiDispatcher(wrt http.ResponseWriter, req *http.Request) {
vars := mux.Vars(req)
// Setup H2Conn for reverse shell and proxy.
var rshellConn, proxyConn def.H2Conn
network.RShellStream.H2x = &rshellConn
network.ProxyStream.H2x = &proxyConn
rshellConn := new(def.H2Conn)
proxyConn := new(def.H2Conn)
network.RShellStream.H2x = rshellConn
network.ProxyStream.H2x = proxyConn

if vars["api"] == "" || vars["token"] == "" {
logging.Debugf("Invalid request: %v, missing api/token", req)
Expand Down Expand Up @@ -58,7 +59,7 @@ func apiDispatcher(wrt http.ResponseWriter, req *http.Request) {
case transport.FTPAPI:
for _, sh := range network.FTPStreams {
if token == sh.Token {
handleFTPTransfer(wrt, req)
handleFTPTransfer(sh, wrt, req)
return
}
}
Expand All @@ -77,7 +78,7 @@ func apiDispatcher(wrt http.ResponseWriter, req *http.Request) {
}
http.ServeFile(wrt, req, local_path)
case transport.ProxyAPI:
handlePortForwarding(wrt, req)
handlePortForwarding(network.ProxyStream, wrt, req)
default:
wrt.WriteHeader(http.StatusBadRequest)
}
Expand Down
8 changes: 1 addition & 7 deletions core/internal/cc/server/handler_ftp.go
Original file line number Diff line number Diff line change
Expand Up @@ -49,17 +49,11 @@ func progressMonitor(bar *progressbar.ProgressBar, filewrite, targetFile string,
}

// handleFTPTransfer processes file transfer requests.
func handleFTPTransfer(wrt http.ResponseWriter, req *http.Request) {
func handleFTPTransfer(sh *network.StreamHandler, wrt http.ResponseWriter, req *http.Request) {
vars := mux.Vars(req)
token := vars["token"]

// Check connection occupancy and accept connection via H2Conn.
sh, ok := network.FTPStreams[token] // assume FTPStreams token mapping exists
if !ok {
logging.Errorf("handleFTPTransfer: token %s not found", token)
http.Error(wrt, http.StatusText(http.StatusBadRequest), http.StatusBadRequest)
return
}
if sh.H2x != nil && (sh.H2x.Ctx != nil || sh.H2x.Cancel != nil || sh.H2x.Conn != nil) {
logging.Errorf("handleFTPTransfer: connection occupied")
http.Error(wrt, http.StatusText(http.StatusBadRequest), http.StatusBadRequest)
Expand Down
7 changes: 3 additions & 4 deletions core/internal/cc/server/handler_portfwd.go
Original file line number Diff line number Diff line change
Expand Up @@ -16,11 +16,10 @@ import (
)

// handlePortForwarding handles proxy/port forwarding.
func handlePortForwarding(wrt http.ResponseWriter, req *http.Request) {
func handlePortForwarding(sh *network.StreamHandler, wrt http.ResponseWriter, req *http.Request) {
var err error
var h2x def.H2Conn
sh := new(network.StreamHandler)
sh.H2x = &h2x
h2x := new(def.H2Conn)
sh.H2x = h2x
sh.H2x.Conn, err = h2conn.Accept(wrt, req)
if err != nil {
logging.Errorf("handlePortForwarding: connection failed from %s: %s", req.RemoteAddr, err)
Expand Down

0 comments on commit 348819b

Please sign in to comment.