pyrad 2.4__py3-none-any.whl → 2.5.1__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (51) hide show
  1. docs/Makefile +20 -0
  2. docs/make.bat +36 -0
  3. docs/source/_static/logo.png +0 -0
  4. docs/source/api/client.rst +10 -0
  5. docs/source/api/dictionary.rst +10 -0
  6. docs/source/api/host.rst +7 -0
  7. docs/source/api/packet.rst +48 -0
  8. docs/source/api/proxy.rst +7 -0
  9. docs/source/api/server.rst +13 -0
  10. docs/source/conf.py +158 -0
  11. docs/source/index.rst +75 -0
  12. example/acct.py +41 -0
  13. example/auth.py +37 -0
  14. example/auth_async.py +164 -0
  15. example/client-coa.py +61 -0
  16. example/coa.py +40 -0
  17. example/dictionary +405 -0
  18. example/dictionary.freeradius +91 -0
  19. example/pyrad.log +0 -0
  20. example/server.py +68 -0
  21. example/server_async.py +117 -0
  22. example/status.py +26 -0
  23. pyrad/__init__.py +3 -3
  24. pyrad/client.py +14 -6
  25. pyrad/client_async.py +16 -13
  26. pyrad/dictfile.py +2 -5
  27. pyrad/dictionary.py +6 -7
  28. pyrad/host.py +1 -1
  29. pyrad/packet.py +145 -114
  30. pyrad/proxy.py +2 -2
  31. pyrad/server.py +3 -7
  32. pyrad/server_async.py +3 -4
  33. pyrad/tests/__init__.py +5 -0
  34. pyrad/tests/mock.py +145 -0
  35. pyrad/tests/test_bidict.py +56 -0
  36. pyrad/tests/test_client.py +183 -0
  37. pyrad/tests/test_dictionary.py +357 -0
  38. pyrad/tests/test_host.py +87 -0
  39. pyrad/tests/test_packet.py +679 -0
  40. pyrad/tests/test_proxy.py +96 -0
  41. pyrad/tests/test_server.py +323 -0
  42. pyrad/tests/test_tools.py +126 -0
  43. pyrad/tools.py +254 -158
  44. {pyrad-2.4.dist-info → pyrad-2.5.1.dist-info}/METADATA +45 -22
  45. pyrad-2.5.1.dist-info/RECORD +51 -0
  46. {pyrad-2.4.dist-info → pyrad-2.5.1.dist-info}/WHEEL +1 -1
  47. {pyrad-2.4.dist-info → pyrad-2.5.1.dist-info/licenses}/LICENSE.txt +1 -1
  48. pyrad-2.5.1.dist-info/top_level.txt +3 -0
  49. pyrad-2.4.dist-info/RECORD +0 -19
  50. pyrad-2.4.dist-info/top_level.txt +0 -1
  51. {pyrad-2.4.dist-info → pyrad-2.5.1.dist-info}/zip-safe +0 -0
