void main() { /* FORM stuff */ sspec_addxmemfile("register.html", reg_form, SERVER_HTTP); sspec_addfunction("submit.cgi", submit, SERVER_HTTP); /* normal SSI button stuff */ sspec_addxmemfile("/", index_html, SERVER_HTTP); sspec_addxmemfile("index.shtml", index_html, SERVER_HTTP); sspec_addxmemfile("showsrc.shtml", showsrc_shtml, SERVER_HTTP); sspec_addxmemfile("rabbit1.gif", rabbit1_gif, SERVER_HTTP); sspec_addxmemfile("ledon.gif", ledon_gif, SERVER_HTTP); sspec_addxmemfile("ledoff.gif", ledoff_gif, SERVER_HTTP); sspec_addxmemfile("button.gif", button_gif, SERVER_HTTP); sspec_addxmemfile("ssi.c", ssi_c, SERVER_HTTP); sspec_addvariable("led1", led1, PTR16, "%s", SERVER_HTTP); sspec_addvariable("led2", led2, PTR16, "%s", SERVER_HTTP); sspec_addvariable("led3", led3, PTR16, "%s", SERVER_HTTP); sspec_addvariable("led4", led4, PTR16, "%s", SERVER_HTTP); sspec_addfunction("led1tog.cgi", led1toggle, SERVER_HTTP); sspec_addfunction("led2tog.cgi", led2toggle, SERVER_HTTP); sspec_addfunction("led3tog.cgi", led3toggle, SERVER_HTTP); sspec_addfunction("led4tog.cgi", led4toggle, SERVER_HTTP); sspec_addfunction("audit", audit_list_print, SERVER_HTTP); strcpy(led1,"ledon.gif"); strcpy(led2,"ledon.gif"); strcpy(led3,"ledoff.gif"); strcpy(led4,"ledon.gif"); /* Init the audit history */ AuditInit(); /* init FORM searchable names - must init ALL FORMSpec structs! */ FORMSpec[0].name = "user_name"; FORMSpec[1].name = "user_email"; // Start network and wait for interface to come up (or error exit). sock_init_or_exit(1); http_init(); tcp_reserveport(80); while (1) { http_handler(); } }
void init_dateform(void) { auto int var, form; static FormVar dateform[7]; /* * Set up the date form. To set up your own form you follow a * similar set of steps. First call sspec_addform. Then add * the variables creating the variable and adding it to the form. * If you want to restrict the values of the variables you can * use the sspec_setfvlen, sspec_setfvrange, or define a custom * validation function with sspec_fvcheck. */ form = sspec_addform("date.html", dateform, 7, SERVER_HTTP); // Set the title of the form sspec_setformtitle(form, "Set Date"); var = sspec_addvariable("hour", &hour, INT16, "%02d", SERVER_HTTP); var = sspec_addfv(form, var); sspec_setfvname(form, var, "Hour"); sspec_setfvlen(form, var, 2); sspec_setfvrange(form, var, 0, 24); var = sspec_addvariable("minute", &minute, INT16, "%02d", SERVER_HTTP); var = sspec_addfv(form, var); sspec_setfvname(form, var, "Minute"); sspec_setfvlen(form, var, 2); sspec_setfvrange(form, var, 0, 60); var = sspec_addvariable("second", &second, INT16, "%02d", SERVER_HTTP); var = sspec_addfv(form, var); sspec_setfvname(form, var, "Second"); sspec_setfvlen(form, var, 2); sspec_setfvrange(form, var, 0, 60); var = sspec_addvariable("month", &month, INT16, "%02d", SERVER_HTTP); var = sspec_addfv(form, var); sspec_setfvname(form, var, "month"); sspec_setfvlen(form, var, 2); sspec_setfvrange(form, var, 0, 12); var = sspec_addvariable("day", &day, INT16, "%02d", SERVER_HTTP); var = sspec_addfv(form, var); sspec_setfvname(form, var, "day"); sspec_setfvlen(form, var, 2); sspec_setfvrange(form, var, 0, 31); var = sspec_addvariable("year", &year, INT16, "%04d", SERVER_HTTP); var = sspec_addfv(form, var); sspec_setfvname(form, var, "year"); sspec_setfvlen(form, var, 4); sspec_setfvrange(form, var, MY_FIRST_YEAR_SETTING, MY_FINAL_YEAR_SETTING); /* * lock_date sets a flag that disables the automatic updating * of the hour, minute, second, month, day, and year variables. * The prolog gets called after the form is parsed correctly, * but before the variables are updated. The set_date function * gets called after the variables are updated. The lock_date * function is necessary because the update_date function in * main could be called between the time the variables are * updated and the prolog completes its processing. */ var = sspec_addfunction("lock_date", lock_date, SERVER_HTTP); sspec_setformprolog(form, var); var = sspec_addfunction("set_date", set_date, SERVER_HTTP); sspec_setformepilog(form, var); }