mrz1836 / paymail-inspector

:money_with_wings: CLI app for interacting with paymail service providers
MIT License
47 stars 7 forks source link
bitcoin bitcoinsv bitpic brfc brfc-specifications bsv bsvalias cli golang paymail

Paymail Inspector

CLI application for interacting with paymail service providers

Release Downloads Build Status Report Go
Mergify Status Sponsor Donate


Paymail Commands


Table of Contents


Installation

Install with brew

brew tap mrz1836/paymail-inspector && brew install paymail-inspector
paymail

Install using a compiled binary on Linux or Mac (Mac example)

curl -LkSs https://github.com/mrz1836/paymail-inspector/releases/download/v0.3.28/paymail-inspector_macOS_64-bit.tar.gz -o app.tar.gz
tar -zxf app.tar.gz && cd ./app/
./paymail

Install with go

go get github.com/mrz1836/paymail-inspector
cd /$GOPATH/src/github.com/mrz1836/paymail-inspector && make install
paymail


Commands

brfc

List all known brfc specifications (view example)

paymail brfc list


Generate a new BRFC ID for a new specification (view example)

paymail brfc generate --title "BRFC Specifications" --author "andy (nChain)" --version 1


Search all brfc specifications (id, title, author) (view example)

paymail brfc search nChain




capabilities

Lists the available capabilities of the paymail service (view example)

paymail capabilities moneybutton.com




p2p

Starts a P2P payment request and returns (n) outputs of (script,satoshis,address) (view example)

paymail p2p mrz@moneybutton.com




resolve

Returns the pubkey, output script, address and profile for a given paymail address (view example)

paymail resolve mrz@moneybutton.com




validate

Runs several validations on the paymail service for DNSSEC, SSL, SRV and required capabilities (view example)

paymail validate moneybutton.com




verify

Verifies if a paymail is associated to a pubkey (view example)

paymail verify mrz@moneybutton.com 02ead23149a1e33df17325ec7a7ba9e0b20c674c57c630f527d69b866aa9b65b10




whois

Searches all public paymail providers for a given handle (view example)

paymail whois mrz


Documentation

Get started with the examples. View the generated golang godocs.

All the generated command documentation can be found in docs/commands.

This application was built using the official paymail specifications.

Additional paymail information can also be found via MoneyButton's documentation.

Supported Operating Systems


Implemented BRFCs

Public Paymail Providers
- [MoneyButton](https://tpow.app/4c58a26f) - [Handcash](https://tpow.app/742b1f09) - [RelayX](https://tpow.app/4897634e) - [Centbee](https://tpow.app/4350c72f) - [Simply.cash](https://tpow.app/1ce8f70f) - [DotWallet](https://tpow.app/5745c80e) - [myPaymail](https://tpow.app/ee243a15) - [Volt](https://tpow.app/e9ff2b0c)
Integrated Services
- Unwriter's [bitpic](https://tpow.app/e4d6ce84) - Unwriter's [powping](https://tpow.app/3517f7fc) - Deggen's [Roundesk](https://tpow.app/2d8d2e22) & [Baemail](https://tpow.app/2c90c26b) - RelayX's [Dime.ly](https://tpow.app/46a4d32d)
Handle Providers
- [HandCash](https://tpow.app/742b1f09) - [RelayX](https://tpow.app/4897634e)
Custom Configuration
The configuration file should be located in your `$HOME/paymail` folder and named `config.yaml`. View the [example config file](config-example.yaml). You can also specify a custom configuration file using `--config "/folder/path/file.yaml"`
Local Database (Cache)
The database is located in your `$HOME/paymail` folder. To clear the entire database: ```shell script paymail --flush-cache ``` Run commands _ignoring_ local cache: ```shell script paymail whois mrz --no-cache ```
Package Dependencies
- [badger](https://github.com/dgraph-io/badger) for persistent database storage - [cobra](https://github.com/spf13/cobra) and [viper](https://github.com/spf13/viper) for an easy configuration & CLI application development - [color](https://github.com/fatih/color) for colorful logs - [columnize](https://github.com/ryanuber/columnize) for displaying terminal data in columns - [dns](https://github.com/miekg/dns) package for advanced DNS functionality - [go-homedir](https://github.com/mitchellh/go-homedir) to find the home directory - [go-paymail](https://github.com/tonicpow/go-paymail) for Paymail library support - [go-sanitize](https://github.com/mrz1836/go-sanitize) for sanitation and data formatting - [go-validate](https://github.com/mrz1836/go-validate) for domain/email/ip validations - [resty](https://github.com/go-resty/resty) for custom HTTP client support
Application Deployment
[goreleaser](https://github.com/goreleaser/goreleaser) for easy binary deployment to GitHub and can be installed via: `brew install goreleaser`. The [.goreleaser.yml](.goreleaser.yml) file is used to configure [goreleaser](https://github.com/goreleaser/goreleaser). Use `make release-snap` to create a snapshot version of the release, and finally `make release` to ship to production. The release can also be deployed to a `homebrew` repository: [homebrew-paymail-inspector](https://github.com/mrz1836/homebrew-paymail-inspector).
Makefile Commands
View all `makefile` commands ```shell script make help ``` List of all current commands: ```text all Runs multiple commands build Build all binaries (darwin, linux, windows) clean Remove previous builds and any test cache data clean-mods Remove all the Go mod cache coverage Shows the test coverage darwin Build for Darwin (macOS amd64) diff Show the git diff gen-docs Generate documentation from all available commands (fresh install) generate Runs the go generate command in the base of the repo gif-render Render gifs in .github dir (find/replace text etc) godocs Sync the latest tag with GoDocs help Show this help message install Install the application install-go Install the application (Using Native Go) install-releaser Install the GoReleaser application lint Run the golangci-lint application (install if not found) linux Build for Linux (amd64) release Full production release (creates release in Github) release Runs common.release then runs godocs release-snap Test the full release (build binaries) release-test Full production test release (everything except deploy) replace-version Replaces the version in HTML/JS (pre-deploy) tag Generate a new tag and push (tag version=0.0.0) tag-remove Remove a tag if found (tag-remove version=0.0.0) tag-update Update an existing tag to current commit (tag-update version=0.0.0) test Runs lint and ALL tests test-ci Runs all tests via CI (exports coverage) test-ci-no-race Runs all tests via CI (no race) (exports coverage) test-ci-short Runs unit tests via CI (exports coverage) test-no-lint Runs just tests test-short Runs vet, lint and tests (excludes integration tests) test-unit Runs tests and outputs coverage uninstall Uninstall the application (and remove files) update-linter Update the golangci-lint package (macOS only) update-terminalizer Update the terminalizer application vet Run the Go vet application windows Build for Windows (amd64) ```


Examples & Tests

All unit tests and examples run via GitHub Actions and uses Go version 1.19.x. View the configuration file.

Run all tests (including integration tests)

make test


Code Standards

Read more about this Go project's code standards.


Usage

View all the examples and see the commands above

All the generated command documentation can be found in docs/commands.


Maintainers

MrZ Satchmo
MrZ Satchmo


Contributing

View the contributing guidelines and please follow the code of conduct.

How can I help?

All kinds of contributions are welcome :raised_hands:! The most basic way to show your support is to star :star2: the project, or to raise issues :speech_balloon:. You can also support this project by becoming a sponsor on GitHub :clap: or by making a bitcoin donation to ensure this journey continues indefinitely! :rocket:

Help by sharing: Twetch Twitter

Stars

Credits

Inspiration and code snippets from dnssec and check-ssl

Utilized terminalizer to record example gifs


License

License