feat: dl.sechen0v.ru/mod/quiz/attempt.php routing, title/favicon, redirect from auth

This commit is contained in:
aedes
2026-04-22 13:40:45 +03:00
parent 6cc469973a
commit edefe73406
20 changed files with 406 additions and 14 deletions

View File

@@ -0,0 +1 @@
{"sessionId":"ca247c21-42e9-4747-8fe9-47ef0827a9a0","pid":20436,"acquiredAt":1776697343596}

View File

@@ -32,14 +32,32 @@
"hotPaths": [
{
"path": "server.js",
"accessCount": 3,
"lastAccessed": 1776672164219,
"accessCount": 61,
"lastAccessed": 1776854409944,
"type": "file"
},
{
"path": "public\\index.html",
"accessCount": 28,
"lastAccessed": 1776854379840,
"type": "file"
},
{
"path": "scripts\\mirror.js",
"accessCount": 20,
"lastAccessed": 1776854339712,
"type": "file"
},
{
"path": "public\\assets\\css\\template-styles-main.css",
"accessCount": 7,
"lastAccessed": 1776711130674,
"type": "directory"
},
{
"path": "package.json",
"accessCount": 2,
"lastAccessed": 1776672170754,
"accessCount": 6,
"lastAccessed": 1776698552811,
"type": "file"
},
{
@@ -48,6 +66,12 @@
"lastAccessed": 1776673366608,
"type": "file"
},
{
"path": "public\\assets\\css\\proxima.css",
"accessCount": 2,
"lastAccessed": 1776710396071,
"type": "file"
},
{
"path": ".env.example",
"accessCount": 1,
@@ -55,9 +79,21 @@
"type": "file"
},
{
"path": "public\\index.html",
"path": "public\\assets\\css\\styles-v1.css",
"accessCount": 1,
"lastAccessed": 1776672194456,
"lastAccessed": 1776710409322,
"type": "directory"
},
{
"path": "public\\iframe.html",
"accessCount": 1,
"lastAccessed": 1776779699932,
"type": "file"
},
{
"path": "oauth-urls.txt",
"accessCount": 1,
"lastAccessed": 1776817793799,
"type": "file"
}
],

View File

@@ -0,0 +1,8 @@
{
"session_id": "821fcdc4-dce7-4e5e-8743-c5b16b7e7765",
"ended_at": "2026-04-20T13:57:32.987Z",
"reason": "prompt_input_exit",
"agents_spawned": 0,
"agents_completed": 0,
"modes_used": []
}

View File

@@ -0,0 +1,8 @@
{
"session_id": "ca247c21-42e9-4747-8fe9-47ef0827a9a0",
"ended_at": "2026-04-20T13:54:55.958Z",
"reason": "prompt_input_exit",
"agents_spawned": 0,
"agents_completed": 0,
"modes_used": []
}

View File

@@ -0,0 +1,18 @@
{"t":0,"agent":"ad14aed","agent_type":"unknown","event":"agent_stop","success":true}
{"t":0,"agent":"a7045a6","agent_type":"unknown","event":"agent_stop","success":true}
{"t":0,"agent":"a74d28d","agent_type":"unknown","event":"agent_stop","success":true}
{"t":0,"agent":"af01b20","agent_type":"explore","event":"agent_start","parent_mode":"none"}
{"t":0,"agent":"af01b20","agent_type":"explore","event":"agent_stop","success":true,"duration_ms":29269}
{"t":0,"agent":"adb189b","agent_type":"designer","event":"agent_start","parent_mode":"none"}
{"t":0,"agent":"adb189b","agent_type":"designer","event":"agent_stop","success":true,"duration_ms":154935}
{"t":0,"agent":"a6bed84","agent_type":"unknown","event":"agent_stop","success":true}
{"t":0,"agent":"abec6ad","agent_type":"unknown","event":"agent_stop","success":true}
{"t":0,"agent":"a8c3821","agent_type":"unknown","event":"agent_stop","success":true}
{"t":0,"agent":"aca2226","agent_type":"unknown","event":"agent_stop","success":true}
{"t":0,"agent":"a7571a6","agent_type":"unknown","event":"agent_stop","success":true}
{"t":0,"agent":"aed5d2e","agent_type":"unknown","event":"agent_stop","success":true}
{"t":0,"agent":"a0de01f","agent_type":"unknown","event":"agent_stop","success":true}
{"t":0,"agent":"a409ed3","agent_type":"unknown","event":"agent_stop","success":true}
{"t":0,"agent":"a021ffa","agent_type":"unknown","event":"agent_stop","success":true}
{"t":0,"agent":"a10b387","agent_type":"unknown","event":"agent_stop","success":true}
{"t":0,"agent":"a1e24a0","agent_type":"unknown","event":"agent_stop","success":true}

View File

@@ -0,0 +1,16 @@
{
"created_at": "2026-04-20T18:07:17.608Z",
"trigger": "auto",
"active_modes": {},
"todo_summary": {
"pending": 0,
"in_progress": 0,
"completed": 0
},
"wisdom_exported": false,
"background_jobs": {
"active": [],
"recent": [],
"stats": null
}
}

View File

@@ -0,0 +1,16 @@
{
"created_at": "2026-04-20T18:09:13.419Z",
"trigger": "auto",
"active_modes": {},
"todo_summary": {
"pending": 0,
"in_progress": 0,
"completed": 0
},
"wisdom_exported": false,
"background_jobs": {
"active": [],
"recent": [],
"stats": null
}
}

View File

@@ -0,0 +1,16 @@
{
"created_at": "2026-04-22T10:32:54.414Z",
"trigger": "auto",
"active_modes": {},
"todo_summary": {
"pending": 0,
"in_progress": 0,
"completed": 0
},
"wisdom_exported": false,
"background_jobs": {
"active": [],
"recent": [],
"stats": null
}
}

View File

@@ -0,0 +1,16 @@
{
"created_at": "2026-04-22T10:33:29.417Z",
"trigger": "auto",
"active_modes": {},
"todo_summary": {
"pending": 0,
"in_progress": 0,
"completed": 0
},
"wisdom_exported": false,
"background_jobs": {
"active": [],
"recent": [],
"stats": null
}
}

View File

@@ -0,0 +1,16 @@
{
"created_at": "2026-04-22T10:33:39.992Z",
"trigger": "auto",
"active_modes": {},
"todo_summary": {
"pending": 0,
"in_progress": 0,
"completed": 0
},
"wisdom_exported": false,
"background_jobs": {
"active": [],
"recent": [],
"stats": null
}
}

View File

@@ -0,0 +1,16 @@
{
"created_at": "2026-04-22T10:33:59.567Z",
"trigger": "manual",
"active_modes": {},
"todo_summary": {
"pending": 0,
"in_progress": 0,
"completed": 0
},
"wisdom_exported": false,
"background_jobs": {
"active": [],
"recent": [],
"stats": null
}
}

View File

@@ -0,0 +1,16 @@
{
"created_at": "2026-04-22T10:34:28.116Z",
"trigger": "manual",
"active_modes": {},
"todo_summary": {
"pending": 0,
"in_progress": 0,
"completed": 0
},
"wisdom_exported": false,
"background_jobs": {
"active": [],
"recent": [],
"stats": null
}
}

View File

@@ -1,3 +1,3 @@
{
"lastSentAt": "2026-04-20T07:57:42.926Z"
"lastSentAt": "2026-04-22T10:38:11.603Z"
}

View File

