Skip to content

Commit

Permalink
Bug fix
Browse files Browse the repository at this point in the history
  • Loading branch information
loganhz committed Apr 22, 2020
1 parent 4559d31 commit 5f29189
Show file tree
Hide file tree
Showing 9 changed files with 182 additions and 51 deletions.
87 changes: 87 additions & 0 deletions .drone.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,87 @@
kind: pipeline
name: default

steps:
- name: build
pull: default
image: rancher/dapper:v0.4.2
commands:
- dapper ci
privileged: true
volumes:
- name: docker
path: /var/run/docker.sock
when:
event:
- push
- pull_request
- tag

- name: github_binary_release
image: plugins/github-release
settings:
api_key:
from_secret: github_token
prerelease: true
checksum:
- sha256
checksum_file: CHECKSUMsum-amd64.txt
checksum_flatten: true
files:
- "dist/artifacts/*"
when:
ref:
- refs/head/master
- refs/tags/*
event:
- tag

- name: docker-publish-head
image: plugins/docker
settings:
build_args:
- ARCH=amd64
custom_dns: 1.1.1.1
dockerfile: package/Dockerfile
tag: latest
password:
from_secret: docker_password
repo: cnrancher/pdf-sender
username:
from_secret: docker_username
when:
ref:
include:
- "refs/heads/master"
event:
- push

- name: docker-publish
image: plugins/docker
settings:
build_args:
- ARCH=amd64
custom_dns: 1.1.1.1
dockerfile: package/Dockerfile
password:
from_secret: docker_password
repo: cnrancher/pdf-sender
tag: "${DRONE_TAG}"
username:
from_secret: docker_username
when:
event:
- tag

volumes:
- name: docker
host:
path: /var/run/docker.sock

node:
instance: agent-amd64

trigger:
event:
exclude:
- promote
9 changes: 7 additions & 2 deletions Dockerfile.dapper
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,11 @@ RUN go get -d github.com/alecthomas/gometalinter && \
go install github.com/alecthomas/gometalinter && \
gometalinter --install && \
rm -rf /go/src /go/pkg
# use go mod, and vendor exists,no need to get dependence
#RUN go get -d github.com/rancher/trash && \
# git -C /go/src/github.com/rancher/trash checkout -b current v0.2.6 && \
# go install github.com/rancher/trash && \
# rm -rf /go/src /go/pkg

ENV DAPPER_ENV REPO TAG DRONE_TAG
ENV DAPPER_SOURCE /go/src/github.com/rancher/pdf-sender/
Expand All @@ -23,5 +28,5 @@ ENV HOME ${DAPPER_SOURCE}
ENV GO111MODULE on
WORKDIR ${DAPPER_SOURCE}

ENTRYPOINT ["./scripts/entry"]
CMD ["ci"]
ENTRYPOINT ["sh", "./scripts/entry"]
CMD ["ci"]
33 changes: 33 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,33 @@
# 环境变量配置:

SMTP_RANCHER_TO: 定期接收消息邮箱

SMTP_USER: 服务邮箱用户名
SMTP_PWD: 服务邮箱用户密码
SMTP_ENDPOINT: SMTP端点
SMTP_PORT: 服务邮箱端口

DB_HOST_IP: 数据库地址
DB_USERNAME: 数据库用户名
DB_PASSWORD: 数据库密码
DB_NAME: 数据库名

ALI_REGION_ID: 阿里云区域
ALI_ACCESS_KEYID: 阿里云访问令牌
ALI_ACCESS_SECRET: 阿里云访问令牌密钥
ALI_SIGN_NAME: 阿里云短信签名
ALI_TEMPLATE_CODE: 阿里云短信模板

# 建表SQL语句:

CREATE TABLE `user` (
`uid` int(11) NOT NULL AUTO_INCREMENT,
`name` varchar(255) DEFAULT NULL,
`company` varchar(255) DEFAULT NULL,
`position` varchar(255) DEFAULT NULL,
`phone` varchar(255) DEFAULT NULL,
`email` varchar(255) DEFAULT NULL,
`savetime` datetime DEFAULT NULL,
`status` tinyint(1) DEFAULT NULL,
PRIMARY KEY (`uid`)
) ENGINE=InnoDB AUTO_INCREMENT=77 DEFAULT CHARSET=utf8mb4;
2 changes: 1 addition & 1 deletion package/Dockerfile
Original file line number Diff line number Diff line change
@@ -1,3 +1,3 @@
FROM alpine:3
COPY bin/pdf-sender/pdf-sender
COPY bin/pdf-sender /pdf-sender
CMD ["/pdf-sender"]
76 changes: 45 additions & 31 deletions pkg/apis/cron.go
Original file line number Diff line number Diff line change
Expand Up @@ -14,31 +14,36 @@ import (

var (
SMTPRancherTo = os.Getenv("SMTP_RANCHER_TO")
CronJob = os.Getenv("CRON")

yesterday string
today string
count int
)

func CollectInformation() {
c := cron.New()
logrus.Infof("Collect information start")
// cstSh, _ := time.LoadLocation("Asia/Shanghai")
// c.AddFunc("@every 0h0m10s", func() { fmt.Println(time.Now().In(cstSh).Format("2006-01-02 15:04:05")) })
c.AddFunc("@every 0h0m10s", func() {
excelName := DBSelect()
SendInformation(excelName)
_, err := c.AddFunc(CronJob, func() {
DBSelect()
SendInformation()
})
// c.AddFunc("CRON_TZ=Asia/Shanghai 30 09 * * *", func() {
// excelName := DBSelect()
// SendInformation(excelName)
// })
if err != nil {
logrus.Errorf("Failed cron add function : %v", err)
}

c.Start()
}

func SendInformation(excelName string) {
func SendInformation() {
m := gomail.NewMessage()

m.SetAddressHeader("From", "no-reply@rancher.cn", "Rancher Labs 中国")
m.SetHeader("To", SMTPRancherTo)
m.SetHeader("Subject", excelName+"用户信息")
m.Attach("excel/" + excelName + ".xlsx")
m.SetHeader("Subject", yesterday+"用户信息")
m.SetBody("text/plain", `从 `+yesterday+` 08:00 ~ `+today+` 08:00,一共有 `+strconv.Itoa(count)+` 人下载了中文文档。`)

m.Attach("/tmp/" + yesterday + ".xlsx")

d := gomail.NewDialer(SMTPEndpoint, 587, SMTPUser, SMTPPwd)

Expand All @@ -50,11 +55,11 @@ func SendInformation(excelName string) {

}

func DBSelect() string {
func DBSelect() {

xlsx := excelize.NewFile()

index := xlsx.NewSheet("用户信息表")
index := xlsx.GetSheetIndex("Sheet1")

data := map[string]string{
"A1": "名字",
Expand All @@ -63,46 +68,55 @@ func DBSelect() string {
"D1": "手机号",
"E1": "电子邮箱",
"F1": "保存时间",
"G1": "邮件发送状态",
"G1": "邮箱是否有效",
}

stmt, err := DB.Prepare("SELECT * FROM user WHERE date(savetime) = date_sub(curdate(),interval 1 day)")
if err != nil {
logrus.Errorf("Failed to prepare SQL statement : %v", err)
}
defer stmt.Close()

rows, err := DB.Query("SELECT * FROM " + dbtable + " WHERE date(savetime) = date_sub(curdate(),interval 1 day)")
rows, err := stmt.Query()
if nil != err {
logrus.Errorf("Failed to query : %v", err)
}

defer rows.Close()

var count int = 1
count = 0
for rows.Next() {
count++
var user types.User
row := count + 1
err := rows.Scan(&user.UID, &user.Name, &user.Company, &user.Position, &user.Phone, &user.Email, &user.SaveTime, &user.Status)
if err != nil {
logrus.Errorf("Failed rows scan : %v", err)
}
data["A"+strconv.Itoa(count)] = user.Name
data["B"+strconv.Itoa(count)] = user.Company
data["C"+strconv.Itoa(count)] = user.Position
data["D"+strconv.Itoa(count)] = user.Phone
data["E"+strconv.Itoa(count)] = user.Email
data["F"+strconv.Itoa(count)] = user.SaveTime.Format("2006-01-02 15:04:05")
data["G"+strconv.Itoa(count)] = strconv.FormatBool(user.Status)
data["A"+strconv.Itoa(row)] = user.Name
data["B"+strconv.Itoa(row)] = user.Company
data["C"+strconv.Itoa(row)] = user.Position
data["D"+strconv.Itoa(row)] = user.Phone
data["E"+strconv.Itoa(row)] = user.Email
data["F"+strconv.Itoa(row)] = user.SaveTime.Format("2006-01-02 15:04:05")
data["G"+strconv.Itoa(row)] = strconv.FormatBool(user.Status)
}

for k, v := range data {
xlsx.SetCellValue("用户信息表", k, v)
xlsx.SetCellValue("Sheet1", k, v)
}

xlsx.SetActiveSheet(index)

d, _ := time.ParseDuration("-24h")

excelName := time.Now().Add(d).Format("2006-01-02")
err = xlsx.SaveAs("excel/" + excelName + ".xlsx")
d, err := time.ParseDuration("-24h")
if err != nil {
logrus.Errorf("Failed time parsed duration : %v", err)
}

yesterday = time.Now().Add(d).Format("2006-01-02")
today = time.Now().Format("2006-01-02")
err = xlsx.SaveAs("/tmp/" + yesterday + ".xlsx")
if err != nil {
logrus.Errorf("Failed to save excel : %v", err)
}

return excelName
}
13 changes: 4 additions & 9 deletions pkg/apis/mysql.go
Original file line number Diff line number Diff line change
Expand Up @@ -20,12 +20,11 @@ var (
dbusername = os.Getenv("DB_USERNAME")
dbpassword = os.Getenv("DB_PASSWORD")
dbname = os.Getenv("DB_NAME")
dbtable = os.Getenv("DB_TABLE")
)

func ConnectMysql() {

dbinfo := strings.Join([]string{dbusername, ":", dbpassword, "@tcp(", dbhostsip, ")/", dbname, "?charset=utf8&parseTime=true&loc=Local&time_zone='%2B8:00'"}, "")
dbinfo := strings.Join([]string{dbusername, ":", dbpassword, "@tcp(", dbhostsip, ")/", dbname, "?charset=utf8&parseTime=true"}, "")

logrus.Infof(dbinfo)
err := errors.New("")
Expand All @@ -47,20 +46,16 @@ func ConnectMysql() {
}

func DBSave(user *types.User) {
tx, err := DB.Begin()
if nil != err {
logrus.Errorf("Failed to open transaction : %v", err)
}

stmt, err := tx.Prepare("INSERT INTO " + dbtable + "(name, company, position, phone, email, savetime, status) values(?,?,?,?,?,?,?)")
stmt, err := DB.Prepare("INSERT INTO user(name, company, position, phone, email, savetime, status) values(?,?,?,?,?,?,?)")
if nil != err {
logrus.Errorf("Failed to prepare SQL statement : %v", err)
}

defer stmt.Close()

_, err = stmt.Exec(user.Name, user.Company, user.Position, user.Phone, user.Email, time.Now(), user.Status)
if nil != err {
logrus.Errorf("Failed to executes SQL : %v", err)
}

tx.Commit()
}
5 changes: 0 additions & 5 deletions pkg/server/limit_ip.go
Original file line number Diff line number Diff line change
@@ -1,16 +1,11 @@
package server

import (
"net/http"
"sync"

"golang.org/x/time/rate"
)

func okHandler(w http.ResponseWriter, r *http.Request) {
w.Write([]byte("alles gut"))
}

type IPRateLimiter struct {
ips map[string]*rate.Limiter
mu *sync.RWMutex
Expand Down
7 changes: 4 additions & 3 deletions scripts/ci
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,8 @@ set -e

cd $(dirname $0)

# ./test
# ./validate
chmod +x ./build
chmod +x ./package

./build
./package
./package
1 change: 1 addition & 0 deletions scripts/entry
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@ set -e

mkdir -p bin dist
if [ -e ./scripts/$1 ]; then
chmod +x ./scripts/"$@"
./scripts/"$@"
else
exec "$@"
Expand Down

0 comments on commit 5f29189

Please sign in to comment.