Ejemplo n.º 1
0
int
CodeRevision::removetcp(int i) { 
    fprintf(stderr, "removing shred %d\n", _shreds[i]->procID );
    connect_tcp();
    if ( _connected ) { 
        Net_Msg msg;
        msg.type = MSG_REMOVE;
//      msg.param = _shreds[i].procID;
        msg.param = 0xffffffff;     
        otf_hton( &msg);
        ck_send( _tcp , (char*)&msg, sizeof(msg) );

        msg.type = MSG_DONE;
        otf_hton( &msg);
        ck_send( _tcp , (char*)&msg, sizeof(msg) );

        //        Net_Msg ret;
//        if ( ck_recv( _tcp , (char *)&ret, sizeof(ret) ) ) { 
//            fprintf( stderr, "[chuck(remote)]: operation %s\n", ( ret.param ? "successful" : "failed (sorry)" ) );
            _shreds.erase( _shreds.begin() + i );
//        }

    }
    close_tcp();
    return 1;
}
Ejemplo n.º 2
0
/* Stop TCP discard server */
int
dis0(
    int argc,
    char *argv[],
    void *p)
{
    if(disc_tcb != NULL)
        close_tcp(disc_tcb);
    return 0;
}
Ejemplo n.º 3
0
/* Stop TCP echo server */
int
echo0(
    int argc,
    char *argv[],
    void *p)
{
    if(echo_tcb != NULL)
        close_tcp(echo_tcb);
    return 0;
}
Ejemplo n.º 4
0
int
so_tcp_close(struct usock *up)
{
	if(up->cb.tcb != NULL){	/* In case it's been reset */
		up->cb.tcb->r_upcall = trdiscard;
		/* Tell the TCP_CLOSED upcall there's no more socket */
		up->cb.tcb->user = -1;
		close_tcp(up->cb.tcb);
	}
	return 0;
}
Ejemplo n.º 5
0
/* Start up FTP service */
int
ftpstart(int argc,char *argv[],void *p)
{
	struct socket lsocket;

	if(ftp_tcb != NULL)
		close_tcp(ftp_tcb);
	lsocket.address = INADDR_ANY;
	if(argc < 2)
		lsocket.port = IPPORT_FTP;
	else
		lsocket.port = tcp_port_number(argv[1]);

	ftp_tcb = open_tcp(&lsocket,NULL,TCP_SERVER,0,ftpscr,NULL,ftpscs,0,0);
	return 0;
}
Ejemplo n.º 6
0
static void tcp_receive(struct tcb *tcb, int32 cnt)
{

  char buffer[1024];
  struct mbuf *bp;

  if (tcb->user > 0) {
    recv_tcp(tcb, &bp, 0);
    while ((cnt = pullup(&bp, buffer, sizeof(buffer))) > 0)
      if (write(tcb->user, buffer, (unsigned) cnt) != cnt) {
	free_p(&bp);
	close_tcp(tcb);
	return;
      }
  }
}
Ejemplo n.º 7
0
void
TextContent::sendtcp () { 
    string blob = "";
    for ( int i = 0 ; i < _buf->nlines() ; i++ ) { 
        blob += _buf->line(i).str();
        if ( i != _buf->nlines() - 1 ) blob += "\n";
    }

    connect_tcp();

    if ( _connected ) { 
        //DO THAT TCP MAGIC THING
        
        Net_Msg msg;
        msg.type = MSG_ADD;
        msg.param = 1;
        strcpy ( (char*)msg.buffer, "editor->" );
        strcat ( (char*)msg.buffer, _buf->filename().c_str() );
        msg.param2 = (t_CKUINT) blob.size(); //trailing NUL?
        msg.length = 0;
        otf_hton( &msg );
        ck_send ( _tcp , (char *)&msg, sizeof(msg) );
        
        t_CKUINT left = blob.size() ; //include trailing NUL ?
        t_CKUINT done = 0;
        while ( left ) { 
            msg.length = ( left > NET_BUFFER_SIZE ) ? NET_BUFFER_SIZE : left; 
            msg.param3 = msg.length;
            memcpy( (void*)msg.buffer, (void*) (blob.c_str() + done ), msg.length *  sizeof (char)  );
            left -= msg.length;
            done += msg.length;
            msg.param2 = left;            
            fprintf(stderr, "sending %ld to %ld of %s\n", done - msg.length, done, _buf->filename().c_str());
            otf_hton( &msg );
            ck_send ( _tcp, (char*)&msg, sizeof(msg) );
        }

        msg.type = MSG_DONE;
        otf_hton( &msg );
        ck_send (_tcp , (char*)&msg, sizeof(msg));

        close_tcp();
    }
    else { 
        fprintf(stderr,"sendtcp::unable to establish connection to ChucK process...\n");
    }
}
Ejemplo n.º 8
0
int
so_tcp_shut(struct usock *up,int how)
{
	switch(how){
	case 0:	/* No more receives -- replace upcall */
		up->cb.tcb->r_upcall = trdiscard;
		break;
	case 1:	/* Send EOF */
		close_tcp(up->cb.tcb);
		break;
	case 2:	/* Blow away TCB */
		reset_tcp(up->cb.tcb);
		up->cb.tcb = NULL;
		break;
	}
	return 0;
}
Ejemplo n.º 9
0
static void tcp_send(struct tcb *tcb)
{

  int cnt;
  struct mbuf *bp;

  if ((cnt = space_tcp(tcb)) <= 0) {
    off_read(tcb->user);
    return;
  }
  if (!(bp = alloc_mbuf(cnt))) return;
  cnt = read(tcb->user, bp->data, (unsigned) cnt);
  if (cnt <= 0) {
    free_p(&bp);
    off_read(tcb->user);
    close_tcp(tcb);
    return;
  }
  bp->cnt = cnt;
  send_tcp(tcb, &bp);
}
Ejemplo n.º 10
0
Archivo: plug.c Proyecto: easymc/easymc
int emc_control(int plug, int id, int ctl){
	int result = -1;
	struct easymc_plug * pg = (struct easymc_plug *)global_get_plug(plug);
	if(!pg){
		errno = ENOPLUG;
		return -1;
	}
	if(!get_device_control(pg->device)) return -1;
	if(ctl & EMC_CTL_CLOSE){
		if(pg->ipc_){
			if(0 == close_ipc(pg->ipc_, id)){
				result = 0;
			}
		}
		if(pg->tcp_){
			if(0 == close_tcp(pg->tcp_, id)){
				result = 0;
			}
		}
	}
	return result;
}
Ejemplo n.º 11
0
int main (int argc, char *argv[])
{
    args_t args;

    memset (&args, 0, sizeof(args));

    // set default parameters
    args.address   = NULL;
    args.ai_family = AF_INET;
    args.port      = DEFAULT_PORT;
    args.port_nbr  = atoi(args.port);
    args.mode      = -1;

    printf ("\n[ simple remote shell for windows v2\n");

    parse_args(&args, argc, argv);

    if (args.mode == -1) {
        if (args.address==NULL) {
            args.mode=SERVER_MODE;
        } else {
            args.mode=CLIENT_MODE;
        }
    }

    if (open_tcp(&args))
    {
        if (args.mode == SERVER_MODE)
        {
            server(&args);
        } else {
            client(&args);
        }
        close_tcp(&args);
    }
    return 0;
}
Ejemplo n.º 12
0
int main (int argc, char *argv[])
{
  INIT_SECURITY_INTERFACE pInitSecurityInterface;
  
  // set buffer width of console
  setw (300);
  
  puts ("\n  [ cms v0.1 - Copyleft 2015 (x) @Odzhan\n");
  
  // set up default values
  args.address   = NULL;
  args.ai_family = AF_INET;
  args.port      = DEFAULT_PORT;
  args.port_nbr  = atoi(args.port);
  
  pInitSecurityInterface = (INIT_SECURITY_INTERFACE)GetProcAddress(LoadLibrary("Secur32"), "InitSecurityInterfaceA" );
  if (pInitSecurityInterface==NULL) printf ("didn't resolve");
  sspi = pInitSecurityInterface();
  
  // process command line
  parse_args(argc, argv);

  // resolve address and open socket
  if (open_tcp ()) 
  {
    start_handler ();
      
    // create credentials
    if (create_creds()==SEC_E_OK)
    {
      // connect to server
      if (connect (s, ai_addr, ai_addrlen) != SOCKET_ERROR) {
        // perform the handshake
        if (chs () == SEC_E_OK) {
          printf ("  [ connected\n\n");
          secure_info();
          ss=sspi->QueryContextAttributes (&hContext, SECPKG_ATTR_STREAM_SIZES, &Sizes );
          cbBufferLen  = Sizes.cbHeader  +  Sizes.cbMaximumMessage  +  Sizes.cbTrailer;
          pbBufferIn        = LocalAlloc(LMEM_FIXED, cbBufferLen);
          pbBufferOut       = LocalAlloc(LMEM_FIXED, cbBufferLen);
          pbDataIn=pbBufferIn + Sizes.cbHeader;
          pbDataOut=pbBufferOut + Sizes.cbHeader;
          cbBufferLen = Sizes.cbMaximumMessage;
          
          printf ("  [ running cmd\n");
          cmd();
            
        } else {
          printf ("  [ handshake failed\n");
        }
      } else {
        printf ("  [ unable to connect\n");
      }
    } else {
      printf ("  [ error creating credentials\n");
    }
    stop_handler ();
    close_tcp();
  }
  return 0;
}
Ejemplo n.º 13
0
int
CodeRevision::sendtcp( int replace ) { 

    string blob = "";
    for ( int i = 0 ; i < _buffer->nlines() ; i++ ) { 
        blob += _buffer->line(i).str();
        if ( i != _buffer->nlines() - 1 ) blob += "\n";
    }

    connect_tcp();

    if ( _connected ) { 

        //DO THAT TCP MAGIC THING
        
        Net_Msg msg;
        if ( replace == 0 ) { 
            msg.type = MSG_ADD;
            msg.param = 1;
        }
        else { 
            msg.type = MSG_REPLACE;
            msg.param = replace;;
        }

        strcpy ( (char*)msg.buffer, "editor->" );
        strcat ( (char*)msg.buffer, _buffer->filename().c_str() );
        msg.param2 = (t_CKUINT) blob.size(); //trailing NUL?
        msg.length = 0;
        otf_hton( &msg );
        ck_send ( _tcp , (char *)&msg, sizeof(msg) );
        
        t_CKUINT left = blob.size() ; //include trailing NUL ?
        t_CKUINT done = 0;
        while ( left ) { 
            msg.length = ( left > NET_BUFFER_SIZE ) ? NET_BUFFER_SIZE : left;
            msg.param3 = msg.length;
            memcpy( (void*)msg.buffer, (void*) (blob.c_str() + done ), msg.length *  sizeof (char)  );
            left -= msg.length;
            done += msg.length;
            msg.param2 = left;
            fprintf(stderr, "sending %ld to %ld of %s\n", done - msg.length, done, _buffer->filename().c_str());
            otf_hton( &msg );
            ck_send ( _tcp, (char*)&msg, sizeof(msg) );
        }

        msg.type = MSG_DONE;
        otf_hton( &msg );
        ck_send (_tcp , (char*)&msg, sizeof(msg));

        Net_Msg ret;
        if ( ck_recv( _tcp , (char *)&ret, sizeof(ret) ) ) { 
            fprintf( stderr, "[chuck(remote)]: operation %s\n", ( ret.param ? "successful" : "failed (sorry)" ) );
        }

        close_tcp();
        return ( ret.param ) ? 1 : 0 ;
    }
    else { 
        fprintf(stderr,"sendtcp::unable to establish connection to ChucK process...\n");
    }
    return 0;
}
Ejemplo n.º 14
0
void http_disconnect(http_client_t *http_client)
{
    http_request_destroy(&http_client->request);
    http_response_destroy(&http_client->response);
    close_tcp(&http_client->connection);
}
Ejemplo n.º 15
0
int main(int argc, char * argv[])
#endif
{
    bool threaded = false;
    ETERM *cmd_tuple;

#ifdef __WIN32__
    _setmode( _fileno( stdout ), _O_BINARY );
    _setmode( _fileno( stdin  ), _O_BINARY );
#endif

    erl_init(NULL, 0);
    log_flag = false;

    if (argc >= 2) {
        if (
#ifdef __WIN32__
            wcscmp(argv[1], L"true") == 0
#else
            strcmp(argv[1], "true") == 0
#endif
        ) log_flag = true;
    }

	if (argc >= 3) {
		int ListenPortNo = 
#ifdef __WIN32__
            _wtoi(argv[2]);
#else
            atoi(argv[2]);
#endif
		char * ret = connect_tcp(ListenPortNo);
		if(ret != NULL) {
			return -1;
		} else
			REMOTE_LOG("Logging over TCP, Voila!\n");
	}

    init_marshall();

    REMOTE_LOG("Port: OCI Process started...\n");

    threaded = InitializeThreadPool();
    if(threaded)
        REMOTE_LOG("Port: Thread pool created...\n");

    REMOTE_LOG("Port: Initialized Oracle OCI\n");

    while(!exit_loop && (cmd_tuple = (ETERM *)read_cmd()) != NULL) {
        if(threaded && ProcessCommand(cmd_tuple)) {
            //REMOTE_LOG("Port: Command sumitted to thread-pool for processing...");
        }
    }

    REMOTE_LOG("Port: Process oci terminating...\n");
	close_tcp();

    REMOTE_LOG("Port: Thread pool destroyed...\n");
    CleanupThreadPool();

    return 0;
}
Ejemplo n.º 16
0
/* Implements the general case for command message send-receive
 *
 * If any of our underlying calls return an error, we will pass
 * that up to our caller immediately.
 *
 * Otherwise we'll examine the response.
 *
 * Returns:
 * - some errno from one of our calls
 * - INVALID_ID if the server does not recognize our member id
 * - COMMAND_SUCC on success
 * - COMMAND_FAIL on failure
 * - BOGUS_RESPONSE on an unexpected reply
 *
 * Takes advantage of the fact that for a request message type
 * x, the corresponding success and fail responses are x+1
 * and x+2 respectively. We encode that relationship in the macros
 * CODE_SUCC() and CODE_FAIL(). Keepalive and quit messages do not
 * wait for a response.
 */
