Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
39 commits
Select commit Hold shift + click to select a range
6b0d0f4
added endpoint to query by domain
code-a-cola Apr 25, 2025
86c834f
added endpoint to query by domain
code-a-cola Apr 25, 2025
ba518d2
added endpoint to query by domain
code-a-cola Apr 25, 2025
6a7214c
added endpoint to query by domain
code-a-cola Apr 25, 2025
8178951
added endpoint to query by domain
code-a-cola Apr 25, 2025
b606477
added endpoint to query by domain
code-a-cola Apr 25, 2025
37302dd
added endpoint to query by domain
code-a-cola Apr 25, 2025
549408f
added endpoint to query by domain
code-a-cola Apr 28, 2025
98cd756
added endpoint to query by domain
code-a-cola Apr 25, 2025
0165eb2
added endpoint to query by domain
code-a-cola Apr 25, 2025
137bc4a
added endpoint to query by domain
code-a-cola Apr 25, 2025
305dabe
added endpoint to query by domain
code-a-cola Apr 28, 2025
818c240
added endpoint to query by domain
code-a-cola Nov 17, 2025
eede3e8
Merge remote-tracking branch 'origin/develop' into develop
code-a-cola Nov 17, 2025
3354590
added endpoint to query by domain
code-a-cola Nov 17, 2025
5aa7145
added endpoint to query by domain
code-a-cola Nov 17, 2025
225006d
added endpoint to query by domain
code-a-cola Nov 17, 2025
6e938fd
added endpoint to query by domain
code-a-cola Nov 17, 2025
c71d18e
added endpoint to query by domain
code-a-cola Nov 17, 2025
f96775e
added endpoint to query by domain
code-a-cola Nov 17, 2025
abaef1b
added endpoint to query by domain
code-a-cola Nov 17, 2025
0395a9a
added endpoint to query by domain
code-a-cola Nov 17, 2025
19284ba
added endpoint to query by domain
code-a-cola Nov 17, 2025
4c9fe26
added endpoint to query by domain
code-a-cola Nov 17, 2025
af0fb99
added endpoint to query by domain
code-a-cola Nov 18, 2025
a448dbe
added endpoint to query by domain
code-a-cola Nov 18, 2025
4e2e85b
added endpoint to query by domain
code-a-cola Nov 18, 2025
8165568
added endpoint to query by domain
code-a-cola Nov 18, 2025
00afc50
added endpoint to query by domain
code-a-cola Nov 18, 2025
e19b0a9
added endpoint to query by domain
code-a-cola Nov 18, 2025
97245fa
added endpoint to query by domain
code-a-cola Nov 18, 2025
ac16434
added endpoint to query by domain
code-a-cola Nov 18, 2025
d0ae14b
added endpoint to query by domain
code-a-cola Nov 19, 2025
db6728c
added endpoint to query by domain
code-a-cola Nov 19, 2025
be6cdbf
added endpoint to query by domain
code-a-cola Nov 19, 2025
3ac3d2c
added endpoint to query by domain
code-a-cola Nov 19, 2025
9691237
added endpoint to query by domain
code-a-cola Nov 19, 2025
ca39379
added endpoint to query by domain
code-a-cola Nov 19, 2025
92ceec8
added endpoint to query by domain
code-a-cola Nov 21, 2025
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
43 changes: 43 additions & 0 deletions backend/internal/proxy-host.js
Original file line number Diff line number Diff line change
Expand Up @@ -266,6 +266,49 @@ const internalProxyHost = {
});
},

/**
* @param {Access} access
* @param {Object} data
* @param {String} data.domain
* @param {Array} [data.expand]
* @param {Array} [data.omit]
* @return {Promise}
*/
getByDomain: (access, data) => {
const thisData = data || {};

return access.can("proxy_hosts:get", thisData.domain)
.then((access_data) => {
const query = proxyHostModel
.query()
.where("is_deleted", 0)
.andWhere(castJsonIfNeed("domain_names"), "like", `%"${thisData.domain}"%`)
.allowGraph("[owner,access_list.[clients,items],certificate]")
.first();

if (access_data.permission_visibility !== "all") {
query.andWhere("owner_user_id", access.token.getUserId(1));
}

if (typeof thisData.expand !== "undefined" && thisData.expand !== null) {
query.withGraphFetched(`[${thisData.expand.join(", ")}]`);
}

return query.then(utils.omitRow(omissions()));
})
.then((row) => {
if (!row || !row.id) {
throw new errs.ItemNotFoundError(thisData.id);
}
const thisRow = internalHost.cleanRowCertificateMeta(row);
// Custom omissions
if (typeof thisData.omit !== "undefined" && thisData.omit !== null) {
return _.omit(row, thisData.omit);
}
return thisRow;
});
},

/**
* @param {Access} access
* @param {Object} data
Expand Down
45 changes: 45 additions & 0 deletions backend/routes/nginx/proxy_hosts.js
Original file line number Diff line number Diff line change
Expand Up @@ -206,4 +206,49 @@ router
}
});

/**
* Specific proxy-host by domain name
*
* /api/nginx/proxy-hosts/domain/:domain
*/
router
.route("/domain/:domain")
.options((_, res) => {
res.sendStatus(204);
})
.all(jwtdecode())

/**
* GET /api/nginx/proxy-hosts/domain/:domain
*
* Retrieve a specific proxy-host by domain name
*/
.get(async (req, res, next) => {
try {
const data = await validator({
required: ["domain"],
additionalProperties: false,
properties: {
domain: {
type: "string",
},
expand: {
$ref: "common#/properties/expand"
}
}
}, {
domain: req.params.domain,
expand: (typeof req.query.expand === "string" ? req.query.expand.split(",") : null)
});
const row = await internalProxyHost.getByDomain(res.locals.access, {
domain: data.domain,
expand: data.expand
});
res.status(200).send(row);
} catch (err) {
debug(logger, `${req.method.toUpperCase()} ${req.path}: ${err}`);
next(err);
}
})

export default router;