scripts/harv_ser.sh
7d93442a
 #!/bin/sh
 #
 # $Id$
 #
34b64c0c
 # tool for post-processesing captured SIP messages 
7d93442a
 #
 # call it without parameters to harvest the youngest
 # log file or with "all" parameter to harvest all
 # 
34b64c0c
 # you need to capture SIP messages first; you
7d93442a
 # may for example run an init.d job such as
 # ngrep -t port 5060 2>&1 | rotatelogs /var/log/sip 86400&
34b64c0c
 # caution: if you do that you best set up a crond daemon
 # which deletes the files too -- they become huge
 # very quickly
 #
 # note that the tool has no notion of messages and transactions
 # yet; a consuquence of the former is that number of clients
 # which do not identify themselves using User-Agent HF is 
 # unknown (only lines which include it are processed);
 # a consequence is also that relayed messages are
 # counted twice (incoming, outgoing), and INVITEs are not
 # correlated with BYEs
7d93442a
 #
 
 
6aeac0d8
 LOGDIR=/var/log/sip
7d93442a
 
 #####################
 
 if [ "$1" = "all" ] ; then
 	CURRENT=`ls -t $LOGDIR/sip.*`
 else
34b64c0c
 	CURRENT=`ls -t $LOGDIR/sip.* | head -1`
7d93442a
 fi
f113040a
 echo "Log: `ls -l $CURRENT`"
 echo "Date: `date`"
7d93442a
 
 #cat $CURRENT | ./ser_harvest.awk 
 
 AWK_PG='
 BEGIN {
1997d7c4
 
 	IGNORECASE=1;
 
7d93442a
     rpl100=0; rpl180=0; rpl183=0; rpl1xx=0;
     rpl200=0; rpl202=0; rpl2xx=0;
     rpl300=0; rpl302=0; rpl3xx=0;
     rpl400=0; rpl401=0; rpl403=0; rpl404=0; rpl405=0;
6190cb1f
         rpl406=0;rpl407=0;rpl408=0;rpl410=0; rpl415=0;
6aeac0d8
         rpl476=0;rpl477=0;rpl480=0;rpl481=0;rpl482=0;rpl483=0;rpl486=0;rpl478=0;rpl487=0;
113bec64
 		rpl488=0;rpl489=0;
7d93442a
         rpl4xx=0;
75f5711b
 	rpl479=0;
621cf271
     rpl500=0;rpl501=0;rpl502=0;rpl503=0;rpl5xx=0;
34b64c0c
     rpl603=0;rpl6xx=0;
 
 	hint_imgw=0;
 	hint_voicemail=0;
 	hint_battest=0;
 	hint_usrloc=0;
 	hint_outbound=0;
 	hint_sms=0;
 	hint_gw=0;
 	hint_off_voicemail=0;
7d93442a
 
 
     cancel=0;invite=0;ack=0; info=0;register=0;bye=0;
     options=0;
     message=0; subscribe=0; notify=0;
34b64c0c
 
 	ua_snom=0;
 	ua_msn=0;
 	ua_mitel=0;
 	ua_pingtel=0;
 	ua_ser=0;
 	ua_osip=0;
 	ua_linphone=0;
8dea9629
 	ua_kphone=0;
 	ua_sjphone=0;
34b64c0c
 	ua_ubiquity=0;
 	ua_3com=0;
 	ua_ipdialog=0;
 	ua_epygi=0;
 	ua_jasomi=0;
 	ua_cisco=0;
 	ua_insipid=0;
f113040a
 	ua_hotsip=0;
9873e670
 	ua_mxsf=0;
6190cb1f
 	ua_grandstream=0;
 	ua_tellme=0;
 	ua_pocketsipm=0;
 	ua_estara=0;
 	ua_vovida=0;
 	ua_jsip=0;
 	ua_nortel=0;
2363c44d
 	ua_polycom=0;
 	ua_csco=0;
ac022ef6
 	ua_leader=0;
f113040a
 	ua_nebula=0;
 	ua_yamaha=0;
 	ua_magicppc=0;
 	ua_scs=0;
fd3a184a
 	ua_edgeaccess=0;
c1a6586e
 	ua_tkc=0;
07ac2005
 	ua_hp300=0;
c7a33961
 	ua_eyep=0;
dcbca82e
 	ua_sipimp=0;
22dbd3a6
 	ua_sjphone=0;
e2fabaa9
 	ua_lgelite=0;
72873f0f
 	ua_asterisk=0;
b6f53d58
 	ua_commworks=0;
7695f7ac
 	ua_sipsak=0;
2c695659
 	ua_fxsgw=0;
13f723a5
 	ua_sxdesign=0;
c2bb265d
 	ua_dlink=0;
98eb79de
 	ua_gphone=0;
7133059b
 	ua_xlite=0;
36e0c897
 	ua_edial=0;
6aeac0d8
 	ua_gs=0;
 	ua_sipps=0;
 	ua_i3micro=0;
 	ua_act=0;
 	ua_ibm=0;
 	ua_xpro=0;
 	ua_hearme=0;
 	ua_draytek=0;
 	ua_st280;
 	ua_dta=0;
7f1e7904
 	ua_fci=0;
34b64c0c
 	ua_xx=0;
 
621cf271
 	server_cisco=0
 	server_ser=0
 	server_intertex=0
5614e113
 	server_hotsip=0
 	server_3com=0
6190cb1f
 	server_epygi=0;
2363c44d
 	server_leader=0;
ac022ef6
 	server_ims=0;
4388143d
 	server_csco=0;
dab1a68a
 	server_sapphire=0;
5f5883c3
 	server_lucent=0;
 	server_snom=0;
fd3a184a
 	server_edgeaccess=0;
c1a6586e
 	server_mcet=0;
29c9e1f9
 	server_sjphone=0;
292698cb
 	server_starsip=0;
c13152f2
 	server_ipdialog=0;
989f36fb
 	server_edial=0;
6aeac0d8
 	server_ma=0;
 	server_fwd=0;
 	server_columbia=0;
 	server_partysip=0;
ac022ef6
 	server_xx=0
621cf271
 
34b64c0c
 }
 
