Qworum Enterprise specification, version 1.0

Table of contents
  1. Introduction
    1. Purpose
    2. Requirements
  2. Concept
  3. Protocol
  4. Implementations
  5. Appendices
    1. References
    2. Revision history
    3. Copyright and disclaimer

1. Introduction

1.1. Purpose

The use of Qworum in private networks requires a valid Enterprise license. The present specification describes the use cases that are covered by the license, and how user agents verify the validity of the license.

1.2. Requirements

The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this document are to be interpreted as described in RFC 2119 [Keywords].

2. Concept

A valid Enterprise license is required for calls (using the call statement) and redirections (using the goto statement) to Qworum services that are hosted inside a private network [IPaddress], except for direct calls by RPC clients which are always allowed. Localhost-to-localhost [Loopback] calls also do not require an Enterprise license.

Service calls that are covered by Enterprise licenses

If a call is forbidden according to these rules, then user agents MUST raise an authorization fault instead of performing the call.

3. Protocol

In order to check the license status of the private network in which it is located, a user agent MUST send a POST request to the Enterprise License Validation Service at http://user-agent.qworum.com/mediator/enterprise. It then receives a response with the status code 200. The content type of both the request body and the response body is application/xml.

For example, a user agent might send the following request body to the Enterprise License Validation Service:

<message>
  <head>
    <!--
    The user-agent element identifies the Qworum implementation,  
    which may be a web browser, a web browser add-on, etc. 
    -->
    <user-agent>firefox@qworum.com</user-agent>
  </head>
</message>

If the private network from which the user agent is sending the request has a valid Enterprise license, then the Enterprise License Validation Service might send back a message such as the following in its response:

<message>
  <head>
    <address>208.77.188.164</address>
  </head>
  <body> 
    <!-- Valid license -->
    <intranet cidr='208.77.188.166/29'>
      <expires>2012.12.31</expires>
    </intranet>
  </body>
</message>

The address element contains the user agent's current IP address, as seen by the Enterprise License Validation Service. The private network associated to the Enterprise license is identified by its IP address block in CIDR notation [CIDR].

If the private network from which the user agent is sending the request does not have a valid Enterprise license, then there are two possibilities.

If the Enterprise License Validation Service has a private network that matches the user agent's current IP address in its database, but the private network does not have a valid Enterprise license, then the service might send a message such as the following in its response:

<message>
  <head>
    <address>208.77.188.164</address>
  </head>
  <body> 
    <!-- Expired license -->
    <intranet cidr='208.77.188.166/29'>
      <expires>none</expires>
    </intranet>
  </body>
</message>

Finally, if the Enterprise License Validation Service does not have a private network that matches the user agent's current IP address in its database, then it might send a message such as the following in its response:

<message>
  <head>
    <address>208.77.188.164</address>
  </head>
  <!-- Unknown private network  -->
</message>

In this case, the user agent MUST assume that the private network has only one internet IP address assigned to it (as indicated by the address element), and that it does not have a valid Enterprise license.

4. Implementations

User agents which implement the present version of the Qworum Enterprise specification MUST NOT implement any other system wherein the right to call Qworum services hosted in private networks can be purchased.

5. Appendices

5.1. References

[XML] Tim Bray, Jean Paoli, C. M. Sperberg-McQueen, Eve Maler, Fran├žois Yergeau, Extensible Markup Language (XML), W3C Recommendation
[Keywords] Bradner, B., Key words for use in RFCs to Indicate Requirement Levels, RFC 2119
[IPaddress] IP address
[Loopback] Loopback IP address
[CIDR] V. Fuller, T. Li, Classless Inter-domain Routing (CIDR): The Internet Address Assignment and Aggregation Plan, RFC 4632

5.2. Revision history

2011.10.25 Changed Enterprise License Validation Service host to user-agent.qworum.com.
2011.09.11 Added support for RPC clients.
2010.10.25 Message format changed (private networks are now identified by their IP address block, contract identifiers are no longer used).
2010.05.03 First draft.

5.3. Copyright and disclaimer

© Copyright 2010 Doğa Armangil. All Rights Reserved.

This document and translations of it may be copied and furnished to others, and derivative works that comment on or otherwise explain it or assist in its implementation may be prepared, copied, published and distributed, in whole or in part, without restriction of any kind, provided that the above copyright notice and these paragraphs are included on all such copies and derivative works. This document may not be modified in any way, such as by removing the copyright notice or references to Doğa Armangil or other organizations.

Any party may implement software that gives user agents the ability to send requests to the Enterprise license validation service, without royalty or license fee to Doğa Armangil.

THIS DOCUMENT AND THE INFORMATION CONTAINED HEREIN IS PROVIDED "AS IS", AND DOĞA ARMANGIL DISCLAIMS ALL WARRANTIES, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTY THAT THE USE OF THE INFORMATION HEREIN WILL NOT INFRINGE ANY RIGHTS OR ANY IMPLIED WARRANTIES OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. FURTHER, DOĞA ARMANGIL WILL NOT BE LIABLE FOR ANY DIRECT, INDIRECT, SPECIAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF ANY USE OF THIS DOCUMENT.