Esempio n. 1
0
File: ssh.c Progetto: Tarrasch/rofi
static SwitcherMode ssh_mode_result ( int mretv, char **input, unsigned int selected_line, Switcher *sw )
{
    SwitcherMode       retv  = MODE_EXIT;
    SSHModePrivateData *rmpd = (SSHModePrivateData *) sw->private_data;
    if ( mretv & MENU_NEXT ) {
        retv = NEXT_DIALOG;
    }
    else if ( mretv & MENU_PREVIOUS ) {
        retv = PREVIOUS_DIALOG;
    }
    else if ( mretv & MENU_QUICK_SWITCH ) {
        retv = ( mretv & MENU_LOWER_MASK );
    }
    else if ( ( mretv & MENU_OK ) && rmpd->cmd_list[selected_line] != NULL ) {
        exec_ssh ( rmpd->cmd_list[selected_line] );
    }
    else if ( ( mretv & MENU_CUSTOM_INPUT ) && *input != NULL && *input[0] != '\0' ) {
        exec_ssh ( *input );
    }
    else if ( ( mretv & MENU_ENTRY_DELETE ) && rmpd->cmd_list[selected_line] ) {
        delete_ssh ( rmpd->cmd_list[selected_line] );
        // Stay
        retv = RELOAD_DIALOG;
    }
    return retv;
}
Esempio n. 2
0
File: ssh.c Progetto: mstg/rofi
/**
 * @param sw Object handle to the SSH Mode object
 * @param mretv The menu return value.
 * @param input Pointer to the user input string.
 * @param selected_line the line selected by the user.
 *
 * Acts on the user interaction.
 *
 * @returns the next #ModeMode.
 */
