feat(cli): support blocking bots
This commit is contained in:
parent
1f9e2d856f
commit
91621b120a
5 changed files with 48 additions and 4 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 { addEpisodeToShow } from './addEpisodeToShow.js';
|
||||
import { updateReadingProgress } from './updateReadingProgress.js';
|
||||
import { addBlockedRobot } from './addBlockedRobot.js';
|
||||
|
||||
const TASKS = [
|
||||
{ name: '📄 Add post', handler: addPost },
|
||||
{ name: '🔗 Add link to share', handler: addLinkToShare },
|
||||
{ name: '➕ Add episode to show', handler: addEpisodeToShow },
|
||||
{ name: '📚 Update reading progress', handler: updateReadingProgress },
|
||||
{ name: '🤖 Block robot', handler: addBlockedRobot },
|
||||
];
|
||||
|
||||
export const runTasksMenu = async () => {
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue