terça-feira, 11 de dezembro de 2012

Instalando e configurando o OpenLDAP

Tutorial aplicado em servidor CentOS 6.3 x64, para outras distribuições as configurações de apache e instalação de pacotes sofrerão mudanças.
1) Conceitos:

slapd: este é daemon isolado do LDAP. Ele escuta por conexões LDAP na porta 389 (636 para SSL)

2) Instalação
# yum install -y openldap-servers openldap-clients pam_ldap nss-pam-ldapd

3) Criar uma senha para o LDAP
# slappasswd
Anote essa senha em algum arquivo de texto. A senha é algo como {SSHA}LwxaxndI3HZUj29FYy2LFt/e3AlnUWzz.
Você precisará dela posteriormente.

4) Crie o arquivo ”/etc/openldap/slapd.conf”
# cd /etc/openldap
# vi slapd.conf

5) No arquivo slapd.conf, copiar e colar o seguinte texto. Atente-se aos campos em vermelho, fazendo as devidas alterações. Lembrando de alterar a senha no campo “rootpw” para a senha gerada anteriormente
database bdb
suffix "dc=empresa,dc=edu,dc=br"
rootdn "cn=Manager,dc=empresa,dc=edu,dc=br"
# Senhas em texto plano, especialmente para o rootdn, devem
# ser evitados. Veja slappasswd (8) e slapd.conf (5) para mais detalhes.
# Uso de autenticação forte incentivado.
rootpw digite_a_senha_gerada_aqui
directory /var/lib/ldap

6) Testar as configurações
# slaptest -u

7) Editar o arquivo “/etc/openldap/slapd.d/cn=config/olcDatabase={2}bdb.ldif“
# vi /etc/openldap/slapd.d/cn\=config/olcDatabase\=\{2\}bdb.ldif
Altere
olcSuffix: dc=my-domain,dc=com
para:
olcSuffix: dc=empresa,dc=edu,dc=br
Altere também:
olcRootDN: cn=Manager,dc=my-domain,dc=com
para:
olcRootDN: cn=Manager,dc=empresa,dc=edu,dc=br
Adicionar neste mesmo arquivo as linhas de comando a seguir:
olcRootPW: digite_a_senha_gerada_aqui
olcTLSCertificateFile: /etc/pki/tls/certs/slapdcert.pem
olcTLSCertificateKeyFile: /etc/pki/tls/certs/slapdkey.pem

8) Editar o arquivo “/etc/openldap/slapd.d/cn=config/olcDatabase={1}monitor.ldif“
# vi /etc/openldap/slapd.d/cn\=config/olcDatabase\=\{1\}monitor.ldif
substitua:
olcAccess: {0}to * by dn.base="gidNumber=0+uidNumber=0,cn=peercred,cn=externa
l,cn=auth" read by dn.base="cn=manager,dc=my-domain,dc=com" read by * none
por:
olcAccess: {0}to * by dn.base="gidNumber=0+uidNumber=0,cn=peercred,cn=externa
 l,cn=auth" read by dn.base="cn=Manager,dc=empresa,dc=edu,dc=br" read by * none

9) Atualize as bases de dados
# updatedb

OBS: Para utilizar esse comando instale o mlocate, yum install mlocate -y

10) Atualize as permissões do diretório /var/lib/ldap/
# chown -R ldap:ldap /var/lib/ldap/

11) Crie o arquivo /var/lib/ldap/DB_CONFIG
# vi /var/lib/ldap/DB_CONFIG
E nele copie e cole o texto abaixo:
# $OpenLDAP: pkg/ldap/servers/slapd/DB_CONFIG,v 1.3.2.3 2007/08/31 23:13:57 quanah Exp $
# Example DB_CONFIG file for use with slapd(8) BDB/HDB databases.
#
# See Sleepycat Berkeley DB documentation
# for detail description of DB_CONFIG syntax and semantics.
#
# Hints can also be found in the OpenLDAP Software FAQ
# in particular:

# Note: most DB_CONFIG settings will take effect only upon rebuilding
# the DB environment.

# one 0.25 GB cache
set_cachesize 0 268435456 1

# Data Directory
#set_data_dir db

# Transaction Log settings
set_lg_regionmax 262144
set_lg_bsize 2097152
#set_lg_dir logs

# Note: special DB_CONFIG flags are no longer needed for "quick"
# slapadd(8) or slapindex(8) access (see their -q option).

12) habilitar TLS encryption
# vi /etc/sysconfig/ldap
Substitua
SLAPD_LDAPS=no
por
SLAPD_LDAPS=yes

13) Gerar os certificados de autenticação
# openssl req -new -x509 -nodes -out /etc/pki/tls/certs/slapdcert.pem -keyout /etc/pki/tls/certs/slapdkey.pem -days 365
A seguir lhe serão feitas algumas perguntas. Preencha os campos da seguinte forma:
Country Name (2 letter code) [XX]:br State or Province Name (full name) []:ce
Locality Name (eg, city) [Default City]:fortaleza
Organization Name (eg, company) [Default Company Ltd]:nome de sua empresa
Organizational Unit Name (eg, section) []:diretoria de ti
Common Name (eg, your name or your server's hostname) []:ti
Email Address []:seuemail@email.com.br

14) Mude as permissões do certificado
# chown -Rf root:ldap /etc/pki/tls/certs/$cert.pem; chmod -Rf 750 /etc/pki/tls/certs/$key.pem

15) testar as configurações
# slaptest -u

Deverá aparecer a mensagem “config file testing succeeded”
16) Iniciar o slapd
# /etc/init.d/slapd start

17) Verifique o status do servidor LDAP com o comando:
# /etc/init.d/slapd status

18) Criar o arquivo “base.ldif” dentro de “/etc/openldap”
# vi /etc/openldap/base.ldif

19) Copie e cole o seguinte texto:
dn: dc=empresa,dc=edu,dc=br dc: empresa
objectClass: top
objectClass: domain

dn: ou=People,dc=empresa,dc=edu,dc=br
ou: People
objectClass: top
objectClass: organizationalUnit

dn: ou=Group,dc=empresa,dc=edu,dc=br
ou: Group
objectClass: top
objectClass: organizationalUnit

20) Ao finalizar digite:
# ldapadd -x -W -D "cn=Manager,dc=empresa,dc=edu,dc=br" -f base.ldif
O comando pedirá a senha do LDAP para inserir os dados. Digite-a. A saída do comando deve ser:
adding new entry "dc=empresa,dc=edu,dc=br"
adding new entry "ou=People,dc=empresa,dc=edu,dc=br"
adding new entry "ou=Group,dc=empresa,dc=edu,dc=br"

21) digite o comando a seguir para ver como ficou!
# ldapsearch -x -b "dc=empresa,dc=edu,dc=br"

22) Criar o arquivo “groups.ldif” dentro de “/etc/openldap”
# vi /etc/openldap/groups.ldif
Insira o seguinte texto:
# criar o grupo group1 na Group

dn: cn=group1,ou=Group,dc=empresa,dc=edu,dc=br objectClass: posixGroup
objectClass: top
cn: group1
description: generic group 1
userPassword: digite_a_senha_gerada_aqui
gidNumber: 1001

# criar o grupo group2 na Group

dn: cn=group2,ou=Group,dc=empresa,dc=edu,dc=br objectClass: posixGroup
objectClass: top
cn: group2
description: generic group 2
userPassword: digite_a_senha_gerada_aqui
gidNumber: 4

23) Digite o comando:
# ldapadd -x -W -D "cn=Manager,dc=empresa,dc=edu,dc=br" -f groups.ldif
A saída do comando deve ser:
adding new entry "cn=ldapusers,ou=Group,dc=empresa,dc=edu,dc=br"
adding new entry "cn=ldapadm,ou=Group,dc=empresa,dc=edu,dc=br"
Obs: para excluir basta digitar:
# ldapdelete -x -W -D "cn=Manager,dc=empresa,dc=edu,dc=br"
"cn=group1,ou=Group,dc=empresa,dc=edu,dc=br"
# ldapdelete -x -W -D "cn=Manager,dc=empresa,dc=edu,dc=br"
"cn=group2,ou=Group,dc=empresa,dc=edu,dc=br"

