added support for tcp and unix sockets
This commit is contained in:
26
clamd.go
26
clamd.go
@@ -28,8 +28,9 @@ package clamd
|
||||
import (
|
||||
"errors"
|
||||
"fmt"
|
||||
"log"
|
||||
"io"
|
||||
"log"
|
||||
"net/url"
|
||||
"strings"
|
||||
)
|
||||
|
||||
@@ -47,13 +48,28 @@ type Stats struct {
|
||||
|
||||
var EICAR = []byte(`X5O!P%@AP[4\PZX54(P^)7CC)7}$EICAR-STANDARD-ANTIVIRUS-TEST-FILE!$H+H*`)
|
||||
|
||||
func (c *Clamd) newConnection() (*CLAMDConn, error) {
|
||||
conn, err := newCLAMDUnixConn(c.address)
|
||||
return conn, err
|
||||
func (c *Clamd) newConnection() (conn *CLAMDConn, err error) {
|
||||
|
||||
var u *url.URL
|
||||
|
||||
if u, err = url.Parse(c.address); err != nil {
|
||||
return
|
||||
}
|
||||
|
||||
switch u.Scheme {
|
||||
case "tcp":
|
||||
conn, err = newCLAMDTcpConn(u.Host)
|
||||
case "unix":
|
||||
conn, err = newCLAMDUnixConn(u.Path)
|
||||
default:
|
||||
conn, err = newCLAMDUnixConn(c.address)
|
||||
}
|
||||
|
||||
return
|
||||
}
|
||||
|
||||
func (c *Clamd) simpleCommand(command string) (chan string, error) {
|
||||
conn, err := newCLAMDUnixConn(c.address)
|
||||
conn, err := c.newConnection()
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
9
conn.go
9
conn.go
@@ -110,6 +110,15 @@ func (c *CLAMDConn) readResponse() (chan string, sync.WaitGroup, error) {
|
||||
return ch, wg, nil
|
||||
}
|
||||
|
||||
func newCLAMDTcpConn(address string) (*CLAMDConn, error) {
|
||||
conn, err := net.Dial("tcp", address)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
return &CLAMDConn{Conn: conn}, err
|
||||
}
|
||||
|
||||
func newCLAMDUnixConn(address string) (*CLAMDConn, error) {
|
||||
conn, err := net.Dial("unix", address)
|
||||
if err != nil {
|
||||
|
||||
Reference in New Issue
Block a user