fix: 🐛 Fixed account missing
parent
f4b0c75f24
commit
742aae921d
56
main.js
56
main.js
|
@ -4,6 +4,8 @@ const Wallet = require('monero-wallet-rpc-js')
|
||||||
|
|
||||||
;(async () => {
|
;(async () => {
|
||||||
|
|
||||||
|
const deAtomize = (atomic) => Number(atomic) * 0.000000000001
|
||||||
|
|
||||||
dotenv.config()
|
dotenv.config()
|
||||||
const WALLET_ACCOUNT_INDEX = Number(process.env.WALLET_ACCOUNT_INDEX)
|
const WALLET_ACCOUNT_INDEX = Number(process.env.WALLET_ACCOUNT_INDEX)
|
||||||
const WALLET_AUTOSAVE_SEC = Number(process.env.WALLET_AUTOSAVE_SEC)
|
const WALLET_AUTOSAVE_SEC = Number(process.env.WALLET_AUTOSAVE_SEC)
|
||||||
|
@ -33,12 +35,38 @@ const Wallet = require('monero-wallet-rpc-js')
|
||||||
console.error(`Failed to set auto_refresh to ${process.env.WALLET_REFRESH_SEC}: ${err}`)
|
console.error(`Failed to set auto_refresh to ${process.env.WALLET_REFRESH_SEC}: ${err}`)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Confirm sync
|
||||||
try {
|
try {
|
||||||
console.log(`Wallet synced to block ${await wallet.getHeight()}.`)
|
console.log(`Wallet synced to block ${await wallet.getHeight()}.`)
|
||||||
} catch (err) {
|
} catch (err) {
|
||||||
console.error(`Failed to get blockchain height: ${err}`)
|
console.error(`Failed to get blockchain height: ${err}`)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Check accounts, create account if needed
|
||||||
|
// TODO: Validate that the admin didn't set WALLET_ACCOUNT_INDEX too high
|
||||||
|
const getAccount = async (i) => {
|
||||||
|
try {
|
||||||
|
accounts = (await wallet.getAccounts()).subaddress_accounts
|
||||||
|
} catch (err) {
|
||||||
|
console.error(`Failed to get account listing from rpc: ${err}`)
|
||||||
|
}
|
||||||
|
account = accounts.find(a => a.account_index == i)
|
||||||
|
if (account===undefined) {
|
||||||
|
console.log(`There is no account #${i}. Creating account...`)
|
||||||
|
try {
|
||||||
|
const newAccount = await wallet.createAccount()
|
||||||
|
console.log(`Created account #${newAccount.account_index}.`)
|
||||||
|
} catch (err) {
|
||||||
|
console.error(`Failed to create new account: ${err}`)
|
||||||
|
}
|
||||||
|
return getAccount(i)
|
||||||
|
} else {
|
||||||
|
console.log(`Account #${i} exists with a balance of ${deAtomize(account.balance)} XMR.`)
|
||||||
|
return account
|
||||||
|
}
|
||||||
|
}; getAccount(WALLET_ACCOUNT_INDEX)
|
||||||
|
|
||||||
|
|
||||||
// Server
|
// Server
|
||||||
const app = express()
|
const app = express()
|
||||||
app.use(express.json())
|
app.use(express.json())
|
||||||
|
@ -49,20 +77,30 @@ const Wallet = require('monero-wallet-rpc-js')
|
||||||
app.get('/wallet/height', async (req, res) =>
|
app.get('/wallet/height', async (req, res) =>
|
||||||
res.send((await wallet.getHeight()).toString())
|
res.send((await wallet.getHeight()).toString())
|
||||||
)
|
)
|
||||||
app.get('/wallet/balance', async (req, res) =>
|
app.get('/wallet/balance', async (req, res) => {
|
||||||
res.send(
|
let result; try {
|
||||||
String((await wallet.getBalance({
|
result = await wallet.getBalance({
|
||||||
account_index: WALLET_ACCOUNT_INDEX,
|
account_index: WALLET_ACCOUNT_INDEX,
|
||||||
})).balance * 0.000000000001)
|
})
|
||||||
)
|
} catch (err) {
|
||||||
)
|
console.error(`Failed to get balance: ${err}`)
|
||||||
|
return res.sendStatus(500)
|
||||||
|
}
|
||||||
|
return res.send(`${deAtomize(result.balance)} XMR`)
|
||||||
|
})
|
||||||
|
|
||||||
// New payment
|
// New payment
|
||||||
app.post('/payment', async (req, res) => {
|
app.post('/payment', async (req, res) => {
|
||||||
res.redirect(`/payment/${(await wallet.createAddress({
|
let result; try {
|
||||||
account_index: WALLET_ACCOUNT_INDEX,
|
result = await wallet.createAddress({
|
||||||
|
account_index: 1,
|
||||||
label: req.body.label,
|
label: req.body.label,
|
||||||
})).address}`)
|
})
|
||||||
|
} catch (err) {
|
||||||
|
console.error(`Failed to create address "${req.body.label}": ${err}`)
|
||||||
|
return res.sendStatus(500)
|
||||||
|
}
|
||||||
|
return res.redirect(`/payment/${result.address}`)
|
||||||
})
|
})
|
||||||
|
|
||||||
// Check payment
|
// Check payment
|
||||||
|
|
|
@ -1,17 +1,17 @@
|
||||||
{
|
{
|
||||||
"name": "pago",
|
"name": "pago",
|
||||||
"version": "1.1.3",
|
"version": "1.1.5",
|
||||||
"lockfileVersion": 3,
|
"lockfileVersion": 3,
|
||||||
"requires": true,
|
"requires": true,
|
||||||
"packages": {
|
"packages": {
|
||||||
"": {
|
"": {
|
||||||
"name": "pago",
|
"name": "pago",
|
||||||
"version": "1.1.3",
|
"version": "1.1.5",
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"dotenv": "^16.4.5",
|
"dotenv": "^16.4.5",
|
||||||
"express": "^4.19.2",
|
"express": "^4.19.2",
|
||||||
"monero-wallet-rpc-js": "^1.2.18",
|
"monero-wallet-rpc-js": "^1.2.20",
|
||||||
"socket.io": "^4.7.5"
|
"socket.io": "^4.7.5"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
@ -625,9 +625,9 @@
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/monero-wallet-rpc-js": {
|
"node_modules/monero-wallet-rpc-js": {
|
||||||
"version": "1.2.18",
|
"version": "1.2.20",
|
||||||
"resolved": "https://registry.npmjs.org/monero-wallet-rpc-js/-/monero-wallet-rpc-js-1.2.18.tgz",
|
"resolved": "https://registry.npmjs.org/monero-wallet-rpc-js/-/monero-wallet-rpc-js-1.2.20.tgz",
|
||||||
"integrity": "sha512-Fl8/sg0Gkgpj8nw4lLLrVSheaW983bnqa4iwPLpJ4xuuduXjOqjVk1iHJE5hZwH/EfIiI8j5iVwkCxd7Wpp/IA==",
|
"integrity": "sha512-Hvdxvugs911QL6lte9SaauQLUfTT+ZXrAJ1W9DX5acczEqhSncuneN9bSFQnXgGKeIg37FU9dkVfFK3G1Rkl6g==",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"axios": "^1.6.8"
|
"axios": "^1.6.8"
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
{
|
{
|
||||||
"name": "pago",
|
"name": "pago",
|
||||||
"version": "1.1.4",
|
"version": "1.1.5",
|
||||||
"description": "Lightweight monero payment gateway",
|
"description": "Lightweight monero payment gateway",
|
||||||
"main": "main.js",
|
"main": "main.js",
|
||||||
"scripts": {
|
"scripts": {
|
||||||
|
@ -18,7 +18,7 @@
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"dotenv": "^16.4.5",
|
"dotenv": "^16.4.5",
|
||||||
"express": "^4.19.2",
|
"express": "^4.19.2",
|
||||||
"monero-wallet-rpc-js": "^1.2.18",
|
"monero-wallet-rpc-js": "^1.2.20",
|
||||||
"socket.io": "^4.7.5"
|
"socket.io": "^4.7.5"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue