1
0
mirror of https://github.com/kha7iq/pingme.git synced 2025-05-15 22:30:11 -07:00

Compare commits

...

46 Commits

Author SHA1 Message Date
Khaliq
2d36d68023
Merge pull request #83 from kha7iq/dependabot/go_modules/golang.org/x/net-0.38.0
chore(deps): bump golang.org/x/net from 0.17.0 to 0.38.0
2025-04-17 13:24:51 +08:00
dependabot[bot]
6c02fbd8d4
chore(deps): bump golang.org/x/net from 0.17.0 to 0.38.0
Bumps [golang.org/x/net](https://github.com/golang/net) from 0.17.0 to 0.38.0.
- [Commits](https://github.com/golang/net/compare/v0.17.0...v0.38.0)

---
updated-dependencies:
- dependency-name: golang.org/x/net
  dependency-version: 0.38.0
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-04-16 21:11:53 +00:00
Khaliq
f24407ea7e
Merge pull request #79 from kha7iq/dependabot/go_modules/github.com/gorilla/schema-1.4.1
chore(deps): bump github.com/gorilla/schema from 1.2.0 to 1.4.1
2024-07-02 10:14:49 +08:00
dependabot[bot]
b9f2293cee
chore(deps): bump github.com/gorilla/schema from 1.2.0 to 1.4.1
Bumps [github.com/gorilla/schema](https://github.com/gorilla/schema) from 1.2.0 to 1.4.1.
- [Release notes](https://github.com/gorilla/schema/releases)
- [Commits](https://github.com/gorilla/schema/compare/v1.2.0...v1.4.1)

---
updated-dependencies:
- dependency-name: github.com/gorilla/schema
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-07-01 20:36:58 +00:00
Khaliq
4374f0864b
Merge pull request #76 from kleutzinger-forks/master
docs: fix typo in services.md
2024-01-12 10:56:04 +08:00
Kevin Leutzinger
fe6ac6a8d0
Fix typo in services.md 2024-01-10 17:25:00 -08:00
Khaliq
c663b2da6e fix: match any armv7 type 2023-12-26 14:36:29 +08:00
Khaliq
8989698d25 fix: check arch type and file format 2023-12-26 14:15:33 +08:00
Khaliq
daae65b4ba fix: update aur auto publishing 2023-11-30 02:05:43 +08:00
Khaliq
138ff38891 chore: remove old arg 2023-11-30 02:04:51 +08:00
Khaliq
a2a91ace45 chore: rollback arch check 2023-11-30 01:18:00 +08:00
Khaliq
9dca2a1b74 fix: change name template to fix install issue 2023-11-30 01:17:38 +08:00
Khaliq
7277d3386f fix: check for arch and set value 2023-11-30 00:35:58 +08:00
Khaliq
5220398da3 chore: bump action version 2023-11-30 00:19:45 +08:00
Khaliq
98891789cf docs: update readem info 2023-11-30 00:19:19 +08:00
Khaliq
6629fac687 fix: update syntax and cleanup 2023-11-30 00:18:51 +08:00
Khaliq
db4a0fe266
Merge pull request #74 from kha7iq/priority-for-pushover
feat: add priority for pushover messages
2023-11-29 15:09:14 +08:00
Khaliq
600ce268ac feat: add priority for pushover messages 2023-11-23 17:24:31 +08:00
Khaliq
a233a22c70
Merge pull request #73 from kha7iq/dependabot/go_modules/golang.org/x/net-0.17.0
chore(deps): bump golang.org/x/net from 0.7.0 to 0.17.0
2023-11-23 17:14:30 +08:00
dependabot[bot]
888b989e67
chore(deps): bump golang.org/x/net from 0.7.0 to 0.17.0
Bumps [golang.org/x/net](https://github.com/golang/net) from 0.7.0 to 0.17.0.
- [Commits](https://github.com/golang/net/compare/v0.7.0...v0.17.0)

---
updated-dependencies:
- dependency-name: golang.org/x/net
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-10-11 23:24:02 +00:00
Khaliq
3ec42b8a4b docs: upate readme 2023-06-20 14:12:51 +08:00
Khaliq
6786a1d80b
Merge pull request #70 from kha7iq/dependabot/go_modules/golang.org/x/net-0.7.0
chore(deps): bump golang.org/x/net from 0.0.0-20220708220712-1185a9018129 to 0.7.0
2023-02-25 13:28:01 +08:00
dependabot[bot]
5ed11059e0
chore(deps): bump golang.org/x/net
Bumps [golang.org/x/net](https://github.com/golang/net) from 0.0.0-20220708220712-1185a9018129 to 0.7.0.
- [Release notes](https://github.com/golang/net/releases)
- [Commits](https://github.com/golang/net/commits/v0.7.0)

---
updated-dependencies:
- dependency-name: golang.org/x/net
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-02-25 05:26:29 +00:00
Khaliq, Abdul
8b190506ff docs: update readme 2023-01-05 12:15:34 +08:00
kha7iq
1fed68e69c fix: disabel arm64 for windows 2022-07-18 12:54:51 +08:00
kha7iq
ba9185e93a fix: disable aur release & set maintainer 2022-07-18 12:42:27 +08:00
kha7iq
3e3bd04861 chore: bump deps version 2022-07-18 12:36:15 +08:00
kha7iq
c23aa335fc fix: update golint to version 3 2022-07-18 11:34:07 +08:00
kha7iq
111c27d9cd chore: bump deps version 2022-07-18 11:26:09 +08:00
Khaliq
2e450056eb
Merge pull request #65 from ahdekkers/master
add support for matrix server
2022-05-28 00:56:29 +08:00
ahdekkers
aea178cb18 docs: added matrix documentation 2022-05-15 19:55:06 +01:00
ahdekkers
300293b85b cleaned imports 2022-05-15 19:33:53 +01:00
ahdekkers
cb0531d66f send message to matrix implemented 2022-05-15 18:20:46 +01:00
kha7iq
4338ba4056 docs: update install instructions 2021-12-13 12:14:08 +08:00
kha7iq
ab93bcc203 docs: add shortlink for install script 2021-12-13 12:13:55 +08:00
kha7iq
ab46bee38b docs: update install instructions 2021-12-13 11:58:17 +08:00
kha7iq
e69a3b2191 feat: add install script 2021-12-13 11:57:46 +08:00
Khaliq
dd970e43e2 docs: change version 2021-09-13 23:30:32 +08:00
kha7iq
a6485a2702 docs: fix spellings & remove duplicates 2021-08-13 00:32:14 +08:00
kha7iq
f9d0d5a93d docs: set dark background for website 2021-08-12 23:37:46 +08:00
kha7iq
4c363e1192 docs: update install details 2021-08-12 23:37:20 +08:00
Khaliq
fa26243b53 fix: version info for aur build 2021-08-08 04:09:29 +08:00
Khaliq
b6ee47a24e fix: sha for aur binary 2021-08-08 04:09:12 +08:00
Khaliq
ba7070ecc9 fix: publisher name for aur 2021-08-08 04:06:32 +08:00
Khaliq
b841854e09 fix: change subject flag to title 2021-08-05 14:50:54 +08:00
Khaliq
93ecd78272 fix: change subject flag to title 2021-08-05 14:49:42 +08:00
20 changed files with 1111 additions and 252 deletions

View File

@ -11,13 +11,13 @@ pkgbase = pingme-bin
provides = ${_PKGNAME}
conflicts = ${_PKGNAME}
source_x86_64 = ${_PKGNAME}_${PKGVER}_linux_x86_64.tar.gz::https://github.com/kha7iq/${_PKGNAME}/releases/download/v${PKGVER}/${_PKGNAME}_linux_x86_64.tar.gz")
source_x86_64 = ${_PKGNAME}_${pkgver}_linux_x86_64.tar.gz::https://github.com/kha7iq/${_PKGNAME}/releases/download/v${pkgver}/${_PKGNAME}_linux_x86_64.tar.gz")
sha256sums_x86_64 = (${SHA256SUM_X86})
source_i686 = ${_PKGNAME}_${PKGVER}_linux_i386.tar.gz::https://github.com/kha7iq/${_PKGNAME}/releases/download/v${PKGVER}/${_PKGNAME}_linux_i386.tar.gz")
source_i686 = ${_PKGNAME}_${pkgver}_linux_i386.tar.gz::https://github.com/kha7iq/${_PKGNAME}/releases/download/v${pkgver}/${_PKGNAME}_linux_i386.tar.gz")
sha256sums_i686 = (${SHA256SUM_i686})
source_aarch64 = ${_PKGNAME}_${PKGVER}_linux_arm64.tar.gz::https://github.com/kha7iq/${_PKGNAME}/releases/download/v${PKGVER}/${_PKGNAME}_linux_arm64.tar.gz")
source_aarch64 = ${_PKGNAME}_${pkgver}_linux_arm64.tar.gz::https://github.com/kha7iq/${_PKGNAME}/releases/download/v${pkgver}/${_PKGNAME}_linux_arm64.tar.gz")
sha256sums_aarch64 = (${SHA256SUM_AARCH64})
pkgname = pingme-bin

View File

@ -5,7 +5,7 @@ set -e
WD=$(cd "$( dirname "${BASH_SOURCE[0]}" )" >/dev/null 2>&1 && pwd)
PKGNAME=$(basename $WD)
repo="kha7iq/pingme"
export _PKGNAME="${PKGNAME%-bin}"
ROOT=${WD%/.github/aur/$PKGNAME}
@ -14,8 +14,9 @@ exec 100>$LOCKFILE || exit 0
flock -n 100 || exit 0
trap "rm -f $LOCKFILE" EXIT
export VERSION=$1
echo "Publishing to AUR as version ${VERSION}"
export PKGVER=$(curl -s https://api.github.com/repos/$repo/releases/latest | grep -o '"tag_name": "v[^"]*' | cut -d'"' -f4 | sed 's/^v//')
echo "Publishing to AUR as version ${PKGVER}"
cd $WD
@ -36,8 +37,6 @@ git clone aur@aur.archlinux.org:$PKGNAME $GITDIR 2>&1
CURRENT_PKGVER=$(cat $GITDIR/.SRCINFO | grep pkgver | awk '{ print $3 }')
CURRENT_PKGREL=$(cat $GITDIR/.SRCINFO | grep pkgrel | awk '{ print $3 }')
export PKGVER=${VERSION/-/}
if [[ "${CURRENT_PKGVER}" == "${PKGVER}" ]]; then
export PKGREL=$((CURRENT_PKGREL+1))
else
@ -54,7 +53,7 @@ envsubst '$PKGVER $PKGREL $_PKGNAME $SHA256SUM_X86 $SHA256SUM_i686 $SHA256SUM_AA
envsubst '$PKGVER $PKGREL $SHA256SUM_X86 $SHA256SUM_i686 $SHA256SUM_AARCH64' < PKGBUILD.template > $GITDIR/PKGBUILD
cd $GITDIR
git config user.name "GoReleaser"
git config user.name "kha7iq"
git config user.email "a.khaliq@outlook.my"
git add -A
if [ -z "$(git status --porcelain)" ]; then

View File

@ -8,6 +8,6 @@ pkgbase = pingme
arch = aarch64
license = MIT
makedepends = go
source = pingme-${PKGVER}.tar.gz::https://github.com/kha7iq/pingme/archive/v{PKGVER}.tar.gz
source = pingme-${pkgver}.tar.gz::https://github.com/kha7iq/${pkgname}/archive/v${pkgver}.tar.gz
pkgname = pingme

View File

@ -18,7 +18,7 @@ sha256sums=(
build() {
cd "${pkgname}-${pkgver}"
export CGO_LDFLAGS="$LDFLAGS"
go build -ldflags "-linkmode=external -s -w -X main.version=${pkgver}" -o ${pkgname} .
go build -ldflags "-linkmode=external -s -w -X main.Version=${pkgver}" -o ${pkgname} .
}
package() {

View File

@ -5,14 +5,17 @@ set -e
WD=$(cd "$( dirname "${BASH_SOURCE[0]}" )" >/dev/null 2>&1 && pwd)
PKGNAME=$(basename $WD)
ROOT=${WD%/.github/aur/$PKGNAME}
repo="kha7iq/pingme"
LOCKFILE=/tmp/aur-$PKGNAME.lock
exec 100>$LOCKFILE || exit 0
flock -n 100 || exit 0
trap "rm -f $LOCKFILE" EXIT
export VERSION=$1
echo "Publishing to AUR as version ${VERSION}"
export PKGVER=$(curl -s https://api.github.com/repos/$repo/releases/latest | grep -o '"tag_name": "v[^"]*' | cut -d'"' -f4 | sed 's/^v//')
echo "Publishing to AUR as version ${PKGVER}"
cd $WD
@ -33,7 +36,6 @@ git clone aur@aur.archlinux.org:$PKGNAME $GITDIR 2>&1
CURRENT_PKGVER=$(cat $GITDIR/.SRCINFO | grep pkgver | awk '{ print $3 }')
CURRENT_PKGREL=$(cat $GITDIR/.SRCINFO | grep pkgrel | awk '{ print $3 }')
export PKGVER=${VERSION/-/}
if [[ "${CURRENT_PKGVER}" == "${PKGVER}" ]]; then
export PKGREL=$((CURRENT_PKGREL+1))
@ -47,7 +49,8 @@ envsubst '$PKGVER $PKGREL $SHA256SUM' < .SRCINFO.template > $GITDIR/.SRCINFO
envsubst '$PKGVER $PKGREL $SHA256SUM' < PKGBUILD.template > $GITDIR/PKGBUILD
cd $GITDIR
git config user.name "GoReleaser"
git config user.name "kha7iq"
git config user.email "a.khaliq@outlook.my"
git add -A
if [ -z "$(git status --porcelain)" ]; then

View File

@ -2,10 +2,6 @@ name: build
on:
push:
# branches:
# - 'master'
# paths-ignore:
# - '**.md'
tags:
- 'v0.[0-9]+.[0-9]'
@ -15,55 +11,39 @@ jobs:
env:
DOCKER_CLI_EXPERIMENTAL: "enabled"
steps:
-
name: Checkout
uses: actions/checkout@v2.3.4
- name: Checkout
uses: actions/checkout@v4
with:
fetch-depth: 0
-
name: Set up Go
uses: actions/setup-go@v2
- name: Set up Go
uses: actions/setup-go@v4
with:
go-version: '1.16'
-
name: Cache Go modules
uses: actions/cache@v2.1.5
with:
path: ~/go/pkg/mod
key: ${{ runner.os }}-go-${{ hashFiles('**/go.sum') }}
restore-keys: |
${{ runner.os }}-go-
-
name: Diff
run: git diff
-
name: Docker login GHCR
go-version: '>=1.20.0'
- name: Docker login GHCR
uses: docker/login-action@v1
with:
registry: ghcr.io
username: ${{ github.repository_owner }}
password: ${{ secrets.GITHUB_TOKEN }}
-
name: Docker Login DockerHub
- name: Docker Login DockerHub
uses: docker/login-action@v1
with:
username: ${{ secrets.DOCKER_USERNAME }}
password: ${{ secrets.DOCKER_PASSWORD }}
-
name: Release PingMe
uses: goreleaser/goreleaser-action@v2
- name: Release PingMe
uses: goreleaser/goreleaser-action@v3
with:
version: latest
args: release --rm-dist
args: release --clean
env:
GITHUB_TOKEN: ${{ secrets.RELEASE_TOKEN }}
AUR_SSH_PRIVATE_KEY: ${{ secrets.AUR_SSH_PRIVATE_KEY }}
-
name: Notify on failure
- name: Notify on failure
uses: kha7iq/pingme-action@v1
if: failure()
env:
@ -74,8 +54,7 @@ jobs:
with:
service: telegram
-
name: Notify on success
- name: Notify on success
uses: kha7iq/pingme-action@v1
if: success()
env:

View File

@ -1,14 +0,0 @@
on: pull_request
jobs:
lint-code:
runs-on: ubuntu-latest
name: Perform Checks
steps:
- name: Checkout
uses: actions/checkout@v2
- name: golangci-lint
uses: golangci/golangci-lint-action@v2
with:
version: v1.29

View File

@ -12,10 +12,15 @@ builds:
- darwin
- windows
goarch:
- 386
- "386"
- amd64
- arm
- arm64
goarm:
- "7"
ignore:
- goos: windows
goarch: arm64
mod_timestamp: '{{ .CommitTimestamp }}'
flags:
- -trimpath
@ -30,19 +35,21 @@ changelog:
exclude: ['^docs:', '^test:', 'Merge pull request', 'Merge branch', 'go mod tidy']
archives:
- name_template: '{{ .ProjectName }}_{{ .Os }}_{{ .Arch }}{{ if .Arm }}v{{ .Arm }}{{ end }}'
replacements:
darwin: Darwin
linux: Linux
windows: Windows
386: i386
amd64: x86_64
- name_template: >-
{{ .ProjectName }}_
{{- title .Os }}_
{{- if eq .Arch "amd64" }}x86_64
{{- else if eq .Arch "386" }}i386
{{- else }}{{ .Arch }}{{ end }}
format_overrides:
- goos: windows
format: zip
files:
- README.md
- LICENSE.md
brews:
- tap:
- repository:
owner: kha7iq
name: homebrew-tap
folder: Formula
@ -56,6 +63,7 @@ brews:
nfpms:
- file_name_template: '{{ .ProjectName }}_{{ .Arch }}{{ if .Arm }}v{{ .Arm }}{{ end }}'
maintainer: 'Abdul Khaliq <a.khaliq@outlook.my>'
homepage: pingme.lmno.pk
description: PingMe is a CLI tool which provides the ability to send messages or alerts to multiple messaging platforms.
license: MIT
@ -65,21 +73,11 @@ nfpms:
dependencies:
- git
# snapcrafts:
# - name_template: '{{ .ProjectName }}_{{ .Arch }}{{ if .Arm }}v{{ .Arm }}{{ end }}'
# summary: PingMe is a CLI tool which provides the ability to send messages
# description: |
# PingMe is a CLI tool which provides the ability to send messages
# or alerts to multiple messaging platforms.
# grade: stable
# confinement: strict
# publish: false
scoop:
url_template: "https://github.com/kha7iq/pingme/releases/download/{{ .Tag }}/{{ .ArtifactName }}"
bucket:
scoops:
- repository:
owner: kha7iq
name: scoop-bucket
url_template: "https://github.com/kha7iq/pingme/releases/download/{{ .Tag }}/{{ .ArtifactName }}"
homepage: https://pingme.lmno.pk
description: PingMe is a CLI tool which provides the ability to send messages or alerts to multiple messaging platforms.
license: MIT
@ -100,16 +98,3 @@ dockers:
- "--label=org.opencontainers.image.version={{.Version}}"
- "--label=org.opencontainers.image.source={{.GitURL}}"
- "--platform=linux/amd64"
publishers:
- name: aur pingme binary
env:
- AUR_SSH_PRIVATE_KEY={{ .Env.AUR_SSH_PRIVATE_KEY }}
cmd: |
.github/aur/pingme-bin/publish.sh {{ .Version }}
- name: aur pingme sources
env:
- AUR_SSH_PRIVATE_KEY={{ .Env.AUR_SSH_PRIVATE_KEY }}
cmd: |
.github/aur/pingme/publish.sh {{ .Version }}

View File

@ -12,8 +12,6 @@
<img alt="Release" src="https://img.shields.io/github/v/release/kha7iq/pingme">
<a href="https://goreportcard.com/report/github.com/kha7iq/pingme">
<img alt="Go Report Card" src="https://goreportcard.com/badge/github.com/kha7iq/pingme">
<a href="#">
<img alt="Build" src="https://img.shields.io/github/workflow/status/kha7iq/pingme/goreleaser">
<a href="https://github.com/kha7iq/pingme/issues">
<img alt="GitHub issues" src="https://img.shields.io/github/issues/kha7iq/pingme?style=flat-square&logo=github&logoColor=white">
<a href="https://github.com/kha7iq/pingme/blob/master/LICENSE.md">
@ -31,7 +29,6 @@
<a href="#github-action">Github Action</a>
<a href="#configuration">Configuration</a>
<a href="#contributing">Contributing</a>
<a href="#show-your-support">Show Your Support</a>
</p>
---
@ -77,6 +74,19 @@ platforms.
brew install kha7iq/tap/pingme
```
## Shell Script
By default pingme is going to be installed at `/usr/bin/` sudo is requried for this operation.
If you would like to provide a custom install path you can do so as input to script. i.e `./install.sh $HOME/bin`
```bash
curl -s https://raw.githubusercontent.com/kha7iq/pingme/master/install.sh | sudo sh
```
or
```bash
curl -sL https://bit.ly/installpm | sudo sh
```
## Linux
* AUR
@ -89,15 +99,20 @@ yay -S pingme-bin
```
* Binary
## Manual
```bash
export PINGME_VERSION="0.2.3"
wget -q https://github.com/kha7iq/pingme/releases/download/v${PINGME_VERSION}/pingme_Linux_x86_64.tar.gz && \
tar -xf pingme_Linux_x86_64.tar.gz && \
# Chose desired version, architecture & target os
export PINGME_VERSION="0.2.6"
export ARCH="x86_64"
export OS="Linux"
wget -q https://github.com/kha7iq/pingme/releases/download/v${PINGME_VERSION}/pingme_${OS}_${ARCH}.tar.gz && \
tar -xf pingme_${OS}_${ARCH}.tar.gz && \
chmod +x pingme && \
sudo mv pingme /usr/local/bin/pingme
```
### Windows
```powershell
@ -200,10 +215,6 @@ Contributions, issues and feature requests are welcome!<br/>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!
## Acknowledgments
This project is based on amazing library [Notify](https://github.com/nikoksr/notify)
This project is based on amazing library [Notify](https://github.com/nikoksr/notify)

View File

@ -54,6 +54,7 @@ platforms.
- *Line*
- *Mastodon*
- *Mattermost*
- *Matrix*
- *Microsoft Teams*
- *Pushbullet*
- *Pushover*

View File

@ -6,7 +6,6 @@
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1" />
<meta name="description" content="Description">
<meta name="viewport" content="width=device-width, initial-scale=1.0, minimum-scale=1.0">
<link rel="stylesheet" href="//cdn.jsdelivr.net/npm/docsify@4/lib/themes/vue.css">
<link
rel="stylesheet"
href="//cdn.jsdelivr.net/npm/docsify-darklight-theme@latest/dist/style.min.css"
@ -19,11 +18,31 @@
<script>
window.$docsify = {
homepage: 'home.md',
siteFont : 'Source Sans Pro',
defaultTheme : 'light | dark',
codeFontFamily : 'monospace',
logo: '/_media/logo.png',
loadSidebar: true,
subMaxLevel: 2,
name: 'PingMe',
repo: 'https://github.com/kha7iq/pingme'
repo: 'https://github.com/kha7iq/pingme',
darklightTheme: {
siteFont : 'PT Sans',
defaultTheme : 'dark | light',
codeFontFamily : 'Roboto Mono, Monaco, courier, monospace',
bodyFontSize : '16px',
dark: {
accent: '#ffa500',
background: '#282C34',
codeTextColor : '#b4b4b4',
codeBackgroundColor : '#353A44',
coverBackground : '#161B22'
},
light: {
accent: '#008080',
coverBackground : '#f0f0f0'
}
}
}
</script>
<!-- Docsify v4 -->
@ -32,5 +51,7 @@
src="//cdn.jsdelivr.net/npm/docsify-darklight-theme@latest/dist/index.min.js"
type="text/javascript">
</script>
<script src="//unpkg.com/prismjs/components/prism-bash.min.js"></script>
<script src="//unpkg.com/prismjs/components/prism-yaml.min.js "></script>
</body>
</html>

View File

@ -6,6 +6,18 @@
brew install kha7iq/tap/pingme
```
## Shell Script
By default pingme is going to be installed at `/usr/bin/` sudo is requried for this operation.
If you would like to provide a custom install path you can do so as input to script. i.e `./install.sh $HOME/bin`
```bash
curl -s https://raw.githubusercontent.com/kha7iq/pingme/master/install.sh | sudo sh
```
or
```bash
curl -sL https://bit.ly/installpm | sudo sh
```
## Linux
* AUR
@ -13,20 +25,18 @@ brew install kha7iq/tap/pingme
yay -S pingme-bin
```
* Binary
## Manual
```bash
wget -q https://github.com/kha7iq/pingme/releases/download/v0.2.3/pingme_Linux_x86_64.tar.gz
tar -xf pingme_Linux_x86_64.tar.gz
chmod +x pingme
# Chose desired version, architecture & target os
export PINGME_VERSION="0.2.4"
export ARCH="x86_64"
export OS="Linux"
wget -q https://github.com/kha7iq/pingme/releases/download/v${PINGME_VERSION}/pingme_${OS}_${ARCH}.tar.gz && \
tar -xf pingme_${OS}_${ARCH}.tar.gz && \
chmod +x pingme && \
sudo mv pingme /usr/local/bin/pingme
```
## Go Get
```bash
go get -u github.com/kha7iq/pingme
```
## Windows
```powershell

View File

@ -1,8 +1,8 @@
# Configuration
All the flags have corresponding environment variables assosiated with it. You
All the flags have corresponding environment variables associated with them. You
can either provide the value with flags or export to a variable. You can view
the corresponding variable to each with --help flag.
the corresponding variable with `--help` flag.
*Flags* take precedence over *variables*
@ -85,7 +85,8 @@ jobs:
- name: Ping me On
uses: kha7iq/pingme-action@v1
env:
GOTIFY_TOKEN: ${{ secrets.TELEGRAM_TOKEN }}
GOTIFY_TOKEN: ${{ secrets.GOTIFY_TOKEN }}
GOTIFY_URL: "example.com"
GOTIFY_TITLE: 'Reference: ${{ github.ref }}'
GOTIFY_MESSAGE: 'Event is triggered by ${{ github.event_name }}'
@ -247,7 +248,6 @@ jobs:
MATTERMOST_TOKEN: ${{ secrets.MATTERMOST_TOKEN }}
MATTERMOST_SERVER_URL: ${{ secrets.MATTERMOST_SERVER_URL }}
MATTERMOST_CHANNELS: ${{ secrets.MATTERMOST_CHANNELS }}
MATTERMOST_CHANNELS: ${{ secrets.MATTERMOST_CHANNELS }}
MATTERMOST_TITLE: 'Reference: ${{ github.ref }}'
MATTERMOST_MESSAGE: 'Event is triggered by ${{ github.event_name }}'
with:
@ -420,7 +420,7 @@ jobs:
pingme pushbullet \
--sms true \
--token "abcdefg" \
-d "adnroid" \
-d "android" \
--msg "some message" \
--number "00123456789"
```
@ -428,7 +428,7 @@ pingme pushbullet \
- Push notification
```bash
pingme pushbullet --token "abcdefg" -d "adnroid" --msg "some message"
pingme pushbullet --token "abcdefg" -d "android" --msg "some message"
```
- GitHub Action
@ -806,3 +806,72 @@ jobs:
| TEXTMAGIC_TITLE | "" |
| TEXTMAGIC_MESSAGE | "" |
| TEXTMAGIC_RECEIVER | "" |
## Matrix
Matrix uses either username and password, or an access token for authentication. Tokens will be used first, if not
present, username and password will be used. Similarly for --room, if not present, room will be determined using roomId
and domain.
```bash
pingme matrix \
--username 'matrix username' \
--password 'password' \
--token 'access token' \
--url 'https://matrix-client.matrix.org' \
--serverName 'server1.matrix.org' \
--room 'LRovrjPJaRChcTKgoK:matrix.org' \
--roomId 'LRovrjPJaRChcTKgoK' \
--domain 'matrix.org' \
--msg 'some message' \
--autoJoin
```
- 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:
MATRIX_USERNAME: ${{ secrets.MATRIX_USERNAME }}
MATRIX_PASSWORD: ${{ secrets.MATRIX_PASSWORD }}
MATRIX_ACCESS_TOKEN: ${{ secrets.MATRIX_ACCESS_TOKEN }}
MATRIX_SERVER_URL: ${{ secrets.MATRIX_SERVER_URL }}
MATRIX_SERVER_NAME: ${{ secrets.MATRIX_SERVER_NAME }}
MATRIX_ROOM: ${{ secrets.MATRIX_ROOM }}
MATRIX_ROOM_ID: ${{ secrets.MATRIX_ROOM_ID }}
MATRIX_DOMAIN: ${{ secrets.MATRIX_DOMAIN }}
MATRIX_MESSAGE: 'Event is triggered by ${{ github.event_name }}'
MATRIX_AUTO_JOIN: ${{ secrets.MATRIX_AUTO_JOIN }}
with:
# Chose the messaging platform.
# slack / telegram / rocketchat / teams /
# pushover / discord / email / mattermost / textmagic / matrix
service: matrix
```
- **Variables**
| Variables | Default Value |
|--------------------| :----------------: |
| MATRIX_USERNAME | "" |
| MATRIX_PASSWORD | "" |
| MATRIX_ACCESS_TOKEN | "" |
| MATRIX_SERVER_URL | "" |
| MATRIX_SERVER_NAME | "" |
| MATRIX_ROOM | "" |
| MATRIX_ROOM_ID | "" |
| MATRIX_DOMAIN | "" |
| MATRIX_MESSAGE | "" |
| MATRIX_AUTO_JOIN | "" |

29
go.mod
View File

@ -3,13 +3,26 @@ module github.com/kha7iq/pingme
go 1.16
require (
github.com/cpuguy83/go-md2man/v2 v2.0.0 // indirect
github.com/RocketChat/Rocket.Chat.Go.SDK v0.0.0-20220708192748-b73dcb041214 // indirect
github.com/go-openapi/analysis v0.21.3 // indirect
github.com/go-openapi/runtime v0.24.1 // indirect
github.com/go-openapi/spec v0.20.6 // indirect
github.com/go-openapi/strfmt v0.21.3 // indirect
github.com/go-openapi/validate v0.22.0 // indirect
github.com/gorilla/schema v1.4.1 // indirect
github.com/gorilla/websocket v1.5.0 // indirect
github.com/gotify/go-api-client/v2 v2.0.4
github.com/gregdel/pushover v0.0.0-20210216095829-2131362cb888
github.com/nikoksr/notify v0.17.2
github.com/russross/blackfriday/v2 v2.1.0 // indirect
github.com/sfreiberg/gotwilio v0.0.0-20201211181435-c426a3710ab5
github.com/silenceper/wechat/v2 v2.0.6
github.com/stretchr/testify v1.7.0
github.com/urfave/cli/v2 v2.3.0
github.com/gregdel/pushover v1.1.0
github.com/matrix-org/gomatrix v0.0.0-20210324163249-be2af5ef2e16
github.com/mitchellh/mapstructure v1.5.0 // indirect
github.com/nikoksr/notify v0.27.0
github.com/sfreiberg/gotwilio v1.0.0
github.com/silenceper/wechat/v2 v2.1.3
github.com/slack-go/slack v0.11.0 // indirect
github.com/spf13/cast v1.5.0 // indirect
github.com/stretchr/testify v1.8.0
github.com/textmagic/textmagic-rest-go-v2/v2 v2.0.3361 // indirect
github.com/urfave/cli/v2 v2.11.0
golang.org/x/net v0.38.0 // indirect
golang.org/x/oauth2 v0.0.0-20220630143837-2104d58473e0 // indirect
)

684
go.sum

File diff suppressed because it is too large Load Diff

81
install.sh Executable file
View File

@ -0,0 +1,81 @@
#!/bin/sh
# Usage: [sudo] [BINDIR=/usr/local/bin] ./install.sh [<BINDIR>]
#
# Example:
# 1. sudo ./install.sh /usr/local/bin
# 2. sudo ./install.sh /usr/bin
# 3. ./install.sh $HOME/usr/bin
# 4. BINDIR=$HOME/usr/bin ./install.sh
#
# Default BINDIR=/usr/bin
set -euf
if [ -n "${DEBUG-}" ]; then
set -x
fi
: ${BINDIR:="/usr/bin"}
if [ $# -gt 0 ]; then
BINDIR=$1
fi
_can_install() {
if [ ! -d "${BINDIR}" ]; then
mkdir -p "${BINDIR}" 2> /dev/null
fi
[ -d "${BINDIR}" ] && [ -w "${BINDIR}" ]
}
if ! _can_install && [ "$(id -u)" != 0 ]; then
printf "Run script as sudo\n"
exit 1
fi
if ! _can_install; then
printf -- "Can't install to %s\n" "${BINDIR}"
exit 1
fi
machine=$(uname -m)
case $machine in
armv7*)
machine="arm"
;;
aarch64)
machine="arm64"
;;
esac
case $(uname -s) in
Linux)
os="Linux"
;;
Darwin)
os="macOS"
;;
*)
printf "OS not supported\n"
exit 1
;;
esac
printf "Fetching latest version\n"
latest="$(curl -sL 'https://api.github.com/repos/kha7iq/pingme/releases/latest' | grep 'tag_name' | grep --only 'v[0-9\.]\+' | cut -c 2-)"
tempFolder="/tmp/pingme_v${latest}"
printf -- "Found version %s\n" "${latest}"
mkdir -p "${tempFolder}" 2> /dev/null
printf -- "Downloading pingme_%s_%s_%s.tar.gz\n" "${latest}" "${os}" "${machine}"
curl -sL -o "${tempFolder}/pingme.tar.gz" "https://github.com/kha7iq/pingme/releases/download/v${latest}/pingme_${os}_${machine}.tar.gz"
printf -- "Installing...\n"
tar -C "${tempFolder}" -xf "${tempFolder}/pingme.tar.gz"
install -m755 "${tempFolder}/pingme" "${BINDIR}/pingme"
printf "Cleaning up temp files\n"
rm -rf "${tempFolder}"
printf -- "Successfully installed pingme into %s/\n" "${BINDIR}"

View File

@ -1,6 +1,7 @@
package main
import (
"github.com/kha7iq/pingme/service/matrix"
"log"
"os"
@ -58,6 +59,7 @@ email address, Line, Gotify and Wechat.`
wechat.Send(),
gotify.Send(),
textmagic.Send(),
matrix.Send(),
}
err := app.Run(os.Args)

221
service/matrix/matrix.go Normal file
View File

@ -0,0 +1,221 @@
package matrix
import (
"fmt"
"github.com/matrix-org/gomatrix"
"github.com/urfave/cli/v2"
"strings"
)
type matrixPingMe struct {
Username string
Password string
Token string
Url string
ServerName string
Room string
RoomID string
Domain string
Message string
AutoJoin bool
}
func Send() *cli.Command {
var matrix matrixPingMe
return &cli.Command{
Name: "matrix",
Usage: "Send message via matrix",
UsageText: "pingme matrix --token 'syt_YW...E2qD' --room 'LRovrjPJaRChcTKgoK:matrix.org' " +
"--url 'matrix-client.matrix.org' --autoJoin --msg 'Hello, Matrix!'",
Flags: []cli.Flag{
&cli.StringFlag{
Destination: &matrix.Username,
Name: "username",
Aliases: []string{"u"},
Usage: "Matrix username",
EnvVars: []string{"MATRIX_USER"},
},
&cli.StringFlag{
Destination: &matrix.Password,
Name: "password",
Aliases: []string{"p"},
Usage: "Matrix password",
EnvVars: []string{"MATRIX_PASSWORD"},
},
&cli.StringFlag{
Destination: &matrix.Token,
Name: "token",
Aliases: []string{"t"},
Usage: "Matrix access token. Can be used instead of username+password",
EnvVars: []string{"MATRIX_ACCESS_TOKEN"},
},
&cli.StringFlag{
Destination: &matrix.Url,
Name: "url",
Usage: "Matrix server URL",
EnvVars: []string{"MATRIX_SERVER_URL"},
},
&cli.StringFlag{
Destination: &matrix.ServerName,
Name: "serverName",
Usage: "Can be provided if requests should be routed via a particular server",
EnvVars: []string{"MATRIX_SERVER_NAME"},
},
&cli.StringFlag{
Destination: &matrix.Room,
Name: "room",
Usage: "Matrix room to send the message to, in the format <roomId>:<domain>",
EnvVars: []string{"MATRIX_ROOM"},
},
&cli.StringFlag{
Destination: &matrix.RoomID,
Name: "roomId",
Usage: "Matrix room ID to send the message to. The exclamation mark at the beginning can be excluded.",
EnvVars: []string{"MATRIX_ROOM_ID"},
},
&cli.StringFlag{
Destination: &matrix.Domain,
Name: "domain",
Usage: "Used in conjunction with room ID to get the desired room",
EnvVars: []string{"MATRIX_DOMAIN"},
},
&cli.StringFlag{
Destination: &matrix.Message,
Name: "msg",
Aliases: []string{"m"},
Required: true,
Usage: "Message to send to matrix",
EnvVars: []string{"MATRIX_MESSAGE"},
},
&cli.BoolFlag{
Destination: &matrix.AutoJoin,
Name: "autoJoin",
Usage: "If enabled, will automatically join the specified room if not already joined",
EnvVars: []string{"MATRIX_AUTO_JOIN"},
},
},
Action: func(ctx *cli.Context) error {
// Login
client, err := matrix.login()
if err != nil {
return fmt.Errorf("failed to login to matrix: %v", err)
}
// Parse and set variables
err = matrix.setupVars()
if err != nil {
return err
}
// If necessary, join the given room
err = matrix.joinRoomIfNecessary(client)
if err != nil {
return err
}
// Send the message
_, err = client.SendText(matrix.Room, matrix.Message)
if err != nil {
return fmt.Errorf("failed to send matrix text: %v", err)
}
return nil
},
}
}
/*
setupVars will ensure the room ID begins with an exclamation mark and set the room string if not
already set, using the room ID and domain. If the room string, room id and domain are not set,
an error will be thrown.
*/
func (m *matrixPingMe) setupVars() error {
// Format the room ID
if !strings.HasPrefix(m.RoomID, "!") {
m.RoomID = "!" + m.RoomID
}
// Create the matrix room string if not already provided
if m.Room == "" {
if m.RoomID == "" || m.Domain == "" {
return fmt.Errorf("matrix room, or room ID and domain must be provided")
}
m.Room = fmt.Sprintf("%s:%s", m.RoomID, m.Domain)
}
return nil
}
/*
joinRoomIfNecessary gets all the joined rooms and checks if the desired room is in the list.
If not, and autoJoin is set to true - will attempt to join the room. If autoJoin is set to
false, an error will be thrown
*/
func (m *matrixPingMe) joinRoomIfNecessary(client *gomatrix.Client) error {
// Get already joined rooms
joined, err := client.JoinedRooms()
if err != nil {
return fmt.Errorf("failed to get joined rooms: %v", err)
}
// Check if we've already joined the desired room
foundRoom := false
for _, room := range joined.JoinedRooms {
if room == m.Room {
foundRoom = true
break
}
}
// If not, try auto join the room
if !foundRoom {
if !m.AutoJoin {
return fmt.Errorf("not joined room '%s' and --autoJoin is set to false", m.Room)
}
_, err = client.JoinRoom(m.Room, m.ServerName, nil)
if err != nil {
return fmt.Errorf("failed to auto join room '%s': %v", m.Room, err)
}
}
return nil
}
/*
login creates a gomatrix.Client instance, connecting to the given URL, using the provided login details
*/
func (m *matrixPingMe) login() (*gomatrix.Client, error) {
// Create a client instance
client, err := gomatrix.NewClient(m.Url, "", "")
if err != nil {
return nil, fmt.Errorf("failed to create matrix client: %v", err)
}
// Attempt to log in with whatever login details were provided.
// Or, throw an error if no login details were given
var resp *gomatrix.RespLogin
if m.Token != "" {
resp, err = client.Login(&gomatrix.ReqLogin{
Type: "m.login.token",
Token: m.Token,
})
if err != nil {
return nil, err
}
} else if m.Username != "" && m.Password != "" {
resp, err = client.Login(&gomatrix.ReqLogin{
Type: "m.login.password",
User: m.Username,
Password: m.Password,
})
if err != nil {
return nil, err
}
} else {
return nil, fmt.Errorf("no token, or username and password provided")
}
// Set the access token for this session
client.SetCredentials(resp.UserID, resp.AccessToken)
m.Token = resp.AccessToken
return client, nil
}

View File

@ -16,6 +16,7 @@ type pushOver struct {
Recipient string
Message string
Title string
Priority int
}
// Send parse values from *cli.context and return *cli.Command.
@ -61,10 +62,27 @@ All configuration options are also available via environment variables.`,
Usage: "Title of the message.",
EnvVars: []string{"PUSHOVER_TITLE"},
},
&cli.IntFlag{
Destination: &pushOverOpts.Priority,
Name: "priority",
Aliases: []string{"p"},
Value: 0,
Usage: "Priority of the message.",
EnvVars: []string{"PUSHOVER_PRIORITY"},
},
},
Action: func(ctx *cli.Context) error {
app := pushover.New(pushOverOpts.Token)
message := pushover.NewMessageWithTitle(pushOverOpts.Message, pushOverOpts.Title)
// message := &pushover.Message{Title: pushOverOpts.Title, Message: pushOverOpts.Message, Priority: pushOverOpts.Priority}
message := &pushover.Message{Title: pushOverOpts.Title,
Message: pushOverOpts.Message,
Priority: pushOverOpts.Priority,
Retry: 60,
Expire: 3600,
}
users := strings.Split(pushOverOpts.Recipient, ",")
for _, v := range users {

View File

@ -26,7 +26,7 @@ func Send() *cli.Command {
Name: "textmagic",
Usage: "Send message via TextMagic",
UsageText: "pingme textmagic --token 'tokenabc' --user 'sid123' " +
"--subject 'foo' --receiver '+140001442' --msg 'some message'",
"--title 'foo' --receiver '+140001442' --msg 'some message'",
Description: `textmagic provides ability to send sms to multiple numbers.
You can specify multiple receivers by separating the value with a comma.`,
Flags: []cli.Flag{