1 | 'use strict';
|
2 |
|
3 | var diameter = require('../lib/diameter');
|
4 |
|
5 |
|
6 | var HOST = '127.0.0.1';
|
7 | var PORT = 3868;
|
8 |
|
9 | var options = {
|
10 | beforeAnyMessage: diameter.logMessage,
|
11 | afterAnyMessage: diameter.logMessage,
|
12 | };
|
13 |
|
14 | var server = diameter.createServer(options, function(socket) {
|
15 | socket.on('diameterMessage', function(event) {
|
16 | if (event.message.command === 'Capabilities-Exchange') {
|
17 | event.response.body = event.response.body.concat([
|
18 | ['Result-Code', 'DIAMETER_SUCCESS'],
|
19 | ['Origin-Host', 'test.com'],
|
20 | ['Origin-Realm', 'com'],
|
21 | ['Host-IP-Address', '2001:db8:3312::1'],
|
22 | ['Host-IP-Address', '1.2.3.4'],
|
23 | ['Vendor-Id', 123],
|
24 | ['Product-Name', 'node-diameter']
|
25 | ]);
|
26 | event.callback(event.response);
|
27 | } else if (event.message.command === 'Credit-Control') {
|
28 | event.response.body = event.response.body.concat([
|
29 | ['Result-Code', 2001],
|
30 | [264, 'test.com'],
|
31 | ['Origin-Realm', 'com'],
|
32 | ['Auth-Application-Id', 'Diameter Credit Control'],
|
33 | ['CC-Request-Type', 'INITIAL_REQUEST'],
|
34 | ['CC-Request-Number', 0],
|
35 | ['Multiple-Services-Credit-Control', [
|
36 | ['Granted-Service-Unit', [
|
37 | ['CC-Time', 123],
|
38 | ['CC-Money', [
|
39 | ['Unit-Value', [
|
40 | ['Value-Digits', 123],
|
41 | ['Exponent', 1]
|
42 | ]],
|
43 | ['Currency-Code', 1]
|
44 | ]],
|
45 | ['CC-Total-Octets', 123],
|
46 | ['CC-Input-Octets', 123],
|
47 | ['CC-Output-Octets', 123]
|
48 | ]],
|
49 | ['Requested-Service-Unit', [
|
50 | ['CC-Time', 123],
|
51 | ['CC-Money', [
|
52 | ['Unit-Value', [
|
53 | ['Value-Digits', 123],
|
54 | ['Exponent', 1]
|
55 | ]],
|
56 | ['Currency-Code', 1]
|
57 | ]],
|
58 | ['CC-Total-Octets', 123],
|
59 | ['CC-Input-Octets', 123],
|
60 | ['CC-Output-Octets', 123]
|
61 | ]]
|
62 | ]]
|
63 | ]);
|
64 | event.callback(event.response);
|
65 | }
|
66 |
|
67 |
|
68 | setTimeout(function() {
|
69 | console.log('Sending server initiated message');
|
70 | var connection = socket.diameterConnection;
|
71 | var request = connection.createRequest('Diameter Common Messages', 'Capabilities-Exchange');
|
72 | request.body = request.body.concat([
|
73 | [ 'Origin-Host', 'gx.pcef.com' ],
|
74 | [ 'Origin-Realm', 'pcef.com' ],
|
75 | [ 'Vendor-Id', 10415 ],
|
76 | [ 'Origin-State-Id', 219081 ],
|
77 | [ 'Supported-Vendor-Id', 10415 ],
|
78 | [ 'Auth-Application-Id', 'Diameter Credit Control' ]
|
79 | ]);
|
80 | connection.sendRequest(request).then(function(response) {
|
81 | console.log('Got response for server initiated message');
|
82 | }, function(error) {
|
83 | console.log('Error sending request: ' + error);
|
84 | });
|
85 | }, 2000);
|
86 | });
|
87 |
|
88 | socket.on('end', function() {
|
89 | console.log('Client disconnected.');
|
90 | });
|
91 | socket.on('error', function(err) {
|
92 | console.log(err);
|
93 | });
|
94 | });
|
95 |
|
96 | server.listen(PORT, HOST);
|
97 |
|
98 | console.log('Started DIAMETER server on ' + HOST + ':' + PORT);
|