# Active ANY to Local Node Routings

LLMS index: [llms.txt](/llms.txt)

---

<div id="pslens-context-panel" class="card border-info mb-4 d-none">
  <div class="card-header bg-light text-info py-2 fw-bold d-flex align-items-center border-bottom border-info-subtle">
    <i class="bi bi-info-circle-fill me-2"></i>
    <span>Tailored Operational Context</span>
  </div>
  <div class="card-body p-0">
    <ul class="list-group list-group-flush">
      <li id="row-db" class="list-group-item d-flex align-items-center justify-content-between py-2 d-none">
        <strong>Target Database:</strong>
        <span id="ctx-db" class="badge bg-secondary font-monospace">&mdash;</span>
      </li>
      <li id="row-type" class="list-group-item d-flex align-items-center justify-content-between py-2 d-none">
        <strong>Context Type:</strong>
        <span id="ctx-type" class="badge bg-light text-dark border font-monospace text-uppercase">&mdash;</span>
      </li>
      <li id="row-severity" class="list-group-item d-flex align-items-center justify-content-between py-2 d-none">
        <strong>Alert Severity:</strong>
        <span id="ctx-severity" class="badge">&mdash;</span>
      </li>
      <li id="row-time" class="list-group-item d-flex align-items-center justify-content-between py-2 d-none">
        <strong>Triggered Time:</strong>
        <span id="ctx-time" class="text-muted small">&mdash;</span>
      </li>
      <li id="row-details" class="list-group-item py-2 d-none">
        <strong id="label-details" class="d-block mb-1">Firing Context:</strong>
        <code id="ctx-details" class="d-block p-2 bg-light border rounded small" style="white-space: pre-wrap; word-break: break-all;">&mdash;</code>
      </li>
    </ul>
  </div>
</div>

<script>
  (function() {
    const params = new URLSearchParams(window.location.search);
    const metadata = params.get('metadata');
    if (!metadata) return;

    try {
      
      const base64 = metadata.replace(/-/g, '+').replace(/_/g, '/');
      const jsonStr = decodeURIComponent(escape(window.atob(base64)));
      const data = JSON.parse(jsonStr);

      if (data) {
        let hasData = false;

        if (data.db) {
          document.getElementById('ctx-db').textContent = data.db;
          document.getElementById('row-db').classList.remove('d-none');
          hasData = true;
        }

        if (data.type) {
          document.getElementById('ctx-type').textContent = data.type;
          document.getElementById('row-type').classList.remove('d-none');
          hasData = true;
        }

        if (data.severity) {
          const severityBadge = document.getElementById('ctx-severity');
          const severity = data.severity.toLowerCase();
          severityBadge.textContent = severity.toUpperCase();
          if (severity === 'critical') {
            severityBadge.className = 'badge bg-danger';
          } else if (severity === 'warning') {
            severityBadge.className = 'badge bg-warning text-dark';
          } else {
            severityBadge.className = 'badge bg-info';
          }
          document.getElementById('row-severity').classList.remove('d-none');
          hasData = true;
        }

        if (data.t) {
          const date = new Date(data.t * 1000);
          document.getElementById('ctx-time').textContent = date.toLocaleString();
          document.getElementById('row-time').classList.remove('d-none');
          hasData = true;
        }

        if (data.details) {
          document.getElementById('ctx-details').textContent = data.details;

          
          const labelDetails = document.getElementById('label-details');
          if (data.type === 'object') {
            labelDetails.textContent = 'Object Metadata Details:';
          } else if (data.type === 'report') {
            labelDetails.textContent = 'Report Description:';
          } else {
            labelDetails.textContent = 'Firing Context:';
          }

          document.getElementById('row-details').classList.remove('d-none');
          hasData = true;
        }

        if (hasData) {
          document.getElementById('pslens-context-panel').classList.remove('d-none');
        }
      }
    } catch (e) {
      console.error('Failed to parse operational context metadata:', e);
    }
  })();
</script>


## Active `~~ANY~~` to Local Node Routings Report

**Report ID:** `ib-any-to-local-routing`
**Category:** Integration Broker

## Purpose

This report identifies Integration Broker routings where the sender node is `~~ANY~~` and the receiver is the default local node. The `~~ANY~~` sender is a wildcard that allows **any external node** to send messages to the local system for that routing's operation, bypassing node-specific routing controls.

`~~ANY~~` routings are sometimes intentional (e.g., for broadly available services), but if left active without review they let any external node send messages inbound. This report lists which operations are open to inbound messages from any node.

## What It Detects

### WARNING — Active `~~ANY~~` to Local Node Routings

Active routings in PSIBRTNGDEFN where:

- `SENDERNODENAME = '~~ANY~~'`
- `RECEIVERNODENAME` is the default local node
- `EFF_STATUS = 'A'` (Active)

These routings are currently allowing any external node to send messages inbound.

## Tables Queried

### PSMSGNODEDEFN — Message Node Definitions

Used to identify the default local node(s).

|      Field      |            Description            | Filter  |
| --------------- | --------------------------------- | ------- |
| MSGNODENAME     | Node name (primary key)           |         |
| LOCALNODE       | Whether node is local             | `= 1`   |
| LOCALDEFAULTFLG | Whether node is the default local | `= 'Y'` |
| ACTIVE_NODE     | Whether the node is active        |         |

### PSIBRTNGDEFN — Integration Broker Routing Definitions

Used to find inbound routings to the default local node.

|      Field       |       Description       |            Filter            |
| ---------------- | ----------------------- | ---------------------------- |
| ROUTINGDEFNNAME  | Routing definition name |                              |
| SENDERNODENAME   | Sender node             | Checked for `~~ANY~~`        |
| RECEIVERNODENAME | Receiver node           | `= {default local node}`     |
| EFF_STATUS       | Effective status        | `A` = Active, `I` = Inactive |
| EFFDT            | Effective date          |                              |
| IB_OPERATIONNAME | Service operation name  |                              |
| DESCR            | Description             |                              |

## Data Flow

```text
1. Fetch ALL message nodes from PSMSGNODEDEFN
   (batches of 300)
        |
        v
2. Filter for default local nodes:
   LOCALNODE = 1 AND LOCALDEFAULTFLG = 'Y'
        |
        v
3. For each default local node, fetch inbound routings
   from PSIBRTNGDEFN where RECEIVERNODENAME = node
        |
        v
4. Filter for active routings where SENDERNODENAME = '~~ANY~~'
        |
        v
5. Generate Markdown report with findings
```

## Report Output

The generated report contains:

- **Header** with database name and generation timestamp
- **Summary** with total nodes scanned, default local node name(s), and count of active `~~ANY~~` routings
- **WARNING section** (if any): Table of active `~~ANY~~` routings with routing name, receiver node, linked service operation, and description
- **Recommendations** if active `~~ANY~~` routings are found

## Interpreting Results

- **WARNING findings should be reviewed.** Each active `~~ANY~~` routing means any external node can send messages for that operation to the local system. Determine whether this is intentional.
- **No findings** means all inbound routings use explicit sender nodes, which is the most secure configuration.

## Recommendations

1. Review each active `~~ANY~~` routing to determine if a wildcard sender is truly needed
2. Replace with explicit sender node routings where possible to restrict which nodes can send messages inbound
3. Deactivate unneeded `~~ANY~~` routings to reduce the attack surface
