void gtk_c_on_menu_options_edit_toggle (GtkWidget *menu, gpointer userdata)
{
   GtkWidget *notebook, *toolbar_edit, *widget, *warning;
   struct gtk_s_helper *helper;
   u_int8_t i, j, mode;
   struct commands_param *param;
   char tmp_name[5], *text;

   helper = (struct gtk_s_helper *)userdata;

   notebook = lookup_widget(GTK_WIDGET(menu), "main_vhv2_notebook");
   toolbar_edit = lookup_widget(GTK_WIDGET(menu), "toolbar_edit");
   mode = gtk_notebook_get_current_page(GTK_NOTEBOOK(notebook));
   if (helper->edit_mode) {
      for(i = 0; i < MAX_PROTOCOLS; i++) {
         if (protocols[i].visible) {
            param = (struct commands_param *)protocols[i].parameters;
            for (j = 0; j < protocols[i].nparams; j++) {
               if ((param[j].type != FIELD_DEFAULT) && (param[j].type != FIELD_IFACE) && (param[j].type != FIELD_EXTRA)) {
                  snprintf(tmp_name, 5, "%02d%02d", i, j);
                  widget = lookup_widget(GTK_WIDGET(notebook), tmp_name);
                  text = (char *) gtk_entry_get_text(GTK_ENTRY(widget));
                  if (parser_filter_param(param[j].type, helper->node->protocol[i].commands_param[j],
                           text, param[j].size_print, param[j].size) < 0) {
                     warning = gtk_i_create_warningdialog("Bad Parameter %s with wrong value %s in protocol %s!", 
                           param[j].ldesc, text, protocols[i].namep);
                     gtk_widget_show(warning);
                     //break;
                  }
                  gtk_entry_set_editable(GTK_ENTRY(widget), FALSE);
               }
            }
         }
      }
      helper->edit_mode = 0;
      gtk_statusbar_push(GTK_STATUSBAR(helper->statusbar), 0, "Edit mode disabled");
   } else {
      helper->edit_mode = 1;
      for (i = 0; i < MAX_PROTOCOLS; i++) {
         if (protocols[i].visible) {
            param = (struct commands_param *)protocols[i].parameters;
            for (j = 0; j < protocols[i].nparams; j++) {
               if ((param[j].type != FIELD_DEFAULT) && (param[j].type != FIELD_IFACE) && (param[j].type != FIELD_EXTRA)) {
                  snprintf(tmp_name, 5, "%02d%02d", i, j);
                  widget = lookup_widget(GTK_WIDGET(notebook), tmp_name);
                  gtk_entry_set_editable(GTK_ENTRY(widget), TRUE);
               }
            }
         }
      }
      gtk_statusbar_push(GTK_STATUSBAR(helper->statusbar), 0, "Edit mode enabled");
   }
}
Beispiel #2
0
/*
 * Filter all attack parameters
 * On success Return 0.
 * On error Return -1 and error field number on "field".
 */
int8_t 
attack_filter_all_params(struct attack_param *attack_param, u_int8_t nparams, u_int8_t *field)
{
    u_int8_t j;

    for (j=0; j<nparams; j++)
    {
       if ( parser_filter_param(attack_param[j].type, 
                                attack_param[j].value,
                                attack_param[j].print,
                                attack_param[j].size_print,
                                attack_param[j].min,
                                attack_param[j].max
                                ) < 0 )
       {
          *field = j;
          return -1;
       }
    }

    return 0;
}