4
4
"fmt"
5
5
"github.com/icholy/digest"
6
6
"io"
7
+ "log"
7
8
"mime"
8
9
"mime/multipart"
9
10
"net/http"
@@ -43,7 +44,7 @@ type Event struct {
43
44
}
44
45
45
46
func (camera * DhCamera ) readEvents (channel chan <- DhEvent , callback func ()) {
46
- request , err := http .NewRequest ("GET" , camera .Url + "/cgi-bin/eventManager.cgi?action=attach&codes=All" , nil )
47
+ request , err := http .NewRequest ("GET" , camera .Url + "/cgi-bin/eventManager.cgi?action=attach&codes=[ All] " , nil )
47
48
if err != nil {
48
49
fmt .Printf ("DAHUA: Error: Could not connect to camera %s\n " , camera .Name )
49
50
fmt .Println ("DAHUA: Error" , err )
@@ -58,11 +59,20 @@ func (camera *DhCamera) readEvents(channel chan<- DhEvent, callback func()) {
58
59
if err != nil {
59
60
fmt .Printf ("DAHUA: Error opening HTTP connection to camera %s\n " , camera .Name )
60
61
fmt .Println (err )
62
+ callback ()
61
63
return
62
64
}
65
+ defer response .Body .Close ()
63
66
64
67
if response .StatusCode != 200 {
65
68
fmt .Printf ("DAHUA: Warning: Status Code was not 200, but %v\n " , response .StatusCode )
69
+ if camera .Debug { // DUMP BODY
70
+ body , err := io .ReadAll (response .Body )
71
+ if err != nil {
72
+ log .Fatalln (err )
73
+ }
74
+ fmt .Println (string (body ))
75
+ }
66
76
}
67
77
68
78
// FIGURE OUT MULTIPART BOUNDARY
@@ -154,7 +164,7 @@ func (server *Server) addCamera(waitGroup *sync.WaitGroup, cam *DhCamera, channe
154
164
}
155
165
156
166
// PROBE AUTH
157
- request , err := http .NewRequest ("GET" , cam .Url + "/cgi-bin/eventManager .cgi?action=getConfig&name=General" , nil )
167
+ request , err := http .NewRequest ("GET" , cam .Url + "/cgi-bin/configManager .cgi?action=getConfig&name=General" , nil )
158
168
if err != nil {
159
169
fmt .Printf ("DAHUA: Error probing auth method for camera %s\n " , cam .Name )
160
170
fmt .Println (err )
@@ -167,6 +177,7 @@ func (server *Server) addCamera(waitGroup *sync.WaitGroup, cam *DhCamera, channe
167
177
fmt .Println (err )
168
178
return
169
179
}
180
+ defer response .Body .Close ()
170
181
if response .StatusCode == 401 {
171
182
if response .Header .Get ("WWW-Authenticate" ) == "" {
172
183
// BAD PASSWORD
@@ -213,7 +224,7 @@ func (server *Server) addCamera(waitGroup *sync.WaitGroup, cam *DhCamera, channe
213
224
if done {
214
225
break
215
226
}
216
- go cam .readEvents (channel , callback )
227
+ cam .readEvents (channel , callback )
217
228
}
218
229
fmt .Printf ("DAHUA: Closed connection to camera %s\n " , cam .Name )
219
230
}()
0 commit comments