621cf271
 {ua=0; request=0;reply=0;server=0}
34b64c0c
 
67c1bcbf
 ua==0 && /User-Agent:.*RTC\// {
34b64c0c
 	ua_msn++
 	ua=1
 }
dcbca82e
 ua==0 && /User-Agent:.*Sip EXpress/ {
 	ua_ser++
34b64c0c
 	ua=1
 }
 ua==0 && /User-Agent:.*Pingtel/ {
 	ua_pingtel++
 	ua=1
 }
dcbca82e
 ua==0 && /User-Agent:.*Cisco/ {
 	ua_cisco++
 	ua=1
 }
 ua==0 && /User-Agent:.*snom/ {
 	ua_snom++
 	ua=1
 }
 ua==0 && /User-Agent:.*tkcPhone/ {
 	ua_tkc++
 	ua=1
 }
 ua==0 && /User-Agent:.*Mitel/ {
 	ua_mitel++
34b64c0c
 	ua=1
 }
 ua==0 && /User-Agent:.*oSIP-ua/ {
 	ua_osip++
 	ua=1
 }
 ua==0 && /User-Agent:.*oSIP\/Linphone/ {
 	ua_linphone++
 	ua=1
 }
 ua==0 && /User-Agent:.*3Com/ {
 	ua_3com++
 	ua=1
 }
 ua==0 && /User-Agent:.*ipDialog/ {
 	ua_ipdialog++
 	ua=1
 }
 ua==0 && /User-Agent:.*UbiquityUserAgent/ {
 	ua_ubiquity++
 	ua=1
 }
 ua==0 && /User-Agent:.*EPYGI/ {
 	ua_epygi++
 	ua=1
 }
 ua==0 && /User-Agent:.*Jasomi/ {
 	ua_jasomi++
 	ua=1
 }
 ua==0 && /User-Agent:.*Insipid/ {
 	ua_insipid++
 	ua=1
 }
9873e670
 ua==0 && /User-Agent:.*mxsf/ {
 	ua_mxsf++
 	ua=1
 }
34b64c0c
 ua==0 && /User-Agent:.*Hotsip/ {
 	ua_hotsip++
 	ua=1
7d93442a
 }
