From 15908a258fb007813eec49aa459c02dc0f84fde1 Mon Sep 17 00:00:00 2001 From: kha7iq Date: Tue, 20 Apr 2021 23:57:11 +0800 Subject: [PATCH] docs: move documentation to same repo --- docs/.nojekyll | 0 docs/CNAME | 1 + docs/_media/logo.png | Bin 0 -> 19983 bytes docs/_sidebar.md | 6 + docs/home.md | 77 ++++++++++ docs/index.html | 36 +++++ docs/install.md | 45 ++++++ docs/services.md | 358 +++++++++++++++++++++++++++++++++++++++++++ 8 files changed, 523 insertions(+) create mode 100644 docs/.nojekyll create mode 100644 docs/CNAME create mode 100644 docs/_media/logo.png create mode 100644 docs/_sidebar.md create mode 100644 docs/home.md create mode 100644 docs/index.html create mode 100644 docs/install.md create mode 100644 docs/services.md diff --git a/docs/.nojekyll b/docs/.nojekyll new file mode 100644 index 0000000..e69de29 diff --git a/docs/CNAME b/docs/CNAME new file mode 100644 index 0000000..7d20f3c --- /dev/null +++ b/docs/CNAME @@ -0,0 +1 @@ +pingme.lmno.pk \ No newline at end of file diff --git a/docs/_media/logo.png b/docs/_media/logo.png new file mode 100644 index 0000000000000000000000000000000000000000..df85f54d10df2e921167fb281618e7db252d9c4c GIT binary patch literal 19983 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 + +* [Home](/) +* [Installation](install.md) +* [Services & Usage](services.md) + \ No newline at end of file diff --git a/docs/home.md b/docs/home.md new file mode 100644 index 0000000..cd24cdc --- /dev/null +++ b/docs/home.md @@ -0,0 +1,77 @@ +

+
+

+

+ +

PingMe CLI

+ +

+ + Release + + Build + + GitHub issues + + License + + Go Version + + Go Dev Reference +

+ +

+ About • + Supported Services • + Demo • + Contributing • + Show Your Support • +

