134 lines
3.7 KiB
Markdown
134 lines
3.7 KiB
Markdown
# Peer Directory Plugin
|
|
|
|
A P2NS plugin that provides a web interface for browsing and searching all domains in the P2NS network.
|
|
|
|
## Overview
|
|
|
|
The Peer Directory plugin serves as a central directory for discovering domains within the P2NS peer-to-peer network. It displays all claimed domains, categorizes them by type, and provides search and pagination functionality.
|
|
|
|
## Features
|
|
|
|
- **Domain Listing**: View all domains in the P2NS network
|
|
- **Domain Categorization**: Domains are categorized as:
|
|
- `remote` - Domains owned by other peers in the network
|
|
- `local` - Domains you own in the P2P network
|
|
- `internal` - Internal P2NS system domains (e.g., `p2ns.admin`)
|
|
- `plugin` - Plugin domains from `plugin-sites/`
|
|
- **Sorting Options**: Sort domains by type, name (A-Z or Z-A), or hash
|
|
- **Pagination**: Navigate through large domain lists with page controls
|
|
- **Real-Time Data**: Domain list is fetched fresh from the P2NS network on each request
|
|
- **Responsive UI**: Clean, modern interface with Tailwind CSS
|
|
|
|
## Access
|
|
|
|
Navigate to `https://peer.directory` in your browser (requires P2NS to be running and the root CA to be trusted).
|
|
|
|
## API Endpoints
|
|
|
|
### `GET /domains`
|
|
|
|
Returns a paginated list of all domains in the P2NS network.
|
|
|
|
**Query Parameters:**
|
|
- `page` (optional): Page number (1-indexed, default: 1)
|
|
- `limit` (optional): Domains per page (1-10, default: 10)
|
|
- `sort` (optional): Sort order - one of:
|
|
- `type` (default) - Sort by domain type
|
|
- `type-desc` - Sort by domain type (reversed)
|
|
- `name` - Sort alphabetically (A-Z)
|
|
- `name-desc` - Sort alphabetically (Z-A)
|
|
- `hash` - Sort by hash
|
|
- `hash-desc` - Sort by hash (reversed)
|
|
|
|
**Response:**
|
|
```json
|
|
{
|
|
"domains": [
|
|
{
|
|
"domain": "example.tld",
|
|
"type": "remote",
|
|
"hash": "hs://s00084bf...",
|
|
"isLocal": false
|
|
},
|
|
{
|
|
"domain": "peer.directory",
|
|
"type": "internal",
|
|
"hash": "internal",
|
|
"isLocal": true
|
|
}
|
|
],
|
|
"total": 15,
|
|
"page": 1,
|
|
"limit": 10,
|
|
"totalPages": 2
|
|
}
|
|
```
|
|
|
|
## Admin Panel Integration
|
|
|
|
The plugin registers the following in the P2NS admin panel:
|
|
|
|
### Actions
|
|
- **Refresh Domains**: Manually trigger a domain list refresh
|
|
|
|
### Settings
|
|
- **Default Sort Order**: Choose the default sorting method for the domain list
|
|
- **Items Per Page**: Set the default number of domains shown per page
|
|
|
|
## File Structure
|
|
|
|
```
|
|
peer.directory/
|
|
├── config.json # Plugin configuration
|
|
├── index.js # Backend handler and API logic
|
|
├── README.md # Plugin documentation
|
|
└── www/ # Frontend files
|
|
├── index.html # Main HTML page
|
|
├── icon.svg # Plugin icon
|
|
├── manifest.json
|
|
└── css/
|
|
├── style.css
|
|
└── tailwind.css
|
|
```
|
|
|
|
## How It Works
|
|
|
|
1. **Domain Discovery**: The plugin fetches all DNS entries from the P2NS network
|
|
2. **Categorization**: Each domain is categorized based on:
|
|
- Whether it's a plugin domain (in `plugin-sites/`)
|
|
- Whether it's an internal domain (like `p2ns.admin`)
|
|
- Whether the local peer is the resolved claimant (owner)
|
|
3. **Sorting**: Domains are sorted according to the requested sort option
|
|
4. **Pagination**: Results are paginated for efficient browsing
|
|
|
|
## Configuration
|
|
|
|
The plugin is configured via `config.json`:
|
|
|
|
```json
|
|
{
|
|
"name": "peer.directory",
|
|
"version": "1.0.0",
|
|
"domain": "peer.directory",
|
|
"enabled": true,
|
|
"description": "P2NS peer directory browser - Browse and search P2NS domains",
|
|
"www": "www"
|
|
}
|
|
```
|
|
|
|
## Dependencies
|
|
|
|
- P2NS Plugin SDK
|
|
- No external dependencies required
|
|
|
|
## Related Documentation
|
|
|
|
- [Plugin System Guide](../PLUGINS.md)
|
|
- [Plugin SDK Reference](../PLUGIN_SDK.md)
|
|
- [REST API Documentation](../RESTAPI.md)
|
|
|
|
## License
|
|
|
|
MIT
|
|
|