DIR : /home/kozerus/public_html/ko_center/ko_center.html

/home/kozerus/public_html/ko_center

<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
  <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
  <title>ko_center System User Documentation</title>
  <style type="text/css">
    body { font-family: Arial, sans-serif; margin: 20px; background-color: #f0f0f0; }
    h1 { color: #333; border-bottom: 2px solid #0066cc; padding-bottom: 5px; }
    h2 { color: #0066cc; margin-top: 30px; }
    h3 { color: #333; }
    code { background-color: #eee; padding: 2px 4px; border-radius: 3px; font-size: 14px; }
    pre { background-color: #f8f8f8; border: 1px solid #ddd; padding: 10px; border-radius: 4px; overflow-x: auto; }
    table { border-collapse: collapse; margin: 10px 0; }
    th, td { border: 1px solid #ccc; padding: 6px 10px; text-align: left; }
    th { background-color: #0066cc; color: white; }
    tr:nth-child(even) { background-color: #f9f9f9; }
    .note { background-color: #fff3cd; border: 1px solid #ffc107; padding: 10px; margin: 10px 0; border-radius: 4px; }
    .warning { background-color: #f8d7da; border: 1px solid #dc3545; padding: 10px; margin: 10px 0; border-radius: 4px; }
    .info { background-color: #d1ecf1; border: 1px solid #17a2b8; padding: 10px; margin: 10px 0; border-radius: 4px; }
    a { color: #0066cc; text-decoration: none; }
    a:hover { text-decoration: underline; }
    .toc { margin: 20px 0; padding: 15px; background: white; border: 1px solid #ddd; border-radius: 4px; }
    .toc ul { list-style-type: none; padding-left: 10px; }
    .toc li { margin: 4px 0; }
  </style>
</head>
<body>

<h1>ko_center System User Documentation</h1>

<p><strong>Version:</strong> v0.70 (2026-08-01)<br />
<strong>Type:</strong> PHP/Perl Web Application<br />
<strong>Database:</strong> SQLite (ko_center.db3)<br />
<strong>Location:</strong> /os/ai/io/ko_center.php</p>

<div class="toc">
<h2>Table of Contents</h2>
<ul>
  <li><a href="#overview">Overview</a></li>
  <li><a href="#access">Access &amp; Login</a></li>
  <li><a href="#navigation">Navigation &amp; Interface</a></li>
  <li><a href="#urls">URL Routing &amp; Query Parameters</a></li>
  <li><a href="#leds">LED Display System</a></li>
  <li><a href="#grids">Database Grid Views</a></li>
  <li><a href="#reports">Reports</a></li>
  <li><a href="#kb">Knowledge Base</a></li>
  <li><a href="#certs">Certificates</a></li>
  <li><a href="#nodes">Nodes / Hosts</a></li>
  <li><a href="#hw">Hardware Inventory</a></li>
  <li><a href="#plans">Plans</a></li>
  <li><a href="#tools">Tools</a></li>
  <li><a href="#trigger">Trigger / Auto-Refresh</a></li>
  <li><a href="#database">Database Schema</a></li>
  <li><a href="#files">Key Files</a></li>
</ul>
</div>

<!-- ================================================================== -->
<h2 id="overview">1. Overview</h2>
<!-- ================================================================== -->

<p>ko_center is a single-file web application that provides a centralized
dashboard for managing and monitoring system resources. It uses SQLite
as its backend database and generates HTML pages dynamically via PHP.</p>

<p>The system provides:</p>
<ul>
  <li><strong>LED indicator display</strong> — visual status indicators with
    configurable colors, speeds, and types (manual, date, cmd, null)</li>
  <li><strong>Database grid views</strong> — sortable, filterable table views
    of any database table</li>
  <li><strong>Reports</strong> — SQL-based reports with CSV and XML export</li>
  <li><strong>Knowledge Base</strong> — CRUD operations for KB articles</li>
  <li><strong>Certificate management</strong> — view and manage certificates</li>
  <li><strong>Node/Host management</strong> — view and manage network nodes</li>
  <li><strong>Hardware inventory</strong> — detailed hardware tracking</li>
  <li><strong>Zoom viewer</strong> — interactive zoomable image viewer with
    hotspots</li>
  <li><strong>Trigger endpoint</strong> — forces browser refresh when called
    by another user</li>
</ul>

<!-- ================================================================== -->
<h2 id="access">2. Access &amp; Login</h2>
<!-- ================================================================== -->

<h3>Login</h3>
<p>Access the system by navigating to the ko_center URL. If not logged in,
the system presents a login form.</p>

<p><strong>URL:</strong> <code>http://&lt;host&gt;/ko_center/ko_center.php</code></p>

<p>Login credentials are validated against the <code>hosts.allow</code> file
located at <code>/os/ai/io/../safer/hosts.allow</code>.</p>

<p>Once logged in, the user's role determines which features and data they
can access.</p>

<h3>Logout</h3>
<p>Click the logout button (white icon) in the navigation bar to end your
session.</p>

<div class="note">
<strong>Note:</strong> The system uses PHP sessions (<code>$_SESSION</code>)
to track logged-in users. The session stores the user's role, which controls
access to different features.
</div>

<!-- ================================================================== -->
<h2 id="navigation">3. Navigation &amp; Interface</h2>
<!-- ================================================================== -->

<h3>Button Squares</h3>
<p>The main navigation bar provides quick access to all major features via
button squares. Available buttons depend on user role:</p>

<table>
<tr><th>Button</th><th>URL</th><th>Description</th></tr>
<tr><td>Leds</td><td><code>?q=leds</code></td><td>LED indicator display</td></tr>
<tr><td>Grid</td><td><code>?q=db/grid</code></td><td>Database grid views</td></tr>
<tr><td>KB</td><td><code>?q=kb</code></td><td>Knowledge Base</td></tr>
<tr><td>Reports</td><td><code>?q=reports</code></td><td>Reports &amp; exports</td></tr>
<tr><td>Certs</td><td><code>?q=certs</code></td><td>Certificate management</td></tr>
<tr><td>Nodes</td><td><code>?q=nodes</code></td><td>Node/Host management</td></tr>
<tr><td>HW</td><td><code>?q=hw</code></td><td>Hardware inventory</td></tr>
<tr><td>Plans</td><td><code>?q=plans</code></td><td>Plan management</td></tr>
<tr><td>Config</td><td><code>?q=config</code></td><td>System configuration</td></tr>
<tr><td>Login</td><td><code>?q=login</code></td><td>Login form</td></tr>
<tr><td>Logout</td><td><code>?q=logout</code></td><td>End session</td></tr>
<tr><td>Tools</td><td><code>?q=tools</code></td><td>System tools</td></tr>
</table>

<!-- ================================================================== -->
<h2 id="urls">4. URL Routing &amp; Query Parameters</h2>
<!-- ================================================================== -->

<p>The system uses the <code>q</code> query parameter for routing. The
parameter value is split by <code>/</code> to determine the page and
sub-actions.</p>

<h3>URL Format</h3>
<pre>ko_center.php?q=&lt;page&gt;/&lt;action&gt;/&lt;id&gt;</pre>

<h3>Routing Examples</h3>
<table>
<tr><th>URL</th><th>Page</th><th>Action</th></tr>
<tr><td><code>?q=leds</code></td><td>LED Display</td><td>Show all current LEDs</td></tr>
<tr><td><code>?q=leds/detail/cab1</code></td><td>LED Detail</td><td>Show detail for cab1</td></tr>
<tr><td><code>?q=kb</code></td><td>Knowledge Base</td><td>List KB entries</td></tr>
<tr><td><code>?q=kb/new</code></td><td>KB</td><td>Create new KB entry</td></tr>
<tr><td><code>?q=kb/view/123</code></td><td>KB</td><td>View KB entry #123</td></tr>
<tr><td><code>?q=reports/rpt</code></td><td>Reports</td><td>Run a report</td></tr>
<tr><td><code>?q=reports/sql</code></td><td>Reports</td><td>SQL query interface</td></tr>
<tr><td><code>?q=db/grid/ko_center/leds</code></td><td>Grid</td><td>Grid view of leds table</td></tr>
<tr><td><code>?q=hw</code></td><td>Hardware</td><td>Hardware inventory</td></tr>
<tr><td><code>?q=hw/cab1</code></td><td>Hardware</td><td>Hardware for cab1</td></tr>
<tr><td><code>?q=trigger</code></td><td>Trigger</td><td>Broadcast refresh signal</td></tr>
<tr><td><code>?q=login</code></td><td>Login</td><td>Login form</td></tr>
<tr><td><code>?q=logout</code></td><td>Logout</td><td>End session</td></tr>
<tr><td><code>?q=config</code></td><td>Config</td><td>System configuration</td></tr>
<tr><td><code>?q=zoom/code/type/rowid</code></td><td>Zoom</td><td>Zoom viewer with hotspot</td></tr>
<tr><td><code>?q=zview/file/xml</code></td><td>ZView</td><td>Full-screen zoom view</td></tr>
<tr><td><code>?q=ptviewer</code></td><td>PTViewer</td><td>Panorama viewer</td></tr>
<tr><td><code>?q=ptobject</code></td><td>PTObject</td><td>Panorama object</td></tr>
<tr><td><code>?q=about</code></td><td>About</td><td>About page</td></tr>
<tr><td><code>?q=konet</code></td><td>Konet</td><td>Contact information</td></tr>
<tr><td><code>?q=form_request_access</code></td><td>Access</td><td>Request access form</td></tr>
</table>

<!-- ================================================================== -->
<h2 id="leds">5. LED Display System</h2>
<!-- ================================================================== -->

<p>The LED display system is the core visual component of ko_center. Each
LED record represents a monitored item with configurable visual properties.</p>

<h3>LED Record Fields</h3>
<table>
<tr><th>Field</th><th>Description</th></tr>
<tr><td><code>led_id</code></td><td>Unique identifier (auto-increment)</td></tr>
<tr><td><code>led_status</code></td><td>Current status (active/inactive)</td></tr>
<tr><td><code>led_code</code></td><td>Short code identifier</td></tr>
<tr><td><code>led_name</code></td><td>Display name of the LED</td></tr>
<tr><td><code>led_dttm</code></td><td>Timestamp marker ("current" for active records)</td></tr>
<tr><td><code>led_color</code></td><td>Indicator color (red, yellow, blue, green, pink, orange, black, white, trans)</td></tr>
<tr><td><code>led_speed</code></td><td>Blink speed (0-3: no blink, slow, medium, fast)</td></tr>
<tr><td><code>led_type</code></td><td>LED type: <code>manual</code>, <code>date</code>, <code>cmd</code>, <code>null</code></td></tr>
<tr><td><code>led_date</code></td><td>Date value (used with date-type LEDs)</td></tr>
<tr><td><code>led_cmd</code></td><td>Shell command to execute (used with cmd-type LEDs)</td></tr>
<tr><td><code>led_cmdout</code></td><td>Command output</td></tr>
<tr><td><code>led_desc</code></td><td>Description text</td></tr>
<tr><td><code>led_misc</code></td><td>Miscellaneous data</td></tr>
<tr><td><code>led_city</code></td><td>Location: city</td></tr>
<tr><td><code>led_bldg</code></td><td>Location: building</td></tr>
<tr><td><code>led_loc_code</code></td><td>Location code</td></tr>
<tr><td><code>led_floor</code></td><td>Location: floor</td></tr>
<tr><td><code>led_group</code></td><td>Group assignment</td></tr>
<tr><td><code>led_orgs</code></td><td>Organization assignment</td></tr>
<tr><td><code>led_title</code></td><td>Title/label</td></tr>
<tr><td><code>led_published</code></td><td>Published flag (1/0)</td></tr>
<tr><td><code>led_width</code></td><td>Display width</td></tr>
<tr><td><code>led_height</code></td><td>Display height</td></tr>
<tr><td><code>led_comment</code></td><td>User comment</td></tr>
<tr><td><code>led_filename</code></td><td>Associated file name</td></tr>
<tr><td><code>led_user</code></td><td>User who created/modified</td></tr>
<tr><td><code>led_user_ip</code></td><td>IP address of user</td></tr>
<tr><td><code>led_referer</code></td><td>HTTP referer</td></tr>
<tr><td><code>led_remote_port</code></td><td>Remote port number</td></tr>
<tr><td><code>led_viewrole</code></td><td>Role required to view</td></tr>
<tr><td><code>led_user_agent</code></td><td>Browser user agent string</td></tr>
<tr><td><code>led_unique_id</code></td><td>Unique identifier string</td></tr>
<tr><td><code>led_err</code></td><td>Error flag</td></tr>
<tr><td><code>led_fix</code></td><td>Fix status</td></tr>
<tr><td><code>led_os</code></td><td>Operating system</td></tr>
</table>

<h3>LED Types</h3>
<table>
<tr><th>Type</th><th>Behavior</th></tr>
<tr><td><code>manual</code></td><td>Static indicator with configurable color and blink speed</td></tr>
<tr><td><code>date</code></td><td>Calculates days from a target date; color and speed change based on proximity</td></tr>
<tr><td><code>cmd</code></td><td>Executes a shell command; shows green if command succeeds, red if it fails</td></tr>
<tr><td><code>null</code></td><td>Shows a null/blank indicator</td></tr>
</table>

<h3>LED Blinking</h3>
<p>LEDs use animated GIF files for blinking effects. The GIF filename is
constructed from the color and speed:</p>
<pre>ani_<em>color</em><em>speed</em>.gif</pre>
<p>Example: <code>ani_red1.gif</code> (red, slow blink)</p>

<h3>LED Detail View</h3>
<p>Clicking an LED name navigates to the detail view (<code>?q=detail/&lt;name&gt;</code>),
which shows associated hardware items, images, and metadata.</p>

<!-- ================================================================== -->
<h2 id="grids">6. Database Grid Views</h2>
<!-- ================================================================== -->

<p>The grid system provides sortable, filterable table views of any database
table. It supports pagination, column sorting, and inline editing.</p>

<h3>Accessing Grid Views</h3>
<pre>ko_center.php?q=db/grid/&lt;dbcode&gt;/&lt;table&gt;</pre>

<p>Or use the shortcut:</p>
<pre>ko_center.php?q=grid?dbcode=&lt;dbcode&gt;&amp;table=&lt;table&gt;</pre>

<h3>Grid Features</h3>
<ul>
  <li><strong>Column sorting</strong> — click column headers to sort</li>
  <li><strong>Pagination</strong> — navigate through large result sets</li>
  <li><strong>Search/filter</strong> — filter rows by column values</li>
  <li><strong>XML/CSV export</strong> — export grid data in multiple formats</li>
  <li><strong>Inline editing</strong> — edit cell values directly in the grid</li>
</ul>

<h3>Supported Database Tables</h3>
<p>The system supports multiple database files with role-based access:</p>
<ul>
  <li><code>ko_center.db3</code> — Main center database (leds, randomus, ko_plans, ko_hw, etc.)</li>
  <li><code>koaac_kb.db3</code> — Knowledge Base database</li>
  <li><code>ko_center_certs.db3</code> — Certificates database</li>
</ul>

<!-- ================================================================== -->
<h2 id="reports">7. Reports</h2>
<!-- ================================================================== -->

<p>The reports system provides three types of report views:</p>

<h3>SQL Report</h3>
<p>Run custom SQL queries against the database and view results in a table.</p>
<pre>ko_center.php?q=reports/sql</pre>

<h3>CSV Report</h3>
<p>Export query results as CSV files for spreadsheet processing.</p>
<pre>ko_center.php?q=reports/rpt/&lt;rptcode&gt;&amp;fmt=header_csv</pre>

<h3>XML Report</h3>
<p>Export query results as XML for programmatic consumption.</p>
<pre>ko_center.php?q=kb/rpts/rpt_id&amp;fmt=xml</pre>

<h3>Report Types</h3>
<table>
<tr><th>Report</th><th>URL</th><th>Description</th></tr>
<tr><td>LED Reports</td><td><code>?q=leds/rpts</code></td><td>LED status and configuration reports</td></tr>
<tr><td>KB Reports</td><td><code>?q=kb/rpts</code></td><td>Knowledge Base article reports</td></tr>
<tr><td>Datacenter Reports</td><td><code>?q=dc/rpts</code></td><td>Datacenter infrastructure reports</td></tr>
<tr><td>Certificate Reports</td><td><code>?q=certs/rpts</code></td><td>Certificate status reports</td></tr>
<tr><td>Console Reports</td><td><code>?q=cons/rpts</code></td><td>Console/log reports</td></tr>
<tr><td>Host Reports</td><td><code>?q=hosts/rpts</code></td><td>Host inventory reports</td></tr>
<tr><td>ko_centerd Reports</td><td><code>?q=ko_centerd/rpts</code></td><td>ko_center daemon reports</td></tr>
<tr><td>Node Reports</td><td><code>?q=nodes/rpts</code></td><td>Node/network reports</td></tr>
</table>

<!-- ================================================================== -->
<h2 id="kb">8. Knowledge Base</h2>
<!-- ================================================================== -->

<p>The Knowledge Base (KB) system allows users to create, view, and manage
articles. KB entries are stored in the <code>koaac_kb</code> table in the
<code>ko_center.db3</code> database.</p>

<h3>KB Table Schema</h3>
<table>
<tr><th>Field</th><th>Type</th><th>Description</th></tr>
<tr><td><code>kb_id</code></td><td>INTEGER PK</td><td>Auto-increment primary key</td></tr>
<tr><td><code>kb_title</code></td><td>VARCHAR</td><td>Article title</td></tr>
<tr><td><code>kb_body</code></td><td>TEXT</td><td>Article content</td></tr>
<tr><td><code>kb_dttm</code></td><td>VARCHAR</td><td>Timestamp</td></tr>
<tr><td><code>kb_user</code></td><td>VARCHAR</td><td>Author username</td></tr>
<tr><td><code>kb_type</code></td><td>VARCHAR</td><td>Article type/category</td></tr>
</table>

<h3>KB Actions</h3>
<ul>
  <li><strong>List</strong> — <code>?q=kb</code> — View all KB entries</li>
  <li><strong>New</strong> — <code>?q=kb/new</code> — Create a new article</li>
  <li><strong>View</strong> — <code>?q=kb/view/&lt;id&gt;</code> — Read an article</li>
  <li><strong>Modify</strong> — <code>?q=kb/mod/&lt;id&gt;</code> — Edit an article</li>
  <li><strong>Reports</strong> — <code>?q=kb/rpts</code> — View KB reports</li>
</ul>

<!-- ================================================================== -->
<h2 id="certs">9. Certificates</h2>
<!-- ================================================================== -->

<p>The certificate management system allows viewing and managing digital
certificates stored in the <code>ko_center_certs.db3</code> database.</p>

<h3>Certificate Actions</h3>
<ul>
  <li><strong>List</strong> — <code>?q=certs</code> — View all certificates</li>
  <li><strong>View</strong> — <code>?q=certs/view/&lt;code&gt;</code> — View certificate details</li>
  <li><strong>Reports</strong> — <code>?q=certs/rpts</code> — Certificate status reports</li>
</ul>

<!-- ================================================================== -->
<h2 id="nodes">10. Nodes / Hosts</h2>
<!-- ================================================================== -->

<p>The node management system tracks network nodes and hosts. Nodes are
displayed with their status, location, and associated metadata.</p>

<h3>Node Actions</h3>
<ul>
  <li><strong>List</strong> — <code>?q=nodes</code> — View all nodes</li>
  <li><strong>Reports</strong> — <code>?q=nodes/rpts</code> — Node reports</li>
</ul>

<!-- ================================================================== -->
<h2 id="hw">11. Hardware Inventory</h2>
<!-- ================================================================== -->

<p>The hardware inventory system tracks physical equipment with details such
as model, serial number, IP address, HRC tag, and associated cabinet/location.</p>

<h3>Hardware Actions</h3>
<ul>
  <li><strong>List</strong> — <code>?q=hw</code> — View all hardware</li>
  <li><strong>Filter</strong> — <code>?q=hw&amp;cab=cab1</code> — Filter by cabinet</li>
  <li><strong>Filter</strong> — <code>?q=hw&amp;item=item1</code> — Filter by item</li>
  <li><strong>Filter</strong> — <code>?q=hw&amp;sn=SN123</code> — Filter by serial number</li>
  <li><strong>Filter</strong> — <code>?q=hw&amp;ip=10.0.0.1</code> — Filter by IP address</li>
  <li><strong>Filter</strong> — <code>?q=hw&amp;hrctag=TAG123</code> — Filter by HRC tag</li>
</ul>

<!-- ================================================================== -->
<h2 id="plans">12. Plans</h2>
<!-- ================================================================== -->

<p>The plans system tracks project plans with steps, items, and status
tracking.</p>

<h3>Plan Actions</h3>
<ul>
  <li><strong>List</strong> — <code>?q=plans</code> — View all plans</li>
  <li><strong>View</strong> — <code>?q=plans/view</code> — View plan details</li>
  <li><strong>Steps</strong> — <code>?q=plans/steps</code> — View plan steps</li>
  <li><strong>Items</strong> — <code>?q=plans/items</code> — View plan items</li>
  <li><strong>Reports</strong> — <code>?q=plans/reports</code> — Plan reports</li>
</ul>

<!-- ================================================================== -->
<h2 id="tools">13. Tools</h2>
<!-- ================================================================== -->

<p>The tools section provides access to various system utilities:</p>

<h3>Scrub</h3>
<p>Data cleanup and maintenance tool.</p>
<pre>ko_center.php?q=scrub</pre>

<h3>Upload</h3>
<p>File upload utility for KB attachments and other files.</p>
<pre>ko_center.php?q=upload</pre>

<h3>Zoom Viewer</h3>
<p>Interactive zoomable image viewer with hotspot navigation.</p>
<pre>ko_center.php?q=zoom/&lt;code&gt;/&lt;type&gt;/&lt;rowid&gt;</pre>

<h3>ZView</h3>
<p>Full-screen zoom view with XML-based hotspot configuration.</p>
<pre>ko_center.php?q=zview/&lt;file&gt;/&lt;xml&gt;</pre>

<h3>PTViewer</h3>
<p>Panorama/tour viewer for 360-degree images.</p>
<pre>ko_center.php?q=ptviewer</pre>

<h3>PTObject</h3>
<p>Individual panorama object viewer.</p>
<pre>ko_center.php?q=ptobject</pre>

<!-- ================================================================== -->
<h2 id="trigger">14. Trigger / Auto-Refresh</h2>
<!-- ================================================================== -->

<p>The trigger system allows one browser to signal all other browsers to
refresh their views. This is useful when one user makes a change that
should be immediately visible to all other users.</p>

<h3>How It Works</h3>
<ol>
  <li>Browser A is viewing the ko_center dashboard</li>
  <li>Browser B (or any client) calls <code>ko_center.php?q=trigger</code></li>
  <li>The trigger endpoint writes a timestamp to
    <code>ko_trigger.dat</code></li>
  <li>Browser A's JavaScript polling detects the new timestamp</li>
  <li>Browser A automatically reloads the page</li>
</ol>

<h3>Trigger Endpoint</h3>
<pre>ko_center.php?q=trigger</pre>

<p>The endpoint accepts an optional <code>last_check</code> parameter:</p>
<pre>ko_center.php?q=trigger&amp;last_check=2026-08-01 07:00:00</pre>

<h3>Response Format</h3>
<pre>{
  "triggered": true,
  "timestamp": "2026-08-01 07:05:00",
  "since": "2026-08-01 07:00:00"
}</pre>

<h3>Client-Side Polling</h3>
<p>The client page includes JavaScript that polls the trigger endpoint every
few seconds. When a new trigger is detected, the browser automatically
reloads.</p>

<!-- ================================================================== -->
<h2 id="database">15. Database Schema</h2>
<!-- ================================================================== -->

<h3>Main Database: ko_center.db3</h3>
<p>Location: <code>/os/ai/io/ko_center.db3</code> (39.6 MB)</p>

<h3>Key Tables</h3>
<table>
<tr><th>Table</th><th>Description</th><th>Row Count</th></tr>
<tr><td><code>leds</code></td><td>LED indicator records</td><td>262</td></tr>
<tr><td><code>randomus</code></td><td>Random user data</td><td>101</td></tr>
<tr><td><code>leds_randomus</code></td><td>Combined LED + randomus data</td><td>101</td></tr>
<tr><td><code>ko_plans</code></td><td>Project plans</td><td>—</td></tr>
<tr><td><code>ko_hw</code></td><td>Hardware inventory</td><td>—</td></tr>
<tr><td><code>koaac_kb</code></td><td>Knowledge Base articles</td><td>—</td></tr>
<tr><td><code>nodes</code></td><td>Network nodes</td><td>—</td></tr>
<tr><td><code>roles</code></td><td>User roles</td><td>—</td></tr>
<tr><td><code>users</code></td><td>User accounts</td><td>—</td></tr>
<tr><td><code>cabs</code></td><td>Cabinet/rack data</td><td>—</td></tr>
<tr><td><code>hrc_datacenters_equipment</code></td><td>Datacenter equipment</td><td>—</td></tr>
<tr><td><code>defrag_plan</code></td><td>Defragmentation plans</td><td>—</td></tr>
<tr><td><code>periods</code></td><td>Time periods</td><td>—</td></tr>
<tr><td><code>rpts</code></td><td>Report definitions</td><td>—</td></tr>
<tr><td><code>cfg</code></td><td>Configuration settings</td><td>—</td></tr>
<tr><td><code>dbs</code></td><td>Database registry</td><td>—</td></tr>
<tr><td><code>menus</code></td><td>Menu definitions</td><td>—</td></tr>
<tr><td><code>fp</code></td><td>Floor plan data</td><td>—</td></tr>
<tr><td><code>grid</code></td><td>Grid configuration</td><td>—</td></tr>
<tr><td><code>us</code></td><td>User-specific data</td><td>—</td></tr>
<tr><td><code>n11</code></td><td>N11 monitoring data</td><td>—</td></tr>
<tr><td><code>pano</code></td><td>Panorama data</td><td>—</td></tr>
<tr><td><code>obj</code></td><td>Object data</td><td>—</td></tr>
<tr><td><code>zoom</code></td><td>Zoom configuration</td><td>—</td></tr>
<tr><td><code>zoomxml</code></td><td>Zoom XML data</td><td>—</td></tr>
<tr><td><code>shelves</code></td><td>Shelf data</td><td>—</td></tr>
<tr><td><code>hallo</code></td><td>Hallo data</td><td>—</td></tr>
<tr><td><code>halo</code></td><td>Halo data</td><td>—</td></tr>
<tr><td><code>nimbus</code></td><td>Nimbus data</td><td>—</td></tr>
<tr><td><code>aureole</code></td><td>Aureole data</td><td>—</td></tr>
<tr><td><code>leds_defaults</code></td><td>LED default settings</td><td>—</td></tr>
<tr><td><code>leds_racks</code></td><td>LED rack mappings</td><td>—</td></tr>
<tr><td><code>leds_randomus</code></td><td>Combined LED + randomus</td><td>101</td></tr>
</table>

<h3>leds_randomus Table</h3>
<p>The <code>leds_randomus</code> table combines the schema of the
<code>leds</code> table (all columns, with LED fields blank/NULL) with all
columns from the <code>randomus</code> table. It contains only records from
the <code>randomus</code> table (101 rows).</p>

<p><strong>Creation script:</strong> <code>/os/ai/io/new_leds.py</code></p>

<!-- ================================================================== -->
<h2 id="files">16. Key Files</h2>
<!-- ================================================================== -->

<table>
<tr><th>File</th><th>Description</th></tr>
<tr><td><code>/os/ai/io/ko_center.php</code></td><td>Main application (PHP, 16,322 lines, 205 functions)</td></tr>
<tr><td><code>/os/ai/io/ko_center.db3</code></td><td>SQLite database (39.6 MB)</td></tr>
<tr><td><code>/os/ai/io/ko_center.py</code></td><td>Python Flask equivalent of ko_center.php</td></tr>
<tr><td><code>/os/ai/io/new_leds.py</code></td><td>Script to create leds_randomus from leds + randomus</td></tr>
<tr><td><code>/os/ai/io/new_leds_tbl.py</code></td><td>Generalized script to create leds_&lt;tbl2&gt; from leds + any table</td></tr>
<tr><td><code>/os/ai/io/cr_leds.py</code></td><td>Script to create blinking LED GIF images</td></tr>
<tr><td><code>/os/ai/io/response_trigger_plan.txt</code></td><td>Trigger mechanism design document</td></tr>
<tr><td><code>/os/ai/io/prompt_php_trigger.txt</code></td><td>Original prompt for trigger feature</td></tr>
<tr><td><code>/os/ai/io/prompt_cr_icons.txt</code></td><td>Original prompt for LED GIF creation</td></tr>
<tr><td><code>/os/ai/io/prompt_sql3_leds_randomus.txt</code></td><td>Original prompt for leds_randomus table</td></tr>
<tr><td><code>/os/ai/io/ko_center.html</code></td><td>This user documentation file</td></tr>
<tr><td><code>/os/ai/io/ko_trigger.dat</code></td><td>Trigger timestamp file (created at runtime)</td></tr>
<tr><td><code>/os/ai/io/../safer/hosts.allow</code></td><td>Authentication/authorization file</td></tr>
<tr><td><code>/os/ai/io/ko_center/kb/</code></td><td>Knowledge Base file storage directory</td></tr>
<tr><td><code>/os/ai/io/ko_center/db3/</code></td><td>Database files directory</td></tr>
<tr><td><code>/os/ai/io/images/btn/</code></td><td>Button image assets</td></tr>
<tr><td><code>/os/ai/io/images/ani/</code></td><td>Animated LED GIF images</td></tr>
<tr><td><code>/os/ai/io/images/fpb/</code></td><td>Floor plan button images</td></tr>
</table>

<!-- ================================================================== -->
<h2>Appendix A: Python ko_center.py</h2>
<!-- ================================================================== -->

<p>A Python Flask equivalent of ko_center.php has been created at
<code>/os/ai/io/ko_center.py</code>. It provides the same core functionality:</p>

<ul>
  <li>Flask-based web server (replaces PHP built-in server)</li>
  <li>Same <code>?q=</code> URL routing</li>
  <li>SQLite database access via Python <code>sqlite3</code> module</li>
  <li>Same HTML generation for all major views</li>
  <li>LED display, grid views, reports, KB, certs, nodes, HW, plans</li>
  <li>Login/logout session management</li>
  <li>Trigger endpoint (<code>?q=trigger</code>)</li>
  <li>Database table creation utilities</li>
</ul>

<p><strong>Running the Python version:</strong></p>
<pre>python3 /os/ai/io/ko_center.py</pre>
<p>Then browse to <code>http://localhost:5000</code></p>

<!-- ================================================================== -->
<h2>Appendix B: LED GIF Creation</h2>
<!-- ================================================================== -->

<p>The <code>cr_leds.py</code> script generates blinking LED GIF images using
ImageMagick. For each color (red, yellow, blue, green, pink, orange, black,
white, transparent) and each speed (0=no blink, 1=slow, 2=medium, 3=fast),
it creates an animated GIF file.</p>

<p><strong>Usage:</strong></p>
<pre>python3 cr_leds.py &lt;static_image.png&gt; &lt;dynamic_image.png&gt;</pre>

<p><strong>Output files:</strong></p>
<pre>led_&lt;prefix&gt;_red_0.gif   (no blink)
led_&lt;prefix&gt;_red_1.gif   (slow blink)
led_&lt;prefix&gt;_red_2.gif   (medium blink)
led_&lt;prefix&gt;_red_3.gif   (fast blink)
led_&lt;prefix&gt;_yellow_0.gif
...
led_&lt;prefix&gt;_trans_3.gif</pre>

<p>There are 9 colors × 4 speeds = 36 GIF files per static image.</p>
<a href=ko_center_admin.html target=_blank>admin.html</a>
<br>
<a href=ko_center_sysadm.html target=_blank>sysadm.html</a>

</body>
</html>
//


koh5_pano



Your browser does not support the HTML5 canvas element.


Drag mouse to navigate.

Navigation





17.Aug.2010, Martin Wengenmayer