示例#1
0
/** A PASV command received
  *
  * The PASV command is used to switch the server mode between
  * Active and Passive modes.
  *
  */
void RainbruRPG::Network::Ftp::FtpTransfer::commandPASV(){
  /*  if (transferMode==FTM_PASSIVE){
    transferMode=FTM_ACTIVE;
  }
  else{
    transferMode=FTM_PASSIVE;
  }

  QString s("Switching to ");
  if (transferMode==FTM_PASSIVE){
    s+="PASSIVE";
    emit(switchToPassiveMode());
  }
  else{
    s+="ACTIVE";
    emit(switchToActiveMode());
  }
  s+=" mode";
  */
  emit(switchToPassiveMode());
  QString s("PASV command deactivated");
  emit(log(s));
}
void VorticonEngine::pumpEvent(const CEvent *evPtr)
{
    KeenEngine::pumpEvent(evPtr);

    if( dynamic_cast<const FinishedLoadingResources*>(evPtr) )
    {        
        switchToPassiveMode();
        gpSaveGameController->convertAllOldFormats();
    }
    else if( const NewGamePlayersEvent* pNewGame = dynamic_cast<const NewGamePlayersEvent*>(evPtr) )
    {
        gpBehaviorEngine->mPlayers = pNewGame->mSelection;
        gEventManager.add( new OpenMenuEvent(new CDifficultySelection) );
        return;
    }
    // Control Menu Events
    else if( const OpenMovementControlMenuEvent* ctrlMenu = dynamic_cast<const OpenMovementControlMenuEvent*>(evPtr) )
    {
        const int players = ctrlMenu->mSelection;
        gEventManager.add( new OpenMenuEvent(
                                new CControlSettingsMovement(players) ) );
    }
    else if( const OpenButtonsControlMenuEvent* ctrlMenu = dynamic_cast<const OpenButtonsControlMenuEvent*>(evPtr) )
    {
        const int players = ctrlMenu->mSelection;
        gEventManager.add( new OpenMenuEvent(
                                new CControlSettingsButtons(players) ) );
    }
    else if( const OpenControlMenuEvent* ctrlMenu = dynamic_cast<const OpenControlMenuEvent*>(evPtr) )
    {
        const int players = ctrlMenu->mSelection;
        gEventManager.add( new OpenMenuEvent(
                                new CControlsettings(players) ) );
    }
    else if( const GMSwitchToPlayGameMode* pPlayGame = dynamic_cast<const GMSwitchToPlayGameMode*>(evPtr) )
    {
        const GMSwitchToPlayGameMode &playGame = *pPlayGame;
        mpGameMode.reset( new CPlayGameVorticon(playGame.m_startlevel) );

        if(!gEventManager.empty())
            gEventManager.clear();

        mpGameMode->init();
        mOpenedGamePlay = true;
        gpBehaviorEngine->setPause(false);
        gEventManager.add( new CloseAllMenusEvent() );        
    }
    else if( dynamic_cast<const GMSwitchToPassiveMode*>(evPtr) )
    {
        mpGameMode.reset( new vorticon::CPassiveVort() );
        mpGameMode->init();
    }
    else if( dynamic_cast<const LoadGameEvent*>(evPtr) ) // If GamePlayMode is not running but loading is requested...
    {
        std::unique_ptr<CPlayGameVorticon> pgVort(new CPlayGameVorticon());
        pgVort->init();
        pgVort->loadGame();
        mpGameMode = std::move(pgVort);
        mOpenedGamePlay = true;
        gpBehaviorEngine->setPause(false);
        gEventManager.add( new CloseAllMenusEvent() );
    }
    else if( dynamic_cast<const OpenMainMenuEvent*>(evPtr) )
    {
        gEventManager.add( new OpenMenuEvent( new MainMenu(mOpenedGamePlay) ) );
    }
    else if( const StartInfoSceneEvent *scene = dynamic_cast<const StartInfoSceneEvent*>(evPtr) )
    {
        gMenuController.lock(true);
        gMenuController.hide(true);
        mpInfoScene = scene->mpScene;
        mpInfoScene->init();
    }
}
示例#3
0
/** The constructor
  *
  * \param parent The parent widget
  * \param port   The port used to connect to the Protocol Interpreter
  *
  */
RainbruRPG::Network::Ftp::FtpServer::FtpServer(QWidget* parent, quint16 port)
  : QWidget(parent){

  setWindowTitle("RainbruRPG FTP server");
  setMinimumWidth(550);
  QVBoxLayout *mainLayout = new QVBoxLayout;

  // Control widgets
  QLabel* lab1=new QLabel(tr("Control :"), this);
  mainLayout->addWidget(lab1);
  textEdit=new QTextEdit(this);
  mainLayout->addWidget(textEdit);
  setLayout(mainLayout);

  // Transfert widgets
  QLabel* lab2=new QLabel(tr("Transfert :"), this);
  mainLayout->addWidget(lab2);
  tree=new Q3ListView(this);
  tree->addColumn("Ip:port", 150);
  tree->addColumn("Filename", 160);
  tree->addColumn("In/Out");
  tree->addColumn("Rate", 80);
  tree->addColumn("Size", 100);
  tree->addColumn("Rem.time", 120);
  tree->addColumn("Progress", 200);
  mainLayout->addWidget(tree);



  control=new FtpControl(50002);
  connect(control, SIGNAL(log(const QString&)), this, 
	  SLOT(log(const QString&)));
  control->run();

  transfer=new FtpTransfer(50001);
  connect(transfer, SIGNAL(log(const QString&)), this, 
	  SLOT(log(const QString&)));
  transfer->run();

  connect(control, SIGNAL(transferListeningPort(const QString&,int)), 
	  transfer, SLOT(changeHost(const QString&,int)));

  // Commands connections
  connect(control, SIGNAL(commandLIST()), 
	  transfer, SLOT(commandLIST()));

  connect(control, SIGNAL(commandPASV()), 
	  transfer, SLOT(commandPASV()));

  connect(control, SIGNAL(commandRETR(const QString&)), 
	  transfer, SLOT(commandRETR(const QString&)));

  connect(control, SIGNAL(commandSTOR(const QString&)), 
	  transfer, SLOT(commandSTOR(const QString&)));

  // Transfer type switching
  connect(control, SIGNAL(switchToBinaryType()), 
	  transfer, SLOT(switchToBinaryType()));
  connect(control, SIGNAL(switchToAsciiType()), 
	  transfer, SLOT(switchToAsciiType()));

  // Transfer mode switching
  connect(transfer, SIGNAL(switchToActiveMode()), 
	  control, SLOT(switchToActiveMode()));

  connect(transfer, SIGNAL(switchToPassiveMode()), 
	  control, SLOT(switchToPassiveMode()));


  // transfer control
  connect(transfer, SIGNAL(startTransferFile(const QString&, qint64)), 
	  control, SLOT(startTransferFile(const QString&, qint64)));

  connect(transfer, SIGNAL(waitTransferFile(const QString&)), 
	  control, SLOT(waitTransferFile(const QString&)));

  connect(transfer, SIGNAL(transferComplete(const QString&)), 
	  control, SLOT(transferComplete(const QString&)));

  connect(transfer, SIGNAL(transferComplete(const QString&)), 
	  this, SIGNAL(transferComplete(const QString&)));

  // Transfer visual management
 connect(control,
	 SIGNAL(addTransferVisual(const QString&,const QString&,const QString&,bool, int)),
	 this, 
	 SLOT(addTransferVisual(const QString&,const QString&, const QString&, bool, int)));

 connect(transfer, SIGNAL(updateTransferVisual(const QString& , int)),
	 this, SLOT(updateTransferVisual(const QString& , int)));

 // QuarantineList signal
 connect(transfer, SIGNAL(storeFile(const QString&)), this,
	 SIGNAL(storeFile(const QString&)));

}