6190cb1f
 ua==0 && /User-Agent:.*GrandStream/ {
 	ua_grandstream++
 	ua=1
 }
 ua==0 && /User-Agent:.*Tellme/ {
 	ua_tellme++
 	ua=1
 }
 ua==0 && /User-Agent:.*PocketSipM/ {
 	ua_pocketsipm++
 	ua=1
 }
 ua==0 && /User-Agent:.*eStara/ {
 	ua_estara++
 	ua=1
 }
 ua==0 && /User-Agent:.*vovida/ {
 	ua_vovida++
 	ua=1
 }
 ua==0 && /User-Agent:.*jSIP/ {
 	ua_jsip++
 	ua=1
 }
 ua==0 && /User-Agent:.*Nortel/ {
 	ua_nortel++
 	ua=1
 }
2363c44d
 ua==0 && /User-Agent:.*Polycom/ {
 	ua_polycom++
 	ua=1
 }
 ua==0 && /User-Agent:.*CSCO/ {
 	ua_csco++
 	ua=1
 }
ac022ef6
 ua==0 && /User-Agent:.*LeaderSIP/ {
 	ua_leader++
 	ua=1
 }
f113040a
 ua==0 && /User-Agent:.*Nebula/ {
 	ua_nebula++
 	ua=1
 }
 ua==0 && /User-Agent:.*YAMAHA/ {
 	ua_yamaha++
 	ua=1
 }
 ua==0 && /User-Agent:.*MagicPPC/ {
 	ua_magicppc++
 	ua=1
 }
8dea9629
 ua==0 && /User-Agent:.*SJPhone/ {
 	ua_sjphone++
 	ua=1
 }
 ua==0 && /User-Agent:.*KPhone/ {
 	ua_kphone++
 	ua=1
 }
f113040a
 ua==0 && /User-Agent:.*SCS/ {
 	ua_scs++
 	ua=1
 }
07ac2005
 ua==0 && /User-Agent:.*HP300/ {
 	ua_hp300++
 	ua=1
 }
c7a33961
 ua==0 && /User-Agent:.*SIP EyeP Phone/ {
 	ua_eyep++
 	ua=1
 }
fd3a184a
 ua==0 && /User-Agent:.*EdgEAccEss/ {
 	ua_edgeaccess++
 	ua=1
 }
22dbd3a6
 ua==0 && /User-Agent:.*SJLabs-SJPhone/ {
 	ua_sjphone++
 	ua=1
 }
e2fabaa9
 ua==0 && /User-Agent:.*LG-Elite/ {
 	ua_lgelite++
 	ua=1
 }
72873f0f
 ua==0 && /User-Agent:.*Asterisk/ {
 	ua_asterisk++
 	ua=1
 }
b6f53d58
 ua==0 && /User-Agent:.*CommWorks/ {
 	ua_commworks++
 	ua=1
 }
7695f7ac
 ua==0 && /User-Agent:.*sipsak/ {
 	ua_sipsak++
 	ua=1
 }
564d68a9
 ua==0 && /User-Agent:.*FXS_GW/ {
2c695659
 	ua_fxsgw++
 	ua=1
 }
13f723a5
 ua==0 && /User-Agent:.*SX Des/ {
 	ua_sxdesign++
 	ua=1
 }
dcbca82e
 ua==0 && /User-Agent:.*SIPimp\.org/ {
 	ua_sipimp++
 	ua=1
 }
c2bb265d
 ua==0 && /User-Agent:.*D-Link/ {
 	ua_dlink++
 	ua=1
 }
98eb79de
 ua==0 && /User-Agent:.*Gphone/ {
 	ua_gphone++
 	ua=1
 }
36e0c897
 ua==0 && /User-Agent:.*eDial/ {
 	ua_edial++
 	ua=1
 }
6aeac0d8
 ua==0 && /User-Agent:.*Grandstream/ {
 	ua_gs++
 	ua=1
 }
 ua==0 && /User-Agent:.*Ahead SIPPS/ {
 	ua_sipps++
 	ua=1
 }
 ua==0 && /User-Agent:.*IBM user agent/ {
 	ua_ibm++
 	ua=1
 }
 ua==0 && /User-Agent:.*Vega/ {
 	ua_vega++
 	ua=1
 }
 ua==0 && /User-Agent:.*i3micro/ {
 	ua_i3micro++
 	ua=1
 }
 ua==0 && /User-Agent:.*ACT/ {
 	ua_act++
 	ua=1
 }
 ua==0 && /User-Agent:.*X-Pro/ {
 	ua_xpro++
 	ua=1
 }
 ua==0 && /User-Agent:.*HearMe/ {
 	ua_hearme++
 	ua=1
 }
 ua==0 && /User-Agent:.*DrayTek/ {
 	ua_draytek++
 	ua=1
 }
7133059b
 ua==0 && /User-Agent:.*X-Lite/ {
 	ua_xlite++
 	ua=1
 }
6aeac0d8
 ua==0 && /User-Agent:.*DTA/ {
 	ua_dta++
 	ua=1
 }
7f1e7904
 ua==0 && /User-Agent:.*FCI/ {
 	ua_fci++
 	ua=1
 }
6aeac0d8
 ua==0 && /User-Agent:.*ST280/ {
 	ua_st++
 	ua=1
 }
6190cb1f
 
7d93442a
 
34b64c0c
  { comment="hack to deal with old version of ngrep (breaking in columns)"
 		 c="skip lines which words which frequently appeared on broken "
 		 c="columns. should not affect non-broken logs"
  }
 
 
 ua==0 && /(CANCEL|REGISTER|SUBSCRIBE|ACK|BYE|INVITE|REFER|OPTIONS|NOTIFY|sip-cc).*User-Agent:/ {
 	ua=1
 }
 
 ua==0 && /User-Agent:/ {
 	ua_xx++
 	print
 }
 
 
621cf271
 server==0 && /Server:.*Cisco/ {
 	server_cisco++
 	server=1
 }
 server==0 && /Server:.*Sip EXpress/ {
 	server_ser++
 	server=1
 }
 server==0 && /Server:.*Intertex/ {
 	server_intertex++
 	server=1
 }
5614e113
 server==0 && /Server:.*HotSip/ {
 	server_hotsip++
 	server=1
 }
 server==0 && /Server:.*3Com/ {
 	server_3com++
 	server=1
 }
6190cb1f
 server==0 && /Server:.*EPYGI/ {
 	server_epygi++
 	server=1
 }
2363c44d
 server==0 && /Server:.*LeaderSIP_UA/ {
 	server_leader++
 	server=1
 }
ac022ef6
 server==0 && /Server:.*IMS/ {
 	server_ims++
 	server=1
 }
4388143d
 server==0 && /Server:.*CSCO/ {
 	server_csco++
 	server=1
 }
dab1a68a
 server==0 && /Server:.*sapphire/ {
 	server_sapphire++
 	server=1
 }
5f5883c3
 server==0 && /Server:.*snom/ {
 	server_snom++
 	server=1
 }
 server==0 && /Server:.*Lucent/ {
 	server_lucent++
 	server=1
 }
fd3a184a
 server==0 && /Server:.*EdgEAccEss/ {
 	server_edgeaccess++
 	server=1
 }
c1a6586e
 server==0 && /Server:.*MCET/ {
 	server_mcet++
 	server=1
 }
29c9e1f9
 server==0 && /Server:.*SJLabs-SJPhone/ {
 	server_sjphone++
 	server=1
 }
292698cb
 server==0 && /Server:.*StarSIP/ {
 	server_starsip++
 	server=1
 }
c13152f2
 server==0 && /Server:.*ipDialog/ {
 	server_ipdialog++
 	server=1
 }
989f36fb
 server==0 && /Server:.*eDial/ {
 	server_edial++
 	server=1
 }
6aeac0d8
 server==0 && /Server:.*MA/ {
 	server_ma++
 	server=1
 }
 server==0 && /Server:.*Free World/ {
 	server_fwd++
 	server=1
 }
 server==0 && /Server:.*SIPUA-Columbia-University/ {
 	server_columbia++
 	server=1
 }
 server==0 && /Server:.*partysip/ {
 	server_partysip++
 	server=1
 }
 
621cf271
 server==0 && /Server:/ {
 	server_xx++
 	print
 }
 
 
