mirror of https://github.com/n1nj4sec/pupy.git
Add option to send GET request to url when something connected
This commit is contained in:
parent
4add394614
commit
33198d3e91
|
@ -3,6 +3,9 @@ package main
|
|||
import (
|
||||
"crypto/tls"
|
||||
"net"
|
||||
"net/http"
|
||||
|
||||
"sync/atomic"
|
||||
|
||||
log "github.com/sirupsen/logrus"
|
||||
)
|
||||
|
@ -37,6 +40,28 @@ func (d *Daemon) ListenAndServe() error {
|
|||
return nil
|
||||
}
|
||||
|
||||
func (d *Daemon) onListenerEnabled() {
|
||||
if atomic.AddInt32(&d.UsersCount, 1) == 1 && OnListenerEnabledURL != "" {
|
||||
response, err := http.Get(OnListenerEnabledURL)
|
||||
if err != nil {
|
||||
log.Error("Register failed: ", err)
|
||||
} else {
|
||||
log.Info("Register:", OnListenerEnabledURL, ": ", response.Status)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
func (d *Daemon) onListenerDisabled() {
|
||||
if atomic.AddInt32(&d.UsersCount, -1) == 0 && OnListenerDisabledURL != "" {
|
||||
response, err := http.Get(OnListenerDisabledURL)
|
||||
if err != nil {
|
||||
log.Error("Register failed: ", err)
|
||||
} else {
|
||||
log.Info("Register:", OnListenerDisabledURL, ": ", response.Status)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
func (d *Daemon) handle(conn net.Conn) {
|
||||
defer conn.Close()
|
||||
|
||||
|
@ -68,7 +93,9 @@ func (d *Daemon) handle(conn net.Conn) {
|
|||
d.DNSCheck.Unlock()
|
||||
|
||||
d.DNSLock.Lock()
|
||||
d.onListenerEnabled()
|
||||
d.serveDNS(conn, brh.BindInfo)
|
||||
d.onListenerDisabled()
|
||||
d.DNSCheck.Lock()
|
||||
d.DNSListener = nil
|
||||
d.DNSCheck.Unlock()
|
||||
|
@ -89,17 +116,23 @@ func (d *Daemon) handle(conn net.Conn) {
|
|||
|
||||
case TCP:
|
||||
log.Warning("Request: TCP handler with port:", brh.BindInfo, " client: ", client, " - start")
|
||||
d.onListenerEnabled()
|
||||
d.serveStream(-1, conn, brh.BindInfo, d.listenAcceptTCP)
|
||||
d.onListenerDisabled()
|
||||
log.Warning("Request: TCP handler with port:", brh.BindInfo, " client: ", client, " - complete")
|
||||
|
||||
case KCP:
|
||||
log.Warning("Request: KCP handler with port:", brh.BindInfo, " client: ", client, " - start")
|
||||
d.onListenerEnabled()
|
||||
d.serveStream(int(UDPSize-24), conn, brh.BindInfo, d.listenAcceptKCP)
|
||||
d.onListenerDisabled()
|
||||
log.Warning("Request: KCP handler with port:", brh.BindInfo, " client: ", client, " - complete")
|
||||
|
||||
case TLS:
|
||||
log.Warning("Request: SSL handler with port:", brh.BindInfo, " client: ", client, " - start")
|
||||
d.onListenerEnabled()
|
||||
d.serveStream(-1, conn, brh.BindInfo, d.listenAcceptTLS)
|
||||
d.onListenerDisabled()
|
||||
log.Warning("Request: SSL handler with port:", brh.BindInfo, " client: ", client, " - complete")
|
||||
|
||||
default:
|
||||
|
|
|
@ -30,6 +30,9 @@ var (
|
|||
ClientKey = path.Join("..", "crypto", "proxy-client.key")
|
||||
ClientCert = path.Join("..", "crypto", "proxy-client.crt")
|
||||
|
||||
OnListenerEnabledURL = ""
|
||||
OnListenerDisabledURL = ""
|
||||
|
||||
ListenerConfig *tls.Config
|
||||
)
|
||||
|
||||
|
@ -48,6 +51,10 @@ func init() {
|
|||
flag.StringVar(&ProxyHostname, "hostname-proxy", ProxyHostname,
|
||||
"Hostname for pupysh listener side (used with generate)")
|
||||
flag.StringVar(&loglevel, "loglevel", loglevel, "Set log level")
|
||||
flag.StringVar(&OnListenerEnabledURL, "on-enabled-url", OnListenerEnabledURL,
|
||||
"Send GET request when at least one client connected")
|
||||
flag.StringVar(&OnListenerDisabledURL, "on-disabled-url", OnListenerDisabledURL,
|
||||
"Send GET request when at least one client connected")
|
||||
flag.BoolVar(&generate, "generate", false, "Generate all the keys")
|
||||
|
||||
iniflags.Parse()
|
||||
|
|
|
@ -71,6 +71,8 @@ type (
|
|||
|
||||
Listeners map[int]*Listener
|
||||
ListenersLock sync.Mutex
|
||||
|
||||
UsersCount int32
|
||||
}
|
||||
|
||||
IPInfo struct {
|
||||
|
|
Loading…
Reference in New Issue