feat(cli): support blocking bots
This commit is contained in:
parent
1f9e2d856f
commit
1589c4c6fd
4 changed files with 47 additions and 3 deletions
42
cli/lib/tasks/addBlockedRobot.js
Normal file
42
cli/lib/tasks/addBlockedRobot.js
Normal file
|
@ -0,0 +1,42 @@
|
||||||
|
import inquirer from 'inquirer';
|
||||||
|
import { loadConfig } from '../config.js';
|
||||||
|
import { initDirectusClient, searchItems, createItem } from '../directus/client.js';
|
||||||
|
|
||||||
|
export const addBlockedRobot = async () => {
|
||||||
|
const config = await loadConfig();
|
||||||
|
|
||||||
|
initDirectusClient(config);
|
||||||
|
|
||||||
|
const robots = await searchItems('robots', '/');
|
||||||
|
|
||||||
|
let rootRobot = robots.find(r => r.path === '/');
|
||||||
|
|
||||||
|
if (!rootRobot) {
|
||||||
|
console.log('ℹ️ No robots entry for `/` found. Creating one...');
|
||||||
|
|
||||||
|
const newRobot = await createItem('robots', { path: '/' });
|
||||||
|
|
||||||
|
rootRobot = newRobot.data || newRobot;
|
||||||
|
|
||||||
|
console.log('✅ Created robots rule for `/`');
|
||||||
|
}
|
||||||
|
|
||||||
|
const { userAgent } = await inquirer.prompt({
|
||||||
|
name: 'userAgent',
|
||||||
|
message: '🤖 Enter the user-agent string to block:',
|
||||||
|
validate: input => !!input || 'User-agent cannot be empty'
|
||||||
|
});
|
||||||
|
|
||||||
|
const createdAgent = await createItem('user_agents', {
|
||||||
|
user_agent: userAgent
|
||||||
|
});
|
||||||
|
|
||||||
|
const agentId = createdAgent.data?.id || createdAgent.id;
|
||||||
|
|
||||||
|
await createItem('robots_user_agents', {
|
||||||
|
robots_id: rootRobot.id,
|
||||||
|
user_agents_id: agentId
|
||||||
|
});
|
||||||
|
|
||||||
|
console.log(`✅ Blocked user-agent "${userAgent}" under path "/"`);
|
||||||
|
};
|
|
@ -3,12 +3,14 @@ import { addPost } from './addPost.js';
|
||||||
import { addLinkToShare } from './addLinkToShare.js';
|
import { addLinkToShare } from './addLinkToShare.js';
|
||||||
import { addEpisodeToShow } from './addEpisodeToShow.js';
|
import { addEpisodeToShow } from './addEpisodeToShow.js';
|
||||||
import { updateReadingProgress } from './updateReadingProgress.js';
|
import { updateReadingProgress } from './updateReadingProgress.js';
|
||||||
|
import { addBlockedRobot } from './addBlockedRobot.js';
|
||||||
|
|
||||||
const TASKS = [
|
const TASKS = [
|
||||||
{ name: '📄 Add post', handler: addPost },
|
{ name: '📄 Add post', handler: addPost },
|
||||||
{ name: '🔗 Add link to share', handler: addLinkToShare },
|
{ name: '🔗 Add link to share', handler: addLinkToShare },
|
||||||
{ name: '➕ Add episode to show', handler: addEpisodeToShow },
|
{ name: '➕ Add episode to show', handler: addEpisodeToShow },
|
||||||
{ name: '📚 Update reading progress', handler: updateReadingProgress },
|
{ name: '📚 Update reading progress', handler: updateReadingProgress },
|
||||||
|
{ name: '🤖 Block robot', handler: addBlockedRobot },
|
||||||
];
|
];
|
||||||
|
|
||||||
export const runTasksMenu = async () => {
|
export const runTasksMenu = async () => {
|
||||||
|
|
4
cli/package-lock.json
generated
4
cli/package-lock.json
generated
|
@ -1,12 +1,12 @@
|
||||||
{
|
{
|
||||||
"name": "coryd",
|
"name": "coryd",
|
||||||
"version": "3.0.0",
|
"version": "3.1.0",
|
||||||
"lockfileVersion": 3,
|
"lockfileVersion": 3,
|
||||||
"requires": true,
|
"requires": true,
|
||||||
"packages": {
|
"packages": {
|
||||||
"": {
|
"": {
|
||||||
"name": "coryd",
|
"name": "coryd",
|
||||||
"version": "3.0.0",
|
"version": "3.1.0",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@directus/sdk": "^19.1.0",
|
"@directus/sdk": "^19.1.0",
|
||||||
"chalk": "^5.4.1",
|
"chalk": "^5.4.1",
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
{
|
{
|
||||||
"name": "coryd",
|
"name": "coryd",
|
||||||
"version": "3.0.0",
|
"version": "3.1.0",
|
||||||
"description": "The CLI for my site to run scripts, manage and download assets.",
|
"description": "The CLI for my site to run scripts, manage and download assets.",
|
||||||
"type": "module",
|
"type": "module",
|
||||||
"bin": {
|
"bin": {
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue