This repository has been archived by the owner on Oct 2, 2022. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathdb.js
163 lines (154 loc) · 7.61 KB
/
db.js
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
module.exports.initDB = function (callback){
const sqlite3 = require('sqlite3').verbose();
let db = new sqlite3.Database('./private/cMail.db',sqlite3.OPEN_READWRITE | sqlite3.OPEN_CREATE, (err) => {
if (err) {
console.error(err.message);
return
}
console.log('Connected to the chinook database.');
createTable(db)
});
function createTable(db){
db.run("CREATE TABLE IF NOT EXISTS payments ("+
"message_id TEXT PRIMARY KEY,"+
"local_email TEXT NOT NULL,"+
"remote_email TEXT NOT NULL,"+
"subject TEXT NOT NULL,"+
"thread_id TEXT NOT NULL,"+
"time_generated TEXT NOT NULL,"+
'time_paid TEXT DEFAULT "",'+
'pay_req TEXT DEFAULT "",'+
'pay_addr TEXT DEFAULT "",'+
'tx_id TEXT DEFAULT "",'+
'pre_image TEXT DEFAULT "",'+
'amount INTEGER DEFAULT ""'+
") WITHOUT ROWID;",err => {
console.log(err)
if(!err && callback){
callback(db)
}
})
}
}
module.exports.addMail = function(gmail,lightning,db,to,from,subject,messageId,threadId,optionD){
console.log("LN")
//console.log(lightning)
console.log("adding maill......")
db.all(' SELECT * FROM payments WHERE message_id = "'+messageId+'" AND time_paid = "";',[],(err,res) => {
if(err){
console.log("exist error: " +err)
} else {
console.log(res.length)
if(res.length == 0){
console.log("didnt find any correspondi to this email")
var timeNow = Date.now().toString()
db.run('INSERT INTO payments '+
'(message_id,local_email,remote_email,subject,thread_id,time_generated) '+
'VALUES ("'+messageId+'","'+to+'","'+from+'","'+subject+'","'+threadId+'","'+timeNow+'");', err =>{
if(err){
console.log("insert error: "+err)
return
}
var localLND = require("./lnd.js")
localLND.addInvoice(lightning,optionD,res=>{
let data = ['Ansi C', 'C'];
let sql = `UPDATE langs
SET name = ?
WHERE name = ?`;
db.run('UPDATE payments '+
'SET pay_req = "'+res.payment_request+'",pay_addr="'+res.fallback_addr+'" WHERE message_id="'+messageId+'";', err =>{
if(err){
console.log(err)
return
}
var payment_request= res.payment_request
var fallback_addr = res.fallback_addr
var mailBody = `
<html>
<h2>
${optionD.message}
</h2>
<h3>
Cost: ${optionD.cost}
</h3>
<div>
<h4>Lightning</h4>
<p>${payment_request}</p>
<img src="https://api.qrserver.com/v1/create-qr-code/?size=150x150&data=${payment_request}" title="Logo" style="display:block" alt="img here" width="150px" height="150px"></img>
</div>
<hr>
<div style={border: 1px solid black;}>
<h4>On Chain</h4>
<p>${fallback_addr}</p>
<img src="https://api.qrserver.com/v1/create-qr-code/?size=150x150&data=${fallback_addr}" title="Logo" style="display:block" alt="img here" width="150px" height="150px"></img>
</div>
</html>`
/*var data =optionD.message+ " \n "+
"cost: "+optionD.cost+"\n\n"+
"via LN:"+res.payment_request+
"\n on-Chain:"+res.fallback_addr+"\n\n"*/
var localGmail = require("./gmail.js")
localGmail.sendEmail(gmail,to,from,messageId,threadId,subject,mailBody)
})
})
})
}else{
console.log("found element coorespondig to mex id")
}
}
})
}
module.exports.handlePayment=function(gmail,db,pay_req,addr,r_preimage,tx_hash,amount,optionD){
if(pay_req != ""){
console.log("handle pay from invoice")
db.all(' SELECT * FROM payments WHERE pay_req = "'+pay_req+'";',[],(err,res) => {
if(err){
console.log("exist listen error: " +err)
} else {
if(res.length == 1){
var timeNow = Date.now().toString()
console.log(res[0])
db.run('UPDATE payments '+
'SET pre_image = "'+r_preimage+'",'+'amount = '+amount+',time_paid="'+timeNow+'" WHERE message_id="'+res[0].message_id+'";', err =>{
if(err){
console.log("update listen error: " +err)
} else {
require("./gmail").SetAsPaid(gmail,res[0].message_id,optionD,res =>{
console.log("updated paid invoice")
console.log(res)
})
}
})
}
}
})
return
}
if(addr != ""){
console.log("handle pay from tx")
db.all(' SELECT * FROM payments WHERE pay_addr = "'+addr+'";',[],(err,res) => {
if(err){
console.log("exist listen error: " +err)
} else {
console.log("res on chain")
console.log(res)
if(res.length == 1){
var timeNow = Date.now().toString()
console.log(res[0])
db.run('UPDATE payments '+
'SET tx_id = "'+tx_hash+'",'+'amount = '+amount+',time_paid="'+timeNow+'" WHERE message_id="'+res[0].message_id+'";', err =>{
if(err){
console.log("update listen error: " +err)
} else {
require("./gmail").SetAsPaid(gmail,res[0].message_id,optionD,res =>{
console.log("updated paid invoice")
console.log(res)
})
}
})
}
}
})
return
}
}