Skip to content

Latest commit

 

History

History
475 lines (357 loc) · 16.1 KB

File metadata and controls

475 lines (357 loc) · 16.1 KB

WpManager

Versión en Español

Professional WPF desktop application for managing and auditing multiple WordPress sites from a single interface. Built on .NET 6 with MVVM architecture, SQLite persistence, and OpenAI integration for content generation.


Table of Contents


Features

Site Validation

  • 3 validation methods: REST API, XML-RPC, and Direct Login — auto-detects the best method per site
  • Multi-threaded: up to 100 concurrent threads with configurable timeout
  • Role detection: identifies Admin, Editor, Author, Contributor, Subscriber
  • Pause / Resume / Stop support during active scanning
  • Retry logic: exponential backoff on transient failures

Post & Page Management

  • Load, create, edit, delete posts across any validated site
  • Edit page content (front page, home page, or any page) in bulk
  • Add anchor links to posts and pages individually or in batch

Mass Operations

  • Download posts from multiple sites simultaneously
  • Search & replace in titles and/or content (with case-sensitivity option)
  • Strip HTML, reset edits, and batch-save changes
  • Publish articles to multiple sites with configurable delay and thread count

Article Generation

  • Generate multiple unique articles from a base template
  • Spintax support: {option1|option2|option3} for natural variation
  • Load articles from single files, multiple files, or entire folders
  • Insert anchor links at start, middle, or end of content
  • AI-powered generation via OpenAI API (any model available in your account)

Organization

  • SQLite database (wpsites.db) — persistent storage of all validated sites
  • Folder system — organize sites into hierarchical nested folders
  • Merge external databases, export credentials, revalidate stored sites

Proxy Support

  • HTTP, HTTPS, SOCKS4, SOCKS5
  • Authenticated proxies (user:pass@host:port)
  • Automatic rotation and response-time tracking
  • Built-in free proxy fetcher

System Requirements

Requirement Minimum
Operating System Windows 10 / Windows 11 (x64)
Runtime .NET 6.0 (bundled in release)
RAM 4 GB
Disk Space 200 MB
Network Internet connection required

Installation

  1. Go to the Releases page
  2. Download WpManager-v1.0-windows-x64.zip
  3. Extract to any folder
  4. Run WpManager.exe

No installer required. The .NET 6 runtime is self-contained in the executable.


Interface Overview

┌──────────────────────────────────────────────────────────────────┐
│  WpManager                                          ─  □  ✕     │
├────┬─────────────────────────────────────────────────────────────┤
│ WP │  [Module content area]                                      │
│    │                                                             │
│ [0]│  ← Site Checker                                             │
│ [1]│  ← Post Manager                                             │
│ [2]│  ← Edit Post                                                │
│ [4]│  ← Create Post                                              │
│ [5]│  ← Mass Edit                                                │
│ [6]│  ← Article Generator                                        │
│ [7]│  ← Page Editor                                              │
│ [8]│  ← Site Manager                                             │
│ [9]│  ← Folders                                                  │
│    │                                                             │
│ [3]│  ← Settings (bottom)                                        │
└────┴─────────────────────────────────────────────────────────────┘

Window size: 1400×900 (minimum 1200×800). Custom dark theme with cyan/green accents.


Module 0 — Site Checker

Validates WordPress credentials from a list and identifies the access level for each site.

How to use

  1. Paste your credential list into the input box (or drag and drop a .txt file)
  2. Set Thread count (1–100, default 10) and Timeout (5–60 s, default 15)
  3. Select Validation method: AutoDetect, REST API, XML-RPC, or Login
  4. Click Start

Progress Panel

        ◉  47%
  ─────────────────
  Total:    500
  Threads:  8 / 10
  Elapsed:  00:01:23
  Found:    47

Results DataGrid

Column Description
URL WordPress site URL
Username Login username
Password Login password
Role Admin / Editor / Author / Contributor / Subscriber
Post Count Number of posts on the site
Can Upload Whether the account can upload media
Status Valid / Invalid / Error
Method REST API / XML-RPC / Login

Role Filter Buttons

Filter results by role: Admin · Editor · Author · Contributor · Subscriber · Unknown · All

Export Options

  • Export — save results to file
  • Copy credentials — copy to clipboard in original format
  • Open results folder — open the output directory

Module 1 — Post Manager

