<?php
// 设置数据库文件路径
$dbFile = __DIR__ . '/data.db';
// 创建一个新的PDO实例连接到SQLite数据库
try {
$pdo = new PDO("sqlite:$dbFile");
// 设置错误模式为异常
$pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
// 创建表(如果不存在)
$pdo->exec("
CREATE TABLE IF NOT EXISTS key_value_store (
id TEXT PRIMARY KEY,
value TEXT
)
");
} catch (PDOException $e) {
die("数据库连接失败: " . $e->getMessage());
}
// 检查请求方法
if ($_SERVER['REQUEST_METHOD'] === 'POST') {
// 处理POST请求,保存键值对
$id = isset($_POST['id']) ? $_POST['id'] : null;
$value = isset($_POST['value']) ? $_POST['value'] : null;
if ($id && $value) {
try {
// 插入或更新数据
$stmt = $pdo->prepare('INSERT OR REPLACE INTO key_value_store (id, value) VALUES (:id, :value)');
$stmt->execute([':id' => $id, ':value' => $value]);
echo "键值对 {$id}={$value} 已保存";
} catch (PDOException $e) {
echo "数据库操作失败: " . $e->getMessage();
}
} else {
echo "缺少必要的参数:id 和 value";
}
} elseif ($_SERVER['REQUEST_METHOD'] === 'GET') {
// 处理GET请求,查询键值对
$id = isset($_GET['id']) ? $_GET['id'] : null;
if ($id) {
try {
$stmt = $pdo->prepare('SELECT value FROM key_value_store WHERE id = :id');
$stmt->execute([':id' => $id]);
$result = $stmt->fetch(PDO::FETCH_ASSOC);
if ($result) {
echo $result['value'];
} else {
echo "未找到ID {$id}";
}
} catch (PDOException $e) {
echo "数据库操作失败: " . $e->getMessage();
}
} else {
echo "缺少必要的参数:id";
}
} else {
// 不支持的方法
http_response_code(405);
echo "不支持的请求方法";
}
?>
#!/bin/sh
curl -X POST https://服务器域名/键值对文件名.php -d "id=自定义&value=${1}:${2}"
Set WshShell = CreateObject("WScript.Shell")
WshShell.Run "powershell -WindowStyle Hidden -Command ""& { wg set wg接口名 peer 服务器公钥 endpoint (Invoke-WebRequest -Uri https://服务器域名/键值对文件名.php?id=自定义).Content }""", 0, True
Set WshShell = Nothing
- 在“触发器”部分,设置任务的触发条件为发生事件时,选择自定义,输入如下 xml。
<QueryList>
<Query Id="0" Path="Microsoft-Windows-NCSI/Operational">
<Select Path="Microsoft-Windows-NCSI/Operational">*[System[(EventID=4042)]] and *[EventData[Data[@Name='Capability']='2']]</Select>
</Query>
</QueryList>
- 在“触发器”部分,设置任务的触发条件每半小时。