]> git.ipfire.org Git - thirdparty/freeswitch.git/commitdiff
mod_sofia: add 'allow-empty-password' param (default true)
authorMichael Jerris <mike@jerris.com>
Mon, 26 Apr 2010 10:04:45 +0000 (06:04 -0400)
committerMichael Jerris <mike@jerris.com>
Mon, 26 Apr 2010 10:04:45 +0000 (06:04 -0400)
src/mod/endpoints/mod_sofia/sofia_reg.c

index 676998c106ba720faf96c756d4fe23ee4c3d2056..d9c60aa5a6d1a1cf044e043e0145e1958aac68a5 100644 (file)
@@ -1688,6 +1688,7 @@ auth_res_t sofia_reg_parse_auth(sofia_profile_t *profile,
        const char *passwd = NULL;
        const char *a1_hash = NULL;
        const char *mwi_account = NULL;
+       switch_bool_t allow_empty_password = SWITCH_TRUE;
        const char *call_id = NULL;
        char *sql;
        char *number_alias = NULL;
@@ -1924,7 +1925,9 @@ auth_res_t sofia_reg_parse_auth(sofia_profile_t *profile,
                        if (!strcasecmp(var, "mwi-account")) {
                                mwi_account = val;
                        }
-
+                       if (!strcasecmp(var, "allow-empty-password")) {
+                               allow_empty_password = switch_true(val);
+                       }
                        if (!strcasecmp(var, "user-agent-filter")) {
                                user_agent_filter = val;
                        }
@@ -1958,7 +1961,9 @@ auth_res_t sofia_reg_parse_auth(sofia_profile_t *profile,
                        if (!strcasecmp(var, "mwi-account")) {
                                mwi_account = val;
                        }
-
+                       if (!strcasecmp(var, "allow-empty-password")) {
+                               allow_empty_password = switch_true(val);
+                       }
                        if (!strcasecmp(var, "user-agent-filter")) {
                                user_agent_filter = val;
                        }
@@ -1992,6 +1997,9 @@ auth_res_t sofia_reg_parse_auth(sofia_profile_t *profile,
                        if (!strcasecmp(var, "mwi-account")) {
                                mwi_account = val;
                        }
+                       if (!strcasecmp(var, "allow-empty-password")) {
+                               allow_empty_password = switch_true(val);
+                       }
                        if (!strcasecmp(var, "user-agent-filter")) {
                                user_agent_filter = val;
                        }
@@ -2058,6 +2066,12 @@ auth_res_t sofia_reg_parse_auth(sofia_profile_t *profile,
                }
        }
 
+       if (!allow_empty_password && zstr(passwd) && zstr(a1_hash)) {
+               switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_WARNING, "Empty password denied for user %s@%s\n", username, domain_name);
+               ret = AUTH_FORBIDDEN;
+               goto end;
+       }
+       
        if (zstr(passwd) && zstr(a1_hash)) {
                ret = AUTH_OK;
                goto skip_auth;