Konfiguracja LDAP-a i kontrolera domeny

Konfiguracja serwerów, usług, itp.
Delleg
Posty: 42
Rejestracja: 21 września 2010, 12:49

Post autor: Delleg »

Okazało się jednak, że potrzebuje w pracy kontroler domeny na Debianie wraz z obsługą bazy ldap, wiem, wiem w internecie jest mnóstwo poradników i chyba każdy przejrzałem problem w tym że sprowadzają się do - teraz wpisz to, a tu zmień plik i będzie chodzić. Jestem głupio-mądry nie mogę sobie samodzielnie poradzić z tym zadaniem. Ale po kolei

Chciałbym zbudować kontroler domeny z Sambą i LDAP-em

Kod: Zaznacz cały

dpkg-reconfigure slapd
Na pytania odpowiadałem w następujący sposób

Kod: Zaznacz cały

Omit OpenLDAP server configuration?             Nie
DNS domain name:                                pcpr.lan
Name of you organization:                       pcpr.lan
Admin password:                                123456
Confirm password:                               123456
Database backend to use:                        BDB
Do you want your database to be removed when slapd purged?  Nie
Move old database?                              Tak
Allow LDAPv2 protocol?                          Nie
Zgodnie z poradnikiem(i) wydaje polecenie ldapsearch -x -b "dc=pcpr,dc=lan" i otrzymuje

Kod: Zaznacz cały

# extended LDIF
#
# LDAPv3
# base <dc=pcpr,dc=lan> with scope subtree
# filter: (objectclass=*)
# requesting: ALL
#

# pcpr.lan
dn: dc=pcpr,dc=lan
objectClass: domain
dc: pcpr

# search result
search: 2
result: 0 Success

# numResponses: 2
# numEntries: 1
zgodnie z poradnikami zamieszczonymi w internecie powinno wyglądać to tak (baza oczywiście nazywa się inaczej):

Kod: Zaznacz cały

# extended LDIF
#
# LDAPv3
# base <dc=test,dc=com> with scope subtree
# filter: (objectclass=*)
# requesting: ALL
#

# test.com
dn: dc=test,dc=com
objectClass: top
objectClass: dcObject
objectClass: organization
o: test.com
dc: test

# admin, test.com
dn: cn=admin,dc=test,dc=com
objectClass: simpleSecurityObject
objectClass: organizationalRole
cn: admin
description: LDAP administrator

# search result
search: 2
result: 0 Success

# numResponses: 3
# numEntries: 2
Jak widać nie ma konta admina w mojej bazie i prawdopodobnie dlatego przy próbie zalogowania przez PHPLDAPADMiN (IP.MOJEGO.SERWERA\phpldapadmin) na konto Administratora bazy tj.:

Kod: Zaznacz cały

Login: cn=admin,dc=pcpr,dc=lan
hasło: 123456
phpldapadmin informuje:

Kod: Zaznacz cały

Unable to connect to LDAP server My LDAP Server
Błąd: Can't contact LDAP server (-1) for user
error    Failed to Authenticate to server
Invalid Username or Password.
na sam koniec wklejam moje konfigi plików /etc/ldap/slap.d.conf

Kod: Zaznacz cały

# This is the main slapd configuration file. See slapd.conf(5) for more
# info on the configuration options.

#######################################################################
# Global Directives:

# Features to permit
#allow bind_v2

# Schema and objectClass definitions
include /etc/ldap/schema/core.schema
include /etc/ldap/schema/cosine.schema
include /etc/ldap/schema/nis.schema
include /etc/ldap/schema/inetorgperson.schema
include /etc/ldap/schema/samba.schema

# Where the pid file is put. The init.d script
# will not stop the server if you change this.
pidfile         /var/run/slapd/slapd.pid

# List of arguments that were passed to the server
argsfile        /var/run/slapd/slapd.args

# Read slapd.conf(5) for possible values
loglevel        none

# Where the dynamically loaded modules are stored
modulepath      /usr/lib/ldap
moduleload      back_bdb

# The maximum number of entries that is returned for a search operation
sizelimit 500

# The tool-threads parameter sets the actual amount of cpu's that is used
# for indexing.
tool-threads 1

#######################################################################
# Specific Backend Directives for bdb:
# Backend specific directives apply to this backend until another
# 'backend' directive occurs
backend         bdb

