Skip to content

Commit c49891f

Browse files
committed
chore(update): update dependencies
1 parent ae8ea67 commit c49891f

File tree

7 files changed

+449
-102
lines changed

7 files changed

+449
-102
lines changed

Diff for: build/postman/alpine/Dockerfile

+2-2
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
FROM golang:1.17-alpine as builder
1+
FROM golang:1.17-alpine3.15 as builder
22

33
RUN addgroup -g 1001 postmanq && \
44
adduser -S -u 1001 -G postmanq postmanq && \
@@ -12,7 +12,7 @@ RUN chown -R 1001:1001 /app && \
1212
chown 1001:1001 /etc/postman.yaml && \
1313
chmod +x /app/*
1414

15-
FROM alpine:3.14
15+
FROM alpine:3.15
1616
WORKDIR /
1717

1818
COPY --from=builder /etc/passwd /etc/passwd

Diff for: connector/connector.go

+77-57
Original file line numberDiff line numberDiff line change
@@ -35,70 +35,76 @@ func (c *Connector) run() {
3535
// устанавливает соединение к почтовому сервису
3636
func (c *Connector) connect(event *ConnectionEvent) {
3737
logger.By(event.Message.HostnameFrom).Debug("connector#%d-%d try find connection", c.id, event.Message.Id)
38-
goto receiveConnect
3938

40-
receiveConnect:
41-
event.TryCount++
42-
var targetClient *common.SmtpClient
39+
for {
40+
event.TryCount++
41+
var targetClient *common.SmtpClient
4342

44-
// смотрим все mx сервера почтового сервиса
45-
for _, mxServer := range event.server.mxServers {
46-
logger.By(event.Message.HostnameFrom).Debug("connector#%d-%d try receive connection for %s", c.id, event.Message.Id, mxServer.hostname)
43+
// смотрим все mx сервера почтового сервиса
44+
for _, mxServer := range event.server.mxServers {
45+
logger.By(event.Message.HostnameFrom).Debug("connector#%d-%d try receive connection for %s", c.id, event.Message.Id, mxServer.hostname)
4746

48-
// пробуем получить клиента
49-
var ok bool
50-
event.Queue, ok = mxServer.queues[event.address]
51-
if !ok {
52-
event.Queue = common.NewLimitQueue()
53-
}
47+
// пробуем получить клиента
48+
var ok bool
49+
event.Queue, ok = mxServer.queues[event.address]
50+
if !ok {
51+
event.Queue = common.NewLimitQueue()
52+
}
5453

55-
client := event.Queue.Pop()
56-
if client != nil {
57-
targetClient = client.(*common.SmtpClient)
58-
logger.By(event.Message.HostnameFrom).Debug("connector%d-%d found free smtp client#%d", c.id, event.Message.Id, targetClient.Id)
59-
}
54+
client := event.Queue.Pop()
55+
if client != nil {
56+
targetClient = client.(*common.SmtpClient)
57+
logger.By(event.Message.HostnameFrom).Debug("connector%d-%d found free smtp client#%d", c.id, event.Message.Id, targetClient.Id)
58+
}
6059

61-
// создаем новое соединение к почтовому сервису
62-
// если не удалось найти клиента
63-
// или клиент разорвал соединение
64-
if (targetClient == nil && !event.Queue.HasLimit()) ||
65-
(targetClient != nil && targetClient.Status == common.DisconnectedSmtpClientStatus) {
66-
logger.By(event.Message.HostnameFrom).Debug("connector#%d-%d can't find free smtp client for %s", c.id, event.Message.Id, mxServer.hostname)
67-
c.createSmtpClient(mxServer, event, &targetClient)
68-
}
60+
// создаем новое соединение к почтовому сервису
61+
// если не удалось найти клиента
62+
// или клиент разорвал соединение
63+
if (targetClient == nil && !event.Queue.HasLimit()) ||
64+
(targetClient != nil && targetClient.Status == common.DisconnectedSmtpClientStatus) {
65+
logger.By(event.Message.HostnameFrom).Debug("connector#%d-%d can't find free smtp client for %s", c.id, event.Message.Id, mxServer.hostname)
66+
c.createSmtpClient(mxServer, event, &targetClient)
67+
if targetClient == nil {
68+
logger.By(event.Message.HostnameFrom).Warn("connector#%d-%d client created byt not assigned", c.id, event.Message.Id)
69+
continue
70+
}
71+
}
6972

70-
if targetClient != nil {
71-
break
73+
if targetClient == nil {
74+
logger.By(event.Message.HostnameFrom).Warn("connector#%d-%d client is not created", c.id, event.Message.Id)
75+
continue
76+
}
7277
}
73-
}
7478

75-
// если клиент не создан, значит мы создали максимум соединений к почтовому сервису
76-
if targetClient == nil {
77-
// приостановим работу горутины
78-
goto waitConnect
79-
} else {
80-
targetClient.Wakeup()
81-
event.Client = targetClient
82-
// передаем событие отправителю
83-
next := event.Iterator.Next()
84-
if next != nil {
85-
next.(common.SendingService).Event(event.SendEvent)
79+
// если клиент не создан, значит мы создали максимум соединений к почтовому сервису
80+
if targetClient == nil {
81+
// приостановим работу горутины
82+
logger.By(event.Message.HostnameFrom).Warn("connector#%d-%d no free smtp client", c.id, event.Message.Id)
83+
84+
if event.TryCount >= common.MaxTryConnectionCount {
85+
mailer.ReturnMail(
86+
event.SendEvent,
87+
errors.New(fmt.Sprintf("connector#%d can't connect to %s", c.id, event.Message.HostnameTo)),
88+
)
89+
break
90+
}
91+
92+
logger.By(event.Message.HostnameFrom).Debug("connector#%d-%d can't find free connections, wait...", c.id, event.Message.Id)
93+
time.Sleep(common.App.Timeout().Sleep)
94+
continue
95+
} else {
96+
logger.By(event.Message.HostnameFrom).Debug("connector#%d-%d next event", c.id, event.Message.Id)
97+
targetClient.Wakeup()
98+
event.Client = targetClient
99+
// передаем событие отправителю
100+
next := event.Iterator.Next()
101+
if next != nil {
102+
next.(common.SendingService).Event(event.SendEvent)
103+
}
86104
}
87-
}
88-
return
89105

90-
waitConnect:
91-
if event.TryCount >= common.MaxTryConnectionCount {
92-
mailer.ReturnMail(
93-
event.SendEvent,
94-
errors.New(fmt.Sprintf("connector#%d can't connect to %s", c.id, event.Message.HostnameTo)),
95-
)
96-
} else {
97-
logger.By(event.Message.HostnameFrom).Debug("connector#%d-%d can't find free connections, wait...", c.id, event.Message.Id)
98-
time.Sleep(common.App.Timeout().Sleep)
99-
goto receiveConnect
106+
return
100107
}
101-
return
102108
}
103109

104110
// создает соединение к почтовому сервису
@@ -138,6 +144,7 @@ func (c *Connector) createSmtpClient(mxServer *MxServer, event *ConnectionEvent,
138144
logger.By(event.Message.HostnameFrom).WarnWithErr(err, "can't set connection deadline to %s", time.Now().Add(common.App.Timeout().Hello))
139145
}
140146

147+
logger.By(event.Message.HostnameFrom).Debug("connector#%d-%d create client to %s", c.id, event.Message.Id, mxServer.hostname)
141148
client, err := smtp.NewClient(connection, mxServer.hostname)
142149
if err != nil {
143150
// если не удалось создать клиента,
@@ -152,7 +159,7 @@ func (c *Connector) createSmtpClient(mxServer *MxServer, event *ConnectionEvent,
152159
return
153160
}
154161

155-
logger.By(event.Message.HostnameFrom).Debug("connector#%d-%d create client to %s", c.id, event.Message.Id, mxServer.hostname)
162+
logger.By(event.Message.HostnameFrom).Debug("connector#%d-%d send command HELLO: %s", c.id, event.Message.Id, event.Message.HostnameFrom)
156163
err = client.Hello(service.getHostname(event.Message.HostnameFrom))
157164
if err != nil {
158165
if err := client.Quit(); err != nil {
@@ -163,7 +170,6 @@ func (c *Connector) createSmtpClient(mxServer *MxServer, event *ConnectionEvent,
163170
return
164171
}
165172

166-
logger.By(event.Message.HostnameFrom).Debug("connector#%d-%d send command HELLO: %s", c.id, event.Message.Id, event.Message.HostnameFrom)
167173
// проверяем доступно ли TLS
168174
if mxServer.useTLS {
169175
mxServer.useTLS, _ = client.Extension("STARTTLS")
@@ -224,8 +230,22 @@ func (c *Connector) initSmtpClient(mxServer *MxServer, event *ConnectionEvent, p
224230
smtpClient.Worker = client
225231
smtpClient.ModifyDate = time.Now()
226232
if isNil {
227-
logger.By(event.Message.HostnameFrom).Debug("connector#%d-%d create smtp client#%d for %s", c.id, event.Message.Id, smtpClient.Id, mxServer.hostname)
233+
logger.By(event.Message.HostnameFrom).Debug(
234+
"connector#%d-%d create smtp client#%d for %s status: %d",
235+
c.id,
236+
event.Message.Id,
237+
smtpClient.Id,
238+
mxServer.hostname,
239+
smtpClient.Status,
240+
)
228241
} else {
229-
logger.By(event.Message.HostnameFrom).Debug("connector#%d-%d reopen smtp client#%d for %s", c.id, event.Message.Id, smtpClient.Id, mxServer.hostname)
242+
logger.By(event.Message.HostnameFrom).Debug(
243+
"connector#%d-%d reopen smtp client#%d for %s status: %d",
244+
c.id,
245+
event.Message.Id,
246+
smtpClient.Id,
247+
mxServer.hostname,
248+
smtpClient.Status,
249+
)
230250
}
231251
}

Diff for: connector/preparer.go

+19-21
Original file line numberDiff line numberDiff line change
@@ -42,27 +42,25 @@ func (p *Preparer) prepare(event *common.SendEvent) {
4242
connectorId: p.id,
4343
address: service.getAddress(event.Message.HostnameFrom, p.id),
4444
}
45-
goto connectToMailServer
4645

47-
connectToMailServer:
48-
// отправляем событие сбора информации о сервере
49-
p.seekerEvents <- connectionEvent
50-
server := <-connectionEvent.servers
51-
switch server.status {
52-
case LookupMailServerStatus:
53-
goto waitLookup
54-
case SuccessMailServerStatus:
55-
connectionEvent.server = server
56-
p.connectorEvents <- connectionEvent
57-
case ErrorMailServerStatus:
58-
mailer.ReturnMail(
59-
event,
60-
errors.New(fmt.Sprintf("511 preparer#%d-%d can't lookup %s", p.id, event.Message.Id, event.Message.HostnameTo)),
61-
)
46+
for {
47+
// отправляем событие сбора информации о сервере
48+
p.seekerEvents <- connectionEvent
49+
server := <-connectionEvent.servers
50+
switch server.status {
51+
case LookupMailServerStatus:
52+
logger.By(event.Message.HostnameFrom).Debug("preparer#%d-%d wait ending look up mail server %s...", p.id, event.Message.Id, event.Message.HostnameTo)
53+
time.Sleep(common.App.Timeout().Sleep)
54+
continue
55+
case SuccessMailServerStatus:
56+
connectionEvent.server = server
57+
p.connectorEvents <- connectionEvent
58+
case ErrorMailServerStatus:
59+
mailer.ReturnMail(
60+
event,
61+
errors.New(fmt.Sprintf("511 preparer#%d-%d can't lookup %s", p.id, event.Message.Id, event.Message.HostnameTo)),
62+
)
63+
}
64+
break
6265
}
63-
64-
waitLookup:
65-
logger.By(event.Message.HostnameFrom).Debug("preparer#%d-%d wait ending look up mail server %s...", p.id, event.Message.Id, event.Message.HostnameTo)
66-
time.Sleep(common.App.Timeout().Sleep)
67-
goto connectToMailServer
6866
}

Diff for: connector/service.go

+1-1
Original file line numberDiff line numberDiff line change
@@ -265,7 +265,7 @@ func (s Service) getAddress(hostname string, id int) string {
265265
if conf, ok := s.Configs[hostname]; ok && conf.addressesLen > 0 {
266266
return conf.Addresses[id%conf.addressesLen]
267267
} else {
268-
logger.By(hostname).Err("connection service can't find ip by %s", hostname)
268+
logger.By(hostname).Warn("connection service can't find ip by %s", hostname)
269269
return common.EmptyStr
270270
}
271271
}

Diff for: go.mod

+6-3
Original file line numberDiff line numberDiff line change
@@ -7,11 +7,14 @@ require (
77
github.com/byorty/clitable v0.0.0-20150722055417-9f60651b8308
88
github.com/emersion/go-msgauth v0.6.5
99
github.com/kr/pretty v0.3.0 // indirect
10-
github.com/prometheus/client_golang v1.11.0
10+
github.com/prometheus/client_golang v1.12.1
11+
github.com/prometheus/common v0.33.0 // indirect
1112
github.com/rogpeppe/go-internal v1.8.0 // indirect
12-
github.com/rs/zerolog v1.23.0
13+
github.com/rs/zerolog v1.26.1
1314
github.com/streadway/amqp v1.0.0
14-
golang.org/x/crypto v0.0.0-20210813211128-0a44fdfbc16e // indirect
15+
golang.org/x/crypto v0.0.0-20220331220935-ae2d96664a29 // indirect
16+
golang.org/x/sys v0.0.0-20220405052023-b1e9470b6e64 // indirect
17+
google.golang.org/protobuf v1.28.0 // indirect
1518
gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c // indirect
1619
gopkg.in/yaml.v3 v3.0.0-20210107192922-496545a6307b
1720
)

0 commit comments

Comments
 (0)