pwpush


Namepwpush JSON
Version 0.12.0 PyPI version JSON
download
home_pagehttps://github.com/pglombardo/pwpush
SummaryCommand Line Interface to Password Pusher - secure information distribution with automatic expiration controls.
upload_time2025-10-06 11:25:21
maintainerNone
docs_urlNone
authorpwpush
requires_python<4.0,>=3.9.2
licenseMIT
keywords security cli password distribution sharing secure
VCS
bugtrack_url
requirements No requirements were recorded.
Travis-CI No Travis.
coveralls test coverage No coveralls.
            # pwpush CLI

<div align="center">

[![Build status](https://github.com/pglombardo/pwpush-cli/workflows/build/badge.svg?branch=master&event=push)](https://github.com/pglombardo/pwpush-cli/actions?query=workflow%3Abuild)
[![Python Version](https://img.shields.io/pypi/pyversions/pwpush.svg)](https://pypi.org/project/pwpush/)
[![Dependencies Status](https://img.shields.io/badge/dependencies-up%20to%20date-brightgreen.svg)](https://github.com/pglombardo/pwpush-cli/pulls?utf8=%E2%9C%93&q=is%3Apr%20author%3Aapp%2Fdependabot)

[![Code style: black](https://img.shields.io/badge/code%20style-black-000000.svg)](https://github.com/psf/black)
[![Security: bandit](https://img.shields.io/badge/security-bandit-green.svg)](https://github.com/PyCQA/bandit)
[![Pre-commit](https://img.shields.io/badge/pre--commit-enabled-brightgreen?logo=pre-commit&logoColor=white)](https://github.com/pglombardo/pwpush-cli/blob/master/.pre-commit-config.yaml)
[![Semantic Versions](https://img.shields.io/badge/%20%20%F0%9F%93%A6%F0%9F%9A%80-semantic--versions-e10079.svg)](https://github.com/pglombardo/pwpush-cli/releases)
[![License](https://img.shields.io/github/license/pglombardo/pwpush-cli)](https://github.com/pglombardo/pwpush/blob/master/LICENSE)

**Command Line Interface for Password Pusher**
<br>
Secure information distribution with automatic expiration controls.

</div>

## Overview

The `pwpush` CLI is a powerful command-line tool that interfaces with [Password Pusher](https://pwpush.com) instances for secure information distribution. It supports both the hosted services (eu.pwpush.com, us.pwpush.com) and self-hosted instances.

### Why Secure Information Distribution?

Traditional communication tools create permanent digital footprints that can be exploited years later. Password Pusher sidesteps this by creating:

- **Self-destructing shareable links** that auto-expire after a preset number of views
- **Time-based expiration** that automatically deletes content after a set duration  
- **Zero permanent storage** - once expired, the information is completely removed
- **Full audit trails** so you know exactly who accessed what and when

### Key Features

- 🔐 **Secure Information Distribution**: Self-destructing links for passwords, secrets, and files with automatic expiration and complete audit trails.
- 🌐 **Multi-Instance Support**: Works with eu.pwpush.com, us.pwpush.com, or your own instance
- 🔑 **Authentication**: Full API integration with user accounts
- 📊 **Audit Logs**: Track access and usage of distributed content
- 🎯 **Flexible Expiration**: Set expiration by views, days, or both
- 📁 **File Support**: Distribute files securely with the same expiration controls and audit logs
- 🎨 **Rich Output**: Beautiful terminal output with tables and formatting

## Installation

```bash
pip install pwpush
```

**Requirements**: Python 3.9.2 or higher

## Quick Start

### 1. Basic Usage (Anonymous)

```bash
# Push a password (interactive mode)
pwpush push

# Push a password directly
pwpush push --secret "mypassword123"

# Auto-generate a secure password
pwpush push --auto

# Push with custom expiration (7 days, 5 views)
pwpush push --secret "mypassword" --days 7 --views 5
```

### 2. Configure Your Instance

The CLI works with multiple Password Pusher instances:

```bash
# Use the EU instance
pwpush config set --key url --value https://eu.pwpush.com

# Use the US instance  
pwpush config set --key url --value https://us.pwpush.com

# Use your own self-hosted instance
pwpush config set --key url --value https://pwpush.yourdomain.com
```

### 3. Authentication (Optional)

For advanced features like listing pushes and audit logs, authenticate with your account:

```bash
# Login with your credentials
pwpush login

# Or set credentials manually
pwpush config set --key email --value your@email.com
pwpush config set --key token --value your_api_token
```

Get your API token from: https://pwpush.com/en/users/token

## Common Commands

### Pushing Content

```bash
# Push a password with custom settings
pwpush push --secret "password123" --days 3 --views 10 --deletable

# Push as URL (for sharing links)
pwpush push --secret "https://example.com" --kind url

# Push as QR code
pwpush push --secret "QR data content" --kind qr

# Push a file
pwpush push-file document.pdf --days 7 --views 5

# Push with a reference note (requires authentication)
pwpush push --secret "password" --note "Employee onboarding - John Doe"

# Require click-through for retrieval (prevents URL scanners)
pwpush push --secret "password" --retrieval-step
```

### Managing Pushes

```bash
# List your active pushes (requires authentication)
pwpush list

# List expired pushes
pwpush list --expired

# View audit log for a specific push
pwpush audit <url_token>

# Expire a push immediately
pwpush expire <url_token>
```

### Configuration

```bash
# View current configuration
pwpush config show

# Set default expiration settings
pwpush config set --key expire_after_days --value 7
pwpush config set --key expire_after_views --value 10

# Enable JSON output by default
pwpush config set --key json --value true

# Logout and clear credentials
pwpush logout
```

## Advanced Usage

### Push Types

The `--kind` parameter allows you to specify the type of content being pushed:

```bash
# Text/Password (default)
pwpush push --secret "mypassword" --kind text

# URL - for sharing links that will be displayed as clickable URLs
pwpush push --secret "https://example.com" --kind url

# QR Code - for content that will be displayed as a QR code
pwpush push --secret "QR data content" --kind qr

# File - automatically set when using push-file command
pwpush push-file document.pdf  # kind is automatically set to "file"
```

### JSON Output

```bash
# Get JSON output for scripting
pwpush --json push --secret "password"
pwpush --json list
```

### Verbose and Debug Modes

```bash
# Enable verbose output
pwpush --verbose push --secret "password"

# Enable debug mode for troubleshooting
pwpush --debug push --secret "password"
```

### Batch Operations

```bash
# Generate and distribute multiple passwords
for i in {1..5}; do
  pwpush --json push --auto --note "Batch password $i"
done
```

## Configuration Reference

### Instance Settings

| Key | Description | Example |
|-----|-------------|---------|
| `url` | Password Pusher instance URL | `https://eu.pwpush.com` |
| `email` | Your account email | `user@example.com` |
| `token` | Your API token | `abc123...` |

### Expiration Settings

| Key | Description | Valid Values |
|-----|-------------|--------------|
| `expire_after_days` | Default days until expiration | 1-90 |
| `expire_after_views` | Default views until expiration | 1-100 |
| `retrieval_step` | Require click-through for retrieval | true/false |
| `deletable_by_viewer` | Allow viewers to delete content | true/false |

### CLI Settings

| Key | Description | Valid Values |
|-----|-------------|--------------|
| `json` | Output in JSON format | true/false |
| `verbose` | Enable verbose output | true/false |

## Examples

### Developer Workflow

```bash
# Push database credentials with team
pwpush push --secret "db_password_123" --days 1 --views 3 --note "Staging DB - expires in 24h"

# Push API keys securely
pwpush push --secret "sk_live_..." --days 7 --views 1 --note "Production API Key"

# Share deployment URLs as clickable links
pwpush push --secret "https://staging.example.com/deploy" --kind url --days 1 --views 5
```

### System Administration

```bash
# Push temporary access credentials
pwpush push --auto --days 1 --views 1 --note "Emergency access - $(date)"

# Push configuration files
pwpush push-file /etc/nginx/nginx.conf --days 3 --views 5
```

### Team Collaboration

```bash
# Push deployment secrets
pwpush push --secret "deploy_token" --days 1 --views 10 --note "Release v2.1.0"

# Push sensitive documents
pwpush push-file sensitive_document.pdf --days 7 --views 3 --retrieval-step
```

## Troubleshooting

### Common Issues

**Connection Errors**
```bash
# Check your instance URL
pwpush config show

# Test connectivity
pwpush --debug push --secret "test"
```

**Authentication Issues**
```bash
# Verify your credentials
pwpush config show

# Re-login
pwpush logout
pwpush login
```

**Permission Errors**
```bash
# Check file permissions when uploading files
ls -la your_file.txt
pwpush push-file your_file.txt
```

### Getting Help

```bash
# View all available commands
pwpush --help

# Get help for specific commands
pwpush push --help
pwpush config --help
```

## Security Notes

- Passwords and secrets are encrypted before transmission
- All communication uses HTTPS
- Content is automatically deleted after expiration
- API tokens should be kept secure and not shared
- Use `--retrieval-step` to prevent URL scanners from consuming views

## Contributing

We welcome contributions! Please see our [Contributing Guide](CONTRIBUTING.md) for details.

## License

This project is licensed under the MIT License - see the [LICENSE](LICENSE) file for details.

## Links

- **Password Pusher**: https://pwpush.com
- **Documentation**: https://docs.pwpush.com
- **GitHub Repository**: https://github.com/pglombardo/pwpush-cli
- **Open Source Project**: https://github.com/pglombardo/PasswordPusher

## About Apnotic

This CLI tool is built by **Apnotic**.

- **Company Homepage**: https://apnotic.com
- **Password Pusher Pro**: https://pwpush.com

            

Raw data

            {
    "_id": null,
    "home_page": "https://github.com/pglombardo/pwpush",
    "name": "pwpush",
    "maintainer": null,
    "docs_url": null,
    "requires_python": "<4.0,>=3.9.2",
    "maintainer_email": null,
    "keywords": "security, cli, password, distribution, sharing, secure",
    "author": "pwpush",
    "author_email": "pglombardo@hey.com",
    "download_url": "https://files.pythonhosted.org/packages/f1/f8/bd42beead3762f4241b92bca4feed2d7ea384e135e5b298dba77d9f7159f/pwpush-0.12.0.tar.gz",
    "platform": null,
    "description": "# pwpush CLI\n\n<div align=\"center\">\n\n[![Build status](https://github.com/pglombardo/pwpush-cli/workflows/build/badge.svg?branch=master&event=push)](https://github.com/pglombardo/pwpush-cli/actions?query=workflow%3Abuild)\n[![Python Version](https://img.shields.io/pypi/pyversions/pwpush.svg)](https://pypi.org/project/pwpush/)\n[![Dependencies Status](https://img.shields.io/badge/dependencies-up%20to%20date-brightgreen.svg)](https://github.com/pglombardo/pwpush-cli/pulls?utf8=%E2%9C%93&q=is%3Apr%20author%3Aapp%2Fdependabot)\n\n[![Code style: black](https://img.shields.io/badge/code%20style-black-000000.svg)](https://github.com/psf/black)\n[![Security: bandit](https://img.shields.io/badge/security-bandit-green.svg)](https://github.com/PyCQA/bandit)\n[![Pre-commit](https://img.shields.io/badge/pre--commit-enabled-brightgreen?logo=pre-commit&logoColor=white)](https://github.com/pglombardo/pwpush-cli/blob/master/.pre-commit-config.yaml)\n[![Semantic Versions](https://img.shields.io/badge/%20%20%F0%9F%93%A6%F0%9F%9A%80-semantic--versions-e10079.svg)](https://github.com/pglombardo/pwpush-cli/releases)\n[![License](https://img.shields.io/github/license/pglombardo/pwpush-cli)](https://github.com/pglombardo/pwpush/blob/master/LICENSE)\n\n**Command Line Interface for Password Pusher**\n<br>\nSecure information distribution with automatic expiration controls.\n\n</div>\n\n## Overview\n\nThe `pwpush` CLI is a powerful command-line tool that interfaces with [Password Pusher](https://pwpush.com) instances for secure information distribution. It supports both the hosted services (eu.pwpush.com, us.pwpush.com) and self-hosted instances.\n\n### Why Secure Information Distribution?\n\nTraditional communication tools create permanent digital footprints that can be exploited years later. Password Pusher sidesteps this by creating:\n\n- **Self-destructing shareable links** that auto-expire after a preset number of views\n- **Time-based expiration** that automatically deletes content after a set duration  \n- **Zero permanent storage** - once expired, the information is completely removed\n- **Full audit trails** so you know exactly who accessed what and when\n\n### Key Features\n\n- \ud83d\udd10 **Secure Information Distribution**: Self-destructing links for passwords, secrets, and files with automatic expiration and complete audit trails.\n- \ud83c\udf10 **Multi-Instance Support**: Works with eu.pwpush.com, us.pwpush.com, or your own instance\n- \ud83d\udd11 **Authentication**: Full API integration with user accounts\n- \ud83d\udcca **Audit Logs**: Track access and usage of distributed content\n- \ud83c\udfaf **Flexible Expiration**: Set expiration by views, days, or both\n- \ud83d\udcc1 **File Support**: Distribute files securely with the same expiration controls and audit logs\n- \ud83c\udfa8 **Rich Output**: Beautiful terminal output with tables and formatting\n\n## Installation\n\n```bash\npip install pwpush\n```\n\n**Requirements**: Python 3.9.2 or higher\n\n## Quick Start\n\n### 1. Basic Usage (Anonymous)\n\n```bash\n# Push a password (interactive mode)\npwpush push\n\n# Push a password directly\npwpush push --secret \"mypassword123\"\n\n# Auto-generate a secure password\npwpush push --auto\n\n# Push with custom expiration (7 days, 5 views)\npwpush push --secret \"mypassword\" --days 7 --views 5\n```\n\n### 2. Configure Your Instance\n\nThe CLI works with multiple Password Pusher instances:\n\n```bash\n# Use the EU instance\npwpush config set --key url --value https://eu.pwpush.com\n\n# Use the US instance  \npwpush config set --key url --value https://us.pwpush.com\n\n# Use your own self-hosted instance\npwpush config set --key url --value https://pwpush.yourdomain.com\n```\n\n### 3. Authentication (Optional)\n\nFor advanced features like listing pushes and audit logs, authenticate with your account:\n\n```bash\n# Login with your credentials\npwpush login\n\n# Or set credentials manually\npwpush config set --key email --value your@email.com\npwpush config set --key token --value your_api_token\n```\n\nGet your API token from: https://pwpush.com/en/users/token\n\n## Common Commands\n\n### Pushing Content\n\n```bash\n# Push a password with custom settings\npwpush push --secret \"password123\" --days 3 --views 10 --deletable\n\n# Push as URL (for sharing links)\npwpush push --secret \"https://example.com\" --kind url\n\n# Push as QR code\npwpush push --secret \"QR data content\" --kind qr\n\n# Push a file\npwpush push-file document.pdf --days 7 --views 5\n\n# Push with a reference note (requires authentication)\npwpush push --secret \"password\" --note \"Employee onboarding - John Doe\"\n\n# Require click-through for retrieval (prevents URL scanners)\npwpush push --secret \"password\" --retrieval-step\n```\n\n### Managing Pushes\n\n```bash\n# List your active pushes (requires authentication)\npwpush list\n\n# List expired pushes\npwpush list --expired\n\n# View audit log for a specific push\npwpush audit <url_token>\n\n# Expire a push immediately\npwpush expire <url_token>\n```\n\n### Configuration\n\n```bash\n# View current configuration\npwpush config show\n\n# Set default expiration settings\npwpush config set --key expire_after_days --value 7\npwpush config set --key expire_after_views --value 10\n\n# Enable JSON output by default\npwpush config set --key json --value true\n\n# Logout and clear credentials\npwpush logout\n```\n\n## Advanced Usage\n\n### Push Types\n\nThe `--kind` parameter allows you to specify the type of content being pushed:\n\n```bash\n# Text/Password (default)\npwpush push --secret \"mypassword\" --kind text\n\n# URL - for sharing links that will be displayed as clickable URLs\npwpush push --secret \"https://example.com\" --kind url\n\n# QR Code - for content that will be displayed as a QR code\npwpush push --secret \"QR data content\" --kind qr\n\n# File - automatically set when using push-file command\npwpush push-file document.pdf  # kind is automatically set to \"file\"\n```\n\n### JSON Output\n\n```bash\n# Get JSON output for scripting\npwpush --json push --secret \"password\"\npwpush --json list\n```\n\n### Verbose and Debug Modes\n\n```bash\n# Enable verbose output\npwpush --verbose push --secret \"password\"\n\n# Enable debug mode for troubleshooting\npwpush --debug push --secret \"password\"\n```\n\n### Batch Operations\n\n```bash\n# Generate and distribute multiple passwords\nfor i in {1..5}; do\n  pwpush --json push --auto --note \"Batch password $i\"\ndone\n```\n\n## Configuration Reference\n\n### Instance Settings\n\n| Key | Description | Example |\n|-----|-------------|---------|\n| `url` | Password Pusher instance URL | `https://eu.pwpush.com` |\n| `email` | Your account email | `user@example.com` |\n| `token` | Your API token | `abc123...` |\n\n### Expiration Settings\n\n| Key | Description | Valid Values |\n|-----|-------------|--------------|\n| `expire_after_days` | Default days until expiration | 1-90 |\n| `expire_after_views` | Default views until expiration | 1-100 |\n| `retrieval_step` | Require click-through for retrieval | true/false |\n| `deletable_by_viewer` | Allow viewers to delete content | true/false |\n\n### CLI Settings\n\n| Key | Description | Valid Values |\n|-----|-------------|--------------|\n| `json` | Output in JSON format | true/false |\n| `verbose` | Enable verbose output | true/false |\n\n## Examples\n\n### Developer Workflow\n\n```bash\n# Push database credentials with team\npwpush push --secret \"db_password_123\" --days 1 --views 3 --note \"Staging DB - expires in 24h\"\n\n# Push API keys securely\npwpush push --secret \"sk_live_...\" --days 7 --views 1 --note \"Production API Key\"\n\n# Share deployment URLs as clickable links\npwpush push --secret \"https://staging.example.com/deploy\" --kind url --days 1 --views 5\n```\n\n### System Administration\n\n```bash\n# Push temporary access credentials\npwpush push --auto --days 1 --views 1 --note \"Emergency access - $(date)\"\n\n# Push configuration files\npwpush push-file /etc/nginx/nginx.conf --days 3 --views 5\n```\n\n### Team Collaboration\n\n```bash\n# Push deployment secrets\npwpush push --secret \"deploy_token\" --days 1 --views 10 --note \"Release v2.1.0\"\n\n# Push sensitive documents\npwpush push-file sensitive_document.pdf --days 7 --views 3 --retrieval-step\n```\n\n## Troubleshooting\n\n### Common Issues\n\n**Connection Errors**\n```bash\n# Check your instance URL\npwpush config show\n\n# Test connectivity\npwpush --debug push --secret \"test\"\n```\n\n**Authentication Issues**\n```bash\n# Verify your credentials\npwpush config show\n\n# Re-login\npwpush logout\npwpush login\n```\n\n**Permission Errors**\n```bash\n# Check file permissions when uploading files\nls -la your_file.txt\npwpush push-file your_file.txt\n```\n\n### Getting Help\n\n```bash\n# View all available commands\npwpush --help\n\n# Get help for specific commands\npwpush push --help\npwpush config --help\n```\n\n## Security Notes\n\n- Passwords and secrets are encrypted before transmission\n- All communication uses HTTPS\n- Content is automatically deleted after expiration\n- API tokens should be kept secure and not shared\n- Use `--retrieval-step` to prevent URL scanners from consuming views\n\n## Contributing\n\nWe welcome contributions! Please see our [Contributing Guide](CONTRIBUTING.md) for details.\n\n## License\n\nThis project is licensed under the MIT License - see the [LICENSE](LICENSE) file for details.\n\n## Links\n\n- **Password Pusher**: https://pwpush.com\n- **Documentation**: https://docs.pwpush.com\n- **GitHub Repository**: https://github.com/pglombardo/pwpush-cli\n- **Open Source Project**: https://github.com/pglombardo/PasswordPusher\n\n## About Apnotic\n\nThis CLI tool is built by **Apnotic**.\n\n- **Company Homepage**: https://apnotic.com\n- **Password Pusher Pro**: https://pwpush.com\n",
    "bugtrack_url": null,
    "license": "MIT",
    "summary": "Command Line Interface to Password Pusher - secure information distribution with automatic expiration controls.",
    "version": "0.12.0",
    "project_urls": {
        "Homepage": "https://github.com/pglombardo/pwpush",
        "Repository": "https://github.com/pglombardo/pwpush"
    },
    "split_keywords": [
        "security",
        " cli",
        " password",
        " distribution",
        " sharing",
        " secure"
    ],
    "urls": [
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "ce4992b1590f78bcf623affb4ff17773cdf0813c1a83cc961fbaae38c614b893",
                "md5": "e8c5fad3a215f9f37206f434965b07ba",
                "sha256": "0352939f46df89305b150e6b95dad4a503d8011912e3eac40af0f34624bed681"
            },
            "downloads": -1,
            "filename": "pwpush-0.12.0-py3-none-any.whl",
            "has_sig": false,
            "md5_digest": "e8c5fad3a215f9f37206f434965b07ba",
            "packagetype": "bdist_wheel",
            "python_version": "py3",
            "requires_python": "<4.0,>=3.9.2",
            "size": 14724,
            "upload_time": "2025-10-06T11:25:20",
            "upload_time_iso_8601": "2025-10-06T11:25:20.445272Z",
            "url": "https://files.pythonhosted.org/packages/ce/49/92b1590f78bcf623affb4ff17773cdf0813c1a83cc961fbaae38c614b893/pwpush-0.12.0-py3-none-any.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "f1f8bd42beead3762f4241b92bca4feed2d7ea384e135e5b298dba77d9f7159f",
                "md5": "5198a9abf05f3f4b6487b353cdec1eed",
                "sha256": "8224eacc82fd22a8b5bda7ceae36f364e3b2173f1f04a119013280fd9f657efd"
            },
            "downloads": -1,
            "filename": "pwpush-0.12.0.tar.gz",
            "has_sig": false,
            "md5_digest": "5198a9abf05f3f4b6487b353cdec1eed",
            "packagetype": "sdist",
            "python_version": "source",
            "requires_python": "<4.0,>=3.9.2",
            "size": 16125,
            "upload_time": "2025-10-06T11:25:21",
            "upload_time_iso_8601": "2025-10-06T11:25:21.724507Z",
            "url": "https://files.pythonhosted.org/packages/f1/f8/bd42beead3762f4241b92bca4feed2d7ea384e135e5b298dba77d9f7159f/pwpush-0.12.0.tar.gz",
            "yanked": false,
            "yanked_reason": null
        }
    ],
    "upload_time": "2025-10-06 11:25:21",
    "github": true,
    "gitlab": false,
    "bitbucket": false,
    "codeberg": false,
    "github_user": "pglombardo",
    "github_project": "pwpush",
    "github_not_found": true,
    "lcname": "pwpush"
}
        
Elapsed time: 1.83703s