Diff for /embedaddon/lighttpd/src/mod_auth.c between versions 1.1.1.2 and 1.1.1.2.2.1

version 1.1.1.2, 2014/06/15 20:20:06 version 1.1.1.2.2.1, 2014/06/15 20:22:25
Line 11 Line 11
 #include <errno.h>  #include <errno.h>
 #include <fcntl.h>  #include <fcntl.h>
 #include <unistd.h>  #include <unistd.h>
   #include <mysql/mysql.h>
   
 handler_t auth_ldap_init(server *srv, mod_auth_plugin_config *s);  handler_t auth_ldap_init(server *srv, mod_auth_plugin_config *s);
   
Line 83  FREE_FUNC(mod_auth_free) { Line 84  FREE_FUNC(mod_auth_free) {
                         if (s->ldap) ldap_unbind_s(s->ldap);                          if (s->ldap) ldap_unbind_s(s->ldap);
 #endif  #endif
   
                          buffer_free(s->auth_mysql_host);
                          buffer_free(s->auth_mysql_user);
                          buffer_free(s->auth_mysql_pass);
                          buffer_free(s->auth_mysql_db);
                          buffer_free(s->auth_mysql_socket);
                          buffer_free(s->auth_mysql_users_table);
                          buffer_free(s->auth_mysql_col_user);
                          buffer_free(s->auth_mysql_col_pass);
                          buffer_free(s->auth_mysql_col_realm);
                          buffer_free(s->auth_mysql_domains_table);
                          buffer_free(s->auth_mysql_col_domain);
                          buffer_free(s->auth_mysql_domains_table_col_domain_id);
                          buffer_free(s->auth_mysql_users_table_col_domain_id);
   
                         free(s);                          free(s);
                 }                  }
                 free(p->config_storage);                  free(p->config_storage);
Line 120  static int mod_auth_patch_connection(server *srv, conn Line 135  static int mod_auth_patch_connection(server *srv, conn
         PATCH(ldap_filter_post);          PATCH(ldap_filter_post);
 #endif  #endif
   
          PATCH(auth_mysql_host);
          PATCH(auth_mysql_user);
          PATCH(auth_mysql_pass);
          PATCH(auth_mysql_db);
          PATCH(auth_mysql_port);
          PATCH(auth_mysql_socket);
          PATCH(auth_mysql_users_table);
          PATCH(auth_mysql_col_user);
          PATCH(auth_mysql_col_pass);
          PATCH(auth_mysql_col_realm);
          PATCH(auth_mysql_domains_table);
          PATCH(auth_mysql_col_domain);
          PATCH(auth_mysql_domains_table_col_domain_id);
          PATCH(auth_mysql_users_table_col_domain_id);
   
         /* skip the first, the global context */          /* skip the first, the global context */
         for (i = 1; i < srv->config_context->used; i++) {          for (i = 1; i < srv->config_context->used; i++) {
                 data_config *dc = (data_config *)srv->config_context->data[i];                  data_config *dc = (data_config *)srv->config_context->data[i];
Line 169  static int mod_auth_patch_connection(server *srv, conn Line 199  static int mod_auth_patch_connection(server *srv, conn
                                 PATCH(auth_ldap_bindpw);                                  PATCH(auth_ldap_bindpw);
                         } else if (buffer_is_equal_string(du->key, CONST_STR_LEN("auth.backend.ldap.allow-empty-pw"))) {                          } else if (buffer_is_equal_string(du->key, CONST_STR_LEN("auth.backend.ldap.allow-empty-pw"))) {
                                 PATCH(auth_ldap_allow_empty_pw);                                  PATCH(auth_ldap_allow_empty_pw);
                          } else if (buffer_is_equal_string(du->key, CONST_STR_LEN("auth.backend.mysql.host"))) {
                                  PATCH(auth_mysql_host);
                          } else if (buffer_is_equal_string(du->key, CONST_STR_LEN("auth.backend.mysql.user"))) {
                                  PATCH(auth_mysql_user);
                          } else if (buffer_is_equal_string(du->key, CONST_STR_LEN("auth.backend.mysql.pass"))) {
                                  PATCH(auth_mysql_pass);
                          } else if (buffer_is_equal_string(du->key, CONST_STR_LEN("auth.backend.mysql.db"))) {
                                  PATCH(auth_mysql_db);
                          } else if (buffer_is_equal_string(du->key, CONST_STR_LEN("auth.backend.mysql.port"))) {
                                  PATCH(auth_mysql_port);
                          } else if (buffer_is_equal_string(du->key, CONST_STR_LEN("auth.backend.mysql.socket"))) {
                                  PATCH(auth_mysql_user);
                          } else if (buffer_is_equal_string(du->key, CONST_STR_LEN("auth.backend.mysql.users_table"))) {
                                  PATCH(auth_mysql_users_table);
                          } else if (buffer_is_equal_string(du->key, CONST_STR_LEN("auth.backend.mysql.col_user"))) {
                                  PATCH(auth_mysql_col_user);
                          } else if (buffer_is_equal_string(du->key, CONST_STR_LEN("auth.backend.mysql.col_pass"))) {
                                  PATCH(auth_mysql_col_pass);
                          } else if (buffer_is_equal_string(du->key, CONST_STR_LEN("auth.backend.mysql.col_realm"))) {
                                  PATCH(auth_mysql_col_realm);
                          } else if (buffer_is_equal_string(du->key, CONST_STR_LEN("auth.backend.mysql.domains_table"))) {
                                  PATCH(auth_mysql_domains_table);
                          } else if (buffer_is_equal_string(du->key, CONST_STR_LEN("auth.backend.mysql.col_domain"))) {
                                  PATCH(auth_mysql_col_domain);
                          } else if (buffer_is_equal_string(du->key, CONST_STR_LEN("auth.backend.mysql.domains_table_col_domain_id"))) {
                                  PATCH(auth_mysql_domains_table_col_domain_id);
                          } else if (buffer_is_equal_string(du->key, CONST_STR_LEN("auth.backend.mysql.users_table_col_domain_id"))) {
                                  PATCH(auth_mysql_users_table_col_domain_id);
                         }                          }
                 }                  }
         }          }
Line 357  SETDEFAULTS_FUNC(mod_auth_set_defaults) { Line 415  SETDEFAULTS_FUNC(mod_auth_set_defaults) {
                 { "auth.backend.ldap.starttls",     NULL, T_CONFIG_BOOLEAN, T_CONFIG_SCOPE_CONNECTION }, /* 8 */                  { "auth.backend.ldap.starttls",     NULL, T_CONFIG_BOOLEAN, T_CONFIG_SCOPE_CONNECTION }, /* 8 */
                 { "auth.backend.ldap.bind-dn",      NULL, T_CONFIG_STRING, T_CONFIG_SCOPE_CONNECTION }, /* 9 */                  { "auth.backend.ldap.bind-dn",      NULL, T_CONFIG_STRING, T_CONFIG_SCOPE_CONNECTION }, /* 9 */
                 { "auth.backend.ldap.bind-pw",      NULL, T_CONFIG_STRING, T_CONFIG_SCOPE_CONNECTION }, /* 10 */                  { "auth.backend.ldap.bind-pw",      NULL, T_CONFIG_STRING, T_CONFIG_SCOPE_CONNECTION }, /* 10 */
                { "auth.backend.ldap.allow-empty-pw",     NULL, T_CONFIG_BOOLEAN, T_CONFIG_SCOPE_CONNECTION }, /* 11 */                { "auth.backend.ldap.allow-empty-pw",     NULL, T_CONFIG_BOOLEAN, T_CONFIG_SCOPE_CONNECTION },
                 { "auth.backend.htdigest.userfile", NULL, T_CONFIG_STRING, T_CONFIG_SCOPE_CONNECTION }, /* 12 */                  { "auth.backend.htdigest.userfile", NULL, T_CONFIG_STRING, T_CONFIG_SCOPE_CONNECTION }, /* 12 */
                 { "auth.backend.htpasswd.userfile", NULL, T_CONFIG_STRING, T_CONFIG_SCOPE_CONNECTION }, /* 13 */                  { "auth.backend.htpasswd.userfile", NULL, T_CONFIG_STRING, T_CONFIG_SCOPE_CONNECTION }, /* 13 */
                 { "auth.debug",                     NULL, T_CONFIG_SHORT, T_CONFIG_SCOPE_CONNECTION },  /* 14 */                  { "auth.debug",                     NULL, T_CONFIG_SHORT, T_CONFIG_SCOPE_CONNECTION },  /* 14 */
                   { "auth.backend.mysql.host",        NULL, T_CONFIG_STRING, T_CONFIG_SCOPE_CONNECTION },
                   { "auth.backend.mysql.user",        NULL, T_CONFIG_STRING, T_CONFIG_SCOPE_CONNECTION },
                   { "auth.backend.mysql.pass",        NULL, T_CONFIG_STRING, T_CONFIG_SCOPE_CONNECTION },
                   { "auth.backend.mysql.db",          NULL, T_CONFIG_STRING, T_CONFIG_SCOPE_CONNECTION },
                   { "auth.backend.mysql.port",        NULL, T_CONFIG_STRING, T_CONFIG_SCOPE_CONNECTION },
                   { "auth.backend.mysql.socket",      NULL, T_CONFIG_STRING, T_CONFIG_SCOPE_CONNECTION },
                   { "auth.backend.mysql.users_table", NULL, T_CONFIG_STRING, T_CONFIG_SCOPE_CONNECTION },
                   { "auth.backend.mysql.col_user",    NULL, T_CONFIG_STRING, T_CONFIG_SCOPE_CONNECTION },
                   { "auth.backend.mysql.col_pass",    NULL, T_CONFIG_STRING, T_CONFIG_SCOPE_CONNECTION },
                   { "auth.backend.mysql.col_realm",   NULL, T_CONFIG_STRING, T_CONFIG_SCOPE_CONNECTION }, /* 23 */
                   { "auth.backend.mysql.domains_table",               NULL, T_CONFIG_STRING, T_CONFIG_SCOPE_CONNECTION },
                   { "auth.backend.mysql.col_domain",                  NULL, T_CONFIG_STRING, T_CONFIG_SCOPE_CONNECTION },
                   { "auth.backend.mysql.domains_table_col_domain_id", NULL, T_CONFIG_STRING, T_CONFIG_SCOPE_CONNECTION },
                   { "auth.backend.mysql.users_table_col_domain_id",   NULL, T_CONFIG_STRING, T_CONFIG_SCOPE_CONNECTION }, /* 27 */
                 { NULL,                             NULL, T_CONFIG_UNSET, T_CONFIG_SCOPE_UNSET }                  { NULL,                             NULL, T_CONFIG_UNSET, T_CONFIG_SCOPE_UNSET }
         };          };
   
Line 389  SETDEFAULTS_FUNC(mod_auth_set_defaults) { Line 461  SETDEFAULTS_FUNC(mod_auth_set_defaults) {
                 s->auth_debug = 0;                  s->auth_debug = 0;
   
                 s->auth_require = array_init();                  s->auth_require = array_init();
                   s->mysql_conn                             = NULL;
                   s->auth_mysql_host                        = buffer_init();
                   s->auth_mysql_user                        = buffer_init();
                   s->auth_mysql_pass                        = buffer_init();
                   s->auth_mysql_db                          = buffer_init();
                   s->auth_mysql_port                        = buffer_init();
                   s->auth_mysql_socket                      = buffer_init();
                   s->auth_mysql_users_table                 = buffer_init();
                   s->auth_mysql_col_user                    = buffer_init();
                   s->auth_mysql_col_pass                    = buffer_init();
                   s->auth_mysql_col_realm                   = buffer_init();
                   s->auth_mysql_domains_table               = buffer_init();
                   s->auth_mysql_col_domain                  = buffer_init();
                   s->auth_mysql_domains_table_col_domain_id = buffer_init();
                   s->auth_mysql_users_table_col_domain_id   = buffer_init();
   
   
 #ifdef USE_LDAP  #ifdef USE_LDAP
                 s->ldap_filter_pre = buffer_init();                  s->ldap_filter_pre = buffer_init();
                 s->ldap_filter_post = buffer_init();                  s->ldap_filter_post = buffer_init();
Line 411  SETDEFAULTS_FUNC(mod_auth_set_defaults) { Line 499  SETDEFAULTS_FUNC(mod_auth_set_defaults) {
                 cv[12].destination = s->auth_htdigest_userfile;                  cv[12].destination = s->auth_htdigest_userfile;
                 cv[13].destination = s->auth_htpasswd_userfile;                  cv[13].destination = s->auth_htpasswd_userfile;
                 cv[14].destination = &(s->auth_debug);                  cv[14].destination = &(s->auth_debug);
                cv[15].destination = s->auth_mysql_host;
                 cv[16].destination = s->auth_mysql_user;
                 cv[17].destination = s->auth_mysql_pass;
                 cv[18].destination = s->auth_mysql_db;
                 cv[19].destination = s->auth_mysql_port;
                 cv[20].destination = s->auth_mysql_socket;
                 cv[21].destination = s->auth_mysql_users_table;
                 cv[22].destination = s->auth_mysql_col_user;
                 cv[23].destination = s->auth_mysql_col_pass;
                 cv[24].destination = s->auth_mysql_col_realm;
                 cv[25].destination = s->auth_mysql_domains_table;
                 cv[26].destination = s->auth_mysql_col_domain;
                 cv[27].destination = s->auth_mysql_domains_table_col_domain_id;
                 cv[28].destination = s->auth_mysql_users_table_col_domain_id;
                 p->config_storage[i] = s;                  p->config_storage[i] = s;
                 ca = ((data_config *)srv->config_context->data[i])->value;                  ca = ((data_config *)srv->config_context->data[i])->value;
   
Line 428  SETDEFAULTS_FUNC(mod_auth_set_defaults) { Line 529  SETDEFAULTS_FUNC(mod_auth_set_defaults) {
                                 s->auth_backend = AUTH_BACKEND_PLAIN;                                  s->auth_backend = AUTH_BACKEND_PLAIN;
                         } else if (0 == strcmp(s->auth_backend_conf->ptr, "ldap")) {                          } else if (0 == strcmp(s->auth_backend_conf->ptr, "ldap")) {
                                 s->auth_backend = AUTH_BACKEND_LDAP;                                  s->auth_backend = AUTH_BACKEND_LDAP;
                           } else if (0 == strcmp(s->auth_backend_conf->ptr, "mysql")) {
                                   s->auth_backend = AUTH_BACKEND_MYSQL;
                         } else {                          } else {
                                 log_error_write(srv, __FILE__, __LINE__, "sb", "auth.backend not supported:", s->auth_backend_conf);                                  log_error_write(srv, __FILE__, __LINE__, "sb", "auth.backend not supported:", s->auth_backend_conf);
   
Line 569  SETDEFAULTS_FUNC(mod_auth_set_defaults) { Line 672  SETDEFAULTS_FUNC(mod_auth_set_defaults) {
                                 return (ret);                                  return (ret);
                         break;                          break;
                 }                  }
                  case AUTH_BACKEND_MYSQL: {
                          int port = atoi(s->auth_mysql_port->ptr);
   
                          if (p->conf.auth_mysql_socket->ptr != NULL)
                              if (0 == strcmp(s->auth_mysql_socket->ptr, "")) s->auth_mysql_socket->ptr = NULL;
   
                          s->mysql_conn = mysql_init(NULL);
                          if (!mysql_real_connect(s->mysql_conn, s->auth_mysql_host->ptr, s->auth_mysql_user->ptr, s->auth_mysql_pass->ptr, s->auth_mysql_db->ptr, port, NULL, 0))
                          {
                              log_error_write(srv, __FILE__, __LINE__, "sbsbsbsbss",
                                  "opening connection to mysql:", s->auth_mysql_host,
                                  "user:", s->auth_mysql_user,
                                  "pass:", s->auth_mysql_pass,
                                  "db:", s->auth_mysql_db,
                                  "failed:", strerror(errno));
   
                              return HANDLER_ERROR;
                          }
                          mysql_close(s->mysql_conn);
   
                          break;
                  }
                 default:                  default:
                         break;                          break;
                 }                  }

Removed from v.1.1.1.2  
changed lines
  Added in v.1.1.1.2.2.1


FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>