#######################################################################
# Specific Backend Directives for 'other':
# Backend specific directives apply to this backend until another
# 'backend' directive occurs
#backend                <other>

#######################################################################
# Specific Directives for database #1, of type bdb:
# Database specific directives apply to this databasse until another
# 'database' directive occurs
database        bdb

# The base of your directory in database #1
suffix dc=pcpr,dc=lan

rootdn cn=admin,dc=pcpr,dc=lan
# for syncrepl.
# rootdn          "cn=admin,dc=pcpr,dc=lan"

# Where the database file are physically stored for database #1
directory       "/var/lib/ldap"

# The dbconfig settings are used to generate a DB_CONFIG file the first
# time slapd starts.  They do NOT override existing an existing DB_CONFIG
# file.  You should therefore change these settings in DB_CONFIG directly
# or remove DB_CONFIG and restart slapd for changes to take effect.

# For the Debian package we use 2MB as default but be sure to update this
# value if you have plenty of RAM
dbconfig set_cachesize 0 2097152 0

# Sven Hartge reported that he had to set this value incredibly high
# to get slapd running at all. See http://bugs.debian.org/303057 for more
# information.

# Number of objects that can be locked at the same time.
dbconfig set_lk_max_objects 1500
# Number of locks (both requested and granted)
dbconfig set_lk_max_locks 1500
# Number of lockers
dbconfig set_lk_max_lockers 1500

# Indexing options for database #1
index           objectClass eq

# Save the time that the entry gets modified, for database #1
lastmod         on

# Checkpoint the BerkeleyDB database periodically in case of system
# failure and to speed slapd shutdown.
checkpoint      512 30

# Where to store the replica logs for database #1
# replogfile    /var/lib/ldap/replog

# The userPassword by default can be changed
# by the entry owning it if they are authenticated.
# Others should not be able to see it, except the
# admin entry below
# These access lines apply to database #1 only
access to attrs=userPassword,shadowLastChange
        by dn="cn=admin,dc=pcpr,dc=lan" write
        by anonymous auth
        by self write
        by * none



# Ensure read access to the base for things like
# supportedSASLMechanisms.  Without this you may
# have problems with SASL not knowing what
# mechanisms are available and the like.
# Note that this is covered by the 'access to *'
# ACL below too but if you change that as people
# are wont to do you'll still need this if you
# want SASL (and possible other things) to work
# happily.
access to dn.base="" by * read

# The admin dn has full write access, everyone else
# can read everything.
access to *
        by tls_ssf=128 ssf=128
        by dn="cn=admin,dc=pcpr,dc=lan" write
        by * read

# For Netscape Roaming support, each user gets a roaming
# profile for which they have write access to
#access to dn=".*,ou=Roaming,o=morsnet"
#        by dn="cn=admin,dc=pcpr,dc=lan" write
#        by dnattr=owner write

#######################################################################
# Specific Directives for database #2, of type 'other' (can be bdb too):
# Database specific directives apply to this databasse until another
# 'database' directive occurs
#database        <other>

# The base of your directory for database #2
#suffix         "dc=debian,dc=org"
rootpw {crypt}15nbEmxQpQDqQ
pliku /etc/ldap/slap.d.conf

Kod: Zaznacz cały

#
# LDAP Defaults
#

# See ldap.conf(5) for details
# This file should be world readable but not world writable.

#BASE   dc=example,dc=com
#URI    ldap://ldap.example.com ldap://ldap-master.example.com:666

#SIZELIMIT      12
#TIMELIMIT      15
#DEREF          never

host localhost
base dc=pcpr,dc=lan
binddn cn=admin,dc=pcpr,dc=lan
bindpw 123456

bind_policy soft
pam_password exop
timelimit 15
i pliku /etc/default/slapd:

Kod: Zaznacz cały

# Default location of the slapd.conf file or slapd.d cn=config directory. If
# empty, use the compiled-in default (/etc/ldap/slapd.d with a fallback to
# /etc/ldap/slapd.conf).
SLAPD_CONF=

# System account to run the slapd server under. If empty the server
# will run as root.
SLAPD_USER="openldap"

# System group to run the slapd server under. If empty the server will
# run in the primary group of its user.
SLAPD_GROUP="openldap"

