/* One start -----------------------------------------------------------------*/ static void startup() { unsigned char err = 0; init_hardware(); dbg_init(); dbg_print_app_ver(); crc32_init(); pins_init(); //spi0_init(); // used in m25pexx.c (FLASH) spi1_init(); adc_init(); err = memory_init(); // memory initialization, external EEPROM (used in pref.c, orion.c), external FLASH, internal FLASH if (err) goto err; pref_init(); ds1390_init(); evt_fifo_init(); GPS_init(); //SIM900_init(); light_init(); saveDatePorojectIP();//новые параметры связи vpu_init(); /*VPU start*/ //Init_USB(); //if (PROJ.jornal.power_on) //Event_Push_Str("СТАРТ"); return; err: Err_led(err); }
void pref_setprefs() { if (*cgi("do.changeprefs")) { char buf[1000]; FILE *fp; char *p; char *q; sprintf(buf, SORTORDER "=%c " PAGESIZE "=%s " AUTOPURGE_V "=%s " FLOWEDTEXT "=%s " NOARCHIVE "=%s " STARTOFWEEK "=%d", *cgi("sortorder"), cgi("pagesize"), cgi("autopurge"), *cgi(FLOWEDTEXT_PREF) ? "1":"0", *cgi(NOARCHIVE_PREF) ? "1":"0", // by lfan, cancel calendar //(int)((unsigned)atoi(cgi(STARTOFWEEK)) % 7) 0 ); if (*cgi(OLDEST1ST_PREF)) strcat(buf, " " OLDEST1ST); if (*cgi(FULLHEADERS_PREF)) strcat(buf, " " FULLHEADERS); if (!*cgi(HTML_PREF)) strcat(buf, " " NOHTML); if (*cgi("preffrom")) pref_setfrom(cgi("preffrom")); p=append_str(buf, FROM, pref_from); q=append_str(p, LDAP, pref_ldap); write_sqconfig(".", CONFIGFILE, q); free(p); free(q); pref_init(); /* by lfan, in other setting if ((fp=fopen(SIGNATURE, "w")) != NULL) { fprintf(fp, "%s", cgi("signature")); fclose(fp); } savemailinglists(cgi("mailinglists")); */ } // by lfan, support signature else if (*cgi("do.changesign")) { FILE *fp; if ((fp=fopen(SIGNATURE, "w")) != NULL) { fprintf(fp, "%s", cgi("signature")); fclose(fp); } } //by roy, support spam else if (*cgi("do.changespam")) { FILE *fp; char fpath[256]; get_antispam_file(fpath); if ((fp=fopen(fpath, "w")) != NULL) { if (!(*cgi("spam"))) { fprintf(fp,"0"); } else if (!strcmp(cgi("spam"),"1") ) fprintf(fp, "1"); else if (!strcmp(cgi("spam"),"2") ) fprintf(fp,"2"); else fprintf(fp,"0"); fclose(fp); } } // by lfan, support forward else if (*cgi("do.changefwd")) { FILE *fp1, *fp2; char buf[512], fpath[256], folder[256], *p; int lastc; get_dotqmail_file(fpath); p = cgi("forwardlists"); sprintf(folder, "%s.tmp", fpath); if ((fp2=fopen(folder, "w")) == NULL) return; lastc = 1; if ((fp1=fopen(fpath, "r")) != NULL) { while (fgets(buf, sizeof(buf), fp1)) { if( buf[0] == '&' ) continue; if( buf[0] == '#' ) { if( *cgi("save") || strlen(p) < 4 ) fprintf(fp2, "%s", buf+1); else fprintf(fp2, "%s", buf); } else { if( *cgi("save") || strlen(p) < 4) fprintf(fp2, "%s", buf); else fprintf(fp2, "#%s", buf); } lastc = 0; } fclose(fp1); } if( lastc ) { if( strlen(p) < 4 ) { unlink( fpath ); return; } // by lfan, if first created, add deliver if( *cgi("save") ) fprintf(fp2, "./Maildir/\n" ); } for (lastc='\n'; *p; p++) { if (isspace((int)(unsigned char)*p) && *p != '\n') continue; if (*p == '\n' && lastc == '\n') continue; if (lastc == '\n') { putc('&', fp2); } putc(*p, fp2); lastc = *p; } if( lastc != '\n' ) putc('\n', fp2); fclose(fp2); rename(folder, fpath); } if (*cgi("do.changepwd") && auth_changepass) { int status=1; const char *p=cgi("newpass"); int has_syspwd=0; if ( *p && strcmp(p, cgi("newpass2")) == 0) { has_syspwd= login_changepwd(sqwebmail_mailboxid, cgi("oldpass"), p, &status); } if (has_syspwd || status) { printf("%s\n", getarg("PWDERR")); } else printf("%s\n", getarg("PWDCHGOK")); } }