24) Criar o arquivo “newpeople.ldif” dentro de “/etc/openldap”
# vi /etc/openldap/newpeople.ldif
Insira o seguinte texto:
dn: uid=group1,ou=Group,dc=empresa,dc=edu,dc=br
objectClass: top
objectClass: account
objectClass: posixAccount
objectClass: shadowAccount
cn: ti
uid: ti
uidNumber: 3000
gidNumber: 1001
homeDirectory: /home/ti
loginShell: /bin/bash
gecos: Ti,Analista de Sistemas,Diretoria de TI,85-12345678
userPassword: digite_a_senha_gerada_aqui
shadowLastChange: 0
shadowMax: 0
shadowWarning: 0

25) digite o comando:
# ldapadd -x -W -D "cn=Manager,dc=empresa,dc=edu,dc=br" -f newpeople.ldif
A saída deve ser:
adding new entry "uid=blah,ou=People,dc=empresa,dc=edu,dc=br"

26) Buscas no ldap
# ldapsearch -x -b "dc=empresa,dc=edu,dc=br"
27) Instalando EPEL e PHPLDAPADMIN
# yum install -y php php-cli php-commom php-ldap
# yum --enablerepo=epel -y install phpldapadmin
# /etc/init.d/httpd restart

28) Configurar ldapadmin:

No arquivo /etc/httpd/conf.d/phpldapadmin.conf, adicione o range de ip ou lista de ip's com permissão de acesso a pagina de administração do ldap.

Alias /phpldapadmin /usr/share/phpldapadmin/htdocs
Alias /ldapadmin /usr/share/phpldapadmin/htdocs

<Directory /usr/share/phpldapadmin/htdocs>
  Order Deny,Allow
  Deny from all
  Allow from 127.0.0.1 10.0.0.0/24   # IP address you allow
  Allow from ::1
</Directory>

29) Liberar as portas 389 para o serviço slapd e 80 para o apache no iptables do servidor:

iptables -A INPUT -s 10.0.0.0/24 -p tcp -m state --state NEW -m tcp --dport 389 -j ACCEPT
iptables -A INPUT -s 10.0.0.0/24 -p tcp -m state --state NEW -m tcp --dport 80 -j ACCEPT

30) Acesse o navegador e digite:
Leia Mais ››

segunda-feira, 10 de dezembro de 2012

Ireport corta texto

Mais uma vez desenvolvendo um relatório me deparei com um problemão, quando mandava uma string muito grande para ser exibida no report, a string vinha cortada, o texto não vinha completo. Pesquisando que nem um doido, descobri que isso era causado pela fonte que estava usando e pelo fato de uma propriedade não estar marcada.

A configuração de fonte que estava usando era: Tahoma - 8pt no report e no pdf era Sans-Serif - 8pt e isso era parte do problema. Para que funcionasse perfeitamente a exibição dos dados, tinha de mudar a fonte do report para Arial. Existe uma compatibilidade entre fontes por causa do espaçamento delas.

Um outro ponto que foi chave na solução do problema, foi marcar a seguinte propriedade:

"net.sf.jasperreports.print.keep.full.text

Property used to determine whether the fill process must preserve the original text for text elements that are not able to fit their entire contents. When this property is set, the engine saves the original text in the JRPrintText print text object, along with the index at which the text is to be truncated by the print object."


Essa propriedade está disponibilizada quando você dá um duplo clique em cima de seu parâmetro, field ou variável que representa a string. Existe um espaço para propriedades especiais que nem essa, clique no botão "Edit parameter properties" ou "Edit field properties, uma janela abrirá e nela você verá uma lista de propriedade e dois campos. Clique na propriedade descrita acima, automaticamente o primeiro campo será preenchido e no segundo campo informe que o valor dela será true.

Pronto, isso soluciona o problema. Espero ter ajudado.

http://www.guj.com.br/java/129174-jasper--ireport-cortando-texto
Leia Mais ››

quarta-feira, 21 de novembro de 2012

Tamanho de lista Struts 1

Isso sempre foi um pouco problemático pra mim pq é uma coisa simples mas não sabia como acessar o método size() da lista. A soluçao q usava era por no request, via form-bean ou não, o tamnho da lista e na jsp eu manipulava normalmente mas, existe uma solução do struts para isso.