+ +--- + +## About + +**PingMe** is a personal project to satisfy my needs of having alerts, most major platforms have integration to send alerts +but its not always useful, either you are stuck with one particular platform, or you have to do alot of integrations. I needed a small app +which i can just call from my backup scripts, cron jobs, CI/CD pipelines or from anywhere to send a message with particular information. +And i can ship it everywhere with ease. +Hence, the birth of PingMe. + +Everything is configurable via environment variables, and you can simply export the logs or messages to a variable which will be sent +as message. And most of all this serves as a swiss army knife sort of tool which supports multiple platforms. + + +## Supported services +- *Discord* +- *Email* +- *Microsoft Teams* +- *RocketChat* +- *Slack* +- *Telegram* +- *Pushover* +- *Mattermost* + + + +## Demo +![Demo](https://raw.githubusercontent.com/kha7iq/pingme/master/.github/img/pingme.gif) + + +## Contributing + +Contributions, issues and feature requests are welcome!
Feel free to check [issues page](https://github.com/kha7iq/pingme/issues). You can also take a look at the [contributing guide](https://github.com/kha7iq/pingme/blob/master/CONTRIBUTING.md). + + + +## Show your support + +Give a ⭐️ if you like this project! + + + +## Disclaimer + +Any misuse of this utilify is your own liability and responsibility and cannot be attributed to the authors of this library. See [license](LICENSE) for more. + +Spamming through the use of this library **may get you permanently banned** on most supported platforms. diff --git a/docs/index.html b/docs/index.html new file mode 100644 index 0000000..cd5a827 --- /dev/null +++ b/docs/index.html @@ -0,0 +1,36 @@ + + + + + Document + + + + + + + +
+ + + + + + \ No newline at end of file diff --git a/docs/install.md b/docs/install.md new file mode 100644 index 0000000..63a2870 --- /dev/null +++ b/docs/install.md @@ -0,0 +1,45 @@ + +## Linux & MacOs +```bash +brew install kha7iq/tap/pingme +``` + +## Go Get +```bash +go get -u github.com/kha7iq/pingme +``` + + +## Windows +```powershell +scoop bucket add pingme https://github.com/kha7iq/scoop-bucket.git +scoop install pingme +``` + +Alternatively you can head over to [release pages](https://github.com/kha7iq/pingme/releases) and download the binary for windows & all other supported platforms. + + +## Docker +Docker container is also available on both dockerhub and github container registry. + +`latest` tage will always pull the latest version avaialbe, you can also download specific version. +Checkout [release](https://github.com/kha7iq/pingme/releases) page for available versions. + +- Docker Registry +```bash +docker pull khaliq/pingme:latest +``` +- Github Registry +```bash +docker pull ghcr.io/kha7iq/pingme:latest +``` +- Run +```bash +docker run ghcr.io/kha7iq/pingme:latest +``` + + +## Github Action +A github action is also available now for this app, you can find it on [Github Market Place](https://github.com/marketplace/actions/pingme-action) or from this [repository](https://github.com/kha7iq/pingme-action) on github. + +Usage examples for workflow are available in the repo. diff --git a/docs/services.md b/docs/services.md new file mode 100644 index 0000000..4bf5be8 --- /dev/null +++ b/docs/services.md @@ -0,0 +1,358 @@ + + +### Configuration + +All the flags have crosponding enviornment variables assosiated with it. You can either provide the value with flags + +or export to a variable. You can view the crosponding variable to each with --help flag. + +*Flags* take presedance over *variables* + +*Default* value for message title is current *time* + + +## Telegram +Telegram uses bot token to authenticate & send messages to defined channels. +Multiple channel ids can be used separated by comma ','. + +```bash +pingme telegram --token "0125:AAFHvnYf_ABC" --msg "This is a new message ✈" --channel="-1001001001,-1002002001" +``` + +- Github Action + +```yaml +on: [push] + +jobs: + pingme-job: + runs-on: ubuntu-latest + name: PingMe + steps: + - name: Checkout + uses: actions/checkout@v2 + + - name: Ping me On + uses: kha7iq/pingme-action@v1 + env: + TELEGRAM_TOKEN: ${{ secrets.TELEGRAM_TOKEN }} + TELEGRAM_CHANNELS: ${{ secrets.TELEGRAM_CHANNELS }} + TELEGRAM_TITLE: 'Refrence: ${{ github.ref }}' + TELEGRAM_MESSAGE: 'Event is triggerd by ${{ github.event_name }}' + + with: + # Chose the messaging platform. + # slack / telegram / rocketchat / teams / pushover / discord / email + service: telegram +``` +- **Variables** + + +| Variables | Default Value | +| -------------------------- | :----------------: | +| TELEGRAM_MSG_TITLE | "" | +| TELEGRAM_TOKEN | "" | +| TELEGRAM_CHANNELS | "" | +| TELEGRAM_MESSAGE | "" | +| TELEGRAM_MSG_TITLE | "" | + + +## RocketChat +RocketChat uses token & userID to authenticate and send messages to defined channels. +Multiple channel ids can be used separated by comma ','. + +```bash +pingme rocketchat --channel "general,Pingme" --msg ":wave: rocketchat from cli" --userid "123" --token "abcxyz" \ +--url 'localhost:3000' --scheme "http" +``` + +- Github Action + +```yaml +on: + release: + types: [published] +jobs: + pingme-job: + runs-on: ubuntu-latest + name: PingMe + steps: + - name: Checkout + uses: actions/checkout@v2 + + - name: Ping me On + uses: kha7iq/pingme-action@v1 + env: + ROCKETCHAT_USERID: ${{ secrets.ROCKETCHAT_USERID }} + ROCKETCHAT_TOKEN: ${{ secrets.ROCKETCHAT_TOKEN }} + ROCKETCHAT_SERVER_URL: ${{ secrets.ROCKETCHAT_SERVER_URL }} + ROCKETCHAT_CHANNELS: ${{ secrets.ROCKETCHAT_CHANNELS }} + ROCKETCHAT_URL_SCHEME: "https" + ROCKETCHAT_TITLE: 'Refrence: ${{ github.ref }}' + ROCKETCHAT_MESSAGE: 'Event is triggerd by ${{ github.event_name }}' + with: + # Chose the messaging platform. + # slack / telegram / rocketchat / teams / pushover / discord / email / mattermost + service: rocketchat +``` +- **Variables** + +| Variables | Default Value | +| -------------------------- | :----------------: | +| ROCKETCHAT_USERID | "" | +| ROCKETCHAT_TOKEN | "" | +| ROCKETCHAT_SERVER_URL | "" | +| ROCKETCHAT_URL_SCHEME | "https" | +| RTOCKETCHAT_MESSAGE | "" | +| ROCKETCHAT_TITLE | "" | +| ROCKETCHAT_CHANNELS | "" | + + +## Pushover + +```bash +pingme pushover --token '123' --user '12345567' --title 'some title' --message 'some message' +``` + +- Github Action + +```yaml +on: [push] + +jobs: + pingme-job: + runs-on: ubuntu-latest + name: PingMe + steps: + - name: Checkout + uses: actions/checkout@v2 + + - name: Ping me On + uses: kha7iq/pingme-action@v1 + env: + PUSHOVER_TOKEN: ${{ secrets.PUSHOVER_TOKEN }} + PUSHOVER_USER: ${{ secrets.PUSHOVER_USER }} + PUSHOVER_TITLE: 'Refrence: ${{ github.ref }}' + PUSHOVER_MESSAGE: 'Event is triggerd by ${{ github.event_name }}' + + with: + # Chose the messaging platform. + # slack / telegram / rocketchat / teams / pushover / discord / email + service: pushover +``` + +- **Variables** + +| Variables | Default Value | +| -------------------------- | :----------------: | +| PUSHOVER_TOKEN | "" | +| PUSHOVER_USER | "" | +| PUSHOVER_MESSAGE | "" | +| PUSHOVER_TITLE | "" | + +## Mattermost +Mattermost uses token to authenticate and channel ids for targets. +Destination server can be specified as 'example.com' by default the 'https' is used, you +can change this with --scheme flag and set it to 'http'. +Latest api version 4 is used for interacting with server, this can also be changes with --api flag. +You can specify multiple channels by separating the value with ','. + +```bash +pingme mattermost --token '123' --channel '12345,567' --url 'localhost' --scheme 'http' --message 'some message' +``` + +- Github Action + +```yaml +on: + release: + types: [published] +jobs: + pingme-job: + runs-on: ubuntu-latest + name: PingMe + steps: + - name: Checkout + uses: actions/checkout@v2 + + - name: Ping me On + uses: kha7iq/pingme-action@v1 + env: + MATTERMOST_TOKEN: ${{ secrets.MATTERMOST_TOKEN }} + ROCKETCHAT_SERVER_URL: ${{ secrets.ROCKETCHAT_SERVER_URL }} + MATTERMOST_CHANNELS: ${{ secrets.MATTERMOST_CHANNELS }} + MATTERMOST_CHANNELS: ${{ secrets.MATTERMOST_CHANNELS }} + MATTERMOST_TITLE: 'Refrence: ${{ github.ref }}' + MATTERMOST_MESSAGE: 'Event is triggerd by ${{ github.event_name }}' + with: + # Chose the messaging platform. + # slack / telegram / rocketchat / teams / pushover / discord / email / mattermost + service: mattermost +``` + +- **Variables** + +| Variables | Default Value | +| -------------------------- | :----------------: | +| MATTERMOST_API_URL | "/api/v4/posts" | +| MATTERMOST_TOKEN | "" | +| MATTERMOST_SERVER_URL | "" | +| MATTERMOST_SCHEME | "https" | +| MATTERMOST_MESSAGE | "" | +| MATTERMOST_TITLE | "" | +| MATTERMOST_CHANNELS | "" | + +## Slack +Slack uses token to authenticate and send messages to defined channels. +Multiple channel ids can be used separated by comma ','. + +```bash +pingme slack --token '123' --channel '1234567890' --message 'some message' +``` + +- Github Action + +```yaml +on: + release: + types: [published] +jobs: + pingme-job: + runs-on: ubuntu-latest + name: PingMe + steps: + - name: Checkout + uses: actions/checkout@v2 + + - name: Ping me On + uses: kha7iq/pingme-action@v1 + env: + PUSHOVER_TOKEN: ${{ secrets.SLACK_TOKEN }} + SLACK_CHANNELS: ${{ secrets.SLACK_CHANNELS }} + SLACK_MSG_TITLE: 'Refrence: ${{ github.ref }}' + SLACK_MESSAGE: 'Event is triggerd by ${{ github.event_name }}' + with: + # Chose the messaging platform. + # slack / telegram / rocketchat / teams / pushover / discord / email + service: slack +``` + +- **Variables** + +| Variables | Default Value | +| -------------------------- | :----------------: | +| SLACK_TOKEN | "" | +| SLACK_CHANNELS | "" | +| SLACK_MESSAGE | "" | + + +## Discord +Discord uses bot token to authenticate & send messages to defined channels. +Multiple channel ids can be used separated by comma ','. + +```bash + pingme discord --token '123' --channel '1234567890' --message 'some message' +``` + +- Github Action + +```yaml +on: + release: + types: [published] +jobs: + pingme-job: + runs-on: ubuntu-latest + name: PingMe + steps: + - name: Checkout + uses: actions/checkout@v2 + + - name: Ping me On + uses: kha7iq/pingme-action@v1 + env: + DISCORD_CHANNELS: ${{ secrets.DISCORD_CHANNELS }} + DISCORD_TOKEN: ${{ secrets.DISCORD_TOKEN }} + DISCORD_TITLE: 'Refrence: ${{ github.ref }}' + DISCORD_MESSAGE: 'Event is triggerd by ${{ github.event_name }}' + with: + # Chose the messaging platform. + # slack / telegram / rocketchat / teams / pushover / discord / email / mattermost + service: discord +``` +- **Variables** + +| Variables | Default Value | +| -------------------------- | :----------------: | +| DISCORD_TOKEN | "" | +| DISCORD_CHANNELS | "" | +| DISCORD_MESSAGE | "" | +| DISCORD_MSG_TITLE | "" | + + +## Microsoft Teams +Teams uses webhooks to send messages, you can add multiple webhooks separated by comma ',' or +you can add permissions for multiple channels to single webhook. + +```bash +pingme teams --webhook 'https://example.webhook.office.com/xx' --message 'some message' +``` + +- Github Action + +```yaml +on: [push] + +jobs: + pingme-job: + runs-on: ubuntu-latest + name: PingMe + steps: + - name: Checkout + uses: actions/checkout@v2 + + - name: Ping me On + uses: kha7iq/pingme-action@v1 + env: + TEAMS_WEBHOOK: ${{ secrets.TEAMS_WEBHOOK }} + TELEGRAM_CHANNELS: ${{ secrets.TELEGRAM_CHANNELS }} + TEAMS_MSG_TITLE: 'Refrence: ${{ github.ref }}' + TEAMS_MESSAGE: 'Event is triggerd by ${{ github.event_name }}' + + with: + # Chose the messaging platform. + # slack / telegram / rocketchat / teams / pushover / discord / email / mattermost + service: teams +``` +- **Variables** + +| Variables | Default Value | +| -------------------------- | :----------------: | +| TEAMS_WEBHOOK | "" | +| TEAMS_MESSAGE | "" | +| TEAMS_MSG_TITLE | "" | + + +## Email +Email uses username & password to authenticate for sending emails. +SMTP hostname i.e smtp.gmail.com and port i.e (587) should be provided as well for the server. +Multiple email ids can be used separated by comma ',' as receiver email address. +All configuration options are also available via environment variables check configuration section. + +```bash +pingme email --rec "example@gmail.com,example@outlook.com" --msg "This is an email from PingMe CLI" --sub "Email from PingMe CLI" \ + --sender "sender@gmail.com" --host "smtp.gmail.com" --port "587" --pass "secretPassword" + +``` +- **Variables** + +| Variables | Default Value | +| -------------------------- | :----------------: | +| EMAIL_SENDER | "" | +| EMAIL_PASSWORD | "" | +| EMAIL_RECEIVER | "" | +| EMAIL_IDENTITY | "" | +| EMAIL_HOST | "smtp.gmail.com" | +| EMAIL_PORT | "587" | +| EMAIL_MESSAGE | "" | +| EMAIL_SUBJECT | "" | \ No newline at end of file