static ModeMode ssh_mode_result ( Mode *sw, int mretv, char **input, unsigned int selected_line )
{
    ModeMode           retv  = MODE_EXIT;
    SSHModePrivateData *rmpd = (SSHModePrivateData *) mode_get_private_data ( sw );
    if ( mretv & MENU_NEXT ) {
        retv = NEXT_DIALOG;
    }
    else if ( mretv & MENU_PREVIOUS ) {
        retv = PREVIOUS_DIALOG;
    }
    else if ( mretv & MENU_QUICK_SWITCH ) {
        retv = ( mretv & MENU_LOWER_MASK );
    }
    else if ( ( mretv & MENU_OK ) && rmpd->hosts_list[selected_line] != NULL ) {
        exec_ssh ( rmpd->hosts_list[selected_line] );
    }
    else if ( ( mretv & MENU_CUSTOM_INPUT ) && *input != NULL && *input[0] != '\0' ) {
        exec_ssh ( *input );
    }
    else if ( ( mretv & MENU_ENTRY_DELETE ) && rmpd->hosts_list[selected_line] ) {
        delete_ssh ( rmpd->hosts_list[selected_line] );
        g_strfreev ( rmpd->hosts_list );
        rmpd->hosts_list_length = 0;
        rmpd->hosts_list        = NULL;
        // Stay
        retv = RELOAD_DIALOG;
    }
    return retv;
}
Esempio n. 3
0
SwitcherMode ssh_switcher_dialog ( char **input, G_GNUC_UNUSED void *data )
{
    SwitcherMode retv = MODE_EXIT;
    // act as a launcher
    unsigned int cmd_list_length = 0;
    char         **cmd_list      = get_ssh ( &cmd_list_length );

    if ( cmd_list == NULL ) {
        cmd_list    = g_malloc_n ( 2, sizeof ( char * ) );
        cmd_list[0] = g_strdup ( "No ssh hosts found" );
        cmd_list[1] = NULL;
    }

    int shift         = 0;
    int selected_line = 0;
    int mretv         = menu ( cmd_list, cmd_list_length, input, "ssh:",
                               NULL, &shift, token_match, NULL, &selected_line,
                               config.levenshtein_sort );

    if ( mretv == MENU_NEXT ) {
        retv = NEXT_DIALOG;
    }
    else if ( mretv == MENU_PREVIOUS ) {
        retv = PREVIOUS_DIALOG;
    }
    else if ( mretv == MENU_QUICK_SWITCH ) {
        retv = selected_line;
    }
    else if ( mretv == MENU_OK && cmd_list[selected_line] != NULL ) {
        exec_ssh ( cmd_list[selected_line] );
    }
    else if ( mretv == MENU_CUSTOM_INPUT && *input != NULL && *input[0] != '\0' ) {
        exec_ssh ( *input );
    }
    else if ( mretv == MENU_ENTRY_DELETE && cmd_list[selected_line] ) {
        delete_ssh ( cmd_list[selected_line] );
        // Stay
        retv = RELOAD_DIALOG;
    }

    g_strfreev ( cmd_list );

    return retv;
}
Esempio n. 4
0
SwitcherMode ssh_switcher_dialog ( char **input )
{
    SwitcherMode retv = MODE_EXIT;
    // act as a launcher
    char **cmd_list = get_ssh( );

    if ( cmd_list == NULL ) {
        cmd_list = allocate( 2*sizeof( char * ) );
        cmd_list[0] = strdup( "No ssh hosts found" );
        cmd_list[1] = NULL;
    }

    int shift=0;
    int selected_line = 0;
    int mretv = menu( cmd_list, input, "ssh", NULL, &shift,token_match, NULL , &selected_line );

    if ( mretv == MENU_NEXT ) {
        retv = NEXT_DIALOG;
    } else if ( mretv == MENU_OK && cmd_list[selected_line] != NULL ) {
        exec_ssh( cmd_list[selected_line] );
    } else if ( mretv == MENU_CUSTOM_INPUT && *input != NULL && *input[0] != '\0' ) {
        exec_ssh( *input );
    } else if ( mretv == MENU_ENTRY_DELETE && cmd_list[selected_line] ) {
        delete_ssh ( cmd_list[selected_line] );
        // Stay
        retv = SSH_DIALOG;
    }

    for ( int i=0; cmd_list[i] != NULL; i++ ) {
        free( cmd_list[i] );
    }

    if ( cmd_list != NULL ) free( cmd_list );

    return retv;
}
Esempio n. 5
0
File: Start.c Progetto: iocoder/bbs
int main() {
    int i;
    int reader_cnt, writer_cnt, access_cnt;
    char *serverip;
    char num[20];
    char reader_cnt_str[20];
    char writer_cnt_str[20];
    char access_cnt_str[20];
    /* print splash */
    printf("**************************\n");
    printf("* Welcome to BBS system! *\n");
    printf("**************************\n");
    /* read configuration file */
    read_conf();
    /* read number of accesses */
    access_cnt = get_val_int(ACCESS_PROP, -1);
    if (access_cnt < 0) {
        fprintf(stderr, "Error: can't read %s property.\n", ACCESS_PROP);
        return -1;
    }
    sprintf(access_cnt_str, "%d", access_cnt);
    /* read number of readers */
    reader_cnt = get_val_int(READER_COUNT_PROP, -1);
    if (reader_cnt < 0) {
        fprintf(stderr, "Error: can't read %s property.\n", READER_COUNT_PROP);
        return -1;
    }
    sprintf(reader_cnt_str, "%d", reader_cnt);
    printf("Readers count: %d\n", reader_cnt);
    /* read number of writers */
    writer_cnt = get_val_int(WRITER_COUNT_PROP, -1);
    if (writer_cnt < 0) {
        fprintf(stderr, "Error: can't read %s property.\n", WRITER_COUNT_PROP);
        return -1;
    }
    sprintf(writer_cnt_str, "%d", writer_cnt);
    printf("Writers count: %d\n", writer_cnt);
    /* read server IP */
    serverip = get_val_str(SERVER_PROP, -1);
    if (!serverip) {
        fprintf(stderr, "Error: can't read %s property.\n", SERVER_PROP);
        return -1;
    }
    /* start RMI registry */
    printf("Starting RMI registry on %s...\n", serverip);
    exec_ssh(serverip, "/usr/local/bin/bbs_release", NULL);
    wait(NULL);
    printf("Executing rmiregistry...\n");
    exec_ssh(serverip, "CLASSPATH=/usr/local/share/bbs", "rmiregistry", NULL);
    exec_ssh(serverip, "/usr/local/bin/bbs_acquire", NULL);
    wait(NULL);
    /* execute server */
    printf("Starting BBS server on %s...\n", serverip);
    exec_ssh(serverip, "/usr/local/bin/bbs_server", reader_cnt_str, writer_cnt_str, 
                       access_cnt_str, NULL);
    system("sleep 15");
    /* loop over readers */
    for (i = 0; i < reader_cnt; i++) {
        char *host = get_val_str(READER_PROP, i);
        if (!host) {
            fprintf(stderr, "Error: can't read %s%d property.\n", 
                            READER_PROP, i);
            return -1;
        }
        printf("SSH reader %d on %s\n", i, host);
        sprintf(num, "%d", i);
        exec_ssh(host, "java", "-classpath","/usr/local/share/bbs", 
                       "Reader", num, serverip, access_cnt_str, NULL);
    }
    /* loop over writers */
    for (i = 0; i < writer_cnt; i++) {
        char *host = get_val_str(WRITER_PROP, i);
        if (!host) {
            fprintf(stderr, "Error: can't read %s%d property.\n", 
                            WRITER_PROP, i);
            return -1;
        }
        printf("SSH writer %d on %s\n", i+reader_cnt, host);
        sprintf(num, "%d", i+reader_cnt);
        exec_ssh(host, "java", "-classpath","/usr/local/share/bbs", 
                       "Writer", num, serverip, access_cnt_str, NULL);
    }
    /* optional: wait until all children exit */
    while (wait(NULL) > 0);
    /* done */
    return 0;
}