static void QoSDeleteRules(webs_t wp, char_t *path, char_t *query, char *which_rule) { int i, j, rule_count; char_t name_buf[16]; char_t *value; int *deleArray; char *new_rules; const char *rules = nvram_bufget(RT2860_NVRAM, which_rule); if(!rules || !strlen(rules) ) return; rule_count = getRuleNums(rules); if(!rule_count) return; deleArray = (int *)malloc(rule_count * sizeof(int)); if(!deleArray) return; new_rules = strdup(rules); if(!new_rules) { free(deleArray); return; } for(i=0, j=0; i< rule_count; i++) { snprintf(name_buf, 16, "del_qos_%d", i); value = websGetVar(wp, name_buf, NULL); if(value) { deleArray[j++] = i; } } if(!j) { free(deleArray); free(new_rules); websHeader(wp); websWrite(wp, T("You didn't select any rules to delete.<br>\n")); websFooter(wp); websDone(wp, 200); return; } deleteNthValueMulti(deleArray, j, new_rules, ';'); nvram_set(RT2860_NVRAM, which_rule, new_rules); nvram_commit(RT2860_NVRAM); QoSRestart(); websHeader(wp); websWrite(wp, T("Delete Rules:\n") ); for(i=0; i<j; i++) websWrite(wp, "%d ", (deleArray[i] + 1) ); websFooter(wp); websDone(wp, 200); free(deleArray); free(new_rules); }
static void formDeleteGroup(webs_t wp, char_t *path, char_t *query) { char_t *group, *ok; a_assert(wp); group = websGetVar(wp, T("group"), T("")); ok = websGetVar(wp, T("ok"), T("")); websHeader(wp); websMsgStart(wp); if (gstricmp(ok, T("ok")) != 0) { websWrite(wp, T("Delete Group Cancelled.")); } else if ((group == NULL) || (*group == '\0')) { websWrite(wp, T("ERROR: No group was selected.")); } else if (umGetGroupProtected(group)) { websWrite(wp, T("ERROR: Group, \"%s\" is delete-protected."), group); } else if (umGetGroupInUse(group)) { websWrite(wp, T("ERROR: Group, \"%s\" is being used."), group); } else if (umDeleteGroup(group) != 0) { websWrite(wp, T("ERROR: Unable to delete group, \"%s\" "), group); } else { websWrite(wp, T("Group, \"%s\" was successfully deleted."), group); } websMsgEnd(wp); websFooter(wp); websDone(wp, 200); }
static void formLoadUserManagement( webs_t wp, char_t* path, char_t* query ) { char_t* ok; a_assert( wp ); ok = websGetVar( wp, T( "ok" ), T( "" ) ); websHeader( wp ); websMsgStart( wp ); if ( gstricmp( ok, T( "ok" ) ) != 0 ) { websWrite( wp, T( "Load Cancelled." ) ); } else if ( umRestore( NULL ) != 0 ) { websWrite( wp, T( "ERROR: Unable to load user configuration." ) ); } else { websWrite( wp, T( "User configuration was re-loaded successfully." ) ); } websMsgEnd( wp ); websFooter( wp ); websDone( wp, 200 ); }
static void formDeleteUser(webs_t wp, char_t *path, char_t *query) { char_t *userid, *ok; a_assert(wp); userid = websGetVar(wp, T("user"), T("")); ok = websGetVar(wp, T("ok"), T("")); websHeader(wp); websMsgStart(wp); if (gstricmp(ok, T("ok")) != 0) { websWrite(wp, T("Delete User Cancelled")); } else if (umUserExists(userid) == FALSE) { websWrite(wp, T("ERROR: User \"%s\" not found"), userid); } else if (umGetUserProtected(userid)) { websWrite(wp, T("ERROR: User, \"%s\" is delete-protected."), userid); } else if (umDeleteUser(userid) != 0) { websWrite(wp, T("ERROR: Unable to delete user, \"%s\" "), userid); } else { websWrite(wp, T("User, \"%s\" was successfully deleted."), userid); } websMsgEnd(wp); websFooter(wp); websDone(wp, 200); }
static void iTunesSrv(webs_t wp, char_t *path, char_t *query) { char_t *enable, *dir_path, *name; // fetch from web input enable = websGetVar(wp, T("enabled"), T("0")); dir_path = websGetVar(wp, T("dir_path"), T("")); name = websGetVar(wp, T("srv_name"), T("")); // set to nvram nvram_bufset(RT2860_NVRAM, "iTunesEnable", enable); nvram_bufset(RT2860_NVRAM, "iTunesDir", dir_path); nvram_bufset(RT2860_NVRAM, "iTunesSrvName", name); nvram_commit(RT2860_NVRAM); // setup device doSystem("killall mt-daapd; killall mDNSResponder"); if (strcmp(enable, "1") == 0) doSystem("config-iTunes.sh \"%s\" \"%s\" \"%s\"", name, nvram_bufget(RT2860_NVRAM, "Password"), dir_path); // debug print websHeader(wp); websWrite(wp, T("<h2>iTunes Server Settings</h2><br>\n")); websWrite(wp, T("capability: %s<br>\n"), enable); websWrite(wp, T("srv_name: %s<br>\n"), name); websWrite(wp, T("media library: %s<br>\n"), dir_path); websFooter(wp); websDone(wp, 200); }
static void formDeleteAccessLimit(webs_t wp, char_t *path, char_t *query) { char_t *url, *ok; a_assert(wp); url = websGetVar(wp, T("url"), T("")); ok = websGetVar(wp, T("ok"), T("")); websHeader(wp); websMsgStart(wp); if (gstricmp(ok, T("ok")) != 0) { websWrite(wp, T("Delete Access Limit Cancelled")); } else if (umDeleteAccessLimit(url) != 0) { websWrite(wp, T("ERROR: Unable to delete Access Limit for [%s]"), url); } else { websWrite(wp, T("Access Limit for [%s], was successfully deleted."), url); } websMsgEnd(wp); websFooter(wp); websDone(wp, 200); }
static void formDisplayUser(webs_t wp, char_t *path, char_t *query) { char_t *userid, *ok, *temp; bool_t enabled; a_assert(wp); userid = websGetVar(wp, T("user"), T("")); ok = websGetVar(wp, T("ok"), T("")); websHeader(wp); websWrite(wp, T("<body>")); if (gstricmp(ok, T("ok")) != 0) { websWrite(wp, T("Display User Cancelled")); } else if (umUserExists(userid) == FALSE) { websWrite(wp, T("ERROR: User <b>%s</b> not found.\n"), userid); } else { websWrite(wp, T("<h2>User ID: <b>%s</b></h2>\n"), userid); temp = umGetUserGroup(userid); websWrite(wp, T("<h3>User Group: <b>%s</b></h3>\n"), temp); enabled = umGetUserEnabled(userid); websWrite(wp, T("<h3>Enabled: <b>%d</b></h3>\n"), enabled); } websWrite(wp, T("</body>\n")); websFooter(wp); websDone(wp, 200); }
/* goform/webcamra */ static void webcamra(webs_t wp, char_t *path, char_t *query) { char_t *enable, *resolution, *fps, *port; // fetch from web input enable = websGetVar(wp, T("enabled"), T("")); resolution = websGetVar(wp, T("resolution"), T("")); fps = websGetVar(wp, T("fps"), T("")); port = websGetVar(wp, T("port"), T("")); // set to nvram nvram_bufset(RT2860_NVRAM, "WebCamEnabled", enable); nvram_bufset(RT2860_NVRAM, "WebCamResolution", resolution); nvram_bufset(RT2860_NVRAM, "WebCamFPS", fps); nvram_bufset(RT2860_NVRAM, "WebCamPort", port); nvram_commit(RT2860_NVRAM); // setup device doSystem("killall uvc_stream"); if (0 == strcmp(enable, "1")) { doSystem("uvc_stream -r %s -f %s -p %s -b", resolution, fps, port); } // debug print websHeader(wp); websWrite(wp, T("<h2>Web Camera Settings</h2><br>\n")); websWrite(wp, T("enabled: %s<br>\n"), enable); websWrite(wp, T("resolution: %s<br>\n"), resolution); websWrite(wp, T("fps: %s<br>\n"), fps); websWrite(wp, T("port: %s<br>\n"), port); websFooter(wp); websDone(wp, 200); }
/* goform/storageSmbSrv */ static void storageSmbSrv(webs_t wp, char_t *path, char_t *query) { char_t *submit; submit = websGetVar(wp, T("hiddenButton"), T("")); if (0 == strcmp(submit, "delete")) { int index; FILE *fp; char smb_config_file[25]; // strcpy(smb_config_file, "/var/.smb_config"); sprintf(smb_config_file, "%s/.smb_config", first_part); fp = fopen(smb_config_file, "w"); if (NULL == fp) { perror(__FUNCTION__); return; } index = atoi(websGetVar(wp, T("selectIndex"), T(""))); // fprintf(stderr, "before set bitmap: %x%x%x\n", smb_conf.bitmap[2], smb_conf.bitmap[1], smb_conf.bitmap[0]); smb_conf.bitmap[index/32] &= ~(1<<(index%32)); // fprintf(stderr, "after set bitmap: %x%x%x\n", smb_conf.bitmap[2], smb_conf.bitmap[1], smb_conf.bitmap[0]); smb_conf.count--; // fprintf(stderr, "smb dir count: %d\n", smb_conf.count); fwrite(&smb_conf, sizeof(struct smb_dir_config), 1, fp); fclose(fp); websRedirect(wp, "usb/SAMBAsmbsrv.asp"); } else if (0 == strcmp(submit, "apply")) { char_t *smb_enable, *wg, *netbios; // fetch from web input smb_enable = websGetVar(wp, T("smb_enabled"), T("")); wg = websGetVar(wp, T("smb_workgroup"), T("")); netbios = websGetVar(wp, T("smb_netbios"), T("")); // set to nvram nvram_bufset(RT2860_NVRAM, "SmbEnabled", smb_enable); nvram_bufset(RT2860_NVRAM, "HostName", wg); nvram_bufset(RT2860_NVRAM, "SmbNetBIOS", netbios); nvram_commit(RT2860_NVRAM); // setup device SetSambaSrv(); // debug print websHeader(wp); websWrite(wp, T("<h2>smb_enabled: %s</h2><br>\n"), smb_enable); websWrite(wp, T("smb_workgroup: %s<br>\n"), wg); websWrite(wp, T("smb_netbios: %s<br>\n"), netbios); websFooter(wp); websDone(wp, 200); } }
static void storageMediaSrv(webs_t wp, char_t *path, char_t *query) { char_t *submit; submit = websGetVar(wp, T("hiddenButton"), T("")); if (0 == strcmp(submit, "delete")) { int index; FILE *fp; char media_config_file[25]; // strcpy(smb_config, "/var/.smb_config"); sprintf(media_config_file, "%s/.media_config", first_part); fp = fopen(media_config_file, "w"); if (NULL == fp) { perror(__FUNCTION__); return; } index = atoi(websGetVar(wp, T("media_dir"), T(""))); memset(&media_conf[index].path, 0, sizeof(media_conf[index].path)); fwrite(media_conf, sizeof(media_conf), 1, fp); fclose(fp); websRedirect(wp, "usb/USHAREmediasrv.asp"); } else if (0 == strcmp(submit, "apply")) { char_t *media_enabled, *media_name; int i; // fetch from web input media_enabled = websGetVar(wp, T("media_enabled"), T("")); media_name = websGetVar(wp, T("media_name"), T("")); // set to nvram nvram_bufset(RT2860_NVRAM, "mediaSrvEnabled", media_enabled); nvram_bufset(RT2860_NVRAM, "mediaSrvName", media_name); nvram_commit(RT2860_NVRAM); // setup device if (0 == strcmp(media_enabled, "0")) memset(media_conf, 0, sizeof(media_conf)); RunMediaSrv(); // debug print websHeader(wp); websWrite(wp, T("<h2>Media Server Settings</h2><br>\n")); websWrite(wp, T("media_enabled: %s<br>\n"), media_enabled); websWrite(wp, T("media_name: %s<br>\n"), media_name); for(i=0;i<4;i++) websWrite(wp, T("media dir%d path: %s<br>\n"), i, media_conf[i].path); websFooter(wp); websDone(wp, 200); } }
static void formTest( webs_t wp, char_t* path, char_t* query ) { char_t* name, *address; name = websGetVar( wp, T( "name" ), T( "Joe Smith" ) ); address = websGetVar( wp, T( "address" ), T( "1212 Milky Way Ave." ) ); websHeader( wp ); websWrite( wp, T( "<body><h2>Name: %s, Address: %s</h2>\n" ), name, address ); websFooter( wp ); websDone( wp, 200 ); }
/* goform/storageFtpSrv */ static void storageFtpSrv(webs_t wp, char_t *path, char_t *query) { char_t *ftp, *name, *anonymous, *port, *max_sessions; char_t *adddir, *rename, *remove, *read, *write, *download, *upload; // fetch from web input ftp = websGetVar(wp, T("ftp_enabled"), T("0")); name = websGetVar(wp, T("ftp_name"), T("0")); anonymous = websGetVar(wp, T("ftp_anonymous"), T("0")); port = websGetVar(wp, T("ftp_port"), T("")); max_sessions = websGetVar(wp, T("ftp_max_sessions"), T("")); adddir = websGetVar(wp, T("ftp_adddir"), T("0")); rename = websGetVar(wp, T("ftp_rename"), T("0")); remove = websGetVar(wp, T("ftp_remove"), T("0")); read = websGetVar(wp, T("ftp_read"), T("0")); write = websGetVar(wp, T("ftp_write"), T("0")); download = websGetVar(wp, T("ftp_download"), T("0")); upload = websGetVar(wp, T("ftp_upload"), T("0")); // set to nvram nvram_bufset(RT2860_NVRAM, "FtpEnabled", ftp); nvram_bufset(RT2860_NVRAM, "FtpName", name); nvram_bufset(RT2860_NVRAM, "FtpAnonymous", anonymous); nvram_bufset(RT2860_NVRAM, "FtpPort", port); nvram_bufset(RT2860_NVRAM, "FtpMaxSessions", max_sessions); nvram_bufset(RT2860_NVRAM, "FtpAddDir", adddir); nvram_bufset(RT2860_NVRAM, "FtpRename", rename); nvram_bufset(RT2860_NVRAM, "FtpRemove", remove); nvram_bufset(RT2860_NVRAM, "FtpRead", read); nvram_bufset(RT2860_NVRAM, "FtpWrite", write); nvram_bufset(RT2860_NVRAM, "FtpDownload", download); nvram_bufset(RT2860_NVRAM, "FtpUpload", upload); nvram_commit(RT2860_NVRAM); // setup device doSystem("storage.sh ftp"); // debug print websHeader(wp); websWrite(wp, T("<h2>ftp_enabled: %s</h2><br>\n"), ftp); websWrite(wp, T("ftp_anonymous: %s<br>\n"), anonymous); websWrite(wp, T("ftp_name: %s<br>\n"), name); websWrite(wp, T("ftp_port: %s<br>\n"), port); websWrite(wp, T("ftp_max_sessions: %s<br>\n"), max_sessions); websWrite(wp, T("ftp_adddir: %s<br>\n"), adddir); websWrite(wp, T("ftp_rename: %s<br>\n"), rename); websWrite(wp, T("ftp_remove: %s<br>\n"), remove); websWrite(wp, T("ftp_read: %s<br>\n"), read); websWrite(wp, T("ftp_write: %s<br>\n"), write); websWrite(wp, T("ftp_download: %s<br>\n"), download); websWrite(wp, T("ftp_upload: %s<br>\n"), upload); websFooter(wp); websDone(wp, 200); }
static void formAddAccessLimit(webs_t wp, char_t *path, char_t *query) { char_t *url, *method, *group, *secure, *ok; int nCheck; accessMeth_t am; short nSecure; a_assert(wp); url = websGetVar(wp, T("url"), T("")); group = websGetVar(wp, T("group"), T("")); method = websGetVar(wp, T("method"), T("")); secure = websGetVar(wp, T("secure"), T("")); ok = websGetVar(wp, T("ok"), T("")); websHeader(wp); websMsgStart(wp); if (gstricmp(ok, T("ok")) != 0) { websWrite(wp, T("Add Access Limit Cancelled.")); } else if ((url == NULL) || (*url == 0)) { websWrite(wp, T("ERROR: No URL was entered.")); } else if (umAccessLimitExists(url)) { websWrite(wp, T("ERROR: An Access Limit for [%s] already exists."), url); } else { if (method && *method) { am = (accessMeth_t) gatoi(method); } else { am = AM_FULL; } if (secure && *secure) { nSecure = (short) gatoi(secure); } else { nSecure = 0; } nCheck = umAddAccessLimit(url, am, nSecure, group); if (nCheck != 0) { websWrite(wp, T("Unable to add Access Limit for [%s]"), url); } else { websWrite(wp, T("Access limit for [%s], was successfully added."), url); } } websMsgEnd(wp); websFooter(wp); websDone(wp, 200); }
static void QoSPortSetup(webs_t wp, char_t *path, char_t *query) { int i; char_t *portX[32]; char_t *portX_remark[32]; char tmp_str[512]; memset(portX, 0, sizeof(char *) * 32); memset(portX_remark, 0, sizeof(char *) * 32); for(i=0; i<5; i++) { sprintf(tmp_str, "port%d_group", i); portX[i] = websGetVar(wp, T(tmp_str), T("")); sprintf(tmp_str, "port%d_remarker", i); portX_remark[i] = websGetVar(wp, T(tmp_str), T("")); } for(i=1; i<9; i++) { sprintf(tmp_str, "ssid%d_group", i); portX[i+4] = websGetVar(wp, T(tmp_str), T("")); sprintf(tmp_str, "ssid%d_remarker", i); portX_remark[i+4] = websGetVar(wp, T(tmp_str), T("")); } tmp_str[0] = '\0'; for(i=0; i<13; i++) { if(portX[i]) strcat(tmp_str, portX[i]); strcat(tmp_str, ","); if(portX_remark[i]) strcat(tmp_str, portX_remark[i]); strcat(tmp_str, ","); } nvram_bufset(RT2860_NVRAM, "QoSPortBasedRules", tmp_str); nvram_commit(RT2860_NVRAM); QoSRestart(); websHeader(wp); for(i=0; i<13; i++) { sprintf(tmp_str, "port%d=%s,%s<br>", i, portX[i], portX_remark[i]); websWrite(wp, T(tmp_str)); } websFooter(wp); websDone(wp, 200); }
/* goform/StorageAddUser */ static void StorageAddUser(webs_t wp, char_t *path, char_t *query) { char_t *name, *password; char_t *user_ftp_enable, *user_smb_enable; char mode[6], feild[20]; int index; mode[0] = '\0'; feild[0] = '\0'; // fetch from web input name = websGetVar(wp, T("adduser_name"), T("")); password = websGetVar(wp, T("adduser_pw"), T("")); user_ftp_enable = websGetVar(wp, T("adduser_ftp"), T("")); user_smb_enable = websGetVar(wp, T("adduser_smb"), T("")); /* DEBUG(name); DEBUG(password); DEBUG(user_ftp_enable); DEBUG(user_smb_enable); */ // get null user feild form nvram index = GetNthFree("User"); // fprintf(stderr, "index: %d\n", index); // set to nvram if (0 != index) { sprintf(feild, "User%d", index); nvram_bufset(RT2860_NVRAM, feild, name); sprintf(feild, "User%dPasswd", index); nvram_bufset(RT2860_NVRAM, feild, password); sprintf(feild, "FtpUser%d", index); nvram_bufset(RT2860_NVRAM, feild, user_ftp_enable); sprintf(feild, "SmbUser%d", index); nvram_bufset(RT2860_NVRAM, feild, user_smb_enable); nvram_commit(RT2860_NVRAM); doSystem("storage.sh admin"); websRedirect(wp, "usb/STORAGEuser_admin.asp"); } else { websHeader(wp); websWrite(wp, T("<h2>User Quota is Full!</h2><br>\n")); websFooter(wp); websDone(wp, 200); } }
static void QoSLoadDefaultProfile(webs_t wp, char_t *path, char_t *query) { int i; for(i=0; i<QOS_PROFILE_ENTRYS_MAX ; i++) { if(QOS_PROFILE[i].name) { nvram_bufset(RT2860_NVRAM, QOS_PROFILE[i].name, QOS_PROFILE[i].value); } else { break; } } nvram_commit(RT2860_NVRAM); QoSRestart(); websHeader(wp); websWrite(wp, T("Load default profile successfully.\n")); websFooter(wp); websDone(wp, 200); }
static void formSaveUserManagement(webs_t wp, char *path, char *query) { char *ok; a_assert(wp); ok = websGetVar(wp, T("ok"), T("")); websHeader(wp); websMsgStart(wp); if (gstricmp(ok, T("ok")) != 0) { websWrite(wp, T("Save Cancelled.")); } else if (umCommit(NULL) != 0) { websWrite(wp, T("ERROR: Unable to save user configuration.")); } else { websWrite(wp, T("User configuration was saved successfully.")); } websMsgEnd(wp); websFooter(wp); websDone(wp, 200); }
static void printersrv(webs_t wp, char_t *path, char_t *query) { char_t *enable; // fetch from web input enable = websGetVar(wp, T("enabled"), T("")); // set to nvram nvram_bufset(RT2860_NVRAM, "PrinterSrvEnabled", enable); nvram_commit(RT2860_NVRAM); // setup device doSystem("killall p910nd"); if (0 == strcmp(enable, "1")) { doSystem("p910nd -b -f /dev/lp0"); } // debug print websHeader(wp); websWrite(wp, T("<h2>Printer Server Settings</h2><br>\n")); websWrite(wp, T("enabled: %s<br>\n"), enable); websFooter(wp); websDone(wp, 200); }
static void QoSSetup(webs_t wp, char_t *path, char_t *query) { char_t *qos_enable, *qos_model, *upload_bandwidth, *download_bandwidth, *upload_bandwidth_custom, *download_bandwidth_custom; char_t *highest_upload_queue_rate, *highest_upload_queue_ceil, *high_upload_queue_rate, *high_upload_queue_ceil, *default_upload_queue_rate, *default_upload_queue_ceil, *low_upload_queue_rate, *low_upload_queue_ceil; char_t *highest_download_queue_rate, *highest_download_queue_ceil, *high_download_queue_rate, *high_download_queue_ceil, *default_download_queue_rate, *default_download_queue_ceil, *low_download_queue_rate, *low_download_queue_ceil; char_t *reserve_bandwidth; qos_enable = websGetVar(wp, T("QoSSelect"), T("")); qos_model = websGetVar(wp, T("Model"), T("")); upload_bandwidth = websGetVar(wp, T("UploadBandwidth"), T("")); download_bandwidth = websGetVar(wp, T("DownloadBandwidth"), T("")); upload_bandwidth_custom = websGetVar(wp, T("UploadBandwidth_Custom"), T("")); download_bandwidth_custom = websGetVar(wp, T("DownloadBandwidth_Custom"), T("")); reserve_bandwidth = websGetVar(wp, T("ReserveBandwidth"), T("")); highest_upload_queue_rate = websGetVar(wp, T("highest_upload_queue_rate"), T("")); high_upload_queue_rate = websGetVar(wp, T("high_upload_queue_rate"), T("")); default_upload_queue_rate = websGetVar(wp, T("default_upload_queue_rate"), T("")); low_upload_queue_rate = websGetVar(wp, T("low_upload_queue_rate"), T("")); highest_upload_queue_ceil = websGetVar(wp, T("highest_upload_queue_ceil"), T("")); high_upload_queue_ceil = websGetVar(wp, T("high_upload_queue_ceil"), T("")); default_upload_queue_ceil = websGetVar(wp, T("default_upload_queue_ceil"), T("")); low_upload_queue_ceil = websGetVar(wp, T("low_upload_queue_ceil"), T("")); highest_download_queue_rate = websGetVar(wp, T("highest_download_queue_rate"), T("")); high_download_queue_rate = websGetVar(wp, T("high_download_queue_rate"), T("")); default_download_queue_rate = websGetVar(wp, T("default_download_queue_rate"), T("")); low_download_queue_rate = websGetVar(wp, T("low_download_queue_rate"), T("")); highest_download_queue_ceil = websGetVar(wp, T("highest_download_queue_ceil"), T("")); high_download_queue_ceil = websGetVar(wp, T("high_download_queue_ceil"), T("")); default_download_queue_ceil = websGetVar(wp, T("default_download_queue_ceil"), T("")); low_download_queue_ceil = websGetVar(wp, T("low_download_queue_ceil"), T("")); if(!qos_enable || !strlen(qos_enable)) return; if(!strcmp(upload_bandwidth, "custom")) if(!upload_bandwidth_custom) return; if(!strcmp(download_bandwidth, "custom")) if(!download_bandwidth_custom) return; if(!strcmp(qos_enable, "1") /* bi-dir */ || !strcmp(qos_enable, "2") /* upload */ || !strcmp(qos_enable, "3") /* download */ || !strcmp(qos_enable, "4") /* port based */) { if(!strlen(upload_bandwidth)) return; if(!strlen(download_bandwidth)) return; } nvram_bufset(RT2860_NVRAM, "QoSEnable", qos_enable); if(!strcmp(qos_enable, "1") /* bi-dir */ || !strcmp(qos_enable, "2")/* upload */ || !strcmp(qos_enable, "3") /* download */ || !strcmp(qos_enable, "4") /* port based */) { char postfix[16]; strncpy(postfix, upload_bandwidth_custom, sizeof(postfix)); if(!strchr(postfix, 'k') && !strchr(postfix, 'K') && !strchr(postfix, 'm') && !strchr(postfix, 'M') ) strncat(postfix, "k", sizeof(postfix)); nvram_bufset(RT2860_NVRAM, "QoSUploadBandwidth_custom", postfix); strncpy(postfix, download_bandwidth_custom, sizeof(postfix)); if(!strchr(postfix, 'k') && !strchr(postfix, 'K') && !strchr(postfix, 'm') && !strchr(postfix, 'M') ) strncat(postfix, "k", sizeof(postfix)); nvram_bufset(RT2860_NVRAM, "QoSDownloadBandwidth_custom", postfix); nvram_bufset(RT2860_NVRAM, "QoSUploadBandwidth", upload_bandwidth); nvram_bufset(RT2860_NVRAM, "QoSDownloadBandwidth", download_bandwidth); nvram_bufset(RT2860_NVRAM, "QoSReserveBandwidth", reserve_bandwidth); nvram_bufset(RT2860_NVRAM, "QoSModel", qos_model); if(highest_upload_queue_rate && strlen(highest_upload_queue_rate)) nvram_bufset(RT2860_NVRAM, "QoSAF5ULRate", highest_upload_queue_rate); if(high_upload_queue_rate && strlen(high_upload_queue_rate)) nvram_bufset(RT2860_NVRAM, "QoSAF2ULRate", high_upload_queue_rate); if(default_upload_queue_rate && strlen(default_upload_queue_rate)) nvram_bufset(RT2860_NVRAM, "QoSAF6ULRate", default_upload_queue_rate); if(low_upload_queue_rate && strlen(low_upload_queue_rate)) nvram_bufset(RT2860_NVRAM, "QoSAF1ULRate", low_upload_queue_rate); if(highest_upload_queue_ceil && strlen(highest_upload_queue_ceil)) nvram_bufset(RT2860_NVRAM, "QoSAF5ULCeil", highest_upload_queue_ceil); if(high_upload_queue_ceil && strlen(high_upload_queue_ceil)) nvram_bufset(RT2860_NVRAM, "QoSAF2ULCeil", high_upload_queue_ceil); if(default_upload_queue_ceil && strlen(default_upload_queue_ceil)) nvram_bufset(RT2860_NVRAM, "QoSAF6ULCeil", default_upload_queue_ceil); if(low_upload_queue_ceil && strlen(low_upload_queue_ceil)) nvram_bufset(RT2860_NVRAM, "QoSAF1ULCeil", low_upload_queue_ceil); if(highest_download_queue_rate && strlen(highest_download_queue_rate)) nvram_bufset(RT2860_NVRAM, "QoSAF5DLRate", highest_download_queue_rate); if(high_download_queue_rate && strlen(high_download_queue_rate)) nvram_bufset(RT2860_NVRAM, "QoSAF2DLRate", high_download_queue_rate); if(default_download_queue_rate && strlen(default_download_queue_rate)) nvram_bufset(RT2860_NVRAM, "QoSAF6DLRate", default_download_queue_rate); if(low_download_queue_rate && strlen(low_download_queue_rate)) nvram_bufset(RT2860_NVRAM, "QoSAF1DLRate", low_download_queue_rate); if(highest_download_queue_ceil && strlen(highest_download_queue_ceil)) nvram_bufset(RT2860_NVRAM, "QoSAF5DLCeil", highest_download_queue_ceil); if(high_download_queue_ceil && strlen(high_download_queue_ceil)) nvram_bufset(RT2860_NVRAM, "QoSAF2DLCeil", high_download_queue_ceil); if(default_download_queue_ceil && strlen(default_download_queue_ceil)) nvram_bufset(RT2860_NVRAM, "QoSAF6DLCeil", default_download_queue_ceil); if(low_download_queue_ceil && strlen(low_download_queue_ceil)) nvram_bufset(RT2860_NVRAM, "QoSAF1DLCeil", low_download_queue_ceil); } // nvram_commit(RT2860_NVRAM); QoSRestart(); websHeader(wp); websWrite(wp, T("qos_enable: %s<br>\n"), qos_enable); websWrite(wp, T("upload bandwidth: %s<br>\n"), upload_bandwidth); websWrite(wp, T("download bandwidth: %s<br>\n"), download_bandwidth); websFooter(wp); websDone(wp, 200); }
static void formAddUser(webs_t wp, char_t *path, char_t *query) { char_t *userid, *pass1, *pass2, *group, *enabled, *ok; bool_t bDisable; int nCheck; a_assert(wp); userid = websGetVar(wp, T("user"), T("")); pass1 = websGetVar(wp, T("password"), T("")); pass2 = websGetVar(wp, T("passconf"), T("")); group = websGetVar(wp, T("group"), T("")); enabled = websGetVar(wp, T("enabled"), T("")); ok = websGetVar(wp, T("ok"), T("")); websHeader(wp); websMsgStart(wp); if (gstricmp(ok, T("ok")) != 0) { websWrite(wp, T("Add User Cancelled")); } else if (gstrcmp(pass1, pass2) != 0) { websWrite(wp, T("Confirmation Password did not match.")); } else { if (enabled && *enabled && (gstrcmp(enabled, T("on")) == 0)) { bDisable = FALSE; } else { bDisable = TRUE; } nCheck = umAddUser(userid, pass1, group, 0, bDisable); if (nCheck != 0) { char_t * strError; switch (nCheck) { case UM_ERR_DUPLICATE: strError = T("User already exists."); break; case UM_ERR_BAD_NAME: strError = T("Invalid user name."); break; case UM_ERR_BAD_PASSWORD: strError = T("Invalid password."); break; case UM_ERR_NOT_FOUND: strError = T("Invalid or unselected group."); break; default: strError = T("Error writing user record."); break; } websWrite(wp, T("Unable to add user, \"%s\". %s"), userid, strError); } else { websWrite(wp, T("User, \"%s\" was successfully added."), userid); } } websMsgEnd(wp); websFooter(wp); websDone(wp, 200); }
static void formAddGroup(webs_t wp, char_t *path, char_t *query) { char_t *group, *enabled, *privilege, *method, *ok, *pChar; int nCheck; short priv; accessMeth_t am; bool_t bDisable; a_assert(wp); group = websGetVar(wp, T("group"), T("")); method = websGetVar(wp, T("method"), T("")); enabled = websGetVar(wp, T("enabled"), T("")); privilege = websGetVar(wp, T("privilege"), T("")); ok = websGetVar(wp, T("ok"), T("")); websHeader(wp); websMsgStart(wp); if (gstricmp(ok, T("ok")) != 0) { websWrite(wp, T("Add Group Cancelled.")); } else if ((group == NULL) || (*group == 0)) { websWrite(wp, T("No Group Name was entered.")); } else if (umGroupExists(group)) { websWrite(wp, T("ERROR: Group, \"%s\" already exists."), group); } else { if (privilege && *privilege) { /* * privilege is a mulitple <SELECT> var, and must be parsed. * Values for these variables are space delimited. */ priv = 0; for (pChar = privilege; *pChar; pChar++) { if (*pChar == ' ') { *pChar = '\0'; priv |= gatoi(privilege); *pChar = ' '; privilege = pChar + 1; } } priv |= gatoi(privilege); } else { priv = 0; } if (method && *method) { am = (accessMeth_t) gatoi(method); } else { am = AM_FULL; } if (enabled && *enabled && (gstrcmp(enabled, T("on")) == 0)) { bDisable = FALSE; } else { bDisable = TRUE; } nCheck = umAddGroup(group, priv, am, 0, bDisable); if (nCheck != 0) { websWrite(wp, T("Unable to add group, \"%s\", code: %d "), group, nCheck); } else { websWrite(wp, T("Group, \"%s\" was successfully added."), group); } } websMsgEnd(wp); websFooter(wp); websDone(wp, 200); }