<?xml version="1.0" encoding="ascii"?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"> <head> <title>flumotion.component.bouncers.ipbouncer.IPBouncer</title> <link rel="stylesheet" href="epydoc.css" type="text/css" /> <script type="text/javascript" src="epydoc.js"></script> </head> <body bgcolor="white" text="black" link="blue" vlink="#204080" alink="#204080"> <!-- ==================== NAVIGATION BAR ==================== --> <table class="navbar" border="0" width="100%" cellpadding="0" bgcolor="#a0c0ff" cellspacing="0"> <tr valign="middle"> <!-- Tree link --> <th> <a href="module-tree.html">Trees</a> </th> <!-- Index link --> <th> <a href="identifier-index.html">Indices</a> </th> <!-- Help link --> <th> <a href="help.html">Help</a> </th> <th class="navbar" width="100%"></th> </tr> </table> <table width="100%" cellpadding="0" cellspacing="0"> <tr valign="top"> <td width="100%"> <span class="breadcrumbs"> Package flumotion :: <a href="flumotion.component-module.html">Package component</a> :: <a href="flumotion.component.bouncers-module.html">Package bouncers</a> :: <a href="flumotion.component.bouncers.ipbouncer-module.html">Module ipbouncer</a> :: Class IPBouncer </span> </td> <td> <table cellpadding="0" cellspacing="0"> <!-- hide/show private --> <tr><td align="right"><span class="options">[<a href="javascript:void(0);" class="privatelink" onclick="toggle_private();">hide private</a>]</span></td></tr> </table> </td> </tr> </table> <!-- ==================== CLASS DESCRIPTION ==================== --> <h1 class="epydoc">Class IPBouncer</h1><p class="nomargin-top"><span class="codelink"><a href="flumotion.component.bouncers.ipbouncer-pysrc.html#IPBouncer">source code</a></span></p> <pre class="base-tree"> object --+ | <a href="flumotion.common.common.InitMixin-class.html">common.common.InitMixin</a> --+ | <a href="flumotion.extern.log.log.Loggable-class.html">extern.log.log.Loggable</a> --+ | <a href="flumotion.component.component.BaseComponent-class.html">component.BaseComponent</a> --+ | <a href="flumotion.component.bouncers.bouncer.Bouncer-class.html">bouncer.Bouncer</a> --+ | <strong class="uidshort">IPBouncer</strong> </pre> <hr /> <!-- ==================== NESTED CLASSES ==================== --> <a name="section-NestedClasses"></a> <table class="summary" border="1" cellpadding="3" cellspacing="0" width="100%" bgcolor="white"> <tr bgcolor="#70b0f0" class="table-header"> <td colspan="2" class="table-header"> <table border="0" cellpadding="0" cellspacing="0" width="100%"> <tr valign="top"> <td align="left"><span class="table-header">Nested Classes</span></td> <td align="right" valign="top" ><span class="options">[<a href="#section-NestedClasses" class="privatelink" onclick="toggle_private();" >hide private</a>]</span></td> </tr> </table> </td> </tr> <tr> <td colspan="2" class="summary"> <p class="indent-wrapped-lines"><b>Inherited from <code><a href="flumotion.component.bouncers.bouncer.Bouncer-class.html">bouncer.Bouncer</a></code></b>: <code><a href="flumotion.component.bouncers.bouncer.BouncerMedium-class.html">componentMediumClass</a></code> </p> </td> </tr> </table> <!-- ==================== INSTANCE METHODS ==================== --> <a name="section-InstanceMethods"></a> <table class="summary" border="1" cellpadding="3" cellspacing="0" width="100%" bgcolor="white"> <tr bgcolor="#70b0f0" class="table-header"> <td colspan="2" class="table-header"> <table border="0" cellpadding="0" cellspacing="0" width="100%"> <tr valign="top"> <td align="left"><span class="table-header">Instance Methods</span></td> <td align="right" valign="top" ><span class="options">[<a href="#section-InstanceMethods" class="privatelink" onclick="toggle_private();" >hide private</a>]</span></td> </tr> </table> </td> </tr> <tr> <td width="15%" align="right" valign="top" class="summary"> <span class="summary-type"> </span> </td><td class="summary"> <table width="100%" cellpadding="0" cellspacing="0" border="0"> <tr> <td><span class="summary-sig"><a href="flumotion.component.bouncers.ipbouncer.IPBouncer-class.html#do_setup" class="summary-sig-name">do_setup</a>(<span class="summary-sig-arg">self</span>)</span><br /> Subclasses can implement me to set up the component before it is started.</td> <td align="right" valign="top"> <span class="codelink"><a href="flumotion.component.bouncers.ipbouncer-pysrc.html#IPBouncer.do_setup">source code</a></span> </td> </tr> </table> </td> </tr> <tr> <td width="15%" align="right" valign="top" class="summary"> <span class="summary-type"> </span> </td><td class="summary"> <table width="100%" cellpadding="0" cellspacing="0" border="0"> <tr> <td><span class="summary-sig"><a href="flumotion.component.bouncers.ipbouncer.IPBouncer-class.html#do_authenticate" class="summary-sig-name">do_authenticate</a>(<span class="summary-sig-arg">self</span>, <span class="summary-sig-arg">keycard</span>)</span><br /> Must be overridden by subclasses.</td> <td align="right" valign="top"> <span class="codelink"><a href="flumotion.component.bouncers.ipbouncer-pysrc.html#IPBouncer.do_authenticate">source code</a></span> </td> </tr> </table> </td> </tr> <tr> <td colspan="2" class="summary"> <p class="indent-wrapped-lines"><b>Inherited from <code><a href="flumotion.component.bouncers.bouncer.Bouncer-class.html">bouncer.Bouncer</a></code></b>: <code><a href="flumotion.component.bouncers.bouncer.Bouncer-class.html#addKeycard">addKeycard</a></code>, <code><a href="flumotion.component.bouncers.bouncer.Bouncer-class.html#authenticate">authenticate</a></code>, <code><a href="flumotion.component.bouncers.bouncer.Bouncer-class.html#do_expireKeycards">do_expireKeycards</a></code>, <code><a href="flumotion.component.bouncers.bouncer.Bouncer-class.html#do_stop">do_stop</a></code>, <code><a href="flumotion.component.bouncers.bouncer.Bouncer-class.html#do_validate">do_validate</a></code>, <code><a href="flumotion.component.bouncers.bouncer.Bouncer-class.html#expireAllKeycards">expireAllKeycards</a></code>, <code><a href="flumotion.component.bouncers.bouncer.Bouncer-class.html#expireKeycardId">expireKeycardId</a></code>, <code><a href="flumotion.component.bouncers.bouncer.Bouncer-class.html#expireKeycardIds">expireKeycardIds</a></code>, <code><a href="flumotion.component.bouncers.bouncer.Bouncer-class.html#generateKeycardId">generateKeycardId</a></code>, <code><a href="flumotion.component.bouncers.bouncer.Bouncer-class.html#getDomain">getDomain</a></code>, <code><a href="flumotion.component.bouncers.bouncer.Bouncer-class.html#getEnabled">getEnabled</a></code>, <code><a href="flumotion.component.bouncers.bouncer.Bouncer-class.html#hasKeycard">hasKeycard</a></code>, <code><a href="flumotion.component.bouncers.bouncer.Bouncer-class.html#init">init</a></code>, <code><a href="flumotion.component.bouncers.bouncer.Bouncer-class.html#keepAlive">keepAlive</a></code>, <code><a href="flumotion.component.bouncers.bouncer.Bouncer-class.html#on_disabled">on_disabled</a></code>, <code><a href="flumotion.component.bouncers.bouncer.Bouncer-class.html#on_enabled">on_enabled</a></code>, <code><a href="flumotion.component.bouncers.bouncer.Bouncer-class.html#on_keycardAdded">on_keycardAdded</a></code>, <code><a href="flumotion.component.bouncers.bouncer.Bouncer-class.html#on_keycardRemoved">on_keycardRemoved</a></code>, <code><a href="flumotion.component.bouncers.bouncer.Bouncer-class.html#removeKeycard">removeKeycard</a></code>, <code><a href="flumotion.component.bouncers.bouncer.Bouncer-class.html#removeKeycardId">removeKeycardId</a></code>, <code><a href="flumotion.component.bouncers.bouncer.Bouncer-class.html#setDomain">setDomain</a></code>, <code><a href="flumotion.component.bouncers.bouncer.Bouncer-class.html#setEnabled">setEnabled</a></code>, <code><a href="flumotion.component.bouncers.bouncer.Bouncer-class.html#typeAllowed">typeAllowed</a></code> </p> <div class="private"> <p class="indent-wrapped-lines"><b>Inherited from <code><a href="flumotion.component.bouncers.bouncer.Bouncer-class.html">bouncer.Bouncer</a></code></b> (private): <code><a href="flumotion.component.bouncers.bouncer.Bouncer-class.html#_addKeycard" onclick="show_private();">_addKeycard</a></code>, <code><a href="flumotion.component.bouncers.bouncer.Bouncer-class.html#_expire" onclick="show_private();">_expire</a></code>, <code><a href="flumotion.component.bouncers.bouncer.Bouncer-class.html#_expireNextKeycardBlock" onclick="show_private();">_expireNextKeycardBlock</a></code> </p></div> <p class="indent-wrapped-lines"><b>Inherited from <code><a href="flumotion.component.component.BaseComponent-class.html">component.BaseComponent</a></code></b>: <code><a href="flumotion.component.component.BaseComponent-class.html#__init__">__init__</a></code>, <code><a href="flumotion.component.component.BaseComponent-class.html#addMessage">addMessage</a></code>, <code><a href="flumotion.component.component.BaseComponent-class.html#adminCallRemote">adminCallRemote</a></code>, <code><a href="flumotion.component.component.BaseComponent-class.html#check_properties">check_properties</a></code>, <code><a href="flumotion.component.component.BaseComponent-class.html#do_check">do_check</a></code>, <code><a href="flumotion.component.component.BaseComponent-class.html#fixRenamedProperties">fixRenamedProperties</a></code>, <code><a href="flumotion.component.component.BaseComponent-class.html#getMood">getMood</a></code>, <code><a href="flumotion.component.component.BaseComponent-class.html#getName">getName</a></code>, <code><a href="flumotion.component.component.BaseComponent-class.html#getWorkerName">getWorkerName</a></code>, <code><a href="flumotion.component.component.BaseComponent-class.html#setMedium">setMedium</a></code>, <code><a href="flumotion.component.component.BaseComponent-class.html#setMood">setMood</a></code>, <code><a href="flumotion.component.component.BaseComponent-class.html#setShutdownHook">setShutdownHook</a></code>, <code><a href="flumotion.component.component.BaseComponent-class.html#setWorkerName">setWorkerName</a></code>, <code><a href="flumotion.component.component.BaseComponent-class.html#setup">setup</a></code>, <code><a href="flumotion.component.component.BaseComponent-class.html#setup_completed">setup_completed</a></code>, <code><a href="flumotion.component.component.BaseComponent-class.html#stop">stop</a></code>, <code><a href="flumotion.component.component.BaseComponent-class.html#waitForHappy">waitForHappy</a></code> </p> <div class="private"> <p class="indent-wrapped-lines"><b>Inherited from <code><a href="flumotion.component.component.BaseComponent-class.html">component.BaseComponent</a></code></b> (private): <code><a href="flumotion.component.component.BaseComponent-class.html#_pollCPU" onclick="show_private();">_pollCPU</a></code>, <code><a href="flumotion.component.component.BaseComponent-class.html#_pollMemory" onclick="show_private();">_pollMemory</a></code> </p></div> <p class="indent-wrapped-lines"><b>Inherited from <code>object</code></b>: <code>__delattr__</code>, <code>__format__</code>, <code>__getattribute__</code>, <code>__hash__</code>, <code>__new__</code>, <code>__reduce__</code>, <code>__reduce_ex__</code>, <code>__repr__</code>, <code>__setattr__</code>, <code>__sizeof__</code>, <code>__str__</code>, <code>__subclasshook__</code> </p> <p class="indent-wrapped-lines"><b>Inherited from <code><a href="flumotion.extern.log.log.Loggable-class.html">extern.log.log.Loggable</a></code></b>: <code><a href="flumotion.extern.log.log.Loggable-class.html#debug">debug</a></code>, <code><a href="flumotion.extern.log.log.Loggable-class.html#doLog">doLog</a></code>, <code><a href="flumotion.extern.log.log.Loggable-class.html#error">error</a></code>, <code><a href="flumotion.extern.log.log.Loggable-class.html#info">info</a></code>, <code><a href="flumotion.extern.log.log.Loggable-class.html#log">log</a></code>, <code><a href="flumotion.extern.log.log.Loggable-class.html#logFunction">logFunction</a></code>, <code><a href="flumotion.extern.log.log.Loggable-class.html#logObjectName">logObjectName</a></code>, <code><a href="flumotion.extern.log.log.Loggable-class.html#warning">warning</a></code>, <code><a href="flumotion.extern.log.log.Loggable-class.html#warningFailure">warningFailure</a></code>, <code><a href="flumotion.extern.log.log.Loggable-class.html#writeMarker">writeMarker</a></code> </p> </td> </tr> </table> <!-- ==================== CLASS VARIABLES ==================== --> <a name="section-ClassVariables"></a> <table class="summary" border="1" cellpadding="3" cellspacing="0" width="100%" bgcolor="white"> <tr bgcolor="#70b0f0" class="table-header"> <td colspan="2" class="table-header"> <table border="0" cellpadding="0" cellspacing="0" width="100%"> <tr valign="top"> <td align="left"><span class="table-header">Class Variables</span></td> <td align="right" valign="top" ><span class="options">[<a href="#section-ClassVariables" class="privatelink" onclick="toggle_private();" >hide private</a>]</span></td> </tr> </table> </td> </tr> <tr> <td width="15%" align="right" valign="top" class="summary"> <span class="summary-type"> </span> </td><td class="summary"> <a name="logCategory"></a><span class="summary-name">logCategory</span> = <code title="'ip-bouncer'"><code class="variable-quote">'</code><code class="variable-string">ip-bouncer</code><code class="variable-quote">'</code></code><br /> Implementors can provide a category to log their messages under. </td> </tr> <tr> <td width="15%" align="right" valign="top" class="summary"> <span class="summary-type">tuple of <a href="flumotion.common.keycards.Keycard-class.html" class="link">flumotion.common.keycards.Keycard</a> class objects</span> </td><td class="summary"> <a name="keycardClasses"></a><span class="summary-name">keycardClasses</span> = <code title="keycards.KeycardUACPCC, keycards.KeycardUACPP">keycards.KeycardUACPCC, keycards.KeycardUACPP</code><br /> tuple of all classes of keycards this bouncer can authenticate, in order of preference </td> </tr> <tr> <td colspan="2" class="summary"> <p class="indent-wrapped-lines"><b>Inherited from <code><a href="flumotion.component.bouncers.bouncer.Bouncer-class.html">bouncer.Bouncer</a></code></b>: <code><a href="flumotion.component.bouncers.bouncer.Bouncer-class.html#KEYCARD_EXPIRE_INTERVAL">KEYCARD_EXPIRE_INTERVAL</a></code> </p> </td> </tr> </table> <!-- ==================== INSTANCE VARIABLES ==================== --> <a name="section-InstanceVariables"></a> <table class="summary" border="1" cellpadding="3" cellspacing="0" width="100%" bgcolor="white"> <tr bgcolor="#70b0f0" class="table-header"> <td colspan="2" class="table-header"> <table border="0" cellpadding="0" cellspacing="0" width="100%"> <tr valign="top"> <td align="left"><span class="table-header">Instance Variables</span></td> <td align="right" valign="top" ><span class="options">[<a href="#section-InstanceVariables" class="privatelink" onclick="toggle_private();" >hide private</a>]</span></td> </tr> </table> </td> </tr> <tr> <td colspan="2" class="summary"> <p class="indent-wrapped-lines"><b>Inherited from <code><a href="flumotion.component.component.BaseComponent-class.html">component.BaseComponent</a></code></b>: <code><a href="flumotion.component.component.BaseComponent-class.html#medium">medium</a></code>, <code><a href="flumotion.component.component.BaseComponent-class.html#name">name</a></code>, <code><a href="flumotion.component.component.BaseComponent-class.html#uiState">uiState</a></code> </p> </td> </tr> </table> <!-- ==================== PROPERTIES ==================== --> <a name="section-Properties"></a> <table class="summary" border="1" cellpadding="3" cellspacing="0" width="100%" bgcolor="white"> <tr bgcolor="#70b0f0" class="table-header"> <td colspan="2" class="table-header"> <table border="0" cellpadding="0" cellspacing="0" width="100%"> <tr valign="top"> <td align="left"><span class="table-header">Properties</span></td> <td align="right" valign="top" ><span class="options">[<a href="#section-Properties" class="privatelink" onclick="toggle_private();" >hide private</a>]</span></td> </tr> </table> </td> </tr> <tr> <td colspan="2" class="summary"> <p class="indent-wrapped-lines"><b>Inherited from <code>object</code></b>: <code>__class__</code> </p> </td> </tr> </table> <!-- ==================== METHOD DETAILS ==================== --> <a name="section-MethodDetails"></a> <table class="details" border="1" cellpadding="3" cellspacing="0" width="100%" bgcolor="white"> <tr bgcolor="#70b0f0" class="table-header"> <td colspan="2" class="table-header"> <table border="0" cellpadding="0" cellspacing="0" width="100%"> <tr valign="top"> <td align="left"><span class="table-header">Method Details</span></td> <td align="right" valign="top" ><span class="options">[<a href="#section-MethodDetails" class="privatelink" onclick="toggle_private();" >hide private</a>]</span></td> </tr> </table> </td> </tr> </table> <a name="do_setup"></a> <div> <table class="details" border="1" cellpadding="3" cellspacing="0" width="100%" bgcolor="white"> <tr><td> <table width="100%" cellpadding="0" cellspacing="0" border="0"> <tr valign="top"><td> <h3 class="epydoc"><span class="sig"><span class="sig-name">do_setup</span>(<span class="sig-arg">self</span>)</span> </h3> </td><td align="right" valign="top" ><span class="codelink"><a href="flumotion.component.bouncers.ipbouncer-pysrc.html#IPBouncer.do_setup">source code</a></span> </td> </tr></table> <p>Subclasses can implement me to set up the component before it is started. It should set up the component, possibly opening files and resources. Non-programming errors should not be raised, but returned as a failing deferred.</p> <p>The return value may be a deferred.</p> <dl class="fields"> <dt>Overrides: <a href="flumotion.component.component.BaseComponent-class.html#do_setup">component.BaseComponent.do_setup</a> <dd><em class="note">(inherited documentation)</em></dd> </dt> </dl> </td></tr></table> </div> <a name="do_authenticate"></a> <div> <table class="details" border="1" cellpadding="3" cellspacing="0" width="100%" bgcolor="white"> <tr><td> <table width="100%" cellpadding="0" cellspacing="0" border="0"> <tr valign="top"><td> <h3 class="epydoc"><span class="sig"><span class="sig-name">do_authenticate</span>(<span class="sig-arg">self</span>, <span class="sig-arg">keycard</span>)</span> </h3> </td><td align="right" valign="top" ><span class="codelink"><a href="flumotion.component.bouncers.ipbouncer-pysrc.html#IPBouncer.do_authenticate">source code</a></span> </td> </tr></table> <p>Must be overridden by subclasses.</p> <p>Authenticate the given keycard. Return the keycard with state AUTHENTICATED to authenticate, with state REQUESTING to continue the authentication process, or REFUSED to deny the keycard or a deferred which should have the same eventual value.</p> <p>FIXME: Currently, a return value of 'None' is treated as rejecting the keycard. This is unintuitive.</p> <p>FIXME: in fact, for authentication sessions like challenge/response, returning a keycard with state REFUSED instead of None will not work properly and may enter in an asynchronous infinit loop.</p> <dl class="fields"> <dt>Overrides: <a href="flumotion.component.bouncers.bouncer.Bouncer-class.html#do_authenticate">bouncer.Bouncer.do_authenticate</a> <dd><em class="note">(inherited documentation)</em></dd> </dt> </dl> </td></tr></table> </div> <br /> <!-- ==================== NAVIGATION BAR ==================== --> <table class="navbar" border="0" width="100%" cellpadding="0" bgcolor="#a0c0ff" cellspacing="0"> <tr valign="middle"> <!-- Tree link --> <th> <a href="module-tree.html">Trees</a> </th> <!-- Index link --> <th> <a href="identifier-index.html">Indices</a> </th> <!-- Help link --> <th> <a href="help.html">Help</a> </th> <th class="navbar" width="100%"></th> </tr> </table> <table border="0" cellpadding="0" cellspacing="0" width="100%%"> <tr> <td align="left" class="footer"> Generated by Epydoc 3.0.1 on Sun Sep 13 13:14:06 2009 </td> <td align="right" class="footer"> <a target="mainFrame" href="http://epydoc.sourceforge.net" >http://epydoc.sourceforge.net</a> </td> </tr> </table> <script type="text/javascript"> <!-- // Private objects are initially displayed (because if // javascript is turned off then we want them to be // visible); but by default, we want to hide them. So hide // them unless we have a cookie that says to show them. checkCookie(); // --> </script> </body> </html>