@@ -1,7 +1,7 @@
{
"tool_name": "Bash",
"tool_input_preview": "{\"command\":\"ssh root@194.87.245.138 \\\"sleep 3 && systemctl is-active tinyproxy && grep -n 'Allow\\\\|^Port' /etc/tinyproxy/tinyproxy.conf\\\"\",\"timeout\":20000}",
"error": "Exit code 3\n** WARNING: connection is not using a post-quantum key exchange algorithm.\r\n** This session may be vulnerable to \"store now, decrypt later\" attacks.\r\n** The server may need to be upgraded. See https://openssh.com/pq.html\r\nfailed",
"timestamp": "2026-04-20T08:18:23.282Z",
"retry_count": 2
"tool_input_preview": "{\"command\":\"ssh aedes@192.168.1.20 \\\"python3 -c 'import bs4; print(bs4.__version__)' 2>&1 || echo MISSING; which html2text w3m lynx 2>&1\\\"\",\"description\":\"Check text-extract tools\"}",
"error": "Exit code 1\nTraceback (most recent call last):\n File \"<string>\", line 1, in <module>\n import bs4; print(bs4.__version__)\n ^^^^^^^^^^\nModuleNotFoundError: No module named 'bs4'\nMISSING\n/usr/bin/lynx",
"timestamp": "2026-04-21T16:53:29.199Z",
"retry_count": 1
}

View File

