Object ::nsmcp::access_bot_routing (public)
::nsmcp::AccessDiagnosticTool ::nsmcp::access_bot_routing
Defined in /usr/local/ns/tcl/nsmcp/traffic-tools.tcl
- ::nsmcp::access_bot_routing scanStep /context/ /state/
- ::nsmcp::access_bot_routing page /context/ /arguments/ ?floor? ?aggregationVar?
- ::nsmcp::access_bot_routing classify /record/ /maps/ /target/
- ::nsmcp::access_bot_routing contextComplete /record/ /snapshot/
- ::nsmcp::access_bot_routing validate /arguments/
- ::nsmcp::access_bot_routing execute /context/ /arguments/
- ::nsmcp::access_bot_routing nativeClassify /server/ /record/ /snapshot/ /target/
- ::nsmcp::access_bot_routing permission
- ::nsmcp::access_bot_routing name
- ::nsmcp::access_bot_routing describe
- Testcases:
- No testcase defined.
Source code: namespace eval ::nsmcp {} ::nsf::object::alloc ::nsmcp::AccessDiagnosticTool ::nsmcp::access_bot_routing {set :adminExample {} set :adminSummary {} set :authorizer ::nsmcp::authorization set :defaultMode scan set :description {Scan access-log traffic in a background job by default; poll log_results with jobHandle. The question backend waits and shows progress. mode page retains manual byte paging. Aggregated counts cover all examined pages, with bounded evidence and explicit omissions. Compare access-log traffic with effective runtime pool mappings. Requires diagnostics.runtime.read as well as diagnostics.logs.read. Uses ns_server mapped -context when supported to resolve current path, header and IP precedence from logged User-Agent and peer address. Reports lookupMode, expectedPool and contextComplete; missing predicate inputs remain unknown. Native target-pool discrepancies are candidates, not proof of historical routing failure. Older cores retain explicitly labeled root User-Agent rule membership analysis. Bot-like heuristics are separate from routing decisions. Candidate evidence is prioritized. Use category to select an exact routing category; selectedMatches, filteredOutRecords and omittedCategoryTotals distinguish filtering from omitted evidence. limit is 1..100. Page-local counts; follow nextArguments and sum categories. Use aggregateTraffic true in mode scan for address-free source concentration and User-Agent rankings; exact path filters the queryless URL path. Aggregates count all selected records before evidence truncation. No peer permission is needed for address-free aggregates; source keys are never disclosed. Inspect observedPeerCountsComplete, peerCountsIncompleteReasons, observedUserAgentCountsComplete, cardinality limits and window coverage separately. Peer grouping/disclosure requires includePeerAddresses and diagnostics.logs.peers.read.} set :inputSchema {{} object {type string object properties object {mode object {type string string enum array {0 string scan 1 string page} description string {Bot routing: aggregateTraffic true adds address-free source concentration and User-Agent rankings; path selects an exact queryless path. scan aggregates all pages in a background job, polled with log_results. page returns one bounded byte page. Slow requests remain paged.}} authenticationState object {type string string enum array {0 string anonymous 1 string authenticated 2 string unknown} description string {Filter by logged authentication state; no identity is disclosed.}} aggregateTraffic object {type string boolean default boolean false description string {Scan mode only: address-free source concentration and User-Agent rankings over all selected records, independent of evidence limits. No peer-disclosure permission required.}} path object {type string string description string {Exact queryless path, e.g. /bugtracker/openacs/}} scanStrategy object {type string string enum array {0 string window 1 string full} default string window description string {Background scans: window seeks by completion timestamps with a 300s margin and explicit ordering assumptions; full examines the entire current file.}} lastMinutes object {type string integer minimum number 1 maximum number 1440 default number 60} from object {type string number} to object {type string number} limit object {type string integer minimum number 1 maximum number 100 default number 20} pool object {type string string default string bots} module object {type string string default string nslog} category object {type string string enum array {0 string matching-rule-in-target 1 string matching-rule-other-pool-candidate 2 string bot-like-unmatched-heuristic 3 string no-target-rule-match 4 string unknown 5 string native-target-in-target 6 string native-target-other-pool-candidate 7 string bot-like-routed-elsewhere-heuristic 8 string native-other-pool} description string {Bot routing only: retain evidence for this exact category. categoryTotals still covers all matching records; selectedMatches and filteredOutRecords distinguish selection from omitted evidence.}} includePeerAddresses object {type string boolean default boolean false} beforeOffset object {type string integer minimum number 0} sourceBytes object {type string integer minimum number 0} sourceIdentity object {type string string} mappingIdentity object {type string string}} additionalProperties boolean false}} set :maxAggregateSources 100000 set :maxAggregateUserAgents 4096 set :maxReadBytes 4194304 set :name access_bot_routing set :operation bot set :outputSchema {} set :peerRedactor ::nsmcp::mcpPeerLogRedactor set :permission diagnostics.logs.read set :redactor ::nsmcp::mcpLogRedactor set :routing ::nsmcp::requestRouting set :seekMinimumBytes 8388608 set :service ::nsmcp::logService}XQL Not present: Generic, PostgreSQL, Oracle
![[i]](/resources/acs-subsite/ZoomIn16.gif)