https://github.com/argoeu/ams-push-server
The ams push server is a component that handles the push functionality for the respective push enabled subscriptions in the argo-messaging-service.
Science Score: 26.0%
This score indicates how likely this project is to be science-related based on various indicators:
-
○CITATION.cff file
-
✓codemeta.json file
Found codemeta.json file -
✓.zenodo.json file
Found .zenodo.json file -
○DOI references
-
○Academic publication links
-
○Academic email domains
-
○Institutional organization owner
-
○JOSS paper metadata
-
○Scientific vocabulary similarity
Low similarity (11.5%) to scientific vocabulary
Keywords
Repository
The ams push server is a component that handles the push functionality for the respective push enabled subscriptions in the argo-messaging-service.
Basic Info
Statistics
- Stars: 1
- Watchers: 11
- Forks: 3
- Open Issues: 1
- Releases: 2
Topics
Metadata Files
README.md
Ams Push Server
The ams push server is a component that handles the push functionality for the respective push enabled subscriptions in the argo-messaging-service.
Prerequisites
Before you start, you need to issue a valid certificate.
Set Up
- Install Golang 1.21
- Create a new work space:
mkdir ~/go-workspace
export GOPATH=~/go-workspace
export PATH=$PATH:$GOPATH/bin
You may add the export lines into the ~/.bashrc, /.zshrc or the ~/.bash_profile file to have GOPATH
environment variable properly setup upon every login.
- Get the latest version
go get github.com/ARGOeu/ams-push-server
- To build the service use the following command:
go build
- To run the service use the following command:
./ams-push-server (This assumes that there is a valid configuration file at
/etc/ams-push-server/conf.d/ams-push-server-config.json).
Else
./ams-push-server --config /path/to/a/json/config/file
- To run the unit-tests:
Inside the project's folder issue the command:
go test $(go list ./... | grep -v /vendor/)
Configuration
The service depends on a configuration file in order to be able to run.This file contains the following information:
json
{
"bind_ip": "192.168.3.0",
"bind_port": 9000,
"certificate": "/path/cert.pem",
"certificate_key": "/path/certkey.pem",
"certificate_authorities_dir": "/path/to/cas",
"ams_token": "sometoken",
"ams_host": "localhost",
"ams_port": 8080,
"verify_ssl": true,
"tls_enabled": true,
"trust_unknown_cas": false,
"log_level": "INFO",
"skip_subs_load": false,
"acl": [
"OU=my.local,O=mkcert development certificate"
],
"syslog_enabled": false
}
bind_ip: The ip that the grpc service will bind to.bind_port:The port that the service will bind to.certificate:The certificate file which the service will use.certificate_key:The key to the respective certificatecertificate_authroties_dir:Directory containing.pemfiles that the service will use in order to build the trusted CA pool. The CA pool will be used to validate the certificates from incoming client requests.ams_token:THe argo messaging token that the service will use in order to communicate with ams.NOTEthat the tokenMUSTcorrespond to a push worker user in ams.ams_host:The ams http endpoint.ams_port:The ams http endpoint port.verify_ssl:Whether or not it should verify the varioushttpsendpoint it targets.tls_enabled:Enable or disable tls support between client and servertrust_unknown_cas:Whether or not the service should accept certificates from CAs not found in its trusted CA pool. (Mainly used for development purposes)log_level:DEBUG,INFO,WARNING,ERRORskip_subs_load:The service will try by default to contact the ams in order to retrieve all active push subscriptions
that are assigned to it and start their push cycles(consume->send->ack). This will be done through the its user profile in ams(which is the profile associated with the)ams_token). You can control this behavior and decide whether or not to pre-load any already active subscriptions.acl: List of certificate DNs which are allowed to access the service.syslog_enabled: Direct logging of the service to the syslog socket
You can find the configuration template at conf/ams-push-server-config.template.
Managing the protocol buffers and gRPC definitions
In order to modify any .proto file you will need the following
Read on how to install the protoc compiler on your platform here.
Install the go plugin.
go get -u github.com/golang/protobuf/protoc-gen-goinstall the go gRPC package.
go get -u google.golang.org/grpcInside
api/<version>/grpccompile.protoc -I proto/ proto/ams.proto --go_out=plugins=grpc:proto
Owner
- Name: ARGOeu
- Login: ARGOeu
- Kind: organization
- Repositories: 75
- Profile: https://github.com/ARGOeu
Α team working with the latest technologies about accounting, monitoring, messaging and eSeal Capabilities
GitHub Events
Total
- Release event: 1
- Push event: 3
- Pull request review event: 1
- Pull request event: 6
- Create event: 1
Last Year
- Release event: 1
- Push event: 3
- Pull request review event: 1
- Pull request event: 6
- Create event: 1
Packages
- Total packages: 1
- Total downloads: unknown
- Total dependent packages: 0
- Total dependent repositories: 0
- Total versions: 0
proxy.golang.org: github.com/ARGOeu/ams-push-server
- Homepage: https://github.com/ARGOeu/ams-push-server
- Documentation: https://pkg.go.dev/github.com/ARGOeu/ams-push-server#section-documentation
- License: Apache-2.0
Rankings
Dependencies
- github.com/gogo/protobuf v1.3.2
- github.com/golang/protobuf v1.5.2
- github.com/grpc-ecosystem/go-grpc-middleware v1.0.0
- github.com/pkg/errors v0.8.0
- github.com/sirupsen/logrus v1.2.0
- github.com/stretchr/testify v1.2.2
- google.golang.org/genproto v0.0.0-20181109154231-b5d43981345b
- google.golang.org/grpc v1.16.0
- cloud.google.com/go v0.26.0
- github.com/client9/misspell v0.3.4
- github.com/davecgh/go-spew v1.1.1
- github.com/gogo/protobuf v1.3.1
- github.com/gogo/protobuf v1.3.2
- github.com/golang/glog v0.0.0-20160126235308-23def4e6c14b
- github.com/golang/lint v0.0.0-20180702182130-06c8688daad7
- github.com/golang/mock v1.1.1
- github.com/golang/protobuf v1.2.0
- github.com/golang/protobuf v1.2.1-0.20181120001857-882cf97a83ad
- github.com/golang/protobuf v1.5.0
- github.com/golang/protobuf v1.5.2
- github.com/google/go-cmp v0.5.5
- github.com/grpc-ecosystem/go-grpc-middleware v1.0.0
- github.com/kisielk/errcheck v1.2.0
- github.com/kisielk/errcheck v1.5.0
- github.com/kisielk/gotool v1.0.0
- github.com/konsorten/go-windows-terminal-sequences v1.0.1
- github.com/pkg/errors v0.8.0
- github.com/pmezard/go-difflib v1.0.0
- github.com/sirupsen/logrus v1.2.0
- github.com/stretchr/objx v0.1.1
- github.com/stretchr/testify v1.2.2
- github.com/yuin/goldmark v1.1.27
- github.com/yuin/goldmark v1.2.1
- golang.org/x/crypto v0.0.0-20180904163835-0709b304e793
- golang.org/x/crypto v0.0.0-20181112202954-3d3f9f413869
- golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2
- golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550
- golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9
- golang.org/x/lint v0.0.0-20180702182130-06c8688daad7
- golang.org/x/mod v0.2.0
- golang.org/x/mod v0.3.0
- golang.org/x/net v0.0.0-20180826012351-8a410e7b638d
- golang.org/x/net v0.0.0-20180906233101-161cd47e91fd
- golang.org/x/net v0.0.0-20181106065722-10aee1819953
- golang.org/x/net v0.0.0-20181114220301-adae6a3d119a
- golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3
- golang.org/x/net v0.0.0-20190620200207-3b0461eec859
- golang.org/x/net v0.0.0-20200226121028-0de0cce0169b
- golang.org/x/net v0.0.0-20201021035429-f5854403a974
- golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be
- golang.org/x/sync v0.0.0-20180314180146-1d60e4601c6f
- golang.org/x/sync v0.0.0-20190423024810-112230192c58
- golang.org/x/sync v0.0.0-20190911185100-cd5d95a43a6e
- golang.org/x/sync v0.0.0-20201020160332-67f06af15bc9
- golang.org/x/sys v0.0.0-20180830151530-49385e6e1522
- golang.org/x/sys v0.0.0-20180905080454-ebe1bf3edb33
- golang.org/x/sys v0.0.0-20181107165924-66b7b1311ac8
- golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a
- golang.org/x/sys v0.0.0-20190412213103-97732733099d
- golang.org/x/sys v0.0.0-20200930185726-fdedc70b468f
- golang.org/x/text v0.3.0
- golang.org/x/text v0.3.3
- golang.org/x/tools v0.0.0-20180828015842-6cd1fcedba52
- golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e
- golang.org/x/tools v0.0.0-20181030221726-6c7e314b6563
- golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e
- golang.org/x/tools v0.0.0-20200619180055-7c47624df98f
- golang.org/x/tools v0.0.0-20210106214847-113979e3529a
- golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7
- golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898
- golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543
- golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1
- google.golang.org/appengine v1.1.0
- google.golang.org/genproto v0.0.0-20180817151627-c66870c02cf8
- google.golang.org/genproto v0.0.0-20180831171423-11092d34479b
- google.golang.org/genproto v0.0.0-20181109154231-b5d43981345b
- google.golang.org/grpc v1.16.0
- google.golang.org/protobuf v1.26.0-rc.1
- google.golang.org/protobuf v1.26.0
- honnef.co/go/tools v0.0.0-20180728063816-88497007e858