Browse posts from any validated site.

  1. Select a site from the dropdown
  2. Click Load posts
  3. DataGrid shows: ID, Title, Status, Author, Date, Link
  4. Click a post to view its URL — use Open URL to open in browser

Module 2 — Edit Post

Edit an existing post on any site.

  1. Select a site → click Load posts → select a post from the dropdown
  2. Edit Title, Content, and Status (publish / draft / pending / private / trash)
  3. Click Update to save changes
  4. Click Delete to permanently remove the post
  5. Click Generate AI content to rewrite or extend the post using OpenAI (API key required)

Module 4 — Create Post

Publish a new post to any validated site.

  1. Select a site from the dropdown
  2. Enter Title, Content, and set Status (default: publish)
  3. Click Create Post
  4. The created post's ID and URL are shown on success

Module 5 — Mass Edit

Download posts from multiple sites and batch-edit them.

Step 1 — Download

  • Select target sites from the checkbox grid
  • Set Posts per site (1–500)
  • Click Download

Step 2 — Edit

Feature Description
Search & Replace Find text in titles and/or content with optional case sensitivity
Strip HTML Remove all HTML tags from content
Reset Restore original downloaded content
Add Anchor Insert a hyperlink at start / middle / end of content
Save Batch-save all modified posts back to their sites

The DataGrid shows: Site URL, Post ID, Original Title, Modified Title, Status, Link.


Module 6 — Article Generator

Generate and publish unique articles across multiple sites.

Step 1 — Load articles

Option Description
Manual entry Type base title and content directly
Load from file Import a single .txt article
Load multiple files Import several files at once
Load folder Import all .txt files in a directory
Generate with AI Use OpenAI prompt to create articles automatically

Spintax Format

Use {variation1|variation2|variation3} in titles or content to generate unique versions:

{Hello|Hi|Greetings}, this is a {great|fantastic|excellent} article about {SEO|digital marketing|WordPress}.

Step 2 — Configure publishing

Setting Description Default
Anchor text Link text to embed in content
Anchor URL Target URL for the link
Anchor position Start / Middle / End End
Delay between posts Milliseconds between each publish 500 ms
Publish threads Concurrent publishing operations 20

Step 3 — Publish

  • Select articles from the template list
  • Click Publish unique articles
  • Progress bar and per-site status are shown in real time

Module 7 — Page Editor

Find and edit WordPress pages across multiple sites.

Search Options

Button Action
Search front pages Finds the page set as front page
Search home pages Finds the blog home page
Search all pages Lists all pages on the site

Edit

  • Select a page from the DataGrid (Title, Type, Link, Editable)
  • Edit Title and Content (HTML supported)
  • Add anchor links individually or to all selected pages at once
  • Click Save page content to update

Module 8 — Site Manager

Manage the persistent site database.

Action Description
Load from database Display all stored validated sites
Export database Export all sites to a credential file
Merge new base Import an external database and merge into the current one
Revalidate Re-check all stored sites against live WordPress installations
Delete selected Remove selected sites from the database

The DataGrid shows: URL, Username, Role, Post Count, Blog Name, Last Validated date.


Module 9 — Folders

Organize validated sites into hierarchical folders.

  • Create root folders and nested subfolders
  • Rename folders at any level
  • Assign sites to a folder via the FolderSelectDialog
  • Expand/collapse folder tree
  • Each folder shows its contained sites in a list

Module 3 — Settings

OpenAI Configuration

Setting Description
API Key Your OpenAI API key (stored encrypted in config.json)
Model Select from models available in your account (fetched live)
Validate API key Tests the key against the OpenAI API

Proxy Configuration

Setting Description
Use proxy Enable/disable proxy routing
Proxy list One proxy per line
Load from file Import proxies from a .txt file
Test proxies Validate all proxies and show working count
Fetch free proxies Automatically fetch and test free public proxies

General Settings

Setting Default Range
Thread count 10 1–100
Timeout (seconds) 15 5–60
Max retries 3 1–10
Random site selection count 10
Use random selection Off

Credential Input Formats

The Site Checker accepts multiple credential formats automatically:

Format Example
Pipe-delimited https://site.com|admin|password123
Dash-delimited https://site.com–admin–password123
Hash/At format https://site.com/wp-login.php#admin@password123
Colon/ULP format https://site.com:admin:password123