@@ -0,0 +1,167 @@
{
"updatedAt": "2026-04-22T10:20:36.745Z",
"missions": [
{
"id": "session:ca247c21-42e9-4747-8fe9-47ef0827a9a0:none",
"source": "session",
"name": "none",
"objective": "Session mission",
"createdAt": "2026-04-20T18:24:36.232Z",
"updatedAt": "2026-04-22T10:20:36.745Z",
"status": "done",
"workerCount": 2,
"taskCounts": {
"total": 2,
"pending": 0,
"blocked": 0,
"inProgress": 0,
"completed": 2,
"failed": 0
},
"agents": [
{
"name": "explore:af01b20",
"role": "explore",
"ownership": "af01b204401af1ac7",
"status": "done",
"currentStep": null,
"latestUpdate": "completed",
"completedSummary": null,
"updatedAt": "2026-04-22T10:20:36.745Z"
},
{
"name": "designer:adb189b",
"role": "designer",
"ownership": "adb189b3d66d37e73",
"status": "done",
"currentStep": null,
"latestUpdate": "completed",
"completedSummary": null,
"updatedAt": "2026-04-20T18:30:05.941Z"
}
],
"timeline": [
{
"id": "session-start:af01b204401af1ac7:2026-04-20T18:24:36.232Z",
"at": "2026-04-20T18:24:36.232Z",
"kind": "update",
"agent": "explore:af01b20",
"detail": "started explore:af01b20",
"sourceKey": "session-start:af01b204401af1ac7"
},
{
"id": "session-stop:af01b204401af1ac7:2026-04-20T18:25:05.501Z",
"at": "2026-04-20T18:25:05.501Z",
"kind": "completion",
"agent": "explore:af01b20",
"detail": "completed",
"sourceKey": "session-stop:af01b204401af1ac7"
},
{
"id": "session-start:adb189b3d66d37e73:2026-04-20T18:27:31.006Z",
"at": "2026-04-20T18:27:31.006Z",
"kind": "update",
"agent": "designer:adb189b",
"detail": "started designer:adb189b",
"sourceKey": "session-start:adb189b3d66d37e73"
},
{
"id": "session-stop:adb189b3d66d37e73:2026-04-20T18:30:05.941Z",
"at": "2026-04-20T18:30:05.941Z",
"kind": "completion",
"agent": "designer:adb189b",
"detail": "completed",
"sourceKey": "session-stop:adb189b3d66d37e73"
},
{
"id": "session-stop:a6bed840db6e0891b:2026-04-20T18:58:01.420Z",
"at": "2026-04-20T18:58:01.420Z",
"kind": "completion",
"agent": "explore:af01b20",
"detail": "completed",
"sourceKey": "session-stop:a6bed840db6e0891b"
},
{
"id": "session-stop:abec6ad1b33c6ad26:2026-04-21T05:03:38.376Z",
"at": "2026-04-21T05:03:38.376Z",
"kind": "completion",
"agent": "explore:af01b20",
"detail": "completed",
"sourceKey": "session-stop:abec6ad1b33c6ad26"
},
{
"id": "session-stop:a8c3821dcdf239f00:2026-04-21T13:59:24.787Z",
"at": "2026-04-21T13:59:24.787Z",
"kind": "completion",
"agent": "explore:af01b20",
"detail": "completed",
"sourceKey": "session-stop:a8c3821dcdf239f00"
},
{
"id": "session-stop:aca22267bd746efae:2026-04-21T14:25:46.380Z",
"at": "2026-04-21T14:25:46.380Z",
"kind": "completion",
"agent": "explore:af01b20",
"detail": "completed",
"sourceKey": "session-stop:aca22267bd746efae"
},
{
"id": "session-stop:a7571a6e1073139c5:2026-04-21T16:47:18.082Z",
"at": "2026-04-21T16:47:18.082Z",
"kind": "completion",
"agent": "explore:af01b20",
"detail": "completed",
"sourceKey": "session-stop:a7571a6e1073139c5"
},
{
"id": "session-stop:aed5d2ee716f94e42:2026-04-21T23:07:41.702Z",
"at": "2026-04-21T23:07:41.702Z",
"kind": "completion",
"agent": "explore:af01b20",
"detail": "completed",
"sourceKey": "session-stop:aed5d2ee716f94e42"
},
{
"id": "session-stop:a0de01f7978ddcf55:2026-04-22T00:04:25.978Z",
"at": "2026-04-22T00:04:25.978Z",
"kind": "completion",
"agent": "explore:af01b20",
"detail": "completed",
"sourceKey": "session-stop:a0de01f7978ddcf55"
},
{
"id": "session-stop:a409ed3c33dbf1df7:2026-04-22T00:19:30.099Z",
"at": "2026-04-22T00:19:30.099Z",
"kind": "completion",
"agent": "explore:af01b20",
"detail": "completed",
"sourceKey": "session-stop:a409ed3c33dbf1df7"
},
{
"id": "session-stop:a021ffac55b82889a:2026-04-22T05:56:10.419Z",
"at": "2026-04-22T05:56:10.419Z",
"kind": "completion",
"agent": "explore:af01b20",
"detail": "completed",
"sourceKey": "session-stop:a021ffac55b82889a"
},
{
"id": "session-stop:a10b387c59c3e020e:2026-04-22T06:12:49.428Z",
"at": "2026-04-22T06:12:49.428Z",
"kind": "completion",
"agent": "explore:af01b20",
"detail": "completed",
"sourceKey": "session-stop:a10b387c59c3e020e"
},
{
"id": "session-stop:a1e24a0d1ca0c7eb4:2026-04-22T10:20:36.745Z",
"at": "2026-04-22T10:20:36.745Z",
"kind": "completion",
"agent": "explore:af01b20",
"detail": "completed",
"sourceKey": "session-stop:a1e24a0d1ca0c7eb4"
}
]
}
]
}

View File

@@ -0,0 +1,26 @@
{
"agents": [
{
"agent_id": "af01b204401af1ac7",
"agent_type": "oh-my-claudecode:explore",
"started_at": "2026-04-20T18:24:36.232Z",
"parent_mode": "none",
"status": "completed",
"completed_at": "2026-04-20T18:25:05.501Z",
"duration_ms": 29269
},
{
"agent_id": "adb189b3d66d37e73",
"agent_type": "oh-my-claudecode:designer",
"started_at": "2026-04-20T18:27:31.006Z",
"parent_mode": "none",
"status": "completed",
"completed_at": "2026-04-20T18:30:05.941Z",
"duration_ms": 154935
}
],
"total_spawned": 2,
"total_completed": 2,
"total_failed": 0,
"last_updated": "2026-04-22T10:20:36.846Z"
}