34b64c0c
 
 /P-hint: IMGW/ {
 	hint_imgw++
 }
 /P-hint: VOICEMAIL/ {
 	hint_voicemail++
 }
 /P-hint: BATTEST/ {
 	hint_battest++
 }
 /P-hint: USRLOC/ {
 	hint_usrloc++
 }
 /P-hint: OUTBOUND/ {
 	hint_outbound++
 }
 /P-hint: SMS/ {
 	hint_sms++
 }
 /P-hint: GATEWAY/ {
 	hint_gw++
 }
 /P-hint: OFFLINE-VOICEMAIL/ {
 	hint_off_voicemail++
 }
 
 
621cf271
 
 /SIP\/2\.0 [0-9][0-9][0-9]/ {
 	reply=1
 }
 
 /[A-Z]* sip.* SIP\/2\.0/ {
 	request=1
 }
 
 reply==0 && request=0 {
 	comment="optimization--skip now"
 	next
 }
 
 
7d93442a
 /SIP\/2\.0 100/ {
     rpl100++
     next
 }
 /SIP\/2\.0 180/ {
     rpl180++
     next
 }
 /SIP\/2\.0 183/ {
     rpl183++
     next
 }
 /SIP\/2\.0 1[0-9][0-9]/ {
     print
     rpl1xx=0
     next
 }
 
 
 /SIP\/2\.0 200/ {
     rpl200++
     next
 }
 /SIP\/2\.0 202/ {
     rpl202++
     next
 }
 /SIP\/2\.0 2[0-9][0-9]/ {
     print
     rpl2xx++
     next
 }
 
 /SIP\/2\.0 300/ {
     rpl300++
     next
 }
 /SIP\/2\.0 302/ {
     rpl302++
     next
 }
 /SIP\/2\.0 3[0-9][0-9]/ {
     print
     rpl3xx++
     next
 }
 
 /SIP\/2\.0 400/ {
     rpl400++
     next
 }
 /SIP\/2\.0 401/ {
     rpl401++
     next
 }
 /SIP\/2\.0 403/ {
     rpl403++
     next
 }
 /SIP\/2\.0 404/ {
     rpl404++
     next
 }
 /SIP\/2\.0 405/ {
     rpl405++
     next
 }
621cf271
 /SIP\/2\.0 406/ {
     rpl406++
     next
 }
7d93442a
 /SIP\/2\.0 407/ {
     rpl407++
     next
 }
 /SIP\/2\.0 408/ {
     rpl408++
     next
 }
 /SIP\/2\.0 410/ {
     rpl410++
     next
 }
6190cb1f
 /SIP\/2\.0 415/ {
     rpl415++
     next
 }
621cf271
 /SIP\/2\.0 478/ {
     rpl478++
     next
 }
ac022ef6
 /SIP\/2\.0 476/ {
     rpl476++
     next
 }
6aeac0d8
 /SIP\/2\.0 477/ {
     rpl477++
     next
 }
98eb79de
 /SIP\/2\.0 480/ {
     rpl480++
     next
 }
7d93442a
 /SIP\/2\.0 481/ {
     rpl481++
     next
 }
6aeac0d8
 /SIP\/2\.0 482/ {
     rpl482++
     next
 }
621cf271
 /SIP\/2\.0 483/ {
     rpl483++
     next
 }
7d93442a
 /SIP\/2\.0 486/ {
     rpl486++
     next
 }
 /SIP\/2\.0 487/ {
     rpl487++
     next
 }
9873e670
 /SIP\/2\.0 488/ {
     rpl488++
     next
 }
113bec64
 /SIP\/2\.0 489/ {
     rpl489++
     next
 }
75f5711b
 /SIP\/2\.0 479/ {
     rpl479++
     next
 }
7d93442a
 /SIP\/2\.0 4[0-9][0-9]/ {
     print
     rpl4xx++
     next
 }
 
 
 /SIP\/2\.0 500/ {
     rpl500++
     next
 }
34b64c0c
 /SIP\/2\.0 501/ {
     rpl501++
     next
 }
621cf271
 /SIP\/2\.0 502/ {
     rpl502++
     next
 }
 /SIP\/2\.0 503/ {
     rpl503++
     next
 }
7d93442a
 /SIP\/2\.0 5[0-9][0-9]/ {
     print
     rpl5xx++
     next
 }
 
