Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/wechaty/puppet-service
Wechaty Puppet Provider for providing/consuming the Wechaty Puppet Service
https://github.com/wechaty/puppet-service
grpc hostie puppet service wechaty
Last synced: 4 months ago
JSON representation
Wechaty Puppet Provider for providing/consuming the Wechaty Puppet Service
- Host: GitHub
- URL: https://github.com/wechaty/puppet-service
- Owner: wechaty
- License: apache-2.0
- Created: 2018-06-27T06:10:21.000Z (over 6 years ago)
- Default Branch: main
- Last Pushed: 2023-07-27T04:46:30.000Z (over 1 year ago)
- Last Synced: 2024-10-11T09:42:44.766Z (4 months ago)
- Topics: grpc, hostie, puppet, service, wechaty
- Language: TypeScript
- Homepage: https://paka.dev/npm/wechaty-puppet-service
- Size: 507 KB
- Stars: 73
- Watchers: 6
- Forks: 18
- Open Issues: 67
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# wechaty-puppet-service
[![NPM Version](https://badge.fury.io/js/wechaty-puppet-service.svg)](https://www.npmjs.com/package/wechaty-puppet-service)
[![NPM](https://github.com/wechaty/wechaty-puppet-service/workflows/NPM/badge.svg)](https://github.com/wechaty/wechaty-puppet-service/actions?query=workflow%3ANPM)
[![ES Modules](https://img.shields.io/badge/ES-Modules-brightgreen)](https://github.com/Chatie/tsconfig/issues/16)![Wechaty Service](https://wechaty.github.io/wechaty-puppet-service/images/hostie.png)
Wechaty Puppet Service is gRPC for Wechaty Puppet Provider.
For example, we can cloudify the Wechaty Puppet Provider wechaty-puppet-padlocal
to a Wechaty Puppet Service by running our Wechaty Puppet Service Token Gateway.If you want to learn more about what is Wechaty Puppet and Wechaty Puppet Service,
we have a blog post to explain them in details at[![Powered by Wechaty](https://img.shields.io/badge/Powered%20By-Wechaty-brightgreen.svg)](https://github.com/Wechaty/wechaty)
## Features
1. Consume Wechaty Puppet Service
1. Provide Wechaty Puppet Service## Usage
```ts
import { WechatyBuilder } from 'wechaty'const wechaty = WechatyBuilder.build({
puppet: 'wechaty-puppet-service',
puppetOptions: {
token: `${TOKEN}`
}
})wechaty.start()
```Learn more about Wechaty Puppet Token from our official website:
## Environment Variables
### 1 `WECHATY_PUPPET_SERVICE_TOKEN`
The token set to this environment variable will become the default value of `puppetOptions.token`
```sh
WECHATY_PUPPET_SERVICE_TOKEN=${WECHATY_PUPPET_SERVCIE_TOKEN} node bot.js
```## gRPC Health Checking Protocol
From version 0.37, Wechaty Puppet Service start
supporting the [GRPC Health Checking Protocol](https://github.com/grpc/grpc/blob/master/doc/health-checking.md).```sh
$ npm install --global wechaty-token
$ go install github.com/grpc-ecosystem/grpc-health-probe@latest$ wechaty-token discovery uuid_12345678-1234-1234-1234-567812345678
{"host": 1.2.3.4, "port": 5678}$ grpc-health-probe -tls -tls-no-verify -addr 1.2.3.4
status: SERVING
```See:
- [Add health checking API wechaty/grpc#151](https://github.com/wechaty/grpc/issues/151)
## Resources
### Authentication
1. [Authentication and Security in gRPC Microservices - Jan Tattermusch, Google](https://youtu.be/_y-lzjdVEf0)
1. [[gRPC #15] Implement gRPC interceptor + JWT authentication in Go](https://youtu.be/kVpB-uH6X-s)## History
### master v0.31
1. ES Modules supported.
1. gRPC Health Checking Protocol support### v0.30 (Aug 25, 2021)
1. Implemented TLS and server-side token authorization.
1. Refactor the gRPC client code.
1. Add local payload cache to reduce the cost of RPC.#### New environment variables
1. `WECHATY_PUPPET_SERVICE_TLS_CA_CERT`: can be overwrite by `options.tlsRootCert`. Set Root CA Cert to verify the server or client.
For Puppet Server:
| Environment Variable | Options | Description |
| -------------------- | ------- | ----------- |
| `WECHATY_PUPPET_SERVICE_TLS_SERVER_CERT` | `options.tls.serverCert` | Server CA Cert (string data) |
| `WECHATY_PUPPET_SERVICE_TLS_SERVER_KEY` | `options.tls.serverKey` | Server CA Key (string data) |
| `WECHATY_PUPPET_SERVICE_NO_TLS_INSECURE_SERVER` | `options.tls.disable` | Set `true` to disable server TLS |For Puppet Client:
| Environment Variable | Options | Description |
| -------------------- | ------- | ----------- |
| `WECHATY_PUPPET_SERVICE_AUTHORITY` | `options.authority` | Service discovery host, default: `api.chatie.io` |
| `WECHATY_PUPPET_SERVICE_TLS_CA_CERT` | `options.caCert` | Certification Authority Root Cert, default is using Wechaty Community root cert |
| `WECHATY_PUPPET_SERVICE_TLS_SERVER_NAME` | `options.serverName` | Server Name (mast match for SNI) |
| `WECHATY_PUPPET_SERVICE_NO_TLS_INSECURE_CLIENT` | `options.tls.disable` | Set `true` to disable client TLS |## Changelog
### main v1.0 (Oct 29, 2021)
Release v1.0 of Wechaty Puppet Service.
1. use [wechaty-token](https://github.com/wechaty/token)
for gRPC service discovery with `wechaty` schema (xDS like)
1. deprecated `WECHATY_SERVICE_DISCOVERY_ENDPOINT`,
replaced by `WECHATY_PUPPET_SERVICE_AUTHORITY`.
(See [#156](https://github.com/wechaty/wechaty-puppet-service/issues/156))
1. enable TLS & Token Auth (See [#124](https://github.com/wechaty/wechaty-puppet-service/issues/124))### v0.14 (Jan 2021)
Rename from ~~wechaty-puppet-hostie~~ to [wechaty-puppet-service](https://www.npmjs.com/package/wechaty-puppet-service)
(Issue [#118](https://github.com/wechaty/wechaty-puppet-service/issues/118))### v0.10.4 (Oct 2020)
1. Add 'grpc.default_authority' to gRPC client option.
> See: [Issue #78: gRPC server can use the authority to identify current user](https://github.com/wechaty/wechaty-puppet-hostie/pull/78)### v0.6 (Apr 2020)
Beta Version
1. Reconnect to Hostie Server with RxSJ Observables
### v0.3 (Feb 2020)
1. Publish the NPM module [wechaty-puppet-hostie](https://www.npmjs.com/package/wechaty-puppet-hostie)
1. Implemented basic hostie features with gRPC module: [@chatie/grpc](https://github.com/Chatie/grpc)### v0.0.1 (Jun 2018)
Designing the puppet hostie with the following protocols:
1. [gRPC](https://grpc.io/)
1. [JSON RPC](https://www.jsonrpc.org/)
1. [OpenAPI/Swagger](https://swagger.io/docs/specification/about/)## Maintainers
- [@huan](https://github.com/huan) Huan
- [@windmemory](https://github.com/windmemory) Yuan## Copyright & License
- Code & Docs © 2018-now Huan LI \
- Code released under the Apache-2.0 License
- Docs released under Creative Commons