/
server.go
316 lines (270 loc) · 21.4 KB
/
server.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
package main
import (
"encoding/json"
"errors"
"fmt"
"net/http"
"os"
"path/filepath"
"runtime"
"strconv"
"strings"
"github.com/sirupsen/logrus"
"github.com/lithammer/shortuuid"
"github.com/go-zoo/bone"
bolt "go.etcd.io/bbolt"
"github.com/sideshow/apns2"
"github.com/sideshow/apns2/certificate"
"github.com/sideshow/apns2/payload"
)
type BaseResponse struct {
Code int `json:"code"`
Data interface{} `json:"data"`
Message string `json:"message"`
}
func responseString(code int, message string) string {
t, _ := json.Marshal(BaseResponse{Code: code, Message: message})
return string(t)
}
func responseData(code int, data map[string]interface{}, message string) string {
t, _ := json.Marshal(BaseResponse{Code: code, Data: data, Message: message})
return string(t)
}
func ping(w http.ResponseWriter, r *http.Request) {
defer func() { _ = r.Body.Close() }()
_, err := fmt.Fprint(w, responseData(200, map[string]interface{}{
"version": Version,
"build": BuildDate,
"arch": runtime.GOOS + "/" + runtime.GOARCH,
"commit": CommitID,
}, "pong"))
if err != nil {
logrus.Error(err)
}
}
func index(w http.ResponseWriter, r *http.Request) {
key := bone.GetValue(r, "key")
category := bone.GetValue(r, "category")
title := bone.GetValue(r, "title")
body := bone.GetValue(r, "body")
deviceToken, err := getDeviceTokenByKey(key)
if err != nil {
logrus.Errorf("找不到 key 对应的 DeviceToken key: %s", key)
_, err = fmt.Fprint(w, responseString(400, "找不到 Key 对应的 DeviceToken, 请确保 Key 正确! Key 可在 App 端注册获得。"))
if err != nil {
logrus.Error(err)
}
return
}
err = r.ParseForm()
if err != nil {
logrus.Error(err)
}
if len(title) <= 0 && len(body) <= 0 {
//url中不包含 title body,则从Form里取
for key, value := range r.Form {
if strings.ToLower(key) == "title" {
title = value[0]
} else if strings.ToLower(key) == "body" {
body = value[0]
}
}
}
if body == "" {
body = "无推送文字内容"
}
params := make(map[string]interface{})
for key, value := range r.Form {
params[strings.ToLower(key)] = value[0]
}
logrus.Println(" ========================== ")
logrus.Println("key: ", key)
logrus.Println("category: ", category)
logrus.Println("title: ", title)
logrus.Println("body: ", body)
logrus.Println("params: ", params)
logrus.Println(" ========================== ")
err = postPush(category, title, body, deviceToken, params)
if err != nil {
_, err = fmt.Fprint(w, responseString(400, err.Error()))
if err != nil {
logrus.Error(err)
}
} else {
_, err = fmt.Fprint(w, responseString(200, ""))
if err != nil {
logrus.Error(err)
}
}
}
func register(w http.ResponseWriter, r *http.Request) {
defer func() { _ = r.Body.Close() }()
err := r.ParseForm()
if err != nil {
logrus.Error(err)
}
key := shortuuid.New()
var deviceToken string
for key, value := range r.Form {
if strings.ToLower(key) == "devicetoken" {
deviceToken = value[0]
break
}
}
if len(deviceToken) <= 0 {
_, err = fmt.Fprint(w, responseString(400, "deviceToken 不能为空"))
if err != nil {
logrus.Error(err)
}
return
}
oldKey := r.FormValue("key")
err = boltDB.Update(func(tx *bolt.Tx) error {
bucket, err := tx.CreateBucketIfNotExists([]byte("device"))
if err != nil {
return err
}
if len(oldKey) > 0 {
//如果已经注册,则更新DeviceToken的值
val := bucket.Get([]byte(oldKey))
if val != nil {
key = oldKey
}
}
return bucket.Put([]byte(key), []byte(deviceToken))
})
if err != nil {
_, err = fmt.Fprint(w, responseString(400, "注册设备失败"))
if err != nil {
logrus.Error(err)
}
return
}
logrus.Info("注册设备成功")
logrus.Info("key: ", key)
logrus.Info("deviceToken: ", deviceToken)
_, err = fmt.Fprint(w, responseData(200, map[string]interface{}{"key": key}, "注册成功"))
if err != nil {
logrus.Error(err)
}
}
func getDeviceTokenByKey(key string) (string, error) {
var deviceTokenBytes []byte
err := boltDB.View(func(tx *bolt.Tx) error {
bucket := tx.Bucket([]byte("device"))
deviceTokenBytes = bucket.Get([]byte(key))
if deviceTokenBytes == nil {
return errors.New("没找到 DeviceToken")
}
return nil
})
if err != nil {
return "", err
}
return string(deviceTokenBytes), nil
}
func getb() []byte {
//测试证书
if dev {
return []byte{}
}
//线上证书
return []byte{48, 130, 12, 167, 2, 1, 3, 48, 130, 12, 110, 6, 9, 42, 134, 72, 134, 247, 13, 1, 7, 1, 160, 130, 12, 95, 4, 130, 12, 91, 48, 130, 12, 87, 48, 130, 6, 231, 6, 9, 42, 134, 72, 134, 247, 13, 1, 7, 6, 160, 130, 6, 216, 48, 130, 6, 212, 2, 1, 0, 48, 130, 6, 205, 6, 9, 42, 134, 72, 134, 247, 13, 1, 7, 1, 48, 28, 6, 10, 42, 134, 72, 134, 247, 13, 1, 12, 1, 6, 48, 14, 4, 8, 226, 154, 130, 88, 32, 0, 103, 17, 2, 2, 8, 0, 128, 130, 6, 160, 182, 61, 115, 33, 49, 8, 185, 16, 61, 104, 163, 255, 88, 73, 114, 168, 193, 84, 159, 254, 130, 169, 30, 232, 56, 215, 4, 154, 14, 148, 148, 99, 24, 79, 14, 195, 184, 64, 197, 198, 86, 71, 118, 237, 21, 151, 162, 228, 197, 166, 10, 175, 184, 172, 190, 177, 36, 185, 125, 108, 251, 145, 188, 23, 242, 68, 142, 17, 211, 6, 109, 207, 182, 67, 81, 199, 54, 161, 92, 92, 14, 25, 40, 222, 246, 180, 143, 183, 66, 80, 250, 26, 44, 205, 163, 151, 103, 199, 81, 246, 198, 103, 128, 122, 201, 29, 211, 208, 49, 215, 158, 134, 10, 10, 152, 191, 210, 141, 246, 19, 67, 212, 112, 253, 61, 123, 186, 129, 185, 178, 87, 163, 35, 136, 0, 62, 68, 82, 171, 105, 66, 229, 81, 73, 83, 155, 148, 6, 55, 144, 55, 23, 200, 37, 210, 202, 107, 220, 249, 232, 213, 168, 192, 140, 82, 52, 5, 85, 42, 203, 197, 117, 238, 123, 123, 218, 227, 81, 174, 40, 29, 157, 45, 176, 64, 171, 106, 190, 193, 172, 99, 72, 80, 118, 131, 55, 206, 123, 129, 38, 42, 98, 127, 109, 48, 227, 200, 72, 8, 238, 234, 59, 249, 134, 91, 80, 102, 102, 21, 8, 235, 120, 72, 100, 9, 194, 127, 223, 10, 110, 104, 5, 33, 114, 109, 182, 166, 60, 126, 34, 140, 165, 136, 23, 181, 67, 47, 167, 123, 22, 153, 188, 73, 241, 200, 134, 246, 52, 153, 195, 118, 2, 180, 218, 233, 12, 153, 178, 158, 7, 96, 40, 139, 101, 158, 230, 159, 145, 180, 169, 144, 127, 234, 169, 89, 30, 214, 227, 142, 68, 82, 237, 93, 109, 77, 10, 17, 12, 1, 179, 234, 175, 63, 69, 33, 116, 132, 234, 207, 173, 1, 61, 138, 53, 242, 175, 169, 109, 55, 35, 190, 54, 157, 135, 126, 188, 109, 55, 5, 239, 123, 98, 11, 163, 87, 39, 21, 141, 164, 230, 122, 23, 4, 9, 157, 108, 32, 141, 112, 214, 208, 102, 148, 180, 220, 121, 33, 104, 60, 176, 208, 229, 58, 72, 220, 29, 44, 53, 18, 62, 51, 21, 46, 198, 196, 252, 59, 29, 121, 60, 173, 9, 158, 2, 98, 27, 238, 141, 121, 160, 100, 136, 218, 93, 178, 237, 113, 30, 84, 88, 9, 168, 178, 134, 88, 113, 244, 19, 59, 110, 112, 118, 179, 34, 187, 32, 168, 161, 88, 15, 60, 149, 184, 171, 139, 168, 171, 2, 48, 97, 132, 72, 195, 243, 93, 246, 152, 188, 0, 241, 9, 94, 192, 132, 137, 225, 11, 110, 50, 97, 92, 26, 21, 72, 84, 55, 198, 113, 9, 175, 227, 180, 166, 88, 54, 60, 198, 56, 43, 71, 125, 223, 104, 198, 88, 93, 93, 166, 74, 134, 123, 177, 208, 247, 147, 25, 201, 169, 253, 217, 73, 31, 29, 118, 63, 23, 205, 160, 2, 202, 116, 194, 35, 31, 94, 49, 252, 158, 226, 100, 188, 234, 248, 237, 127, 39, 188, 91, 140, 150, 207, 37, 34, 178, 64, 76, 187, 23, 89, 53, 173, 31, 123, 165, 123, 90, 63, 39, 218, 50, 97, 122, 213, 250, 143, 2, 24, 171, 34, 232, 228, 42, 160, 84, 36, 244, 167, 63, 87, 153, 45, 65, 106, 201, 41, 25, 214, 26, 102, 124, 124, 141, 112, 188, 56, 113, 203, 139, 7, 64, 192, 29, 143, 173, 182, 9, 215, 112, 188, 158, 164, 43, 210, 132, 151, 255, 248, 91, 162, 98, 231, 147, 224, 195, 88, 245, 13, 166, 6, 180, 187, 196, 208, 190, 209, 141, 215, 185, 127, 162, 44, 254, 72, 224, 204, 84, 94, 183, 225, 51, 167, 88, 94, 222, 92, 1, 50, 55, 83, 181, 115, 236, 38, 202, 151, 3, 58, 186, 174, 17, 111, 222, 114, 6, 166, 142, 236, 164, 110, 174, 6, 243, 81, 244, 139, 191, 23, 163, 62, 20, 152, 197, 233, 12, 47, 146, 146, 184, 244, 144, 135, 0, 103, 11, 107, 61, 149, 62, 153, 23, 243, 117, 41, 227, 176, 51, 47, 81, 226, 51, 180, 57, 159, 128, 246, 38, 33, 235, 147, 165, 174, 234, 15, 214, 99, 150, 42, 72, 219, 149, 174, 1, 172, 142, 163, 64, 21, 246, 223, 81, 241, 162, 163, 216, 190, 210, 166, 215, 169, 55, 95, 165, 168, 153, 116, 134, 13, 90, 146, 72, 228, 11, 250, 151, 140, 84, 219, 70, 118, 251, 40, 49, 205, 177, 119, 162, 219, 87, 253, 155, 242, 191, 8, 60, 22, 35, 194, 11, 211, 128, 139, 32, 167, 179, 0, 201, 119, 43, 200, 115, 112, 252, 221, 72, 122, 101, 0, 106, 235, 230, 131, 194, 192, 176, 22, 184, 146, 179, 143, 126, 67, 212, 148, 219, 219, 95, 187, 99, 84, 187, 138, 48, 175, 224, 1, 245, 88, 235, 40, 65, 73, 203, 134, 122, 190, 22, 99, 42, 153, 205, 203, 115, 53, 98, 76, 85, 187, 4, 174, 1, 15, 57, 1, 158, 63, 198, 184, 250, 62, 140, 79, 111, 121, 240, 176, 11, 172, 48, 130, 33, 22, 253, 233, 16, 115, 197, 203, 24, 55, 69, 18, 121, 219, 118, 124, 246, 160, 179, 44, 240, 196, 219, 193, 81, 142, 75, 130, 237, 45, 142, 21, 13, 72, 87, 237, 66, 248, 157, 189, 45, 55, 87, 1, 88, 35, 96, 59, 140, 214, 138, 156, 37, 19, 170, 161, 105, 14, 175, 9, 199, 46, 252, 45, 164, 39, 55, 255, 206, 249, 164, 39, 164, 132, 125, 80, 93, 74, 150, 166, 131, 119, 131, 171, 202, 243, 202, 23, 44, 21, 108, 255, 236, 198, 133, 84, 45, 50, 216, 194, 99, 100, 33, 150, 99, 139, 90, 74, 10, 201, 160, 57, 134, 187, 53, 241, 113, 88, 72, 50, 10, 172, 85, 106, 77, 153, 158, 192, 31, 87, 140, 139, 7, 211, 225, 127, 135, 16, 249, 39, 226, 237, 29, 171, 90, 57, 240, 159, 250, 250, 43, 237, 108, 121, 110, 175, 37, 177, 151, 98, 255, 172, 169, 58, 83, 9, 53, 96, 89, 219, 159, 75, 149, 80, 15, 191, 46, 56, 161, 158, 117, 230, 47, 7, 161, 255, 39, 113, 185, 84, 176, 13, 225, 192, 253, 210, 127, 226, 128, 145, 81, 231, 59, 56, 114, 100, 30, 218, 153, 13, 50, 168, 205, 107, 13, 148, 136, 36, 145, 152, 224, 6, 125, 132, 93, 161, 191, 58, 70, 162, 245, 41, 188, 135, 233, 156, 141, 247, 204, 104, 52, 105, 199, 251, 233, 247, 20, 229, 240, 85, 24, 93, 172, 58, 200, 122, 66, 215, 253, 120, 239, 24, 14, 77, 2, 46, 10, 182, 228, 228, 81, 246, 227, 212, 54, 247, 78, 152, 255, 94, 88, 245, 62, 252, 126, 233, 244, 169, 180, 123, 154, 60, 82, 86, 248, 64, 105, 103, 168, 106, 1, 241, 10, 178, 254, 102, 42, 18, 141, 216, 146, 47, 0, 25, 151, 41, 177, 5, 105, 43, 230, 132, 1, 124, 42, 186, 139, 113, 62, 23, 200, 118, 21, 23, 92, 222, 149, 4, 199, 110, 103, 165, 159, 235, 74, 215, 60, 159, 166, 165, 107, 150, 4, 173, 21, 236, 158, 151, 39, 33, 9, 219, 155, 249, 115, 187, 92, 131, 46, 157, 186, 12, 224, 231, 81, 88, 58, 235, 184, 67, 189, 194, 85, 252, 73, 132, 29, 114, 149, 2, 159, 71, 133, 253, 198, 167, 67, 44, 82, 102, 61, 227, 165, 146, 143, 62, 102, 136, 135, 140, 123, 37, 145, 58, 190, 175, 158, 144, 130, 199, 62, 70, 31, 200, 216, 65, 59, 169, 67, 55, 193, 31, 188, 9, 93, 61, 3, 66, 165, 100, 160, 201, 139, 212, 74, 228, 91, 106, 217, 69, 248, 2, 44, 52, 175, 242, 102, 36, 248, 255, 176, 69, 220, 86, 172, 50, 112, 169, 210, 111, 144, 36, 155, 8, 199, 40, 67, 53, 208, 35, 187, 170, 30, 26, 28, 157, 53, 7, 158, 112, 173, 218, 101, 147, 73, 130, 208, 109, 27, 203, 148, 28, 66, 167, 154, 73, 243, 52, 64, 52, 26, 85, 136, 219, 105, 197, 230, 178, 251, 148, 75, 13, 234, 83, 31, 250, 195, 103, 206, 1, 205, 151, 79, 40, 14, 3, 48, 172, 239, 95, 215, 84, 16, 58, 136, 150, 95, 13, 98, 19, 20, 228, 184, 78, 160, 191, 91, 78, 61, 124, 207, 104, 19, 31, 194, 176, 252, 185, 221, 99, 85, 71, 117, 149, 64, 127, 221, 126, 105, 7, 161, 155, 102, 41, 221, 72, 92, 111, 214, 236, 121, 255, 41, 75, 156, 125, 234, 71, 132, 208, 209, 105, 30, 176, 16, 212, 97, 239, 153, 216, 131, 243, 61, 115, 85, 245, 73, 22, 87, 249, 194, 70, 53, 249, 220, 184, 65, 65, 76, 142, 154, 177, 143, 31, 81, 250, 175, 141, 242, 41, 249, 244, 151, 89, 120, 63, 103, 44, 10, 211, 30, 211, 211, 7, 153, 66, 248, 213, 95, 78, 170, 140, 246, 153, 106, 195, 108, 114, 50, 54, 36, 191, 165, 92, 85, 246, 202, 82, 87, 228, 160, 64, 37, 153, 228, 157, 199, 85, 0, 16, 83, 219, 195, 63, 1, 1, 160, 160, 68, 166, 64, 113, 129, 154, 231, 207, 70, 234, 217, 164, 92, 245, 236, 68, 74, 139, 34, 8, 137, 67, 233, 112, 138, 83, 143, 114, 35, 29, 150, 49, 104, 103, 127, 243, 35, 5, 220, 6, 12, 184, 124, 39, 44, 118, 205, 226, 5, 45, 233, 86, 209, 212, 126, 115, 179, 159, 30, 192, 188, 66, 99, 28, 96, 23, 43, 7, 186, 117, 138, 193, 168, 43, 211, 235, 49, 19, 165, 141, 134, 154, 190, 183, 16, 174, 167, 0, 206, 44, 60, 216, 32, 63, 8, 162, 178, 155, 250, 109, 46, 3, 48, 214, 162, 163, 69, 158, 209, 28, 13, 59, 127, 65, 225, 57, 107, 99, 96, 212, 0, 129, 192, 100, 95, 146, 221, 199, 62, 48, 130, 5, 104, 6, 9, 42, 134, 72, 134, 247, 13, 1, 7, 1, 160, 130, 5, 89, 4, 130, 5, 85, 48, 130, 5, 81, 48, 130, 5, 77, 6, 11, 42, 134, 72, 134, 247, 13, 1, 12, 10, 1, 2, 160, 130, 4, 238, 48, 130, 4, 234, 48, 28, 6, 10, 42, 134, 72, 134, 247, 13, 1, 12, 1, 3, 48, 14, 4, 8, 57, 254, 149, 234, 109, 31, 5, 191, 2, 2, 8, 0, 4, 130, 4, 200, 9, 55, 252, 10, 61, 189, 25, 69, 168, 63, 49, 31, 224, 18, 116, 172, 222, 15, 190, 243, 173, 189, 162, 17, 83, 140, 211, 127, 168, 246, 123, 106, 167, 177, 14, 250, 35, 41, 137, 78, 223, 221, 19, 254, 58, 9, 234, 202, 28, 57, 231, 16, 196, 214, 94, 249, 165, 37, 168, 192, 203, 67, 44, 122, 152, 111, 254, 191, 223, 69, 12, 170, 188, 187, 135, 44, 128, 143, 141, 28, 223, 3, 217, 70, 150, 135, 158, 245, 28, 235, 229, 107, 64, 32, 70, 176, 145, 87, 250, 36, 84, 202, 135, 214, 212, 182, 232, 146, 164, 195, 189, 126, 84, 35, 169, 33, 234, 229, 219, 52, 164, 164, 214, 125, 119, 77, 153, 92, 114, 24, 204, 88, 194, 78, 116, 187, 205, 2, 94, 199, 65, 18, 127, 89, 109, 15, 107, 93, 229, 255, 55, 239, 50, 90, 151, 44, 77, 95, 235, 229, 12, 211, 98, 59, 19, 169, 245, 199, 252, 35, 49, 109, 52, 157, 185, 19, 137, 163, 134, 198, 206, 123, 138, 132, 252, 169, 250, 163, 204, 255, 86, 114, 227, 9, 196, 121, 204, 78, 153, 137, 167, 25, 65, 35, 55, 185, 29, 37, 147, 82, 46, 26, 100, 8, 38, 75, 190, 216, 139, 82, 190, 161, 186, 43, 81, 71, 152, 111, 115, 228, 178, 174, 97, 38, 161, 74, 99, 230, 203, 43, 92, 24, 162, 83, 150, 81, 0, 129, 91, 236, 207, 203, 171, 230, 57, 178, 213, 206, 19, 20, 225, 190, 197, 29, 206, 83, 196, 93, 227, 51, 202, 29, 191, 153, 66, 228, 33, 194, 168, 196, 73, 99, 91, 47, 123, 156, 184, 33, 136, 0, 149, 154, 139, 124, 192, 110, 152, 237, 218, 132, 174, 212, 26, 224, 50, 178, 26, 137, 63, 160, 190, 77, 157, 20, 48, 119, 202, 123, 28, 232, 87, 189, 26, 104, 230, 112, 174, 242, 96, 34, 131, 161, 154, 174, 253, 99, 225, 255, 174, 128, 228, 138, 32, 161, 80, 242, 67, 207, 10, 179, 118, 65, 11, 71, 64, 223, 121, 225, 251, 240, 181, 66, 47, 126, 254, 153, 77, 12, 156, 207, 31, 136, 88, 47, 165, 89, 212, 84, 141, 199, 170, 156, 67, 115, 218, 99, 118, 109, 74, 22, 13, 145, 254, 166, 2, 222, 243, 170, 241, 22, 130, 183, 115, 35, 86, 18, 249, 197, 239, 3, 51, 146, 146, 255, 155, 178, 236, 32, 34, 50, 155, 9, 52, 198, 60, 210, 111, 186, 255, 172, 238, 250, 62, 246, 39, 204, 3, 213, 24, 189, 81, 226, 124, 167, 24, 75, 35, 234, 137, 123, 84, 69, 151, 53, 216, 134, 222, 218, 48, 149, 172, 173, 193, 90, 7, 28, 224, 167, 159, 24, 24, 129, 165, 247, 29, 48, 177, 137, 97, 107, 47, 137, 237, 203, 9, 128, 171, 25, 111, 212, 141, 24, 33, 7, 36, 99, 74, 249, 0, 144, 112, 114, 148, 199, 227, 192, 144, 36, 36, 94, 157, 162, 1, 190, 153, 53, 24, 247, 113, 105, 136, 59, 47, 99, 133, 137, 120, 170, 190, 124, 77, 169, 190, 82, 184, 123, 202, 143, 82, 219, 163, 202, 176, 83, 180, 224, 170, 195, 99, 11, 31, 106, 214, 32, 187, 211, 18, 165, 140, 127, 123, 67, 51, 150, 219, 131, 20, 211, 164, 154, 253, 93, 136, 239, 233, 60, 19, 191, 138, 36, 72, 232, 183, 124, 121, 43, 82, 40, 205, 213, 207, 154, 95, 12, 144, 74, 238, 151, 151, 66, 81, 178, 80, 117, 165, 139, 194, 35, 66, 121, 198, 144, 131, 123, 99, 85, 77, 3, 31, 160, 62, 33, 177, 105, 24, 163, 18, 84, 55, 165, 252, 254, 153, 66, 244, 59, 208, 224, 141, 180, 169, 54, 208, 181, 78, 160, 251, 81, 197, 82, 10, 178, 183, 102, 208, 75, 189, 145, 100, 229, 192, 247, 152, 0, 159, 20, 125, 123, 213, 57, 164, 38, 110, 144, 236, 69, 225, 172, 65, 75, 23, 187, 92, 153, 43, 13, 154, 62, 220, 151, 245, 11, 160, 218, 168, 169, 91, 123, 191, 3, 85, 142, 97, 170, 107, 79, 99, 90, 24, 69, 40, 254, 181, 245, 55, 225, 155, 200, 151, 231, 51, 231, 253, 142, 246, 222, 46, 28, 67, 200, 253, 23, 103, 99, 218, 147, 80, 198, 129, 127, 129, 64, 61, 71, 190, 220, 195, 194, 170, 176, 136, 40, 10, 136, 169, 131, 159, 150, 188, 26, 46, 73, 51, 227, 117, 88, 169, 5, 222, 200, 167, 113, 134, 45, 249, 35, 189, 27, 63, 241, 75, 171, 243, 185, 103, 233, 14, 49, 36, 84, 112, 155, 24, 138, 62, 194, 239, 226, 152, 106, 53, 134, 97, 45, 80, 239, 131, 254, 173, 50, 63, 15, 71, 5, 125, 147, 216, 52, 177, 200, 114, 3, 152, 205, 147, 93, 123, 109, 206, 110, 254, 65, 196, 124, 224, 59, 180, 137, 198, 24, 222, 238, 101, 73, 102, 225, 175, 97, 195, 66, 110, 66, 222, 110, 32, 232, 3, 79, 165, 58, 154, 189, 135, 248, 104, 105, 225, 247, 15, 91, 89, 113, 113, 227, 157, 19, 162, 237, 127, 133, 140, 95, 232, 245, 106, 30, 127, 24, 33, 42, 62, 24, 231, 124, 156, 14, 177, 55, 208, 89, 183, 11, 114, 54, 30, 83, 113, 128, 205, 78, 204, 150, 37, 249, 8, 29, 251, 48, 76, 141, 134, 7, 5, 22, 252, 98, 93, 254, 76, 230, 160, 152, 31, 1, 16, 241, 245, 197, 227, 186, 135, 43, 214, 103, 135, 170, 28, 177, 123, 226, 63, 209, 140, 150, 143, 239, 74, 119, 91, 73, 122, 145, 56, 91, 193, 96, 3, 160, 153, 34, 165, 222, 177, 64, 78, 105, 197, 19, 121, 77, 89, 133, 45, 169, 92, 184, 176, 177, 202, 179, 236, 44, 140, 25, 131, 206, 125, 102, 158, 132, 63, 29, 39, 221, 23, 150, 250, 92, 245, 253, 225, 213, 90, 165, 243, 252, 32, 234, 115, 236, 153, 177, 4, 179, 89, 175, 203, 127, 180, 39, 216, 162, 163, 122, 242, 74, 69, 62, 98, 30, 88, 27, 138, 209, 142, 238, 183, 202, 50, 238, 72, 195, 52, 151, 164, 108, 115, 251, 80, 255, 129, 211, 160, 72, 151, 14, 24, 191, 82, 197, 152, 167, 129, 229, 32, 228, 153, 114, 106, 202, 195, 42, 110, 184, 59, 102, 49, 161, 227, 192, 103, 246, 62, 113, 87, 185, 29, 76, 84, 136, 92, 225, 219, 24, 121, 205, 22, 68, 5, 26, 59, 178, 39, 225, 205, 114, 104, 53, 119, 213, 176, 178, 131, 49, 190, 207, 51, 65, 106, 173, 185, 127, 120, 240, 75, 105, 216, 39, 130, 76, 80, 80, 169, 175, 6, 153, 1, 73, 6, 33, 143, 37, 34, 24, 185, 208, 169, 103, 66, 108, 245, 208, 166, 28, 184, 251, 34, 135, 2, 123, 10, 100, 98, 152, 143, 215, 178, 201, 29, 151, 182, 23, 101, 158, 217, 154, 57, 177, 210, 10, 209, 177, 67, 41, 150, 123, 164, 150, 64, 148, 156, 74, 70, 246, 5, 247, 79, 35, 214, 69, 172, 83, 14, 240, 162, 26, 236, 167, 195, 92, 62, 78, 137, 188, 49, 76, 48, 37, 6, 9, 42, 134, 72, 134, 247, 13, 1, 9, 20, 49, 24, 30, 22, 0, 98, 0, 97, 0, 114, 0, 107, 0, 45, 0, 115, 0, 101, 0, 114, 0, 118, 0, 101, 0, 114, 48, 35, 6, 9, 42, 134, 72, 134, 247, 13, 1, 9, 21, 49, 22, 4, 20, 93, 104, 240, 39, 222, 250, 216, 108, 179, 124, 137, 147, 77, 3, 116, 200, 187, 197, 59, 64, 48, 48, 48, 33, 48, 9, 6, 5, 43, 14, 3, 2, 26, 5, 0, 4, 20, 104, 196, 251, 182, 143, 127, 123, 44, 118, 219, 213, 196, 82, 204, 35, 11, 45, 247, 188, 218, 4, 8, 69, 110, 48, 246, 49, 77, 52, 181, 2, 1, 1}
}
func postPush(category string, title string, body string, deviceToken string, params map[string]interface{}) error {
notification := &apns2.Notification{}
notification.DeviceToken = deviceToken
var sound string = "1107"
if params["sound"] != nil {
sound = params["sound"].(string) + ".caf"
}
pl := payload.NewPayload().Sound(sound).Category("myNotificationCategory")
badge := params["badge"]
if badge != nil {
badgeStr, pass := badge.(string)
if pass {
badgeNum, err := strconv.Atoi(badgeStr)
if err == nil {
pl = pl.Badge(badgeNum)
}
}
}
for key, value := range params {
pl = pl.Custom(key, value)
}
if len(title) > 0 {
pl.AlertTitle(title)
}
if len(body) > 0 {
pl.AlertBody(body)
}
notification.Payload = pl.MutableContent()
notification.Topic = "me.fin.bark"
res, err := apnsClient.Push(notification)
if err != nil {
logrus.Errorf("Error:", err)
return fmt.Errorf("与苹果推送服务器传输数据失败: %w", err)
}
logrus.Infof("%v %v %v\n", res.StatusCode, res.ApnsID, res.Reason)
if res.StatusCode == 200 {
return nil
} else {
return errors.New("推送发送失败 " + res.Reason)
}
}
var boltDB *bolt.DB
var apnsClient *apns2.Client
func runBarkServer() {
//f,_:= os.Open("./BarkPush.p12")
//t,_ := ioutil.ReadAll(f)
//
//str := ""
//for _,val := range t {
// str += ", "
// str += strconv.Itoa(int(val))
//}
//
//fmt.Printf(string(t))
if _, err := os.Stat(dataDir); os.IsNotExist(err) {
if err = os.Mkdir(dataDir, 0755); err != nil {
logrus.Fatal(err)
}
} else if err != nil {
logrus.Fatal(err)
}
db, err := bolt.Open(filepath.Join(dataDir, "bark.db"), 0600, nil)
if err != nil {
logrus.Fatal(err)
}
defer func() { _ = db.Close() }()
boltDB = db
err = boltDB.Update(func(tx *bolt.Tx) error {
_, err := tx.CreateBucketIfNotExists([]byte("device"))
return err
})
if err != nil {
logrus.Fatal(err)
}
cert, err := certificate.FromP12Bytes(getb(), "bp")
if err != nil {
logrus.Fatalf("load cert failed: ", err)
}
apnsClient = apns2.NewClient(cert).Production()
addr := fmt.Sprint(listenAddr, ":", listenPort)
logrus.Info("Serving HTTP on " + addr)
r := bone.New()
r.Get("/ping", http.HandlerFunc(ping))
r.Post("/ping", http.HandlerFunc(ping))
r.Get("/register", http.HandlerFunc(register))
r.Post("/register", http.HandlerFunc(register))
r.Get("/:key/:body", http.HandlerFunc(index))
r.Post("/:key/:body", http.HandlerFunc(index))
r.Get("/:key/:title/:body", http.HandlerFunc(index))
r.Post("/:key/:title/:body", http.HandlerFunc(index))
r.Get("/:key/:category/:title/:body", http.HandlerFunc(index))
r.Post("/:key/:category/:title/:body", http.HandlerFunc(index))
err = http.ListenAndServe(addr, r)
if err != nil {
logrus.Fatal(err)
}
}