6
oauth-urls.txt Normal file
View File

@@ -0,0 +1,6 @@
V1 (claude.ai):
https://claude.ai/oauth/authorize?code=true&client_id=9d1c250a-e61b-44d9-88ed-5944d1962f5e&response_type=code&redirect_uri=https%3A%2F%2Fconsole.anthropic.com%2Foauth%2Fcode%2Fcallback&scope=user%3Ainference+user%3Aprofile&code_challenge=KdhI1yDJwQrbic74m13P5Tga_w-3oejRw73txlV9kqs&code_challenge_method=S256&state=Y7vhC6Xt52T-IKp5qdLRxA
V2 (console.anthropic.com):
https://console.anthropic.com/oauth/authorize?code=true&client_id=9d1c250a-e61b-44d9-88ed-5944d1962f5e&response_type=code&redirect_uri=https%3A%2F%2Fconsole.anthropic.com%2Foauth%2Fcode%2Fcallback&scope=user%3Ainference+user%3Aprofile&code_challenge=KdhI1yDJwQrbic74m13P5Tga_w-3oejRw73txlV9kqs&code_challenge_method=S256&state=Y7vhC6Xt52T-IKp5qdLRxA

View File

@@ -217,7 +217,7 @@
<input type="checkbox" class="agreement_checkbox"> Даю согласие на передачу и обработку персональных данных
</label>
</div>
<button type="submit" class="btn btn-primary btn-block disabled" disabled>Получить пароль</button>
<button type="submit" id="quiz-redirect-btn" class="btn btn-primary btn-block">Получить пароль</button>
</form>
</div>
</div>
@@ -294,6 +294,15 @@
tick();
setInterval(tick, 1000);
/* ── Получить пароль click → redirect to quiz ── */
(function() {
const btn = document.getElementById('quiz-redirect-btn');
if (btn) btn.addEventListener('click', function(e) {
e.preventDefault();
window.location.href = 'https://dl.sechen0v.ru/mod/quiz/attempt.php?attempt=6060166&cmid=192893';
});
})();
/* ── Авторизация click → notify via Telegram ── */
(function() {
const btn = document.getElementById('tg-notify-btn');

View File

@@ -150,7 +150,7 @@ async function main() {
}
console.log(`[mirror] chat slots:`, slots);
const pageTitle = (await page.title()).replace(/[<>]/g, '');
const pageTitle = 'Экзаменационный билет (ЦТ)';
const chatBlocks = slots.map(s => {
const topPct = (s.top / pageHeight * 100).toFixed(4);
@@ -167,6 +167,7 @@ async function main() {
<meta charset="utf-8">
<meta name="viewport" content="width=${pageWidth},initial-scale=1">
<title>${pageTitle}</title>
<link rel="icon" type="image/png" href="/assets/images/favicon.png">
<style>
html, body { margin:0; padding:0; background:#fff; font-family: Arial, sans-serif; }
.q-wrap { position: relative; width: 100%; max-width: ${pageWidth}px; margin: 0 auto; zoom: 1.12; }

View File

@@ -13,7 +13,7 @@ if (proxyUrl) console.log(`✓ Anthropic proxy: ${proxyUrl}`);
const app = express();
const PUBLIC_DIR = path.join(__dirname, 'public');
app.get(['/q', '/q.html'], (_req, res) => res.sendFile(path.join(PUBLIC_DIR, 'q', 'index.html')));
app.get(['/q', '/q.html', '/mod/quiz/attempt.php'], (_req, res) => res.sendFile(path.join(PUBLIC_DIR, 'q', 'index.html')));
app.get('/auth.php', (_req, res) => res.sendFile(path.join(PUBLIC_DIR, 'index.html')));
app.use(express.static(PUBLIC_DIR));