example/client-coa.py ADDED
@@ -0,0 +1,61 @@
1
+ #!/usr/bin/python
2
+ #
3
+ # Copyright 6WIND, 2017
4
+ #
5
+
6
+ from pyrad import dictionary, packet, server
7
+ import sys
8
+ import prctl
9
+
10
+ class FakeCoA(server.Server):
11
+
12
+ def HandleCoaPacket(self, pkt):
13
+ """Accounting packet handler.
14
+ Function that is called when a valid
15
+ accounting packet has been received.
16
+
17
+ :param pkt: packet to process
18
+ :type pkt: Packet class instance
19
+ """
20
+ print("Received a coa request %d" % pkt.code)
21
+ print(" Attributes: ")
22
+ for attr in pkt.keys():
23
+ print(" %s: %s" % (attr, pkt[attr]))
24
+
25
+ reply = self.CreateReplyPacket(pkt)
26
+ # try ACK or NACK
27
+ # reply.code = packet.CoANAK
28
+ reply.code = packet.CoAACK
29
+ self.SendReplyPacket(pkt.fd, reply)
30
+
31
+ def HandleDisconnectPacket(self, pkt):
32
+ print("Received a disconnect request %d" % pkt.code)
33
+ print(" Attributes: ")
34
+ for attr in pkt.keys():
35
+ print(" %s: %s" % (attr, pkt[attr]))
36
+
37
+ reply = self.CreateReplyPacket(pkt)
38
+ # try ACK or NACK
39
+ # reply.code = packet.DisconnectNAK
40
+ reply.code = packet.DisconnectACK
41
+ self.SendReplyPacket(pkt.fd, reply)
42
+
43
+ if __name__ == '__main__':
44
+
45
+ prctl.set_name('radius-FakeCoA-client')
46
+
47
+ if len(sys.argv) != 2:
48
+ print ("usage: client-coa.py 3799")
49
+ sys.exit(1)
50
+
51
+ bindport=int(sys.argv[1])
52
+
53
+ # create server/coa only and read dictionary
54
+ # bind and listen only on 127.0.0.1:argv[1]
55
+ coa = FakeCoA(addresses=["127.0.0.1"], dict=dictionary.Dictionary("dictionary"), coaport=bindport, auth_enabled=False, acct_enabled=False, coa_enabled=True)
56
+
57
+ # add peers (address, secret, name)
58
+ coa.hosts["127.0.0.1"] = server.RemoteHost("127.0.0.1", b"Kah3choteereethiejeimaeziecumi", "localhost")
59
+
60
+ # start
61
+ coa.Run()
example/coa.py ADDED
@@ -0,0 +1,40 @@
1
+ #!/usr/bin/python
2
+ from pyrad.client import Client
3
+ from pyrad import dictionary
4
+ from pyrad import packet
5
+ import sys
6
+
7
+ if len(sys.argv) != 3:
8
+ print ("usage: coa.py {coa|dis} daemon-1234")
9
+ sys.exit(1)
10
+
11
+ ADDRESS = "127.0.0.1"
12
+ SECRET = b"Kah3choteereethiejeimaeziecumi"
13
+ ATTRIBUTES = {
14
+ "Acct-Session-Id": "1337"
15
+ }
16
+
17
+ ATTRIBUTES["NAS-Identifier"] = sys.argv[2]
18
+
19
+ # create coa client
20
+ client = Client(server=ADDRESS, secret=SECRET, dict=dictionary.Dictionary("dictionary"))
21
+
22
+ # set coa timeout
23
+ client.timeout = 30
24
+
25
+ # create coa request packet
26
+ attributes = {k.replace("-", "_"): ATTRIBUTES[k] for k in ATTRIBUTES}
27
+
28
+ if sys.argv[1] == "coa":
29
+ # create coa request
30
+ request = client.CreateCoAPacket(**attributes)
31
+ elif sys.argv[1] == "dis":
32
+ # create disconnect request
33
+ request = client.CreateCoAPacket(code=packet.DisconnectRequest, **attributes)
34
+ else:
35
+ sys.exit(1)
36
+
37
+ # send request
38
+ result = client.SendPacket(request)
39
+ print(result)
40
+ print(result.code)
example/dictionary ADDED
@@ -0,0 +1,405 @@
1
+ #
2
+ # Version $Id: dictionary,v 1.1.1.1 2002/10/11 12:25:39 wichert Exp $
3
+ #
4
+ # This file contains dictionary translations for parsing
5
+ # requests and generating responses. All transactions are
6
+ # composed of Attribute/Value Pairs. The value of each attribute
7
+ # is specified as one of 4 data types. Valid data types are:
8
+ #
9
+ # string - 0-253 octets
10
+ # ipaddr - 4 octets in network byte order
11
+ # integer - 32 bit value in big endian order (high byte first)
12
+ # date - 32 bit value in big endian order - seconds since
13
+ # 00:00:00 GMT, Jan. 1, 1970
14
+ #
15
+ # FreeRADIUS includes extended data types which are not defined
16
+ # in RFC 2865 or RFC 2866. These data types are:
17
+ #
18
+ # abinary - Ascend's binary filter format.
19
+ # octets - raw octets, printed and input as hex strings.
20
+ # e.g.: 0x123456789abcdef
21
+ #
22
+ #
23
+ # Enumerated values are stored in the user file with dictionary
24
+ # VALUE translations for easy administration.
25
+ #
26
+ # Example:
27
+ #
28
+ # ATTRIBUTE VALUE
29
+ # --------------- -----
30
+ # Framed-Protocol = PPP
31
+ # 7 = 1 (integer encoding)
32
+ #
33
+
34
+ #
35
+ # Include compatibility dictionary for older users file. Move this
36
+ # directive to the end of the file if you want to see the old names
37
+ # in the logfiles too.
38
+ #
39
+ #$INCLUDE dictionary.compat # compability issues
40
+ #$INCLUDE dictionary.acc
41
+ #$INCLUDE dictionary.ascend
42
+ #$INCLUDE dictionary.bay
43
+ #$INCLUDE dictionary.cisco
44
+ #$INCLUDE dictionary.livingston
45
+ #$INCLUDE dictionary.microsoft
46
+ #$INCLUDE dictionary.quintum
47
+ #$INCLUDE dictionary.redback
48
+ #$INCLUDE dictionary.shasta
49
+ #$INCLUDE dictionary.shiva
50
+ #$INCLUDE dictionary.tunnel
51
+ #$INCLUDE dictionary.usr
52
+ #$INCLUDE dictionary.versanet
53
+ #$INCLUDE dictionary.erx
54
+ $INCLUDE dictionary.freeradius
55
+ #$INCLUDE dictionary.alcatel
56
+
57
+ #
58
+ # Following are the proper new names. Use these.
59
+ #
60
+ ATTRIBUTE User-Name 1 string
61
+ ATTRIBUTE User-Password 2 string
62
+ ATTRIBUTE CHAP-Password 3 octets
63
+ ATTRIBUTE NAS-IP-Address 4 ipaddr
64
+ ATTRIBUTE NAS-Port 5 integer
65
+ ATTRIBUTE Service-Type 6 integer
66
+ ATTRIBUTE Framed-Protocol 7 integer
67
+ ATTRIBUTE Framed-IP-Address 8 ipaddr
68
+ ATTRIBUTE Framed-IP-Netmask 9 ipaddr
69
+ ATTRIBUTE Framed-Routing 10 integer
70
+ ATTRIBUTE Filter-Id 11 string
71
+ ATTRIBUTE Framed-MTU 12 integer
72
+ ATTRIBUTE Framed-Compression 13 integer
73
+ ATTRIBUTE Login-IP-Host 14 ipaddr
74
+ ATTRIBUTE Login-Service 15 integer
75
+ ATTRIBUTE Login-TCP-Port 16 integer
76
+ ATTRIBUTE Reply-Message 18 string
77
+ ATTRIBUTE Callback-Number 19 string
78
+ ATTRIBUTE Callback-Id 20 string
79
+ ATTRIBUTE Framed-Route 22 string
80
+ ATTRIBUTE Framed-IPX-Network 23 ipaddr
81
+ ATTRIBUTE State 24 octets
82
+ ATTRIBUTE Class 25 octets
83
+ ATTRIBUTE Vendor-Specific 26 octets
84
+ ATTRIBUTE Session-Timeout 27 integer
85
+ ATTRIBUTE Idle-Timeout 28 integer
86
+ ATTRIBUTE Termination-Action 29 integer
87
+ ATTRIBUTE Called-Station-Id 30 string
88
+ ATTRIBUTE Calling-Station-Id 31 string
89
+ ATTRIBUTE NAS-Identifier 32 string
90
+ ATTRIBUTE Proxy-State 33 octets
91
+ ATTRIBUTE Login-LAT-Service 34 string
92
+ ATTRIBUTE Login-LAT-Node 35 string
93
+ ATTRIBUTE Login-LAT-Group 36 octets
94
+ ATTRIBUTE Framed-AppleTalk-Link 37 integer
95
+ ATTRIBUTE Framed-AppleTalk-Network 38 integer
96
+ ATTRIBUTE Framed-AppleTalk-Zone 39 string
97
+
98
+ ATTRIBUTE Acct-Status-Type 40 integer
99
+ ATTRIBUTE Acct-Delay-Time 41 integer
100
+ ATTRIBUTE Acct-Input-Octets 42 integer
101
+ ATTRIBUTE Acct-Output-Octets 43 integer
102
+ ATTRIBUTE Acct-Session-Id 44 string
103
+ ATTRIBUTE Acct-Authentic 45 integer
104
+ ATTRIBUTE Acct-Session-Time 46 integer
105
+ ATTRIBUTE Acct-Input-Packets 47 integer
106
+ ATTRIBUTE Acct-Output-Packets 48 integer
107
+ ATTRIBUTE Acct-Terminate-Cause 49 integer
108
+ ATTRIBUTE Acct-Multi-Session-Id 50 string
109
+ ATTRIBUTE Acct-Link-Count 51 integer
110
+ ATTRIBUTE Acct-Input-Gigawords 52 integer
111
+ ATTRIBUTE Acct-Output-Gigawords 53 integer
112
+ ATTRIBUTE Event-Timestamp 55 date
113
+
114
+ ATTRIBUTE CHAP-Challenge 60 string
115
+ ATTRIBUTE NAS-Port-Type 61 integer
116
+ ATTRIBUTE Port-Limit 62 integer
117
+ ATTRIBUTE Login-LAT-Port 63 integer
118
+
119
+ ATTRIBUTE Acct-Tunnel-Connection 68 string
120
+
121
+ ATTRIBUTE ARAP-Password 70 string
122
+ ATTRIBUTE ARAP-Features 71 string
123
+ ATTRIBUTE ARAP-Zone-Access 72 integer
124
+ ATTRIBUTE ARAP-Security 73 integer
125
+ ATTRIBUTE ARAP-Security-Data 74 string
126
+ ATTRIBUTE Password-Retry 75 integer
127
+ ATTRIBUTE Prompt 76 integer
128
+ ATTRIBUTE Connect-Info 77 string
129
+ ATTRIBUTE Configuration-Token 78 string
130
+ ATTRIBUTE EAP-Message 79 string
131
+ ATTRIBUTE Message-Authenticator 80 octets
132
+ ATTRIBUTE ARAP-Challenge-Response 84 string # 10 octets
133
+ ATTRIBUTE Acct-Interim-Interval 85 integer
134
+ ATTRIBUTE NAS-Port-Id 87 string
135
+ ATTRIBUTE Framed-Pool 88 string
136
+ ATTRIBUTE NAS-IPv6-Address 95 octets # really IPv6
137
+ ATTRIBUTE Framed-Interface-Id 96 octets # 8 octets
138
+ ATTRIBUTE Framed-IPv6-Prefix 97 ipv6prefix # stupid format
139
+ ATTRIBUTE Login-IPv6-Host 98 octets # really IPv6
140
+ ATTRIBUTE Framed-IPv6-Route 99 string
141
+ ATTRIBUTE Framed-IPv6-Pool 100 string
142
+ ATTRIBUTE Delegated-IPv6-Prefix 123 ipv6prefix
143
+
144
+
145
+ ATTRIBUTE Digest-Response 206 string
146
+ ATTRIBUTE Digest-Attributes 207 octets # stupid format
147
+
148
+ #
149
+ # Experimental Non Protocol Attributes used by Cistron-Radiusd
150
+ #
151
+
152
+ # These attributes CAN go in the reply item list.
153
+ ATTRIBUTE Fall-Through 500 integer
154
+ ATTRIBUTE Exec-Program 502 string
155
+ ATTRIBUTE Exec-Program-Wait 503 string
156
+
157
+ # These attributes CANNOT go in the reply item list.
158
+ ATTRIBUTE User-Category 1029 string
159
+ ATTRIBUTE Group-Name 1030 string
160
+ ATTRIBUTE Huntgroup-Name 1031 string
161
+ ATTRIBUTE Simultaneous-Use 1034 integer
162
+ ATTRIBUTE Strip-User-Name 1035 integer
163
+ ATTRIBUTE Hint 1040 string
164
+ ATTRIBUTE Pam-Auth 1041 string
165
+ ATTRIBUTE Login-Time 1042 string
166
+ ATTRIBUTE Stripped-User-Name 1043 string
167
+ ATTRIBUTE Current-Time 1044 string
168
+ ATTRIBUTE Realm 1045 string
169
+ ATTRIBUTE No-Such-Attribute 1046 string
170
+ ATTRIBUTE Packet-Type 1047 integer
171
+ ATTRIBUTE Proxy-To-Realm 1048 string
172
+ ATTRIBUTE Replicate-To-Realm 1049 string
173
+ ATTRIBUTE Acct-Session-Start-Time 1050 date
174
+ ATTRIBUTE Acct-Unique-Session-Id 1051 string
175
+ ATTRIBUTE Client-IP-Address 1052 ipaddr
176
+ ATTRIBUTE Ldap-UserDn 1053 string
177
+ ATTRIBUTE NS-MTA-MD5-Password 1054 string
178
+ ATTRIBUTE SQL-User-Name 1055 string
179
+ ATTRIBUTE LM-Password 1057 octets
180
+ ATTRIBUTE NT-Password 1058 octets
181
+ ATTRIBUTE SMB-Account-CTRL 1059 integer
182
+ ATTRIBUTE SMB-Account-CTRL-TEXT 1061 string
183
+ ATTRIBUTE User-Profile 1062 string
184
+ ATTRIBUTE Digest-Realm 1063 string
185
+ ATTRIBUTE Digest-Nonce 1064 string
186
+ ATTRIBUTE Digest-Method 1065 string
187
+ ATTRIBUTE Digest-URI 1066 string
188
+ ATTRIBUTE Digest-QOP 1067 string
189
+ ATTRIBUTE Digest-Algorithm 1068 string
190
+ ATTRIBUTE Digest-Body-Digest 1069 string
191
+ ATTRIBUTE Digest-CNonce 1070 string
192
+ ATTRIBUTE Digest-Nonce-Count 1071 string
193
+ ATTRIBUTE Digest-User-Name 1072 string
194
+ ATTRIBUTE Pool-Name 1073 string
195
+ ATTRIBUTE Ldap-Group 1074 string
196
+ ATTRIBUTE Module-Success-Message 1075 string
197
+ ATTRIBUTE Module-Failure-Message 1076 string
198
+ # X99-Fast 1077 integer
199
+
200
+ #
201
+ # Non-Protocol Attributes
202
+ # These attributes are used internally by the server
203
+ #
204
+ ATTRIBUTE Auth-Type 1000 integer
205
+ ATTRIBUTE Menu 1001 string
206
+ ATTRIBUTE Termination-Menu 1002 string
207
+ ATTRIBUTE Prefix 1003 string
208
+ ATTRIBUTE Suffix 1004 string
209
+ ATTRIBUTE Group 1005 string
210
+ ATTRIBUTE Crypt-Password 1006 string
211
+ ATTRIBUTE Connect-Rate 1007 integer
212
+ ATTRIBUTE Add-Prefix 1008 string
213
+ ATTRIBUTE Add-Suffix 1009 string
214
+ ATTRIBUTE Expiration 1010 date
215
+ ATTRIBUTE Autz-Type 1011 integer
216
+
217
+ #
218
+ # Integer Translations
219
+ #
220
+
221
+ # User Types
222
+
223
+ VALUE Service-Type Login-User 1
224
+ VALUE Service-Type Framed-User 2
225
+ VALUE Service-Type Callback-Login-User 3
226
+ VALUE Service-Type Callback-Framed-User 4
227
+ VALUE Service-Type Outbound-User 5
228
+ VALUE Service-Type Administrative-User 6
229
+ VALUE Service-Type NAS-Prompt-User 7
230
+ VALUE Service-Type Authenticate-Only 8
231
+ VALUE Service-Type Callback-NAS-Prompt 9
232
+ VALUE Service-Type Call-Check 10
233
+ VALUE Service-Type Callback-Administrative 11
234
+
235
+ # Framed Protocols
236
+
237
+ VALUE Framed-Protocol PPP 1
238
+ VALUE Framed-Protocol SLIP 2
239
+ VALUE Framed-Protocol ARAP 3
240
+ VALUE Framed-Protocol Gandalf-SLML 4
241
+ VALUE Framed-Protocol Xylogics-IPX-SLIP 5
242
+ VALUE Framed-Protocol X.75-Synchronous 6
243
+
244
+ # Framed Routing Values
245
+
246
+ VALUE Framed-Routing None 0
247
+ VALUE Framed-Routing Broadcast 1
248
+ VALUE Framed-Routing Listen 2
249
+ VALUE Framed-Routing Broadcast-Listen 3
250
+
251
+ # Framed Compression Types
252
+
253
+ VALUE Framed-Compression None 0
254
+ VALUE Framed-Compression Van-Jacobson-TCP-IP 1
255
+ VALUE Framed-Compression IPX-Header-Compression 2
256
+ VALUE Framed-Compression Stac-LZS 3
257
+
258
+ # Login Services
259
+
260
+ VALUE Login-Service Telnet 0
261
+ VALUE Login-Service Rlogin 1
262
+ VALUE Login-Service TCP-Clear 2
263
+ VALUE Login-Service PortMaster 3
264
+ VALUE Login-Service LAT 4
265
+ VALUE Login-Service X25-PAD 5
266
+ VALUE Login-Service X25-T3POS 6
267
+ VALUE Login-Service TCP-Clear-Quiet 8
268
+
269
+ # Login-TCP-Port (see /etc/services for more examples)
270
+
271
+ VALUE Login-TCP-Port Telnet 23
272
+ VALUE Login-TCP-Port Rlogin 513
273
+ VALUE Login-TCP-Port Rsh 514
274
+
275
+ # Status Types
276
+
277
+ VALUE Acct-Status-Type Start 1
278
+ VALUE Acct-Status-Type Stop 2
279
+ VALUE Acct-Status-Type Interim-Update 3
280
+ VALUE Acct-Status-Type Alive 3
281
+ VALUE Acct-Status-Type Accounting-On 7
282
+ VALUE Acct-Status-Type Accounting-Off 8
283
+ # RFC 2867 Additional Status-Type Values
284
+ VALUE Acct-Status-Type Tunnel-Start 9
285
+ VALUE Acct-Status-Type Tunnel-Stop 10
286
+ VALUE Acct-Status-Type Tunnel-Reject 11
287
+ VALUE Acct-Status-Type Tunnel-Link-Start 12
288
+ VALUE Acct-Status-Type Tunnel-Link-Stop 13
289
+ VALUE Acct-Status-Type Tunnel-Link-Reject 14
290
+
291
+ # Authentication Types
292
+
293
+ VALUE Acct-Authentic RADIUS 1
294
+ VALUE Acct-Authentic Local 2
295
+
296
+ # Termination Options
297
+
298
+ VALUE Termination-Action Default 0
299
+ VALUE Termination-Action RADIUS-Request 1
300
+
301
+ # NAS Port Types
302
+
303
+ VALUE NAS-Port-Type Async 0
304
+ VALUE NAS-Port-Type Sync 1
305
+ VALUE NAS-Port-Type ISDN 2
306
+ VALUE NAS-Port-Type ISDN-V120 3
307
+ VALUE NAS-Port-Type ISDN-V110 4
308
+ VALUE NAS-Port-Type Virtual 5
309
+ VALUE NAS-Port-Type PIAFS 6
310
+ VALUE NAS-Port-Type HDLC-Clear-Channel 7
311
+ VALUE NAS-Port-Type X.25 8
312
+ VALUE NAS-Port-Type X.75 9
313
+ VALUE NAS-Port-Type G.3-Fax 10
314
+ VALUE NAS-Port-Type SDSL 11
315
+ VALUE NAS-Port-Type ADSL-CAP 12
316
+ VALUE NAS-Port-Type ADSL-DMT 13
317
+ VALUE NAS-Port-Type IDSL 14
318
+ VALUE NAS-Port-Type Ethernet 15
319
+ VALUE NAS-Port-Type xDSL 16
320
+ VALUE NAS-Port-Type Cable 17
321
+ VALUE NAS-Port-Type Wireless-Other 18
322
+ VALUE NAS-Port-Type Wireless-802.11 19
323
+
324
+ # Acct Terminate Causes, available in 3.3.2 and later
325
+
326
+ VALUE Acct-Terminate-Cause User-Request 1
327
+ VALUE Acct-Terminate-Cause Lost-Carrier 2
328
+ VALUE Acct-Terminate-Cause Lost-Service 3
329
+ VALUE Acct-Terminate-Cause Idle-Timeout 4
330
+ VALUE Acct-Terminate-Cause Session-Timeout 5
331
+ VALUE Acct-Terminate-Cause Admin-Reset 6
332
+ VALUE Acct-Terminate-Cause Admin-Reboot 7
333
+ VALUE Acct-Terminate-Cause Port-Error 8
334
+ VALUE Acct-Terminate-Cause NAS-Error 9
335
+ VALUE Acct-Terminate-Cause NAS-Request 10
336
+ VALUE Acct-Terminate-Cause NAS-Reboot 11
337
+ VALUE Acct-Terminate-Cause Port-Unneeded 12
338
+ VALUE Acct-Terminate-Cause Port-Preempted 13
339
+ VALUE Acct-Terminate-Cause Port-Suspended 14
340
+ VALUE Acct-Terminate-Cause Service-Unavailable 15
341
+ VALUE Acct-Terminate-Cause Callback 16
342
+ VALUE Acct-Terminate-Cause User-Error 17
343
+ VALUE Acct-Terminate-Cause Host-Request 18
344
+
345
+ #VALUE Tunnel-Type L2TP 3
346
+ #VALUE Tunnel-Medium-Type IP 1
347
+
348
+ VALUE Prompt No-Echo 0
349
+ VALUE Prompt Echo 1
350
+
351
+ #
352
+ # Non-Protocol Integer Translations
353
+ #
354
+
355
+ VALUE Auth-Type Local 0
356
+ VALUE Auth-Type System 1
357
+ VALUE Auth-Type SecurID 2
358
+ VALUE Auth-Type Crypt-Local 3
359
+ VALUE Auth-Type Reject 4
360
+ VALUE Auth-Type ActivCard 5
361
+ VALUE Auth-Type EAP 6
362
+ VALUE Auth-Type ARAP 7
363
+
364
+ #
365
+ # Cistron extensions
366
+ #
367
+ VALUE Auth-Type Ldap 252
368
+ VALUE Auth-Type Pam 253
369
+ VALUE Auth-Type Accept 254
370
+
371
+ VALUE Auth-Type PAP 1024
372
+ VALUE Auth-Type CHAP 1025
373
+ VALUE Auth-Type LDAP 1026
374
+ VALUE Auth-Type PAM 1027
375
+ VALUE Auth-Type MS-CHAP 1028
376
+ VALUE Auth-Type Kerberos 1029
377
+ VALUE Auth-Type CRAM 1030
378
+ VALUE Auth-Type NS-MTA-MD5 1031
379
+ VALUE Auth-Type CRAM 1032
380
+ VALUE Auth-Type SMB 1033
381
+
382
+ #
383
+ # Authorization type, too.
384
+ #
385
+ VALUE Autz-Type Local 0
386
+
387
+ #
388
+ # Experimental Non-Protocol Integer Translations for Cistron-Radiusd
389
+ #
390
+ VALUE Fall-Through No 0
391
+ VALUE Fall-Through Yes 1
392
+
393
+ VALUE Packet-Type Access-Request 1
394
+ VALUE Packet-Type Access-Accept 2
395
+ VALUE Packet-Type Access-Reject 3
396
+ VALUE Packet-Type Accounting-Request 4
397
+ VALUE Packet-Type Accounting-Response 5
398
+ VALUE Packet-Type Accounting-Status 6
399
+ VALUE Packet-Type Password-Request 7
400
+ VALUE Packet-Type Password-Accept 8
401
+ VALUE Packet-Type Password-Reject 9
402
+ VALUE Packet-Type Accounting-Message 10
403
+ VALUE Packet-Type Access-Challenge 11
404
+ VALUE Packet-Type Status-Server 12
405
+ VALUE Packet-Type Status-Client 13
@@ -0,0 +1,91 @@
1
+ # -*- text -*-
2
+ # Copyright (C) 2015 The FreeRADIUS Server project and contributors
3
+ #
4
+ # The FreeRADIUS Vendor-Specific dictionary.
5
+ #
6
+ # Version: $Id: ea468da88509aeff96b6f0d38ebc97411b9775b3 $
7
+ #
8
+ # For a complete list of Private Enterprise Codes, see:
9
+ #
10
+ # http://www.isi.edu/in-notes/iana/assignments/enterprise-numbers
11
+ #
12
+
13
+ VENDOR FreeRADIUS 11344
14
+
15
+ BEGIN-VENDOR FreeRADIUS
16
+
17
+ #
18
+ # This attribute is really a bitmask.
19
+ #
20
+ ATTRIBUTE FreeRADIUS-Statistics-Type 127 integer
21
+
22
+ VALUE FreeRADIUS-Statistics-Type None 0
23
+ VALUE FreeRADIUS-Statistics-Type Authentication 1
24
+ VALUE FreeRADIUS-Statistics-Type Accounting 2
25
+ VALUE FreeRADIUS-Statistics-Type Proxy-Authentication 4
26
+ VALUE FreeRADIUS-Statistics-Type Proxy-Accounting 8
27
+ VALUE FreeRADIUS-Statistics-Type Internal 0x10
28
+ VALUE FreeRADIUS-Statistics-Type Client 0x20
29
+ VALUE FreeRADIUS-Statistics-Type Server 0x40
30
+ VALUE FreeRADIUS-Statistics-Type Home-Server 0x80
31
+
32
+ VALUE FreeRADIUS-Statistics-Type Auth-Acct 0x03
33
+ VALUE FreeRADIUS-Statistics-Type Proxy-Auth-Acct 0x0c
34
+
35
+ VALUE FreeRADIUS-Statistics-Type All 0x1f
36
+
37
+ #
38
+ # FreeRADIUS statistic result attributes
39
+ #
40
+ ATTRIBUTE FreeRADIUS-Total-Access-Requests 128 integer
41
+ ATTRIBUTE FreeRADIUS-Total-Access-Accepts 129 integer
42
+ ATTRIBUTE FreeRADIUS-Total-Access-Rejects 130 integer
43
+ ATTRIBUTE FreeRADIUS-Total-Access-Challenges 131 integer
44
+ ATTRIBUTE FreeRADIUS-Total-Auth-Responses 132 integer
45
+ ATTRIBUTE FreeRADIUS-Total-Auth-Duplicate-Requests 133 integer
46
+ ATTRIBUTE FreeRADIUS-Total-Auth-Malformed-Requests 134 integer
47
+ ATTRIBUTE FreeRADIUS-Total-Auth-Invalid-Requests 135 integer
48
+ ATTRIBUTE FreeRADIUS-Total-Auth-Dropped-Requests 136 integer
49
+ ATTRIBUTE FreeRADIUS-Total-Auth-Unknown-Types 137 integer
50
+
51
+ ATTRIBUTE FreeRADIUS-Total-Proxy-Access-Requests 138 integer
52
+ ATTRIBUTE FreeRADIUS-Total-Proxy-Access-Accepts 139 integer
53
+ ATTRIBUTE FreeRADIUS-Total-Proxy-Access-Rejects 140 integer
54
+ ATTRIBUTE FreeRADIUS-Total-Proxy-Access-Challenges 141 integer
55
+ ATTRIBUTE FreeRADIUS-Total-Proxy-Auth-Responses 142 integer
56
+ ATTRIBUTE FreeRADIUS-Total-Proxy-Auth-Duplicate-Requests 143 integer
57
+ ATTRIBUTE FreeRADIUS-Total-Proxy-Auth-Malformed-Requests 144 integer
58
+ ATTRIBUTE FreeRADIUS-Total-Proxy-Auth-Invalid-Requests 145 integer
59
+ ATTRIBUTE FreeRADIUS-Total-Proxy-Auth-Dropped-Requests 146 integer
60
+ ATTRIBUTE FreeRADIUS-Total-Proxy-Auth-Unknown-Types 147 integer
61
+
62
+ ATTRIBUTE FreeRADIUS-Total-Accounting-Requests 148 integer
63
+ ATTRIBUTE FreeRADIUS-Total-Accounting-Responses 149 integer
64
+ ATTRIBUTE FreeRADIUS-Total-Acct-Duplicate-Requests 150 integer
65
+ ATTRIBUTE FreeRADIUS-Total-Acct-Malformed-Requests 151 integer
66
+ ATTRIBUTE FreeRADIUS-Total-Acct-Invalid-Requests 152 integer
67
+ ATTRIBUTE FreeRADIUS-Total-Acct-Dropped-Requests 153 integer
68
+ ATTRIBUTE FreeRADIUS-Total-Acct-Unknown-Types 154 integer
69
+
70
+ ATTRIBUTE FreeRADIUS-Total-Proxy-Accounting-Requests 155 integer
71
+ ATTRIBUTE FreeRADIUS-Total-Proxy-Accounting-Responses 156 integer
72
+ ATTRIBUTE FreeRADIUS-Total-Proxy-Acct-Duplicate-Requests 157 integer
73
+ ATTRIBUTE FreeRADIUS-Total-Proxy-Acct-Malformed-Requests 158 integer
74
+ ATTRIBUTE FreeRADIUS-Total-Proxy-Acct-Invalid-Requests 159 integer
75
+ ATTRIBUTE FreeRADIUS-Total-Proxy-Acct-Dropped-Requests 160 integer
76
+ ATTRIBUTE FreeRADIUS-Total-Proxy-Acct-Unknown-Types 161 integer
77
+
78
+ ATTRIBUTE FreeRADIUS-Queue-Len-Internal 162 integer
79
+ ATTRIBUTE FreeRADIUS-Queue-Len-Proxy 163 integer
80
+ ATTRIBUTE FreeRADIUS-Queue-Len-Auth 164 integer
81
+ ATTRIBUTE FreeRADIUS-Queue-Len-Acct 165 integer
82
+ ATTRIBUTE FreeRADIUS-Queue-Len-Detail 166 integer
83
+
84
+ ATTRIBUTE FreeRADIUS-Stats-Start-Time 176 date
85
+ ATTRIBUTE FreeRADIUS-Stats-HUP-Time 177 date
86
+
87
+ ATTRIBUTE FreeRADIUS-Queue-PPS-In 181 integer
88
+ ATTRIBUTE FreeRADIUS-Queue-PPS-In 182 integer
89
+
90
+
91
+ END-VENDOR FreeRADIUS
example/pyrad.log ADDED
File without changes
example/server.py ADDED
@@ -0,0 +1,68 @@
1
+ #!/usr/bin/python
2
+ from pyrad import dictionary, packet, server
3
+ import logging
4
+
5
+ logging.basicConfig(filename="pyrad.log", level="DEBUG",
6
+ format="%(asctime)s [%(levelname)-8s] %(message)s")
7
+
8
+
9
+ class FakeServer(server.Server):
10
+
11
+ def HandleAuthPacket(self, pkt):
12
+ print("Received an authentication request")
13
+ print("Attributes: ")
14
+ for attr in pkt.keys():
15
+ print("%s: %s" % (attr, pkt[attr]))
16
+
17
+ reply = self.CreateReplyPacket(pkt, **{
18
+ "Service-Type": "Framed-User",
19
+ "Framed-IP-Address": '192.168.0.1',
20
+ "Framed-IPv6-Prefix": "fc66::1/64"
21
+ })
22
+
23
+ reply.code = packet.AccessAccept
24
+ self.SendReplyPacket(pkt.fd, reply)
25
+
26
+ def HandleAcctPacket(self, pkt):
27
+
28
+ print("Received an accounting request")
29
+ print("Attributes: ")
30
+ for attr in pkt.keys():
31
+ print("%s: %s" % (attr, pkt[attr]))
32
+
33
+ reply = self.CreateReplyPacket(pkt)
34
+ self.SendReplyPacket(pkt.fd, reply)
35
+
36
+ def HandleCoaPacket(self, pkt):
37
+
38
+ print("Received an coa request")
39
+ print("Attributes: ")
40
+ for attr in pkt.keys():
41
+ print("%s: %s" % (attr, pkt[attr]))
42
+
43
+ reply = self.CreateReplyPacket(pkt)
44
+ self.SendReplyPacket(pkt.fd, reply)
45
+
46
+ def HandleDisconnectPacket(self, pkt):
47
+
48
+ print("Received an disconnect request")
49
+ print("Attributes: ")
50
+ for attr in pkt.keys():
51
+ print("%s: %s" % (attr, pkt[attr]))
52
+
53
+ reply = self.CreateReplyPacket(pkt)
54
+ # COA NAK
55
+ reply.code = 45
56
+ self.SendReplyPacket(pkt.fd, reply)
57
+
58
+ if __name__ == '__main__':
59
+
60
+ # create server and read dictionary
61
+ srv = FakeServer(dict=dictionary.Dictionary("dictionary"), coa_enabled=True)
62
+
63
+ # add clients (address, secret, name)
64
+ srv.hosts["127.0.0.1"] = server.RemoteHost("127.0.0.1", b"Kah3choteereethiejeimaeziecumi", "localhost")
65
+ srv.BindToAddress("0.0.0.0")
66
+
67
+ # start server
68
+ srv.Run()