# Path to the pid file of the slapd server. If not set the init.d script
# will try to figure it out from $SLAPD_CONF (/etc/ldap/slapd.conf by
# default)
SLAPD_PIDFILE=

# slapd normally serves ldap only on all TCP-ports 389. slapd can also
# service requests on TCP-port 636 (ldaps) and requests via unix
# sockets.
# Example usage:
#SLAPD_SERVICES="ldaps://pcpr.lan/"
SLAPD_SERVICES="ldap://127.0.0.1:389/ ldaps:/// ldapi:///"
#SLAPD_SERVICES="ldap:/// ldapi:///"

# If SLAPD_NO_START is set, the init script will not start or restart
# slapd (but stop will still work).  Uncomment this if you are
# starting slapd via some other means or if you don't want slapd normally
# started at boot.
#SLAPD_NO_START=1

# If SLAPD_SENTINEL_FILE is set to path to a file and that file exists,
# the init script will not start or restart slapd (but stop will still
# work).  Use this for temporarily disabling startup of slapd (when doing
# maintenance, for example, or through a configuration management system)
# when you don't want to edit a configuration file.
SLAPD_SENTINEL_FILE=/etc/ldap/noslapd

# For Kerberos authentication (via SASL), slapd by default uses the system
# keytab file (/etc/krb5.keytab).  To use a different keytab file,
# uncomment this line and change the path.
#export KRB5_KTNAME=/etc/krb5.keytab

# Additional options to pass to slapd
SLAPD_OPTIONS=""
Jeślichodzi o sambę to jeszcze nier doszedłem do tego momentu nie było sensu modyfikować smb.conf, ale Samba działa tzn. działa współdzielenie katalogów na razie tyle wystarczy. Jak zalogować się do bazy przy użyciu phpmyadmina, jak rozumiem jeśli ten sposób zadziała oznacza to, że baza danych działa poprawnie.

Dodane:
Widzę las rąk - taki mały żarcik wiem już czemu baza jest pusta, ale dalej nie rozumiem jak dodać konto admina.

Kod: Zaznacz cały

 smbldap-populate -u 3000 -g 3000 -a admin
Populating LDAP directory for domain PCPR (S-1-5-21-1989311688-2920807726-3431758440)
(using builtin directory structure)

entry dc=pcpr,dc=lan already exist.
entry ou=Users,dc=pcpr,dc=lan already exist.
entry ou=Groups,dc=pcpr,dc=lan already exist.
entry ou=Computers,dc=pcpr,dc=lan already exist.
entry ou=Idmap,dc=pcpr,dc=lan already exist.
adding new entry: uid=admin,ou=Users,dc=pcpr,dc=lan
failed to add entry: objectClass: value #4 invalid per syntax at /usr/sbin/smbldap-populate line 498, <GEN1> line 58.
adding new entry: uid=nobody,ou=Users,dc=pcpr,dc=lan
failed to add entry: objectClass: value #4 invalid per syntax at /usr/sbin/smbldap-populate line 498, <GEN1> line 89.
adding new entry: cn=Domain Admins,ou=Groups,dc=pcpr,dc=lan
failed to add entry: objectClass: value #2 invalid per syntax at /usr/sbin/smbldap-populate line 498, <GEN1> line 101.
adding new entry: cn=Domain Users,ou=Groups,dc=pcpr,dc=lan
failed to add entry: objectClass: value #2 invalid per syntax at /usr/sbin/smbldap-populate line 498, <GEN1> line 112.
adding new entry: cn=Domain Guests,ou=Groups,dc=pcpr,dc=lan
failed to add entry: objectClass: value #2 invalid per syntax at /usr/sbin/smbldap-populate line 498, <GEN1> line 123.
adding new entry: cn=Domain Computers,ou=Groups,dc=pcpr,dc=lan
failed to add entry: objectClass: value #2 invalid per syntax at /usr/sbin/smbldap-populate line 498, <GEN1> line 134.
adding new entry: cn=Administrators,ou=Groups,dc=pcpr,dc=lan
failed to add entry: objectClass: value #2 invalid per syntax at /usr/sbin/smbldap-populate line 498, <GEN1> line 179.
adding new entry: cn=Account Operators,ou=Groups,dc=pcpr,dc=lan
failed to add entry: objectClass: value #2 invalid per syntax at /usr/sbin/smbldap-populate line 498, <GEN1> line 201.
adding new entry: cn=Print Operators,ou=Groups,dc=pcpr,dc=lan
failed to add entry: objectClass: value #2 invalid per syntax at /usr/sbin/smbldap-populate line 498, <GEN1> line 212.
adding new entry: cn=Backup Operators,ou=Groups,dc=pcpr,dc=lan
failed to add entry: objectClass: value #2 invalid per syntax at /usr/sbin/smbldap-populate line 498, <GEN1> line 223.
adding new entry: cn=Replicators,ou=Groups,dc=pcpr,dc=lan
failed to add entry: objectClass: value #2 invalid per syntax at /usr/sbin/smbldap-populate line 498, <GEN1> line 234.
adding new entry: sambaDomainName=sambaDomain,dc=pcpr,dc=lan
failed to add entry: invalid DN at /usr/sbin/smbldap-populate line 498, <GEN1> line 240.