int generic_command(int msg_type, char *arg, char *buf) {

    int ret = 0, bytes = 0;
    struct control_msghdr *cmh = (struct control_msghdr *) buf;

    memset(buf, 0, MAX_MSG_LEN);
    cmh->msg_type = msg_type;
    cmh->member_id = /*htons*/(member_id);
    cmh->msg_len = /*htons*/(sizeof(struct control_msghdr));

    if (arg) {
        strcpy((char *)(cmh->msgdata), arg);
        cmh->msg_len += strlen(arg);
    }
    
    if (msg_type == REGISTER_REQUEST) {
        struct register_msgdata *rdata;
        rdata = (struct register_msgdata *)cmh->msgdata;
        /* send registration data */
        rdata->udp_port = htons(client_udp_port);
        strcpy((char *)rdata->member_name, member_name);
        cmh->msg_len +=
            sizeof(struct register_msgdata) + strlen(member_name);
    }

    /* OPEN */
    if ((ret = open_tcp()) != 0) {
        return ret;
    }   

    /* WRITE */
    if ((bytes = write(tcp_sock, buf, /*ntohs*/(cmh->msg_len))) == -1) {
        ret = errno;
        fprintf(stderr, "%s: write: %s\n", __func__, strerror(errno));
        return ret;
    } else {
        seen_server();
    }   

    debug_sub_print(DBG_TCP, "%s: %dB written\n", __func__, bytes);

    /* Response expected? */
    if (msg_type < MEMBER_KEEP_ALIVE) {
        if ((bytes = recv(tcp_sock, buf, MAX_MSG_LEN, 0)) == -1) {
            ret = errno;
            fprintf(stderr, "%s: recv'd: %s\n", __func__, strerror(errno));
            return ret;
        }
        close_tcp();
        debug_sub_print(DBG_TCP, "%s: %dB recv'd\n", __func__, bytes);

        if ((cmh->msg_type) == CODE_SUCC(msg_type)) {
            return COMMAND_SUCC;
        } else if ((cmh->msg_type) == CODE_FAIL(msg_type)) {
            if ((strstr((char *) (cmh->msgdata), "Member id invalid!"))
                == (char *) (cmh->msgdata))
            {
                return ID_INVALID;
            }
            return COMMAND_FAIL;
        } else {
            fprintf(stderr, "Unexpected response (%d)\n", cmh->msg_type);
            return BOGUS_RESPONSE;
        }
    } else {
        close_tcp();
    }
    return ret;
}