laylink/bin/client-agent.php
2026-05-29 00:08:15 +08:00

74 lines
2.6 KiB
PHP
Executable File

#!/usr/bin/env php
<?php
declare(strict_types=1);
use LayLink\Agent\AgentClient;
use LayLink\Protocol\FrameCodec;
use LayLink\Util\Env;
use Workerman\Worker;
require dirname(__DIR__) . '/vendor/autoload.php';
Env::load(dirname(__DIR__) . '/.env');
FrameCodec::configureEncryption(
Env::get('LAYLINK_FRAME_ENCRYPTION', 'none'),
Env::get('LAYLINK_FRAME_ENCRYPTION_KEY', ''),
);
Worker::$logFile = dirname(__DIR__) . '/runtime/workerman.log';
Worker::$pidFile = dirname(__DIR__) . '/runtime/client-agent.pid';
$nodeId = Env::get('NODE_ID', 'client-01');
$bootAgent = function (string $protocol, string $listen, string $name) use ($nodeId): void {
$agent = new AgentClient(
$listen,
$protocol,
Env::get('POP_SERVER_ADDRESS', 'tcp://127.0.0.1:9001'),
$nodeId,
Env::get('NODE_TYPE', 'client'),
Env::get('NODE_TOKEN', 'CHANGE_ME'),
Env::get('NODE_ZONE', 'corp'),
Env::get('AGENT_TRANSPORT_PROTOCOL', 'tcp'),
Env::get('CLIENT_AGENT_AUTH_TOKEN', 'dev-token'),
Env::get('CLIENT_AGENT_USER_ID', 'admin'),
Env::get('CLIENT_AGENT_SOCKS5_AUTH_MODE', 'no-auth'),
Env::get('CLIENT_AGENT_SOCKS5_USERNAME', ''),
Env::get('CLIENT_AGENT_SOCKS5_PASSWORD', ''),
$protocol === 'socks5'
? Env::get('CLIENT_AGENT_SOCKS5_UDP_LISTEN_IP', '127.0.0.1') . ':' . Env::get('CLIENT_AGENT_SOCKS5_UDP_LISTEN_PORT', '1081')
: null,
Env::get('CLIENT_AGENT_SOCKS5_UDP_ADVERTISE_IP', Env::get('CLIENT_AGENT_SOCKS5_LISTEN_IP', '127.0.0.1')),
Env::int('LAYLINK_MAX_SEND_BUFFER_BYTES', 64 * 1024 * 1024, 1024 * 1024),
Env::int('LAYLINK_BACKPRESSURE_HIGH_WATERMARK_BYTES', 32 * 1024 * 1024, 512 * 1024),
Env::int('LAYLINK_DATA_CHUNK_BYTES', 1024 * 1024, 16 * 1024, 8 * 1024 * 1024),
);
$agent->boot($name);
};
if (Env::bool('CLIENT_AGENT_SOCKS5_ENABLED', true)) {
$bootAgent(
'socks5',
Env::get('CLIENT_AGENT_SOCKS5_LISTEN_IP', '127.0.0.1') . ':' . Env::get('CLIENT_AGENT_SOCKS5_LISTEN_PORT', '1080'),
'laylink-client-agent-socks5',
);
}
if (Env::bool('CLIENT_AGENT_HTTP_PROXY_ENABLED', false)) {
$bootAgent(
'http-proxy',
Env::get('CLIENT_AGENT_HTTP_PROXY_LISTEN_IP', '127.0.0.1') . ':' . Env::get('CLIENT_AGENT_HTTP_PROXY_LISTEN_PORT', '8080'),
'laylink-client-agent-http-proxy',
);
}
if (Env::bool('CLIENT_AGENT_RAW_JSON_ENABLED', false)) {
$bootAgent(
'raw-json',
Env::get('CLIENT_AGENT_RAW_JSON_LISTEN_IP', '127.0.0.1') . ':' . Env::get('CLIENT_AGENT_RAW_JSON_LISTEN_PORT', '9000'),
'laylink-client-agent-raw-json',
);
}
Worker::runAll();