Compare commits

...

209 Commits
v1.1.0 ... main

Author SHA1 Message Date
MedzikUserBot d27381c48a go mod tidy 2022-07-18 03:08:04 +00:00
renovate[bot] 36e0d03d9a fix(deps): update module go.mongodb.org/mongo-driver to v1.10.0 2022-07-18 03:07:38 +00:00
MedzikUser c01119e393
chore(renovatebot): update config 2022-07-06 10:58:23 +02:00
MedzikUserBot 0773d198a4 go mod tidy 2022-07-05 10:08:04 +00:00
renovate[bot] 7e35839193 fix(deps): update module github.com/gin-contrib/cors to v1.4.0 2022-07-05 10:07:36 +00:00
MedzikUserBot 08522d132f go mod tidy 2022-06-06 20:16:30 +00:00
Renovate Bot 9dd5c30879 fix(deps): update module github.com/gin-gonic/gin to v1.8.1 2022-06-06 20:16:01 +00:00
Renovate Bot 3cdcd88551 chore(deps): update docker/login-action action to v2 2022-06-05 07:54:26 +02:00
Renovate Bot c8cda28fba chore(deps): update goreleaser/goreleaser-action action to v3 2022-06-05 07:54:10 +02:00
Oskar b6c9b07df8
doc: domain expired 2022-06-05 07:53:42 +02:00
MedzikUser 28a8e294d4
ci: update go version 2022-06-02 21:30:26 +02:00
MedzikUserBot 61d23e1773 go mod tidy 2022-05-30 14:28:39 +00:00
Renovate Bot 3cee6b5ba5 fix(deps): update module github.com/gin-gonic/gin to v1.8.0 2022-05-30 14:28:15 +00:00
Oskar a3ce1b13fc
ci: change commit user 2022-05-13 09:02:40 +02:00
github-actions[bot] 225d307a24 go mod tidy 2022-05-04 00:44:30 +00:00
Renovate Bot 5b6869ea16 fix(deps): update module go.mongodb.org/mongo-driver to v1.9.1 2022-05-04 00:44:02 +00:00
Renovate Bot 5ef696d0de chore(deps): update github/codeql-action action to v2 2022-04-29 22:45:02 +02:00
Renovate Bot 87b7e521b7 chore(deps): update actions/upload-artifact action to v3 2022-04-29 22:44:53 +02:00
Renovate Bot 3d285f2843 chore(deps): update actions/checkout action to v3 2022-04-29 22:44:41 +02:00
Renovate Bot c486a29d3a chore(deps): update actions/setup-go action to v3 2022-04-29 22:44:27 +02:00
github-actions[bot] ad53f8c69a go mod tidy 2022-04-06 03:01:03 +00:00
Renovate Bot d1232268a0 fix(deps): update module go.mongodb.org/mongo-driver to v1.9.0 2022-04-06 03:00:39 +00:00
github-actions[bot] 4e5d075d76 go mod tidy 2022-04-05 04:59:49 +00:00
Renovate Bot 5e06729a08 fix(deps): update module github.com/burntsushi/toml to v1.1.0 2022-04-05 04:59:23 +00:00
github-actions[bot] 37474d2244 go mod tidy 2022-03-03 00:12:23 +00:00
Renovate Bot 6b2e351434 fix(deps): update module go.mongodb.org/mongo-driver to v1.8.4 2022-03-03 00:11:57 +00:00
github-actions[bot] aa661476e9 go mod tidy 2022-02-26 20:56:13 +00:00
Renovate Bot baac708e57 fix(deps): update module github.com/burntsushi/toml to v1 2022-02-26 21:55:51 +01:00
Renovate Bot 5388f506bc chore(deps): update golangci/golangci-lint-action action to v3 2022-02-26 21:55:28 +01:00
github-actions[bot] fb7163f529 go mod tidy 2022-02-01 21:23:00 +00:00
Renovate Bot 09654a572d fix(deps): update module go.mongodb.org/mongo-driver to v1.8.3 2022-02-01 21:22:38 +00:00
github-actions[bot] e595fee153 go mod tidy 2022-01-04 23:52:44 +00:00
Renovate Bot e03093aad6 fix(deps): update module go.mongodb.org/mongo-driver to v1.8.2 2022-01-04 23:52:14 +00:00
github-actions[bot] d037031f46 go mod tidy 2021-12-08 18:31:49 +00:00
Renovate Bot 6d9129bbea fix(deps): update module go.mongodb.org/mongo-driver to v1.8.1 2021-12-08 18:31:27 +00:00
Oskar 8cc6799e34
chore(docs): update readme 2021-11-30 22:15:12 +01:00
github-actions[bot] 09b8a82c50 go mod tidy 2021-11-24 17:40:04 +00:00
Renovate Bot bcddce32ab fix(deps): update module github.com/gin-gonic/gin to v1.7.7 2021-11-24 17:39:42 +00:00
github-actions[bot] 8d24ee0be9 go mod tidy 2021-11-23 23:10:19 +00:00
Renovate Bot 4b4338598f fix(deps): update module go.mongodb.org/mongo-driver to v1.8.0 2021-11-23 23:09:58 +00:00
github-actions[bot] a46ea022a8 go mod tidy 2021-11-23 18:16:09 +00:00
Renovate Bot f7ffc566ac fix(deps): update module go.mongodb.org/mongo-driver to v1.7.5 2021-11-23 18:15:39 +00:00
github-actions[bot] a3a715f8f8 go mod tidy 2021-11-23 10:34:20 +00:00
Renovate Bot fb43354130 fix(deps): update module github.com/gin-gonic/gin to v1.7.6 2021-11-23 10:34:01 +00:00
Medzik 15c60fa84a chore: nodemon has been replaced by air 2021-11-13 12:51:38 +00:00
Medzik 6e9a5805d6 feat(opts): add --no-update, move main.go => cmd/pingbot/main.go 2021-11-13 12:31:50 +00:00
Medzik 09d68066ea chore(deps): upgrade 2021-11-13 11:57:37 +00:00
Oskar b2358fefee
feat: add freebsd and arm64 to releases 2021-11-12 15:27:11 +01:00
github-actions[bot] 6d9e2e2826 go mod tidy 2021-11-10 19:23:29 +00:00
Medzik abf82302ce chore(deps): upgrade 2021-11-10 19:23:05 +00:00
Medzik e8ef0f23af delete node_modules 2021-11-10 19:21:57 +00:00
Medzik a1b863984c update 2021-11-10 13:38:54 +00:00
github-actions[bot] 29d326a29c gofmt 2021-11-07 19:21:43 +00:00
Medzik a880aaf054 fix(log): update trace error log 2021-11-07 19:20:08 +00:00
github-actions[bot] 55b4fb0b14 go mod tidy 2021-11-03 16:31:15 +00:00
Renovate Bot cae43813f9 fix(deps): update module go.mongodb.org/mongo-driver to v1.7.4 2021-11-03 17:30:44 +01:00
github-actions[bot] b4eb3e668c go mod tidy 2021-10-31 17:54:28 +00:00
MedzikUser ea87a1a227 chore(deps): upgrade 2021-10-31 18:54:00 +01:00
github-actions[bot] 2a2304db0e go mod tidy 2021-10-27 21:29:57 +00:00
MedzikUser 02659540d6 chore(deps): upgrade 2021-10-27 23:29:21 +02:00
MedzikUser dd7ae5c856 chore: update module name 2021-10-26 19:39:30 +02:00
Oskar c08c6c36e7
Update README 2021-10-23 11:53:11 +02:00
Oskar cfef7e7bc7
Create codeql-analysis.yml 2021-10-22 23:09:19 +02:00
Oskar dd605b81ed
remove empty line 2021-10-22 22:28:18 +02:00
Oskar d211ea49b1
chore(Makefile): update 2021-10-22 22:27:08 +02:00
github-actions[bot] 538766c1fc go mod tidy 2021-10-21 21:25:52 +00:00
renovate[bot] 228dc22c9a
fix(deps): update module github.com/medzikuser/go-utils to v1 (#24)
Co-authored-by: Renovate Bot <bot@renovateapp.com>
2021-10-21 23:24:53 +02:00
Oskar 1b938d0496
chore: remove print http UserAgent 2021-10-21 12:37:21 +02:00
github-actions[bot] 593dc62615 go mod tidy 2021-10-19 21:23:02 +00:00
MedzikUser 787aaaad8f fix(deps): upgrade 2021-10-19 23:22:28 +02:00
Oskar 43e46b5cad
chore(GoReleaser): publish to Docker (#23)
* Create Dockerfile
* Update .goreleaser.yml
* Update .github/workflows/ci.yml
2021-10-19 23:20:25 +02:00
Oskar e7005810b8
Gitpod change workspace image
Change Gitpod workspace image to `medzik/gitpod:full`

* Delete .gitpod.Dockerfile
* Update .gitpod.yml
2021-10-19 22:43:43 +02:00
Oskar e744818d13
Revert 2021-10-19 22:14:14 +02:00
Oskar 48fc36f590
chore: gpg sign artifacts 2021-10-19 21:53:11 +02:00
Medzik f9a954fbd3 feat: add UserAgent 2021-10-15 19:15:29 +00:00
Medzik d906c0d3b4 update workflows 2021-10-15 17:00:54 +00:00
Medzik 6629a3e1cc chore(deps): upgrade golang.org/x/oauth2 2021-10-15 16:56:04 +00:00
github-actions[bot] 6933bd398d go mod tidy 2021-10-05 19:51:05 +00:00
Renovate Bot 48780adb8d fix(deps): update module go.mongodb.org/mongo-driver to v1.7.3 2021-10-05 19:50:43 +00:00
github-actions[bot] 310ffecd9f go mod tidy 2021-09-24 14:01:21 +00:00
Renovate Bot 343e8b807d fix(deps): update module github.com/joho/godotenv to v1.4.0 2021-09-24 14:00:49 +00:00
Medzik 3af027afdc chore: update api status 2021-09-15 19:31:01 +00:00
Medzik 7670dee9e9 chore(deps): upgrade 2021-09-15 19:17:40 +00:00
Medzik 7240621ead fix: delete cluster option (not used in latest config) 2021-09-09 18:55:36 +00:00
Medzik 8f64eb1dcb perf(database): change _id field to url
BREAKING CHANGE: YOU MUST CHANGE `_id` TO `url` AND GENERATE ObjectID to `_id` IN MONGODB.
2021-09-08 20:31:59 +00:00
Medzik 5ebc9a5b0a chore: rename `backend` to `ping` 2021-09-08 20:18:35 +00:00
Medzik 614054e446 perf(config): remove mongodb db and collection from .env
BREAKING CHANGE: mongodb database and collection ISN'T LONGER IN ENV MUST BE IN config.toml, and RENAME MONGODB_URI to MONGO_URI IN .env.
Deleted node in config.
2021-09-08 20:16:02 +00:00
Medzik 5dd2c129cb fix(cache): retry attempts from 1 to 15 2021-09-08 19:49:00 +00:00
Medzik e9d6197817 update few files 2021-09-07 20:45:10 +00:00
Medzik 6af384e731 chore: disable auto updater if version is dev 2021-09-07 20:37:03 +00:00
Medzik fa03e08b28 chore(deps): upgrade 2021-09-07 20:11:45 +00:00
Medzik a9352e4cc9 add build to pre-commit 2021-09-07 20:11:04 +00:00
Medzik d1ad4128d9 add pre-commit 2021-09-07 20:07:51 +00:00
Medzik 22e7e1aa11 chore(website): update getAll 2021-09-05 11:20:19 +00:00
Medzik b3decb1561 chore(retry): add retry from utils 2021-09-05 10:50:41 +00:00
Medzik c8091847d0 Merge branch 'main' of https://github.com/MedzikUser/go-pingbot 2021-09-05 10:26:30 +00:00
github-actions[bot] b836948171 go mod tidy 2021-09-04 13:06:58 +00:00
Renovate Bot 831eae63c5 fix(deps): update module github.com/medzikuser/go-utils to v0.4.0 2021-09-04 13:06:26 +00:00
Medzik f666be4451 go mod tidy -go=1.17 2021-09-04 11:05:41 +00:00
github-actions[bot] bea9b40d96 gofmt 2021-09-02 20:44:51 +00:00
Oskar d728e96d82
chore: move db connect under opts param 2021-09-02 22:44:23 +02:00
github-actions[bot] 4a4505c1f2 go mod tidy 2021-09-02 20:27:07 +00:00
Oskar d1fd5be5c3
Merge pull request #17 from MedzikUser/renovate/go.mongodb.org-mongo-driver-1.x
fix(deps): update module go.mongodb.org/mongo-driver to v1.7.2
2021-09-02 22:26:39 +02:00
Renovate Bot cc9f0c8ac9
fix(deps): update module go.mongodb.org/mongo-driver to v1.7.2 2021-09-02 20:23:12 +00:00
Oskar 0c1252a431 update 2021-09-02 22:21:17 +02:00
Oskar ffa41f6fa2 update 2021-09-02 22:16:11 +02:00
Medzik 5dd6bc1195 update
- update workflow (fix upload artifact)
- update comment in gitpod Dockerfile
2021-09-01 13:00:34 +00:00
Medzik 4b939c6d58 fix(rebuild binary [TEST]): rebuild binary (test update binary from tar.xz)
- add rm bin in gitpod Dockerfile
2021-09-01 12:55:01 +00:00
Medzik 021fc6ea62 update
- updated bash scripts
- renamed env schema
- updated binary archive from tar.gz to tar.xz
- update workflows
2021-09-01 12:49:56 +00:00
Medzik 324863f072 chore(deps): upgrade 2021-09-01 12:30:00 +00:00
Oskar 5ebf84f529 add error check (fix lint) 2021-08-31 20:22:45 +02:00
Medzik 4d7975f7f9 update readme 2021-08-31 18:18:36 +00:00
Medzik 3391c946ff chore(opts): add option update e.g. to major version update 2021-08-31 18:16:28 +00:00
Medzik 15e09e8ab7 chore(deps): upgraded golang.org/x/sys 2021-08-31 17:37:09 +00:00
Medzik 385f98e080 feat: add timeout to stop after ping (set in config) 2021-08-30 13:41:06 +00:00
Medzik cca24ec927 chore(deps): upgraded github.com/klauspost/compress v1.13.4 => v1.13.5 2021-08-30 13:18:34 +00:00
Medzik 08b127e96a add start script 2021-08-29 10:19:54 +00:00
Medzik 7ef99d82c6 feat(config): Add Stop After Ping 2021-08-29 10:14:35 +00:00
Medzik 107e9d3bd8 chore(deps): upgrade 2021-08-29 09:41:10 +00:00
Oskar fcd664c82f update 2021-08-28 13:03:07 +02:00
github-actions[bot] c2d35979e1 gofmt 2021-08-27 17:25:59 +00:00
Oskar 7a541e244f update ci 2021-08-27 19:25:28 +02:00
Oskar 4c07bd41be
Add emoji 2021-08-23 21:19:44 +02:00
Oskar e331178815
Update auto-fix.yml 2021-08-23 21:14:49 +02:00
Medzik c8c798744a git pull 2021-08-22 18:14:18 +02:00
Medzik 169bdca2ba chore(cors): update cors only to pingbot.cf 2021-08-22 18:13:30 +02:00
Oskar 6af039789c
Merge pull request #15 from MedzikUser/renovate/github.com-medzikuser-go-utils-0.x
fix(deps): update module github.com/medzikuser/go-utils to v0.3.4
2021-08-22 17:40:42 +02:00
github-actions[bot] 42905aba51 go mod tidy 2021-08-22 11:38:15 +00:00
Renovate Bot eaa5ec27a6
fix(deps): update module github.com/medzikuser/go-utils to v0.3.4 2021-08-22 11:37:50 +00:00
Medzik a350ed7dee update 2021-08-22 12:04:12 +02:00
Medzik 330998710b chore(deps): upgrade 2021-08-20 14:08:19 +00:00
Medzik 17aab6ff5a Merge branch 'main' of https://github.com/MedzikUser/go-pingbot 2021-08-20 14:06:47 +00:00
Medzik aa7da27a10 update readme 2021-08-20 14:06:29 +00:00
github-actions[bot] d838096f3d go mod tidy 2021-08-20 10:44:16 +00:00
Medzik 44eeaa6bf7 chore: change pid
Change to cpu.PID in api/status
2021-08-20 10:41:52 +00:00
Medzik 3570ee0da3 chore(deps): upgrade 2021-08-20 10:28:52 +00:00
Oskar 7869f3d5ec
Update auto-fix.yml 2021-08-19 23:24:22 +02:00
github-actions[bot] 031864d375 go mod tidy 2021-08-19 21:21:34 +00:00
Oskar fbfce12002
Merge pull request #14 from MedzikUser/renovate/github.com-medzikuser-go-utils-0.x
fix(deps): update module github.com/medzikuser/go-utils to v0.3.3
2021-08-19 23:21:08 +02:00
Renovate Bot b22f043bc5
fix(deps): update module github.com/medzikuser/go-utils to v0.3.3 2021-08-19 20:29:52 +00:00
Oskar a96d4f8229
Update auto-fix.yml 2021-08-19 20:28:52 +02:00
Oskar 6a0e8e8a49
Update auto-fix.yml 2021-08-19 20:26:39 +02:00
Medzik 7002d96902 workflows fix 2021-08-18 17:19:07 +00:00
Medzik aa68098555 workflows fix 2021-08-18 17:13:28 +00:00
Medzik cd04ae3753 git pull 2021-08-18 17:11:48 +00:00
Medzik 67258a2315 workflows fix 2021-08-18 17:11:40 +00:00
github-actions[bot] 7b3f80d518 go mod tidy 2021-08-18 17:02:52 +00:00
Medzik aa06d6e32f fix: upgrade deps and delete unused functions 2021-08-18 16:59:51 +00:00
github-actions[bot] 5d31d95915 gofmt 2021-08-18 16:51:32 +00:00
Medzik fad478ebe6 add gofmt to github workflows 2021-08-18 16:50:08 +00:00
Medzik cafc70c6a6 Update 2021-08-18 16:38:49 +00:00
Oskar 6faee132ad
Update push.yml 2021-08-17 23:31:19 +02:00
Medzik 4afe7bcc5a go get 2021-08-17 21:27:31 +00:00
Medzik 7c5bfeeae9 Update 2021-08-17 21:26:19 +00:00
github-actions[bot] 601837e102 go mod tidy 2021-08-17 21:04:14 +00:00
Medzik 1d6ef68be7 git pull 2021-08-17 21:03:25 +00:00
Medzik 560b5c5470 update workflows 2021-08-17 21:03:04 +00:00
Renovate Bot 0df8fbdcde fix(deps): update module github.com/medzikuser/go-utils to v0.3.2 2021-08-15 22:38:03 +00:00
Medzik e9f0631881 chore(fix api): cpu arch 2021-08-15 17:49:57 +00:00
Medzik cdefd28df7 fix: add github token to auto updater
- Added GitHub Token to auto updater
- Upgrade go-utils
2021-08-15 14:38:12 +00:00
Medzik 4095092cca chore(utils): update 2/2 2021-08-15 14:30:38 +00:00
Renovate Bot ae22397b9e fix(deps): update module github.com/gin-gonic/gin to v1.7.4 2021-08-15 12:38:42 +00:00
Medzik 54833f5ac5 fix(deps): go-utils -> v0.3.0 (1/2) 2021-08-14 21:43:30 +00:00
Renovate Bot 23f2f4e100 fix(deps): update module github.com/medzikuser/go-utils to v0.1.0 2021-08-14 00:16:34 +00:00
Renovate Bot 0f3409b7fa fix(deps): update module github.com/strucoder/pidusage to v0.2.1 2021-08-13 12:15:10 +00:00
Medzik 0ba1c8a2c0 fix: add omitempty to types fields, change error message 2021-08-12 21:13:10 +00:00
Medzik 35298bacfc chore(utils): v0.0.0 => v0.0.1 2021-08-12 21:00:37 +00:00
Medzik 2537ef6fa3 chore(deps): upgraded golang.org/x/crypto 2021-07-11 => 2021-08-12 2021-08-12 20:54:12 +00:00
Medzik dd0d47d166 Update 2021-08-12 19:39:05 +00:00
Medzik 8ba0bb4f9e fix(deps): upgraded github.com/klauspost/compress v1.13.3 => v1.13.4 2021-08-12 19:28:23 +00:00
Medzik e7894959fc chore: add go-utils 2021-08-12 19:26:54 +00:00
Medzik afaae89a9d fix(lint): Delete wait group and Add retry
- Deleted wait group
- Added retry in cache
2021-08-11 11:09:08 +00:00
Medzik 3432a74d23 feat: Add Cache URLs and Database config from toml file
- Added Cache URLs from Database
- and Database Name and Collection set from toml config file
2021-08-11 10:35:51 +00:00
Medzik f09209d1bf deleted(api): now is vercel serverless 2021-08-10 19:57:36 +00:00
Medzik 6eea751bdf fix(deps): go mod tidy 2021-08-10 19:52:17 +00:00
Medzik 43dd7d785c fix(deps): upgrade 2021-08-10 19:50:33 +00:00
MedzikUser 19007525da
Update semantic-release name 2021-08-07 22:13:41 +02:00
Medzik 7969acac5b fix(deps): upgrade 2021-08-07 20:07:44 +00:00
Medzik 8159b6022c gitpod(docker): npm to yarn 2021-08-07 20:05:34 +00:00
Medzik fe16a2ab62 feat(config): auto download schema config 2021-08-07 20:03:26 +00:00
Medzik 683aad93fe fix(go.mod): go mod tidy 2021-08-07 13:20:59 +00:00
MedzikUser a83c9afb0e
Update renovate.json 2021-08-07 13:01:35 +02:00
MedzikUser 8cb269dc31
Update renovate.json 2021-08-06 21:10:40 +02:00
MedzikUser f8ea73de1f
Merge pull request #8 from MedzikUser/renovate/github.com-burntsushi-toml-0.x
fix(deps): update module github.com/burntsushi/toml to v0.4.1
2021-08-05 19:54:09 +02:00
Renovate Bot 48072e8230
fix(deps): update module github.com/burntsushi/toml to v0.4.1 2021-08-05 09:18:44 +00:00
MedzikUser aaafd7403b
Merge pull request #7 from MedzikUser/renovate/go.mongodb.org-mongo-driver-1.x
fix(deps): update module go.mongodb.org/mongo-driver to v1.7.1
2021-08-03 22:18:16 +02:00
Renovate Bot e9b92bfc60
fix(deps): update module go.mongodb.org/mongo-driver to v1.7.1 2021-08-03 20:08:19 +00:00
Medzik f8f6c58519 feat(delete): Add password. You must update env (TODO: JWT) 2021-08-02 20:53:50 +00:00
Medzik 06e6968e31 fix(deps): upgrade 2021-08-02 14:23:15 +00:00
Medzik 542cd5ed54 renovate: automerge, go mod tidy 2021-08-02 09:45:38 +00:00
MedzikUser dc3fb64fce
Merge pull request #5 from MedzikUser/renovate/github.com-burntsushi-toml-0.x
fix(deps): update module github.com/burntsushi/toml to v0.4.0
2021-08-02 11:30:14 +02:00
Renovate Bot 428708a054
fix(deps): update module github.com/burntsushi/toml to v0.4.0 2021-08-02 08:32:41 +00:00
Medzik b8f70413cf fix(api): delete url from database 2021-08-01 18:26:48 +00:00
Medzik 8d901b1160 fix(api): delete url 2021-08-01 17:43:59 +00:00
Medzik 018a2e9b90 feat(uptime): Add uptime to status and build date
- Moved type.go to types.go
- Added build date
- Removed linter from gitpod Dockerfile (now is in gitpod image)
- Added mongodb Database and Collection to config file (now isn't used [TODO])
- Added uptime to status
2021-08-01 15:48:24 +00:00
Medzik 5263dddad2 fix(version): Fix version 2021-07-31 21:21:08 +00:00
MedzikUser a586d4690b
fix(github workflows): Fix upload files to release 2021-07-31 23:10:43 +02:00
Medzik 689e833dbb feat: add ctx to backend ping, add cluster functional...
- Added ctx to backend ping
- Log changed Stderr to Stdout
- Added cluster functional
- Updated more files
2021-07-31 20:59:43 +00:00
Medzik ea7fb2774f Update Workflow, gitpod Dockerfile, nodemon.sh 2021-07-30 21:01:25 +00:00
Medzik 4d78ffd25b Add toml config, golint to gitpod Dockerfile...
- Add toml config, golint to gitpod Dockerfile
- Update nodemon, backend status, Readme
- Move MongoDB to mongo folder in db
2021-07-29 19:54:55 +00:00
Medzik c0aa75b980 Redis 2021-07-29 18:51:15 +00:00
Medzik 87f5dfb2e1 Automatize version number, add goreleaser to gitpod Dockerfile
- Automatized version number
- Added goreleaser to gitpod Dockerfile
2021-07-26 09:32:50 +00:00
Medzik cf0bb1c0a6 v1.3.1
- Added gitpod Dockerfile
- Changes in dependencies
2021-07-24 21:19:22 +00:00
MedzikUser ccf6475283
Merge pull request #2 from MedzikUser/renovate/configure
Configure Renovate
2021-07-24 22:56:18 +02:00
Renovate Bot b5ce53da7c
Add renovate.json 2021-07-24 20:18:18 +00:00
Medzik f1921ff8b1 v1.3.0
- license: changed from MIT to 0BSD
- database: added retry to connect
- api: modified status
- config: moved to files env and no-env
- other modified: nodemon.json, .gitignore
2021-07-24 09:50:17 +00:00
Medzik 13771d1394 v1.2.0
- database: added collection to var
- website: changed gin.G to json type
- api: status added cpu usage and move memory to stats
- go: upgrade deps
- update nodemon cfg and README
2021-07-22 08:23:49 +00:00
MedzikUser 9c41f504ad
go: Upgrade deps
Bump go.mongodb.org/mongo-driver from 1.6.0 to 1.7.0
2021-07-21 13:05:06 +02:00
dependabot[bot] 17c5065087
Bump go.mongodb.org/mongo-driver from 1.6.0 to 1.7.0
Bumps [go.mongodb.org/mongo-driver](https://github.com/mongodb/mongo-go-driver) from 1.6.0 to 1.7.0.
- [Release notes](https://github.com/mongodb/mongo-go-driver/releases)
- [Commits](https://github.com/mongodb/mongo-go-driver/compare/v1.6.0...v1.7.0)

---
updated-dependencies:
- dependency-name: go.mongodb.org/mongo-driver
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2021-07-21 06:15:28 +00:00
57 changed files with 1075 additions and 743 deletions

32
.air.toml Normal file
View File

@ -0,0 +1,32 @@
root = "."
tmp_dir = "tmp"
[build]
bin = "./tmp/pingbot"
cmd = "make build BINARY_OUT=./tmp/pingbot"
delay = 1000
exclude_dir = ["tmp"]
exclude_file = []
exclude_regex = []
exclude_unchanged = false
follow_symlink = false
full_bin = ""
include_dir = []
include_ext = ["go", "toml"]
kill_delay = "0s"
log = "air-build-errors.log"
send_interrupt = false
stop_on_error = true
[color]
app = ""
build = "yellow"
main = "magenta"
runner = "green"
watcher = "cyan"
[log]
time = false
[misc]
clean_on_exit = true

View File

@ -1,4 +0,0 @@
# MongoDB
MONGODB_URI=mongodb+srv://...
MONGODB_DB=...
MONGODB_COLLECTION=...

View File

@ -1,14 +0,0 @@
version: 2
updates:
# Maintain dependencies for Go modules
- package-ecosystem: "gomod"
directory: "/"
schedule:
interval: "daily"
# Maintain dependencies for GitHub Actions
- package-ecosystem: "github-actions"
directory: "/"
schedule:
interval: "daily"

89
.github/workflows/ci.yml vendored Normal file
View File

@ -0,0 +1,89 @@
name: CI
on:
push:
branches:
- main
pull_request:
permissions:
contents: write
jobs:
ci:
runs-on: ubuntu-latest
steps:
- name: Checkout (go mod tidy / gofmt)
if: github.event_name != 'pull_request'
uses: actions/checkout@v3
with:
fetch-depth: 0
- name: Set up Go
uses: actions/setup-go@v3
- name: Setup Git
if: github.event_name != 'pull_request'
run: |
git config --local user.email "rm99iv9s@duck.com"
git config --local user.name "MedzikUserBot"
- name: Tidy
if: github.event_name != 'pull_request'
run: |
go mod tidy -go=1.17
git add .
git diff-index --quiet HEAD || git commit -m "go mod tidy"
- name: GoFmt
if: github.event_name != 'pull_request'
run: |
go fmt ./...
git add .
git diff-index --quiet HEAD || git commit -m "gofmt"
- name: Pull changes
if: github.event_name != 'pull_request'
run: git pull -r
- name: Push changes
if: github.event_name != 'pull_request'
uses: ad-m/github-push-action@master
with:
github_token: ${{ secrets.GITHUB_TOKEN }}
branch: ${{ github.ref }}
- name: Semantic Release
if: github.event_name != 'pull_request'
uses: go-semantic-release/action@v1
with:
github-token: ${{ secrets.GITHUB_TOKEN }}
- name: Checkout (build)
uses: actions/checkout@v3
with:
fetch-depth: 0
- name: Login to DockerHub
if: github.event_name != 'pull_request'
uses: docker/login-action@v2
with:
username: ${{ secrets.DOCKERHUB_USERNAME }}
password: ${{ secrets.DOCKERHUB_TOKEN }}
- name: Run GoReleaser
uses: goreleaser/goreleaser-action@v3
with:
distribution: goreleaser
version: latest
args: release --rm-dist
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
- name: Upload Artifact
uses: actions/upload-artifact@v3
with:
path: dist/*.tar*
retention-days: 10

74
.github/workflows/codeql-analysis.yml vendored Normal file
View File

@ -0,0 +1,74 @@
# For most projects, this workflow file will not need changing; you simply need
# to commit it to your repository.
#
# You may wish to alter this file to override the set of languages analyzed,
# or to provide custom queries or build logic.
#
# ******** NOTE ********
# We have attempted to detect the languages in your repository. Please check
# the `language` matrix defined below to confirm you have the correct set of
# supported CodeQL languages.
#
name: "CodeQL"
on:
push:
branches: [ main ]
pull_request:
branches: [ main ]
schedule:
- cron: '21 0 * * 5'
jobs:
analyze:
name: Analyze
runs-on: ubuntu-latest
permissions:
actions: read
contents: read
security-events: write
strategy:
fail-fast: false
matrix:
language: [ 'go' ]
# CodeQL supports [ 'cpp', 'csharp', 'go', 'java', 'javascript', 'python' ]
# Learn more:
# https://docs.github.com/en/free-pro-team@latest/github/finding-security-vulnerabilities-and-errors-in-your-code/configuring-code-scanning#changing-the-languages-that-are-analyzed
steps:
- name: Checkout repository
uses: actions/checkout@v3
# Initializes the CodeQL tools for scanning.
- name: Initialize CodeQL
uses: github/codeql-action/init@v2
with:
languages: ${{ matrix.language }}
# If you wish to specify custom queries, you can do so here or in a config file.
# By default, queries listed here will override any specified in a config file.
# Prefix the list here with "+" to use these queries and those in the config file.
# queries: ./path/to/local/query, your-org/your-repo/queries@main
# Autobuild attempts to build any compiled languages (C/C++, C#, or Java).
# If this step fails, then you should remove it and run the build manually (see below)
- name: Autobuild
uses: github/codeql-action/autobuild@v2
# Command-line programs to run using the OS shell.
# 📚 https://git.io/JvXDl
# ✏️ If the Autobuild fails above, remove it and uncomment the following three lines
# and modify them (or add more) to build your code if your project
# uses a compiled language
#- run: |
# make bootstrap
# make release
- name: Perform CodeQL Analysis
uses: github/codeql-action/analyze@v2

View File

@ -9,12 +9,9 @@ jobs:
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v2
- name: Set up Go
uses: actions/setup-go@v2
with:
go-version: 1.16
uses: actions/checkout@v3
- name: GolangCi Lint
uses: golangci/golangci-lint-action@v2
uses: golangci/golangci-lint-action@v3
with:
version: latest

View File

@ -1,27 +0,0 @@
name: goreleaser
on:
pull_request:
push:
permissions:
contents: write
jobs:
goreleaser:
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v2
- name: Set up Go
uses: actions/setup-go@v2
with:
go-version: 1.16
- name: Run GoReleaser
uses: goreleaser/goreleaser-action@v2
with:
distribution: goreleaser
version: latest
args: release --rm-dist
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}

28
.gitignore vendored
View File

@ -1,23 +1,21 @@
# Dot Files
.env
.cache
*.env*
!schema.env
# Binaries for programs and plugins
# Cache
.cache
tmp/
# Binaries
*.exe
*.exe~
*.dll
*.so
*.dylib
*.out
dist/
# Test binary, built with `go test -c`
*.test
# Output binary
*.out
dist/
# Configs
config.toml
# Sums
MD5SUM
SHA256SUM
VERSION
# Log files
air-build-errors.log

View File

@ -1,5 +1,4 @@
ports:
- port: 8080
image: medzik/gitpod:full
checkoutLocation: "go/src/pingbot"
workspaceLocation: "go/src/pingbot"

View File

@ -5,18 +5,61 @@ before:
- go mod tidy
builds:
- goos:
- linux
goarch:
- amd64
- main: ./cmd/pingbot
binary: '{{ .ProjectName }}.out'
goos:
- linux
- freebsd
goarch:
- amd64
- arm64
ldflags:
- -s -w
- -X github.com/medzikuser/go-pingbot/config.Version={{ .RawVersion }}
- -X github.com/medzikuser/go-pingbot/config.Build={{ .Date }}
archives:
- format: tar.gz
- format: tar.xz
files:
- none*
- schema.env
- config.schema.toml
- README.md
- LICENSE
- start.sh
checksum:
name_template: 'checksums.txt'
algorithm: sha256
dockers:
- id: amd64
goos: linux
goarch: amd64
goarm: ''
image_templates:
- "medzik/pingbot:latest"
- "medzik/pingbot:{{ .Tag }}"
- "medzik/pingbot:v{{ .Major }}"
- "medzik/pingbot:v{{ .Major }}.{{ .Minor }}"
dockerfile: Dockerfile
use: docker
build_flag_templates:
- "--pull"
- "--label=org.opencontainers.image.created={{ .Date }}"
- "--label=org.opencontainers.image.title={{ .ProjectName }}"
- "--label=org.opencontainers.image.revision={{ .FullCommit }}"
- "--label=org.opencontainers.image.version={{ .Version }}"
extra_files:
- start.sh

20
.pre-commit-config.yaml Normal file
View File

@ -0,0 +1,20 @@
# See https://pre-commit.com for more information
# See https://pre-commit.com/hooks.html for more hooks
repos:
- repo: https://github.com/tekwizely/pre-commit-golang
rev: v1.0.0-beta.4
hooks:
#
# Go Build
#
- id: go-build-mod
#
# Go Mod Tidy
#
- id: go-mod-tidy
- id: go-mod-tidy-repo
#
# Formatters
#
- id: go-fmt
- id: go-fmt-repo

5
Dockerfile Normal file
View File

@ -0,0 +1,5 @@
FROM alpine
COPY pingbot.out /usr/bin/pingbot
ENTRYPOINT ["/usr/bin/pingbot", "--no-update"]

27
LICENSE
View File

@ -1,21 +1,14 @@
MIT License
The BSD Zero Clause License (0BSD)
Copyright (c) 2021 Medzik
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
Permission to use, copy, modify, and/or distribute this software for any
purpose with or without fee is hereby granted.
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.
THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH
REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,
INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
PERFORMANCE OF THIS SOFTWARE.

View File

@ -1,11 +1,18 @@
BINARY_NAME=pingbot.out
BINARY_OUT := pingbot.out
# executables
GO := go
GORELEASER := goreleaser
# build flags
BUILD_FLAGS :=
build:
go build -o ${BINARY_NAME}
$(GO) mod tidy
$(GO) build ${BUILD_FLAGS} -o ${BINARY_OUT} ./cmd/pingbot
run:
go run .
snapshot:
$(GORELEASER) --snapshot --rm-dist
clean:
go clean
rm -rf pingbot* dist/
$(GO) clean

View File

@ -1,14 +1,53 @@
# Pingbot - Backend
# [Pingbot](https://pingbot.vercel.app) - Backend
## Install Pre-Compile binary
[![Repo Size](https://img.shields.io/github/repo-size/MedzikUser/go-pingbot)](https://github.com/medzikuser/go-pingbot)
[![Build](https://img.shields.io/github/workflow/status/MedzikUser/go-pingbot/release/main)](https://github.com/medzikuser/go-pingbot/actions/workflows/release.yml)
* Linux amd64
* [Download](https://github.com/MedzikUser/go-pingbot/releases) latest version
* Unpack file `tar xzf pingbot_{VERSION}_linux_amd64.tar.gz`
* Create an .env and config.yml file and complete according to .env.schema and config.schema.yml
* Add permissions `chmod +rwx pingbot.out`
* Run binary `./pingbot.out`
This application "pings" websites every few minutes (to be set in config). It can be used to keep the application alive on e.g. [glitch.me](https://glitch.com/) or [repl.it](https://replit.com/).
## Disable Automatic Updates
## ⚡ Install Pre-Compile binary
* Add Option `-u=false` or `--update=false`
* 💻 Linux amd64
* [Download](https://github.com/medzikuser/go-pingbot/releases) latest version
* Unpack file `tar xf pingbot_*_linux_amd64.tar.xz`
* Done your binary is `pingbot.out`
## 👨‍💻 Compile from Source Code
‼️ Not recommended because automatic updates don't work
### 🖥️ Requirements
* [Go](https://golang.org/dl) (recommended latest version)
### ⭐ Compile
Method 1:
* `go install github.com/medzikuser/go-pingbot@latest`
* Output binary path
* Check GOPATH `go env GOPATH`
* Go to GOPATH and binary name is `pingbot`
Method 2:
* Download source code `git clone https://github.com/medzikuser/go-pingbot.git --depth 1`
* Go to folder with source code `cd go-pingbot`
* Build `make` or `go build -o pingbot.out`
* Done your compiled binary name is `pingbot.out`
### ⭐ Cross Compile
> [Check supported OS and ARCH](https://gist.github.com/asukakenji/f15ba7e588ac42795f421b48b8aede63)
* Download source code `git clone https://github.com/medzikuser/go-pingbot.git --depth 1`
* Go to folder with source code `cd go-pingbot`
* Build `make GOOS=os GOARCH=arch`
* e.g. `make GOOS=openbsd GOARCH=arm64 `
* Done your cross compiled binary name is `pingbot.out`
## ⚙️ Configurate
* Complete .env according to schema.env
* And fill in config.toml according to config.schema.toml
## 🔧 Run
* `./pingbot.out` or `./start.sh` (auto restart e.g. if exit on update is enabled)

View File

@ -1,45 +0,0 @@
package backend
import (
"net/http"
"gitlab.com/gaming0skar123/go/pingbot/common"
"gitlab.com/gaming0skar123/go/pingbot/database"
)
var AmountSuccess uint
var AmountErr uint
var checkErr = common.CheckErr
func ping() {
results, err := database.GetAll()
if checkErr(err, "get all from db") {
return
}
for _, value := range results {
go loop(value)
}
}
func loop(value database.URL) {
req, err := http.NewRequest("GET", value.URL, nil)
if checkErr(err, "new http request") {
AmountErr++
return
}
client := http.DefaultClient
r, err := client.Do(req)
if checkErr(err, "ping url") {
AmountErr++
return
}
if r.StatusCode >= 200 && r.StatusCode < 400 {
AmountSuccess++
} else {
AmountErr++
}
}

157
cmd/pingbot/main.go Normal file
View File

@ -0,0 +1,157 @@
package main
import (
"bufio"
"fmt"
"os"
"sync"
"time"
"github.com/MedzikUser/go-utils/common"
"github.com/MedzikUser/go-utils/updater"
"github.com/jpillora/opts"
"github.com/medzikuser/go-pingbot/config"
"github.com/medzikuser/go-pingbot/database/mongo"
"github.com/medzikuser/go-pingbot/ping"
"github.com/medzikuser/go-pingbot/website"
)
var log = common.Log
type cmdOpts struct {
Update bool `opts:"help=update version to latest e.g. if update is major"`
NoUpdate bool `opts:"help=disable auto updater"`
}
func main() {
log.Info("You're using verion: ", config.Version)
var wg sync.WaitGroup
c := cmdOpts{}
opts.Parse(&c)
if c.Update {
client := updater.Client{
GitHub: config.GH_Repo,
GitHubToken: config.GH_Token,
Version: config.Version,
Binary: "pingbot.out",
CheckEvery: config.Toml.AutoUpdate.Check * time.Minute,
AfterUpdate: func() {
log.Info("Updated!")
if !config.Toml.Options.Stop_After_Ping {
os.Exit(0)
}
},
Major: false,
}
err := client.Update()
if err != nil && err.Error() == "major update" {
fmt.Print("Update to new major version? (y/N) ")
reader := bufio.NewReader((os.Stdin))
char, _, err := reader.ReadRune()
if err != nil {
log.Error(err)
}
switch char {
case 'y':
client.Major = true
err := client.Update()
if err != nil {
log.Error(err)
os.Exit(1)
}
case 'Y':
client.Major = true
err := client.Update()
if err != nil {
log.Error(err)
os.Exit(1)
}
default:
log.Warn("Canceled!")
os.Exit(2)
}
} else if err != nil {
log.Error(err)
os.Exit(1)
} else {
log.Info("You're using latest version!")
os.Exit(0)
}
}
err := mongo.Connect()
if err != nil {
log.Error(err)
os.Exit(1)
}
if config.Toml.AutoUpdate.Enabled && !c.NoUpdate {
if config.Version == "dev" {
log.Warn("You using dev version. Auto Update DISABLED!")
} else {
wg.Add(1)
client := updater.Client{
GitHub: config.GH_Repo,
GitHubToken: config.GH_Token,
Version: config.Version,
Binary: "pingbot.out",
CheckEvery: config.Toml.AutoUpdate.Check * time.Minute,
AfterUpdate: func() {
log.Info("Updated!")
if !config.Toml.Options.Stop_After_Ping {
os.Exit(0)
}
},
Major: false,
}
go client.AutoUpdater()
}
} else {
log.Warn("Auto Update -> Disabled")
}
if config.Toml.Options.Stop_After_Ping {
ping.StopAfterPing()
os.Exit(0)
}
if config.Toml.HTTP.Enabled {
wg.Add(1)
go website.Server()
} else {
log.Warn("HTTP Server -> Disabled")
}
if config.Toml.Backend.Enabled {
wg.Add(1)
go ping.Ticker()
} else {
log.Warn("Backend -> Disabled")
}
config.StartTime = time.Now()
wg.Wait()
}

View File

@ -1,13 +0,0 @@
package common
import "github.com/sirupsen/logrus"
func CheckErr(err error, trace string) bool {
if err != nil {
Log.WithFields(logrus.Fields{
"trace": trace,
}).Error(err)
}
return err != nil
}

View File

@ -1,14 +0,0 @@
package common
import (
"os"
"github.com/sirupsen/logrus"
)
var Log = &logrus.Logger{
Out: os.Stderr,
Formatter: new(logrus.TextFormatter),
Hooks: make(logrus.LevelHooks),
Level: logrus.InfoLevel,
}

19
config.schema.toml Normal file
View File

@ -0,0 +1,19 @@
[http]
enabled=true # Enable Website
port=8080 # Port to listen
[backend]
enabled=true # Enable Backend
ping=3 # Ping every three minutes
[autoupdate]
enabled=true # Enable Auto Updater
check=2 # Check every two minutes
[mongodb]
database="PingBot" # MongoDB Database Name
collection="URL" # MongoDB Collection Name
[options]
stop_after_ping=false # Stop after all pings
stop_after_ping_timeout=120 # If not pinget or other options stop program after 120 (default) seconds

15
config/env.go Normal file
View File

@ -0,0 +1,15 @@
package config
import (
"os"
_ "github.com/joho/godotenv/autoload"
)
var (
// mongo
Mongo_URI = os.Getenv("MONGO_URI")
// github
GH_Token = os.Getenv("GH_TOKEN")
)

View File

@ -1,11 +0,0 @@
package config
import (
"os"
_ "github.com/joho/godotenv/autoload"
)
var Mongo_URI = os.Getenv("MONGODB_URI")
var Mongo_DB = os.Getenv("MONGODB_DB")
var Mongo_Collection = os.Getenv("MONGODB_COLLECTION")

View File

@ -1,5 +0,0 @@
package config
import "time"
var PingBot_Ticker = 2 * time.Minute

73
config/toml.go Normal file
View File

@ -0,0 +1,73 @@
package config
import (
"io"
"net/http"
"os"
"time"
"github.com/BurntSushi/toml"
"github.com/MedzikUser/go-utils/common"
)
type tomlConfig struct {
HTTP httpConfig
Backend backendConfig
AutoUpdate autoUpdateConfig
MongoDB mongoDBConfig
Options optionsConfig
}
type httpConfig struct {
Enabled bool
Port int
}
type backendConfig struct {
Enabled bool
Ping time.Duration
}
type autoUpdateConfig struct {
Enabled bool
Check time.Duration
}
type mongoDBConfig struct {
Database string
Collection string
}
type optionsConfig struct {
Stop_After_Ping bool
Stop_After_Ping_Timeout time.Duration
}
var Toml tomlConfig
func init() {
_, err := toml.DecodeFile("./config.toml", &Toml)
if err != nil {
common.Log.Error("decode toml config: ", err)
}
}
func DownloadFile(filepath string, url string) error {
resp, err := http.Get(url)
if err != nil {
return err
}
defer resp.Body.Close()
// Create the file
out, err := os.Create(filepath)
if err != nil {
return err
}
defer out.Close()
// Write the body to file
_, err = io.Copy(out, resp.Body)
return err
}

View File

@ -1,8 +0,0 @@
package config
import (
"time"
)
var GH_Repo = "MedzikUser/go-pingbot"
var Latest_Version_Check = 2 * time.Minute

17
config/vars.go Normal file
View File

@ -0,0 +1,17 @@
package config
import (
"fmt"
"runtime"
"strings"
"time"
)
const GH_Repo = "MedzikUser/go-pingbot"
var (
Version = "dev"
Build = ""
StartTime time.Time
UserAgent = fmt.Sprintf("PingBot/%s go/%s", Version, strings.Replace(runtime.Version(), "go", "", 1))
)

View File

@ -1,3 +0,0 @@
package config
var Version = "1.1.0"

View File

@ -1,3 +0,0 @@
package config
var Port = ":8080"

View File

@ -1,33 +0,0 @@
package database
import (
"context"
"os"
"time"
"gitlab.com/gaming0skar123/go/pingbot/common"
"gitlab.com/gaming0skar123/go/pingbot/config"
"go.mongodb.org/mongo-driver/mongo"
"go.mongodb.org/mongo-driver/mongo/options"
"go.mongodb.org/mongo-driver/mongo/readpref"
)
var Client *mongo.Client
var DB *mongo.Database
func Connect() {
ctx, cancel := context.WithTimeout(context.Background(), 10*time.Second)
defer cancel()
Client, err := mongo.Connect(ctx, options.Client().ApplyURI(config.Mongo_URI))
if common.CheckErr(err, "failed connecting to db") {
os.Exit(1)
}
err = Client.Ping(ctx, readpref.Primary())
if common.CheckErr(err, "failed pinging db") {
os.Exit(1)
}
DB = Client.Database(config.Mongo_DB)
}

View File

@ -1,20 +0,0 @@
package database
import (
"context"
"time"
"gitlab.com/gaming0skar123/go/pingbot/config"
"go.mongodb.org/mongo-driver/mongo"
)
func Delete(url *URL) (*mongo.DeleteResult, error) {
collection := DB.Collection(config.Mongo_Collection)
ctx, cancel := context.WithTimeout(context.Background(), 10*time.Second)
defer cancel()
result, err := collection.DeleteOne(ctx, url)
return result, err
}

View File

@ -1,20 +0,0 @@
package database
import (
"context"
"time"
"gitlab.com/gaming0skar123/go/pingbot/config"
"go.mongodb.org/mongo-driver/mongo"
)
func Insert(url *URL) (*mongo.InsertOneResult, error) {
collection := DB.Collection(config.Mongo_Collection)
ctx, cancel := context.WithTimeout(context.Background(), 10*time.Second)
defer cancel()
result, err := collection.InsertOne(ctx, url)
return result, err
}

44
database/mongo/connect.go Normal file
View File

@ -0,0 +1,44 @@
package mongo
import (
"context"
"time"
"github.com/MedzikUser/go-utils/common"
"github.com/medzikuser/go-pingbot/config"
"go.mongodb.org/mongo-driver/mongo"
"go.mongodb.org/mongo-driver/mongo/options"
"go.mongodb.org/mongo-driver/mongo/readpref"
)
var Client mongo.Client
var Coll *mongo.Collection
func Connect() error {
return common.Retry(5, 2*time.Second, func() error {
ctx, cancel := context.WithTimeout(context.Background(), 10*time.Second)
defer cancel()
Client, err := mongo.Connect(ctx, options.Client().ApplyURI(config.Mongo_URI))
if err != nil {
common.Log.Error("connect to db", err)
time.Sleep(2 * time.Second)
return err
}
err = Client.Ping(ctx, readpref.Primary())
if err != nil {
common.Log.Error("ping db", err)
time.Sleep(2 * time.Second)
return err
}
Coll = Client.Database(config.Toml.MongoDB.Database).Collection(config.Toml.MongoDB.Collection)
return nil
})
}

View File

@ -1,22 +1,17 @@
package database
package mongo
import (
"context"
"time"
"gitlab.com/gaming0skar123/go/pingbot/config"
"go.mongodb.org/mongo-driver/bson"
)
func GetAll() ([]URL, error) {
collection := DB.Collection(config.Mongo_Collection)
var results []URL
ctx, cancel := context.WithTimeout(context.Background(), 10*time.Second)
defer cancel()
cursor, err := collection.Find(ctx, bson.D{{}})
cursor, err := Coll.Find(ctx, URL{})
if err != nil {
return nil, err
}

9
database/mongo/types.go Normal file
View File

@ -0,0 +1,9 @@
package mongo
import "go.mongodb.org/mongo-driver/bson/primitive"
type URL struct {
ID primitive.ObjectID `bson:"_id,omitempty" json:"id,omitempty"`
URL string `bson:"url,omitempty" json:"url,omitempty"`
Cluster int `bson:"cluster,omitempty" json:"cluster,omitempty"`
}

View File

@ -1,5 +0,0 @@
package database
type URL struct {
URL string `bson:"_id"`
}

63
go.mod
View File

@ -1,38 +1,59 @@
module gitlab.com/gaming0skar123/go/pingbot
module github.com/medzikuser/go-pingbot
go 1.16
go 1.17
require (
github.com/blang/semver v3.5.1+incompatible
github.com/gin-contrib/cors v1.3.1
github.com/gin-gonic/gin v1.7.2
github.com/go-playground/validator/v10 v10.7.0 // indirect
github.com/BurntSushi/toml v1.1.0
github.com/MedzikUser/go-utils v1.0.0
github.com/gin-contrib/cors v1.4.0
github.com/gin-gonic/gin v1.8.1
github.com/go-playground/validator/v10 v10.10.0 // indirect
github.com/golang/protobuf v1.5.2 // indirect
github.com/golang/snappy v0.0.4 // indirect
github.com/google/go-cmp v0.5.6 // indirect
github.com/google/go-querystring v1.1.0 // indirect
github.com/hashicorp/errwrap v1.1.0 // indirect
github.com/hashicorp/go-multierror v1.1.1 // indirect
github.com/joho/godotenv v1.3.0
github.com/joho/godotenv v1.4.0
github.com/jpillora/opts v1.2.0
github.com/json-iterator/go v1.1.11 // indirect
github.com/klauspost/compress v1.13.1 // indirect
github.com/leodido/go-urn v1.2.1 // indirect
github.com/mattn/go-isatty v0.0.13 // indirect
github.com/json-iterator/go v1.1.12 // indirect
github.com/klauspost/compress v1.13.6 // indirect
github.com/mattn/go-isatty v0.0.14 // indirect
github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd // indirect
github.com/modern-go/reflect2 v1.0.1 // indirect
github.com/modern-go/reflect2 v1.0.2 // indirect
github.com/posener/complete v1.2.3 // indirect
github.com/rhysd/go-github-selfupdate v1.2.3
github.com/sirupsen/logrus v1.8.1
github.com/ugorji/go v1.2.6 // indirect
github.com/ulikunitz/xz v0.5.10 // indirect
github.com/youmark/pkcs8 v0.0.0-20201027041543-1326539a0a0a // indirect
go.mongodb.org/mongo-driver v1.6.0
golang.org/x/crypto v0.0.0-20210711020723-a769d52b0f97 // indirect
golang.org/x/net v0.0.0-20210716203947-853a461950ff // indirect
golang.org/x/oauth2 v0.0.0-20210628180205-a41e5a781914 // indirect
go.mongodb.org/mongo-driver v1.10.0
golang.org/x/crypto v0.0.0-20220622213112-05595931fe9d // indirect
golang.org/x/net v0.0.0-20211112202133-69e39bad7dc2 // indirect
golang.org/x/oauth2 v0.0.0-20211104180415-d3ed0bb246c8 // indirect
golang.org/x/sync v0.0.0-20210220032951-036812b2e83c // indirect
golang.org/x/sys v0.0.0-20210630005230-0f9fa26af87c // indirect
golang.org/x/sys v0.0.0-20211113001501-0c823b97ae02 // indirect
golang.org/x/text v0.3.7 // indirect
google.golang.org/appengine v1.6.7 // indirect
google.golang.org/protobuf v1.27.1 // indirect
google.golang.org/protobuf v1.28.0 // indirect
gopkg.in/yaml.v2 v2.4.0 // indirect
)
require (
github.com/MedzikUser/go-github-selfupdate v1.3.1 // indirect
github.com/blang/semver/v4 v4.0.0 // indirect
github.com/gin-contrib/sse v0.1.0 // indirect
github.com/go-playground/locales v0.14.0 // indirect
github.com/go-playground/universal-translator v0.18.0 // indirect
github.com/goccy/go-json v0.9.7 // indirect
github.com/google/go-github/v30 v30.1.0 // indirect
github.com/inconshreveable/go-update v0.0.0-20160112193335-8152e7eb6ccf // indirect
github.com/leodido/go-urn v1.2.1 // indirect
github.com/montanaflynn/stats v0.0.0-20171201202039-1bf9dbcd8cbe // indirect
github.com/pelletier/go-toml/v2 v2.0.1 // indirect
github.com/pkg/errors v0.9.1 // indirect
github.com/sirupsen/logrus v1.8.1 // indirect
github.com/struCoder/pidusage v0.2.1 // indirect
github.com/tcnksm/go-gitconfig v0.1.2 // indirect
github.com/ugorji/go/codec v1.2.7 // indirect
github.com/xdg-go/pbkdf2 v1.0.0 // indirect
github.com/xdg-go/scram v1.1.1 // indirect
github.com/xdg-go/stringprep v1.0.3 // indirect
)

205
go.sum
View File

@ -32,15 +32,22 @@ cloud.google.com/go/storage v1.8.0/go.mod h1:Wv1Oy7z6Yz3DshWRJFhqM/UCfaWIRTdp0RX
cloud.google.com/go/storage v1.10.0/go.mod h1:FLPqc6j+Ki4BU591ie1oL6qBQGu2Bl/tZ9ullr3+Kg0=
dmitri.shuralyov.com/gpu/mtl v0.0.0-20190408044501-666a987793e9/go.mod h1:H6x//7gZCb22OMCxBHrMx7a5I7Hp++hsVxbQ4BYO7hU=
github.com/BurntSushi/toml v0.3.1/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03qcyfWMU=
github.com/BurntSushi/toml v1.1.0 h1:ksErzDEI1khOiGPgpwuI7x2ebx/uXQNw7xJpn9Eq1+I=
github.com/BurntSushi/toml v1.1.0/go.mod h1:CxXYINrC8qIiEnFrOxCa7Jy5BFHlXnUU2pbicEuybxQ=
github.com/BurntSushi/xgb v0.0.0-20160522181843-27f122750802/go.mod h1:IVnqGOEym/WlBOVXweHU+Q+/VP0lqqI8lqeDx9IjBqo=
github.com/blang/semver v3.5.1+incompatible h1:cQNTCjp13qL8KC3Nbxr/y2Bqb63oX6wdnnjpJbkM4JQ=
github.com/blang/semver v3.5.1+incompatible/go.mod h1:kRBLl5iJ+tD4TcOOxsy/0fnwebNt5EWlYSAyrTnjyyk=
github.com/MedzikUser/go-github-selfupdate v1.3.1 h1:PlLrOMEucL8B2LNRUaceAgvu17J4x02NTcPa78ZMxl0=
github.com/MedzikUser/go-github-selfupdate v1.3.1/go.mod h1:vq1/KNWXN7R/aKZFD5p2rsIdQ+2FSXnlIts1QHEZCM4=
github.com/MedzikUser/go-utils v1.0.0 h1:+fq8rTY1Smm9u/FSWYBYi6fREhctbjNcuQR59j+XXbQ=
github.com/MedzikUser/go-utils v1.0.0/go.mod h1:xP+KbYBL9TESTLP4vWnvIT0v+uq5reR4l5S7Nq4eeKo=
github.com/blang/semver/v4 v4.0.0 h1:1PFHFE6yCCTv8C1TeyNNarDzntLi7wMI5i/pzqYIsAM=
github.com/blang/semver/v4 v4.0.0/go.mod h1:IbckMUScFkM3pff0VJDNKRiT6TG/YpiHIM2yvyW5YoQ=
github.com/census-instrumentation/opencensus-proto v0.2.1/go.mod h1:f6KPmirojxKA12rnyqOA5BBL4O983OfeGPqjHWSTneU=
github.com/chzyer/logex v1.1.10/go.mod h1:+Ywpsq7O8HXn0nuIou7OrIPyXbp3wmkHB+jjWRnGsAI=
github.com/chzyer/readline v0.0.0-20180603132655-2972be24d48e/go.mod h1:nSuG5e5PlCu98SY8svDHJxuZscDgtXS6KTTbou5AhLI=
github.com/chzyer/test v0.0.0-20180213035817-a1ea475d72b1/go.mod h1:Q3SI9o4m/ZMnBNeIyt5eFwwo7qiLfzFZmjNmxjkiQlU=
github.com/client9/misspell v0.3.4/go.mod h1:qj6jICC3Q7zFZvVWo7KLAzC3yx5G7kyvSDkc90ppPyw=
github.com/cncf/udpa/go v0.0.0-20191209042840-269d4d468f6f/go.mod h1:M8M6+tZqaGXZJjfX53e64911xZQV5JYwmTeXPW+k8Sc=
github.com/creack/pty v1.1.9/go.mod h1:oKZEueFk5CKHvIhNR5MUki03XCEU+Q6VDXinZuGJ33E=
github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c=
github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
@ -49,53 +56,25 @@ github.com/envoyproxy/go-control-plane v0.9.1-0.20191026205805-5f8ba28d4473/go.m
github.com/envoyproxy/go-control-plane v0.9.4/go.mod h1:6rpuAdCZL397s3pYoYcLgu1mIlRU8Am5FuJP05cCM98=
github.com/envoyproxy/protoc-gen-validate v0.1.0/go.mod h1:iSmxcyjqTsJpI2R4NaDN7+kN2VEUnK/pcBlmesArF7c=
github.com/fsnotify/fsnotify v1.4.7/go.mod h1:jwhsz4b93w/PPRr/qN1Yymfu8t87LnFCMoQvtojpjFo=
github.com/gin-contrib/cors v1.3.1 h1:doAsuITavI4IOcd0Y19U4B+O0dNWihRyX//nn4sEmgA=
github.com/gin-contrib/cors v1.3.1/go.mod h1:jjEJ4268OPZUcU7k9Pm653S7lXUGcqMADzFA61xsmDk=
github.com/gin-contrib/cors v1.4.0 h1:oJ6gwtUl3lqV0WEIwM/LxPF1QZ5qe2lGWdY2+bz7y0g=
github.com/gin-contrib/cors v1.4.0/go.mod h1:bs9pNM0x/UsmHPBWT2xZz9ROh8xYjYkiURUfmBoMlcs=
github.com/gin-contrib/sse v0.1.0 h1:Y/yl/+YNO8GZSjAhjMsSuLt29uWRFHdHYUb5lYOV9qE=
github.com/gin-contrib/sse v0.1.0/go.mod h1:RHrZQHXnP2xjPF+u1gW/2HnVO7nvIa9PG3Gm+fLHvGI=
github.com/gin-gonic/gin v1.5.0/go.mod h1:Nd6IXA8m5kNZdNEHMBd93KT+mdY3+bewLgRvmCsR2Do=
github.com/gin-gonic/gin v1.7.2 h1:Tg03T9yM2xa8j6I3Z3oqLaQRSmKvxPd6g/2HJ6zICFA=
github.com/gin-gonic/gin v1.7.2/go.mod h1:jD2toBW3GZUr5UMcdrwQA10I7RuaFOl/SGeDjXkfUtY=
github.com/gin-gonic/gin v1.8.1 h1:4+fr/el88TOO3ewCmQr8cx/CtZ/umlIRIs5M4NTNjf8=
github.com/gin-gonic/gin v1.8.1/go.mod h1:ji8BvRH1azfM+SYow9zQ6SZMvR8qOMZHmsCuWR9tTTk=
github.com/go-gl/glfw v0.0.0-20190409004039-e6da0acd62b1/go.mod h1:vR7hzQXu2zJy9AVAgeJqvqgH9Q5CA+iKCZ2gyEVpxRU=
github.com/go-gl/glfw/v3.3/glfw v0.0.0-20191125211704-12ad95a8df72/go.mod h1:tQ2UAYgL5IevRw8kRxooKSPJfGvJ9fJQFa0TUsXzTg8=
github.com/go-gl/glfw/v3.3/glfw v0.0.0-20200222043503-6f7a984d4dc4/go.mod h1:tQ2UAYgL5IevRw8kRxooKSPJfGvJ9fJQFa0TUsXzTg8=
github.com/go-playground/assert/v2 v2.0.1 h1:MsBgLAaY856+nPRTKrp3/OZK38U/wa0CcBYNjji3q3A=
github.com/go-playground/assert/v2 v2.0.1/go.mod h1:VDjEfimB/XKnb+ZQfWdccd7VUvScMdVu0Titje2rxJ4=
github.com/go-playground/locales v0.12.1/go.mod h1:IUMDtCfWo/w/mtMfIE/IG2K+Ey3ygWanZIBtBW0W2TM=
github.com/go-playground/locales v0.13.0 h1:HyWk6mgj5qFqCT5fjGBuRArbVDfE4hi8+e8ceBS/t7Q=
github.com/go-playground/locales v0.13.0/go.mod h1:taPMhCMXrRLJO55olJkUXHZBHCxTMfnGwq/HNwmWNS8=
github.com/go-playground/universal-translator v0.16.0/go.mod h1:1AnU7NaIRDWWzGEKwgtJRd2xk99HeFyHw3yid4rvQIY=
github.com/go-playground/universal-translator v0.17.0 h1:icxd5fm+REJzpZx7ZfpaD876Lmtgy7VtROAbHHXk8no=
github.com/go-playground/universal-translator v0.17.0/go.mod h1:UkSxE5sNxxRwHyU+Scu5vgOQjsIJAF8j9muTVoKLVtA=
github.com/go-playground/validator/v10 v10.4.1/go.mod h1:nlOn6nFhuKACm19sB/8EGNn9GlaMV7XkbRSipzJ0Ii4=
github.com/go-playground/validator/v10 v10.7.0 h1:gLi5ajTBBheLNt0ctewgq7eolXoDALQd5/y90Hh9ZgM=
github.com/go-playground/validator/v10 v10.7.0/go.mod h1:xm76BBt941f7yWdGnI2DVPFFg1UK3YY04qifoXU3lOk=
github.com/go-stack/stack v1.8.0 h1:5SgMzNM5HxrEjV0ww2lTmX6E2Izsfxas4+YHWRs3Lsk=
github.com/go-stack/stack v1.8.0/go.mod h1:v0f6uXyyMGvRgIKkXu+yp6POWl0qKG85gN/melR3HDY=
github.com/gobuffalo/attrs v0.0.0-20190224210810-a9411de4debd/go.mod h1:4duuawTqi2wkkpB4ePgWMaai6/Kc6WEz83bhFwpHzj0=
github.com/gobuffalo/depgen v0.0.0-20190329151759-d478694a28d3/go.mod h1:3STtPUQYuzV0gBVOY3vy6CfMm/ljR4pABfrTeHNLHUY=
github.com/gobuffalo/depgen v0.1.0/go.mod h1:+ifsuy7fhi15RWncXQQKjWS9JPkdah5sZvtHc2RXGlg=
github.com/gobuffalo/envy v1.6.15/go.mod h1:n7DRkBerg/aorDM8kbduw5dN3oXGswK5liaSCx4T5NI=
github.com/gobuffalo/envy v1.7.0/go.mod h1:n7DRkBerg/aorDM8kbduw5dN3oXGswK5liaSCx4T5NI=
github.com/gobuffalo/flect v0.1.0/go.mod h1:d2ehjJqGOH/Kjqcoz+F7jHTBbmDb38yXA598Hb50EGs=
github.com/gobuffalo/flect v0.1.1/go.mod h1:8JCgGVbRjJhVgD6399mQr4fx5rRfGKVzFjbj6RE/9UI=
github.com/gobuffalo/flect v0.1.3/go.mod h1:8JCgGVbRjJhVgD6399mQr4fx5rRfGKVzFjbj6RE/9UI=
github.com/gobuffalo/genny v0.0.0-20190329151137-27723ad26ef9/go.mod h1:rWs4Z12d1Zbf19rlsn0nurr75KqhYp52EAGGxTbBhNk=
github.com/gobuffalo/genny v0.0.0-20190403191548-3ca520ef0d9e/go.mod h1:80lIj3kVJWwOrXWWMRzzdhW3DsrdjILVil/SFKBzF28=
github.com/gobuffalo/genny v0.1.0/go.mod h1:XidbUqzak3lHdS//TPu2OgiFB+51Ur5f7CSnXZ/JDvo=
github.com/gobuffalo/genny v0.1.1/go.mod h1:5TExbEyY48pfunL4QSXxlDOmdsD44RRq4mVZ0Ex28Xk=
github.com/gobuffalo/gitgen v0.0.0-20190315122116-cc086187d211/go.mod h1:vEHJk/E9DmhejeLeNt7UVvlSGv3ziL+djtTr3yyzcOw=
github.com/gobuffalo/gogen v0.0.0-20190315121717-8f38393713f5/go.mod h1:V9QVDIxsgKNZs6L2IYiGR8datgMhB577vzTDqypH360=
github.com/gobuffalo/gogen v0.1.0/go.mod h1:8NTelM5qd8RZ15VjQTFkAW6qOMx5wBbW4dSCS3BY8gg=
github.com/gobuffalo/gogen v0.1.1/go.mod h1:y8iBtmHmGc4qa3urIyo1shvOD8JftTtfcKi+71xfDNE=
github.com/gobuffalo/logger v0.0.0-20190315122211-86e12af44bc2/go.mod h1:QdxcLw541hSGtBnhUc4gaNIXRjiDppFGaDqzbrBd3v8=
github.com/gobuffalo/mapi v1.0.1/go.mod h1:4VAGh89y6rVOvm5A8fKFxYG+wIW6LO1FMTG9hnKStFc=
github.com/gobuffalo/mapi v1.0.2/go.mod h1:4VAGh89y6rVOvm5A8fKFxYG+wIW6LO1FMTG9hnKStFc=
github.com/gobuffalo/packd v0.0.0-20190315124812-a385830c7fc0/go.mod h1:M2Juc+hhDXf/PnmBANFCqx4DM3wRbgDvnVWeG2RIxq4=
github.com/gobuffalo/packd v0.1.0/go.mod h1:M2Juc+hhDXf/PnmBANFCqx4DM3wRbgDvnVWeG2RIxq4=
github.com/gobuffalo/packr/v2 v2.0.9/go.mod h1:emmyGweYTm6Kdper+iywB6YK5YzuKchGtJQZ0Odn4pQ=
github.com/gobuffalo/packr/v2 v2.2.0/go.mod h1:CaAwI0GPIAv+5wKLtv8Afwl+Cm78K/I/VCm/3ptBN+0=
github.com/gobuffalo/syncx v0.0.0-20190224160051-33c29581e754/go.mod h1:HhnNqWY95UYwwW3uSASeV7vtgYkT2t16hJgV3AEPUpw=
github.com/go-playground/locales v0.14.0 h1:u50s323jtVGugKlcYeyzC0etD1HifMjqmJqb8WugfUU=
github.com/go-playground/locales v0.14.0/go.mod h1:sawfccIbzZTqEDETgFXqTho0QybSa7l++s0DH+LDiLs=
github.com/go-playground/universal-translator v0.18.0 h1:82dyy6p4OuJq4/CByFNOn/jYrnRPArHwAcmLoJZxyho=
github.com/go-playground/universal-translator v0.18.0/go.mod h1:UvRDBj+xPUEGrFYl+lu/H90nyDXpg0fqeB/AQUGNTVA=
github.com/go-playground/validator/v10 v10.10.0 h1:I7mrTYv78z8k8VXa/qJlOlEXn/nBh+BF8dHX5nt/dr0=
github.com/go-playground/validator/v10 v10.10.0/go.mod h1:74x4gJWsvQexRdW8Pn3dXSGrTK4nAUsbPlLADvpJkos=
github.com/goccy/go-json v0.9.7 h1:IcB+Aqpx/iMHu5Yooh7jEzJk1JZ7Pjtmys2ukPr7EeM=
github.com/goccy/go-json v0.9.7/go.mod h1:6MelG93GURQebXPDq3khkgXZkazVtN9CRI+MGFi0w8I=
github.com/golang/glog v0.0.0-20160126235308-23def4e6c14b/go.mod h1:SBH7ygxi8pfUlaOkMMuAQtPIUF8ecWP5IEl/CR7VP2Q=
github.com/golang/groupcache v0.0.0-20190702054246-869f871628b6/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc=
github.com/golang/groupcache v0.0.0-20191227052852-215e87163ea7/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc=
@ -124,7 +103,6 @@ github.com/golang/protobuf v1.5.0/go.mod h1:FsONVRAS9T7sI+LIUmWTfcYkHO4aIWwzhcaS
github.com/golang/protobuf v1.5.2 h1:ROPKBNFfQgOUMifHyP+KYbvpjbdoFNs+aK7DXlji0Tw=
github.com/golang/protobuf v1.5.2/go.mod h1:XVQd3VNwM+JqD3oG2Ue2ip4fOMUkwXdXDdiuN0vRsmY=
github.com/golang/snappy v0.0.1/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q=
github.com/golang/snappy v0.0.3/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q=
github.com/golang/snappy v0.0.4 h1:yAGX7huGHXlcLOEtBnF4w7FQwA26wojNCwOYAEhLjQM=
github.com/golang/snappy v0.0.4/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q=
github.com/google/btree v0.0.0-20180813153112-4030bb1f1f0c/go.mod h1:lNA+9X1NB3Zf8V7Ke586lFgjr2dZNuvo3lPJSGZ5JPQ=
@ -137,8 +115,9 @@ github.com/google/go-cmp v0.4.1/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/
github.com/google/go-cmp v0.5.0/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE=
github.com/google/go-cmp v0.5.1/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE=
github.com/google/go-cmp v0.5.2/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE=
github.com/google/go-cmp v0.5.5 h1:Khx7svrCpmxxtHBq5j2mp/xVjsi8hQMfNLvJFAlrGgU=
github.com/google/go-cmp v0.5.5/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE=
github.com/google/go-cmp v0.5.6 h1:BKbKCqvP6I+rmFHt06ZmyQtvB8xAkWdhFyr0ZUNZcxQ=
github.com/google/go-cmp v0.5.6/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE=
github.com/google/go-github/v30 v30.1.0 h1:VLDx+UolQICEOKu2m4uAoMti1SxuEBAl7RSEG16L+Oo=
github.com/google/go-github/v30 v30.1.0/go.mod h1:n8jBpHl45a/rlBUtRJMOG4GhNADUQFEufcolZ95JfU8=
github.com/google/go-querystring v1.0.0/go.mod h1:odCYkC5MyYFN7vkCjXpyrEuKhc/BUO6wN/zVPAxq5ck=
@ -169,53 +148,42 @@ github.com/hpcloud/tail v1.0.0/go.mod h1:ab1qPbhIpdTxEkNHXyeSf5vhxWSCs/tWer42PpO
github.com/ianlancetaylor/demangle v0.0.0-20181102032728-5e5cf60278f6/go.mod h1:aSSvb/t6k1mPoxDqO4vJh6VOCGPwU4O0C2/Eqndh1Sc=
github.com/inconshreveable/go-update v0.0.0-20160112193335-8152e7eb6ccf h1:WfD7VjIE6z8dIvMsI4/s+1qr5EL+zoIGev1BQj1eoJ8=
github.com/inconshreveable/go-update v0.0.0-20160112193335-8152e7eb6ccf/go.mod h1:hyb9oH7vZsitZCiBt0ZvifOrB+qc8PS5IiilCIb87rg=
github.com/inconshreveable/mousetrap v1.0.0/go.mod h1:PxqpIevigyE2G7u3NXJIT2ANytuPF1OarO4DADm73n8=
github.com/joho/godotenv v1.3.0 h1:Zjp+RcGpHhGlrMbJzXTrZZPrWj+1vfm90La1wgB6Bhc=
github.com/joho/godotenv v1.3.0/go.mod h1:7hK45KPybAkOC6peb+G5yklZfMxEjkZhHbwpqxOKXbg=
github.com/joho/godotenv v1.4.0 h1:3l4+N6zfMWnkbPEXKng2o2/MR5mSwTrBih4ZEkkz1lg=
github.com/joho/godotenv v1.4.0/go.mod h1:f4LDr5Voq0i2e/R5DDNOoa2zzDfwtkZa6DnEwAbqwq4=
github.com/jpillora/opts v1.2.0 h1:H8vWooV3P9nsqmCcPgxNZyIa7GPOWA1KQFsfAzIkCtE=
github.com/jpillora/opts v1.2.0/go.mod h1:7p7X/vlpKZmtaDFYKs956EujFqA6aCrOkcCaS6UBcR4=
github.com/json-iterator/go v1.1.7/go.mod h1:KdQUCv79m/52Kvf8AW2vK1V8akMuk1QjK/uOdHXbAo4=
github.com/json-iterator/go v1.1.9/go.mod h1:KdQUCv79m/52Kvf8AW2vK1V8akMuk1QjK/uOdHXbAo4=
github.com/json-iterator/go v1.1.11 h1:uVUAXhF2To8cbw/3xN3pxj6kk7TYKs98NIrTqPlMWAQ=
github.com/json-iterator/go v1.1.11/go.mod h1:KdQUCv79m/52Kvf8AW2vK1V8akMuk1QjK/uOdHXbAo4=
github.com/json-iterator/go v1.1.12 h1:PV8peI4a0ysnczrg+LtxykD8LfKY9ML6u2jnxaEnrnM=
github.com/json-iterator/go v1.1.12/go.mod h1:e30LSqwooZae/UwlEbR2852Gd8hjQvJoHmT4TnhNGBo=
github.com/jstemmer/go-junit-report v0.0.0-20190106144839-af01ea7f8024/go.mod h1:6v2b51hI/fHJwM22ozAgKL4VKDeJcHhJFhtBdhmNjmU=
github.com/jstemmer/go-junit-report v0.9.1/go.mod h1:Brl9GWCQeLvo8nXZwPNNblvFj/XSXhF0NWZEnDohbsk=
github.com/karrick/godirwalk v1.8.0/go.mod h1:H5KPZjojv4lE+QYImBI8xVtrBRgYrIVsaRPx4tDPEn4=
github.com/karrick/godirwalk v1.10.3/go.mod h1:RoGL9dQei4vP9ilrpETWE8CLOZ1kiN0LhBygSwrAsHA=
github.com/kisielk/gotool v1.0.0/go.mod h1:XhKaO+MFFWcvkIS/tQcRk01m1F5IRFswLeQ+oQHNcck=
github.com/klauspost/compress v1.9.5/go.mod h1:RyIbtBH6LamlWaDj8nUwkbUhJ87Yi3uG0guNDohfE1A=
github.com/klauspost/compress v1.13.1 h1:wXr2uRxZTJXHLly6qhJabee5JqIhTRoLBhDOA74hDEQ=
github.com/klauspost/compress v1.13.1/go.mod h1:8dP1Hq4DHOhN9w426knH3Rhby4rFm6D8eO+e+Dq5Gzg=
github.com/konsorten/go-windows-terminal-sequences v1.0.1/go.mod h1:T0+1ngSBFLxvqU3pZ+m/2kptfBszLMUkC4ZK/EgS/cQ=
github.com/konsorten/go-windows-terminal-sequences v1.0.2/go.mod h1:T0+1ngSBFLxvqU3pZ+m/2kptfBszLMUkC4ZK/EgS/cQ=
github.com/kr/pretty v0.1.0 h1:L/CwN0zerZDmRFUapSPitk6f+Q3+0za1rQkzVuMiMFI=
github.com/klauspost/compress v1.13.6 h1:P76CopJELS0TiO2mebmnzgWaajssP/EszplttgQxcgc=
github.com/klauspost/compress v1.13.6/go.mod h1:/3/Vjq9QcHkK5uEr5lBEmyoZ1iFhe47etQ6QUkpK6sk=
github.com/kr/pretty v0.1.0/go.mod h1:dAy3ld7l9f0ibDNOQOHHMYYIIbhfbHSm3C4ZsoJORNo=
github.com/kr/pretty v0.2.1/go.mod h1:ipq/a2n7PKx3OHsz4KJII5eveXtPO4qwEXGdVfWzfnI=
github.com/kr/pretty v0.3.0 h1:WgNl7dwNpEZ6jJ9k1snq4pZsg7DOEN8hP9Xw0Tsjwk0=
github.com/kr/pretty v0.3.0/go.mod h1:640gp4NfQd8pI5XOwp5fnNeVWj67G7CFk/SaSQn7NBk=
github.com/kr/pty v1.1.1/go.mod h1:pFQYn66WHrOpPYNljwOMqo10TkYh1fy3cYio2l3bCsQ=
github.com/kr/text v0.1.0 h1:45sCR5RtlFHMR4UwH9sdQ5TC8v0qDQCHnXt+kaKSTVE=
github.com/kr/text v0.1.0/go.mod h1:4Jbv+DJW3UT/LiOwJeYQe1efqtUx/iVham/4vfdArNI=
github.com/leodido/go-urn v1.1.0/go.mod h1:+cyI34gQWZcE1eQU7NVgKkkzdXDQHr1dBMtdAPozLkw=
github.com/leodido/go-urn v1.2.0/go.mod h1:+8+nEpDfqqsY+g338gtMEUOtuK+4dEMhiQEgxpxOKII=
github.com/kr/text v0.2.0 h1:5Nx0Ya0ZqY2ygV366QzturHI13Jq95ApcVaJBhpS+AY=
github.com/kr/text v0.2.0/go.mod h1:eLer722TekiGuMkidMxC/pM04lWEeraHUUmBw8l2grE=
github.com/leodido/go-urn v1.2.1 h1:BqpAaACuzVSgi/VLzGZIobT2z4v53pjosyNd9Yv6n/w=
github.com/leodido/go-urn v1.2.1/go.mod h1:zt4jvISO2HfUBqxjfIshjdMTYS56ZS/qv49ictyFfxY=
github.com/markbates/oncer v0.0.0-20181203154359-bf2de49a0be2/go.mod h1:Ld9puTsIW75CHf65OeIOkyKbteujpZVXDpWK6YGZbxE=
github.com/markbates/safe v1.0.1/go.mod h1:nAqgmRi7cY2nqMc92/bSEeQA+R4OheNU2T1kNSCBdG0=
github.com/mattn/go-isatty v0.0.9/go.mod h1:YNRxwqDuOph6SZLI9vUUz6OYw3QyUt7WiY2yME+cCiQ=
github.com/mattn/go-isatty v0.0.12/go.mod h1:cbi8OIDigv2wuxKPP5vlRcQ1OAZbq2CE4Kysco4FUpU=
github.com/mattn/go-isatty v0.0.13 h1:qdl+GuBjcsKKDco5BsxPJlId98mSWNKqYA+Co0SC1yA=
github.com/mattn/go-isatty v0.0.13/go.mod h1:cbi8OIDigv2wuxKPP5vlRcQ1OAZbq2CE4Kysco4FUpU=
github.com/mattn/go-isatty v0.0.14 h1:yVuAays6BHfxijgZPzw+3Zlu5yQgKGP2/hcQbHb7S9Y=
github.com/mattn/go-isatty v0.0.14/go.mod h1:7GGIvUiUoEMVVmxf/4nioHXj79iQHKdU27kJ6hsGG94=
github.com/modern-go/concurrent v0.0.0-20180228061459-e0a39a4cb421/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q=
github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd h1:TRLaZ9cD/w8PVh93nsPXa1VrQ6jlwL5oN8l14QlcNfg=
github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q=
github.com/modern-go/reflect2 v0.0.0-20180701023420-4b7aa43c6742/go.mod h1:bx2lNnkwVCuqBIxFjflWJWanXIb3RllmbCylyMrvgv0=
github.com/modern-go/reflect2 v1.0.1 h1:9f412s+6RmYXLWZSEzVVgPGK7C2PphHj5RJrvfx9AWI=
github.com/modern-go/reflect2 v1.0.1/go.mod h1:bx2lNnkwVCuqBIxFjflWJWanXIb3RllmbCylyMrvgv0=
github.com/modern-go/reflect2 v1.0.2 h1:xBagoLtFs94CBntxluKeaWgTMpvLxC4ur3nMaC9Gz0M=
github.com/modern-go/reflect2 v1.0.2/go.mod h1:yWuevngMOJpCy52FWWMvUC8ws7m/LJsjYzDa0/r8luk=
github.com/montanaflynn/stats v0.0.0-20171201202039-1bf9dbcd8cbe h1:iruDEfMl2E6fbMZ9s0scYfZQ84/6SPL6zC8ACM2oIL0=
github.com/montanaflynn/stats v0.0.0-20171201202039-1bf9dbcd8cbe/go.mod h1:wL8QJuTMNUDYhXwkmfOly8iTdp5TEcJFWZD2D7SIkUc=
github.com/onsi/ginkgo v1.6.0/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE=
github.com/onsi/gomega v1.4.2 h1:3mYCb7aPxS/RU7TI1y4rkEn1oKmPRjNJLNEXgw7MH2I=
github.com/onsi/gomega v1.4.2/go.mod h1:ex+gbHU/CVuBBDIJjb2X0qEXbFg53c61hWP/1CpauHY=
github.com/pelletier/go-toml v1.7.0/go.mod h1:vwGMzjaWMwyfHwgIBhI2YUM4fB6nL6lVAvS1LBMMhTE=
github.com/pkg/errors v0.8.0/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0=
github.com/pkg/errors v0.8.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0=
github.com/pelletier/go-toml/v2 v2.0.1 h1:8e3L2cCQzLFi2CR4g7vGFuFxX7Jl1kKX8gW+iV0GUKU=
github.com/pelletier/go-toml/v2 v2.0.1/go.mod h1:r9LEWfGN8R5k0VXJ+0BkIe7MYkRdwZOjgMj2KwnJFUo=
github.com/pkg/diff v0.0.0-20210226163009-20ebb0f2a09e/go.mod h1:pJLUxLENpZxwdsKMEsNbx1VGcRFpLqf3715MtcvvzbA=
github.com/pkg/errors v0.9.1 h1:FEBLx1zS214owpjy7qsBeixbURkuhQAwrK5UwLGTwt4=
github.com/pkg/errors v0.9.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0=
github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM=
@ -224,68 +192,64 @@ github.com/posener/complete v1.2.2-0.20190308074557-af07aa5181b3/go.mod h1:6gapU
github.com/posener/complete v1.2.3 h1:NP0eAhjcjImqslEwo/1hq7gpajME0fTLTezBKDqfXqo=
github.com/posener/complete v1.2.3/go.mod h1:WZIdtGGp+qx0sLrYKtIRAruyNpv6hFCicSgv7Sy7s/s=
github.com/prometheus/client_model v0.0.0-20190812154241-14fe0d1b01d4/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA=
github.com/rhysd/go-github-selfupdate v1.2.3 h1:iaa+J202f+Nc+A8zi75uccC8Wg3omaM7HDeimXA22Ag=
github.com/rhysd/go-github-selfupdate v1.2.3/go.mod h1:mp/N8zj6jFfBQy/XMYoWsmfzxazpPAODuqarmPDe2Rg=
github.com/rogpeppe/go-internal v1.1.0/go.mod h1:M8bDsm7K2OlrFYOpmOWEs/qY81heoFRclV5y23lUDJ4=
github.com/rogpeppe/go-internal v1.2.2/go.mod h1:M8bDsm7K2OlrFYOpmOWEs/qY81heoFRclV5y23lUDJ4=
github.com/rogpeppe/go-internal v1.3.0/go.mod h1:M8bDsm7K2OlrFYOpmOWEs/qY81heoFRclV5y23lUDJ4=
github.com/sirupsen/logrus v1.4.0/go.mod h1:LxeOpSwHxABJmUn/MG1IvRgCAasNZTLOkJPxbbu5VWo=
github.com/sirupsen/logrus v1.4.1/go.mod h1:ni0Sbl8bgC9z8RoU9G6nDWqqs/fq4eDPysMBDgk/93Q=
github.com/sirupsen/logrus v1.4.2/go.mod h1:tLMulIdttU9McNUspp0xgXVQah82FyeX6MwdIuYE2rE=
github.com/rogpeppe/go-internal v1.6.1/go.mod h1:xXDCJY+GAPziupqXw64V24skbSoqbTEfhy4qGm1nDQc=
github.com/rogpeppe/go-internal v1.8.0 h1:FCbCCtXNOY3UtUuHUYaghJg4y7Fd14rXifAYUAtL9R8=
github.com/rogpeppe/go-internal v1.8.0/go.mod h1:WmiCO8CzOY8rg0OYDC4/i/2WRWAB6poM+XZ2dLUbcbE=
github.com/sirupsen/logrus v1.8.1 h1:dJKuHgqk1NNQlqoA6BTlM1Wf9DOH3NBjQyu0h9+AZZE=
github.com/sirupsen/logrus v1.8.1/go.mod h1:yWOB1SBYBC5VeMP7gHvWumXLIWorT60ONWic61uBYv0=
github.com/spf13/cobra v0.0.3/go.mod h1:1l0Ry5zgKvJasoi3XT1TypsSe7PqH0Sj9dhYf7v3XqQ=
github.com/spf13/pflag v1.0.3/go.mod h1:DYY7MBk1bdzusC3SYhjObp+wFpr4gzcvqqNjLnInEg4=
github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME=
github.com/stretchr/objx v0.1.1/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME=
github.com/stretchr/objx v0.4.0/go.mod h1:YvHI0jy2hoMjB+UWwv71VJQ9isScKT/TqJzVSSt89Yw=
github.com/stretchr/testify v1.2.2/go.mod h1:a8OnRcib4nhh0OaRAV+Yts87kKdq0PP7pXfy6kDkUVs=
github.com/stretchr/testify v1.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UVUgZn+9EI=
github.com/stretchr/testify v1.4.0/go.mod h1:j7eGeouHqKxXV5pUuKE4zz7dFj8WfuZ+81PSLYec5m4=
github.com/stretchr/testify v1.6.1 h1:hDPOHmpOpP40lSULcqw7IrRb/u7w6RpDC9399XyoNd0=
github.com/stretchr/testify v1.6.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg=
github.com/stretchr/testify v1.7.0/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg=
github.com/stretchr/testify v1.7.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg=
github.com/stretchr/testify v1.8.0 h1:pSgiaMZlXftHpm5L7V1+rVB+AZJydKsMxsQBIJw4PKk=
github.com/stretchr/testify v1.8.0/go.mod h1:yNjHg4UonilssWZ8iaSj1OCr/vHnekPRkoO+kdMU+MU=
github.com/struCoder/pidusage v0.2.1 h1:dFiEgUDkubeIj0XA1NpQ6+8LQmKrLi7NiIQl86E6BoY=
github.com/struCoder/pidusage v0.2.1/go.mod h1:bewtP2KUA1TBUyza5+/PCpSQ6sc/H6jJbIKAzqW86BA=
github.com/tcnksm/go-gitconfig v0.1.2 h1:iiDhRitByXAEyjgBqsKi9QU4o2TNtv9kPP3RgPgXBPw=
github.com/tcnksm/go-gitconfig v0.1.2/go.mod h1:/8EhP4H7oJZdIPyT+/UIsG87kTzrzM4UsLGSItWYCpE=
github.com/tidwall/pretty v1.0.0 h1:HsD+QiTn7sK6flMKIvNmpqz1qrpP3Ps6jOKIKMooyg4=
github.com/tidwall/pretty v1.0.0/go.mod h1:XNkn88O1ChpSDQmQeStsy+sBenx6DDtFZJxhVysOjyk=
github.com/ugorji/go v1.1.7/go.mod h1:kZn38zHttfInRq0xu/PH0az30d+z6vm202qpg1oXVMw=
github.com/ugorji/go v1.2.6 h1:tGiWC9HENWE2tqYycIqFTNorMmFRVhNwCpDOpWqnk8E=
github.com/ugorji/go v1.2.6/go.mod h1:anCg0y61KIhDlPZmnH+so+RQbysYVyDko0IMgJv0Nn0=
github.com/ugorji/go/codec v1.1.7/go.mod h1:Ax+UKWsSmolVDwsd+7N3ZtXu+yMGCf907BLYF3GoBXY=
github.com/ugorji/go/codec v1.2.6 h1:7kbGefxLoDBuYXOms4yD7223OpNMMPNPZxXk5TvFcyQ=
github.com/ugorji/go/codec v1.2.6/go.mod h1:V6TCNZ4PHqoHGFZuSG1W8nrCzzdgA2DozYxWFFpvxTw=
github.com/ugorji/go v1.2.7 h1:qYhyWUUd6WbiM+C6JZAUkIJt/1WrjzNHY9+KCIjVqTo=
github.com/ugorji/go v1.2.7/go.mod h1:nF9osbDWLy6bDVv/Rtoh6QgnvNDpmCalQV5urGCCS6M=
github.com/ugorji/go/codec v1.2.7 h1:YPXUKf7fYbp/y8xloBqZOw2qaVggbfwMlI8WM3wZUJ0=
github.com/ugorji/go/codec v1.2.7/go.mod h1:WGN1fab3R1fzQlVQTkfxVtIBhWDRqOviHU95kRgeqEY=
github.com/ulikunitz/xz v0.5.9/go.mod h1:nbz6k7qbPmH4IRqmfOplQw/tblSgqTqBwxkY0oWt/14=
github.com/ulikunitz/xz v0.5.10 h1:t92gobL9l3HE202wg3rlk19F6X+JOxl9BBrCCMYEYd8=
github.com/ulikunitz/xz v0.5.10/go.mod h1:nbz6k7qbPmH4IRqmfOplQw/tblSgqTqBwxkY0oWt/14=
github.com/xdg-go/pbkdf2 v1.0.0 h1:Su7DPu48wXMwC3bs7MCNG+z4FhcyEuz5dlvchbq0B0c=
github.com/xdg-go/pbkdf2 v1.0.0/go.mod h1:jrpuAogTd400dnrH08LKmI/xc1MbPOebTwRqcT5RDeI=
github.com/xdg-go/scram v1.0.2 h1:akYIkZ28e6A96dkWNJQu3nmCzH3YfwMPQExUYDaRv7w=
github.com/xdg-go/scram v1.0.2/go.mod h1:1WAq6h33pAW+iRreB34OORO2Nf7qel3VV3fjBj+hCSs=
github.com/xdg-go/stringprep v1.0.2 h1:6iq84/ryjjeRmMJwxutI51F2GIPlP5BfTvXHeYjyhBc=
github.com/xdg-go/stringprep v1.0.2/go.mod h1:8F9zXuvzgwmyT5DUm4GUfZGDdT3W+LCvS6+da4O5kxM=
github.com/xdg-go/scram v1.1.1 h1:VOMT+81stJgXW3CpHyqHN3AXDYIMsx56mEFrB37Mb/E=
github.com/xdg-go/scram v1.1.1/go.mod h1:RaEWvsqvNKKvBPvcKeFjrG2cJqOkHTiyTpzz23ni57g=
github.com/xdg-go/stringprep v1.0.3 h1:kdwGpVNwPFtjs98xCGkHjQtGKh86rDcRZN17QEMCOIs=
github.com/xdg-go/stringprep v1.0.3/go.mod h1:W3f5j4i+9rC0kuIEJL0ky1VpHXQU3ocBgklLGvcBnW8=
github.com/youmark/pkcs8 v0.0.0-20181117223130-1be2e3e5546d/go.mod h1:rHwXgn7JulP+udvsHwJoVG1YGAP6VLg4y9I5dyZdqmA=
github.com/youmark/pkcs8 v0.0.0-20201027041543-1326539a0a0a h1:fZHgsYlfvtyqToslyjUt3VOPF4J7aK/3MPcK7xp3PDk=
github.com/youmark/pkcs8 v0.0.0-20201027041543-1326539a0a0a/go.mod h1:ul22v+Nro/R083muKhosV54bj5niojjWZvU8xrevuH4=
github.com/yuin/goldmark v1.1.25/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74=
github.com/yuin/goldmark v1.1.27/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74=
github.com/yuin/goldmark v1.1.32/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74=
go.mongodb.org/mongo-driver v1.6.0 h1:ccc26ylcoRWJQRbjU7GvqfxNzwKcoIcEL3BPuFR/pJ0=
go.mongodb.org/mongo-driver v1.6.0/go.mod h1:Q4oFMbo1+MSNqICAdYMlC/zSTrwCogR4R8NzkI+yfU8=
go.mongodb.org/mongo-driver v1.10.0 h1:UtV6N5k14upNp4LTduX0QCufG124fSu25Wz9tu94GLg=
go.mongodb.org/mongo-driver v1.10.0/go.mod h1:wsihk0Kdgv8Kqu1Anit4sfK+22vSFbUrAVEYRhCXrA8=
go.opencensus.io v0.21.0/go.mod h1:mSImk1erAIZhrmZN+AvHh14ztQfjbGwt4TtuofqLduU=
go.opencensus.io v0.22.0/go.mod h1:+kGneAE2xo2IficOXnaByMWTGM9T73dGwxeWcUqIpI8=
go.opencensus.io v0.22.2/go.mod h1:yxeiOL68Rb0Xd1ddK5vPZ/oVn4vY4Ynel7k9FzqtOIw=
go.opencensus.io v0.22.3/go.mod h1:yxeiOL68Rb0Xd1ddK5vPZ/oVn4vY4Ynel7k9FzqtOIw=
go.opencensus.io v0.22.4/go.mod h1:yxeiOL68Rb0Xd1ddK5vPZ/oVn4vY4Ynel7k9FzqtOIw=
golang.org/x/crypto v0.0.0-20180904163835-0709b304e793/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4=
golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w=
golang.org/x/crypto v0.0.0-20190422162423-af44ce270edf/go.mod h1:WFFai1msRO1wXaEeE5yQxYXgSfI8pQAWXbQop6sCtWE=
golang.org/x/crypto v0.0.0-20190510104115-cbcb75029529/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI=
golang.org/x/crypto v0.0.0-20190605123033-f99c8df09eb5/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI=
golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI=
golang.org/x/crypto v0.0.0-20200302210943-78000ba7a073/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto=
golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto=
golang.org/x/crypto v0.0.0-20201221181555-eec23a3978ad/go.mod h1:jdWPYTVW3xRLrWPugEBEK3UY2ZEsg3UU495nc5E+M+I=
golang.org/x/crypto v0.0.0-20210711020723-a769d52b0f97 h1:/UOmuWzQfxxo9UtlXMwuQU8CMgg1eZXqTRwkSQJWKOI=
golang.org/x/crypto v0.0.0-20210711020723-a769d52b0f97/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc=
golang.org/x/crypto v0.0.0-20220622213112-05595931fe9d h1:sK3txAijHtOK88l68nt020reeT1ZdKLIYetKl95FzVY=
golang.org/x/crypto v0.0.0-20220622213112-05595931fe9d/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4=
golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA=
golang.org/x/exp v0.0.0-20190306152737-a1d7652674e8/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA=
golang.org/x/exp v0.0.0-20190510132918-efd6b22b2522/go.mod h1:ZjyILWgesfNpC6sMxTJOJm9Kp84zZh5NQWvqDGG3Qr8=
@ -344,21 +308,20 @@ golang.org/x/net v0.0.0-20200625001655-4c5254603344/go.mod h1:/O7V0waA8r7cgGh81R
golang.org/x/net v0.0.0-20200707034311-ab3426394381/go.mod h1:/O7V0waA8r7cgGh81Ro3o1hOxt32SMVPicZroKQ2sZA=
golang.org/x/net v0.0.0-20200822124328-c89045814202/go.mod h1:/O7V0waA8r7cgGh81Ro3o1hOxt32SMVPicZroKQ2sZA=
golang.org/x/net v0.0.0-20210226172049-e18ecbb05110/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg=
golang.org/x/net v0.0.0-20210716203947-853a461950ff h1:j2EK/QoxYNBsXI4R7fQkkRUk8y6wnOBI+6hgPdP/6Ds=
golang.org/x/net v0.0.0-20210716203947-853a461950ff/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y=
golang.org/x/net v0.0.0-20211112202133-69e39bad7dc2 h1:CIJ76btIcR3eFI5EgSo6k1qKw9KJexJuRLI9G7Hp5wE=
golang.org/x/net v0.0.0-20211112202133-69e39bad7dc2/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y=
golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U=
golang.org/x/oauth2 v0.0.0-20181106182150-f42d05182288/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U=
golang.org/x/oauth2 v0.0.0-20190226205417-e64efc72b421/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw=
golang.org/x/oauth2 v0.0.0-20190604053449-0f29369cfe45/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw=
golang.org/x/oauth2 v0.0.0-20191202225959-858c2ad4c8b6/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw=
golang.org/x/oauth2 v0.0.0-20200107190931-bf48bf16ab8d/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw=
golang.org/x/oauth2 v0.0.0-20210628180205-a41e5a781914 h1:3B43BWw0xEBsLZ/NO1VALz6fppU3481pik+2Ksv45z8=
golang.org/x/oauth2 v0.0.0-20210628180205-a41e5a781914/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A=
golang.org/x/oauth2 v0.0.0-20211104180415-d3ed0bb246c8 h1:RerP+noqYHUQ8CMRcPlC2nvTa4dcBIjegkuWdcUDuqg=
golang.org/x/oauth2 v0.0.0-20211104180415-d3ed0bb246c8/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A=
golang.org/x/sync v0.0.0-20180314180146-1d60e4601c6f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
golang.org/x/sync v0.0.0-20181108010431-42b317875d0f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
golang.org/x/sync v0.0.0-20181221193216-37e7f081c4d4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
golang.org/x/sync v0.0.0-20190227155943-e225da77a7e6/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
golang.org/x/sync v0.0.0-20190412183630-56d357773e84/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
golang.org/x/sync v0.0.0-20190911185100-cd5d95a43a6e/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
golang.org/x/sync v0.0.0-20200317015054-43a5402ce75a/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
@ -366,27 +329,20 @@ golang.org/x/sync v0.0.0-20200625203802-6e8e738ad208/go.mod h1:RxMgew5VJxzue5/jJ
golang.org/x/sync v0.0.0-20210220032951-036812b2e83c h1:5KslGYwFpkhGh+Q16bwMP3cOontH8FOep7tGV86Y7SQ=
golang.org/x/sync v0.0.0-20210220032951-036812b2e83c/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
golang.org/x/sys v0.0.0-20180830151530-49385e6e1522/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
golang.org/x/sys v0.0.0-20180905080454-ebe1bf3edb33/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
golang.org/x/sys v0.0.0-20180909124046-d0be0721c37e/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
golang.org/x/sys v0.0.0-20190312061237-fead79001313/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20190403152447-81d4e9dc473e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20190419153524-e8e3143a4f4a/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20190422165155-953cdadca894/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20190502145724-3ef323f4f1fd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20190507160741-ecd444e8653b/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20190531175056-4c3a928424d2/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20190606165138-5da285871e9c/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20190624142023-c5567b49c5d0/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20190726091711-fc99dfbffb4e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20190813064441-fde4db37ae7a/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20191001151750-bb3f8db39f24/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20191026070338-33540a1f6037/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20191204072324-ce4227a45e2e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20191228213918-04cbcbbfeed8/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20200113162924-86b910548bc1/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20200116001909-b77594299b42/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20200122134326-e047566fdf82/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20200202164722-d101bd2416d5/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20200212091648-12a6c2dcc1e4/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
@ -402,8 +358,10 @@ golang.org/x/sys v0.0.0-20200803210538-64077c9b5642/go.mod h1:h1NjWce9XRLGQEsW7w
golang.org/x/sys v0.0.0-20201119102817-f84b799fce68/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20210423082822-04245dca01da/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20210615035016-665e8c7367d1/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/sys v0.0.0-20210630005230-0f9fa26af87c h1:F1jZWGFhYfh0Ci55sIpILtKKK8p3i2/krTr0H1rg74I=
golang.org/x/sys v0.0.0-20210630005230-0f9fa26af87c/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/sys v0.0.0-20210806184541-e5e7981a1069/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/sys v0.0.0-20211113001501-0c823b97ae02 h1:7NCfEGl0sfUojmX78nK9pBJuUlSZWEJA/TwASvfiPLo=
golang.org/x/sys v0.0.0-20211113001501-0c823b97ae02/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/term v0.0.0-20201117132131-f5c789dd3221/go.mod h1:Nr5EML6q2oocZ2LXRh80K7BxOlk5/8JxuGnuhpl+muw=
golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo=
golang.org/x/text v0.0.0-20170915032832-14c0d48ead0c/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
@ -412,8 +370,9 @@ golang.org/x/text v0.3.1-0.20180807135948-17ff2d5776d2/go.mod h1:NqM8EUOU14njkJ3
golang.org/x/text v0.3.2/go.mod h1:bEr9sfX3Q8Zfm5fL9x+3itogRgK3+ptLWKqgva+5dAk=
golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ=
golang.org/x/text v0.3.5/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ=
golang.org/x/text v0.3.6 h1:aRYxNxv6iGQlyVaZmk6ZgYEDa+Jg18DxebPSrd6bg1M=
golang.org/x/text v0.3.6/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ=
golang.org/x/text v0.3.7 h1:olpwvP2KacW1ZWvsR7uQhoyTYvKAupfQrRGBFM352Gk=
golang.org/x/text v0.3.7/go.mod h1:u+2+/6zg+i71rQMx5EYifcz6MCKuco9NR6JIITiCfzQ=
golang.org/x/time v0.0.0-20181108054448-85acf8d2951c/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ=
golang.org/x/time v0.0.0-20190308202827-9d24e82272b4/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ=
golang.org/x/time v0.0.0-20191024005414-555d28b269f0/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ=
@ -423,13 +382,9 @@ golang.org/x/tools v0.0.0-20190226205152-f727befe758c/go.mod h1:9Yl7xja0Znq3iFh3
golang.org/x/tools v0.0.0-20190311212946-11955173bddd/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs=
golang.org/x/tools v0.0.0-20190312151545-0bb0c0a6e846/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs=
golang.org/x/tools v0.0.0-20190312170243-e65039ee4138/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs=
golang.org/x/tools v0.0.0-20190329151228-23e29df326fe/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs=
golang.org/x/tools v0.0.0-20190416151739-9c9e1878f421/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs=
golang.org/x/tools v0.0.0-20190420181800-aa740d480789/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs=
golang.org/x/tools v0.0.0-20190425150028-36563e24a262/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q=
golang.org/x/tools v0.0.0-20190506145303-2d16b83fe98c/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q=
golang.org/x/tools v0.0.0-20190524140312-2c0ae7006135/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q=
golang.org/x/tools v0.0.0-20190531172133-b3315ee88b7d/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc=
golang.org/x/tools v0.0.0-20190606124116-d0a3d012864b/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc=
golang.org/x/tools v0.0.0-20190621195816-6e04913cbbac/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc=
golang.org/x/tools v0.0.0-20190628153133-6cdbf07be9d0/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc=
@ -544,23 +499,23 @@ google.golang.org/protobuf v1.24.0/go.mod h1:r/3tXBNzIEhYS9I1OUVjXDlt8tc493IdKGj
google.golang.org/protobuf v1.25.0/go.mod h1:9JNX74DMeImyA3h4bdi1ymwjUzf21/xIlbajtzgsN7c=
google.golang.org/protobuf v1.26.0-rc.1/go.mod h1:jlhhOSvTdKEhbULTjvd4ARK9grFBp09yW+WbY/TyQbw=
google.golang.org/protobuf v1.26.0/go.mod h1:9q0QmTI4eRPtz6boOQmLYwt+qCgq0jsYwAQnmE0givc=
google.golang.org/protobuf v1.27.1 h1:SnqbnDw1V7RiZcXPx5MEeqPv2s79L9i7BJUlG/+RurQ=
google.golang.org/protobuf v1.27.1/go.mod h1:9q0QmTI4eRPtz6boOQmLYwt+qCgq0jsYwAQnmE0givc=
google.golang.org/protobuf v1.28.0 h1:w43yiav+6bVFTBQFZX0r7ipe9JQ1QsbMgHwbBziscLw=
google.golang.org/protobuf v1.28.0/go.mod h1:HV8QOd/L58Z+nl8r43ehVNZIU/HEI6OcFqwMG9pJV4I=
gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127 h1:qIbj1fsPNlZgppZ+VLlY7N33q108Sa+fhmuc+sWQYwY=
gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c h1:Hei/4ADfdWqJk1ZMxUNpqntNwaWcugrBjAiHlqqRiVk=
gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c/go.mod h1:JHkPIbrfpd72SG/EVd6muEfDQjcINNoR0C8j2r3qZ4Q=
gopkg.in/errgo.v2 v2.1.0/go.mod h1:hNsd1EY+bozCKY1Ytp96fpM3vjJbqLJn88ws8XvfDNI=
gopkg.in/fsnotify.v1 v1.4.7/go.mod h1:Tz8NjZHkW78fSQdbUxIjBTcgA1z1m8ZHf0WmKUhAMys=
gopkg.in/go-playground/assert.v1 v1.2.1/go.mod h1:9RXL0bg/zibRAgZUYszZSwO/z8Y/a8bDuhia5mkpMnE=
gopkg.in/go-playground/validator.v9 v9.29.1/go.mod h1:+c9/zcJMFNgbLvly1L1V+PpxWdVbfP1avr/N00E2vyQ=
gopkg.in/tomb.v1 v1.0.0-20141024135613-dd632973f1e7/go.mod h1:dt/ZhP58zS4L8KSrWDmTeBkI65Dw0HsyUHuEVlX15mw=
gopkg.in/yaml.v2 v2.2.1/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=
gopkg.in/yaml.v2 v2.2.2/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=
gopkg.in/yaml.v2 v2.2.8/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=
gopkg.in/yaml.v2 v2.4.0 h1:D8xgwECY7CYvx+Y2n4sBz93Jn9JRvxdiyyo8CTfuKaY=
gopkg.in/yaml.v2 v2.4.0/go.mod h1:RDklbk79AGWmwhnvt/jBztapEOGDOx6ZbXqjP6csGnQ=
gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c h1:dUUwHk2QECo/6vqA44rthZ8ie2QXMNeKRTHCNY2nXvo=
gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
gopkg.in/yaml.v3 v3.0.0-20210107192922-496545a6307b/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA=
gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
honnef.co/go/tools v0.0.0-20190102054323-c2f93a96b099/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4=
honnef.co/go/tools v0.0.0-20190106161140-3f1c8253044a/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4=
honnef.co/go/tools v0.0.0-20190418001031-e561f6794a2a/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4=

24
init.go
View File

@ -1,24 +0,0 @@
package main
import (
"github.com/jpillora/opts"
"gitlab.com/gaming0skar123/go/pingbot/update"
)
type CMDOptions struct {
Update bool `opts:"help=automatic updates"`
}
func init() {
cmd := CMDOptions{
Update: true,
}
opts.Parse(&cmd)
if cmd.Update {
go update.Ticker()
} else {
log.Warn("Auto Update -> Disabled")
}
}

20
main.go
View File

@ -1,20 +0,0 @@
package main
import (
"gitlab.com/gaming0skar123/go/pingbot/backend"
"gitlab.com/gaming0skar123/go/pingbot/common"
"gitlab.com/gaming0skar123/go/pingbot/config"
"gitlab.com/gaming0skar123/go/pingbot/database"
"gitlab.com/gaming0skar123/go/pingbot/website"
)
var log = common.Log
func main() {
log.Info("You're using verion: ", config.Version)
database.Connect()
go website.Server()
backend.Ticker()
}

View File

@ -1,7 +0,0 @@
{
"watch": ["*"],
"ext": "go json",
"signal": "SIGTERM",
"quiet": true,
"exec": "clear && go build -o pingbot.out || exit 1 && ./pingbot.out"
}

31
ping/cache.go Normal file
View File

@ -0,0 +1,31 @@
package ping
import (
"time"
"github.com/MedzikUser/go-utils/common"
"github.com/medzikuser/go-pingbot/database/mongo"
)
var CacheURL []string
func Cache() {
CacheURL = CacheURL[:0]
err := common.Retry(15, 1*time.Second, func() error {
results, err := mongo.GetAll()
if err != nil {
return err
}
for _, value := range results {
CacheURL = append(CacheURL, value.URL)
}
return nil
})
if err != nil {
log.Error(err)
}
}

51
ping/ping.go Normal file
View File

@ -0,0 +1,51 @@
package ping
import (
"context"
"net/http"
"time"
"github.com/MedzikUser/go-utils/common"
"github.com/medzikuser/go-pingbot/config"
)
func ping() int {
Cache()
for _, url := range CacheURL {
go loop(url)
}
return len(CacheURL)
}
func loop(url string) {
// Timeout 1 minute
ctx, cancel := context.WithTimeout(context.Background(), 1*time.Minute)
defer cancel()
req, err := http.NewRequestWithContext(ctx, "GET", url, nil)
if err != nil {
common.Log.Error("new http request", err)
Status.Error++
return
}
req.Header.Set("User-Agent", config.UserAgent)
client := http.DefaultClient
r, err := client.Do(req)
if err != nil {
Status.Error++
return
}
if r.StatusCode >= 200 && r.StatusCode < 400 {
Status.Success++
} else {
Status.Error++
}
}

8
ping/status.go Normal file
View File

@ -0,0 +1,8 @@
package ping
var Status StatusType
type StatusType struct {
Success int64
Error int64
}

46
ping/stopAfterPing.go Normal file
View File

@ -0,0 +1,46 @@
package ping
import (
"os"
"time"
"github.com/MedzikUser/go-utils/common"
"github.com/medzikuser/go-pingbot/config"
)
var log = common.Log
func StopAfterPing() {
Cache()
num := ping()
// timeout
go func() {
timeout := config.Toml.Options.Stop_After_Ping_Timeout
if timeout == 0 {
return
}
time.Sleep(timeout * time.Second)
log.Warn("DB Size -> ", num)
log.Warn("Pinged -> ", Status.Success+Status.Error)
log.Warn("Success -> ", Status.Success)
log.Warn("Error -> ", Status.Error)
os.Exit(1)
}()
for {
if int64(num) == Status.Success+Status.Error {
log.Info("DB Size -> ", num)
log.Info("Pinged -> ", Status.Success+Status.Error)
log.Info("Success -> ", Status.Success)
log.Info("Error -> ", Status.Error)
break
}
time.Sleep(100 * time.Millisecond) // 0.1 second
}
}

View File

@ -1,16 +1,17 @@
package backend
package ping
import (
"time"
"gitlab.com/gaming0skar123/go/pingbot/config"
"github.com/medzikuser/go-pingbot/config"
)
func Ticker() {
// Ping on Start
// On Start
Cache()
ping()
ticker := time.NewTicker(config.PingBot_Ticker)
ticker := time.NewTicker(config.Toml.Backend.Ping * time.Minute)
quit := make(chan struct{})

25
renovate.json Normal file
View File

@ -0,0 +1,25 @@
{
"$schema": "https://docs.renovatebot.com/renovate-schema.json",
"extends": [
"config:base",
"schedule:weekly",
"group:allNonMajor",
":semanticCommits"
],
"labels": [
"dependencies"
],
"automergeType": "pr",
"prCreation": "immediate",
"packageRules": [
{
"matchUpdateTypes": [
"minor",
"patch",
"pin",
"digest"
],
"automerge": true
}
]
}

5
schema.env Normal file
View File

@ -0,0 +1,5 @@
# MongoDB
MONGO_URI=mongodb+srv://...
# GitHub
GH_TOKEN=ghp_

21
start.sh Executable file
View File

@ -0,0 +1,21 @@
#!/bin/bash
clear
# Colors
green="\e[0;92m"
red="\e[0;91m"
nc="\e[0m" # No Color
printf "${nc}[${green}Start${nc}]\n"
# Add permission and start
chmod +x pingbot.out
./pingbot.out
printf "${nc}[${red}END${nc}]\n"
# Wait 2 seconds
sleep 2
# Loop start e.g. on update => restart
bash start.sh

View File

@ -1,28 +0,0 @@
package update
import (
"time"
"gitlab.com/gaming0skar123/go/pingbot/config"
)
func Ticker() {
// Check on start
Update()
ticker := time.NewTicker(config.Latest_Version_Check)
quit := make(chan struct{})
for {
select {
case <-ticker.C:
Update()
case <-quit:
ticker.Stop()
return
}
}
}

View File

@ -1,42 +0,0 @@
package update
import (
"os"
"github.com/blang/semver"
"github.com/rhysd/go-github-selfupdate/selfupdate"
"gitlab.com/gaming0skar123/go/pingbot/common"
"gitlab.com/gaming0skar123/go/pingbot/config"
)
var log = common.Log
func Update() {
repo := config.GH_Repo
latest, found, err := selfupdate.DetectLatest(repo)
if common.CheckErr(err, "detecting letest version") {
return
}
v := semver.MustParse(config.Version)
if !found || latest.Version.LTE(v) {
return
}
log.Warn("Updating...")
exe, err := os.Executable()
if common.CheckErr(err, "locate executable path") {
return
}
err = selfupdate.UpdateTo(latest.AssetURL, exe)
if common.CheckErr(err, "update binary") {
return
}
log.Info("Updated!")
defer os.Exit(0)
}

View File

@ -6,11 +6,7 @@ import (
func ApplyRoutes(r *gin.Engine) {
api := r.Group("/api")
{
api.GET("/url", GetAll)
api.POST("/url", Insert)
api.DELETE("/url/:url", Delete)
api.GET("/status", Status)
}
api.GET("/url", GetAll)
api.GET("/status", Status)
}

View File

@ -1,52 +0,0 @@
package api
import (
"encoding/base64"
"net/http"
"github.com/gin-gonic/gin"
"gitlab.com/gaming0skar123/go/pingbot/database"
)
func Delete(c *gin.Context) {
url := c.Param("url")
d, err := base64.StdEncoding.DecodeString(url)
if err != nil {
c.JSON(http.StatusInternalServerError, gin.H{
"success": false,
"message": "Error Parsing Base64!",
})
return
}
url = string(d)
r, err := database.Delete(&database.URL{
URL: url,
})
if r.DeletedCount <= 0 {
c.JSON(http.StatusInternalServerError, gin.H{
"success": false,
"message": "Not found!",
})
return
}
if err != nil {
c.JSON(http.StatusInternalServerError, gin.H{
"success": false,
"message": "Error Deleting from Database!",
})
return
}
c.JSON(http.StatusOK, gin.H{
"success": true,
"message": "Deleted",
})
}

View File

@ -1,47 +1,16 @@
package api
import (
"fmt"
"net/http"
"github.com/gin-gonic/gin"
"gitlab.com/gaming0skar123/go/pingbot/database"
"github.com/medzikuser/go-pingbot/ping"
)
func GetAll(c *gin.Context) {
results, err := database.GetAll()
ping.Cache()
// Error Handling
if err != nil {
c.JSON(http.StatusInternalServerError, gin.H{
"success": false,
"message": "Error fetching URLs!",
})
fmt.Println(err)
return
}
// DB Is Empty
if results == nil {
c.JSON(http.StatusInternalServerError, gin.H{
"success": false,
"message": "Database is empty!",
})
return
}
var db []database.URL
for _, value := range results {
db = append(db, database.URL{
URL: value.URL,
})
}
c.JSON(http.StatusOK, gin.H{
"success": true,
"db": db,
c.JSON(http.StatusOK, json{
"db": ping.CacheURL,
})
}

View File

@ -1,57 +0,0 @@
package api
import (
"net/http"
"github.com/gin-gonic/gin"
"gitlab.com/gaming0skar123/go/pingbot/database"
)
func Insert(c *gin.Context) {
var post database.URL
err := c.BindJSON(&post)
if err != nil {
c.JSON(http.StatusBadRequest, gin.H{
"success": false,
"message": "Error Binding JSON!",
})
return
}
if len(post.URL) < 1 {
c.JSON(http.StatusBadRequest, gin.H{
"success": false,
"message": "URL was not Provided!",
})
return
}
_, err = http.Get(post.URL)
if err != nil {
c.JSON(http.StatusInternalServerError, gin.H{
"success": false,
"message": "Error Pinging URL!",
})
return
}
_, err = database.Insert(&database.URL{
URL: post.URL,
})
if err != nil {
c.JSON(http.StatusInternalServerError, gin.H{
"success": false,
"message": "Error Inserting to Database!",
})
return
}
c.JSON(http.StatusOK, gin.H{
"success": true,
"url": post.URL,
})
}

View File

@ -1,36 +1,60 @@
package api
import (
"fmt"
"net/http"
"runtime"
"github.com/MedzikUser/go-utils/common"
"github.com/MedzikUser/go-utils/stats"
"github.com/gin-gonic/gin"
"gitlab.com/gaming0skar123/go/pingbot/backend"
"gitlab.com/gaming0skar123/go/pingbot/config"
"github.com/medzikuser/go-pingbot/config"
"github.com/medzikuser/go-pingbot/ping"
)
func Status(c *gin.Context) {
var m runtime.MemStats
runtime.ReadMemStats(&m)
c.JSON(http.StatusOK, gin.H{
"success": true,
"ping": gin.H{
"all": backend.AmountSuccess + backend.AmountErr,
"success": backend.AmountSuccess,
"err": backend.AmountErr,
mem := stats.Memory()
cpu, err := stats.CPU()
if err != nil {
common.Log.Error("cpu stat", err)
}
var p json
if config.Toml.Backend.Enabled {
p = json{
"all": ping.Status.Error + ping.Status.Success,
"success": ping.Status.Success,
"error": ping.Status.Error,
}
} else {
p = nil
}
c.JSON(http.StatusOK, json{
"ping": p,
"sys": json{
"uptime": common.Uptime(config.StartTime),
"pid": cpu.PID,
"os": runtime.GOOS,
"memory": json{
"alloc": mem.Alloc,
"totalalloc": mem.TotalAlloc,
"sys": mem.Sys,
"numgc": mem.NumGC,
},
"cpu": json{
"usage": cpu.Usage,
"num": cpu.Num,
"arch": cpu.Arch,
},
},
"mem": gin.H{
"alloc": MB(m.Alloc),
"totalalloc": MB(m.TotalAlloc),
"sys": MB(m.Sys),
"numgc": m.NumGC,
"v": json{
"go": runtime.Version(),
"release": config.Version,
"build": config.Build,
},
"v": config.Version,
})
}
func MB(b uint64) string {
return fmt.Sprintf("%d MB", b/1000/1000)
}

View File

@ -0,0 +1,3 @@
package api
type json map[string]interface{}

View File

@ -2,13 +2,14 @@ package website
import (
"os"
"strconv"
"github.com/MedzikUser/go-utils/common"
"github.com/gin-contrib/cors"
"github.com/gin-gonic/gin"
"gitlab.com/gaming0skar123/go/pingbot/common"
"gitlab.com/gaming0skar123/go/pingbot/config"
"gitlab.com/gaming0skar123/go/pingbot/website/routes"
"gitlab.com/gaming0skar123/go/pingbot/website/routes/api"
"github.com/medzikuser/go-pingbot/config"
"github.com/medzikuser/go-pingbot/website/routes"
"github.com/medzikuser/go-pingbot/website/routes/api"
)
var router *gin.Engine
@ -19,15 +20,20 @@ func Server() {
router = gin.New()
// Allows all origins
router.Use(cors.Default())
// Fix cors
configCors := cors.DefaultConfig()
configCors.AllowOrigins = []string{"https://www.pingbot.cf"}
router.Use(cors.New(configCors))
router.GET("/", routes.Index)
api.ApplyRoutes(router)
err := router.Run(config.Port)
if common.CheckErr(err, "gin start") {
err := router.Run(":" + strconv.Itoa(config.Toml.HTTP.Port))
if err != nil {
common.Log.Error("gin start http server", err)
os.Exit(1)
}
}