fix(monitoring): diagnosa WhatsApp sadar-gateway (GoWA) + tambah cek Telegram
This commit is contained in:
1 parent
6f97430e41
commit
0f612df70f
2 files changed
+54
-30
No files matched your search
@@ -17,6 +17,7 @@ async function checkDependencies() {
|
|||||||
mikrotik: [],
|
mikrotik: [],
|
||||||
genieacs: { status: 'unknown', message: '' },
|
genieacs: { status: 'unknown', message: '' },
|
||||||
whatsapp: { status: 'unknown', message: '' },
|
whatsapp: { status: 'unknown', message: '' },
|
||||||
|
telegram: { status: 'unknown', message: '' },
|
||||||
paymentGateways: [],
|
paymentGateways: [],
|
||||||
timestamp: new Date().toISOString()
|
timestamp: new Date().toISOString()
|
||||||
};
|
};
|
||||||
@@ -104,39 +105,54 @@ async function checkDependencies() {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// 3. Check WhatsApp Gateway (using whatsappStatus from whatsappBot)
|
// 3. Check WhatsApp Gateway (GoWA / Baileys sesuai setting wa_gateway_type)
|
||||||
try {
|
try {
|
||||||
// Import whatsappStatus dynamically to get real-time status
|
const { getSetting } = require('../config/settingsManager');
|
||||||
const whatsappBotModule = await import('./whatsappBot.mjs');
|
const gw = String(getSetting('wa_gateway_type', 'baileys') || 'baileys').toLowerCase();
|
||||||
const waStatus = whatsappBotModule.whatsappStatus;
|
if (gw === 'gowa') {
|
||||||
|
const base = String(getSetting('gowa_base_url', 'http://127.0.0.1:3000') || '').replace(/\/+$/, '');
|
||||||
// Check connection status
|
const u = getSetting('gowa_username', '');
|
||||||
// Possible values: 'connecting', 'qr', 'open', 'loggedOut', 'close'
|
const p = getSetting('gowa_password', '');
|
||||||
const isOnline = waStatus.connection === 'open';
|
const cfg = { timeout: 6000, validateStatus: (s) => s < 500 };
|
||||||
const isQR = waStatus.connection === 'qr';
|
if (u && p) cfg.auth = { username: u, password: p };
|
||||||
const isLoggedOut = waStatus.connection === 'loggedOut';
|
const resp = await axios.get(`${base}/app/status`, cfg);
|
||||||
|
const res = (resp.data && resp.data.results) || {};
|
||||||
let message = 'WhatsApp is disconnected';
|
const isOnline = !!res.is_connected;
|
||||||
if (isOnline) {
|
results.whatsapp = {
|
||||||
const phone = waStatus.user?.id ? String(waStatus.user.id).split(':')[0] : 'Unknown';
|
status: isOnline ? 'online' : 'offline',
|
||||||
message = `WhatsApp connected (${phone})`;
|
message: isOnline ? `GoWA connected (${res.jid || res.device_id || '-'})` : 'GoWA tidak terhubung'
|
||||||
} else if (isQR) {
|
};
|
||||||
message = 'WhatsApp waiting for QR scan';
|
|
||||||
} else if (isLoggedOut) {
|
|
||||||
message = 'WhatsApp logged out - scan QR again';
|
|
||||||
} else {
|
} else {
|
||||||
message = `WhatsApp ${waStatus.connection || 'disconnected'}`;
|
const whatsappBotModule = await import('./whatsappBot.mjs');
|
||||||
|
const waStatus = whatsappBotModule.whatsappStatus;
|
||||||
|
const isOnline = waStatus && waStatus.connection === 'open';
|
||||||
|
const isQR = waStatus && waStatus.connection === 'qr';
|
||||||
|
const isLoggedOut = waStatus && waStatus.connection === 'loggedOut';
|
||||||
|
let message = 'WhatsApp is disconnected';
|
||||||
|
if (isOnline) { const phone = waStatus.user && waStatus.user.id ? String(waStatus.user.id).split(':')[0] : 'Unknown'; message = `WhatsApp connected (${phone})`; }
|
||||||
|
else if (isQR) message = 'WhatsApp waiting for QR scan';
|
||||||
|
else if (isLoggedOut) message = 'WhatsApp logged out - scan QR again';
|
||||||
|
else message = `WhatsApp ${(waStatus && waStatus.connection) || 'disconnected'}`;
|
||||||
|
results.whatsapp = { status: isOnline ? 'online' : 'offline', message };
|
||||||
}
|
}
|
||||||
|
|
||||||
results.whatsapp = {
|
|
||||||
status: isOnline ? 'online' : 'offline',
|
|
||||||
message: message
|
|
||||||
};
|
|
||||||
} catch (err) {
|
} catch (err) {
|
||||||
results.whatsapp = {
|
results.whatsapp = { status: 'offline', message: `WhatsApp check error: ${err.message}` };
|
||||||
status: 'offline',
|
}
|
||||||
message: `WhatsApp check error: ${err.message}`
|
|
||||||
};
|
// 4. Check Telegram Bot
|
||||||
|
try {
|
||||||
|
const { getSetting } = require('../config/settingsManager');
|
||||||
|
const enabled = !!getSetting('telegram_enabled', false);
|
||||||
|
const token = String(getSetting('telegram_bot_token', '') || '').trim();
|
||||||
|
if (!enabled || !token) {
|
||||||
|
results.telegram = { status: 'offline', message: !enabled ? 'Telegram dinonaktifkan' : 'Token belum diisi' };
|
||||||
|
} else {
|
||||||
|
const resp = await axios.get(`https://api.telegram.org/bot${token}/getMe`, { timeout: 6000, validateStatus: (s) => s < 500 });
|
||||||
|
if (resp.data && resp.data.ok) results.telegram = { status: 'online', message: 'Terhubung sebagai @' + ((resp.data.result && resp.data.result.username) || '-') };
|
||||||
|
else results.telegram = { status: 'offline', message: (resp.data && resp.data.description) || 'getMe gagal' };
|
||||||
|
}
|
||||||
|
} catch (err) {
|
||||||
|
results.telegram = { status: 'offline', message: `Telegram check error: ${err.message}` };
|
||||||
}
|
}
|
||||||
|
|
||||||
return results;
|
return results;
|
||||||
|
|||||||
@@ -568,13 +568,21 @@
|
|||||||
</td>
|
</td>
|
||||||
</tr>
|
</tr>
|
||||||
<tr>
|
<tr>
|
||||||
<td>WhatsApp Bot</td>
|
<td>WhatsApp Bot<div class="sc-label" style="font-size:11px"><%= dependencies.whatsapp.message %></div></td>
|
||||||
<td class="text-right">
|
<td class="text-right">
|
||||||
<span class="badge <%= dependencies.whatsapp.status === 'online' ? 'bs' : 'bd' %>">
|
<span class="badge <%= dependencies.whatsapp.status === 'online' ? 'bs' : 'bd' %>">
|
||||||
<%= dependencies.whatsapp.status.toUpperCase() %>
|
<%= dependencies.whatsapp.status.toUpperCase() %>
|
||||||
</span>
|
</span>
|
||||||
</td>
|
</td>
|
||||||
</tr>
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td>Telegram Bot<div class="sc-label" style="font-size:11px"><%= dependencies.telegram ? dependencies.telegram.message : '' %></div></td>
|
||||||
|
<td class="text-right">
|
||||||
|
<span class="badge <%= (dependencies.telegram && dependencies.telegram.status === 'online') ? 'bs' : 'bd' %>">
|
||||||
|
<%= dependencies.telegram ? dependencies.telegram.status.toUpperCase() : 'UNKNOWN' %>
|
||||||
|
</span>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
</table>
|
</table>
|
||||||
|
|
||||||
<p class="sc-label mt16 mb8">Router MikroTik</p>
|
<p class="sc-label mt16 mb8">Router MikroTik</p>
|
||||||
|
|||||||
Reference in new issue
Block a user