57 lines
1.7 KiB
PHP
57 lines
1.7 KiB
PHP
|
|
#!/usr/bin/env php
|
|||
|
|
<?php
|
|||
|
|
/**
|
|||
|
|
* Cookie 域推断与指纹 JS 选项回归(CLI JSON)
|
|||
|
|
*/
|
|||
|
|
if (PHP_SAPI !== 'cli') {
|
|||
|
|
exit(1);
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
$root = dirname(__DIR__);
|
|||
|
|
require_once $root . '/lib/CloakHttpHelpers.php';
|
|||
|
|
|
|||
|
|
$tests = [];
|
|||
|
|
|
|||
|
|
$cases = [
|
|||
|
|
['shop.example.com', '.example.com'],
|
|||
|
|
['shop.example.com:443', '.example.com'],
|
|||
|
|
['SHOP.Example.COM:8080', '.example.com'],
|
|||
|
|
['shili.buzz', '.shili.buzz'],
|
|||
|
|
['www.shili.buzz', '.shili.buzz'],
|
|||
|
|
['a.b.shili.buzz', '.shili.buzz'],
|
|||
|
|
['shop.foo.co.uk', '.foo.co.uk'],
|
|||
|
|
['www.shop.foo.co.uk', '.foo.co.uk'],
|
|||
|
|
['127.0.0.1', ''],
|
|||
|
|
['[::1]', ''],
|
|||
|
|
['localhost', ''],
|
|||
|
|
['cloaka.test', ''],
|
|||
|
|
['single', ''],
|
|||
|
|
];
|
|||
|
|
|
|||
|
|
foreach ($cases as $i => $case) {
|
|||
|
|
$_SERVER['HTTP_HOST'] = $case[0];
|
|||
|
|
$tests['domain_' . $i] = cloak_fingerprint_cookie_domain() === $case[1];
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
$_SERVER['HTTP_HOST'] = 'shop.example.com';
|
|||
|
|
$_SERVER['HTTPS'] = 'on';
|
|||
|
|
$jsOpts = cloak_fingerprint_js_cookie_options();
|
|||
|
|
$tests['js_opts_domain'] = ($jsOpts['domain'] ?? '') === '.example.com';
|
|||
|
|
$tests['js_opts_secure_https'] = !empty($jsOpts['secure']);
|
|||
|
|
$tests['js_opts_samesite'] = ($jsOpts['sameSite'] ?? '') === 'Lax';
|
|||
|
|
|
|||
|
|
$_SERVER['HTTPS'] = 'off';
|
|||
|
|
unset($_SERVER['HTTP_X_FORWARDED_PROTO']);
|
|||
|
|
$jsOptsHttp = cloak_fingerprint_js_cookie_options();
|
|||
|
|
$tests['js_opts_no_secure_http'] = empty($jsOptsHttp['secure']);
|
|||
|
|
|
|||
|
|
if (!defined('CLOAK_COOKIE_DOMAIN')) {
|
|||
|
|
define('CLOAK_COOKIE_DOMAIN', '.fixed.buzz');
|
|||
|
|
}
|
|||
|
|
$_SERVER['HTTP_HOST'] = 'other.example.com';
|
|||
|
|
$tests['config_override'] = cloak_fingerprint_cookie_domain() === '.fixed.buzz';
|
|||
|
|
|
|||
|
|
$ok = !in_array(false, $tests, true);
|
|||
|
|
echo json_encode(['ok' => $ok, 'tests' => $tests], JSON_UNESCAPED_UNICODE) . "\n";
|
|||
|
|
exit($ok ? 0 : 1);
|