Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/hack-fan/skadi
Easily run something on your server by sending message to IM. slack, teams, wechat, etc...
https://github.com/hack-fan/skadi
cloud notification server terminal wechat
Last synced: 3 months ago
JSON representation
Easily run something on your server by sending message to IM. slack, teams, wechat, etc...
- Host: GitHub
- URL: https://github.com/hack-fan/skadi
- Owner: hack-fan
- License: mit
- Created: 2020-06-14T15:49:13.000Z (over 4 years ago)
- Default Branch: master
- Last Pushed: 2023-03-06T23:54:17.000Z (almost 2 years ago)
- Last Synced: 2024-08-04T08:02:35.576Z (6 months ago)
- Topics: cloud, notification, server, terminal, wechat
- Language: Go
- Homepage: https://letserver.run
- Size: 192 KB
- Stars: 173
- Watchers: 3
- Forks: 13
- Open Issues: 1
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# Skadi
Skadi is a cloud message exchanger.
You can easily run something on your server by sending message to IM.Slack, teams, wechat, etc...
[LetServerRun](https://letserver.run) use this project as it infrastructure.[中文文档](https://letserver.run/docs/)
## Architecture
```text
+-------------+ +-----------------------+
| | | |
| E-mail +---+ | Your Servers |
| | | | |
+-------------+ | | +-----------+ |
| | | | |
| +----------+ Agent | |
+-------------+ | +---------------+ | | | | |
| | | | | | | +-----------+ |
| Chat Bot +-------> Skadi Cloud <-----+ | |
| | | | | | | |
+-------------+ | +---------------+ | | +-----------+ |
| | | | | |
| +----------+ Agent | |
+-------------+ | | | | |
| | | | +-----------+ |
| CI / CD +---+ | |
| | | |
+-------------+ +-----------------------+
```## Requirements
* Redis 3.2+
* MySQL## Concepts
### Job
Job is just a message string, which sent by you from anywhere and would pull by specified Agent.Job has status in its lifecycle.
* queuing: after user pushed the job to cloud
* sent: after the agent got the job
* expired: the job has been sent `10 minute` but no result, or the agent is offline when job is queuing
* succeeded: after the agent reported a succeeded result
* failed: after the agent reported a failed result### Agent
Agent is a daemon running in your server, or a thread embedded in your service.You can use our [open source agent](https://github.com/hack-fan/skadi-agent-shell),
or write your own using our [HTTP API](https://letserver.run/ref/).All agent must check job every minute, if an agent has not checked job in `3 minute`,
it's status would be tagged as `offline`. All queuing job for this agent would be tagged as `expired`.### Event
There are several kinds of events, you must handle them.
* EventMessage
* EventJobStatusThey will publish to a queue in redis.