Skip to content

Commit

Permalink
Merge pull request #78 from homenoc/develop
Browse files Browse the repository at this point in the history
v3.1.0
  • Loading branch information
yoneyan authored Mar 21, 2021
2 parents 7119595 + 976d919 commit ae8b2b3
Show file tree
Hide file tree
Showing 10 changed files with 123 additions and 22 deletions.
6 changes: 6 additions & 0 deletions pkg/api/api.go
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@ import (
ip "github.com/homenoc/dsbd-backend/pkg/api/core/group/service/ip/v0"
service "github.com/homenoc/dsbd-backend/pkg/api/core/group/service/v0"
group "github.com/homenoc/dsbd-backend/pkg/api/core/group/v0"
mail "github.com/homenoc/dsbd-backend/pkg/api/core/mail/v0"
bgpRouter "github.com/homenoc/dsbd-backend/pkg/api/core/noc/bgpRouter/v0"
tunnelEndPointRouter "github.com/homenoc/dsbd-backend/pkg/api/core/noc/tunnelEndPointRouter/v0"
tunnelEndPointRouterIP "github.com/homenoc/dsbd-backend/pkg/api/core/noc/tunnelEndPointRouterIP/v0"
Expand Down Expand Up @@ -157,6 +158,11 @@ func AdminRestAPI() {
//
v1.PUT("/ip/:id", ip.UpdateAdmin)

//
// IP
//
v1.POST("/mail", mail.SendAdmin)

////
//// JPNIC Admin
////
Expand Down
7 changes: 7 additions & 0 deletions pkg/api/core/mail/interface.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
package mail

type Mail struct {
ToMail string `json:"to_mail"`
Subject string `json:"subject"`
Content string `json:"content"`
}
36 changes: 36 additions & 0 deletions pkg/api/core/mail/v0/admin.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,36 @@
package v0

import (
"github.com/gin-gonic/gin"
auth "github.com/homenoc/dsbd-backend/pkg/api/core/auth/v0"
"github.com/homenoc/dsbd-backend/pkg/api/core/common"
"github.com/homenoc/dsbd-backend/pkg/api/core/mail"
"net/http"
)

func SendAdmin(c *gin.Context) {
var input mail.Mail

resultAdmin := auth.AdminAuthentication(c.Request.Header.Get("ACCESS_TOKEN"))
if resultAdmin.Err != nil {
c.JSON(http.StatusUnauthorized, common.Error{Error: resultAdmin.Err.Error()})
return
}

err := c.BindJSON(&input)
if err != nil {
c.JSON(http.StatusBadRequest, common.Error{Error: err.Error()})
return
}

if err = check(input); err != nil {
c.JSON(http.StatusBadRequest, common.Error{Error: err.Error()})
return
}

if err = SendMail(input); err != nil {
c.JSON(http.StatusInternalServerError, common.Error{Error: err.Error()})
} else {
c.JSON(http.StatusOK, common.Result{})
}
}
24 changes: 24 additions & 0 deletions pkg/api/core/mail/v0/check.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
package v0

import (
"fmt"
"github.com/homenoc/dsbd-backend/pkg/api/core/mail"
"strings"
)

func check(input mail.Mail) error {
// check
if !strings.Contains(input.ToMail, "@") {
return fmt.Errorf("invalid: email address")
}

if input.Subject == "" {
return fmt.Errorf("no data: subject")
}

if input.Content == "" {
return fmt.Errorf("no data: content")
}

return nil
}
19 changes: 12 additions & 7 deletions pkg/api/core/tool/mail/mail.go → pkg/api/core/mail/v0/mail.go
Original file line number Diff line number Diff line change
@@ -1,9 +1,9 @@
package mail
package v0

import (
"bytes"
"encoding/base64"
"fmt"
mailStruct "github.com/homenoc/dsbd-backend/pkg/api/core/mail"
"github.com/homenoc/dsbd-backend/pkg/api/core/tool/config"
"log"
"net/mail"
Expand Down Expand Up @@ -43,7 +43,7 @@ func encodeSubject(subject string) string {
return buffer.String()
}

func SendMail(d Mail) string {
func SendMail(d mailStruct.Mail) error {
from := mail.Address{Name: "Home NOC Operators' Group Support", Address: config.Conf.Mail.From}
to := mail.Address{Address: d.ToMail}
receivers := []string{to.Address}
Expand All @@ -55,10 +55,15 @@ func SendMail(d Mail) string {
"\r\n" + d.Content + config.Conf.Mail.Contract + "\r\n"

auth := smtp.PlainAuth("", config.Conf.Mail.User, config.Conf.Mail.Pass, config.Conf.Mail.Host)
if err := smtp.SendMail(config.Conf.Mail.Host+":"+strconv.Itoa(config.Conf.Mail.Port), auth,
from.Address, receivers, []byte(msg)); err != nil {
err := smtp.SendMail(config.Conf.Mail.Host+":"+strconv.Itoa(config.Conf.Mail.Port), auth,
from.Address, receivers, []byte(msg))

noticeSlack(err, d)

if err != nil {
log.Printf("Error: %v\n", err)
return fmt.Sprintf("NG: %v", err)
return err
}
return "OK"

return nil
}
27 changes: 27 additions & 0 deletions pkg/api/core/mail/v0/slack.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
package v0

import (
"github.com/ashwanthkumar/slack-go-webhook"
"github.com/homenoc/dsbd-backend/pkg/api/core/mail"
"github.com/homenoc/dsbd-backend/pkg/api/core/tool/notification"
)

func noticeSlack(err error, input mail.Mail) {
// 審査ステータスのSlack通知
attachment := slack.Attachment{}

if err != nil {
attachment.AddField(slack.Field{Title: "Title", Value: "メール送信(失敗)"}).
AddField(slack.Field{Title: "To", Value: input.ToMail}).
AddField(slack.Field{Title: "Subject", Value: input.Subject}).
AddField(slack.Field{Title: "Content", Value: input.Content}).
AddField(slack.Field{Title: "Error", Value: err.Error()})
notification.SendSlack(notification.Slack{Attachment: attachment, ID: "main", Status: false})
} else {
attachment.AddField(slack.Field{Title: "Title", Value: "メール送信"}).
AddField(slack.Field{Title: "To", Value: input.ToMail}).
AddField(slack.Field{Title: "Subject", Value: input.Subject}).
AddField(slack.Field{Title: "Content", Value: input.Content})
notification.SendSlack(notification.Slack{Attachment: attachment, ID: "main", Status: true})
}
}
5 changes: 3 additions & 2 deletions pkg/api/core/support/ticket/v0/admin.go
Original file line number Diff line number Diff line change
Expand Up @@ -9,9 +9,10 @@ import (
"github.com/homenoc/dsbd-backend/pkg/api/core/common"
controllerInterface "github.com/homenoc/dsbd-backend/pkg/api/core/controller"
controller "github.com/homenoc/dsbd-backend/pkg/api/core/controller/v0"
"github.com/homenoc/dsbd-backend/pkg/api/core/mail"
"github.com/homenoc/dsbd-backend/pkg/api/core/mail/v0"
"github.com/homenoc/dsbd-backend/pkg/api/core/support"
"github.com/homenoc/dsbd-backend/pkg/api/core/support/ticket"
"github.com/homenoc/dsbd-backend/pkg/api/core/tool/mail"
"github.com/homenoc/dsbd-backend/pkg/api/core/user"
dbChat "github.com/homenoc/dsbd-backend/pkg/api/store/support/chat/v0"
dbTicket "github.com/homenoc/dsbd-backend/pkg/api/store/support/ticket/v0"
Expand Down Expand Up @@ -264,7 +265,7 @@ func GetAdminWebSocket(c *gin.Context) {
if len(resultUser.User) != 0 {
for _, userTmp := range resultUser.User {
//グループ側にメール送信
mail.SendMail(mail.Mail{
v0.SendMail(mail.Mail{
ToMail: userTmp.Email,
Subject: "Supportより新着メッセージ",
Content: " " + userTmp.Name + "様\n\n" + "チャットより新着メッセージがあります\n" +
Expand Down
7 changes: 0 additions & 7 deletions pkg/api/core/tool/mail/interface.go

This file was deleted.

7 changes: 4 additions & 3 deletions pkg/api/core/user/v0/update.go
Original file line number Diff line number Diff line change
Expand Up @@ -3,8 +3,9 @@ package v0
import (
"fmt"
"github.com/homenoc/dsbd-backend/pkg/api/core"
"github.com/homenoc/dsbd-backend/pkg/api/core/mail"
"github.com/homenoc/dsbd-backend/pkg/api/core/mail/v0"
"github.com/homenoc/dsbd-backend/pkg/api/core/tool/config"
"github.com/homenoc/dsbd-backend/pkg/api/core/tool/mail"
toolToken "github.com/homenoc/dsbd-backend/pkg/api/core/tool/token"
"github.com/homenoc/dsbd-backend/pkg/api/core/user"
dbUser "github.com/homenoc/dsbd-backend/pkg/api/store/user/v0"
Expand Down Expand Up @@ -42,7 +43,7 @@ func replaceUser(serverData core.User, input user.Input) (core.User, error) {
serverData.MailVerify = &[]bool{false}[0]
serverData.MailToken = mailToken

mail.SendMail(mail.Mail{
v0.SendMail(mail.Mail{
ToMail: input.Email,
Subject: "本人確認のメールにつきまして",
Content: " " + serverData.Name + "様\n\n" + "以下のリンクから本人確認を完了してください。\n" +
Expand All @@ -55,7 +56,7 @@ func replaceUser(serverData core.User, input user.Input) (core.User, error) {
if input.Pass != "" {
serverData.Pass = input.Pass

mail.SendMail(mail.Mail{
v0.SendMail(mail.Mail{
ToMail: serverData.Email,
Subject: "[通知] パスワード変更",
Content: " " + serverData.Name + "様\n\n" + "パスワードが変更されました。\n",
Expand Down
7 changes: 4 additions & 3 deletions pkg/api/core/user/v0/user.go
Original file line number Diff line number Diff line change
Expand Up @@ -8,10 +8,11 @@ import (
auth "github.com/homenoc/dsbd-backend/pkg/api/core/auth/v0"
"github.com/homenoc/dsbd-backend/pkg/api/core/common"
"github.com/homenoc/dsbd-backend/pkg/api/core/group"
"github.com/homenoc/dsbd-backend/pkg/api/core/mail"
"github.com/homenoc/dsbd-backend/pkg/api/core/mail/v0"
"github.com/homenoc/dsbd-backend/pkg/api/core/tool/config"
"github.com/homenoc/dsbd-backend/pkg/api/core/tool/gen"
"github.com/homenoc/dsbd-backend/pkg/api/core/tool/hash"
"github.com/homenoc/dsbd-backend/pkg/api/core/tool/mail"
"github.com/homenoc/dsbd-backend/pkg/api/core/tool/notification"
toolToken "github.com/homenoc/dsbd-backend/pkg/api/core/tool/token"
"github.com/homenoc/dsbd-backend/pkg/api/core/user"
Expand Down Expand Up @@ -85,7 +86,7 @@ func Add(c *gin.Context) {
AddField(slack.Field{Title: "Name(English)", Value: input.NameEn})
notification.SendSlack(notification.Slack{Attachment: attachment, ID: "main", Status: true})

mail.SendMail(mail.Mail{
v0.SendMail(mail.Mail{
ToMail: data.Email,
Subject: "本人確認のメールにつきまして",
Content: " " + input.Name + "様\n\n" + "以下のリンクから本人確認を完了してください。\n" +
Expand Down Expand Up @@ -197,7 +198,7 @@ func AddGroup(c *gin.Context) {
AddField(slack.Field{Title: "Name(English)", Value: input.NameEn})
notification.SendSlack(notification.Slack{Attachment: attachment, ID: "main", Status: true})

mail.SendMail(mail.Mail{
v0.SendMail(mail.Mail{
ToMail: data.Email,
Subject: "本人確認メールにつきまして",
Content: " " + input.Name + "様\n\n" + "以下のリンクから本人確認を完了してください。\n" +
Expand Down

0 comments on commit ae8b2b3

Please sign in to comment.