bool ZMEvents::Create(void) { bool foundtheme = false; // Load the theme for this screen foundtheme = LoadWindowFromXML("zoneminder-ui.xml", "zmevents", this); if (!foundtheme) return false; bool err = false; UIUtilE::Assign(this, m_eventNoText, "eventno_text", &err); UIUtilE::Assign(this, m_playButton, "play_button", &err); UIUtilE::Assign(this, m_deleteButton, "delete_button", &err); UIUtilE::Assign(this, m_cameraSelector, "camera_selector", &err); UIUtilE::Assign(this, m_dateSelector, "date_selector", &err); if (err) { LOG(VB_GENERAL, LOG_ERR, "Cannot load screen 'zmevents'"); return false; } BuildFocusList(); getCameraList(); getDateList(); connect(m_cameraSelector, SIGNAL(itemSelected(MythUIButtonListItem*)), this, SLOT(cameraChanged())); connect(m_dateSelector, SIGNAL(itemSelected(MythUIButtonListItem*)), this, SLOT(dateChanged())); // play button if (m_playButton) { m_playButton->SetText(tr("Play")); connect(m_playButton, SIGNAL(Clicked()), this, SLOT(playPressed())); } // delete button if (m_deleteButton) { m_deleteButton->SetText(tr("Delete")); connect(m_deleteButton, SIGNAL(Clicked()), this, SLOT(deletePressed())); } m_oldestFirst = (gCoreContext->GetNumSetting("ZoneMinderOldestFirst", 1) == 1); m_showContinuous = (gCoreContext->GetNumSetting("ZoneMinderShowContinuous", 0) == 1); getEventList(); setGridLayout(gCoreContext->GetNumSetting("ZoneMinderGridLayout", 1)); return true; }
//@see Design-page 9 void handle_recovery_req(int sd, char* clientIP){ char buf[RBUFMAX]; char log_buf[STR_MAX]; char user[STR_MAX]; char filename[STR_MAX]; char filepath[STR_MAX]; char backup_dir_path[STR_MAX]; char day[4]; char date[12]; char date_list[8][12]; unsigned int d_list_idx; unsigned int i; //char cmd[STR_MAX]; int response, len, fid; const int endQ = -1; int Q, tlen, tresp; tlen = 0; logger(SVR, "RECOVERY REQUEST START"); read(sd, &len, sizeof(len)); len = ntohl(len);// read(sd, user, len); response = isMatch(user, clientIP); tresp = htonl(response);// write(sd, &tresp, sizeof(tresp));// sprintf(backup_dir_path, "%s/%s", BACKUP_DIR, user); logger(SVR, "set path"); if(response){ //get file read(sd, &len, sizeof(len)); len = ntohl(len);// read(sd, date, len); printf("%d %s\n", len, date); d_list_idx = 0; d_list_idx = getDateList(date, date_list); for(i = 0; i <= d_list_idx; i++){ getWeekDay(date_list[i], day); sprintf(filename, "%s.tgz", date_list[i]); sprintf(filepath, "%s/%s/%s", backup_dir_path, day, filename); if( (fid = open(filepath, O_RDONLY)) < 0){ sprintf(log_buf, "There is no File : %s\n", filepath); logger(SVR, log_buf); continue; } //transmit file if it exist len = strlen(filename) + 1; tlen = htonl(len);// #if DEBUG printf("%d %d %s\n", len, tlen, filename); #endif write(sd, &tlen, sizeof(tlen)); write(sd, filename, len); while( (len = read(fid, buf, sizeof(buf))) > 0 ){ #if DEBUG printf("%d %d %d\n", len, htonl(len), sizeof(buf)); #endif tlen = htonl(len);// write(sd, &tlen, sizeof(tlen)); write(sd, buf, len); } printf("%d %d\n", endQ, htonl(endQ)); Q = htonl(endQ); write(sd, &Q, sizeof(Q)); if(fid) close(fid); } Q = htonl(endQ); write(sd, &Q, sizeof(Q)); } logger(SVR, "RECOVERY REQUEST END"); if(sd) close(sd); exit(1); }