Please provide a password for the domain admin:
/usr/sbin/smbldap-passwd: user admin doesn't exist
root@pcpr:~# smbpasswd -w 123456
Setting stored password for "cn=admin,dc=pcpr,dc=lan" in secrets.tdb
root@pcpr:~# smbldap-usershow admin
user admin doesn't exist
/etc/nsswitch.conf

Kod: Zaznacz cały

# Example configuration of GNU Name Service Switch functionality.
# If you have the `glibc-doc-reference' and `info' packages installed, try:
# `info libc "Name Service Switch"' for information about this file.

passwd:         files ldap
group:          files ldap
shadow:         files ldap

hosts:          files mdns4_minimal [NOTFOUND=return] dns mdns4
networks:       files

protocols:      db files
services:       db files
ethers:         db files
rpc:            db files

netgroup:       nis
faun77
Posty: 2
Rejestracja: 30 lipca 2010, 11:08

Post autor: faun77 »

Witam.
Ciekawy jestem czy rozwiązałeś problem.
Mam podobny kłopot i podobne konfigi. Co ciekawe, próba połączenia z LDAP udaje się i wygląda, że ten działa poprawnie.
Jednak tylko w trybie do odczytu. Kiedy chcę się zalogować jako admin dostaję komunikat, że nieprawidłowy DN. Ale jako anonim wyświetla drzewo.
Ewidentnie kłopot jest z LDAP-em bo sama samba działa poprawnie.
Awatar użytkownika
grzesiek
Junior Member
Posty: 932
Rejestracja: 06 stycznia 2008, 10:41
Lokalizacja: Białystok

Post autor: grzesiek »

Więc mówisz, że to jest Twój admin

Kod: Zaznacz cały

# admin, test.com
dn: cn=admin,dc=[B]test[/B],dc=[B]com[/B]
objectClass: simpleSecurityObject
objectClass: organizationalRole
cn: admin
description: LDAP administrator
a tak się na niego logujesz

Kod: Zaznacz cały

Login: cn=admin,dc=[B]pcpr[/B],dc=[B]lan[/B]
hasło: 123456
?
Delleg
Posty: 42
Rejestracja: 21 września 2010, 12:49

Post autor: Delleg »

grzesiek pisze:Więc mówisz, że to jest Twój admin

Kod: Zaznacz cały

# admin, test.com
dn: cn=admin,dc=[B]test[/B],dc=[B]com[/B]
objectClass: simpleSecurityObject
objectClass: organizationalRole
cn: admin
description: LDAP administrator
a tak się na niego logujesz

Kod: Zaznacz cały

Login: cn=admin,dc=[B]pcpr[/B],dc=[B]lan[/B]
hasło: 123456
?
Nie, chodziło mi tylko o porównanie tego co mam z tym co powiano być, według poradnika. Loguję się w ten sposób

Kod: Zaznacz cały

ldapsearch -x -b "dc=pcpr,dc=lan"
# extended LDIF
#
# LDAPv3
# base <dc=pcpr,dc=lan> with scope subtree
# filter: (objectclass=*)
# requesting: ALL
#

# pcpr.lan
dn: dc=pcpr,dc=lan
objectClass: dcObject
objectClass: organization
o: pcpr
dc: pcpr

# Users, pcpr.lan
dn: ou=Users,dc=pcpr,dc=lan
objectClass: top
objectClass: organizationalUnit
ou: Users

# Groups, pcpr.lan
dn: ou=Groups,dc=pcpr,dc=lan
objectClass: top
objectClass: organizationalUnit
ou: Groups

