mirror of
https://github.com/cgrates/cgrates.git
synced 2026-02-11 18:16:24 +05:00
Update RemoteHost to return only ip and add tests
This commit is contained in:
committed by
Dan Christian Bogos
parent
fd08a595a5
commit
5674a18c6b
@@ -116,7 +116,7 @@ func testDiamItResetStorDb(t *testing.T) {
|
||||
|
||||
// Start CGR Engine
|
||||
func testDiamItStartEngine(t *testing.T) {
|
||||
if _, err := engine.StopStartEngine(daCfgPath, 4000); err != nil {
|
||||
if _, err := engine.StopStartEngine(daCfgPath, 200); err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
}
|
||||
@@ -646,7 +646,7 @@ func testDiamItCCRTerminate(t *testing.T) {
|
||||
if cdrs[0].Usage != 550*time.Second {
|
||||
t.Errorf("Unexpected Usage CDR: %+v", cdrs[0])
|
||||
}
|
||||
|
||||
// in case of sctp we get OriginHost ip1/ip2/ip3/...
|
||||
if !strings.Contains(cdrs[0].OriginHost, "127.0.0.1") {
|
||||
t.Errorf("Unexpected OriginHost CDR: %+v", cdrs[0])
|
||||
}
|
||||
|
||||
@@ -250,6 +250,9 @@ func testHAitCDRmtcall(t *testing.T) {
|
||||
if cdrs[0].Cost != 0.2188 {
|
||||
t.Errorf("Unexpected CDR Cost received, cdr: %+v ", cdrs[0].Cost)
|
||||
}
|
||||
if cdrs[0].OriginHost != "127.0.0.1" {
|
||||
t.Errorf("Unexpected CDR OriginHost received, cdr: %+v ", cdrs[0].OriginHost)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -311,7 +311,7 @@ func (dP *diameterDP) FieldAsString(fldPath []string) (data string, err error) {
|
||||
|
||||
// RemoteHost is part of engine.DataProvider interface
|
||||
func (dP *diameterDP) RemoteHost() net.Addr {
|
||||
return dP.c.RemoteAddr()
|
||||
return utils.NewNetAddr(dP.c.RemoteAddr().Network(), dP.c.RemoteAddr().String())
|
||||
}
|
||||
|
||||
// FieldAsInterface is part of engine.DataProvider interface
|
||||
|
||||
@@ -103,7 +103,7 @@ func (hU *httpUrlDP) AsNavigableMap([]*config.FCTemplate) (
|
||||
|
||||
// RemoteHost is part of engine.DataProvider interface
|
||||
func (hU *httpUrlDP) RemoteHost() net.Addr {
|
||||
return newHttpRemoteAddr(hU.req.RemoteAddr)
|
||||
return utils.NewNetAddr("TCP", hU.req.RemoteAddr)
|
||||
}
|
||||
|
||||
func newHTTPXmlDP(req *http.Request) (dP config.DataProvider, err error) {
|
||||
@@ -198,7 +198,7 @@ func (hU *httpXmlDP) AsNavigableMap([]*config.FCTemplate) (
|
||||
|
||||
// RemoteHost is part of engine.DataProvider interface
|
||||
func (hU *httpXmlDP) RemoteHost() net.Addr {
|
||||
return newHttpRemoteAddr(hU.addr)
|
||||
return utils.NewNetAddr("TCP", hU.addr)
|
||||
}
|
||||
|
||||
// httpAgentReplyEncoder will encode []*engine.NMElement
|
||||
@@ -245,20 +245,3 @@ func (xE *haXMLEncoder) Encode(nM *config.NavigableMap) (err error) {
|
||||
_, err = xE.w.Write(xmlOut)
|
||||
return
|
||||
}
|
||||
|
||||
func newHttpRemoteAddr(ip string) *httpRemoteAddr {
|
||||
return &httpRemoteAddr{ip: ip}
|
||||
|
||||
}
|
||||
|
||||
type httpRemoteAddr struct {
|
||||
ip string
|
||||
}
|
||||
|
||||
func (http *httpRemoteAddr) Network() string {
|
||||
return utils.TCP
|
||||
}
|
||||
|
||||
func (http *httpRemoteAddr) String() string {
|
||||
return http.ip
|
||||
}
|
||||
|
||||
@@ -193,5 +193,5 @@ func (pk *radiusDP) AsNavigableMap([]*config.FCTemplate) (
|
||||
|
||||
// RemoteHost is part of engine.DataProvider interface
|
||||
func (pk *radiusDP) RemoteHost() net.Addr {
|
||||
return pk.req.RemoteAddr()
|
||||
return utils.NewNetAddr(pk.req.RemoteAddr().Network(), pk.req.RemoteAddr().String())
|
||||
}
|
||||
|
||||
@@ -282,6 +282,9 @@ func TestRAitAcctStop(t *testing.T) {
|
||||
if cdrs[0].Cost != 0.01 {
|
||||
t.Errorf("Unexpected CDR Cost received for CDR: %v", cdrs[0].Cost)
|
||||
}
|
||||
if cdrs[0].ExtraFields["RemoteAddr"] != "127.0.0.1" {
|
||||
t.Errorf("Unexpected CDR RemoteAddr received for CDR: %+v", utils.ToJSON(cdrs[0]))
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -276,5 +276,5 @@ func (cP *csvProvider) AsNavigableMap([]*config.FCTemplate) (
|
||||
|
||||
// RemoteHost is part of engine.DataProvider interface
|
||||
func (cP *csvProvider) RemoteHost() net.Addr {
|
||||
return new(utils.LocalAddr)
|
||||
return utils.LocalAddr()
|
||||
}
|
||||
|
||||
@@ -325,5 +325,5 @@ func (fP *fwvProvider) AsNavigableMap([]*config.FCTemplate) (
|
||||
|
||||
// RemoteHost is part of engine.DataProvider interface
|
||||
func (fP *fwvProvider) RemoteHost() net.Addr {
|
||||
return new(utils.LocalAddr)
|
||||
return utils.LocalAddr()
|
||||
}
|
||||
|
||||
@@ -279,5 +279,5 @@ func (xP *xmlProvider) AsNavigableMap([]*config.FCTemplate) (
|
||||
|
||||
// RemoteHost is part of engine.DataProvider interface
|
||||
func (xP *xmlProvider) RemoteHost() net.Addr {
|
||||
return new(utils.LocalAddr)
|
||||
return utils.LocalAddr()
|
||||
}
|
||||
|
||||
@@ -170,7 +170,7 @@ func (nM *NavigableMap) String() string {
|
||||
|
||||
// RemoteHost is part of engine.DataProvider interface
|
||||
func (nM *NavigableMap) RemoteHost() net.Addr {
|
||||
return new(utils.LocalAddr)
|
||||
return utils.LocalAddr()
|
||||
}
|
||||
|
||||
// indexMapElements will recursively go through map and index the element paths into elmns
|
||||
|
||||
@@ -65,6 +65,8 @@
|
||||
"value": "*pseudoprepaid", "mandatory": true},
|
||||
{"tag": "OriginID", "field_id": "OriginID", "type": "*composed",
|
||||
"value": "~*req.CDR_ID", "mandatory": true},
|
||||
{"tag": "OriginHost", "field_id": "OriginHost", "type": "*remote_host",
|
||||
"mandatory": true},
|
||||
{"tag": "Account", "field_id": "Account", "type": "*composed",
|
||||
"value": "~*req.msisdn", "mandatory": true},
|
||||
{"tag": "Destination", "field_id": "Destination", "type": "*composed",
|
||||
|
||||
@@ -65,6 +65,8 @@
|
||||
"value": "*pseudoprepaid", "mandatory": true},
|
||||
{"tag": "OriginID", "field_id": "OriginID", "type": "*composed",
|
||||
"value": "~*req.CDR_ID", "mandatory": true},
|
||||
{"tag": "OriginHost", "field_id": "OriginHost", "type": "*remote_host",
|
||||
"mandatory": true},
|
||||
{"tag": "Account", "field_id": "Account", "type": "*composed",
|
||||
"value": "~*req.msisdn", "mandatory": true},
|
||||
{"tag": "Destination", "field_id": "Destination", "type": "*composed",
|
||||
|
||||
@@ -146,6 +146,7 @@
|
||||
"value": "~*req.Ascend-User-Acct-Time", "mandatory": true},
|
||||
{"tag": "Usage", "field_id": "Usage", "type": "*usage_difference",
|
||||
"value": "~*req.Event-Timestamp;~*req.Ascend-User-Acct-Time", "mandatory": true},
|
||||
{"tag": "RemoteAddr" , "field_id": "RemoteAddr", "type": "*remote_host"},
|
||||
],
|
||||
"reply_fields":[],
|
||||
},
|
||||
|
||||
@@ -906,5 +906,5 @@ func (cdrP *cdrLogProvider) AsNavigableMap([]*config.FCTemplate) (
|
||||
|
||||
// RemoteHost is part of engine.DataProvider interface
|
||||
func (cdrP *cdrLogProvider) RemoteHost() net.Addr {
|
||||
return new(utils.LocalAddr)
|
||||
return utils.LocalAddr()
|
||||
}
|
||||
|
||||
@@ -1095,5 +1095,5 @@ func (cd *CallDescriptor) AsNavigableMap(tpl []*config.FCTemplate) (nM *config.N
|
||||
|
||||
// RemoteHost is part of utils.DataProvider
|
||||
func (cd *CallDescriptor) RemoteHost() net.Addr {
|
||||
return new(utils.LocalAddr)
|
||||
return utils.LocalAddr()
|
||||
}
|
||||
|
||||
@@ -65,7 +65,7 @@ func (me MapEvent) AsNavigableMap([]*config.FCTemplate) (*config.NavigableMap, e
|
||||
}
|
||||
|
||||
func (me MapEvent) RemoteHost() net.Addr {
|
||||
return new(utils.LocalAddr)
|
||||
return utils.LocalAddr()
|
||||
}
|
||||
|
||||
func (me MapEvent) HasField(fldName string) (has bool) {
|
||||
|
||||
@@ -139,5 +139,5 @@ func (cP *csvProvider) AsNavigableMap([]*config.FCTemplate) (
|
||||
|
||||
// RemoteHost is part of engine.DataProvider interface
|
||||
func (cP *csvProvider) RemoteHost() net.Addr {
|
||||
return new(utils.LocalAddr)
|
||||
return utils.LocalAddr()
|
||||
}
|
||||
|
||||
@@ -20,6 +20,7 @@ package utils
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
"net"
|
||||
"reflect"
|
||||
"sort"
|
||||
"strconv"
|
||||
@@ -340,12 +341,49 @@ func DaysInYear(year int) float64 {
|
||||
return float64(last.Sub(first).Hours() / 24)
|
||||
}
|
||||
|
||||
type LocalAddr struct{}
|
||||
|
||||
func (lc *LocalAddr) Network() string {
|
||||
return Local
|
||||
func LocalAddr() *NetAddr {
|
||||
return &NetAddr{network: Local, ip: Local}
|
||||
}
|
||||
|
||||
func (lc *LocalAddr) String() string {
|
||||
return Local
|
||||
func NewNetAddr(network, host string) *NetAddr {
|
||||
ip, port, err := net.SplitHostPort(host)
|
||||
if err != nil {
|
||||
Logger.Warning(fmt.Sprintf("failed parsing RemoteAddr: %s, err: %s",
|
||||
host, err.Error()))
|
||||
}
|
||||
p, err := strconv.Atoi(port)
|
||||
if err != nil {
|
||||
Logger.Warning(fmt.Sprintf("failed converting port : %+v, err: %s",
|
||||
port, err.Error()))
|
||||
}
|
||||
return &NetAddr{network: network, ip: ip, port: p}
|
||||
}
|
||||
|
||||
type NetAddr struct {
|
||||
network string
|
||||
ip string
|
||||
port int
|
||||
}
|
||||
|
||||
// Network is part of net.Addr interface
|
||||
func (lc *NetAddr) Network() string {
|
||||
return lc.network
|
||||
}
|
||||
|
||||
// String is part of net.Addr interface
|
||||
func (lc *NetAddr) String() string {
|
||||
return lc.ip
|
||||
}
|
||||
|
||||
// Port
|
||||
func (lc *NetAddr) Port() int {
|
||||
return lc.port
|
||||
}
|
||||
|
||||
// Host
|
||||
func (lc *NetAddr) Host() string {
|
||||
if lc.ip == Local {
|
||||
return Local
|
||||
}
|
||||
return ConcatenatedKey(lc.ip, strconv.Itoa(lc.port))
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user