feat: Add Remote TeleBot Discovery & Configuration
- Add discovery API endpoints to TeleBot (probe, initialize, configure, status) - Add LivenessService for LittleShop connectivity monitoring with 5min shutdown - Add BotDiscoveryService to LittleShop for remote bot management - Add Admin UI: DiscoverRemote wizard, RepushConfig page, status badges - Add remote discovery fields to Bot model (RemoteAddress, RemotePort, etc.) - Add CheckRemoteStatus and RepushConfig controller actions - Update Index/Details views to show remote bot indicators - Shared secret authentication for discovery, BotKey for post-init 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
@@ -128,6 +128,77 @@
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@if (Model.IsRemote)
|
||||
{
|
||||
<div class="card mb-3 border-info">
|
||||
<div class="card-header bg-info text-white">
|
||||
<h5 class="mb-0"><i class="fas fa-satellite-dish"></i> Remote Connection</h5>
|
||||
</div>
|
||||
<div class="card-body">
|
||||
<dl class="row mb-0">
|
||||
<dt class="col-sm-4">Remote Address</dt>
|
||||
<dd class="col-sm-8"><code>@Model.RemoteAddress:@Model.RemotePort</code></dd>
|
||||
|
||||
<dt class="col-sm-4">Instance ID</dt>
|
||||
<dd class="col-sm-8"><code>@(Model.RemoteInstanceId ?? "N/A")</code></dd>
|
||||
|
||||
<dt class="col-sm-4">Discovery Status</dt>
|
||||
<dd class="col-sm-8">
|
||||
@switch (Model.DiscoveryStatus)
|
||||
{
|
||||
case "Configured":
|
||||
<span class="badge bg-success">@Model.DiscoveryStatus</span>
|
||||
break;
|
||||
case "Initialized":
|
||||
<span class="badge bg-info">@Model.DiscoveryStatus</span>
|
||||
break;
|
||||
case "Discovered":
|
||||
<span class="badge bg-warning">@Model.DiscoveryStatus</span>
|
||||
break;
|
||||
case "Offline":
|
||||
case "Error":
|
||||
<span class="badge bg-danger">@Model.DiscoveryStatus</span>
|
||||
break;
|
||||
default:
|
||||
<span class="badge bg-secondary">@Model.DiscoveryStatus</span>
|
||||
break;
|
||||
}
|
||||
</dd>
|
||||
|
||||
<dt class="col-sm-4">Last Discovery</dt>
|
||||
<dd class="col-sm-8">
|
||||
@if (Model.LastDiscoveryAt.HasValue)
|
||||
{
|
||||
@Model.LastDiscoveryAt.Value.ToString("yyyy-MM-dd HH:mm:ss")
|
||||
}
|
||||
else
|
||||
{
|
||||
<span class="text-muted">Never</span>
|
||||
}
|
||||
</dd>
|
||||
</dl>
|
||||
|
||||
<hr />
|
||||
|
||||
<div class="d-flex gap-2">
|
||||
<form asp-area="Admin" asp-controller="Bots" asp-action="CheckRemoteStatus" asp-route-id="@Model.Id" method="post" class="d-inline">
|
||||
@Html.AntiForgeryToken()
|
||||
<button type="submit" class="btn btn-sm btn-outline-info">
|
||||
<i class="fas fa-sync"></i> Check Status
|
||||
</button>
|
||||
</form>
|
||||
|
||||
@if (Model.DiscoveryStatus == "Initialized" || Model.DiscoveryStatus == "Configured")
|
||||
{
|
||||
<a href="/Admin/Bots/RepushConfig/@Model.Id" class="btn btn-sm btn-outline-warning">
|
||||
<i class="fas fa-upload"></i> Re-push Config
|
||||
</a>
|
||||
}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
}
|
||||
|
||||
<div class="card mb-3">
|
||||
<div class="card-header">
|
||||
<h5 class="mb-0">30-Day Metrics Summary</h5>
|
||||
|
||||
Reference in New Issue
Block a user