Skip to end of metadata
Go to start of metadata

What Is RUSS?

RUSS is a protocol and framework built to enable a services namespace that is as easy and familiar to work with as running a program.

RUSS (Run Socket Services) uses the features of UNIX/Domain sockets:

  • 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 called and work just 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 - it is built into 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.dialv_wait_inouterr(pyruss.to_deadline(1000), "execute", "+/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.

  • No labels