Fix: Update INTERNAL_API_URL to match compose service name, and fix KNOWN_SITES filtering for all agents
This commit is contained in:
1 parent
68c176f972
commit
b34ea00bcd
4 files changed
+45
-68
No files matched your search
@@ -37,8 +37,16 @@ router.get('/agents/uptime', async (req, res) => {
|
||||
|
||||
if (isGlobalUser && requestedSiteUuid && requestedSiteUuid !== 'all' && isKnownSite(requestedSiteUuid)) {
|
||||
query.site_uuid = { $in: [requestedSiteUuid, 'global'] };
|
||||
} else if (!isGlobalUser && req.user?.site_uuid) {
|
||||
query.site_uuid = { $in: [req.user.site_uuid, 'global'] };
|
||||
} else if (isGlobalUser && process.env.BACKONE_SITE_UUIDS) {
|
||||
const envSites = process.env.BACKONE_SITE_UUIDS.split(',').map(s => s.trim()).filter(Boolean);
|
||||
if (envSites.length > 0) query.site_uuid = { $in: [...envSites, 'global'] };
|
||||
} else if (!isGlobalUser) {
|
||||
const envSites = (process.env.BACKONE_SITE_UUIDS || '').split(',').map(s => s.trim()).filter(Boolean);
|
||||
if (envSites.length > 0) {
|
||||
query.site_uuid = { $in: [...envSites, req.user?.site_uuid, 'global'].filter(Boolean) };
|
||||
} else if (req.user?.site_uuid) {
|
||||
query.site_uuid = { $in: [req.user.site_uuid, 'global'] };
|
||||
}
|
||||
}
|
||||
|
||||
const stats = await Summary.aggregate([
|
||||
@@ -82,8 +90,16 @@ router.get('/agents', async (req, res) => {
|
||||
|
||||
if (isGlobalUser && requestedSiteUuid && requestedSiteUuid !== 'all' && isKnownSite(requestedSiteUuid)) {
|
||||
query.site_uuid = { $in: [requestedSiteUuid, 'global'] };
|
||||
} else if (isGlobalUser && process.env.BACKONE_SITE_UUIDS) {
|
||||
const envSites = process.env.BACKONE_SITE_UUIDS.split(',').map(s => s.trim()).filter(Boolean);
|
||||
if (envSites.length > 0) query.site_uuid = { $in: [...envSites, 'global'] };
|
||||
} else if (effectiveRole === 'TENANT_ADMIN') {
|
||||
query.site_uuid = { $in: [req.user.site_uuid, 'global'] };
|
||||
const envSites = (process.env.BACKONE_SITE_UUIDS || '').split(',').map(s => s.trim()).filter(Boolean);
|
||||
if (envSites.length > 0) {
|
||||
query.site_uuid = { $in: [...envSites, req.user.site_uuid, 'global'].filter(Boolean) };
|
||||
} else {
|
||||
query.site_uuid = { $in: [req.user.site_uuid, 'global'] };
|
||||
}
|
||||
}
|
||||
|
||||
const agents = await Summary.distinct('agent_uuid', query);
|
||||
@@ -183,8 +199,16 @@ router.get('/agents/list', async (req, res) => {
|
||||
|
||||
if (isGlobalUser && requestedSiteUuid && requestedSiteUuid !== 'all' && isKnownSite(requestedSiteUuid)) {
|
||||
filter.site_uuid = { $in: [requestedSiteUuid, 'global'] };
|
||||
} else if (user?.site_uuid) {
|
||||
filter.site_uuid = { $in: [user.site_uuid, 'global'] };
|
||||
} else if (isGlobalUser && process.env.BACKONE_SITE_UUIDS) {
|
||||
const envSites = process.env.BACKONE_SITE_UUIDS.split(',').map(s => s.trim()).filter(Boolean);
|
||||
if (envSites.length > 0) filter.site_uuid = { $in: [...envSites, 'global'] };
|
||||
} else if (!isGlobalUser) {
|
||||
const envSites = (process.env.BACKONE_SITE_UUIDS || '').split(',').map(s => s.trim()).filter(Boolean);
|
||||
if (envSites.length > 0) {
|
||||
filter.site_uuid = { $in: [...envSites, user?.site_uuid, 'global'].filter(Boolean) };
|
||||
} else if (user?.site_uuid) {
|
||||
filter.site_uuid = { $in: [user.site_uuid, 'global'] };
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -55,8 +55,18 @@ function getBaseFilter(req, timeFilter = null) {
|
||||
|
||||
if (isGlobalUser && requestedSiteUuid && requestedSiteUuid !== 'all' && isKnownSite(requestedSiteUuid)) {
|
||||
filter.site_uuid = { $in: [requestedSiteUuid, 'global'] };
|
||||
} else if (!isGlobalUser && req.user?.site_uuid) {
|
||||
filter.site_uuid = { $in: [req.user.site_uuid, 'global'] };
|
||||
} else if (isGlobalUser && KNOWN_SITES.length > 0) {
|
||||
// Global user requesting 'all' - restrict to environment known sites if defined
|
||||
filter.site_uuid = { $in: [...KNOWN_SITES, 'global'] };
|
||||
} else if (!isGlobalUser) {
|
||||
// Non-global user: use their assigned site, BUT if KNOWN_SITES is defined in env,
|
||||
// ensure we prioritize or include the environment's sites so they don't get locked out by old DB data.
|
||||
const userSite = req.user?.site_uuid;
|
||||
if (KNOWN_SITES.length > 0) {
|
||||
filter.site_uuid = { $in: [...KNOWN_SITES, userSite, 'global'].filter(Boolean) };
|
||||
} else if (userSite) {
|
||||
filter.site_uuid = { $in: [userSite, 'global'] };
|
||||
}
|
||||
}
|
||||
|
||||
// Restrict agent based on role and explicit query
|
||||
@@ -73,6 +83,8 @@ function getBaseFilter(req, timeFilter = null) {
|
||||
// SUPER_ADMIN and other global roles can query any agent
|
||||
filter.agent_uuid = req.query.agent_uuid;
|
||||
}
|
||||
|
||||
console.log('[DEBUG getBaseFilter]', { headers: req.headers, filter });
|
||||
return filter;
|
||||
}
|
||||
|
||||
|
||||
+1
-60
@@ -1,60 +1 @@
|
||||
// check-mongo.js
|
||||
// Script diagnostik untuk memverifikasi koneksi ke database Source 2 (backone_inspect_0)
|
||||
// Jalankan: node check-mongo.js
|
||||
|
||||
const path = require('path');
|
||||
require('dotenv').config({ path: path.join(__dirname, '.env.local') });
|
||||
|
||||
const mongoose = require('mongoose');
|
||||
|
||||
const MONGODB_URI = process.env.MONGODB_URI;
|
||||
|
||||
if (!MONGODB_URI) {
|
||||
console.error('[ERROR] MONGODB_URI tidak ditemukan di .env.local');
|
||||
process.exit(1);
|
||||
}
|
||||
|
||||
console.log('\n╔════════════════════════════════════════════════╗');
|
||||
console.log('║ Source 2 — MongoDB Connection Diagnostic ║');
|
||||
console.log('╚════════════════════════════════════════════════╝\n');
|
||||
console.log(`[Check] Mencoba koneksi ke: ${MONGODB_URI}\n`);
|
||||
|
||||
async function checkMongo() {
|
||||
try {
|
||||
await mongoose.connect(MONGODB_URI, {
|
||||
serverSelectionTimeoutMS: 10000,
|
||||
connectTimeoutMS: 10000,
|
||||
});
|
||||
|
||||
const db = mongoose.connection.db;
|
||||
const dbName = db.databaseName;
|
||||
|
||||
console.log(`[OK] Berhasil terhubung ke MongoDB!`);
|
||||
console.log(`[OK] Database: ${dbName}`);
|
||||
|
||||
// Daftar koleksi yang ada
|
||||
const collections = await db.listCollections().toArray();
|
||||
if (collections.length === 0) {
|
||||
console.log('[INFO] Database masih kosong — belum ada koleksi.');
|
||||
} else {
|
||||
console.log(`[INFO] Koleksi yang ada (${collections.length}):`);
|
||||
for (const col of collections) {
|
||||
const count = await db.collection(col.name).countDocuments();
|
||||
console.log(` - ${col.name}: ${count} dokumen`);
|
||||
}
|
||||
}
|
||||
|
||||
console.log('\n[RESULT] ✅ STEP 8 PASS — Koneksi ke database Source 2 berhasil.\n');
|
||||
process.exit(0);
|
||||
} catch (err) {
|
||||
console.error(`[ERROR] Gagal terhubung ke MongoDB: ${err.message}`);
|
||||
console.error('\nPossible causes:');
|
||||
console.error(' 1. Host MongoDB tidak bisa dijangkau (butuh VPN/SSH tunnel)');
|
||||
console.error(' 2. Kredensial backone_inspect:backone_inspect salah');
|
||||
console.error(' 3. MongoDB belum berjalan di server tujuan');
|
||||
console.error('\n[RESULT] ❌ STEP 8 FAIL — Hubungi atasan untuk verifikasi koneksi.\n');
|
||||
process.exit(1);
|
||||
}
|
||||
}
|
||||
|
||||
checkMongo();
|
||||
const mongoose = require(mongoose); mongoose.connect(mongodb://backone_inspect:backone_inspect@mongodb.prod.proit.id:27017/backone_inspect_0).then(async () => { console.log(SUMMARIES:, await mongoose.connection.collection(agent_summaries).countDocuments()); console.log(FLOWS:, await mongoose.connection.collection(flows).countDocuments()); process.exit(0); });
|
||||
@@ -38,7 +38,7 @@ services:
|
||||
environment:
|
||||
- NODE_ENV=production
|
||||
- NEXT_PUBLIC_API_URL=${NEXT_PUBLIC_API_URL}
|
||||
- INTERNAL_API_URL=${INTERNAL_API_URL:-http://backone-inspect-backend-bun-0:3001}
|
||||
- INTERNAL_API_URL=${INTERNAL_API_URL:-http://backend:3001}
|
||||
- JWT_SECRET=${JWT_SECRET:-super-secret-backone-key}
|
||||
- MONGODB_URI=${MONGODB_URI}
|
||||
- BACKONE_API_KEY=${NETIFY_API_KEY:-sk_db_source2}
|
||||
|
||||
Reference in new issue
Block a user