mirror of
https://github.com/OneUptime/oneuptime.git
synced 2026-04-06 00:32:12 +02:00
- Implemented MonitorUtil for managing monitor secrets and populating them in monitor steps and tests. - Created StackTraceParser to parse and structure stack traces from various programming languages. - Developed SyslogParser to handle and parse syslog messages in both RFC 5424 and RFC 3164 formats.
63 lines
1.7 KiB
TypeScript
63 lines
1.7 KiB
TypeScript
import TelemetryIngest, {
|
|
TelemetryRequest,
|
|
} from "Common/Server/Middleware/TelemetryIngest";
|
|
import ProductType from "Common/Types/MeteredPlan/ProductType";
|
|
import Express, {
|
|
ExpressRequest,
|
|
ExpressResponse,
|
|
ExpressRouter,
|
|
NextFunction,
|
|
RequestHandler,
|
|
} from "Common/Server/Utils/Express";
|
|
import PyroscopeIngestService from "../Services/PyroscopeIngestService";
|
|
import MultipartFormDataMiddleware from "Common/Server/Middleware/MultipartFormData";
|
|
|
|
const router: ExpressRouter = Express.getRouter();
|
|
|
|
// Set product type to Profiles for metering
|
|
const setProfilesProductType: RequestHandler = (
|
|
req: ExpressRequest,
|
|
_res: ExpressResponse,
|
|
next: NextFunction,
|
|
): void => {
|
|
(req as TelemetryRequest).productType = ProductType.Profiles;
|
|
next();
|
|
};
|
|
|
|
/*
|
|
* Map Authorization: Bearer <token> to x-oneuptime-token header
|
|
* Pyroscope SDKs use authToken which sends Authorization: Bearer
|
|
*/
|
|
const mapBearerTokenMiddleware: RequestHandler = (
|
|
req: ExpressRequest,
|
|
_res: ExpressResponse,
|
|
next: NextFunction,
|
|
): void => {
|
|
if (!req.headers["x-oneuptime-token"]) {
|
|
const authHeader: string | undefined = req.headers[
|
|
"authorization"
|
|
] as string;
|
|
if (authHeader && authHeader.startsWith("Bearer ")) {
|
|
req.headers["x-oneuptime-token"] = authHeader.substring(7);
|
|
}
|
|
}
|
|
next();
|
|
};
|
|
|
|
router.post(
|
|
"/pyroscope/ingest",
|
|
MultipartFormDataMiddleware,
|
|
mapBearerTokenMiddleware,
|
|
setProfilesProductType,
|
|
TelemetryIngest.isAuthorizedServiceMiddleware,
|
|
async (
|
|
req: ExpressRequest,
|
|
res: ExpressResponse,
|
|
next: NextFunction,
|
|
): Promise<void> => {
|
|
return PyroscopeIngestService.ingestPyroscopeProfile(req, res, next);
|
|
},
|
|
);
|
|
|
|
export default router;
|