Ir para conteúdo
Fórum Script Brasil

RafaelMagalhaes82

Membros
  • Total de itens

    7
  • Registro em

  • Última visita

Sobre RafaelMagalhaes82

RafaelMagalhaes82's Achievements

0

Reputação

  1. Pessoal, boa noite! Alguém pode me ajudar? Estou com essa consulta SQL no PHP e não estou conseguindo achar o erro... pois digito o login e senha corretamente e não loga... Segue: $sql = "SELECT `id`, `nome` FROM `".$_SG['tabela']."` WHERE `usuario` = '".$nusuario."' AND `senha` = '".$nsenha."' LIMIT 1"; Segue a função toda: function validaUsuario($usuario, $senha) { global $_SG; // $cS = ($_SG['caseSensitive']) ? 'BINARY' : ''; // Usa a função addslashes para escapar as aspas $nusuario = addslashes($usuario); $nsenha = addslashes($senha); // Monta uma consulta SQL (query) para procurar um usuário $sql = "SELECT `id`, `nome` FROM `".$_SG['tabela']."` WHERE `usuario` = '".$nusuario."' AND `senha` = '".$nsenha."' LIMIT 1"; $query = mysql_query($sql); $resultado = mysql_fetch_assoc($query); // Verifica se encontrou algum registro if (empty($resultado)) { // Nenhum registro foi encontrado => o usuário é inválido return false; } else { // Definimos dois valores na sessão com os dados do usuário $_SESSION['usuarioID'] = $resultado['id']; // Pega o valor da coluna 'id do registro encontrado no MySQL $_SESSION['usuarioNome'] = $resultado['nome']; // Pega o valor da coluna 'nome' do registro encontrado no MySQL // Verifica a opção se sempre validar o login if ($_SG['validaSempre'] == true) { // Definimos dois valores na sessão com os dados do login $_SESSION['usuarioLogin'] = $usuario; $_SESSION['usuarioSenha'] = $senha; } return true; } }
  2. Pessoal, bom dia! Me dá uma ajuda! Tive que alterar a partição de dados do meu MySQL pois a partição "/" estava estourando. Fiz o seguinte procedimento: - Parei o MySQL - Copiei toda a base da origem para o destino - Dei as permissões para o usuário "mysql" do linux - Alterei o parâmetro "datadir" do my.cnf - Tentei inicializar o MySQL. Está dando erro para inicializar: root@RJMRLNX01:~# service mysql start Job for mysql.service failed because the control process exited with error code. See "systemctl status mysql.service" and "journalctl -xe" for details. root@RJMRLNX01:~# systemctl status mysql.service ● mysql.service - MySQL Community Server Loaded: loaded (/lib/systemd/system/mysql.service; enabled; vendor preset: enabled) Active: inactive (dead) (Result: exit-code) since seg 2016-09-12 10:10:16 BRT; 491ms ago Process: 50336 ExecStart=/usr/sbin/mysqld --daemonize --pid-file=/var/run/mysqld/mysqld.pid (code=exited, status=1/FAILURE) Process: 50328 ExecStartPre=/usr/share/mysql/mysql-systemd-start pre (code=exited, status=0/SUCCESS) Main PID: 56049 (code=exited, status=0/SUCCESS) set 12 10:10:16 RJMRLNX01 systemd[1]: Failed to start MySQL Community Server. set 12 10:10:16 RJMRLNX01 systemd[1]: mysql.service: Unit entered failed state. set 12 10:10:16 RJMRLNX01 systemd[1]: mysql.service: Failed with result 'exit-code'. set 12 10:10:16 RJMRLNX01 systemd[1]: mysql.service: Service hold-off time over, scheduling restart. set 12 10:10:16 RJMRLNX01 systemd[1]: Stopped MySQL Community Server. set 12 10:10:16 RJMRLNX01 systemd[1]: mysql.service: Start request repeated too quickly. set 12 10:10:16 RJMRLNX01 systemd[1]: Failed to start MySQL Community Server. root@RJMRLNX01:/etc/mysql/mysql.conf.d# journalctl -xe -- Defined-By: systemd -- Support: http://lists.freedesktop.org/mailman/listinfo/systemd-devel -- -- A unidade mysql.service falhou. -- -- O resultado é failed. set 12 11:07:32 RJMRLNX01 systemd[1]: mysql.service: Unit entered failed state. set 12 11:07:32 RJMRLNX01 systemd[1]: mysql.service: Failed with result 'exit-code'. set 12 11:07:32 RJMRLNX01 systemd[1]: mysql.service: Service hold-off time over, scheduling restart. set 12 11:07:32 RJMRLNX01 systemd[1]: Stopped MySQL Community Server. -- Subject: A unidade mysql.service concluiu o desligamento -- Defined-By: systemd -- Support: http://lists.freedesktop.org/mailman/listinfo/systemd-devel -- -- A unidade mysql.service concluiu o desligamento. set 12 11:07:32 RJMRLNX01 systemd[1]: Starting MySQL Community Server... -- Subject: Unidade mysql.service sendo iniciado -- Defined-By: systemd -- Support: http://lists.freedesktop.org/mailman/listinfo/systemd-devel -- -- A unidade mysql.service está sendo iniciada. set 12 11:07:32 RJMRLNX01 audit[4360]: AVC apparmor="STATUS" operation="profile_replace" profile="unconfined" name="/usr/sbin/mysqld" pid=4360 comm="apparmor set 12 11:07:32 RJMRLNX01 kernel: audit: type=1400 audit(1473689252.755:98): apparmor="STATUS" operation="profile_replace" profile="unconfined" name="/usr/sb set 12 11:07:32 RJMRLNX01 mysqld[4363]: Initialization of mysqld failed: 0 set 12 11:07:32 RJMRLNX01 systemd[1]: mysql.service: Control process exited, code=exited status=1 set 12 11:07:32 RJMRLNX01 systemd[1]: Failed to start MySQL Community Server. -- Subject: A unidade mysql.service falhou -- Defined-By: systemd -- Support: http://lists.freedesktop.org/mailman/listinfo/systemd-devel -- -- A unidade mysql.service falhou. -- -- O resultado é failed. set 12 11:07:32 RJMRLNX01 systemd[1]: mysql.service: Unit entered failed state. set 12 11:07:32 RJMRLNX01 systemd[1]: mysql.service: Failed with result 'exit-code'. set 12 11:07:33 RJMRLNX01 systemd[1]: mysql.service: Service hold-off time over, scheduling restart. set 12 11:07:33 RJMRLNX01 systemd[1]: Stopped MySQL Community Server. -- Subject: A unidade mysql.service concluiu o desligamento -- Defined-By: systemd -- Support: http://lists.freedesktop.org/mailman/listinfo/systemd-devel -- -- A unidade mysql.service concluiu o desligamento. set 12 11:07:33 RJMRLNX01 systemd[1]: mysql.service: Start request repeated too quickly. set 12 11:07:33 RJMRLNX01 systemd[1]: Failed to start MySQL Community Server. -- Subject: A unidade mysql.service falhou -- Defined-By: systemd -- Support: http://lists.freedesktop.org/mailman/listinfo/systemd-devel -- -- A unidade mysql.service falhou. -- -- O resultado é failed. set 12 11:09:01 RJMRLNX01 CRON[4372]: pam_unix(cron:session): session opened for user root by (uid=0) set 12 11:09:01 RJMRLNX01 CRON[4371]: pam_unix(cron:session): session opened for user root by (uid=0) set 12 11:09:01 RJMRLNX01 CRON[4373]: (root) CMD ( [ -x /usr/lib/php/sessionclean ] && /usr/lib/php/sessionclean) set 12 11:09:01 RJMRLNX01 CRON[4374]: (root) CMD ( [ -x /usr/lib/php5/sessionclean ] && /usr/lib/php5/sessionclean) set 12 11:09:01 RJMRLNX01 CRON[4371]: pam_unix(cron:session): session closed for user root set 12 11:09:01 RJMRLNX01 CRON[4372]: (CRON) info (No MTA installed, discarding output) set 12 11:09:01 RJMRLNX01 CRON[4372]: pam_unix(cron:session): session closed for user root O que fiz de errado?
  3. Amigos, To com uma dúvida para um módulo do meu sistema. Tenho uma tabela (projeto) com os campos id nome tipo valortotal Outra tabela (local) com os campos id idproj local quant valorrecebe valorpagar Outra tabela (entrevlocados) com os campos id idproj idlocal cpf nome quant valortotal Preciso incluir para cada projeto vários locais e para cada projeto vários entrevistadores. Gostaria de fazer isso em uma tela só... é possível? Obrigado!
  4. RafaelMagalhaes82

    Ocomon

    Amigos, Gostaria de fazer uma otimização no Ocomon mas não sei como. A questão é o seguinte: Aqui na empresa são os usuários que fecham o chamado, só que abrir o chamado eles abrem rapidinho mas esquecem de fechar. Então gostaria de colocar uma limitação de chamados abertos por usuário. Como faço isso? Obrigado!
  5. RafaelMagalhaes82

    PHPMailer

    Pessoal, Estou com problemas no PHPMailer do Ocomon. Está dando o erro Warning: fsockopen() [function.fsockopen]: php_network_getaddresses: getaddrinfo failed: Este host não é conhecido. in C:\xampp\htdocs\ocomon\includes\phpmailer\class.smtp.php on line 122 Warning: fsockopen() [function.fsockopen]: unable to connect to smtp.brasagro.ind.br:587 (php_network_getaddresses: getaddrinfo failed: Este host não é conhecido. ) in C:\xampp\htdocs\ocomon\includes\phpmailer\class.smtp.php on line 122 A mensagem não pôde ser enviada. Mailer Error: SMTP Error: Could not connect to SMTP host. Esse erro começou da noite pro dia. O que pode ser? Obrigado!
  6. Estou com esse código fonte: /* * ----------------------------------------------------------------------------- * * Author: Markus Moeller * * Copyright © 2007 Markus Moeller. All rights reserved. * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA. * * ----------------------------------------------------------------------------- */ #include <netdb.h> #include <ctype.h> #include <errno.h> #include "support.h" char *convert_domain_to_bind_path(char *domain); char *escape_filter(char *filter); int check_AD(struct main_args *margs, LDAP *ld); int ldap_set_defaults(struct main_args *margs, LDAP *ld); int ldap_set_ssl_defaults(struct main_args *margs); LDAP *tool_ldap_open(struct main_args *margs, char* host, int port, char *ssl); #define CONNECT_TIMEOUT 2 #define SEARCH_TIMEOUT 30 #define FILTER "(memberuid=%s)" #define ATTRIBUTE "cn" #define FILTER_UID "(uid=%s)" #define FILTER_GID "(&(gidNumber=%s)(objectclass=posixgroup))" #define ATTRIBUTE_GID "gidNumber" #define FILTER_AD "(samaccountname=%s)" #define ATTRIBUTE_AD "memberof" int get_attributes(struct main_args *margs, LDAP *ld, LDAPMessage *res, const char *attribute /* IN */, char ***out_val /* OUT (caller frees) */); int search_group_tree(struct main_args *margs,LDAP *ld, char *bindp, char *ldap_group,char *group, int depth); #ifdef HAVE_SUN_LDAP_SDK #ifdef HAVE_LDAP_REBINDPROC_CALLBACK #if defined(HAVE_SASL_H) || defined(HAVE_SASL_SASL_H) || defined(HAVE_SASL_DARWIN) static LDAP_REBINDPROC_CALLBACK ldap_sasl_rebind; static int LDAP_CALL LDAP_CALLBACK ldap_sasl_rebind( LDAP *ld, char **whop, char **credp, int *methodp, int freeit, void *params) { struct ldap_creds *cp = (struct ldap_creds *)params; whop = whop; credp = credp; methodp = methodp; freeit = freeit; return tool_sasl_bind(ld,cp->dn,cp->pw); } #endif static LDAP_REBINDPROC_CALLBACK ldap_simple_rebind; static int LDAP_CALL LDAP_CALLBACK ldap_simple_rebind( LDAP *ld, char **whop, char **credp, int *methodp, int freeit, void *params) { struct ldap_creds *cp = (struct ldap_creds *)params; whop = whop; credp = credp; methodp = methodp; freeit = freeit; return ldap_bind_s( ld, cp->dn , cp->pw , LDAP_AUTH_SIMPLE ); } #elif defined(HAVE_LDAP_REBIND_PROC) #if defined(HAVE_SASL_H) || defined(HAVE_SASL_SASL_H) || defined(HAVE_SASL_DARWIN) static LDAP_REBIND_PROC ldap_sasl_rebind; static int ldap_sasl_rebind( LDAP *ld, LDAP_CONST char *url, ber_tag_t request, ber_int_t msgid, void *params) { struct ldap_creds *cp = (struct ldap_creds *)params; url = url; request = request; msgid = msgid; return tool_sasl_bind(ld, cp->dn, cp->pw); } #endif static LDAP_REBIND_PROC ldap_simple_rebind; static int ldap_simple_rebind( LDAP *ld, LDAP_CONST char *url, ber_tag_t request, ber_int_t msgid, void *params) { struct ldap_creds *cp = (struct ldap_creds *)params; url = url; request = request; msgid = msgid; return ldap_bind_s( ld, cp->dn , cp->pw , LDAP_AUTH_SIMPLE ); } #elif defined(HAVE_LDAP_REBIND_FUNCTION) #ifndef LDAP_REFERRALS #define LDAP_REFERRALS #endif #if defined(HAVE_SASL_H) || defined(HAVE_SASL_SASL_H) || defined(HAVE_SASL_DARWIN) static LDAP_REBIND_FUNCTION ldap_sasl_rebind; static int ldap_sasl_rebind( LDAP *ld, char **whop, char **credp, int *methodp, int freeit, void *params) { struct ldap_creds *cp = (struct ldap_creds *)params; whop = whop; credp = credp; methodp = methodp; freeit = freeit; return tool_sasl_bind(ld,cp->dn,cp->pw); } #endif static LDAP_REBIND_FUNCTION ldap_simple_rebind; static int ldap_simple_rebind( LDAP *ld, char **whop, char **credp, int *methodp, int freeit, void *params) { struct ldap_creds *cp = (struct ldap_creds *)params; whop = whop; credp = credp; methodp = methodp; freeit = freeit; return ldap_bind_s( ld, cp->dn , cp->pw , LDAP_AUTH_SIMPLE ); } #else # error "No rebind functione defined" #endif #else /* HAVE_SUN_LDAP_SDK */ #if defined(HAVE_SASL_H) || defined(HAVE_SASL_SASL_H) || defined(HAVE_SASL_DARWIN) static LDAP_REBIND_PROC ldap_sasl_rebind; static int ldap_sasl_rebind( LDAP *ld, LDAP_CONST char *url, ber_tag_t request, ber_int_t msgid, void *params ) { struct ldap_creds *cp = (struct ldap_creds *)params; url = url; request = request; msgid = msgid; return tool_sasl_bind(ld,cp->dn,cp->pw); } #endif static LDAP_REBIND_PROC ldap_simple_rebind; static int ldap_simple_rebind( LDAP *ld, LDAP_CONST char *url, ber_tag_t request, ber_int_t msgid, void *params ) { struct ldap_creds *cp = (struct ldap_creds *)params; url = url; request = request; msgid = msgid; return ldap_bind_s( ld, cp->dn , cp->pw , LDAP_AUTH_SIMPLE ); } #endif char *convert_domain_to_bind_path(char *domain) { char *dp,*bindp=NULL,*bp=NULL; int i=0; if (!domain) return NULL; for (dp=domain; *dp; dp++) { if ( *dp == '.' ) i++; } /* * add dc= and * replace . with ,dc= => new length = old length + #dots * 3 + 3 */ bindp=malloc(strlen(domain)+3+i*3+1); bp=bindp; strcpy(bp,"dc="); bp +=3; for (dp=domain; *dp; dp++) { if ( *dp == '.' ) { strcpy(bp,",dc="); bp+=4; } else *bp++ = *dp; } *bp=''; return bindp; } char *escape_filter(char *filter) { int i; char *ldap_filter_esc,*ldf; i=0; for (ldap_filter_esc=filter; *ldap_filter_esc; ldap_filter_esc++) { if ( (*ldap_filter_esc== '*') || (*ldap_filter_esc== '(') || (*ldap_filter_esc== ')') || (*ldap_filter_esc== '\\') ) i=i+3; } ldap_filter_esc=calloc(strlen(filter)+i+1,sizeof(char)); ldf = ldap_filter_esc; for (; *filter; filter++) { if ( *filter == '*') { strcpy(ldf,"\\2a"); ldf = ldf + 3; } else if (*filter == '(') { strcpy(ldf,"\\28"); ldf = ldf + 3; } else if (*filter == ')') { strcpy(ldf,"\\29"); ldf = ldf + 3; } else if (*filter == '\\') { strcpy(ldf,"\\5c"); ldf = ldf + 3; } else { *ldf=*filter; ldf++; } } *ldf=''; return ldap_filter_esc; }; int check_AD(struct main_args *margs, LDAP *ld) { LDAPMessage *res; char **attr_value=NULL; struct timeval searchtime; int max_attr=0; int j,rc=0; #define FILTER_SCHEMA "(objectclass=*)" #define ATTRIBUTE_SCHEMA "schemaNamingContext" #define FILTER_SAM "(ldapdisplayname=samaccountname)" searchtime.tv_sec = SEARCH_TIMEOUT; searchtime.tv_usec = 0; if (margs->debug) fprintf(stderr, "%s| %s: Search ldap server with bind path \"\" and filter: %s\n",LogTime(), PROGRAM,FILTER_SCHEMA); rc = ldap_search_ext_s(ld, (char *)"", LDAP_SCOPE_BASE, (char *)FILTER_SCHEMA, NULL, 0, NULL, NULL, &searchtime, 0, &res); if ( rc == LDAP_SUCCESS ) max_attr = get_attributes(margs,ld,res,ATTRIBUTE_SCHEMA,&attr_value); if (max_attr==1) { ldap_msgfree(res); if (margs->debug) fprintf(stderr, "%s| %s: Search ldap server with bind path %s and filter: %s\n",LogTime(), PROGRAM,attr_value[0],FILTER_SAM); rc = ldap_search_ext_s(ld, attr_value[0], LDAP_SCOPE_SUBTREE, (char *)FILTER_SAM, NULL, 0, NULL, NULL, &searchtime, 0, &res); if (margs->debug) fprintf(stderr, "%s| %s: Found %d ldap entr%s\n",LogTime(), PROGRAM, ldap_count_entries( ld, res),ldap_count_entries( ld, res)>1||ldap_count_entries( ld, res)==0?"ies":"y"); if (ldap_count_entries( ld, res) > 0) margs->AD=1; } else { if (margs->debug) fprintf(stderr, "%s| %s: Did not find ldap entry for subschemasubentry\n",LogTime(), PROGRAM); } if (margs->debug) fprintf(stderr, "%s| %s: Determined ldap server %sas an Active Directory server\n",LogTime(), PROGRAM,margs->AD?"":"not "); /* * Cleanup */ if (attr_value){ for (j=0;j<max_attr;j++) { free(attr_value[j]); } free(attr_value); attr_value=NULL; } ldap_msgfree(res); return rc; } int search_group_tree(struct main_args *margs,LDAP *ld, char* bindp, char *ldap_group,char *group, int depth) { LDAPMessage *res=NULL; char **attr_value=NULL; int max_attr=0; char *filter=NULL; char *search_exp=NULL; int j,rc=0,retval=0; char *av=NULL,*avp=NULL; int ldepth; char *ldap_filter_esc=NULL; struct timeval searchtime; #define FILTER_GROUP_AD "(&(%s)(objectclass=group))" #define FILTER_GROUP "(&(memberuid=%s)(objectclass=posixgroup))" searchtime.tv_sec = SEARCH_TIMEOUT; searchtime.tv_usec = 0; if (margs->AD) filter=(char *)FILTER_GROUP_AD; else filter=(char *)FILTER_GROUP; ldap_filter_esc = escape_filter(ldap_group); search_exp=malloc(strlen(filter)+strlen(ldap_filter_esc)+1); snprintf(search_exp,strlen(filter)+strlen(ldap_filter_esc)+1, filter, ldap_filter_esc); if (ldap_filter_esc) free(ldap_filter_esc); if (depth > margs->mdepth) { if (margs->debug) fprintf(stderr, "%s| %s: Max search depth reached %d>%d\n",LogTime(), PROGRAM,depth,margs->mdepth); return 0; } if (margs->debug) fprintf(stderr, "%s| %s: Search ldap server with bind path %s and filter : %s\n",LogTime(), PROGRAM,bindp,search_exp); rc = ldap_search_ext_s(ld, bindp, LDAP_SCOPE_SUBTREE, search_exp, NULL, 0, NULL, NULL, &searchtime, 0, &res); if (search_exp) free(search_exp); if (rc != LDAP_SUCCESS) { fprintf(stderr, "%s| %s: Error searching ldap server: %s\n",LogTime(), PROGRAM,ldap_err2string(rc)); ldap_unbind_s(ld); return 0; } if (margs->debug) fprintf(stderr, "%s| %s: Found %d ldap entr%s\n",LogTime(), PROGRAM, ldap_count_entries( ld, res),ldap_count_entries( ld, res)>1||ldap_count_entries( ld, res)==0?"ies":"y"); if (margs->AD) max_attr = get_attributes(margs,ld,res,ATTRIBUTE_AD,&attr_value); else max_attr = get_attributes(margs,ld,res,ATTRIBUTE,&attr_value); /* * Compare group names */ retval=0; ldepth = depth+1; for (j=0;j<max_attr;j++) { /* Compare first CN= value assuming it is the same as the group name itself */ av=attr_value[j]; if (!strncasecmp("CN=",av,3)) { av+=3; if ((avp=strchr(av,','))) { *avp=''; } } if (margs->debug) { int n; fprintf(stderr, "%s| %s: Entry %d \"%s\" in hex UTF-8 is ",LogTime(), PROGRAM, j+1, av); for (n=0; av[n] != ''; n++) fprintf(stderr, "%02x",(unsigned char)av[n]); fprintf(stderr, "\n"); } if (!strcasecmp(group,av)) { retval=1; if (margs->debug) fprintf(stderr, "%s| %s: Entry %d \"%s\" matches group name \"%s\"\n",LogTime(), PROGRAM, j+1, av, group); break; } else { if (margs->debug) fprintf(stderr, "%s| %s: Entry %d \"%s\" does not match group name \"%s\"\n",LogTime(), PROGRAM, j+1, av, group); } /* * Do recursive group search */ if (margs->debug) fprintf(stderr, "%s| %s: Perform recursive group search for group \"%s\"\n",LogTime(), PROGRAM,av); av=attr_value[j]; if (search_group_tree(margs,ld,bindp,av,group,ldepth)) { retval=1; if (!strncasecmp("CN=",av,3)) { av+=3; if ((avp=strchr(av,','))) { *avp=''; } } if (margs->debug) fprintf(stderr, "%s| %s: Entry %d \"%s\" is member of group named \"%s\"\n",LogTime(), PROGRAM, j+1, av, group); else break; } } /* * Cleanup */ if (attr_value){ for (j=0;j<max_attr;j++) { free(attr_value[j]); } free(attr_value); attr_value=NULL; } ldap_msgfree(res); return retval; } int ldap_set_defaults(struct main_args *margs, LDAP *ld) { int val,rc=0; #ifdef LDAP_OPT_NETWORK_TIMEOUT struct timeval tv; #endif val = LDAP_VERSION3; rc = ldap_set_option(ld, LDAP_OPT_PROTOCOL_VERSION, &val); if ( rc != LDAP_SUCCESS ) { if(margs->debug) fprintf(stderr, "%s| %s: Error while setting protocol version: %s\n",LogTime(), PROGRAM,ldap_err2string(rc)); return rc; } rc = ldap_set_option(ld, LDAP_OPT_REFERRALS , LDAP_OPT_OFF); if ( rc != LDAP_SUCCESS ) { if(margs->debug) fprintf(stderr, "%s| %s: Error while setting referrals off: %s\n",LogTime(), PROGRAM,ldap_err2string(rc)); return rc; } #ifdef LDAP_OPT_NETWORK_TIMEOUT tv.tv_sec = CONNECT_TIMEOUT; tv.tv_usec = 0; rc = ldap_set_option (ld, LDAP_OPT_NETWORK_TIMEOUT, &tv); if ( rc != LDAP_SUCCESS ) { if(margs->debug) fprintf(stderr, "%s| %s: Error while setting network timeout: %s\n",LogTime(), PROGRAM,ldap_err2string(rc)); return rc; } #endif /* LDAP_OPT_NETWORK_TIMEOUT */ return LDAP_SUCCESS; } int ldap_set_ssl_defaults(struct main_args *margs) { #if defined(HAVE_OPENLDAP) || defined(HAVE_LDAPSSL_CLIENT_INIT) int rc=0; #endif #ifdef HAVE_OPENLDAP int val; char *ssl_cacertfile=NULL; int free_path; #elif defined(HAVE_LDAPSSL_CLIENT_INIT) char *ssl_certdbpath=NULL; #endif #ifdef HAVE_OPENLDAP if (!margs->rc_allow) { ssl_cacertfile=getenv("TLS_CACERTFILE"); free_path=0; if (!ssl_cacertfile) { ssl_cacertfile=strdup("/etc/ssl/certs/cert.pem"); free_path=1; } if (margs->debug) fprintf(stderr, "%s| %s: Set certificate file for ldap server to %s.(Changeable through setting environment variable TLS_CACERTFILE)\n",LogTime(), PROGRAM,ssl_cacertfile); rc = ldap_set_option(NULL, LDAP_OPT_X_TLS_CACERTFILE, ssl_cacertfile); if (ssl_cacertfile && free_path) { free(ssl_cacertfile); ssl_cacertfile=NULL; } if ( rc != LDAP_OPT_SUCCESS ) { fprintf(stderr, "%s| %s: Error while setting LDAP_OPT_X_TLS_CACERTFILE for ldap server: %s\n",LogTime(), PROGRAM,ldap_err2string(rc)); return rc; } } else { if (margs->debug) fprintf(stderr, "%s| %s: Disable server certificate check for ldap server.\n",LogTime(), PROGRAM); val = LDAP_OPT_X_TLS_ALLOW; rc = ldap_set_option (NULL, LDAP_OPT_X_TLS_REQUIRE_CERT, &val); if ( rc != LDAP_SUCCESS ) { fprintf(stderr, "%s| %s: Error while setting LDAP_OPT_X_TLS_REQUIRE_CERT ALLOW for ldap server: %s\n",LogTime(), PROGRAM,ldap_err2string(rc)); return rc; } } #elif defined(HAVE_LDAPSSL_CLIENT_INIT) /* * Solaris SSL ldap calls require path to certificate database */ /* rc = ldapssl_client_init( ssl_certdbpath, NULL ); rc = ldapssl_advclientauth_init( ssl_certdbpath, NULL , 0 , NULL, NULL, 0, NULL, 2); */ ssl_certdbpath=getenv("SSL_CERTDBPATH"); if (!ssl_certdbpath) { ssl_certdbpath=strdup("/etc/certs"); } if (margs->debug) fprintf(stderr, "%s| %s: Set certificate database path for ldap server to %s.(Changeable through setting environment variable SSL_CERTDBPATH)\n",LogTime(), PROGRAM,ssl_certdbpath); if (!margs->rc_allow) { rc = ldapssl_advclientauth_init( ssl_certdbpath, NULL , 0 , NULL, NULL, 0, NULL, 2); } else { rc = ldapssl_advclientauth_init( ssl_certdbpath, NULL , 0 , NULL, NULL, 0, NULL, 0); if (margs->debug) fprintf(stderr, "%s| %s: Disable server certificate check for ldap server.\n",LogTime(), PROGRAM); } if (ssl_certdbpath) { free(ssl_certdbpath); ssl_certdbpath=NULL; } if ( rc != LDAP_SUCCESS ) { fprintf(stderr, "%s| %s: Error while setting SSL for ldap server: %s\n",LogTime(), PROGRAM,ldapssl_err2string(rc)); return rc; } #else fprintf(stderr, "%s| %s: SSL not supported by ldap library\n",LogTime(), PROGRAM); #endif return LDAP_SUCCESS; } int get_attributes(struct main_args *margs,LDAP *ld,LDAPMessage *res, const char *attribute, char ***ret_value) { /* Part of this work is from OpenLDAP Software. * * Copyright 1998-2009 The OpenLDAP Foundation. * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted only as authorized by the OpenLDAP * Public License. * * A copy of this license is available in the file LICENSE in the * top-level directory of the distribution or, alternatively, at * */ LDAPMessage *msg; char **attr_value=NULL; int max_attr=0; attr_value=*ret_value; /* * loop over attributes */ if (margs->debug) fprintf(stderr, "%s| %s: Search ldap entries for attribute : %s\n",LogTime(), PROGRAM,attribute); for (msg = ldap_first_entry (ld, res); msg; msg = ldap_next_entry (ld, msg)) { BerElement *b; char *attr; switch (ldap_msgtype( msg )) { case LDAP_RES_SEARCH_ENTRY: for (attr = ldap_first_attribute (ld, msg, &b); attr; attr = ldap_next_attribute (ld, msg, B)) { if (strcasecmp (attr, attribute) == 0) { struct berval **values; int il; if ( (values = ldap_get_values_len (ld, msg, attr)) != NULL ) { for (il = 0; values[il] != NULL; il++) { attr_value= realloc (attr_value,(il+1)*sizeof(char *)); if ( !attr_value) break; attr_value[il] = malloc (values[il]->bv_len + 1); memcpy(attr_value[il],values[il]->bv_val,values[il]->bv_len); attr_value[il][values[il]->bv_len]=0; } max_attr=il; } ber_bvecfree(values); } ldap_memfree (attr); } ber_free (b, 0); break; case LDAP_RES_SEARCH_REFERENCE: if (margs->debug) fprintf(stderr, "%s| %s: Received a search reference message\n",LogTime(), PROGRAM); break; case LDAP_RES_SEARCH_RESULT: if (margs->debug) fprintf(stderr, "%s| %s: Received a search result message\n",LogTime(), PROGRAM); break; default: break; } } if (margs->debug) fprintf(stderr, "%s| %s: %d ldap entr%s found with attribute : %s\n",LogTime(), PROGRAM,max_attr,max_attr>1||max_attr==0?"ies":"y",attribute); *ret_value=attr_value; return max_attr; } /* * call to open ldap server with or without SSL */ LDAP *tool_ldap_open(struct main_args *margs, char* host, int port, char *ssl) { LDAP *ld; #ifdef HAVE_OPENLDAP LDAPURLDesc *url=NULL; char *ldapuri=NULL; #endif int rc=0; /* * Use ldap open here to check if TCP connection is possible. If possible use it. * (Not sure if this is the best way) */ #ifdef HAVE_OPENLDAP url = malloc(sizeof(*url)); memset( url, 0, sizeof(*url)); #ifdef HAVE_LDAP_URL_LUD_SCHEME if (ssl) url->lud_scheme = (char *)"ldaps"; else url->lud_scheme = (char *)"ldap"; #endif url->lud_host = host; url->lud_port = port; #ifdef HAVE_LDAP_SCOPE_DEFAULT url->lud_scope = LDAP_SCOPE_DEFAULT; #else url->lud_scope = LDAP_SCOPE_SUBTREE; #endif #ifdef HAVE_LDAP_URL_DESC2STR ldapuri = ldap_url_desc2str( url ); #elif defined(HAVE_LDAP_URL_PARSE) rc = ldap_url_parse(ldapuri, &url); if (rc != LDAP_SUCCESS) { fprintf(stderr, "%s| %s: Error while parsing url: %s\n",LogTime(), PROGRAM,ldap_err2string(rc)); if (ldapuri) free(ldapuri); if (url) free(url); return NULL; } #else #error "No URL parsing function" #endif if (url) { free(url); url=NULL; } rc = ldap_initialize(&ld, ldapuri); if (ldapuri) free(ldapuri); if (rc != LDAP_SUCCESS) { fprintf(stderr, "%s| %s: Error while initialising connection to ldap server: %s\n",LogTime(), PROGRAM,ldap_err2string(rc)); ldap_unbind(ld); ld = NULL; return NULL; } #else ld = ldap_init(host,port); #endif rc = ldap_set_defaults(margs,ld); if (rc != LDAP_SUCCESS) { fprintf(stderr, "%s| %s: Error while setting default options for ldap server: %s\n",LogTime(), PROGRAM,ldap_err2string(rc)); ldap_unbind(ld); ld = NULL; return NULL; } if (ssl) { /* * Try Start TLS first */ if (margs->debug) fprintf(stderr, "%s| %s: Set SSL defaults\n",LogTime(), PROGRAM); rc = ldap_set_ssl_defaults(margs); if (rc != LDAP_SUCCESS) { fprintf(stderr, "%s| %s: Error while setting SSL default options for ldap server: %s\n",LogTime(), PROGRAM,ldap_err2string(rc)); ldap_unbind(ld); ld = NULL; return NULL; } #ifdef HAVE_OPENLDAP /* * Use tls if possible */ rc = ldap_start_tls_s(ld, NULL, NULL); if ( rc != LDAP_SUCCESS ) { fprintf(stderr, "%s| %s: Error while setting start_tls for ldap server: %s\n",LogTime(), PROGRAM,ldap_err2string(rc)); ldap_unbind(ld); ld=NULL; url = malloc(sizeof(*url)); memset( url, 0, sizeof(*url)); #ifdef HAVE_LDAP_URL_LUD_SCHEME url->lud_scheme = (char *)"ldaps"; #endif url->lud_host = host; url->lud_port = port; #ifdef HAVE_LDAP_SCOPE_DEFAULT url->lud_scope = LDAP_SCOPE_DEFAULT; #else url->lud_scope = LDAP_SCOPE_SUBTREE; #endif #ifdef HAVE_LDAP_URL_DESC2STR ldapuri = ldap_url_desc2str( url ); #elif defined(HAVE_LDAP_URL_PARSE) rc = ldap_url_parse(ldapuri, &url); if (rc != LDAP_SUCCESS) { fprintf(stderr, "%s| %s: Error while parsing url: %s\n",LogTime(), PROGRAM,ldap_err2string(rc)); if (ldapuri) free(ldapuri); if (url) free(url); return NULL; } #else #error "No URL parsing function" #endif if (url) { free(url); url=NULL; } rc = ldap_initialize(&ld, ldapuri); if (ldapuri) free(ldapuri); if (rc != LDAP_SUCCESS) { fprintf(stderr, "%s| %s: Error while initialising connection to ldap server: %s\n",LogTime(), PROGRAM,ldap_err2string(rc)); ldap_unbind(ld); ld = NULL; return NULL; } rc = ldap_set_defaults(margs,ld); if (rc != LDAP_SUCCESS) { fprintf(stderr, "%s| %s: Error while setting default options for ldap server: %s\n",LogTime(), PROGRAM,ldap_err2string(rc)); ldap_unbind(ld); ld = NULL; return NULL; } } #elif defined(HAVE_LDAPSSL_CLIENT_INIT) ld = ldapssl_init(host,port,1); if (!ld) { fprintf(stderr, "%s| %s: Error while setting SSL for ldap server: %s\n",LogTime(), PROGRAM,ldapssl_err2string(rc)); ldap_unbind(ld); ld=NULL; return NULL; } rc = ldap_set_defaults(margs,ld); if (rc != LDAP_SUCCESS) { fprintf(stderr, "%s| %s: Error while setting default options for ldap server: %s\n",LogTime(), PROGRAM,ldap_err2string(rc)); ldap_unbind(ld); ld = NULL; return NULL; } #else fprintf(stderr, "%s| %s: SSL not supported by ldap library\n",LogTime(), PROGRAM); #endif } return ld; } /* * ldap calls to get attribute from Ldap Directory Server */ int get_memberof(struct main_args *margs,char* user,char* domain,char *group) { LDAP *ld=NULL; LDAPMessage *res; #ifndef HAVE_SUN_LDAP_SDK int ldap_debug=0; #endif struct ldap_creds *lcreds=NULL; char *bindp=NULL; char *filter=NULL; char *search_exp; struct timeval searchtime; int i,j,rc=0,kc=1; int retval; char **attr_value=NULL; char *av=NULL,*avp=NULL; int max_attr=0; struct hstruct *hlist=NULL; int nhosts=0; char *hostname; char *host; int port; char *ssl=NULL; char* p; char* ldap_filter_esc=NULL; searchtime.tv_sec = SEARCH_TIMEOUT; searchtime.tv_usec = 0; /* * Fill Kerberos memory cache with credential from keytab for SASL/GSSAPI */ if (domain) { if (margs->debug) fprintf(stderr, "%s| %s: Setup Kerberos credential cache\n",LogTime(), PROGRAM); #ifdef HAVE_KRB5_H kc = krb5_create_cache(margs,domain); if (kc) { fprintf(stderr, "%s| %s: Error during setup of Kerberos credential cache\n",LogTime(), PROGRAM); } #endif } if (kc && (!margs->lurl || !margs->luser | !margs->lpass )) { /* * If Kerberos fails and no url given exit here */ retval=0; goto cleanup; } #ifndef HAVE_SUN_LDAP_SDK /* * Initialise ldap */ ldap_debug = 127 /* LDAP_DEBUG_TRACE */; ldap_debug = -1 /* LDAP_DEBUG_ANY */; ldap_debug = 0; (void) ldap_set_option(NULL, LDAP_OPT_DEBUG_LEVEL, &ldap_debug); #endif if (margs->debug) fprintf(stderr, "%s| %s: Initialise ldap connection\n",LogTime(), PROGRAM); if (domain && !kc) { if (margs->ssl) { if (margs->debug) fprintf(stderr, "%s| %s: Enable SSL to ldap servers\n",LogTime(), PROGRAM); } if (margs->debug) fprintf(stderr, "%s| %s: Canonicalise ldap server name for domain %s\n",LogTime(), PROGRAM,domain); /* * Loop over list of ldap servers of users domain */ nhosts=get_ldap_hostname_list(margs,&hlist,0,domain); for (i=0;i<nhosts;i++) { port=389; if (hlist[i].port != -1) port=hlist[i].port; if (margs->debug) fprintf(stderr, "%s| %s: Setting up connection to ldap server %s:%d\n",LogTime(), PROGRAM, hlist[i].host,port); ld = tool_ldap_open(margs,hlist[i].host,port,margs->ssl); if (!ld) continue; /* * ldap bind with SASL/GSSAPI authentication (only possible if a domain was part of the username) */ #if defined(HAVE_SASL_H) || defined(HAVE_SASL_SASL_H) || defined(HAVE_SASL_DARWIN) if (margs->debug) fprintf(stderr, "%s| %s: Bind to ldap server with SASL/GSSAPI\n",LogTime(), PROGRAM); rc = tool_sasl_bind(ld, bindp, margs->ssl); if (rc != LDAP_SUCCESS) { fprintf(stderr, "%s| %s: Error while binding to ldap server with SASL/GSSAPI: %s\n",LogTime(), PROGRAM,ldap_err2string(rc)); ldap_unbind(ld); ld=NULL; continue; } lcreds=malloc(sizeof(struct ldap_creds)); lcreds->dn = bindp?strdup(bindp):NULL; lcreds->pw = margs->ssl?strdup(margs->ssl):NULL; ldap_set_rebind_proc(ld, ldap_sasl_rebind,(char *)lcreds); if ( ld != NULL ) { if (margs->debug) fprintf(stderr, "%s| %s: %s initialised %sconnection to ldap server %s:%d\n",LogTime(), PROGRAM, ld?"Successfully":"Failed to",margs->ssl?"SSL protected ":"",hlist[i].host,port); break; } #else ldap_unbind(ld); ld=NULL; fprintf(stderr, "%s| %s: SASL not supported on system\n",LogTime(), PROGRAM); continue; #endif } free_hostname_list(&hlist,nhosts); if ( ld == NULL ) { if (margs->debug) fprintf(stderr, "%s| %s: Error during initialisation of ldap connection: %s\n",LogTime(), PROGRAM,strerror(errno)); } bindp=convert_domain_to_bind_path(domain); } if ((!domain || !ld) && margs->lurl && strstr(margs->lurl,"://") ) { /* * If username does not contain a domain and a url was given then try it */ hostname=strstr(margs->lurl,"://")+3; ssl=strstr(margs->lurl,"ldaps://"); if (ssl) { if (margs->debug) fprintf(stderr, "%s| %s: Enable SSL to ldap servers\n",LogTime(), PROGRAM); } if (margs->debug) fprintf(stderr, "%s| %s: Canonicalise ldap server name %s\n",LogTime(), PROGRAM,hostname); /* * Loop over list of ldap servers */ host=strdup(hostname); port=389; if ((p=strchr(host,':'))) { *p=''; p++; port=atoi(p); } nhosts=get_hostname_list(margs,&hlist,0,host); if (host) free(host); host=NULL; for (i=0;i<nhosts;i++) { ld = tool_ldap_open(margs,hlist[i].host,port,ssl); if (!ld) continue; /* * ldap bind with username/password authentication */ if (margs->debug) fprintf(stderr, "%s| %s: Bind to ldap server with Username/Password\n",LogTime(), PROGRAM); rc = ldap_simple_bind_s(ld, margs->luser, margs->lpass); if (rc != LDAP_SUCCESS) { fprintf(stderr, "%s| %s: Error while binding to ldap server with Username/Password: %s\n",LogTime(), PROGRAM,ldap_err2string(rc)); ldap_unbind(ld); ld=NULL; continue; } lcreds=malloc(sizeof(struct ldap_creds)); lcreds->dn = strdup(margs->luser); lcreds->pw = strdup(margs->lpass); ldap_set_rebind_proc(ld, ldap_simple_rebind,(char *)lcreds); if (margs->debug) fprintf(stderr, "%s| %s: %s set up %sconnection to ldap server %s:%d\n",LogTime(), PROGRAM, ld?"Successfully":"Failed to",ssl?"SSL protected ":"",hlist[i].host,port); break; } free_hostname_list(&hlist,nhosts); if (bindp) free(bindp); if (margs->lbind) { bindp=strdup(margs->lbind); } else { bindp=convert_domain_to_bind_path(domain); } } if ( ld == NULL ) { if (margs->debug) fprintf(stderr, "%s| %s: Error during initialisation of ldap connection: %s\n",LogTime(), PROGRAM,strerror(errno)); retval=0; goto cleanup; } /* * ldap search for user */ /* * Check if server is AD by querying for attribute samaccountname */ margs->AD=0; rc = check_AD(margs,ld); if (rc != LDAP_SUCCESS) { fprintf(stderr, "%s| %s: Error determining ldap server type: %s\n",LogTime(), PROGRAM,ldap_err2string(rc)); ldap_unbind(ld); ld=NULL; retval=0; goto cleanup; } if (margs->AD) filter=(char *)FILTER_AD; else filter=(char *)FILTER; ldap_filter_esc = escape_filter(user); search_exp=malloc(strlen(filter)+strlen(ldap_filter_esc)+1); snprintf(search_exp,strlen(filter)+strlen(ldap_filter_esc)+1, filter, ldap_filter_esc); if (ldap_filter_esc) free (ldap_filter_esc); if (margs->debug) fprintf(stderr, "%s| %s: Search ldap server with bind path %s and filter : %s\n",LogTime(), PROGRAM,bindp,search_exp); rc = ldap_search_ext_s(ld, bindp, LDAP_SCOPE_SUBTREE, search_exp, NULL, 0, NULL, NULL, &searchtime, 0, &res); if (search_exp) free(search_exp); if (rc != LDAP_SUCCESS) { fprintf(stderr, "%s| %s: Error searching ldap server: %s\n",LogTime(), PROGRAM,ldap_err2string(rc)); ldap_unbind(ld); ld=NULL; retval=0; goto cleanup; } if (margs->debug) fprintf(stderr, "%s| %s: Found %d ldap entr%s\n",LogTime(), PROGRAM, ldap_count_entries( ld, res),ldap_count_entries( ld, res)>1||ldap_count_entries( ld, res)==0?"ies":"y"); if (ldap_count_entries( ld, res)!=0 ) { if (margs->AD) max_attr = get_attributes(margs,ld,res,ATTRIBUTE_AD,&attr_value); else { max_attr = get_attributes(margs,ld,res,ATTRIBUTE,&attr_value); } /* * Compare group names */ retval=0; for (j=0;j<max_attr;j++) { /* Compare first CN= value assuming it is the same as the group name itself */ av=attr_value[j]; if (!strncasecmp("CN=",av,3)) { av+=3; if ((avp=strchr(av,','))) { *avp=''; } } if (margs->debug) { int n; fprintf(stderr, "%s| %s: Entry %d \"%s\" in hex UTF-8 is ",LogTime(), PROGRAM, j+1, av); for (n=0; av[n] != ''; n++) fprintf(stderr, "%02x",(unsigned char)av[n]); fprintf(stderr, "\n"); } if (!strcasecmp(group,av)) { retval=1; if (margs->debug) fprintf(stderr, "%s| %s: Entry %d \"%s\" matches group name \"%s\"\n",LogTime(), PROGRAM, j+1, av, group); else break; } else { if (margs->debug) fprintf(stderr, "%s| %s: Entry %d \"%s\" does not match group name \"%s\"\n",LogTime(), PROGRAM, j+1, av, group); } } /* * Do recursive group search for AD only since posixgroups can not contain other groups */ if (!retval && margs->AD) { if (margs->debug && max_attr > 0) fprintf(stderr, "%s| %s: Perform recursive group search\n",LogTime(), PROGRAM); for (j=0;j<max_attr;j++) { av=attr_value[j]; if (search_group_tree(margs,ld,bindp,av,group,1)) { retval=1; if (!strncasecmp("CN=",av,3)) { av+=3; if ((avp=strchr(av,','))) { *avp=''; } } if (margs->debug) fprintf(stderr, "%s| %s: Entry %d group \"%s\" is (in)direct member of group \"%s\"\n",LogTime(), PROGRAM, j+1, av, group); else break; } } } /* * Cleanup */ if (attr_value){ for (j=0;j<max_attr;j++) { free(attr_value[j]); } free(attr_value); attr_value=NULL; } ldap_msgfree(res); } else if (ldap_count_entries( ld, res)==0 && margs->AD) { ldap_msgfree(res); ldap_unbind(ld); ld=NULL; retval=0; goto cleanup; } else { ldap_msgfree(res); retval=0; } if (!margs->AD && retval == 0) { /* * Check for primary Group membership */ if (margs->debug) fprintf(stderr, "%s| %s: Search for primary group membership: \"%s\"\n",LogTime(), PROGRAM,group); filter=(char *)FILTER_UID; ldap_filter_esc = escape_filter(user); search_exp=malloc(strlen(filter)+strlen(ldap_filter_esc)+1); snprintf(search_exp,strlen(filter)+strlen(ldap_filter_esc)+1, filter, ldap_filter_esc); if (ldap_filter_esc) free(ldap_filter_esc); if (margs->debug) fprintf(stderr, "%s| %s: Search ldap server with bind path %s and filter: %s\n",LogTime(), PROGRAM,bindp,search_exp); rc = ldap_search_ext_s(ld, bindp, LDAP_SCOPE_SUBTREE, search_exp, NULL, 0, NULL, NULL, &searchtime, 0, &res); if (search_exp) free(search_exp); if ( rc != LDAP_SUCCESS ) { fprintf(stderr, "%s| %s: Search returned with error %s\n",LogTime(), PROGRAM, ldap_err2string(rc)); goto cleanup; } if (margs->debug) fprintf(stderr, "%s| %s: Found %d ldap entr%s\n",LogTime(), PROGRAM, ldap_count_entries( ld, res),ldap_count_entries( ld, res)>1||ldap_count_entries( ld, res)==0?"ies":"y"); max_attr = get_attributes(margs,ld,res,ATTRIBUTE_GID,&attr_value); if (max_attr==1) { char **attr_value_2=NULL; int max_attr_2=0; ldap_msgfree(res); filter=(char *)FILTER_GID; ldap_filter_esc = escape_filter(attr_value[0]); search_exp=malloc(strlen(filter)+strlen(ldap_filter_esc)+1); snprintf(search_exp,strlen(filter)+strlen(ldap_filter_esc)+1, filter, ldap_filter_esc); if (ldap_filter_esc) free(ldap_filter_esc); if (margs->debug) fprintf(stderr, "%s| %s: Search ldap server with bind path %s and filter: %s\n",LogTime(), PROGRAM,bindp,search_exp); rc = ldap_search_ext_s(ld, bindp, LDAP_SCOPE_SUBTREE, search_exp, NULL, 0, NULL, NULL, &searchtime, 0, &res); if (search_exp) free(search_exp); if ( rc != LDAP_SUCCESS ) { fprintf(stderr, "%s| %s: Search returned with error %s\n",LogTime(), PROGRAM, ldap_err2string(rc)); goto cleanup; } max_attr_2 = get_attributes(margs,ld,res,ATTRIBUTE,&attr_value_2); /* * Compare group names */ retval=0; if(max_attr_2==1) { /* Compare first CN= value assuming it is the same as the group name itself */ av=attr_value_2[0]; if (!strcasecmp(group,av)) { retval=1; if (margs->debug) fprintf(stderr, "%s| %s: \"%s\" matches group name \"%s\"\n",LogTime(), PROGRAM, av, group); } else { if (margs->debug) fprintf(stderr, "%s| %s: \"%s\" does not match group name \"%s\"\n",LogTime(), PROGRAM, av, group); } } /* * Cleanup */ if (attr_value_2){ for (j=0;j<max_attr_2;j++) { free(attr_value_2[j]); } free(attr_value_2); attr_value_2=NULL; } ldap_msgfree(res); if (margs->debug) fprintf(stderr, "%s| %s: Users primary group %s %s\n",LogTime(), PROGRAM, retval?"matches":"does not match", group); } else { if (margs->debug) fprintf(stderr, "%s| %s: Did not find ldap entry for group %s\n",LogTime(), PROGRAM, group); } /* * Cleanup */ if (attr_value){ for (j=0;j<max_attr;j++) { free(attr_value[j]); } free(attr_value); attr_value=NULL; } } rc = ldap_unbind(ld); ld=NULL; if (rc != LDAP_SUCCESS) { fprintf(stderr, "%s| %s: Error unbind ldap server: %s\n",LogTime(), PROGRAM,ldap_err2string(rc)); } if (margs->debug) fprintf(stderr, "%s| %s: Unbind ldap server\n",LogTime(), PROGRAM); cleanup: #ifdef HAVE_KRB5_H if (domain) krb5_cleanup(); #endif if (lcreds) { if (lcreds->dn) free(lcreds->dn); if (lcreds->pw) free(lcreds->pw); free(lcreds); } if (bindp) free(bindp); bindp=NULL; return(retval); } Que ao compilar ocorre o seguinte erro: rootmsolbhzvpx01:~/squid_kerb_ldap-1.2.1a# gcc -c support_ldap.c support_ldap.c:33:39: erro: unknown type name âLDAPâ support_ldap.c:34:48: erro: unknown type name âLDAPâ support_ldap.c:36:1: erro: unknown type name âLDAPâ support_ldap.c:50:45: erro: unknown type name âLDAPâ support_ldap.c:50:55: erro: unknown type name âLDAPMessageâ support_ldap.c:51:47: erro: unknown type name âLDAPâ support_ldap.c:170:3: erro: #error "No rebind functione defined" support_ldap.c:277:39: erro: unknown type name âLDAPâ support_ldap.c:328:47: erro: unknown type name âLDAPâ support_ldap.c:454:48: erro: unknown type name âLDAPâ support_ldap.c: Na função âldap_set_ssl_defaultsâ: support_ldap.c:558:10: erro: âLDAP_SUCCESSâ undeclared (first use in this functi on) support_ldap.c:558:10: nota: each undeclared identifier is reported only once fo r each function it appears in support_ldap.c: No nivel superior: support_ldap.c:561:44: erro: unknown type name âLDAPâ support_ldap.c:561:53: erro: unknown type name âLDAPMessageâ support_ldap.c:648:1: erro: unknown type name âLDAPâ support_ldap.c: Na função âtool_ldap_openâ: support_ldap.c:649:5: erro: unknown type name âLDAPâ support_ldap.c:705:10: aviso: assignment makes pointer from integer without a ca st [habilitado por padrão] support_ldap.c:708:17: erro: âLDAP_SUCCESSâ undeclared (first use in this functi on) support_ldap.c:709:9: aviso: formato â%sâ expects argument of type âchar *â, but argument 5 has type âintâ [-Wformat] support_ldap.c:723:11: aviso: formato â%sâ expects argument of type âchar *â, bu t argument 5 has type âintâ [-Wformat] support_ldap.c: Na função âget_memberofâ: support_ldap.c:811:3: erro: unknown type name âLDAPâ support_ldap.c:812:3: erro: unknown type name âLDAPMessageâ support_ldap.c:972:17: erro: âLDAP_SUCCESSâ undeclared (first use in this functi on) support_ldap.c:973:2: aviso: formato â%sâ expects argument of type âchar *â, but argument 5 has type âintâ [-Wformat] support_ldap.c:981:32: erro: âldap_simple_rebindâ undeclared (first use in this function) support_ldap.c:1013:5: aviso: formato â%sâ expects argument of type âchar *â, bu t argument 5 has type âintâ [-Wformat] support_ldap.c:1035:37: erro: âLDAP_SCOPE_SUBTREEâ undeclared (first use in this function) support_ldap.c:1042:5: aviso: formato â%sâ expects argument of type âchar *â, bu t argument 5 has type âintâ [-Wformat] support_ldap.c:1245:5: aviso: formato â%sâ expects argument of type âchar *â, bu t argument 5 has type âintâ [-Wformat] Como posso resolver?
  7. Amigos, Preciso de um script que realize a cópia de uma pasta local para o c: de vários servidores da rede. como posso realizar este comando? Obrigado
×
×
  • Criar Novo...