Ignore:
Timestamp:
Mar 20, 2017, 11:16:05 PM (5 weeks ago)
Author:
brainslayer
Message:

delete previous ddns values if service is changed. this prevents keeping of dead data within the nvram

File:
1 edited

Legend:

Unmodified
Added
Removed
  • src/router/httpd/validate/webs.c

    r31450 r31714  
    39563956}
    39573957
     3958static void getddns_userdata(int enable, char *_username, char *_passwd, char *_hostname)
     3959{
     3960
     3961        switch (enable) {
     3962        case 1:
     3963                // dyndns
     3964                snprintf(_username, sizeof(_username), "%s", "ddns_username");
     3965                snprintf(_passwd, sizeof(_passwd), "%s", "ddns_passwd");
     3966                snprintf(_hostname, sizeof(_hostname), "%s", "ddns_hostname");
     3967
     3968        case 2:
     3969        case 3:         // zoneedit
     3970        case 4:         // no-ip
     3971        case 5:
     3972        case 6:
     3973        case 7:
     3974        case 8:         // tzo
     3975        case 9:         // dynSIP
     3976        case 10:                // dtdns
     3977        case 11:                //duiadns
     3978                // 3322 dynamic : added botho 30/07/06
     3979                // easydns
     3980                snprintf(_username, sizeof(_username), "ddns_username_%d", enable);
     3981                snprintf(_passwd, sizeof(_passwd), "ddns_passwd_%d", enable);
     3982                snprintf(_hostname, sizeof(_hostname), "ddns_hostname_%d", enable);
     3983
     3984                break;
     3985        }
     3986
     3987}
     3988
    39583989void ddns_save_value(webs_t wp)
    39593990{
    3960         char *enable, *username, *passwd, *hostname, *dyndnstype, *wildcard, *custom, *conf, *url, *force, *wan_ip;
    3961         struct variable ddns_variables[] = {
    3962                 {
    3963               argv:ARGV("0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10")}, {
    3964               argv:                                                              ARGV("30")},
    3965         }, *which;
     3991        char *username, *passwd, *hostname, *dyndnstype, *wildcard, *custom, *conf, *url, *wan_ip;
     3992        int enable, force;
    39663993        char _username[] = "ddns_username_XX";
    39673994        char _passwd[] = "ddns_passwd_XX";
     
    39754002        char _wan_ip[] = "ddns_wan_ip";
    39764003
    3977         which = &ddns_variables[0];
    3978 
    3979         enable = websGetVar(wp, "ddns_enable", NULL);
    3980         if (!enable && !valid_choice(wp, enable, &which[0])) {
     4004        char *s_enable = websGetVar(wp, "ddns_enable", NULL);
     4005        if (s_enable)
     4006                enable = atoi(s_enable);
     4007        if (!s_enable || enable > 11 || enable < 0) {
    39814008                return;
    39824009        }
    39834010        int gethash = 0;
    39844011
    3985         switch (atoi(enable)) {
     4012        int i;
     4013        for (i = 1; i < 12; i++) {
     4014                if (i == atoi(enable))
     4015                        continue;
     4016                getddns_userdata(i, _username, _passwd, _hostname);
     4017                nvram_unset(_username);
     4018                nvram_unset(_passwd);
     4019                nvram_unset(_hostname);
     4020        }
     4021        getddns_userdata(atoi(enable), _username, _passwd, _hostname);
     4022
     4023        switch (enable) {
    39864024        case 0:
    39874025                // Disable
     
    39914029        case 1:
    39924030                // dyndns
    3993                 snprintf(_username, sizeof(_username), "%s", "ddns_username");
    3994                 snprintf(_passwd, sizeof(_passwd), "%s", "ddns_passwd");
    3995                 snprintf(_hostname, sizeof(_hostname), "%s", "ddns_hostname");
     4031
    39964032                snprintf(_dyndnstype, sizeof(_dyndnstype), "%s", "ddns_dyndnstype");
    39974033                snprintf(_wildcard, sizeof(_wildcard), "%s", "ddns_wildcard");
     
    39994035        case 2:
    40004036                // afraid
    4001                 snprintf(_username, sizeof(_username), "ddns_username_%s", enable);
    4002                 snprintf(_passwd, sizeof(_passwd), "ddns_passwd_%s", enable);
    4003                 snprintf(_hostname, sizeof(_hostname), "ddns_hostname_%s", enable);
    40044037                gethash = 1;
    4005                 break;
    4006         case 3:         // zoneedit
    4007         case 4:         // no-ip
    4008         case 8:         // tzo
    4009         case 9:         // dynSIP
    4010         case 11:        //duiadns
    4011                 snprintf(_username, sizeof(_username), "ddns_username_%s", enable);
    4012                 snprintf(_passwd, sizeof(_passwd), "ddns_passwd_%s", enable);
    4013                 snprintf(_hostname, sizeof(_hostname), "ddns_hostname_%s", enable);
    4014                 break;
    4015         case 10:                // dtdns
    4016                 snprintf(_username, sizeof(_username), "ddns_username_%s", enable);
    4017                 snprintf(_passwd, sizeof(_passwd), "ddns_passwd_%s", enable);
    4018                 snprintf(_hostname, sizeof(_hostname), "ddns_username_%s", enable);
    40194038                break;
    40204039        case 5:
    40214040                // custom
    4022                 snprintf(_username, sizeof(_username), "ddns_username_%s", enable);
    4023                 snprintf(_passwd, sizeof(_passwd), "ddns_passwd_%s", enable);
    4024                 snprintf(_hostname, sizeof(_hostname), "ddns_hostname_%s", enable);
    4025                 snprintf(_custom, sizeof(_custom), "ddns_custom_%s", enable);
     4041                snprintf(_custom, sizeof(_custom), "ddns_custom_%d", enable);
    40264042                snprintf(_conf, sizeof(_conf), "%s", "ddns_conf");
    40274043                snprintf(_url, sizeof(_url), "%s", "ddns_url");
     
    40294045        case 6:
    40304046                // 3322 dynamic : added botho 30/07/06
    4031                 snprintf(_username, sizeof(_username), "ddns_username_%s", enable);
    4032                 snprintf(_passwd, sizeof(_passwd), "ddns_passwd_%s", enable);
    4033                 snprintf(_hostname, sizeof(_hostname), "ddns_hostname_%s", enable);
    4034                 snprintf(_dyndnstype, sizeof(_dyndnstype), "ddns_dyndnstype_%s", enable);
    4035                 snprintf(_wildcard, sizeof(_wildcard), "ddns_wildcard_%s", enable);
     4047                snprintf(_dyndnstype, sizeof(_dyndnstype), "ddns_dyndnstype_%d", enable);
     4048                snprintf(_wildcard, sizeof(_wildcard), "ddns_wildcard_%d", enable);
    40364049                break;
    40374050        case 7:
    40384051                // easydns
    4039                 snprintf(_username, sizeof(_username), "ddns_username_%s", enable);
    4040                 snprintf(_passwd, sizeof(_passwd), "ddns_passwd_%s", enable);
    4041                 snprintf(_hostname, sizeof(_hostname), "ddns_hostname_%s", enable);
    4042                 snprintf(_wildcard, sizeof(_wildcard), "ddns_wildcard_%s", enable);
     4052                snprintf(_wildcard, sizeof(_wildcard), "ddns_wildcard_%d", enable);
    40434053                break;
    40444054        }
     
    40524062        conf = websGetVar(wp, _conf, NULL);
    40534063        url = websGetVar(wp, _url, NULL);
    4054         force = websGetVar(wp, _force, NULL);
     4064        force = atoi(websGetVar(wp, _force, "0"));
    40554065        wan_ip = websGetVar(wp, _wan_ip, NULL);
    40564066
     
    40594069        }
    40604070
    4061         if (atoi(force) < 1 || atoi(force) > 60) {
    4062                 force = "10";
    4063         }
    4064 
    4065         nvram_set("ddns_enable", enable);
     4071        if (force < 1 || force > 60) {
     4072                force = 10;
     4073        }
     4074
     4075        nvram_seti("ddns_enable", enable);
    40664076        nvram_set(_username, username);
    40674077        if (strcmp(passwd, TMP_PASSWD)) {
     
    40864096        nvram_set(_conf, conf);
    40874097        nvram_set(_url, url);
    4088         nvram_set(_force, force);
     4098        nvram_seti(_force, force);
    40894099        nvram_set(_wan_ip, wan_ip);
    40904100
Note: See TracChangeset for help on using the changeset viewer.