juice-shop

Форк
0
/
webhook.ts 
41 строка · 1.5 Кб
1
/*
2
 * Copyright (c) 2014-2024 Bjoern Kimminich & the OWASP Juice Shop contributors.
3
 * SPDX-License-Identifier: MIT
4
 */
5

6
import os from 'os'
7
import { promisify } from 'util'
8
import request from 'request'
9
import logger from './logger'
10
import config from 'config'
11
import colors from 'colors/safe'
12
import type { CoreOptions, RequestCallback, Request } from 'request'
13
import * as utils from './utils'
14
import { totalCheatScore } from './antiCheat'
15
// force type of post as promisify doesn't know which one it should take
16
const post = promisify(request.post as ((uri: string, options?: CoreOptions, callback?: RequestCallback) => Request))
17

18
export const notify = async (challenge: { key: any, name: any }, cheatScore = -1, webhook = process.env.SOLUTIONS_WEBHOOK) => {
19
  if (!webhook) {
20
    return
21
  }
22
  const res = await post(webhook, {
23
    json: {
24
      solution: {
25
        challenge: challenge.key,
26
        cheatScore,
27
        totalCheatScore: totalCheatScore(),
28
        issuedOn: new Date().toISOString()
29
      },
30
      ctfFlag: utils.ctfFlag(challenge.name),
31
      issuer: {
32
        hostName: os.hostname(),
33
        os: `${os.type()} (${os.release()})`,
34
        appName: config.get<string>('application.name'),
35
        config: process.env.NODE_ENV ?? 'default',
36
        version: utils.version()
37
      }
38
    }
39
  })
40
  logger.info(`Webhook ${colors.bold(webhook)} notified about ${colors.cyan(challenge.key)} being solved: ${res.statusCode < 400 ? colors.green(res.statusCode.toString()) : colors.red(res.statusCode.toString())}`)
41
}
42

Использование cookies

Мы используем файлы cookie в соответствии с Политикой конфиденциальности и Политикой использования cookies.

Нажимая кнопку «Принимаю», Вы даете АО «СберТех» согласие на обработку Ваших персональных данных в целях совершенствования нашего веб-сайта и Сервиса GitVerse, а также повышения удобства их использования.

Запретить использование cookies Вы можете самостоятельно в настройках Вашего браузера.