# Computers, pcpr.lan
dn: ou=Computers,dc=pcpr,dc=lan
objectClass: top
objectClass: organizationalUnit
ou: Computers

# Idmap, pcpr.lan
dn: ou=Idmap,dc=pcpr,dc=lan
objectClass: top
objectClass: organizationalUnit
ou: Idmap

# search result
search: 2
result: 0 Success

# numResponses: 6
# numEntries: 5
Niestety nie mogę zbudować bazy do końca tak jak napisałem wcześniej.

Kod: Zaznacz cały

smbldap-populate -u 3000 -g 3000
Populating LDAP directory for domain PCPR (S-1-5-21-3946501231-293034350-4217055208)
(using builtin directory structure)

entry dc=pcpr,dc=lan already exist.
entry ou=Users,dc=pcpr,dc=lan already exist.
entry ou=Groups,dc=pcpr,dc=lan already exist.
entry ou=Computers,dc=pcpr,dc=lan already exist.
entry ou=Idmap,dc=pcpr,dc=lan already exist.
adding new entry: uid=root,ou=Users,dc=pcpr,dc=lan
failed to add entry: objectClass: value #4 invalid per syntax at /usr/sbin/smbldap-populate line 498, <GEN1> line 56.
adding new entry: uid=nobody,ou=Users,dc=pcpr,dc=lan
failed to add entry: objectClass: value #4 invalid per syntax at /usr/sbin/smbldap-populate line 498, <GEN1> line 85.
adding new entry: cn=Domain Admins,ou=Groups,dc=pcpr,dc=lan
failed to add entry: objectClass: value #2 invalid per syntax at /usr/sbin/smbldap-populate line 498, <GEN1> line 97.
adding new entry: cn=Domain Users,ou=Groups,dc=pcpr,dc=lan
failed to add entry: objectClass: value #2 invalid per syntax at /usr/sbin/smbldap-populate line 498, <GEN1> line 108.
adding new entry: cn=Domain Guests,ou=Groups,dc=pcpr,dc=lan
failed to add entry: objectClass: value #2 invalid per syntax at /usr/sbin/smbldap-populate line 498, <GEN1> line 119.
adding new entry: cn=Domain Computers,ou=Groups,dc=pcpr,dc=lan
failed to add entry: objectClass: value #2 invalid per syntax at /usr/sbin/smbldap-populate line 498, <GEN1> line 130.
adding new entry: cn=Administrators,ou=Groups,dc=pcpr,dc=lan
failed to add entry: objectClass: value #2 invalid per syntax at /usr/sbin/smbldap-populate line 498, <GEN1> line 175.
adding new entry: cn=Account Operators,ou=Groups,dc=pcpr,dc=lan
failed to add entry: objectClass: value #2 invalid per syntax at /usr/sbin/smbldap-populate line 498, <GEN1> line 197.
adding new entry: cn=Print Operators,ou=Groups,dc=pcpr,dc=lan
failed to add entry: objectClass: value #2 invalid per syntax at /usr/sbin/smbldap-populate line 498, <GEN1> line 208.
adding new entry: cn=Backup Operators,ou=Groups,dc=pcpr,dc=lan
failed to add entry: objectClass: value #2 invalid per syntax at /usr/sbin/smbldap-populate line 498, <GEN1> line 219.
adding new entry: cn=Replicators,ou=Groups,dc=pcpr,dc=lan
failed to add entry: objectClass: value #2 invalid per syntax at /usr/sbin/smbldap-populate line 498, <GEN1> line 230.
adding new entry: sambaDomainName=PCPR,dc=pcpr,dc=lan
failed to add entry: invalid DN at /usr/sbin/smbldap-populate line 498, <GEN1> line 238.

Please provide a password for the domain root:
/usr/sbin/smbldap-passwd: user root doesn't exist
Nie odpowiadałem przez jakiś czas z powodu remontu w pracy serwer działał sporadycznie i różnie to bywało. Jeśli chodzi o LDAP-a to problem pozostał. W związku z tym w jaki sposób "wyczyścić/usunąć" ldapa aby zacząć od zera konfiguracje.
kusiu
Posty: 2
Rejestracja: 26 stycznia 2011, 12:06

Post autor: kusiu »

