Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

add webhook to discord BIGCity virtual office #4

Open
islamicity opened this issue Jun 6, 2024 · 1 comment
Open

add webhook to discord BIGCity virtual office #4

islamicity opened this issue Jun 6, 2024 · 1 comment

Comments

@islamicity
Copy link
Owner

Kolom "Secret" di pengaturan webhook GitHub digunakan untuk menambahkan lapisan keamanan tambahan pada webhook. Secret ini adalah token yang hanya diketahui oleh GitHub dan server Anda, yang digunakan untuk memastikan bahwa payload yang diterima oleh server Anda benar-benar berasal dari GitHub.

Cara Mengisi Kolom "Secret" di GitHub Webhook

  1. Pilih atau Buat Secret:

    • Anda dapat memilih secret apa pun yang ingin Anda gunakan. Ini bisa berupa string acak atau frasa yang sulit ditebak. Misalnya: my_super_secret_token_12345.
  2. Masukkan Secret ke dalam Pengaturan Webhook di GitHub:

    • Buka repository Anda di GitHub.
    • Pergi ke "Settings" -> "Webhooks".
    • Klik "Add webhook".
    • Tempel URL webhook Discord di bagian "Payload URL".
    • Pilih "application/json" sebagai content type.
    • Pilih event yang ingin Anda trigger (misalnya, push event).
    • Masukkan secret yang telah Anda pilih di kolom "Secret".
    • Klik "Add webhook".
  3. Verifikasi Secret di Server Anda:

    • Pada server Anda, Anda perlu memverifikasi secret untuk memastikan payload yang diterima benar-benar dari GitHub. Berikut adalah contoh cara melakukannya dalam Node.js:

Contoh Verifikasi Secret di Node.js

  1. Menginstal Dependensi:

    • Anda memerlukan beberapa dependensi tambahan. Jalankan perintah berikut untuk menginstalnya:

      npm install express body-parser crypto

  2. Script Server dengan Verifikasi Secret:

const express = require('express');
const bodyParser = require('body-parser');
const crypto = require('crypto');
const axios = require('axios');

const app = express();
app.use(bodyParser.json());

const DISCORD_WEBHOOK_URL = 'YOUR_DISCORD_WEBHOOK_URL';
const GITHUB_SECRET = 'my_super_secret_token_12345'; // Sama dengan secret yang diisi di GitHub

function verifySignature(req, res, buf, encoding) {
const signature = req.headers['x-hub-signature-256'];
if (!signature) {
res.status(401).send('Signature missing');
return;
}

const hmac = crypto.createHmac('sha256', GITHUB_SECRET);
const digest = sha256=${hmac.update(buf).digest('hex')};
if (signature !== digest) {
res.status(401).send('Signature mismatch');
}
}

app.use(bodyParser.json({ verify: verifySignature }));

app.post('/webhook', (req, res) => {
const githubPayload = req.body;
const discordMessage = {
content: New push by ${githubPayload.pusher.name}:\n${githubPayload.head_commit.message}\n<${githubPayload.head_commit.url}>
};

axios.post(DISCORD_WEBHOOK_URL, discordMessage)
.then(() => {
res.status(200).send('Webhook received and processed');
})
.catch((error) => {
console.error('Error sending message to Discord:', error);
res.status(500).send('Error processing webhook');
});
});

const PORT = process.env.PORT || 3000;
app.listen(PORT, () => {
console.log(Server is listening on port ${PORT});
});
3. Menjalankan Server:

  • Simpan script di atas ke dalam file server.js.
  • Jalankan server dengan node server.js.

Menguji Webhook dengan Secret

Setelah setup selesai:

  • Lakukan perubahan di repository GitHub Anda (misalnya, push commit baru).
  • GitHub akan mengirim payload ke server Anda dengan header x-hub-signature-256.
  • Server Anda akan memverifikasi signature menggunakan secret yang Anda tetapkan.
  • Jika verifikasi berhasil, server akan memproses payload dan mengirim pesan ke Discord.

Dengan langkah-langkah ini, Anda dapat memastikan bahwa payload yang diterima oleh server Anda benar-benar berasal dari GitHub, meningkatkan keamanan integrasi webhook Anda.

@islamicity
Copy link
Owner Author

belum OK ?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant