Compare commits

..

No commits in common. "4f13ac9bcdfd908bc48e93ac2cc6be7e0669334a" and "53822731f81261c31d984c6ba2638a68fcb5a4a0" have entirely different histories.

58 changed files with 883 additions and 70 deletions

3
.gitignore vendored
View file

@ -28,8 +28,7 @@ docs/book
# Installers (keep gitkeep)
botserver-installers/*
!botserver-installers/.gitkeep
botserver-stack
TODO*
# IDE/Editor settings (local only)
.vscode/
.zed/

View file

@ -43,65 +43,6 @@ END LOOP
---
## 🧠 MEMORY MANAGEMENT - KILL PROCESSES BEFORE COMPILE
When compilation fails due to memory issues (process "Killed"), run this cleanup FIRST:
```bash
pkill -9 cargo; pkill -9 rustc; pkill -9 botserver
```
Then retry compilation with reduced parallelism:
```bash
CARGO_BUILD_JOBS=1 cargo check -p botserver 2>&1 | tail -200
```
**Signs of memory issues:**
- Process output shows only "Killed"
- Compilation hangs then terminates
- No error messages, just killed
**Always kill stale processes before retrying compilation after memory issues.**
---
## 📏 FILE SIZE LIMITS - MANDATORY
### Maximum 1000 Lines Per File
All `.rs` and `.js` files MUST NOT exceed 1000 lines. When a file grows beyond this limit:
1. **Identify logical groups** - Find related functions that can be separated
2. **Create subdirectory module** - e.g., `handlers/` with multiple files
3. **Split by responsibility**:
- `crud.rs` - Create, Read, Update, Delete operations
- `ai.rs` - AI/ML related handlers
- `export.rs` - Export/import functionality
- `validation.rs` - Validation and comments
- `advanced.rs` - Advanced features
- `mod.rs` - Re-exports all public items
4. **Keep files focused** - Each file should have a single responsibility
5. **Update mod.rs** - Ensure all public items are re-exported
```
# Example structure for large handler files:
module/
├── handlers/
│ ├── mod.rs (re-exports)
│ ├── crud.rs (~300 lines)
│ ├── ai.rs (~100 lines)
│ ├── export.rs (~200 lines)
│ └── advanced.rs (~400 lines)
├── types.rs
├── storage.rs
└── mod.rs
```
**NEVER let a single file exceed 1000 lines - split proactively at 800 lines**
---
## 🔐 SECURITY DIRECTIVES - MANDATORY FOR ALL NEW CODE
### Error Handling - NO PANICS IN PRODUCTION

453
TODO-SECURITY-PROTECTION.md Normal file
View file

@ -0,0 +1,453 @@
# Security Protection Module - Implementation TODO
**Version:** 1.0.0
**Created:** 2025
**Status:** In Progress
---
## Overview
Implement a comprehensive Security Protection module that allows administrators to manage Linux server security tools (Lynis, RKHunter, Chkrootkit, Suricata, LMD, ClamAV) through the General Bots UI.
---
## Architecture
```
┌─────────────────────────────────────────────────────────────────┐
│ botui (Port 3000) │
│ ┌─────────────────────────────────────────────────────────────┐│
│ │ /suite/tools/security.html ││
│ │ ├── Tab: API Compliance Report (existing code_scanner) ││
│ │ └── Tab: Protection (NEW - security tools management) ││
│ └─────────────────────────────────────────────────────────────┘│
│ │ │
│ ▼ HTMX/API calls │
└──────────────────────────────┼───────────────────────────────────┘
┌──────────────────────────────┼───────────────────────────────────┐
│ botserver (Port 8088) │
│ ┌─────────────────────────────────────────────────────────────┐│
│ │ src/security/protection/ ││
│ │ ├── mod.rs # Module exports ││
│ │ ├── manager.rs # ProtectionManager orchestrator ││
│ │ ├── api.rs # Axum API routes ││
│ │ ├── lynis.rs # Lynis integration ││
│ │ ├── rkhunter.rs # RKHunter integration ││
│ │ ├── chkrootkit.rs # Chkrootkit integration ││
│ │ ├── suricata.rs # Suricata IDS/IPS integration ││
│ │ ├── lmd.rs # Linux Malware Detect integration ││
│ │ └── clamav.rs # ClamAV integration (extend existing)││
│ └─────────────────────────────────────────────────────────────┘│
└─────────────────────────────────────────────────────────────────┘
```
---
## Phase 1: Backend Infrastructure (botserver)
### 1.1 Create Protection Module Structure ✅ DONE
**File:** `botserver/src/security/protection/mod.rs`
```rust
pub mod api;
pub mod manager;
pub mod lynis;
pub mod rkhunter;
pub mod chkrootkit;
pub mod suricata;
pub mod lmd;
pub use manager::ProtectionManager;
pub use api::configure_protection_routes;
```
### 1.2 Protection Manager ✅ DONE
**File:** `botserver/src/security/protection/manager.rs`
Responsibilities:
- [x] Track installed tools and their status
- [x] Coordinate tool installation via package manager
- [x] Execute scans using SafeCommand
- [x] Parse and store scan results
- [x] Manage service start/stop/enable/disable
- [x] Handle auto-update scheduling
Key structs:
```rust
pub struct ProtectionManager {
tools: HashMap<ProtectionTool, ToolStatus>,
config: ProtectionConfig,
}
pub enum ProtectionTool {
Lynis,
RKHunter,
Chkrootkit,
Suricata,
LMD,
ClamAV,
}
pub struct ToolStatus {
pub installed: bool,
pub version: Option<String>,
pub service_running: bool,
pub last_scan: Option<DateTime<Utc>>,
pub last_update: Option<DateTime<Utc>>,
pub auto_update: bool,
pub auto_remediate: bool,
}
```
### 1.3 Individual Tool Integrations ✅ DONE
#### Lynis (`lynis.rs`) ✅
- [x] Check installation: `which lynis`
- [x] Install: `apt install lynis` / `yum install lynis`
- [x] Run audit: `lynis audit system --quick`
- [x] Parse report: `/var/log/lynis-report.dat`
- [x] Auto-remediation: Apply suggested fixes (partial)
- [x] Extract hardening index score
#### RKHunter (`rkhunter.rs`) ✅
- [x] Check installation: `which rkhunter`
- [x] Install: `apt install rkhunter`
- [x] Update database: `rkhunter --update`
- [x] Run scan: `rkhunter --check --skip-keypress`
- [x] Parse log: `/var/log/rkhunter.log`
#### Chkrootkit (`chkrootkit.rs`) ✅
- [x] Check installation: `which chkrootkit`
- [x] Install: `apt install chkrootkit`
- [x] Run scan: `chkrootkit -q`
- [x] Parse output for INFECTED markers
#### Suricata (`suricata.rs`) ✅
- [x] Check installation: `which suricata`
- [x] Install: `apt install suricata`
- [x] Service management: `systemctl start/stop/enable suricata`
- [x] Update rules: `suricata-update`
- [x] Parse alerts: `/var/log/suricata/eve.json`
- [x] Get rule count from config
#### LMD (`lmd.rs`) ✅
- [x] Check installation: `which maldet`
- [x] Install: Download from rfxn.com, run installer
- [x] Update signatures: `maldet --update-sigs`
- [x] Run scan: `maldet -a /path`
- [x] Parse report: `/usr/local/maldetect/logs/`
#### ClamAV (extend `antivirus.rs`)
- [x] Already partially implemented
- [ ] Add service management (clamd daemon) - use existing antivirus.rs
- [ ] Add freshclam update status - use existing antivirus.rs
- [ ] Add quarantine management - use existing antivirus.rs
### 1.4 API Routes ✅ DONE
**File:** `botserver/src/security/protection/api.rs`
```rust
pub fn configure_protection_routes() -> Router {
Router::new()
// Status endpoints
.route("/api/v1/security/protection/status", get(get_all_status))
.route("/api/v1/security/protection/:tool/status", get(get_tool_status))
// Installation
.route("/api/v1/security/protection/:tool/install", post(install_tool))
.route("/api/v1/security/protection/:tool/uninstall", post(uninstall_tool))
// Service management
.route("/api/v1/security/protection/:tool/start", post(start_service))
.route("/api/v1/security/protection/:tool/stop", post(stop_service))
.route("/api/v1/security/protection/:tool/enable", post(enable_service))
.route("/api/v1/security/protection/:tool/disable", post(disable_service))
// Scanning
.route("/api/v1/security/protection/:tool/run", post(run_scan))
.route("/api/v1/security/protection/:tool/report", get(get_report))
// Updates
.route("/api/v1/security/protection/:tool/update", post(update_definitions))
// Auto settings
.route("/api/v1/security/protection/:tool/auto", post(toggle_auto))
// ClamAV specific
.route("/api/v1/security/protection/clamav/quarantine", get(get_quarantine))
.route("/api/v1/security/protection/clamav/quarantine/:id", delete(remove_from_quarantine))
}
```
### 1.5 Update security/mod.rs ✅ DONE
Add to `botserver/src/security/mod.rs`:
```rust
pub mod protection;
pub use protection::{ProtectionManager, configure_protection_routes};
```
### 1.6 Register Routes in Main
Update `botserver/src/main.rs` to include:
```rust
.merge(security::configure_protection_routes())
```
### 1.7 Update command_guard.rs ✅ DONE
Added security tools to allowed commands whitelist:
- lynis
- rkhunter
- chkrootkit
- suricata
- suricata-update
- maldet
- systemctl
---
## Phase 2: Frontend Updates (botui)
### 2.1 Security Page ✅ DONE
**File:** `botui/ui/suite/tools/security.html`
- [x] Created with two tabs: API Compliance Report, Protection
- [x] Protection tab shows cards for all 6 tools
- [x] Each card has: status, version, last scan, actions
- [x] Actions: Install/Run/Start/Stop/View Report/Update
- [x] Toggle for auto-update/auto-remediate
### 2.2 Navigation Updates ✅ DONE
- [x] Updated `home.html` - Changed Compliance to Security
- [x] Updated `index.html` - Changed navigation link
- [x] Updated `css/home.css` - Changed .app-icon.compliance to .app-icon.security
- [x] Created `assets/icons/gb-security.svg`
### 2.3 Report Modal ✅ DONE
- [x] Modal for viewing scan reports (already in security.html)
- [ ] Add syntax highlighting for report output
- [ ] Add export functionality
---
## Phase 3: Documentation (botbook)
### 3.1 Create Protection Documentation
**File:** `botbook/src/23-security/protection-tools.md`
Contents:
- [ ] Overview of protection tools
- [ ] Installation requirements
- [ ] Configuration options
- [ ] API reference
- [ ] Troubleshooting guide
### 3.2 Update SUMMARY.md
Add entry for protection-tools.md in the Security section.
---
## Phase 4: BASIC/ETL Integration (botlib)
### 4.1 Add BASIC Keywords
**File:** `botlib/src/basic/keywords.rs` (or equivalent)
New keywords to add:
```basic
' Security tool management
INSTALL SECURITY TOOL "lynis"
UNINSTALL SECURITY TOOL "rkhunter"
START SECURITY SERVICE "suricata"
STOP SECURITY SERVICE "clamav"
RUN SECURITY SCAN "lynis"
GET SECURITY REPORT "rkhunter" INTO report
UPDATE SECURITY DEFINITIONS "clamav"
' Conditional checks
IF SECURITY TOOL "lynis" IS INSTALLED THEN
IF SECURITY SERVICE "suricata" IS RUNNING THEN
```
### 4.2 ETL Functions
Add ETL functions for security automation:
- [ ] `security_tool_status(tool_name)` - Returns tool status
- [ ] `security_run_scan(tool_name, options)` - Runs scan
- [ ] `security_get_report(tool_name)` - Gets latest report
- [ ] `security_hardening_score()` - Gets Lynis hardening index
---
## Phase 5: Testing
### 5.1 Unit Tests
**File:** `botserver/src/security/protection/tests.rs`
- [ ] Test tool detection
- [ ] Test status parsing
- [ ] Test report parsing
- [ ] Test command generation
### 5.2 Integration Tests
**File:** `bottest/tests/security_protection.rs`
- [ ] Test full install flow (mock)
- [ ] Test scan execution (mock)
- [ ] Test API endpoints
---
## Security Considerations
### Command Execution
All tool commands MUST use `SafeCommand`:
```rust
use crate::security::command_guard::SafeCommand;
SafeCommand::new("lynis")?
.arg("audit")?
.arg("system")?
.execute()
```
### Allowed Commands Whitelist
Update `command_guard.rs` to whitelist:
- `lynis`
- `rkhunter`
- `chkrootkit`
- `suricata`
- `suricata-update`
- `maldet`
- `clamscan`
- `freshclam`
- `systemctl` (with restrictions)
### Permission Requirements
- Tools require root/sudo for full functionality
- Consider using capabilities or dedicated service user
- Log all tool executions to audit log
---
## API Response Formats
### Status Response
```json
{
"tool": "lynis",
"installed": true,
"version": "3.0.9",
"service_running": null,
"last_scan": "2025-01-15T10:30:00Z",
"last_update": "2025-01-14T08:00:00Z",
"auto_update": true,
"auto_remediate": false,
"metrics": {
"hardening_index": 78,
"warnings": 12,
"suggestions": 45
}
}
```
### Scan Result Response
```json
{
"scan_id": "uuid",
"tool": "rkhunter",
"started_at": "2025-01-15T10:30:00Z",
"completed_at": "2025-01-15T10:35:00Z",
"status": "completed",
"result": "clean",
"findings": [],
"warnings": 0,
"report_path": "/var/log/rkhunter.log"
}
```
---
## File Checklist
### botserver/src/security/protection/
- [x] `mod.rs`
- [x] `manager.rs`
- [x] `api.rs`
- [x] `lynis.rs`
- [x] `rkhunter.rs`
- [x] `chkrootkit.rs`
- [x] `suricata.rs`
- [x] `lmd.rs`
- [ ] `tests.rs` (tests included in each module)
### botserver/src/security/
- [x] `mod.rs` - Updated with protection module exports ✅
- [x] `command_guard.rs` - Added security tools to whitelist ✅
### botui/ui/suite/tools/
- [x] `security.html`
### botbook/src/23-security/
- [ ] `protection-tools.md`
### botlib/
- [ ] Update BASIC keywords
- [ ] Add ETL functions
---
## Priority Order
1. ~~**HIGH** - Backend API structure (`api.rs`, `manager.rs`)~~ ✅ DONE
2. ~~**HIGH** - Lynis integration (most comprehensive)~~ ✅ DONE
3. **HIGH** - ClamAV extension (partially exists) - Wire up to existing antivirus.rs
4. ~~**MEDIUM** - RKHunter, Chkrootkit (simpler tools)~~ ✅ DONE
5. ~~**MEDIUM** - Suricata (service management)~~ ✅ DONE
6. ~~**MEDIUM** - LMD (malware detection)~~ ✅ DONE
7. **LOW** - Documentation
8. **LOW** - BASIC/ETL integration
9. **LOW** - Full test coverage
## Remaining Tasks
1. **Wire up ProtectionManager to AppState** - Add `protection_manager: Option<ProtectionManager>` to AppState
2. **Register routes in main.rs** - Add `.merge(security::configure_protection_routes())`
3. **Integration testing** - Test with actual tools installed
4. **Documentation** - Create botbook documentation
5. **BASIC keywords** - Add ETL functions for scripting
---
## Notes
- Follow PROMPT.md guidelines strictly
- No `#[allow()]` attributes
- No `.unwrap()` or `.expect()` in production code
- Use `SafeCommand` for all shell execution
- Sanitize all error messages before returning to client
- Log all operations to audit log

View file

2
botapp

@ -1 +1 @@
Subproject commit 07c57b43ff46da0b059eace00b7a64db107609d0
Subproject commit 879f94a2576a09d745b8728acdb02a42ec817c31

@ -1 +1 @@
Subproject commit d1120beb42b99faaa17d45a8310930cb327974b1
Subproject commit a7c8014aec3b0ac7dcc7562db73af1ed3d7187c4

2
botlib

@ -1 +1 @@
Subproject commit 628f853c855b7438990096e15b103f499df3c1a0
Subproject commit 49c7d3e751eafacd655ba232e331c5c40f60186f

@ -1 +1 @@
Subproject commit 216e34ec13edbeb8c3f834762af4416667fd2dab
Subproject commit f7690e1d811824d39151e953ea604868a80be532

@ -1 +1 @@
Subproject commit 9ab0d0ab94faac53a14ea7dcc4c1fb3d9af08972
Subproject commit f105928012a9a56993d8825e438c3a3f0eec7942

View file

@ -0,0 +1,11 @@
-----BEGIN CERTIFICATE-----
MIIBpDCCAUqgAwIBAgIUb/JxqKPVbZIOJUOHrRQG9+XGb2wwCgYIKoZIzj0EAwIw
ODELMAkGA1UEBgwCQlIxEjAQBgNVBAoMCUJvdFNlcnZlcjEVMBMGA1UEAwwMQm90
U2VydmVyIENBMB4XDTI2MDEwOTE0MzIyN1oXDTM2MDEwNzE0MzIyN1owODELMAkG
A1UEBgwCQlIxEjAQBgNVBAoMCUJvdFNlcnZlcjEVMBMGA1UEAwwMQm90U2VydmVy
IENBMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEf91iFmGt2MGESvNrMWq9hGCn
hxzYzc74iaLunNh6hVU5oP3jvg7q3g8rZOWUDOOGa4DGdwrdC7CvIIWcqj+zKaMy
MDAwHQYDVR0OBBYEFCjdDuxP8W2kfvArjBjB3DTasjOOMA8GA1UdEwEB/wQFMAMB
Af8wCgYIKoZIzj0EAwIDSAAwRQIgGZ8DZBa3S4d1R9i4H/cgxsJ5Chc4WjspO2cR
K2ZYhJICIQCovdi36+WpK8rPYWfnOpViddt7kjGmET06G1jNCaY8eA==
-----END CERTIFICATE-----

View file

@ -0,0 +1,5 @@
-----BEGIN EC PRIVATE KEY-----
MHcCAQEEIDEwVAlMJVNEO6Tq5YhFCHErtYnJnOXnV4CMEzfw4TbNoAoGCCqGSM49
AwEHoUQDQgAEjqzVL6nD2ty59fy75/NkGPvyYWFdcKBwvytPHSMeFK6rzN0KQ0sQ
WusB/ejQtfbwoLI32007+N1sZZ6WCd6K1w==
-----END EC PRIVATE KEY-----

View file

@ -0,0 +1,12 @@
-----BEGIN CERTIFICATE-----
MIIBsTCCAVagAwIBAgIUCCAJMWsnAtGqvpXvr+aEp4jjdXwwCgYIKoZIzj0EAwIw
ODELMAkGA1UEBgwCQlIxEjAQBgNVBAoMCUJvdFNlcnZlcjEVMBMGA1UEAwwMQm90
U2VydmVyIENBMB4XDTI2MDEwOTE0MzIyN1oXDTI3MDEwOTE0MzIyN1owQTELMAkG
A1UEBgwCQlIxEjAQBgNVBAoMCUJvdFNlcnZlcjEeMBwGA1UEAwwVZHJpdmUuYm90
c2VydmVyLmxvY2FsMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEjqzVL6nD2ty5
9fy75/NkGPvyYWFdcKBwvytPHSMeFK6rzN0KQ0sQWusB/ejQtfbwoLI32007+N1s
ZZ6WCd6K16M1MDMwMQYDVR0RBCowKIIJbG9jYWxob3N0hwR/AAABghVkcml2ZS5i
b3RzZXJ2ZXIubG9jYWwwCgYIKoZIzj0EAwIDSQAwRgIhAPaAQkiauh2NgOmfqgtx
Ivltu8S+rtbAzatuNdllZctHAiEAxe9LvBAGQoNy41aktHjHfAVBrVSZwUoHZ8L3
qw4drHo=
-----END CERTIFICATE-----

View file

@ -0,0 +1,11 @@
-----BEGIN CERTIFICATE-----
MIIBpDCCAUqgAwIBAgIUb/JxqKPVbZIOJUOHrRQG9+XGb2wwCgYIKoZIzj0EAwIw
ODELMAkGA1UEBgwCQlIxEjAQBgNVBAoMCUJvdFNlcnZlcjEVMBMGA1UEAwwMQm90
U2VydmVyIENBMB4XDTI2MDEwOTE0MzIyN1oXDTM2MDEwNzE0MzIyN1owODELMAkG
A1UEBgwCQlIxEjAQBgNVBAoMCUJvdFNlcnZlcjEVMBMGA1UEAwwMQm90U2VydmVy
IENBMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEf91iFmGt2MGESvNrMWq9hGCn
hxzYzc74iaLunNh6hVU5oP3jvg7q3g8rZOWUDOOGa4DGdwrdC7CvIIWcqj+zKaMy
MDAwHQYDVR0OBBYEFCjdDuxP8W2kfvArjBjB3DTasjOOMA8GA1UdEwEB/wQFMAMB
Af8wCgYIKoZIzj0EAwIDSAAwRQIgGZ8DZBa3S4d1R9i4H/cgxsJ5Chc4WjspO2cR
K2ZYhJICIQCovdi36+WpK8rPYWfnOpViddt7kjGmET06G1jNCaY8eA==
-----END CERTIFICATE-----

View file

@ -0,0 +1,11 @@
-----BEGIN CERTIFICATE-----
MIIBqzCCAVKgAwIBAgIUEBmttmYkjeLlfU1QeXDBy8+HmP0wCgYIKoZIzj0EAwIw
ODELMAkGA1UEBgwCQlIxEjAQBgNVBAoMCUJvdFNlcnZlcjEVMBMGA1UEAwwMQm90
U2VydmVyIENBMB4XDTI2MDEwOTE0MzIyN1oXDTI3MDEwOTE0MzIyN1owPzELMAkG
A1UEBgwCQlIxEjAQBgNVBAoMCUJvdFNlcnZlcjEcMBoGA1UEAwwTYXBpLmJvdHNl
cnZlci5sb2NhbDBZMBMGByqGSM49AgEGCCqGSM49AwEHA0IABD9E4Onao5JJ7aAV
/FxABbiG37H3Vtiet33+WkGmNTFQOjz9pz6PTIscgVl7rNGkCniyuNyUKAe3zyY6
iu3GWcCjMzAxMC8GA1UdEQQoMCaCCWxvY2FsaG9zdIcEfwAAAYITYXBpLmJvdHNl
cnZlci5sb2NhbDAKBggqhkjOPQQDAgNHADBEAiAI2SJcABgzkJoRIdYs5uAeaQeS
BKWX/jADXkputmR2awIgLhtL02FP9vNwin7b2J/XAzh2I6nKREKdyjzqbuST0Bo=
-----END CERTIFICATE-----

View file

@ -0,0 +1,5 @@
-----BEGIN PRIVATE KEY-----
MIGHAgEAMBMGByqGSM49AgEGCCqGSM49AwEHBG0wawIBAQQgi0umDCzes8MaDAgk
uAeFc2yw3BxEfR9l9fyiQL2UW0ChRANCAAQ/RODp2qOSSe2gFfxcQAW4ht+x91bY
nrd9/lpBpjUxUDo8/ac+j0yLHIFZe6zRpAp4srjclCgHt88mOortxlnA
-----END PRIVATE KEY-----

View file

@ -0,0 +1,11 @@
-----BEGIN CERTIFICATE-----
MIIBpDCCAUqgAwIBAgIUb/JxqKPVbZIOJUOHrRQG9+XGb2wwCgYIKoZIzj0EAwIw
ODELMAkGA1UEBgwCQlIxEjAQBgNVBAoMCUJvdFNlcnZlcjEVMBMGA1UEAwwMQm90
U2VydmVyIENBMB4XDTI2MDEwOTE0MzIyN1oXDTM2MDEwNzE0MzIyN1owODELMAkG
A1UEBgwCQlIxEjAQBgNVBAoMCUJvdFNlcnZlcjEVMBMGA1UEAwwMQm90U2VydmVy
IENBMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEf91iFmGt2MGESvNrMWq9hGCn
hxzYzc74iaLunNh6hVU5oP3jvg7q3g8rZOWUDOOGa4DGdwrdC7CvIIWcqj+zKaMy
MDAwHQYDVR0OBBYEFCjdDuxP8W2kfvArjBjB3DTasjOOMA8GA1UdEwEB/wQFMAMB
Af8wCgYIKoZIzj0EAwIDSAAwRQIgGZ8DZBa3S4d1R9i4H/cgxsJ5Chc4WjspO2cR
K2ZYhJICIQCovdi36+WpK8rPYWfnOpViddt7kjGmET06G1jNCaY8eA==
-----END CERTIFICATE-----

View file

@ -0,0 +1,11 @@
-----BEGIN CERTIFICATE-----
MIIBjTCCATSgAwIBAgIUXyYxQ+Moq8JTVZ4gYqK5L3FYOxswCgYIKoZIzj0EAwIw
ODELMAkGA1UEBgwCQlIxEjAQBgNVBAoMCUJvdFNlcnZlcjEVMBMGA1UEAwwMQm90
U2VydmVyIENBMB4XDTI2MDEwOTE0MzIyN1oXDTI3MDEwOTE0MzIyN1owPDELMAkG
A1UEBgwCQlIxEjAQBgNVBAoMCUJvdFNlcnZlcjEZMBcGA1UEAwwQYm90c2VydmVy
LWNsaWVudDBZMBMGByqGSM49AgEGCCqGSM49AwEHA0IABOWhAQBCpd78n0hvghc2
ehapOCGRAXzJpVlEpPc/OwNC30xHTx+gf6KxRYUKKvlUlMY73v+dYozX5yw/eaA9
cF6jGDAWMBQGA1UdEQQNMAuCCWJvdHNlcnZlcjAKBggqhkjOPQQDAgNHADBEAiAg
8QSmZuz8vJ+elGJED/iTm8grdgdyME+0/hoK8WCvMQIgYh4Vj8fjX8uRmckTmFhU
FB225+EI69nGeH9TtDoU+N4=
-----END CERTIFICATE-----

View file

@ -0,0 +1,5 @@
-----BEGIN PRIVATE KEY-----
MIGHAgEAMBMGByqGSM49AgEGCCqGSM49AwEHBG0wawIBAQQgBzk4BnAMub4NhGdP
M+uzhg1oikPjeeCq4NQxBWAYD32hRANCAATloQEAQqXe/J9Ib4IXNnoWqTghkQF8
yaVZRKT3PzsDQt9MR08foH+isUWFCir5VJTGO97/nWKM1+csP3mgPXBe
-----END PRIVATE KEY-----

View file

@ -0,0 +1,11 @@
-----BEGIN CERTIFICATE-----
MIIBpDCCAUqgAwIBAgIUb/JxqKPVbZIOJUOHrRQG9+XGb2wwCgYIKoZIzj0EAwIw
ODELMAkGA1UEBgwCQlIxEjAQBgNVBAoMCUJvdFNlcnZlcjEVMBMGA1UEAwwMQm90
U2VydmVyIENBMB4XDTI2MDEwOTE0MzIyN1oXDTM2MDEwNzE0MzIyN1owODELMAkG
A1UEBgwCQlIxEjAQBgNVBAoMCUJvdFNlcnZlcjEVMBMGA1UEAwwMQm90U2VydmVy
IENBMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEf91iFmGt2MGESvNrMWq9hGCn
hxzYzc74iaLunNh6hVU5oP3jvg7q3g8rZOWUDOOGa4DGdwrdC7CvIIWcqj+zKaMy
MDAwHQYDVR0OBBYEFCjdDuxP8W2kfvArjBjB3DTasjOOMA8GA1UdEwEB/wQFMAMB
Af8wCgYIKoZIzj0EAwIDSAAwRQIgGZ8DZBa3S4d1R9i4H/cgxsJ5Chc4WjspO2cR
K2ZYhJICIQCovdi36+WpK8rPYWfnOpViddt7kjGmET06G1jNCaY8eA==
-----END CERTIFICATE-----

View file

@ -0,0 +1,5 @@
-----BEGIN PRIVATE KEY-----
MIGHAgEAMBMGByqGSM49AgEGCCqGSM49AwEHBG0wawIBAQQgD7oHpHyAUlaAO0Hv
CZX/x2MHG0HyuoX3I0499CkBsHmhRANCAAR/3WIWYa3YwYRK82sxar2EYKeHHNjN
zviJou6c2HqFVTmg/eO+DureDytk5ZQM44ZrgMZ3Ct0LsK8ghZyqP7Mp
-----END PRIVATE KEY-----

View file

@ -0,0 +1,11 @@
-----BEGIN CERTIFICATE-----
MIIBpDCCAUqgAwIBAgIUb/JxqKPVbZIOJUOHrRQG9+XGb2wwCgYIKoZIzj0EAwIw
ODELMAkGA1UEBgwCQlIxEjAQBgNVBAoMCUJvdFNlcnZlcjEVMBMGA1UEAwwMQm90
U2VydmVyIENBMB4XDTI2MDEwOTE0MzIyN1oXDTM2MDEwNzE0MzIyN1owODELMAkG
A1UEBgwCQlIxEjAQBgNVBAoMCUJvdFNlcnZlcjEVMBMGA1UEAwwMQm90U2VydmVy
IENBMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEf91iFmGt2MGESvNrMWq9hGCn
hxzYzc74iaLunNh6hVU5oP3jvg7q3g8rZOWUDOOGa4DGdwrdC7CvIIWcqj+zKaMy
MDAwHQYDVR0OBBYEFCjdDuxP8W2kfvArjBjB3DTasjOOMA8GA1UdEwEB/wQFMAMB
Af8wCgYIKoZIzj0EAwIDSAAwRQIgGZ8DZBa3S4d1R9i4H/cgxsJ5Chc4WjspO2cR
K2ZYhJICIQCovdi36+WpK8rPYWfnOpViddt7kjGmET06G1jNCaY8eA==
-----END CERTIFICATE-----

View file

@ -0,0 +1,12 @@
-----BEGIN CERTIFICATE-----
MIIBsDCCAVagAwIBAgIUFK8kzVdER15ZiUQs8Liot83qUFgwCgYIKoZIzj0EAwIw
ODELMAkGA1UEBgwCQlIxEjAQBgNVBAoMCUJvdFNlcnZlcjEVMBMGA1UEAwwMQm90
U2VydmVyIENBMB4XDTI2MDEwOTE0MzIyN1oXDTI3MDEwOTE0MzIyN1owQTELMAkG
A1UEBgwCQlIxEjAQBgNVBAoMCUJvdFNlcnZlcjEeMBwGA1UEAwwVY2FjaGUuYm90
c2VydmVyLmxvY2FsMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEYFnVn8tKA4iL
2nCj5PTIXnrgbghrGgY3x0+hS3LcTXgz/4s53bpwrUcobEjs7nXS1VDqERdtJ4c4
EMo2VOf46qM1MDMwMQYDVR0RBCowKIIJbG9jYWxob3N0hwR/AAABghVjYWNoZS5i
b3RzZXJ2ZXIubG9jYWwwCgYIKoZIzj0EAwIDSAAwRQIhAIoEvORMPLOcbeQl5917
3tbdnllRqoSlpU3+tfcioOpiAiAkHs2dH1Q+JF30KHB7AMv3Ec+WPBqkxCOJlg1y
9lSXdw==
-----END CERTIFICATE-----

View file

@ -0,0 +1,5 @@
-----BEGIN PRIVATE KEY-----
MIGHAgEAMBMGByqGSM49AgEGCCqGSM49AwEHBG0wawIBAQQg65zp+LXs7+Zx8qcj
xIQnHoxTy5sdfqiGAgRPBlSbdGOhRANCAARgWdWfy0oDiIvacKPk9MheeuBuCGsa
BjfHT6FLctxNeDP/izndunCtRyhsSOzuddLVUOoRF20nhzgQyjZU5/jq
-----END PRIVATE KEY-----

View file

@ -0,0 +1,11 @@
-----BEGIN CERTIFICATE-----
MIIBpDCCAUqgAwIBAgIUb/JxqKPVbZIOJUOHrRQG9+XGb2wwCgYIKoZIzj0EAwIw
ODELMAkGA1UEBgwCQlIxEjAQBgNVBAoMCUJvdFNlcnZlcjEVMBMGA1UEAwwMQm90
U2VydmVyIENBMB4XDTI2MDEwOTE0MzIyN1oXDTM2MDEwNzE0MzIyN1owODELMAkG
A1UEBgwCQlIxEjAQBgNVBAoMCUJvdFNlcnZlcjEVMBMGA1UEAwwMQm90U2VydmVy
IENBMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEf91iFmGt2MGESvNrMWq9hGCn
hxzYzc74iaLunNh6hVU5oP3jvg7q3g8rZOWUDOOGa4DGdwrdC7CvIIWcqj+zKaMy
MDAwHQYDVR0OBBYEFCjdDuxP8W2kfvArjBjB3DTasjOOMA8GA1UdEwEB/wQFMAMB
Af8wCgYIKoZIzj0EAwIDSAAwRQIgGZ8DZBa3S4d1R9i4H/cgxsJ5Chc4WjspO2cR
K2ZYhJICIQCovdi36+WpK8rPYWfnOpViddt7kjGmET06G1jNCaY8eA==
-----END CERTIFICATE-----

View file

@ -0,0 +1,12 @@
-----BEGIN CERTIFICATE-----
MIIBvDCCAWOgAwIBAgIUFZX7qbWa8Ls+Y744yNHGVp4OKjowCgYIKoZIzj0EAwIw
ODELMAkGA1UEBgwCQlIxEjAQBgNVBAoMCUJvdFNlcnZlcjEVMBMGA1UEAwwMQm90
U2VydmVyIENBMB4XDTI2MDEwOTE0MzIyN1oXDTI3MDEwOTE0MzIyN1owQTELMAkG
A1UEBgwCQlIxEjAQBgNVBAoMCUJvdFNlcnZlcjEeMBwGA1UEAwwVY2FkZHkuYm90
c2VydmVyLmxvY2FsMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEZAPbdPWp646Q
tMh1BTYT6Wr42nOVMvUuj3HSQQsHZB1sHcNBTI5yrvgrToDy4PDzbB/E5RMDR6Xp
AW4irwwSz6NCMEAwPgYDVR0RBDcwNYIJbG9jYWxob3N0hwR/AAABghEqLmJvdHNl
cnZlci5sb2NhbIIPYm90c2VydmVyLmxvY2FsMAoGCCqGSM49BAMCA0cAMEQCIFz2
NqlzwiAK0kVdF2L4nzSdyqCA0+TGWIAorE0hZjUVAiA+NStt3fYi6CIF6oqPytCC
dcL6O4n63CAoe94tQ4u40Q==
-----END CERTIFICATE-----

View file

@ -0,0 +1,5 @@
-----BEGIN PRIVATE KEY-----
MIGHAgEAMBMGByqGSM49AgEGCCqGSM49AwEHBG0wawIBAQQg9yvPZCAxxQM5d3Qv
6+5f3wn1bnXeQjknLohiyUFhOyehRANCAARkA9t09anrjpC0yHUFNhPpavjac5Uy
9S6PcdJBCwdkHWwdw0FMjnKu+CtOgPLg8PNsH8TlEwNHpekBbiKvDBLP
-----END PRIVATE KEY-----

View file

@ -0,0 +1,11 @@
-----BEGIN CERTIFICATE-----
MIIBpDCCAUqgAwIBAgIUb/JxqKPVbZIOJUOHrRQG9+XGb2wwCgYIKoZIzj0EAwIw
ODELMAkGA1UEBgwCQlIxEjAQBgNVBAoMCUJvdFNlcnZlcjEVMBMGA1UEAwwMQm90
U2VydmVyIENBMB4XDTI2MDEwOTE0MzIyN1oXDTM2MDEwNzE0MzIyN1owODELMAkG
A1UEBgwCQlIxEjAQBgNVBAoMCUJvdFNlcnZlcjEVMBMGA1UEAwwMQm90U2VydmVy
IENBMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEf91iFmGt2MGESvNrMWq9hGCn
hxzYzc74iaLunNh6hVU5oP3jvg7q3g8rZOWUDOOGa4DGdwrdC7CvIIWcqj+zKaMy
MDAwHQYDVR0OBBYEFCjdDuxP8W2kfvArjBjB3DTasjOOMA8GA1UdEwEB/wQFMAMB
Af8wCgYIKoZIzj0EAwIDSAAwRQIgGZ8DZBa3S4d1R9i4H/cgxsJ5Chc4WjspO2cR
K2ZYhJICIQCovdi36+WpK8rPYWfnOpViddt7kjGmET06G1jNCaY8eA==
-----END CERTIFICATE-----

View file

@ -0,0 +1,12 @@
-----BEGIN CERTIFICATE-----
MIIBzjCCAXSgAwIBAgIUQObXWjZXgUSHtdznx29wAsH7ztYwCgYIKoZIzj0EAwIw
ODELMAkGA1UEBgwCQlIxEjAQBgNVBAoMCUJvdFNlcnZlcjEVMBMGA1UEAwwMQm90
U2VydmVyIENBMB4XDTI2MDEwOTE0MzIyN1oXDTI3MDEwOTE0MzIyN1owRTELMAkG
A1UEBgwCQlIxEjAQBgNVBAoMCUJvdFNlcnZlcjEiMCAGA1UEAwwZZGlyZWN0b3J5
LmJvdHNlcnZlci5sb2NhbDBZMBMGByqGSM49AgEGCCqGSM49AwEHA0IABA/8o5Ww
wUD14DJQ2Qh0XmFaHkao8TFhagwWP8YwmnkuvY1svj5sMA81N/2Dwp7o1jWnGxzX
vJU0OSq3/WissUijTzBNMEsGA1UdEQREMEKCCWxvY2FsaG9zdIcEfwAAAYIZZGly
ZWN0b3J5LmJvdHNlcnZlci5sb2NhbIIUYXV0aC5ib3RzZXJ2ZXIubG9jYWwwCgYI
KoZIzj0EAwIDSAAwRQIgQjFLaGNS4L63Zp3F7baFYKSj3Np65Bj6wWnuPLcnYzkC
IQCRE/kH+sGGCYE4jsiy+Jx7V4nRd3OFM1FDjS74gM8Wdw==
-----END CERTIFICATE-----

View file

@ -0,0 +1,5 @@
-----BEGIN PRIVATE KEY-----
MIGHAgEAMBMGByqGSM49AgEGCCqGSM49AwEHBG0wawIBAQQg9n8fVbqgVqjIUNAs
iRWePi0Jnxw2CqgSMe/E4KWFLNWhRANCAAQP/KOVsMFA9eAyUNkIdF5hWh5GqPEx
YWoMFj/GMJp5Lr2NbL4+bDAPNTf9g8Ke6NY1pxsc17yVNDkqt/1orLFI
-----END PRIVATE KEY-----

View file

@ -0,0 +1,11 @@
-----BEGIN CERTIFICATE-----
MIIBpDCCAUqgAwIBAgIUb/JxqKPVbZIOJUOHrRQG9+XGb2wwCgYIKoZIzj0EAwIw
ODELMAkGA1UEBgwCQlIxEjAQBgNVBAoMCUJvdFNlcnZlcjEVMBMGA1UEAwwMQm90
U2VydmVyIENBMB4XDTI2MDEwOTE0MzIyN1oXDTM2MDEwNzE0MzIyN1owODELMAkG
A1UEBgwCQlIxEjAQBgNVBAoMCUJvdFNlcnZlcjEVMBMGA1UEAwwMQm90U2VydmVy
IENBMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEf91iFmGt2MGESvNrMWq9hGCn
hxzYzc74iaLunNh6hVU5oP3jvg7q3g8rZOWUDOOGa4DGdwrdC7CvIIWcqj+zKaMy
MDAwHQYDVR0OBBYEFCjdDuxP8W2kfvArjBjB3DTasjOOMA8GA1UdEwEB/wQFMAMB
Af8wCgYIKoZIzj0EAwIDSAAwRQIgGZ8DZBa3S4d1R9i4H/cgxsJ5Chc4WjspO2cR
K2ZYhJICIQCovdi36+WpK8rPYWfnOpViddt7kjGmET06G1jNCaY8eA==
-----END CERTIFICATE-----

View file

@ -0,0 +1,12 @@
-----BEGIN CERTIFICATE-----
MIIBsTCCAVagAwIBAgIUCCAJMWsnAtGqvpXvr+aEp4jjdXwwCgYIKoZIzj0EAwIw
ODELMAkGA1UEBgwCQlIxEjAQBgNVBAoMCUJvdFNlcnZlcjEVMBMGA1UEAwwMQm90
U2VydmVyIENBMB4XDTI2MDEwOTE0MzIyN1oXDTI3MDEwOTE0MzIyN1owQTELMAkG
A1UEBgwCQlIxEjAQBgNVBAoMCUJvdFNlcnZlcjEeMBwGA1UEAwwVZHJpdmUuYm90
c2VydmVyLmxvY2FsMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEjqzVL6nD2ty5
9fy75/NkGPvyYWFdcKBwvytPHSMeFK6rzN0KQ0sQWusB/ejQtfbwoLI32007+N1s
ZZ6WCd6K16M1MDMwMQYDVR0RBCowKIIJbG9jYWxob3N0hwR/AAABghVkcml2ZS5i
b3RzZXJ2ZXIubG9jYWwwCgYIKoZIzj0EAwIDSQAwRgIhAPaAQkiauh2NgOmfqgtx
Ivltu8S+rtbAzatuNdllZctHAiEAxe9LvBAGQoNy41aktHjHfAVBrVSZwUoHZ8L3
qw4drHo=
-----END CERTIFICATE-----

View file

@ -0,0 +1,5 @@
-----BEGIN PRIVATE KEY-----
MIGHAgEAMBMGByqGSM49AgEGCCqGSM49AwEHBG0wawIBAQQgMTBUCUwlU0Q7pOrl
iEUIcSu1icmc5edXgIwTN/DhNs2hRANCAASOrNUvqcPa3Ln1/Lvn82QY+/JhYV1w
oHC/K08dIx4UrqvM3QpDSxBa6wH96NC19vCgsjfbTTv43WxlnpYJ3orX
-----END PRIVATE KEY-----

View file

@ -0,0 +1,11 @@
-----BEGIN CERTIFICATE-----
MIIBpDCCAUqgAwIBAgIUb/JxqKPVbZIOJUOHrRQG9+XGb2wwCgYIKoZIzj0EAwIw
ODELMAkGA1UEBgwCQlIxEjAQBgNVBAoMCUJvdFNlcnZlcjEVMBMGA1UEAwwMQm90
U2VydmVyIENBMB4XDTI2MDEwOTE0MzIyN1oXDTM2MDEwNzE0MzIyN1owODELMAkG
A1UEBgwCQlIxEjAQBgNVBAoMCUJvdFNlcnZlcjEVMBMGA1UEAwwMQm90U2VydmVy
IENBMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEf91iFmGt2MGESvNrMWq9hGCn
hxzYzc74iaLunNh6hVU5oP3jvg7q3g8rZOWUDOOGa4DGdwrdC7CvIIWcqj+zKaMy
MDAwHQYDVR0OBBYEFCjdDuxP8W2kfvArjBjB3DTasjOOMA8GA1UdEwEB/wQFMAMB
Af8wCgYIKoZIzj0EAwIDSAAwRQIgGZ8DZBa3S4d1R9i4H/cgxsJ5Chc4WjspO2cR
K2ZYhJICIQCovdi36+WpK8rPYWfnOpViddt7kjGmET06G1jNCaY8eA==
-----END CERTIFICATE-----

View file

@ -0,0 +1,12 @@
-----BEGIN CERTIFICATE-----
MIIB3DCCAYKgAwIBAgIUdw5C0UYct0rB8XKZP4xDRn7FZiUwCgYIKoZIzj0EAwIw
ODELMAkGA1UEBgwCQlIxEjAQBgNVBAoMCUJvdFNlcnZlcjEVMBMGA1UEAwwMQm90
U2VydmVyIENBMB4XDTI2MDEwOTE0MzIyN1oXDTI3MDEwOTE0MzIyN1owQTELMAkG
A1UEBgwCQlIxEjAQBgNVBAoMCUJvdFNlcnZlcjEeMBwGA1UEAwwVZW1haWwuYm90
c2VydmVyLmxvY2FsMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEax144GBiUfcy
n+EgGEnHVjt66io6XES+rSrcS6cQApLnEkKFTWH3301VSkQbt1LXvnPS6/N46B0i
zOC6QblEeqNhMF8wXQYDVR0RBFYwVIIJbG9jYWxob3N0hwR/AAABghVlbWFpbC5i
b3RzZXJ2ZXIubG9jYWyCFHNtdHAuYm90c2VydmVyLmxvY2FsghRpbWFwLmJvdHNl
cnZlci5sb2NhbDAKBggqhkjOPQQDAgNIADBFAiEA4QqYxhMQHuMhr/CBrUUXYZFG
VsB7iYgnQSWBfhRO0rsCIEo89kYQnVE7MQTeDBf5a79Ia8HTNFATEooBWLE3wH4X
-----END CERTIFICATE-----

View file

@ -0,0 +1,5 @@
-----BEGIN PRIVATE KEY-----
MIGHAgEAMBMGByqGSM49AgEGCCqGSM49AwEHBG0wawIBAQQgSNCzU/xWsjYwwk8H
3LSYh0bYI1+MqY6RLDyUdcsA/sOhRANCAARrHXjgYGJR9zKf4SAYScdWO3rqKjpc
RL6tKtxLpxACkucSQoVNYfffTVVKRBu3Ute+c9Lr83joHSLM4LpBuUR6
-----END PRIVATE KEY-----

View file

@ -0,0 +1,11 @@
-----BEGIN CERTIFICATE-----
MIIBpDCCAUqgAwIBAgIUb/JxqKPVbZIOJUOHrRQG9+XGb2wwCgYIKoZIzj0EAwIw
ODELMAkGA1UEBgwCQlIxEjAQBgNVBAoMCUJvdFNlcnZlcjEVMBMGA1UEAwwMQm90
U2VydmVyIENBMB4XDTI2MDEwOTE0MzIyN1oXDTM2MDEwNzE0MzIyN1owODELMAkG
A1UEBgwCQlIxEjAQBgNVBAoMCUJvdFNlcnZlcjEVMBMGA1UEAwwMQm90U2VydmVy
IENBMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEf91iFmGt2MGESvNrMWq9hGCn
hxzYzc74iaLunNh6hVU5oP3jvg7q3g8rZOWUDOOGa4DGdwrdC7CvIIWcqj+zKaMy
MDAwHQYDVR0OBBYEFCjdDuxP8W2kfvArjBjB3DTasjOOMA8GA1UdEwEB/wQFMAMB
Af8wCgYIKoZIzj0EAwIDSAAwRQIgGZ8DZBa3S4d1R9i4H/cgxsJ5Chc4WjspO2cR
K2ZYhJICIQCovdi36+WpK8rPYWfnOpViddt7kjGmET06G1jNCaY8eA==
-----END CERTIFICATE-----

View file

@ -0,0 +1,12 @@
-----BEGIN CERTIFICATE-----
MIIBuDCCAV6gAwIBAgIUFoH3c6yvJ54C2mjxqRr93x+5AdMwCgYIKoZIzj0EAwIw
ODELMAkGA1UEBgwCQlIxEjAQBgNVBAoMCUJvdFNlcnZlcjEVMBMGA1UEAwwMQm90
U2VydmVyIENBMB4XDTI2MDEwOTE0MzIyN1oXDTI3MDEwOTE0MzIyN1owRTELMAkG
A1UEBgwCQlIxEjAQBgNVBAoMCUJvdFNlcnZlcjEiMCAGA1UEAwwZZW1iZWRkaW5n
LmJvdHNlcnZlci5sb2NhbDBZMBMGByqGSM49AgEGCCqGSM49AwEHA0IABFgtv49n
RP65s3q9f7CIp9g0m2fydY8ef1kLvqJOBu5a+nRezEydGzA74VmdC8kZymD1a57O
B14Ur32DdPOWdVGjOTA3MDUGA1UdEQQuMCyCCWxvY2FsaG9zdIcEfwAAAYIZZW1i
ZWRkaW5nLmJvdHNlcnZlci5sb2NhbDAKBggqhkjOPQQDAgNIADBFAiBnUMziwiAI
3EtkemJFOFukSgdqXYlCBJEkTMPQmJMX3AIhAPCTy9a1y6BGPh5iYvYxG0yG+saA
WftANldcwV/gpobL
-----END CERTIFICATE-----

View file

@ -0,0 +1,5 @@
-----BEGIN PRIVATE KEY-----
MIGHAgEAMBMGByqGSM49AgEGCCqGSM49AwEHBG0wawIBAQQgkgOSgeoYGrcr5qEy
kdfBdwzW3bTToSjKnUX89GzchwShRANCAARYLb+PZ0T+ubN6vX+wiKfYNJtn8nWP
Hn9ZC76iTgbuWvp0XsxMnRswO+FZnQvJGcpg9WuezgdeFK99g3TzlnVR
-----END PRIVATE KEY-----

View file

@ -0,0 +1,11 @@
-----BEGIN CERTIFICATE-----
MIIBpDCCAUqgAwIBAgIUb/JxqKPVbZIOJUOHrRQG9+XGb2wwCgYIKoZIzj0EAwIw
ODELMAkGA1UEBgwCQlIxEjAQBgNVBAoMCUJvdFNlcnZlcjEVMBMGA1UEAwwMQm90
U2VydmVyIENBMB4XDTI2MDEwOTE0MzIyN1oXDTM2MDEwNzE0MzIyN1owODELMAkG
A1UEBgwCQlIxEjAQBgNVBAoMCUJvdFNlcnZlcjEVMBMGA1UEAwwMQm90U2VydmVy
IENBMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEf91iFmGt2MGESvNrMWq9hGCn
hxzYzc74iaLunNh6hVU5oP3jvg7q3g8rZOWUDOOGa4DGdwrdC7CvIIWcqj+zKaMy
MDAwHQYDVR0OBBYEFCjdDuxP8W2kfvArjBjB3DTasjOOMA8GA1UdEwEB/wQFMAMB
Af8wCgYIKoZIzj0EAwIDSAAwRQIgGZ8DZBa3S4d1R9i4H/cgxsJ5Chc4WjspO2cR
K2ZYhJICIQCovdi36+WpK8rPYWfnOpViddt7kjGmET06G1jNCaY8eA==
-----END CERTIFICATE-----

View file

@ -0,0 +1,11 @@
-----BEGIN CERTIFICATE-----
MIIBrDCCAVKgAwIBAgIULLeNNHmCgIy6gdtOj7g3BsqHbLIwCgYIKoZIzj0EAwIw
ODELMAkGA1UEBgwCQlIxEjAQBgNVBAoMCUJvdFNlcnZlcjEVMBMGA1UEAwwMQm90
U2VydmVyIENBMB4XDTI2MDEwOTE0MzIyN1oXDTI3MDEwOTE0MzIyN1owPzELMAkG
A1UEBgwCQlIxEjAQBgNVBAoMCUJvdFNlcnZlcjEcMBoGA1UEAwwTbGxtLmJvdHNl
cnZlci5sb2NhbDBZMBMGByqGSM49AgEGCCqGSM49AwEHA0IABPwMZlbuU1+rschc
rRzqqI6Y+wZOKxC4cyie6fYfCzwk2eYPmZ69sO8ecqDJhKuQBskcXXizJtEcuOcP
MKWYZ4mjMzAxMC8GA1UdEQQoMCaCCWxvY2FsaG9zdIcEfwAAAYITbGxtLmJvdHNl
cnZlci5sb2NhbDAKBggqhkjOPQQDAgNIADBFAiAvc2/SqQUxGmIW8BRrI9cKsZyv
skRjHuYyzgV7MlwQZAIhAJrW4lM8QukmbX1q8QjDZ4AcZgXTWfNTgA4OQN81mRIA
-----END CERTIFICATE-----

View file

@ -0,0 +1,5 @@
-----BEGIN PRIVATE KEY-----
MIGHAgEAMBMGByqGSM49AgEGCCqGSM49AwEHBG0wawIBAQQgywgP2Z+36UFU0tCX
mjLAcWjwHsS9VQStesTISqv96LOhRANCAAT8DGZW7lNfq7HIXK0c6qiOmPsGTisQ
uHMonun2Hws8JNnmD5mevbDvHnKgyYSrkAbJHF14sybRHLjnDzClmGeJ
-----END PRIVATE KEY-----

View file

@ -0,0 +1,11 @@
-----BEGIN CERTIFICATE-----
MIIBpDCCAUqgAwIBAgIUb/JxqKPVbZIOJUOHrRQG9+XGb2wwCgYIKoZIzj0EAwIw
ODELMAkGA1UEBgwCQlIxEjAQBgNVBAoMCUJvdFNlcnZlcjEVMBMGA1UEAwwMQm90
U2VydmVyIENBMB4XDTI2MDEwOTE0MzIyN1oXDTM2MDEwNzE0MzIyN1owODELMAkG
A1UEBgwCQlIxEjAQBgNVBAoMCUJvdFNlcnZlcjEVMBMGA1UEAwwMQm90U2VydmVy
IENBMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEf91iFmGt2MGESvNrMWq9hGCn
hxzYzc74iaLunNh6hVU5oP3jvg7q3g8rZOWUDOOGa4DGdwrdC7CvIIWcqj+zKaMy
MDAwHQYDVR0OBBYEFCjdDuxP8W2kfvArjBjB3DTasjOOMA8GA1UdEwEB/wQFMAMB
Af8wCgYIKoZIzj0EAwIDSAAwRQIgGZ8DZBa3S4d1R9i4H/cgxsJ5Chc4WjspO2cR
K2ZYhJICIQCovdi36+WpK8rPYWfnOpViddt7kjGmET06G1jNCaY8eA==
-----END CERTIFICATE-----

View file

@ -0,0 +1,12 @@
-----BEGIN CERTIFICATE-----
MIIBwzCCAWqgAwIBAgIUOFSwzEf9g4EjNN87Rm9CVHMQy0cwCgYIKoZIzj0EAwIw
ODELMAkGA1UEBgwCQlIxEjAQBgNVBAoMCUJvdFNlcnZlcjEVMBMGA1UEAwwMQm90
U2VydmVyIENBMB4XDTI2MDEwOTE0MzIyN1oXDTI3MDEwOTE0MzIyN1owQDELMAkG
A1UEBgwCQlIxEjAQBgNVBAoMCUJvdFNlcnZlcjEdMBsGA1UEAwwUbWVldC5ib3Rz
ZXJ2ZXIubG9jYWwwWTATBgcqhkjOPQIBBggqhkjOPQMBBwNCAAQa0cd7blTJKeIy
qoMzofkhELiJObh/7mLRA449sF2JkfN1ntdlaJME+w4QWol7jJrN3djovp9VSF1n
lenyO5Zso0owSDBGBgNVHREEPzA9gglsb2NhbGhvc3SHBH8AAAGCFG1lZXQuYm90
c2VydmVyLmxvY2FsghR0dXJuLmJvdHNlcnZlci5sb2NhbDAKBggqhkjOPQQDAgNH
ADBEAiBQ2Tj1aEUsJPKn8nB8fMoPypGFjqQsrHVMGd1jugRKvgIgPwommm56FBRE
fykGU8Ti60kv3bE/T8n96bys/Ck27QQ=
-----END CERTIFICATE-----

View file

@ -0,0 +1,5 @@
-----BEGIN PRIVATE KEY-----
MIGHAgEAMBMGByqGSM49AgEGCCqGSM49AwEHBG0wawIBAQQgGV4Njkk6msSROX4j
xECKbepHax+ITYjKbPgU7GYja9yhRANCAAQa0cd7blTJKeIyqoMzofkhELiJObh/
7mLRA449sF2JkfN1ntdlaJME+w4QWol7jJrN3djovp9VSF1nlenyO5Zs
-----END PRIVATE KEY-----

View file

@ -0,0 +1,11 @@
-----BEGIN CERTIFICATE-----
MIIBpDCCAUqgAwIBAgIUb/JxqKPVbZIOJUOHrRQG9+XGb2wwCgYIKoZIzj0EAwIw
ODELMAkGA1UEBgwCQlIxEjAQBgNVBAoMCUJvdFNlcnZlcjEVMBMGA1UEAwwMQm90
U2VydmVyIENBMB4XDTI2MDEwOTE0MzIyN1oXDTM2MDEwNzE0MzIyN1owODELMAkG
A1UEBgwCQlIxEjAQBgNVBAoMCUJvdFNlcnZlcjEVMBMGA1UEAwwMQm90U2VydmVy
IENBMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEf91iFmGt2MGESvNrMWq9hGCn
hxzYzc74iaLunNh6hVU5oP3jvg7q3g8rZOWUDOOGa4DGdwrdC7CvIIWcqj+zKaMy
MDAwHQYDVR0OBBYEFCjdDuxP8W2kfvArjBjB3DTasjOOMA8GA1UdEwEB/wQFMAMB
Af8wCgYIKoZIzj0EAwIDSAAwRQIgGZ8DZBa3S4d1R9i4H/cgxsJ5Chc4WjspO2cR
K2ZYhJICIQCovdi36+WpK8rPYWfnOpViddt7kjGmET06G1jNCaY8eA==
-----END CERTIFICATE-----

View file

@ -0,0 +1,12 @@
-----BEGIN CERTIFICATE-----
MIIBszCCAVigAwIBAgIUedQtLNXwJmy0Aq0iGF6RRhWLjrEwCgYIKoZIzj0EAwIw
ODELMAkGA1UEBgwCQlIxEjAQBgNVBAoMCUJvdFNlcnZlcjEVMBMGA1UEAwwMQm90
U2VydmVyIENBMB4XDTI2MDEwOTE0MzIyN1oXDTI3MDEwOTE0MzIyN1owQjELMAkG
A1UEBgwCQlIxEjAQBgNVBAoMCUJvdFNlcnZlcjEfMB0GA1UEAwwWdGFibGVzLmJv
dHNlcnZlci5sb2NhbDBZMBMGByqGSM49AgEGCCqGSM49AwEHA0IABJPQ9iKqvlcs
uuU5VuwUFhclUlZgp8B0RT6TZ43ULuIvbIZ7uwGC3SP7+RPeehqnQSvRMCUh6LUr
iUrIqVjZYtmjNjA0MDIGA1UdEQQrMCmCCWxvY2FsaG9zdIcEfwAAAYIWdGFibGVz
LmJvdHNlcnZlci5sb2NhbDAKBggqhkjOPQQDAgNJADBGAiEA+ICfkJLs90c+BwRu
2FGT2bZ4Av5aITNlZe32W6g4x1ACIQCtXTHMniLCKTm+jP6YUVy8jKjlAW7TzQEW
yBjhieiKqw==
-----END CERTIFICATE-----

View file

@ -0,0 +1,5 @@
-----BEGIN PRIVATE KEY-----
MIGHAgEAMBMGByqGSM49AgEGCCqGSM49AwEHBG0wawIBAQQgGRyl9LxjpKa/AXsN
8Utr/4r31nYClRXAYcIRtHvY7/ChRANCAAST0PYiqr5XLLrlOVbsFBYXJVJWYKfA
dEU+k2eN1C7iL2yGe7sBgt0j+/kT3noap0Er0TAlIei1K4lKyKlY2WLZ
-----END PRIVATE KEY-----

View file

@ -0,0 +1,11 @@
-----BEGIN CERTIFICATE-----
MIIBpDCCAUqgAwIBAgIUb/JxqKPVbZIOJUOHrRQG9+XGb2wwCgYIKoZIzj0EAwIw
ODELMAkGA1UEBgwCQlIxEjAQBgNVBAoMCUJvdFNlcnZlcjEVMBMGA1UEAwwMQm90
U2VydmVyIENBMB4XDTI2MDEwOTE0MzIyN1oXDTM2MDEwNzE0MzIyN1owODELMAkG
A1UEBgwCQlIxEjAQBgNVBAoMCUJvdFNlcnZlcjEVMBMGA1UEAwwMQm90U2VydmVy
IENBMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEf91iFmGt2MGESvNrMWq9hGCn
hxzYzc74iaLunNh6hVU5oP3jvg7q3g8rZOWUDOOGa4DGdwrdC7CvIIWcqj+zKaMy
MDAwHQYDVR0OBBYEFCjdDuxP8W2kfvArjBjB3DTasjOOMA8GA1UdEwEB/wQFMAMB
Af8wCgYIKoZIzj0EAwIDSAAwRQIgGZ8DZBa3S4d1R9i4H/cgxsJ5Chc4WjspO2cR
K2ZYhJICIQCovdi36+WpK8rPYWfnOpViddt7kjGmET06G1jNCaY8eA==
-----END CERTIFICATE-----

View file

@ -0,0 +1,12 @@
-----BEGIN CERTIFICATE-----
MIIBsTCCAVagAwIBAgIUD1I5LIe/58xRDeIzDydogQ7O48AwCgYIKoZIzj0EAwIw
ODELMAkGA1UEBgwCQlIxEjAQBgNVBAoMCUJvdFNlcnZlcjEVMBMGA1UEAwwMQm90
U2VydmVyIENBMB4XDTI2MDEwOTE0MzIyN1oXDTI3MDEwOTE0MzIyN1owQTELMAkG
A1UEBgwCQlIxEjAQBgNVBAoMCUJvdFNlcnZlcjEeMBwGA1UEAwwVdmF1bHQuYm90
c2VydmVyLmxvY2FsMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAErBEIYdeJsrFR
QcrB5ZbwQh07DHxY5l6CWSG4nPMlLw1glVmelg/KWRC0x0qT2w1c8ZuhrDgXPoaI
3gYm6YuDA6M1MDMwMQYDVR0RBCowKIIJbG9jYWxob3N0hwR/AAABghV2YXVsdC5i
b3RzZXJ2ZXIubG9jYWwwCgYIKoZIzj0EAwIDSQAwRgIhAOKl0AoVfexLk7W8ojg9
8bgJpkD/S++dMp5iwO7EEmNTAiEA8gj1QkB200y+MPIcbfWo5os/rOUdgsi6ajiB
2sPKuZI=
-----END CERTIFICATE-----

View file

@ -0,0 +1,5 @@
-----BEGIN PRIVATE KEY-----
MIGHAgEAMBMGByqGSM49AgEGCCqGSM49AwEHBG0wawIBAQQgYty4Dxz6uuA6oTfA
3pPG62ZCcZSHH6x24TmU845C4cChRANCAASsEQhh14mysVFBysHllvBCHTsMfFjm
XoJZIbic8yUvDWCVWZ6WD8pZELTHSpPbDVzxm6GsOBc+hojeBibpi4MD
-----END PRIVATE KEY-----

View file

@ -0,0 +1,11 @@
-----BEGIN CERTIFICATE-----
MIIBpDCCAUqgAwIBAgIUb/JxqKPVbZIOJUOHrRQG9+XGb2wwCgYIKoZIzj0EAwIw
ODELMAkGA1UEBgwCQlIxEjAQBgNVBAoMCUJvdFNlcnZlcjEVMBMGA1UEAwwMQm90
U2VydmVyIENBMB4XDTI2MDEwOTE0MzIyN1oXDTM2MDEwNzE0MzIyN1owODELMAkG
A1UEBgwCQlIxEjAQBgNVBAoMCUJvdFNlcnZlcjEVMBMGA1UEAwwMQm90U2VydmVy
IENBMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEf91iFmGt2MGESvNrMWq9hGCn
hxzYzc74iaLunNh6hVU5oP3jvg7q3g8rZOWUDOOGa4DGdwrdC7CvIIWcqj+zKaMy
MDAwHQYDVR0OBBYEFCjdDuxP8W2kfvArjBjB3DTasjOOMA8GA1UdEwEB/wQFMAMB
Af8wCgYIKoZIzj0EAwIDSAAwRQIgGZ8DZBa3S4d1R9i4H/cgxsJ5Chc4WjspO2cR
K2ZYhJICIQCovdi36+WpK8rPYWfnOpViddt7kjGmET06G1jNCaY8eA==
-----END CERTIFICATE-----

View file

@ -0,0 +1,12 @@
-----BEGIN CERTIFICATE-----
MIIBtTCCAVygAwIBAgIUYc6xkfJ9hKLTOJWmQK2qGZnX4kQwCgYIKoZIzj0EAwIw
ODELMAkGA1UEBgwCQlIxEjAQBgNVBAoMCUJvdFNlcnZlcjEVMBMGA1UEAwwMQm90
U2VydmVyIENBMB4XDTI2MDEwOTE0MzIyN1oXDTI3MDEwOTE0MzIyN1owRDELMAkG
A1UEBgwCQlIxEjAQBgNVBAoMCUJvdFNlcnZlcjEhMB8GA1UEAwwYdmVjdG9yZGIu
Ym90c2VydmVyLmxvY2FsMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEGjzEoKX3
bMMVTik6tgG9Cc2Sh+vg7zYPxCgx3PS5/g7UBR9Z5XXWC6kDfdLgxOfFL/3Wvr45
gwCxPt//UGNQ2qM4MDYwNAYDVR0RBC0wK4IJbG9jYWxob3N0hwR/AAABghh2ZWN0
b3JkYi5ib3RzZXJ2ZXIubG9jYWwwCgYIKoZIzj0EAwIDRwAwRAIgG8QM6qzq5ZaX
51BXjWTQMZfL/yurnMMmNyPx2DfpZkoCIFZN0jJm3dxwZsTIJDI4FU2T4FC/YGee
bu9ZO2/ERaFK
-----END CERTIFICATE-----

View file

@ -0,0 +1,5 @@
-----BEGIN PRIVATE KEY-----
MIGHAgEAMBMGByqGSM49AgEGCCqGSM49AwEHBG0wawIBAQQgOYg1iMeJt9WlQ0VN
zIHneW1OO2pTEpbaOZNAhkPUECmhRANCAAQaPMSgpfdswxVOKTq2Ab0JzZKH6+Dv
Ng/EKDHc9Ln+DtQFH1nlddYLqQN90uDE58Uv/da+vjmDALE+3/9QY1Da
-----END PRIVATE KEY-----

View file

@ -0,0 +1,16 @@
storage "file" {
path = "/home/rodriguez/src/gb/botserver-stack/data/vault/vault"
}
listener "tcp" {
address = "0.0.0.0:8200"
tls_disable = false
tls_cert_file = "/home/rodriguez/src/gb/botserver-stack/conf/system/certificates/vault/server.crt"
tls_key_file = "/home/rodriguez/src/gb/botserver-stack/conf/system/certificates/vault/server.key"
tls_client_ca_file = "/home/rodriguez/src/gb/botserver-stack/conf/system/certificates/ca/ca.crt"
}
api_addr = "https://localhost:8200"
cluster_addr = "https://localhost:8201"
ui = true
disable_mlock = true

@ -1 +1 @@
Subproject commit fc2458c4c1194f163b8cae06f5490674d6ac37ad
Subproject commit c0e14819fe322132bf96db27804aca056b3261e5

@ -1 +1 @@
Subproject commit 05446c6716bbbe0478fb0707c890683f4119f392
Subproject commit 1232b2fc6540595fe683115bb3499ccddf1d7270

2
botui

@ -1 +1 @@
Subproject commit e32e9b793a073c7b22d2a262c4a30fcd5d723105
Subproject commit 9a4c8bf6a60c32e00d11bb27a522da80b76f9c3b

View file

@ -2,7 +2,6 @@ pkill rustc -9
pkill botserver -9
pkill botui -9
cd botserver
cargo build
cargo run -- --noconsole &
cd ../botui
cargo run &