Paymail Inspector
CLI application for interacting with paymail service providers
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
- [x] Linux
- [x] Mac
- [ ] Windows (coming soon)
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
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:
Credits
Inspiration and code snippets from dnssec and check-ssl
Utilized terminalizer to record example gifs
License