34b64c0c
 /SIP\/2\.0 603/{
 	rpl603++
 	next
 }
7d93442a
 /SIP\/2\.0 6[0=9][0-9]/ {
     print
     rpl6xx++
     next
 }
 
 
 /CANCEL sip/ {
     cancel++
     next
 }
 /INVITE sip/ {
     invite++
     next
 }
 /ACK sip/ {
     ack++
     next
 }
 /BYE sip/ {
     bye++
     next
 }
 /OPTIONS sip/ {
     options++
     next
 }
 /INFO sip/ {
     info++
     next
 }
 /MESSAGE sip/ {
     message++
     next
 }
 /SUBSCRIBE sip/ {
     subscribe++
     next
 }
 /NOTIFY sip/ {
     notify++
     next
 }
5614e113
 /REGISTER sip/ {
 	register++
 	next
 }
7d93442a
 
 END {
34b64c0c
 	print "## Reply Codes"
621cf271
     print "100 (trying): " rpl100 
 	print "180 (ringing): " rpl180 
 	print "183: (early media)" rpl183 
 	print "1xx: " rpl1xx
     print "200 (ok): " rpl200 
 	print "202 (accepted): " rpl202 
 	print "2xx: " rpl2xx
     print "300 (Multiple Choices): " rpl300 
5614e113
 	print "302 (Moved Temporarily): " rpl302 
621cf271
 	print "3xx: " rpl3xx
     print "400 (Bad Request): " rpl400 
 	print "401 (Unauthorized): " rpl401 
 	print "403 (Forbidden): " rpl403 
 	print "404 (Not Found):" rpl404 
 	print "405 (Method not allowed): " rpl405 
 	print "406 (Not Acceptable): " rpl406
 	print "407 (Proxy Authentication Required):" rpl407 
 	print "408 (Request Timeout): " rpl408  
 	print "410 (Gone): " rpl410
6190cb1f
 	print "415 (Unsupported Media): " rpl415
ac022ef6
 	print "476 (no recursive registrations): " rpl476 
6aeac0d8
 	print "477 (next hop error): " rpl477
621cf271
 	print "478 (Unresolveable): " rpl478 
75f5711b
 	print "479 (private IP): " rpl479 
98eb79de
 	print "480 (Unavailable): " rpl480 
621cf271
 	print "481 (Call/Transaction does not exist): " rpl481 
6aeac0d8
 	print "482 (Loop Detected): " rpl482 
621cf271
 	print "483 (Too Many Hops): " rpl483 
 	print "486 (Busy Here): " rpl486 
 	print "487 (Request Terminated): " rpl487
9873e670
 	print "488 (Not Acceptable): " rpl488
113bec64
 	print "489 (Bad Event): " rpl489
621cf271
 	print "4xx: " rpl4xx  
     print "500 (Server Internal Error): " rpl500 
 	print "501 (Not Implemented): " rpl501 
 	print "502 (Bad Gateway): " rpl502 
 	print "503 (Service Unavailabl): " rpl503 
 	print "5xx: " rpl5xx
     print "603 (Decline): " rpl603 
 	print "6xx: " rpl6xx
2363c44d
 
34b64c0c
 	print "## Request Methods"
6aeac0d8
     print "INVITE: " invite 
 	print "CANCEL: " cancel 
 	print "ACK: " ack
     print "REGISTER: " register 
 	print "BYE: " bye 
 	print "OPTIONS: " options 
 	print "INFO: " info
     print "MESSAGE: " message 
 	print "SUBSCRIBE: " subscribe 
 	print "NOTIFY: " notify
2363c44d
 
34b64c0c
 	print "## Outbound Routes"
6aeac0d8
 	print "To imgw: " hint_imgw 
 	print "To voicemail: " hint_voicemail
 	print "To bat: " hint_battest 
 	print "To UsrLoc: " hint_usrloc
 	print "Outbound: " hint_outbound
 	print "To SMS: " hint_sms
 	print "To PSTN: " hint_gw 
 	print "To: VM on off-line" hint_off_voicemail
2363c44d
 
34b64c0c
 	print "## User Agents"
6aeac0d8
 	print "Snom: " ua_snom 
 	print "MSN: " ua_msn 
 	print "Mitel: " ua_mitel
 	print "Pingtel: " ua_pingtel 
 	print "SER: " ua_ser 
 	print "osip: " ua_osip
 	print "linphone: " ua_linphone 
 	print "ubiquity: " ua_ubiquity
 	print "3com: " ua_3com 
 	print "IPDialog: " ua_ipdialog 
 	print "Epygi: " ua_epygi
 	print "Jasomi: " ua_jasomi 
 	print "Cisco: " ua_cisco 
 	print "insipid: " ua_insipid
 	print "Hotsip: " ua_hotsip 
 	print "mxsf: " ua_mxsf 
 	print "GrandStream: " ua_grandstream
 	print "Tellme: "ua_tellme 
 	print "PocketSipM: " ua_pocketsipm 
 	print "eStara: " ua_estara 
 	print "Vovida: " ua_vovida 
 	print "jSIP: " ua_jsip 
 	print "Nortel: " ua_nortel 
 	print "Polycom: " ua_polycom
 	print "Leader: " ua_leader 
 	print "csco: " ua_csco 
 	print "Nebula: " ua_nebula
 	print "MagicPPC: " ua_magicppc 
 	print "SCS: " ua_scs 
 	print "SJPhone: " ua_sjphone 
 	print "KPhone: " ua_kphone
f113040a
 	print "Yamaha: " ua_yamaha 
c1a6586e
 	print "tkcPhone: " ua_tkc
fd3a184a
 	print "EdgeAccess: " ua_edgeaccess
07ac2005
 	print "HP300: " ua_hp300
c7a33961
 	print "EyeP: " ua_eyep
dcbca82e
 	print "SIPimp: " ua_sipimp
22dbd3a6
 	print "SJPhone: " ua_sjphone
e2fabaa9
 	print "LG-Elite: " ua_lgelite
72873f0f
 	print "Asterisk: " ua_asterisk
b6f53d58
 	print "CommWorks: " ua_commworks
7695f7ac
 	print "sipsak: " ua_sipsak
2c695659
 	print "FXSGW: " ua_fxsgw
13f723a5
 	print "SXDesing: " ua_sxdesign
c2bb265d
 	print "D-link: " ua_dlink
98eb79de
 	print "gphone: " ua_gphone
7133059b
 	print "X-lite: " ua_xlite
6aeac0d8
 	print "grandstream: " ua_gs
 	print "vegastream: " ua_vega
 	print "Ahead SIPPS: " ua_sipps
 	print "IBM user agent: " ua_ibm
 	print "i3micro: " ua_i3micro
 	print "ACT: " ua_act
 	print "X-pro: " ua_xpro
 	print "Hearme: " ua_hearme
 	print "DrayTek: " ua_draytek
 	print "ST: " ua_st
 	print "DTA: " ua_dta
7f1e7904
 	print "FCI IPRanger: " ua_fci
ac022ef6
 	print "UFO: " ua_xx
2363c44d
 
621cf271
 	print "## Servers"
 	print "Cisco: " server_cisco " ser: " server_ser 
5614e113
 	print "Intertex: " server_intertex " Hotsip: " server_hotsip
2363c44d
 	print "3com: " server_3com " EPYGI: " server_epygi " Leader: " server_leader
4388143d
 	print "IMS (Nortel): " server_ims " CSCO: " server_csco
dab1a68a
 	print "sapphire: " server_sapphire
5f5883c3
 	print "snom: " server_snom
 	print "lucent: " server_lucent
fd3a184a
 	print "edgeAccess: " server_edgeaccess
c1a6586e
 	print "mcet: " server_mcet 
29c9e1f9
 	print "sjphone: " server_sjphone
292698cb
 	print "StarSIP: " server_starsip
c13152f2
 	print "ipDialog: " server_ipdialog
989f36fb
 	print "eDial: " server_edial
6aeac0d8
 	print "FWD: " server_fwd
 	print "MA: " server_ma
 	print "Columbia: " server_columbia
 	print "PartySip: " server_partysip
ac022ef6
 	print "UFO: " server_xx
7d93442a
 }
 '
 
 
 cat $CURRENT | awk "$AWK_PG"