Powiem tak, mam ten sam problem i nie moge sobie z nim poradzić, jednak wyczytałem jedną rzecz na innym forum
"Brak pliku slapd.conf oznacza, że w susie podobnie jak ubuntu (i pewnie debianie) używany jest nowy sposób konfiguracji, trzymana jest ona bezpośrednio w LDAP'ie w gałęzi "cn=config" (ale nie w bazie bdb a w plikach ldif), upraszcza to cały proces konfiguracji w przypadku właśnie replikacji, bo i konfiguracja (wliczając w to schematy) jest replikowana."
A konfiguracje, którą stosujesz (poradnik) jest pod slapd.conf, więc nie będzie to działać. Poki co sam nie wiem, jak obsłużyć nowy sposób konfiguracji i stoje w miejscu.
Delleg
Posty: 42
Rejestracja: 21 września 2010, 12:49

Post autor: Delleg »

Przynajmniej wiem czego szukać.
kusiu
Posty: 2
Rejestracja: 26 stycznia 2011, 12:06

Post autor: kusiu »

Delleg pisze:Przynajmniej wiem czego szukać.
Coś znalazłem, spróbuj z tego linka
http://www.drfugazi.eu.org/en/comment/reply/228
Mnie osobiście się nie udało, ale coś namieszałem, może dlatego, a nie mam niestety czasu drugi raz się bawić. Jeżeli Ci się powiedzie, daj znać.

Edycja:
Jednak skusiłem się i spróbowałem, okazuje się, że poszło i mogę zalogować się w phpldapaminie.
Czekam teraz na Ciebie, daj znać, czy Ci się powiodło.
Delleg
Posty: 42
Rejestracja: 21 września 2010, 12:49

Post autor: Delleg »

O! dzięki Ci Boże Panie mój za Twą łaskę
A musicie wiedzieć że ja wierzący za bardzo to nie jestem, ale właśnie to poczułem jak zobaczyłem to na ekranie.

Kod: Zaznacz cały

/etc/ldap/schema# smbldap-populate
Populating LDAP directory for domain PCPR (S-1-5-21-3946501231-293034350-4217055208)
(using builtin directory structure)

entry dc=pcpr,dc=lan already exist.
adding new entry: ou=people,dc=pcpr,dc=lan
entry ou=groups,dc=pcpr,dc=lan already exist.
entry ou=Computers,dc=pcpr,dc=lan already exist.
entry ou=Idmap,dc=pcpr,dc=lan already exist.
adding new entry: uid=root,ou=people,dc=pcpr,dc=lan
adding new entry: uid=nobody,ou=people,dc=pcpr,dc=lan
adding new entry: cn=Domain Admins,ou=groups,dc=pcpr,dc=lan
adding new entry: cn=Domain Users,ou=groups,dc=pcpr,dc=lan
adding new entry: cn=Domain Guests,ou=groups,dc=pcpr,dc=lan
adding new entry: cn=Domain Computers,ou=groups,dc=pcpr,dc=lan
adding new entry: cn=Administrators,ou=groups,dc=pcpr,dc=lan
adding new entry: cn=Account Operators,ou=groups,dc=pcpr,dc=lan
adding new entry: cn=Print Operators,ou=groups,dc=pcpr,dc=lan
adding new entry: cn=Backup Operators,ou=groups,dc=pcpr,dc=lan
adding new entry: cn=Replicators,ou=groups,dc=pcpr,dc=lan
entry sambaDomainName=PCPR,dc=pcpr,dc=lan already exist. Updating it...

Please provide a password for the domain root:
Changing UNIX and samba passwords for root
New password:
Retype new password:
root@SERWER:/etc/ldap/schema#
dzięki Tobie szukałem w Google informacji pod kątem cn=config, znalazłem tego linka http://www.server-world.info/en/note?os ... =samba&f=4

Nie wiem na razie czy działa logowanie do domeny, w poniedziałek w pracy zobaczę. Poki co masz beczkę piwa w prezencie :) .
dafr

Post autor: dafr »

Odinstaluj wszystko, usuń pliki .conf i zainstaluj jeszcze raz. Przy konfiguratorach zwróć uwagę na LDAP:// a nie domyślnie LDAPI:// . U mnie wszystko działa. Zapraszam na http://www.liceum.kozy.pl/index.php?opt ... Itemid=169
ODPOWIEDZ