<bean:size id="tamanhodalista" name="meuform" property="lista" />
<bean:write name="tamanhodalista" />

Desse jeito você conseguirá recuperar o tamanho da lista sem ter que usar request ou seu form-bean.
Leia Mais ››

terça-feira, 16 de outubro de 2012

Conversão de tipos em JavaScript

Como converter uma string em um boolean ? Pesquisei sobre o problema e cheguei a uma solução muito boa. O operador == realiza conversões implícitas. Veja exemplo abaixo:

var a = "true";
var b = ( a == "true" );

A variável b será um boolean com o valor true caso a variável a seja igual a true mas, caso seja false, a variável b será false. Se você tentar passar a String("true" ou "false") para o construtor da classe Boolean, não irá funcionar pois, se a objeto boolean não tiver um valor inicial, ou se um desses valores abaixo forem passados:
  • 0
  • -0
  • null
  • ""
  • false
  • undefined
  • NaN
o objeto é setado como falso. Para qualquer outro valor é setado true!

Se alguém souber como faz conversões usando o operador ==, comenta ai embaixo.

Fonte: http://www.w3schools.com/js/js_obj_boolean.asp
http://stackoverflow.com/questions/263965/how-can-i-convert-a-string-to-boolean-in-javascript
Leia Mais ››

quarta-feira, 22 de agosto de 2012

Como redefinir a senha de root do MySQL

Quebrei muito a cabeça para tentar redefinir a senha de roor do MySQL, achei várias formas na internet mas o que funcionou comigo foi desinstalar o MySQL(recomendo olhar o post "Como desinstalar o MySQL") e após desinstalar, instalar de novo e redefinir a senha no momento de configuração.

Caso esteja falando alguma besteira, deixe seu comentário abaixo :p
Leia Mais ››

Como desinstalar o MySQL

Uns dias atrás tava tentando desinstalar o MySQL, aí tentei fazer de várias formas, apaguei a pasta do computador, procurei tudo o que tinha escrito "MySQL" e nada funcionava. Então resolvi remover a instância do MySQL com o programa MySQLInstanceConfig.exe que fica dentro da seguinte pasta:

C:\Program Files\MySQL\MySQL Server 5.1\bin (Windows)

Com esse programinha removi a instância e depois com o próprio instalador desistalei o MySQL e ele fez todo o trabalho de remover tudo da máquina.

Espero que isso sempre funcione :p
Leia Mais ››

quinta-feira, 9 de agosto de 2012

O que é tabindex e pra que serve ?

Tabindex é um atributo como qualquer outro das tags html, muito usado nas tags "input". O tabindex serve para controlar a ordem em que o cursor percorrerá os campos de um formulário ao se utilizar a tecla TAB. Este atributo pode ser utilizado em hyperlinks e elementos de formulário(inputs, selects, entre outros).

Quando se constrói um formulário em html e não se especifica o tabindex, a ordem do cursor será de cima para baixo, da esquerda para a direita, ou seja, o padrão. Mas, quando o tabindex é especificado através de números (ordem que o cursor deverá percorrer), o controle de movimentação do cursor é feito. Após o término da especificação do tabindex, o padrão volta a ser adotado.

Segue exemplo de formulário que usa o tabindex.

<html>
    <head>
   
    </head>
    <body>
        <form>
            Formulário de assinatura de revista
            <br/>
            <br/>
            Nome: <input type="text" name="nome" tabindex="1" size="35" value="" /> <br/>
            Idade: <input type="text" name="idade" tabindex="3" size="35" value="" /> <br/>
            Sexo: <input type="radio" tabindex="2" name="sexo" value="M" /> Masculino &nbsp <input type="radio" name="sexo" value="F" /> Feminino <br/>
            Tipo de Pagamento:
            <select name="tiposPagamento">
                <option value="1">A vista</option>
                <option value="2">Parcelado no crédito</option>
                <option value="3">Cheque</option>
            </select>
        </form>
    </body>
</html>

Referência: http://warau.nied.unicamp.br/warauv2/?q=node/30


Leia Mais ››