/
DATKAI
/
ITCUP
Обзор
Документация
Войти
/
DATKAI
/
ITCUP
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
CI/CD
Аналитика
Безопасность
main
app/Models/VpnService.php
101 строка
2 KB
ITCUP Admin
feat(vpn): ITCUP как VPN-хаб — драйверы + управление интерфейсом WireGuard
22 апр 2026, 07:27
22 апр 2026, 07:27
93b5fd6
Код
Авторство
О чём код?
<?php namespace App\Models; use Illuminate\Database\Eloquent\Model; use Illuminate\Database\Eloquent\Relations\BelongsTo; use Illuminate\Database\Eloquent\Relations\HasMany; class VpnService extends Model { protected $fillable = [ 'name', 'type', 'role', 'interface_name', 'endpoint', 'port', 'subnet', 'asset_id', 'location_id', 'description', 'settings', 'is_active', 'status', 'status_message', 'last_sync_at', 'sort_order', ]; protected $casts = [ 'settings' => 'encrypted:array', 'is_active' => 'boolean', 'last_sync_at' => 'datetime', ]; public const TYPES = [ 'wireguard' => 'WireGuard', 'openvpn' => 'OpenVPN', 'ipsec' => 'IPSec/IKEv2', 'l2tp' => 'L2TP/IPSec', 'pptp' => 'PPTP', 'gre' => 'GRE tunnel', ]; public const TYPE_COLORS = [ 'wireguard' => 'success', 'openvpn' => 'info', 'ipsec' => 'warning', 'l2tp' => 'primary', 'pptp' => 'gray', 'gre' => 'danger', ]; public const ROLES = [ 'catalog' => 'Только каталог', 'hub' => 'ITCUP как HUB (сервер)', 'client' => 'ITCUP как клиент', ]; public const STATUSES = [ 'up' => 'Работает', 'down' => 'Остановлен', 'error' => 'Ошибка', 'unknown' => 'Неизвестно', ]; public const STATUS_COLORS = [ 'up' => 'success', 'down' => 'gray', 'error' => 'danger', 'unknown' => 'warning', ]; public const DEFAULT_PORTS = [ 'wireguard' => 51820, 'openvpn' => 1194, 'ipsec' => 500, 'l2tp' => 1701, 'pptp' => 1723, ]; public function clients(): HasMany { return $this->hasMany(VpnClient::class); } public function asset(): BelongsTo { return $this->belongsTo(Asset::class); } public function location(): BelongsTo { return $this->belongsTo(Location::class); } public function isManaged(): bool { return in_array($this->role, ['hub', 'client']); } }