1.0.1 • Published 9 years ago

zerosap v1.0.1

Weekly downloads
4
License
ISC
Repository
github
Last release
9 years ago

zerosap

Library to call SAP pyRFC from NodeJs

Dispatcher API

Using this module, NodeJS can dispatch RFC calls to a SAP backend system.

More API Documentation coming soon. Meanwhile, look at app.js .

Worker

Zerosap uses the official SAP pyRFC python library, and wraps it as the "Zerosap Worker".
As a first-class library fully supported by SAP, pyRFC ensures that Zerosap has great stability and full capabilities (e.g. RFC server scenario).

We support two ways of running this worker:

A. Embedded into NodeJs

  • NodeJs automatically manages the Python worker process via a zerorpc bridge.
  • This scenario is great for getting started.

B. Remote Daemon

  • A "Zerosap Worker" runs as a daemon on a Python-capable host within the internal network/LAN.
  • The host can be the UNIX/Windows server that also hosts SAP Netweaver itself (or another host that have access to the RFC Ports of the target SAP system).

  • The Worker connects back to the NodeJS Dispatcher to receive instructions via a secure zerorpc channel.

  • Multiple Worker instances enable NodeJS to act as a reverse proxy and load balancer, as RFC requests are fanned out from NodeJS to multiple target SAP backend systems.
  • Elliptic-curve cryptography is used.
  • This scenario is great where security and performance is paramount.

Dependencies

  • libzmq.so >= 4.0.5 (with libsodium support)
  • zerorpc >= 0.4.4
  • pyrfc >= 1.9.4
  • daemonize >= 2.3.1

Installation

ZeroRPC Installation

Libsodium
	wget https://github.com/jedisct1/libsodium/releases/download/1.0.1/libsodium-1.0.1.tar.gz
	dig +dnssec +short txt libsodium-1.0.1.tar.gz.download.libsodium.org
	cat libsodium-1.0.1.tar.gz | openssl dgst -sha256  # If the output is not the same as from the previous command, abort as the downloaded file has been tampered with.
	tar -xvf libsodium-1.0.1.tar.gz
	cd libsodium-1.0.1
	./configure
	make && make check  # Ensure all tests pass.
	sudo make install
	ls /usr/local/lib/
ZeroMQ
	wget http://download.zeromq.org/zeromq-4.0.5.tar.gz
	tar -xvf zeromq-4.0.5.tar.gz
	cd zeromq-4.0.5
	sudo yum install gcc-c++
	./configure
	make && make check  # Ensure all tests pass.
	sudo make install
	ls /usr/local/lib/
ZeroRPC for Python
  • ZeroRPC cannot be installed directly via pip / easy_install due to pyzmq that is pinned to an outdated version (version 14.1.1 & above has solved the issue).
  • These instructions will install directly from their GitHub master (for libsodium cryptographic support):
	wget https://github.com/dotcloud/zerorpc-python/archive/master.zip
	unzip master.zip
	cd zerorpc-python-master/
	nano setup.py   # Change to pyzmq>=14.1.1
	PKG_CONFIG_PATH=/usr/local/lib/pkgconfig python setup.py install

pyRFC Installation

  • Installing pyrfc requires the SAP NW RFC SDK that is distributed on the SAP Support Portal.
  • Further instructions here.
  • Downloads
	wget https://raw.githubusercontent.com/SAP/PyRFC/master/dist/pyrfc-1.9.4-py2.7-linux-x86_64.egg
	easy_install pyrfc-1.9.4-py2.7-linux-x86_64.egg

Daemonize Instalation

  • The easiest to install.
	pip install daemonize

Configuration

The zerosap worker reads environmental variables for configuration:

start.sh

	#!/bin/bash
	DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
	cd "${DIR}"

	# source /opt/rh/python27/enable
	PARAMS=$@ scl enable python27 - << \EOF

	source bin/activate

	export USER=zerosap
	export GROUP=zerosap 
	export ZEROSAP_ZMQ_HUB=tcp://<ipaddress of nodejs zerosap-dispatcher>:4801

	cd zerosap/
	ZEROSAP_RFC_CLIENT=100 ZEROSAP_RFC_USER=<username> ZEROSAP_RFC_PASSWD=<password> python bin/zerosap.py ${PARAMS}

	EOF

Startup

  • Starting the zerosap worker daemon is simple:
	sudo useradd -r zerosap
	sudo usermod -a -G zerosap prdadm
	
	chmod +x /usr/sap/PythonVE/py27-pyrfc/start.sh
	sudo /usr/sap/PythonVE/py27-pyrfc/start.sh
	tail -f /tmp/zerosap.log