Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
ulixee
GitHub Repository: ulixee/secret-agent
Path: blob/main/mitm-socket/go/signals.go
1029 views
1
package main
2
3
import (
4
"fmt"
5
"os"
6
"os/signal"
7
"syscall"
8
)
9
10
type Signals struct {
11
sigc chan os.Signal
12
IsClosed bool
13
}
14
15
func RegisterSignals() *Signals {
16
sigc := make(chan os.Signal, 1)
17
signals := &Signals{
18
IsClosed: false,
19
sigc: sigc,
20
}
21
22
signal.Notify(sigc, os.Interrupt, os.Kill, syscall.SIGINT, syscall.SIGTERM)
23
24
go func() {
25
_, err := fmt.Scanf("disconnect")
26
if err != nil {
27
panic(err)
28
}
29
sigc <- syscall.SIGINT
30
}()
31
32
go func(sigs *Signals) {
33
<-sigc
34
sigs.IsClosed = true
35
}(signals)
36
37
return signals
38
}
39
40