cloud-castle / connect-manager
Унифицированный менеджер сетевых соединений PHP 8.1+: OSI-реестр, TCP/UDP/TLS/Unix, HTTP/SSH/SFTP, sync/async (Fibers), пул, SSRF-guard.
Package info
github.com/admin-cloud-castle/connect-manager
pkg:composer/cloud-castle/connect-manager
Fund package maintenance!
Requires
- php: >=8.1
Requires (Dev)
- deptrac/deptrac: ^2.0
- ergebnis/composer-normalize: ^2.45
- friendsofphp/php-cs-fixer: ^3.68
- icanhazstring/composer-unused: ^0.9
- infection/infection: ^0.28.1
- php-parallel-lint/php-parallel-lint: ^1.4
- phpdocumentor/shim: ^3.5
- phpmd/phpmd: ^2.15
- phpstan/extension-installer: ^1.4
- phpstan/phpstan: ^2.1
- phpstan/phpstan-deprecation-rules: ^2.0
- phpstan/phpstan-phpunit: ^2.0
- phpstan/phpstan-strict-rules: ^2.0
- phpunit/phpunit: ^10.5
- psalm/plugin-phpunit: ^0.19
- rector/rector: ^2.0
- roave/security-advisories: dev-latest
- squizlabs/php_codesniffer: ^3.11
- vimeo/psalm: ^6.0
Suggests
None
Provides
None
Conflicts
None
Replaces
None
This package is auto-updated.
Last update: 2026-10-20 14:14:54 UTC
README
Connect Manager
Production-ready PHP 8.1+ библиотека Connect Manager (CloudCastle).
Зачем
Единый API сетевых соединений для PHP 8.1+: любой протокол из реестра OSI (+ socket/unix/tls), sync и async на Fibers без React/Amp.
Краткая выжимка:
Плюсы
- Единый Connection API: TCP/UDP/TLS/Unix + реестр OSI; прикладной HTTP/1.1 (JSON/form/redirects) и SSH/SFTP
- 160 протоколов в реестре, логические соединения для L1/L2 без native PHP
- SSRF-guard (DNS-resolve + anti-rebinding) и TLS verify peer по умолчанию
- Non-blocking async connect на Fibers; покрытие ≥99.8%, полный quality-стек
Минусы (допустимые)
- Пакет моложе и менее распространён, чем react/socket, amphp/socket, Guzzle, phpseclib
- Нативный SSH/SFTP на openssl+gmp (без Composer runtime-deps); для Ed25519 желателен ext-sodium
Когда применять
- Нужен один клиент для TCP/UDP/TLS/Unix/HTTP/SSH/SFTP без зоопарка библиотек
- Sync CLI/FPM и async (Fibers, non-blocking connect) в одном коде
- Экосистема CloudCastle / строгие требования к security defaults
Установка
composer require cloud-castle/connect-manager
Быстрый старт
<?php declare(strict_types=1); use CloudCastle\ConnectManager\ConnectManager; use CloudCastle\ConnectManager\Contract\ConnectionOptions; $manager = new ConnectManager(); $options = ConnectionOptions::defaults()->allowPrivateAddresses(); $tcp = $manager->connect('tcp', '127.0.0.1:8080', $options); $tcp->write("ping\n"); $tcp->close(); $response = $manager->http()->get('https://example.com/'); $ssh = $manager->ssh( 'example.com:22', \CloudCastle\ConnectManager\Contract\AuthCredentials::withPassword('user', 'secret'), ); echo $ssh->exec('uname -a'); $ssh->close(); $sshKey = $manager->ssh( 'example.com:22', \CloudCastle\ConnectManager\Contract\AuthCredentials::withPublicKey( 'user', '/home/user/.ssh/id_rsa', null, ), ); $sshKey->close(); // Логическое соединение для протокола без native-транспорта: $adsl = $manager->connect('adsl', 'line-1', $options);
Сравнение с аналогами (таблицы фич/порогов): Wiki Comparison.
Документация
- Wiki
- CHANGELOG
- SECURITY
- CONTRIBUTING
- DONATE
- ROADMAP
- AUTHORS
- ACCESSIBILITY
- RELEASE
- INSTALL
- ADOPTERS
- ARCHITECTURE
- FAQ
- VERSIONING
- CODE_STYLE
Сравнение с аналогами
Актуальные таблицы (фичи / перф / память / безопасность / качество) — в Wiki → Comparison. В README таблицы не дублируются (защита ветки main).
Лицензия
MIT — см. LICENSE.