The ams push server is a component that handles the push functionality for the respective push enabled subscriptions in the argo-messaging-service.
Before you start, you need to issue a valid certificate.
-
Install Golang 1.21
-
Create a new work space:
mkdir ~/go-workspaceexport GOPATH=~/go-workspaceexport PATH=$PATH:$GOPATH/binYou may add the
exportlines into the~/.bashrc,/.zshrcor the~/.bash_profilefile to haveGOPATHenvironment 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/)
The service depends on a configuration file in order to be able to run.This file contains the following information:
{
"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 certificate -
certificate_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 server -
trust_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,ERROR -
skip_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.
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-go -
install the go gRPC package.
go get -u google.golang.org/grpc -
Inside
api/<version>/grpccompile.protoc -I proto/ proto/ams.proto --go_out=plugins=grpc:proto