mgparser 0.1.13 → 0.1.14

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 (4) hide show
  1. data/bin/mgparser +2 -5
  2. data/lib/call.rb +29 -103
  3. data/lib/version.rb +1 -1
  4. metadata +8 -8
@@ -1,7 +1,6 @@
1
1
  #!/usr/bin/env ruby
2
2
  $LOAD_PATH.unshift File.expand_path(File.join(File.dirname(__FILE__), ".", "../lib"))
3
3
  require 'rubygems'
4
- require 'bundler/setup'
5
4
  require 'eventmachine'
6
5
  require 'snmp'
7
6
  require 'optparse'
@@ -116,13 +115,11 @@ else
116
115
  begin
117
116
  EventMachine::open_datagram_socket host, port, SyslogServer
118
117
  rescue RuntimeError, Interrupt
119
- puts "Closing..."
118
+ puts "Are you root?"
120
119
  abort ""
121
120
  end
122
121
  end
123
- rescue Interrupt
122
+ rescue RuntimeError,Interrupt
124
123
  puts "Interrupted"
125
- rescue RuntimeError
126
- puts "Are you root?"
127
124
  end
128
125
  end
@@ -2,10 +2,7 @@ class Call
2
2
  attr_accessor :data
3
3
 
4
4
  def analyze(data,is_file)
5
-
6
- @callprogr_counter = 0
7
- @matched = 0
8
-
5
+
9
6
  if is_file == true
10
7
  data.each do |line|
11
8
  parse(line)
@@ -17,107 +14,36 @@ attr_accessor :data
17
14
  end
18
15
 
19
16
  def parse(line)