URL auto-cleaning: strips /wp-login.php, /wp-admin/, /xmlrpc.php suffixes and auto-adds https:// if missing.


Proxy Configuration

Supported Formats

# Host:port only
192.168.1.1:8080

# Protocol + host:port
http://proxy.example.com:3128
https://proxy.example.com:443
socks4://10.0.0.1:1080
socks5://10.0.0.1:1080

# Authenticated
http://user:pass@proxy.example.com:3128
socks5://user:pass@10.0.0.1:1080

# host:port:user:pass
proxy.example.com:3128:username:password

Project Architecture

Built with MVVM pattern, dependency injection, and SQLite persistence on .NET 6 WPF.

WpManager/
├── Models/
│   ├── WpSite.cs              # WordPress site entity + multi-format credential parser
│   ├── WpPost.cs              # Post entity with status colors
│   ├── WpPage.cs              # Page entity
│   ├── WpCategory.cs          # Post category
│   ├── ArticleTemplate.cs     # Article generation template with anchor support
│   ├── DownloadedPost.cs      # Post downloaded for mass editing
│   ├── LoadedPostItem.cs      # Post loaded from file for batch publishing
│   ├── Folder.cs              # Hierarchical folder structure (self-referential)
│   ├── TreeItem.cs            # Tree view item (Folder / Site / Post)
│   ├── UniquePublishResult.cs # Result of a publish operation
│   └── ProxyInfo.cs           # Proxy with response time tracking
├── ViewModels/
│   ├── MainViewModel.cs       # 800+ lines — all commands and observable properties
│   ├── ViewModelBase.cs       # INotifyPropertyChanged base
│   └── RelayCommand.cs        # Generic ICommand implementation
├── Services/
│   ├── WpValidationService.cs # REST / XML-RPC / Login validation with retry logic
│   ├── WpPostService.cs       # Post CRUD via REST API and XML-RPC
│   ├── PageService.cs         # WordPress page discovery and editing
│   ├── ArticleService.cs      # Article generation, spintax, anchor insertion
│   ├── DatabaseService.cs     # SQLite (wpsites.db) — Sites + Folders tables
│   ├── FileService.cs         # File export, credential formatting
│   ├── FolderService.cs       # Folder hierarchy CRUD
│   ├── SettingsService.cs     # config.json serialization
│   ├── ProxyService.cs        # Proxy parsing, testing, rotation
│   └── OpenAIService.cs       # OpenAI API — model listing and content generation
├── Views/
│   ├── MainWindow.xaml        # Main 1400×900 dark-theme window
│   └── FolderSelectDialog.xaml # Folder picker dialog with tree view
├── Converters/
│   └── ValueConverters.cs     # 7 WPF value converters (roles, visibility, progress)
├── Themes/
│   └── DarkTheme.xaml         # Global dark theme styles
└── App.xaml                   # Application root + theme registration

Key Dependencies

Package Version Purpose
CommunityToolkit.Mvvm 8.2.2 MVVM base classes and ObservableObject
Microsoft.Data.Sqlite 8.0.0 SQLite database access
HtmlAgilityPack 1.11.61 HTML parsing and manipulation
System.Text.Json 8.0.5 JSON config serialization

Database Schema

-- Sites table
CREATE TABLE Sites (
    Id INTEGER PRIMARY KEY AUTOINCREMENT,
    Url TEXT NOT NULL,
    Username TEXT NOT NULL,
    Password TEXT,
    Role TEXT,
    BlogName TEXT,
    PostCount INTEGER,
    CanUpload INTEGER,
    ValidationMethod TEXT,
    RestApiEnabled INTEGER,
    XmlRpcEnabled INTEGER,
    DateAdded TEXT,
    LastValidated TEXT,
    FolderId INTEGER REFERENCES Folders(Id),
    UNIQUE(Url, Username)
);

-- Folders table (nested hierarchy)
CREATE TABLE Folders (
    Id INTEGER PRIMARY KEY AUTOINCREMENT,
    Name TEXT NOT NULL,
    ParentId INTEGER REFERENCES Folders(Id) ON DELETE CASCADE,
    DateCreated TEXT
);

License

MIT License — see LICENSE for full terms.

Legal Notice: This tool is intended for authorized security audits, administration of WordPress sites you own or manage, and legitimate content management workflows. Use only against installations you have explicit written permission to access. The authors assume no liability for unauthorized use.