diff --git a/pkg/isapi/client.go b/pkg/isapi/client.go index bffe62f5..e5dfafd4 100644 --- a/pkg/isapi/client.go +++ b/pkg/isapi/client.go @@ -2,12 +2,13 @@ package isapi import ( "errors" - "github.com/AlexxIT/go2rtc/pkg/core" - "github.com/AlexxIT/go2rtc/pkg/tcp" "io" "net" "net/http" "net/url" + + "github.com/AlexxIT/go2rtc/pkg/core" + "github.com/AlexxIT/go2rtc/pkg/tcp" ) type Client struct { @@ -84,15 +85,13 @@ func (c *Client) Dial() (err error) { } func (c *Client) Open() (err error) { - // Hikvision ISAPI may not accept a new open request if the previous one was not closed (e.g. - // using the test button on-camera or via curl command) but a close request can be sent even if - // the audio is already closed. So, we send a close request first and then open it again. Seems - // janky but it works. - - err = c.Close() - if err != nil { - return err - } + // Hikvision ISAPI may not accept a new open request if the previous one was not closed (e.g. + // using the test button on-camera or via curl command) but a close request can be sent even if + // the audio is already closed. So, we send a close request first and then open it again. Seems + // janky but it works. + if err = c.Close(); err != nil { + return err + } link := c.url + "/ISAPI/System/TwoWayAudio/channels/" + c.channel req, err := http.NewRequest("PUT", link+"/open", nil) diff --git a/pkg/tcp/request.go b/pkg/tcp/request.go index d91cd48b..88da83b6 100644 --- a/pkg/tcp/request.go +++ b/pkg/tcp/request.go @@ -9,6 +9,8 @@ import ( "net/http" "strings" "time" + + "github.com/AlexxIT/go2rtc/pkg/core" ) // Do - http.Client with support Digest Authorization @@ -115,9 +117,7 @@ func Do(req *http.Request) (*http.Response, error) { ) case "auth": nc := "00000001" - // TODO: Random cnonce - // Here is temp static cnonce of required 32 bytes - cnonce := "ZDlmODczZTk2NjQyZTQ4OGQ5ZGEzOTI3YTc5Y2Q0ZGM=" + cnonce := core.RandString(32, 64) response := HexMD5(ha1, nonce, nc, cnonce, qop, ha2) header = fmt.Sprintf( `Digest username="%s", realm="%s", nonce="%s", uri="%s", qop=%s, nc=%s, cnonce="%s", response="%s"`,