Skip to content

Commit 78fe09c

Browse files
committedNov 10, 2016
couple of changes
1 parent 8e3915f commit 78fe09c

File tree

9 files changed

+163
-94
lines changed

9 files changed

+163
-94
lines changed
 

‎.gitignore

+3
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
*.pid
2+
*.log
3+
*.log.*

‎Dockerfile

+17
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
FROM golang:1.7.3
2+
# FROM golang:1.7.3-onbuild
3+
4+
# Install beego and the bee dev tool
5+
RUN go get github.com/go-sql-driver/mysql
6+
7+
# Expose the application on port 4147
8+
EXPOSE 4147
9+
10+
# Set the entry point of the container to the bee command that runs the
11+
# application and watches for changes
12+
# CMD ["bee", "run"]
13+
14+
15+
# ########
16+
# docker build -t callbacks .
17+
# docker run -it --rm --name gcllbcks -p 4147:4147 -v /home/ekt/go/src/gcllbcks:/go/src/gcllbcks -w /go/src/gcllbcks callbacks

‎callbacks.service

+12
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
[Unit]
2+
Description=callbacks Service
3+
4+
[Service]
5+
PIDFile=/tmp/gowiki.pid-4040
6+
User=root
7+
Group=root
8+
WorkingDirectory=/var/www
9+
ExecStart=/bin/bash -c '/apps/gcallbks'
10+
11+
[Install]
12+
WantedBy=multi-user.target

‎common/logger.go

+7
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
package common
2+
3+
import (
4+
"log"
5+
)
6+
7+
var Logger *log.Logger

‎logs/.gitignore

+4
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
# Ignore everything in this directory
2+
*
3+
# Except this file
4+
!.gitignore

‎main.go

+21-5
Original file line numberDiff line numberDiff line change
@@ -1,19 +1,22 @@
1-
21
package main
32

43
import (
4+
"database/sql"
5+
"gcllbcks/common"
6+
"gcllbcks/mylib"
57
"log"
68
"net/http"
7-
"database/sql"
9+
"os"
10+
811
_ "github.com/go-sql-driver/mysql"
9-
"gcllbcks/mylib"
10-
"gcllbcks/common"
1112
)
1213

1314
var err error
1415

