pyrad 0.4 - native python RADIUS implementation
Wichert Akkerman
wichert@wiggy.net
Sun, 12 Jan 2003 14:18:48 +0100
pyrad is an implementation of a RADIUS client and server as described in
RFC2865, 2866, and others. It takes care of all the details like
building RADIUS packets, sending and receiving them, and en-/decoding
responses. (RADIUS is a common protocol used for authentication,
authorisation and accounting for remote access (and similar) services).
This release adds new features and introduces an API change: a RADIUS
server implementation was added, as well as the basis of a proxy server.
Changes since previous release
------------------------------
* Fix last case of bogus exception usage
* Move RADIUS code constants to packet module
* Add support for decoding passwords and
* generating reply packets to Packet class
* Add basic RADIUS server and proxy implementation
Example
-------
Here is an example of a client doing authentication request:
import pyrad.packet
from pyrad.client import Client
from pyrad.dictionary import Dictionary
srv=Client(server="radius.my.domain", secret="s3cr3t",
dict=Dictionary("dicts/dictionary", "dictionary.acc"))
req=srv.CreatePacket(code=pyrad.packet.AccessRequest,
User_Name="wichert", NAS_Identifier="localhost")
req["User-Password"]=req.PwCrypt("password")
reply=srv.SendPacket(req)
if reply.code==pyrad.packet.AccessAccept:
print "access accepted"
else:
print "access denied"
print "Attributes returned by server:"
for i in reply.keys():
print "%s: %s" % (i, reply[i])
And an example for a trivial RADIUS server:
from pyrad import dictionary, packet, server
class FakeServer(server.Server):
def _HandleAuthPacket(self, fd, pkt):
server.Server._HandleAuthPacket(self, fd, pkt)
reply=self.CreateReplyPacket(pkt)
reply.code=packet.AccessAccept
self.SendReplyPacket(fd, reply)
srv=FakeServer(dict=dictionary.Dictionary("dictionary"))
srv.hosts["127.0.0.1"]=server.RemoteHost("127.0.0.1", "s3cr3t", "localhost")
srv.BindToAddress("")
srv.Run()
Requirements
------------
pyrad requires Python 2.0 or later.
Author, copyright, availability
-------------------------------
pyrad was written by Wichert Akkerman <wichert@deephackmode.org>
The current version and documentation can be found at its homepage:
http://www.wiggy.net/code/pyrad.xhtml
Copyright 2002,2003 Wichert Akkerman. All rights reserved.
pyrad is distributed under the BSD license. Please see the source
archive for the full license text.
--
Wichert Akkerman <wichert@wiggy.net> http://www.wiggy.net/
A random hacker