Disable rate limit
This commit is contained in:
parent
3649cfb2fa
commit
0ecf1eaf63
15
src/index.ts
15
src/index.ts
@ -13,6 +13,7 @@ import KeyvSqlite from '@keyv/sqlite';
|
|||||||
const CONFIG_PATH = 'environments/local.toml';
|
const CONFIG_PATH = 'environments/local.toml';
|
||||||
const FAUCET_DATA_FILE = 'faucet_data.sqlite';
|
const FAUCET_DATA_FILE = 'faucet_data.sqlite';
|
||||||
const FAUCET_DATA_TTL = 86400000; // 24 hrs
|
const FAUCET_DATA_TTL = 86400000; // 24 hrs
|
||||||
|
const DISABLE_RATE_LIMIT = true;
|
||||||
|
|
||||||
interface Config {
|
interface Config {
|
||||||
upstream: {
|
upstream: {
|
||||||
@ -44,7 +45,7 @@ async function main (): Promise<void> {
|
|||||||
app.use(cors());
|
app.use(cors());
|
||||||
|
|
||||||
app.post('/faucet', async (req, res) => {
|
app.post('/faucet', async (req, res) => {
|
||||||
const { address: accountAddress } = req.body;
|
const { address: accountAddress, amount } = req.body;
|
||||||
|
|
||||||
if (!accountAddress) {
|
if (!accountAddress) {
|
||||||
return res.status(400).json({ error: 'address is required' });
|
return res.status(400).json({ error: 'address is required' });
|
||||||
@ -54,22 +55,24 @@ async function main (): Promise<void> {
|
|||||||
return res.status(400).json({ error: 'invalid address' });
|
return res.status(400).json({ error: 'invalid address' });
|
||||||
}
|
}
|
||||||
|
|
||||||
// Check rate limit
|
|
||||||
const now = Date.now();
|
const now = Date.now();
|
||||||
const today = new Date(now).toISOString().split('T')[0];
|
const today = new Date(now).toISOString().split('T')[0];
|
||||||
const faucetStoreKey = `${accountAddress}:${today}`;
|
const faucetStoreKey = `${accountAddress}:${today}`;
|
||||||
const amountSentToAddress = await faucetDataStore.get(faucetStoreKey) || '0';
|
const amountSentToAddress = await faucetDataStore.get(faucetStoreKey) || '0';
|
||||||
|
|
||||||
if (BigInt(amountSentToAddress) + BigInt(config.server.transferAmount) > BigInt(config.server.periodTransferLimit)) {
|
if (!DISABLE_RATE_LIMIT) {
|
||||||
return res.status(429).json({ error: 'Limit exceeded' });
|
// Check rate limit
|
||||||
|
if (BigInt(amountSentToAddress) + BigInt(amount) > BigInt(config.server.periodTransferLimit)) {
|
||||||
|
return res.status(429).json({ error: 'Limit exceeded' });
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
try {
|
try {
|
||||||
const txHash = await sendTokens(config, accountAddress, String(config.server.transferAmount));
|
const txHash = await sendTokens(config, accountAddress, String(amount));
|
||||||
console.log(`Sent tokens to address: ${accountAddress}, txHash: ${txHash}`);
|
console.log(`Sent tokens to address: ${accountAddress}, txHash: ${txHash}`);
|
||||||
|
|
||||||
// Update rate limit
|
// Update rate limit
|
||||||
await faucetDataStore.set(faucetStoreKey, (BigInt(amountSentToAddress) + BigInt(config.server.transferAmount)).toString(), FAUCET_DATA_TTL);
|
!DISABLE_RATE_LIMIT && await faucetDataStore.set(faucetStoreKey, (BigInt(amountSentToAddress) + BigInt(amount)).toString(), FAUCET_DATA_TTL);
|
||||||
|
|
||||||
res.json({ success: true, txHash });
|
res.json({ success: true, txHash });
|
||||||
} catch (error) {
|
} catch (error) {
|
||||||
|
Loading…
Reference in New Issue
Block a user