1516
func main() {
1617

18+
// DB Connecton
19+
1720
common.DbCon, err = sql.Open("mysql", "kip:kip@db@/smsleopard")
1821
if err != nil {
1922
panic(err.Error())
@@ -26,9 +29,22 @@ func main() {
2629
panic(err.Error())
2730
}
2831

32+
// Logger set up
33+
34+
logFile, openErr1 := os.OpenFile("logs/callbacks.log", os.O_CREATE|os.O_RDWR|os.O_APPEND, 0666)
35+
36+
if openErr1 != nil {
37+
log.Println("Uh oh! Could not open log file.", openErr1)
38+
}
39+
40+
defer logFile.Close()
41+
42+
common.Logger = log.New(logFile, "", log.Lshortfile|log.Ldate|log.Ltime)
43+
44+
// Route set up
45+
2946
http.HandleFunc("/dlrs", mylib.DlrPage)
3047
http.HandleFunc("/inbox", mylib.InboxPage)
3148
http.HandleFunc("/optout", mylib.OptoutPage)
3249
log.Fatal(http.ListenAndServe(":4147", nil))
33-
3450
}

‎mylib/dlrs.go

+16-13
Original file line numberDiff line numberDiff line change
@@ -2,38 +2,40 @@ package mylib
22

33
import (
44
"fmt"
5-
"log"
65
"net/http"
76

87
"gcllbcks/common"
98
)
109

11-
1210
func DlrPage(w http.ResponseWriter, r *http.Request) {
11+
logger := common.Logger
1312
if r.Method != "POST" {
1413
fmt.Fprintf(w, "Method Not Allowed")
1514
return
1615
}
1716

18-
aid := r.FormValue("id")
19-
status := r.FormValue("status")
20-
reason := r.FormValue("reason")
17+
aid := r.FormValue("id")
18+
status := r.FormValue("status")
19+
reason := r.FormValue("reason")
20+
21+
request := map[string]string{
22+
"aid": aid, "status": status, "reason": reason,
23+
}
2124

22-
request := map[string]string {
23-
"aid": aid, "status": status, "reason": reason,
24-
}
25+
go saveDlr(request)
2526

26-
go saveDlr(request)
27+
logger.Println("Dlr Request: ", request)
2728

2829
fmt.Fprintf(w, "Dlr Received")
2930
return
3031
}
3132

3233
func saveDlr(req map[string]string) {
33-
db := common.DbCon
34+
logger := common.Logger
35+
db := common.DbCon
3436
stmt, err1 := db.Prepare("update bsms_smsrecipient set status=?, reason=? where api_id=?")
3537
if err1 != nil {
36-
log.Fatal("Couldn't prepare for dlr update", err1)
38+
logger.Fatal("Couldn't prepare for dlr update", err1)
3739
return
3840
}
3941

@@ -42,8 +44,9 @@ func saveDlr(req map[string]string) {
4244
_, err := stmt.Exec(req["status"], req["reason"], req["aid"])
4345

4446
if err != nil {
45-
log.Fatal("Cannot run update dlr", err)
47+
logger.Println("Cannot run update dlr", err)
4648
return
4749
}
48-
return
50+
logger.Println("Dlr saved: ", req["aid"])
51+
return
4952
}

‎mylib/inbox.go

+66-64
Original file line numberDiff line numberDiff line change
@@ -2,113 +2,116 @@ package mylib
22

33
import (
44
"fmt"
5-
"log"
65
"net/http"
6+
"strconv"
77
"strings"
8-
"strconv"
98
"time"
109

1110
"database/sql"
1211
"gcllbcks/common"
1312
)
1413

1514
type Code struct {
16-
Id string
17-
Type string
18-
UserId sql.NullInt64
15+
Id string
16+
Type string
17+
UserId sql.NullInt64
1918
}
2019

2120
func InboxPage(w http.ResponseWriter, r *http.Request) {
21+
logger := common.Logger
2222
if r.Method != "POST" {
2323
fmt.Fprintf(w, "Method Not Allowed")
2424
return
2525
}
2626

27-
from := r.FormValue("from")
28-
to := r.FormValue("to")
29-
text := r.FormValue("text")
30-
date := r.FormValue("date")
31-
id := r.FormValue("id")
27+
from := r.FormValue("from")
28+
to := r.FormValue("to")
29+
text := r.FormValue("text")
30+
date := r.FormValue("date")
31+
id := r.FormValue("id")
3232

33-
request := map[string]string {
34-
"from": from, "code": to, "txt": text,
35-
"date": date, "aid": id,
36-
}
33+
request := map[string]string{
34+
"from": from, "code": to, "txt": text,
35+
"date": date, "aid": id,
36+
}
3737

38-
fmt.Println("Inbox request: ", request)
38+
logger.Println("Inbox request: ", request)
3939

40-
go saveInbox(request)
40+
go saveInbox(request)
4141

4242
fmt.Fprintf(w, "Inbox Received")
4343
return
4444
}
4545

4646
func saveInbox(req map[string]string) {
47-
dets := getCodeDets(req["code"])
48-
49-
if (Code{}) == dets {
50-
fmt.Println("Inbox no code:", req)
51-
} else {
52-
req["code_id"] = dets.Id
53-
if dets.Type == "DEDICATED" {
54-
if dets.UserId.Valid {
55-
req["user_id"] = strconv.Itoa(int(dets.UserId.Int64))
56-
go saveInboxData(req)
57-
} else {
58-
fmt.Println("Dedicated has no user:", req)
59-
}
60-
} else if dets.Type == "SHARED" {
61-
go checkShared(req)
62-
}
63-
}
64-
return
47+
logger := common.Logger
48+
dets := getCodeDets(req["code"])
49+
50+
if (Code{}) == dets {
51+
logger.Println("Inbox no code:", req)
52+
} else {
53+
req["code_id"] = dets.Id
54+
if dets.Type == "DEDICATED" {
55+
if dets.UserId.Valid {
56+
req["user_id"] = strconv.Itoa(int(dets.UserId.Int64))
57+
go saveInboxData(req)
58+
} else {
59+
logger.Println("Dedicated has no user:", req)
60+
}
61+
} else if dets.Type == "SHARED" {
62+
go checkShared(req)
63+
}
64+
}
65+
return
6566
}
6667

6768
func getCodeDets(code string) Code {
68-
db := common.DbCon
69-
row := db.QueryRow("select id, code_type, user_id from callbacks_code where code=?", code)
70-
// cd := new(Code)
71-
cd := Code{}
72-
// err := row.Scan(&cd.Id, &cd.Type, &cd.UserId)
73-
row.Scan(&cd.Id, &cd.Type, &cd.UserId)
69+
db := common.DbCon
70+
row := db.QueryRow("select id, code_type, user_id from callbacks_code where code=?", code)
71+
// cd := new(Code)
72+
cd := Code{}
73+
// err := row.Scan(&cd.Id, &cd.Type, &cd.UserId)
74+
row.Scan(&cd.Id, &cd.Type, &cd.UserId)
7475
// if err != nil {
75-
// log.Fatal("Couldn't scan select code", err)
76+
// logger.Println("Couldn't scan select code", err)
7677
// return cd
7778
// }
78-
return cd
79+
return cd
7980
}
8081

8182
func checkShared(req map[string]string) {
82-
db := common.DbCon
83-
cd := req["code_id"]
84-
kw := strings.ToLower(strings.Fields(req["txt"])[0])
85-
row := db.QueryRow("select user_id from callbacks_shared where code_id=? and keyword=?", cd, kw)
83+
logger := common.Logger
84+
db := common.DbCon
85+
cd := req["code_id"]
86+
kw := strings.ToLower(strings.Fields(req["txt"])[0])
87+
row := db.QueryRow("select user_id from callbacks_shared where code_id=? and keyword=?", cd, kw)
8688

87-
var uid sql.NullInt64
88-
// err := row.Scan(&uid)
89-
row.Scan(&uid)
89+
var uid sql.NullInt64
90+
// err := row.Scan(&uid)
91+
row.Scan(&uid)
9092

91-
// fmt.Println("Uid: ", uid)
93+
// logger.Println("Uid: ", uid)
9294

9395
// if err != nil {
94-
// log.Fatal("Couldn't scan select shared: ", err)
96+
// logger.Println("Couldn't scan select shared: ", err)
9597
// return
9698
// }
9799

98-
if uid.Valid {
99-
req["user_id"] = strconv.Itoa(int(uid.Int64))
100-
go saveInboxData(req)
101-
} else {
102-
fmt.Println("Shared has no user: ", req)
103-
}
104-
return
100+
if uid.Valid {
101+
req["user_id"] = strconv.Itoa(int(uid.Int64))
102+
go saveInboxData(req)
103+
} else {
104+
logger.Println("Shared has no user: ", req)
105+
}
106+
return
105107
}
106108

107109
func saveInboxData(req map[string]string) {
108-
db := common.DbCon
110+
logger := common.Logger
111+
db := common.DbCon
109112
stmt, err1 := db.Prepare("insert into bsms_smsinbox(is_read, sender, short_code, api_id, message, user_id, deleted, api_date, insert_date) values (?, ?, ?, ?, ?, ?, ?, ?, ?)")
110113
if err1 != nil {
111-
log.Fatal("Couldn't prepare for inbox insert", err1)
114+
logger.Println("Couldn't prepare for inbox insert", err1)
112115
return
113116
}
114117

@@ -117,12 +120,11 @@ func saveInboxData(req map[string]string) {
117120
_, err := stmt.Exec(0, req["from"], req["code"], req["aid"], req["txt"], req["user_id"], 0, req["date"], time.Now())
118121

119122
if err != nil {
120-
log.Fatal("Cannot run insert Inbox", err)
123+
logger.Println("Cannot run insert Inbox", err)
121124
return
122125
}
123126

124-
fmt.Println("Saved Inbox:", req)
127+
logger.Println("Saved Inbox:", req)
125128

126-
return
129+
return
127130
}
128-

‎mylib/optout.go

+17-12
Original file line numberDiff line numberDiff line change
@@ -2,38 +2,40 @@ package mylib
22

33
import (
44
"fmt"
5-
"log"
65
"net/http"
76
"time"
87

98
"gcllbcks/common"
109
)
1110

12-
1311
func OptoutPage(w http.ResponseWriter, r *http.Request) {
12+
logger := common.Logger
1413
if r.Method != "POST" {
1514
fmt.Fprintf(w, "Method Not Allowed")
1615
return
1716
}
1817

19-
sid := r.FormValue("senderId")
20-
num := r.FormValue("phoneNumber")
18+
sid := r.FormValue("senderId")
19+
num := r.FormValue("phoneNumber")
20+
21+
request := map[string]string{
22+
"sid": sid, "num": num,
23+
}
2124

22-
request := map[string]string {
23-
"sid": sid, "num": num,
24-
}
25+
logger.Println("Optout request: ", request)
2526

26-
go saveOptout(request)
27+
go saveOptout(request)
2728

2829
fmt.Fprintf(w, "Optout Received")
2930
return
3031
}
3132

3233
func saveOptout(req map[string]string) {
33-
db := common.DbCon
34+
logger := common.Logger
35+
db := common.DbCon
3436
stmt, err1 := db.Prepare("insert into callbacks_optout (senderid, phone, time_added) values (?, ?, ?)")
3537
if err1 != nil {
36-
log.Fatal("Couldn't prepare for optout insert", err1)
38+
logger.Println("Couldn't prepare for optout insert", err1)
3739
return
3840
}
3941

@@ -42,8 +44,11 @@ func saveOptout(req map[string]string) {
4244
_, err := stmt.Exec(req["sid"], req["num"], time.Now())
4345

4446
if err != nil {
45-
log.Fatal("Cannot run insert optout", err)
47+
logger.Println("Cannot run insert optout", err)
4648
return
4749
}
48-
return
50+
51+
logger.Println("Saved opt out: ", req)
52+
53+
return
4954
}

0 commit comments

Comments
 (0)
Please sign in to comment.