Skip to end of metadata
Go to start of metadata

2017-05-15 - API documentation for v5.12 available.
2017-04-13 - russng v5.12 released on bitbucket.org.

NameRUSS - Run Socket Services
RequirementsC compiler, Python2 (for pyruss module); Linux, OSX, UNIX (AIX, FreeBSD)
LicenseApache v2
LinksRepository, API Docs, Discussion, Email

What Is RUSS?

RUSS is a protocol and framework for building (micro)service-oriented servers using UNIX/Domain sockets which provide:

  • service discoverability via the filesystem
  • OS-mediated, trustworthy credentials
  • passing of descriptors between independent processes

Why RUSS?

With network sockets, the web, and more, what does RUSS offer that makes it interesting? Here are a few things:

  • familiar execution paradigm - services are accessed very much like running a program/function
  • familiar discoverability paradigm - services can be found and listed just like running ls
  • language agnostic - the interface between client and server is the protocol which is based on simple string arguments, communication streams, and an exit value
  • security by separation - servers may run with special privileges and selectively service unprivileged clients; no more setuid issues
  • help is not far away - help/usage information is available directly from the server
  • runs in userspace - no kernel modules needed

For Example

To connect to one of the services of the debug server:

$ ruexec +/debug/chargen
!"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefgh
"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghi
#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghij
^C

Connecting to the debug server on a remote host (buddy):

$ ruexec +/ssh/buddy/+/debug/chargen
!"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefgh
"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghi
#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghij
^C

To list the debug services:

$ ruls +/debug
chargen
conn
daytime
discard
echo
env
exit
request

From Python:

$ python
>>> import pyruss
>>> rv, ev, out, err = pyruss.execv_wait_inouterr_timeout(1000, "+/debug/daytime")
>>> print out
Thursday, February 05, 2015 12:20:51-GMT

Where to Find Out More?

Impatient? Quickstart Setup for RUSS.

Further information for users and developers is available in the Documentation section:

Some basic examples:

The RUSS download contains a number standard servers that provide core functionality and are helpful to demonstrate how to build servers and services.

Project Activity

  • No labels