20
- if line =~ /Unicast RECV Setup/
21
- @inbound = true
22
-
23
- elsif line =~ /CallRouter \[.*\] Src=/
24
- @caller = line.scan(/e164=(\d{1,})/).flatten!.first
25
-
26
- elsif line =~ /CallRouter \[.*\] Dst\d\/2/
27
- @called = line.scan(/e164=(\d{1,})/).flatten!.first
28
-
29
-
30
- elsif line =~ /UseNextDestination - Call \d{1,}-\d{1,}/
31
- id = line.scan(/UseNextDestination - Call \d{1,}-(\d{1,})/).flatten!.first
32
- if @matched < 1
33
- if @inbound == true
34
- @matched += 1
35
- else
36
- puts "Call ID: #{id} - Caller: #{@caller}"
37
- puts "Call ID: #{id} - Called: #{@called}"
38
- end
39
- else
40
- puts "Call ID: #{id} - Caller: #{@caller}"
41
- puts "Call ID: #{id} - Called: #{@called}"
42
- @matched = 0
43
- end
44
-
45
- elsif line =~ /CallManager \[.*\] C\d{1,} - Send CallSetupA/
46
- id = line.scan(/C(\d{1,}) -/).flatten!.first
47
- if @inbound == true
48
- puts "Call ID: #{id} - <== ISDN setup received"
49
- else
50
- puts "Call ID: #{id} - ==> ISDN setup sent"
17
+ if line =~ /IsdnStackL3Msg.*Call \d{1,}-(In|Out)bound/
18
+ @id, @direction, @content = line.scan(/IsdnStackL3Msg.*Call (\d{1,})-.*(RECV|SEND) (\w{1,}.*) \(/).flatten!
19
+
20
+ if @direction == "SEND" and @content != "Disconnect" and @content != "Release"
21
+ puts "Call #{@id} - ==> Sent \"#{@content}\""
22
+ elsif @direction == "RECV" and @content == "Notify"
23
+ nil
24
+ elsif @direction == "RECV" and @content != "Disconnect" and @content != "Release"
25
+ puts "Call #{@id} - <== Received \"#{@content}\""
51
26
  end
52
- @inbound = false
53
-
54
- elsif line =~ /"Proceeding Indication" .* for state CallSetup./
55
- @progress_indication = true
56
-
57
- elsif line =~ /CallManager \[.*\] C\d{1,} - CallProgressA\(2\)/
58
- @callprogr_counter += 1
59
- id = line.scan(/C(\d{1,}) -/).flatten!.first
60
-
61
- if @progress_indication == true
62
- #puts "Call ID: #{id} - <== \"Proceeding indication\" received from operator"
63
- @progress_indication = false
64
- else
65
- if @callprogr_counter >= 3
66
- puts "Call ID: #{id} - <== The call will be probably answered by operator\'s voicemail or is being forwarded"
67
- @callprogr_counter = 0
68
- else
69
- puts "Call ID: #{id} - <== \"Call Progress\" received from operator"
70
- end
71
- end
72
-
73
- elsif line =~ /CallManager \[.*\] C\d{1,} - CallProgressA\(3\)/
74
- id = line.scan(/C(\d{1,}) -/).flatten!.first
75
- puts "Call ID: #{id} - ==> \"Call Progress\" sent to the operator"
76
-
77
-
78
- elsif line =~ /CallManager \[.*\] C\d{1,} - CallProgressA\(1\)/
79
- id = line.scan(/C(\d{1,}) -/).flatten!.first
80
- puts "Call ID: #{id} - <== Destination number is ringing"
81
-
82
-
83
- elsif line =~ /CallManager \[.*\] C\d{1,} - CallConnectA/
84
- id = line.scan(/C(\d{1,}) -/).flatten!.first
85
- puts "Call ID: #{id} - Call has been answered!"
86
-
87
-
88
- elsif line =~ /CallManager \[.*\] C\d{1,} - CallMessageA\(2\)/
89
- id = line.scan(/C(\d{1,}) -/).flatten!.first
90
- @isdn_inbound_disconnect = true
91
-
92
- elsif line =~ /CallManager.* Call is not allowed/
93
- @resource_unavailable = true
94
- @resource_unavailable_id = line.scan(/CallManager \[.*\] C\d{1,}-(\d{1,})/).flatten!.first
95
27
 
96
- elsif line =~ /CallTable.* ReleaseCall - Interface isdn.*try to release.* \d{1,}/
97
- @abnormal_hangup = true
98
- @abnormal_hangup_id = line.scan(/CallTable.* ReleaseCall - Interface isdn.*try to release.* (\d{1,})/).flatten!.first
99
-
100
-
101
- elsif line =~ /CallManager \[.*\] C\d{1,} - Send CallReleaseA\(\d{1,}\)/
102
- if @resource_unavailable == true
103
- id = @resource_unavailable_id
104
- @resource_unavailable = false
105
- elsif @abnormal_hangup == true
106
- id = @abnormal_hangup_id
107
- @abnormal_hangup = false
108
- else
109
- id = line.scan(/C(\d{1,}) -/).flatten!.first
28
+ elsif line =~ /IsdnStackL3Msg.*IE (Called|Calling) Party Number/
29
+ origin, number = line.scan(/IsdnStackL3Msg.*IE (Called|Calling) Party Number.*'(\d{1,})'/).flatten!
30
+ if origin == "Called"
31
+ puts "Call #{@id} - Called number: #{number}"
32
+ elsif origin == "Calling"
33
+ puts "Call #{@id} - Calling number: #{number}"
110
34
  end
111
- cause = line.scan(/Send CallReleaseA\((\d{1,})/).flatten!.first
112
-
113
- if @isdn_inbound_disconnect == true
114
- puts "Call ID: #{id} - <== Operator requested hangup with cause: \"#{$causes[cause]}\""
115
- @isdn_inbound_disconnect = false
116
- else
117
- puts "Call ID: #{id} - ==> Gateway sent hangup with cause: \"#{$causes[cause]}\""
35
+
36
+ elsif line =~ /IsdnStackL3Msg.*IE Notification Indicator/
37
+ notification = line.scan(/IsdnStackL3Msg.*IE Notification Indicator.*Description: (.*) \(/).flatten!.first
38
+ puts "Call #{@id} - <== Received Notify: \"#{notification}\" (if you called a mobile number it could be the VoiceMail)"
39
+
40
+ elsif line =~ /IsdnStackL3Msg.*IE Cause/
41
+ cause = line.scan(/IsdnStackL3Msg.*IE Cause.* Cause.*\((.*)\)/).flatten!.first
42
+ if @direction == "RECV"
43
+ puts "Call #{@id} - <== Received \"#{@content}\" with cause: \"#{$causes[cause]}\""
44
+ elsif @direction == "SEND"
45
+ puts "Call #{@id} - ==> Sent \"#{@content}\" with cause: \"#{$causes[cause]}\""
118
46
  end
119
-
120
47
  end
121
- end
122
-
123
- end
48
+ end #parse
49
+ end # Call
@@ -2,7 +2,7 @@ module Mgparser
2
2
  module VERSION
3
3
  MAJOR = 0 unless defined? MAJOR
4
4
  MINOR = 1 unless defined? MINOR
5
- TINY = 13 unless defined? TINY
5
+ TINY = 14 unless defined? TINY
6
6
 
7
7
  STRING = [MAJOR, MINOR, TINY].join('.') unless defined? STRING
8
8
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: mgparser
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.13
4
+ version: 0.1.14
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,11 +9,11 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2011-04-27 00:00:00.000000000Z
12
+ date: 2011-05-15 00:00:00.000000000Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: bundler
16
- requirement: &2153381660 !ruby/object:Gem::Requirement
16
+ requirement: &2151832240 !ruby/object:Gem::Requirement
17
17
  none: false
18
18
  requirements:
19
19
  - - ! '>='
@@ -21,10 +21,10 @@ dependencies:
21
21
  version: 1.0.10
22
22
  type: :runtime
23
23
  prerelease: false
24
- version_requirements: *2153381660
24
+ version_requirements: *2151832240
25
25
  - !ruby/object:Gem::Dependency
26
26
  name: eventmachine
27
- requirement: &2153381280 !ruby/object:Gem::Requirement
27
+ requirement: &2151830620 !ruby/object:Gem::Requirement
28
28
  none: false
29
29
  requirements:
30
30
  - - ! '>='
@@ -32,10 +32,10 @@ dependencies:
32
32
  version: '0'
33
33
  type: :runtime
34
34
  prerelease: false
35
- version_requirements: *2153381280
35
+ version_requirements: *2151830620
36
36
  - !ruby/object:Gem::Dependency
37
37
  name: snmp
38
- requirement: &2153380820 !ruby/object:Gem::Requirement
38
+ requirement: &2151829400 !ruby/object:Gem::Requirement
39
39
  none: false
40
40
  requirements:
41
41
  - - ! '>='
@@ -43,7 +43,7 @@ dependencies:
43
43
  version: '0'
44
44
  type: :runtime
45
45
  prerelease: false
46
- version_requirements: *2153380820
46
+ version_requirements: *2151829400
47
47
  description: MGParser (MGP) is a tool which makes analysis of Mediatrix ISDN gateways
48
48
  debug a much simpler task
49
49
  email: dawid.pogorzelski@mybushido.com