struct sockaddr_in find_peer(int sockfd) { struct timeval tv; tv.tv_sec = 1; tv.tv_usec = 0; Setsockopt(sockfd, SOL_SOCKET, SO_RCVTIMEO, &tv, sizeof(tv)); struct sockaddr_in servaddr; socklen_t servaddr_len = sizeof(servaddr); bzero(&servaddr, servaddr_len); servaddr.sin_family = AF_INET; servaddr.sin_port = htons(CHAT_PORT); /* Remove the last octet from the address */ char *dot = strrchr(subnet_address, '.'); dot[1] = 0; int i = start_idx; char try_address[strlen(subnet_address) + 4]; int is_conn = 0; do { update_try_address(try_address, sizeof(try_address), subnet_address, i, &servaddr); printf("Trying %s\n", try_address); auth_request(sockfd, (SA *) &servaddr, servaddr_len); printf("Sent auth request\n"); is_conn = auth_try_confirm(sockfd, (SA *) &servaddr, &servaddr_len); ++i; } while (!is_conn); printf("Bound!\n"); return servaddr; }
bool http_async_delegate::do_system_callback( DWORD status, void* info, DWORD length ) { switch( status ) { case WINHTTP_CALLBACK_STATUS_SENDREQUEST_COMPLETE: case WINHTTP_CALLBACK_STATUS_WRITE_COMPLETE: { if( info != NULL && length == sizeof( DWORD ) ) { DWORD written = *(static_cast< DWORD* >( info )); buffer_->flush( written ); } if( buffer_->empty() == false ) { if( ::WinHttpWriteData( request_, buffer_->buffer(), buffer_->size(), 0 ) == FALSE ) { throw http_utility::http_exception( API_WRITE_DATA, ::GetLastError() ); } } else { if( ::WinHttpReceiveResponse( request_, NULL ) == FALSE ) { DWORD response_error = ::GetLastError(); if( response_error == ERROR_WINHTTP_RESEND_REQUEST ) { if( send_request() == false ) { throw http_utility::http_exception( API_SEND_REQUEST, ::GetLastError() ); } return true; } else { throw http_utility::http_exception( API_RECEIVE_RESPONSE, response_error ); } } } } break; case WINHTTP_CALLBACK_STATUS_HEADERS_AVAILABLE: { http_response_header header( request_ ); DWORD status_code = header.status_code(); if( status_code == HTTP_STATUS_DENIED || status_code == HTTP_STATUS_PROXY_AUTH_REQ ) { if( auth_request( status_code ) == false ) { throw http_utility::http_exception( API_HEADER_STATUS_CODE, status_code ); } return true; } else { if( status_code >= HTTP_STATUS_BAD_REQUEST ) { throw http_utility::http_exception( API_HEADER_STATUS_CODE, status_code ); } } clear_request_data(); http_content* content = content_; if( content == NULL || content->on_header( header ) == false ) { return false; } buffer_->clear(); if( ::WinHttpReadData( request_, buffer_->buffer(), buffer_->max_size(), NULL ) == FALSE ) { throw http_utility::http_exception( API_READ_DATA, ::GetLastError() ); } } break; case WINHTTP_CALLBACK_STATUS_READ_COMPLETE: { http_content* content = content_; if( content == NULL ) { return false; } if( length > 0 ) { buffer_->had_copied( length ); if( content->on_body( buffer_->buffer(), buffer_->size() ) == false ) { return false; } buffer_->clear(); if( ::WinHttpReadData( request_, buffer_->buffer(), buffer_->max_size(), NULL ) == FALSE ) { throw http_utility::http_exception( API_READ_DATA, ::GetLastError() ); } } else { content->on_complete(); return false; } } break; case WINHTTP_CALLBACK_STATUS_REQUEST_ERROR: { WINHTTP_ASYNC_RESULT* result = static_cast< WINHTTP_ASYNC_RESULT* >( info ); throw http_utility::http_exception( result->dwResult, result->dwError ); } break; case WINHTTP_CALLBACK_STATUS_HANDLE_CLOSING: { throw http_utility::http_exception( API_HANDLE_CLOSING, ::GetLastError() ); } break; } return true; }
int main( int argc, char ** argv ) { QApplication a( argc, argv ); puts("`````````````````````````````````````````````````"); printf("RESHKA MAIN PROCESS ID - %d\n", getpid()); printf("VERSION: %s\n", PROGRAMM_VERSION); puts("`````````````````````````````````````````````````"); startHW(); get_setup_params(); hw->DSP_Up(UpStr); hw->DSP_Down(DownStr); init_keyboard_device(&a); bool flag = auth_request(false); if ( flag ) { cfw = new mainmenuForm; cfw->setWindowState(Qt::WindowNoState); cfw->setWindowState(Qt::WindowFullScreen); //printf("Authorization::GetInstance()->GetUserName() = %s \n", Authorization::GetInstance()->GetUserName()); cfw->textLabel2->setText(DBCodec->toUnicode((Authorization::GetInstance()->GetUserName()))); applyRights(); while ( true ) { puts("------Main Menu------"); cfw->setWindowState(Qt::WindowNoState); cfw->setWindowState(Qt::WindowFullScreen); cfw->exec(); //printf("Selected point = %d \n", cfw->focus_num); cfw->releaseKeyboard(); if ( cfw->exec_flag ) { switch(cfw->focus_num) { case 0 : printf("--------lincash-------\n"); delete (hw); ExecProgram(REG_PATH, REG_NAME, uid);//, REG_NAME); ///-------------------------23/10 16.41--------------- cfw->grabKeyboard(); //---(+)---Zuskin---27/02/2012--- sp.ReloadSections(); //------------------------------- startHW(); hw->DSP_Up(UpStr); hw->DSP_Down(DownStr); break; case 1 : printf("-------service-----\n"); //delete (hw); //QApplication::setOverrideCursor( QCursor(Qt::WaitCursor) ); //ExecProgram(SERVICE_PATH, SERVICE_NAME, uid);//, SERVICE_NAME); StartService(); cfw->exec_flag = false; cfw->grabKeyboard(); //QApplication::restoreOverrideCursor(); //startHW(); hw->DSP_Up(UpStr); hw->DSP_Down(DownStr); break; case 2 : printf("-------accessrights-------\n"); delete (hw); //printf("RIGHTS_PATH = %s \n", RIGHTS_PATH); ExecProgram(RIGHTS_PATH);//, RIGHTS_NAME); Authorization::GetInstance()->GetRights(Authorization::GetInstance()->GetUid()); applyRights(); cfw->grabKeyboard(); startHW(); hw->DSP_Up(UpStr); hw->DSP_Down(DownStr); break; case 3 : printf("--------ware------\n"); delete (hw); ExecProgram(WARE_PATH);//, SETUP_NAME); cfw->grabKeyboard(); startHW(); hw->DSP_Up(UpStr); hw->DSP_Down(DownStr); break; case 4 : printf("-------programsetup-----\n"); StartSetup(); cfw->grabKeyboard(); get_setup_params(); cfw->exec_flag = false; hw->DSP_Up(UpStr); hw->DSP_Down(DownStr); break; case 5 : printf("--------devicesetup-------\n"); if ( kbcode_scaner != NULL ) { delete (kbcode_scaner); kbcode_scaner = NULL; } if ( kbcode_reader != NULL ) { delete (kbcode_reader); kbcode_reader = NULL; } delete (hw); ExecProgram(DCONF_PATH);//, DCONF_NAME); cfw->grabKeyboard(); startHW(); init_keyboard_device(&a); hw->DSP_Up(UpStr); hw->DSP_Down(DownStr); break; case 6 : printf("--------setuploadunload------\n"); delete (hw); ExecProgram(EXCH_PATH);//, EXCH_NAME); cfw->grabKeyboard(); startHW(); hw->DSP_Up(UpStr); hw->DSP_Down(DownStr); break; case 7 : printf("-------changeuser------\n"); bool auth = auth_request(true); while ( !auth ) auth = auth_request(true); cfw->grabKeyboard(); cfw->exec_flag = false; cfw->textLabel2->setText(DBCodec->toUnicode((Authorization::GetInstance()->GetUserName()))); applyRights(); break; } cfw->exec_flag = false; } else break; } delete(cfw); } if ( kbcode_scaner != NULL ) delete (kbcode_scaner); if ( kbcode_reader != NULL ) delete (kbcode_reader); if ( hw != NULL ) delete (hw); puts("END OF RESHKA"); return 0; }