9seconds 7 лет назад
Родитель
Сommit
1aa8cfe036
3 измененных файлов: 14 добавлений и 4 удалений
  1. 5
    0
      proxy/proxy.go
  2. 1
    1
      stats/channels.go
  3. 8
    3
      wrappers/conn.go

+ 5
- 0
proxy/proxy.go Просмотреть файл

12
 	"github.com/9seconds/mtg/client"
12
 	"github.com/9seconds/mtg/client"
13
 	"github.com/9seconds/mtg/config"
13
 	"github.com/9seconds/mtg/config"
14
 	"github.com/9seconds/mtg/mtproto"
14
 	"github.com/9seconds/mtg/mtproto"
15
+	"github.com/9seconds/mtg/stats"
15
 	"github.com/9seconds/mtg/telegram"
16
 	"github.com/9seconds/mtg/telegram"
16
 	"github.com/9seconds/mtg/wrappers"
17
 	"github.com/9seconds/mtg/wrappers"
17
 )
18
 )
45
 		conn.Close()
46
 		conn.Close()
46
 
47
 
47
 		if err := recover(); err != nil {
48
 		if err := recover(); err != nil {
49
+			stats.NewCrash()
48
 			log.Errorw("Crash of accept handler", "error", err)
50
 			log.Errorw("Crash of accept handler", "error", err)
49
 		}
51
 		}
50
 	}()
52
 	}()
58
 	}
60
 	}
59
 	defer client.(io.Closer).Close()
61
 	defer client.(io.Closer).Close()
60
 
62
 
63
+	stats.ClientConnected(opts.ConnectionType, client.RemoteAddr())
64
+	defer stats.ClientDisconnected(opts.ConnectionType, client.RemoteAddr())
65
+
61
 	server, err := p.getTelegramConn(opts, connID)
66
 	server, err := p.getTelegramConn(opts, connID)
62
 	if err != nil {
67
 	if err != nil {
63
 		log.Errorw("Cannot initialize server connection", "error", err)
68
 		log.Errorw("Cannot initialize server connection", "error", err)

+ 1
- 1
stats/channels.go Просмотреть файл

45
 	for event := range ConnectionsChan {
45
 	for event := range ConnectionsChan {
46
 		instance.mutex.RLock()
46
 		instance.mutex.RLock()
47
 
47
 
48
-		isIPv4 := event.addr.IP.To4() == nil
48
+		isIPv4 := event.addr.IP.To4() != nil
49
 		var inc uint32 = 1
49
 		var inc uint32 = 1
50
 		if !event.connected {
50
 		if !event.connected {
51
 			inc = ^uint32(0)
51
 			inc = ^uint32(0)

+ 8
- 3
wrappers/conn.go Просмотреть файл

5
 	"time"
5
 	"time"
6
 
6
 
7
 	"go.uber.org/zap"
7
 	"go.uber.org/zap"
8
+
9
+	"github.com/9seconds/mtg/stats"
8
 )
10
 )
9
 
11
 
10
 type ConnPurpose uint8
12
 type ConnPurpose uint8
31
 )
33
 )
32
 
34
 
33
 type Conn struct {
35
 type Conn struct {
34
-	connID     string
35
-	conn       net.Conn
36
-	logger     *zap.SugaredLogger
36
+	connID string
37
+	conn   net.Conn
38
+	logger *zap.SugaredLogger
39
+
37
 	publicIPv4 net.IP
40
 	publicIPv4 net.IP
38
 	publicIPv6 net.IP
41
 	publicIPv6 net.IP
39
 }
42
 }
43
 	n, err := c.conn.Write(p)
46
 	n, err := c.conn.Write(p)
44
 
47
 
45
 	c.logger.Debugw("Write to stream", "bytes", n, "error", err)
48
 	c.logger.Debugw("Write to stream", "bytes", n, "error", err)
49
+	stats.EgressTraffic(n)
46
 
50
 
47
 	return n, err
51
 	return n, err
48
 }
52
 }
52
 	n, err := c.conn.Read(p)
56
 	n, err := c.conn.Read(p)
53
 
57
 
54
 	c.logger.Debugw("Read from stream", "bytes", n, "error", err)
58
 	c.logger.Debugw("Read from stream", "bytes", n, "error", err)
59
+	stats.IngressTraffic(n)
55
 
60
 
56
 	return n, err
61
 	return n, err
57
 }
62
 }

Загрузка…
Отмена
Сохранить