commit
42d92d36fe
2 changed files with 58 additions and 80 deletions
121
src/routes.js
121
src/routes.js
|
|
@ -70,49 +70,6 @@ module.exports = async (
|
||||||
const getAvailableService = () => {
|
const getAvailableService = () => {
|
||||||
return lndErrorManager.getAvailableService()
|
return lndErrorManager.getAvailableService()
|
||||||
}
|
}
|
||||||
/*
|
|
||||||
new Promise((resolve, reject) => {
|
|
||||||
const { lightning } = LightningServices.services
|
|
||||||
|
|
||||||
lightning.getInfo({}, (err, response) => {
|
|
||||||
if (err) {
|
|
||||||
if (err.message.includes('unknown service lnrpc.Lightning')) {
|
|
||||||
resolve({
|
|
||||||
service: 'walletUnlocker',
|
|
||||||
message: 'Wallet locked',
|
|
||||||
code: err.code,
|
|
||||||
walletStatus: 'locked',
|
|
||||||
success: true
|
|
||||||
})
|
|
||||||
} else if (err.code === 14) {
|
|
||||||
reject({
|
|
||||||
service: 'unknown',
|
|
||||||
message:
|
|
||||||
"Failed to connect to LND server, make sure it's up and running.",
|
|
||||||
code: 14,
|
|
||||||
walletStatus: 'unknown',
|
|
||||||
success: false
|
|
||||||
})
|
|
||||||
} else {
|
|
||||||
reject({
|
|
||||||
service: 'lightning',
|
|
||||||
message: sanitizeLNDError(err.message),
|
|
||||||
code: err.code,
|
|
||||||
walletStatus: 'unlocked',
|
|
||||||
success: false
|
|
||||||
})
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
resolve({
|
|
||||||
service: 'lightning',
|
|
||||||
message: response,
|
|
||||||
code: null,
|
|
||||||
walletStatus: 'unlocked',
|
|
||||||
success: true
|
|
||||||
})
|
|
||||||
})
|
|
||||||
})*/
|
|
||||||
|
|
||||||
const checkHealth = async () => {
|
const checkHealth = async () => {
|
||||||
logger.info('Getting service status...')
|
logger.info('Getting service status...')
|
||||||
|
|
@ -622,24 +579,58 @@ module.exports = async (
|
||||||
await Storage.set('trustedPKs', [...(trustedKeys || []), publicKey])
|
await Storage.set('trustedPKs', [...(trustedKeys || []), publicKey])
|
||||||
}
|
}
|
||||||
|
|
||||||
// Send an event to update lightning's status
|
const { lightning } = LightningServices.services
|
||||||
mySocketsEvents.emit('updateLightning')
|
|
||||||
|
// Generate auth token and send it as a JSON response
|
||||||
|
const token = await auth.generateToken()
|
||||||
|
|
||||||
|
// wait for wallet to warm up
|
||||||
|
await Common.Utils.makePromise((res, rej) => {
|
||||||
|
let tries = 0
|
||||||
|
let intervalID = null
|
||||||
|
|
||||||
|
intervalID = setInterval(() => {
|
||||||
|
if (tries === 3) {
|
||||||
|
rej(new Error(`Wallet did not warm up in under 3 seconds.`))
|
||||||
|
|
||||||
|
clearInterval(intervalID)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
tries++
|
||||||
|
|
||||||
|
lightning.listInvoices({}, err => {
|
||||||
|
if (!err) {
|
||||||
|
clearInterval(intervalID)
|
||||||
|
res()
|
||||||
|
}
|
||||||
|
})
|
||||||
|
}, 1000)
|
||||||
|
})
|
||||||
|
|
||||||
//get the latest channel backups before subscribing
|
//get the latest channel backups before subscribing
|
||||||
const user = require('../services/gunDB/Mediator').getUser()
|
const user = require('../services/gunDB/Mediator').getUser()
|
||||||
const SEA = require('../services/gunDB/Mediator').mySEA
|
const SEA = require('../services/gunDB/Mediator').mySEA
|
||||||
const { lightning } = LightningServices.services
|
|
||||||
lightning.exportAllChannelBackups({}, (err, channelBackups) => {
|
await Common.Utils.makePromise((res, rej) => {
|
||||||
if (err) {
|
lightning.exportAllChannelBackups({}, (err, channelBackups) => {
|
||||||
return handleError(res, err)
|
if (err) {
|
||||||
}
|
return rej(new Error(err.details))
|
||||||
GunActions.saveChannelsBackup(
|
}
|
||||||
JSON.stringify(channelBackups),
|
|
||||||
user,
|
res(
|
||||||
SEA
|
GunActions.saveChannelsBackup(
|
||||||
)
|
JSON.stringify(channelBackups),
|
||||||
|
user,
|
||||||
|
SEA
|
||||||
|
)
|
||||||
|
)
|
||||||
|
})
|
||||||
})
|
})
|
||||||
|
|
||||||
|
// Send an event to update lightning's status
|
||||||
|
mySocketsEvents.emit('updateLightning')
|
||||||
|
|
||||||
//register to listen for channel backups
|
//register to listen for channel backups
|
||||||
const onNewChannelBackup = () => {
|
const onNewChannelBackup = () => {
|
||||||
logger.warn('Subscribing to channel backup ...')
|
logger.warn('Subscribing to channel backup ...')
|
||||||
|
|
@ -701,31 +692,11 @@ module.exports = async (
|
||||||
onNewChannelBackup()
|
onNewChannelBackup()
|
||||||
startTipStatusJob()
|
startTipStatusJob()
|
||||||
|
|
||||||
// Generate auth token and send it as a JSON response
|
|
||||||
const token = await auth.generateToken()
|
|
||||||
res.json({
|
res.json({
|
||||||
authorization: token,
|
authorization: token,
|
||||||
user: {
|
user: {
|
||||||
alias,
|
alias,
|
||||||
publicKey
|
publicKey
|
||||||
},
|
|
||||||
follows: await GunGetters.Follows.currentFollows(),
|
|
||||||
data: {
|
|
||||||
invoices: await Common.makePromise((res, rej) => {
|
|
||||||
lightning.listInvoices(
|
|
||||||
{
|
|
||||||
reversed: true,
|
|
||||||
num_max_invoices: 50
|
|
||||||
},
|
|
||||||
(err, lres) => {
|
|
||||||
if (err) {
|
|
||||||
rej(new Error(err.details))
|
|
||||||
} else {
|
|
||||||
res(lres)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
)
|
|
||||||
})
|
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -445,14 +445,18 @@ module.exports = (
|
||||||
// TODO: make this sync
|
// TODO: make this sync
|
||||||
async socket => {
|
async socket => {
|
||||||
try {
|
try {
|
||||||
|
logger.info('Received connect request for shockping socket')
|
||||||
if (!isAuthenticated()) {
|
if (!isAuthenticated()) {
|
||||||
|
logger.info(
|
||||||
|
'not authenticated in gun for shockping socket, will send NOT_AUTH'
|
||||||
|
)
|
||||||
socket.emit(Common.Constants.ErrorCode.NOT_AUTH)
|
socket.emit(Common.Constants.ErrorCode.NOT_AUTH)
|
||||||
|
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
|
logger.info('now checking token')
|
||||||
const { token } = socket.handshake.query
|
const { token } = socket.handshake.query
|
||||||
|
|
||||||
const isAuth = await isValidToken(token)
|
const isAuth = await isValidToken(token)
|
||||||
|
|
||||||
if (!isAuth) {
|
if (!isAuth) {
|
||||||
|
|
@ -462,11 +466,13 @@ module.exports = (
|
||||||
}
|
}
|
||||||
|
|
||||||
if (pingIntervalID !== null) {
|
if (pingIntervalID !== null) {
|
||||||
logger.error('Tried to set ping socket twice')
|
logger.error(
|
||||||
|
'Tried to set ping socket twice, this might be due to an app restart and the old socket not being recycled by socket.io in time, will disable the older ping interval, which means the old socket wont work and will ping this new socket instead'
|
||||||
|
)
|
||||||
|
clearInterval(pingIntervalID)
|
||||||
|
pingIntervalID = null
|
||||||
}
|
}
|
||||||
|
|
||||||
socket.emit('shockping')
|
|
||||||
|
|
||||||
pingIntervalID = setInterval(() => {
|
pingIntervalID = setInterval(() => {
|
||||||
socket.emit('shockping')
|
socket.emit('shockping')
|
||||||
}, 3000)
|
}, 3000)
|
||||||
|
|
@ -479,7 +485,8 @@ module.exports = (
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
} catch (err) {
|
} catch (err) {
|
||||||
logger.error('GUNRPC: ' + err.message)
|
logger.error('Error inside shockping connect: ' + err.message)
|
||||||
|
socket.emit('$error', err.message)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
)
|
)
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue