Page MenuHomePhabricator

D13411.id38987.diff
No OneTemporary

D13411.id38987.diff

diff --git a/web/alias-server/index.js b/web/alias-server/index.js
--- a/web/alias-server/index.js
+++ b/web/alias-server/index.js
@@ -5,7 +5,8 @@
const express = require('express');
var cors = require('cors');
const requestIp = require('request-ip');
-const { isValidXecAddress } = require('./utils');
+const { isValidXecAddress, isValidAliasString } = require('./utils');
+const { sendAdminAlert } = require('./telegram');
async function main() {
// Initialize db connection
@@ -132,6 +133,63 @@
}
});
+ app.get('/alias/:alias', async function (req, res) {
+ // Get IP address from before cloudflare proxy
+ const ip = req.clientIp;
+ const alias = req.params.alias;
+ log(`/alias/${alias} from IP: ${ip}, host ${req.headers.host}`);
+ // Alias validation
+ const isValid = isValidAliasString(alias);
+ if (isValid) {
+ let addressOfThisAlias;
+
+ const query = { alias };
+ const projection = { _id: 0, address: 1 };
+ try {
+ addressOfThisAlias = await db
+ .collection(config.database.collections.validAliases)
+ .find(query)
+ .project(projection)
+ .toArray();
+
+ // There can be only one
+ if (addressOfThisAlias.length > 1) {
+ // admin notify
+ const adminAlertMsg = `server found more than one address associated with alias "${alias}"`;
+ log(adminAlertMsg);
+ sendAdminAlert(adminAlertMsg);
+ }
+
+ let addressString;
+ if (
+ addressOfThisAlias &&
+ addressOfThisAlias[0] &&
+ addressOfThisAlias[0].address
+ ) {
+ addressString = addressOfThisAlias[0].address;
+ } else {
+ addressString = false;
+ }
+
+ const isAvailable = !addressString;
+
+ const apiAliasResponse = {
+ alias,
+ address: addressString,
+ isAvailable,
+ };
+
+ return res.status(200).json(apiAliasResponse);
+ } catch (error) {
+ return res.status(500).json({ error });
+ }
+ } else {
+ return res.status(200).json({
+ error: 'Input must be a valid alias string (a-z, 0-9)',
+ });
+ }
+ });
+
app.listen(config.express.port);
}

File Metadata

Mime Type
text/plain
Expires
Thu, Feb 6, 16:11 (17 h, 14 m)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
5082631
Default Alt Text
D13411.id38987.diff (2 KB)

Event Timeline