Mudanças entre as edições de "Projeto Integrador - 2010.1 - Equipe Café On-Line"

De MediaWiki do Campus São José
Ir para navegação Ir para pesquisar
(Corrigido o realce de sintaxe)
 
Linha 81: Linha 81:
  
 
Rede externa:
 
Rede externa:
<code>
+
<syntaxhighlight lang=lang="html4strict">
 
IP:200.135.37.100      Mascara: 255.255.255.192 (/26)      Broadcast 200.135.37.127
 
IP:200.135.37.100      Mascara: 255.255.255.192 (/26)      Broadcast 200.135.37.127
 
Rede:200.135.37.64/26  1°IP valido: 200.135.37.65          Ultimo IP valido: 200.135.37.126  
 
Rede:200.135.37.64/26  1°IP valido: 200.135.37.65          Ultimo IP valido: 200.135.37.126  
Linha 88: Linha 88:
  
 
Rede interna:
 
Rede interna:
<code>
+
<syntaxhighlight lang=lang="html4strict">
 
IP:192.168.100.1        Mascara: 255.255.255.0 (/24  )      Broadcast 192.168.100.255
 
IP:192.168.100.1        Mascara: 255.255.255.0 (/24  )      Broadcast 192.168.100.255
 
Rede:192.168.100.0      1°IP valido: 192.168.100.1          Ultimo IP valido: 192.168.100.254  
 
Rede:192.168.100.0      1°IP valido: 192.168.100.1          Ultimo IP valido: 192.168.100.254  
Linha 95: Linha 95:
  
 
Rede Wireless(Acces Point):
 
Rede Wireless(Acces Point):
<code>
+
<syntaxhighlight lang=lang="html4strict">
 
IP:192.168.200.1        Mascara: 255.255.255.0 (/24  )      Broadcast 192.168.200.255
 
IP:192.168.200.1        Mascara: 255.255.255.0 (/24  )      Broadcast 192.168.200.255
 
Rede:192.168.200.0      1°IP valido: 192.168.200.1          Ultimo IP valido: 192.168.200.254  
 
Rede:192.168.200.0      1°IP valido: 192.168.200.1          Ultimo IP valido: 192.168.200.254  
Linha 106: Linha 106:
 
Arquivo '''/etc/network/interfaces''': Arquivo de configuração das interfaces de rede
 
Arquivo '''/etc/network/interfaces''': Arquivo de configuração das interfaces de rede
  
<code>
+
<syntaxhighlight lang=lang="html4strict">
  
 
auto lo
 
auto lo
Linha 137: Linha 137:
 
Arquivo '''/etc/resolv.conf''': Arquivo de configuração dos servidores DNS que o sistema utilizara, no caso é a própria maquina pois ela sera um servidor também DNS.
 
Arquivo '''/etc/resolv.conf''': Arquivo de configuração dos servidores DNS que o sistema utilizara, no caso é a própria maquina pois ela sera um servidor também DNS.
  
<code>
+
<syntaxhighlight lang=lang="html4strict">
  
 
nameserver 127.0.0.1
 
nameserver 127.0.0.1
Linha 146: Linha 146:
  
 
Instalando
 
Instalando
<code>
+
<syntaxhighlight lang=lang="html4strict">
 
#aptotude update; aptitude install iptables
 
#aptotude update; aptitude install iptables
 
</syntaxhighlight>
 
</syntaxhighlight>
  
 
script '''/etc/init.d/fw''':
 
script '''/etc/init.d/fw''':
<code>
+
<syntaxhighlight lang=lang="html4strict">
 
#!/bin/sh
 
#!/bin/sh
 
   
 
   
Linha 187: Linha 187:
 
Iniciar o script junto com o sistema
 
Iniciar o script junto com o sistema
  
<code>
+
<syntaxhighlight lang=lang="html4strict">
 
update-rc.d fw start 01 2 3 4 5  
 
update-rc.d fw start 01 2 3 4 5  
 
</syntaxhighlight>
 
</syntaxhighlight>
Linha 226: Linha 226:
  
 
*Instalando e configurando
 
*Instalando e configurando
<code>
+
<syntaxhighlight lang=lang="html4strict">
  
 
#aptitude update; aptitude install ntp
 
#aptitude update; aptitude install ntp
Linha 234: Linha 234:
 
Arquivo '''/etc/ntp.conf''': Arquivo de configuração do daemon ntpd. Abaixo os parâmetros alterados.
 
Arquivo '''/etc/ntp.conf''': Arquivo de configuração do daemon ntpd. Abaixo os parâmetros alterados.
  
<code>
+
<syntaxhighlight lang=lang="html4strict">
 
# blablabla..
 
# blablabla..
 
#Linhas adicionadas para que o ntpd sincronize o horário com os servidores abaixo
 
#Linhas adicionadas para que o ntpd sincronize o horário com os servidores abaixo
Linha 261: Linha 261:
 
Instalação e configuração de servidor DNS(BIND9[http://www.isc.org/software/bind])
 
Instalação e configuração de servidor DNS(BIND9[http://www.isc.org/software/bind])
  
<code>
+
<syntaxhighlight lang=lang="html4strict">
 
*Instalar
 
*Instalar
  
Linha 268: Linha 268:
 
</syntaxhighlight>
 
</syntaxhighlight>
 
Arquivo '''/etc/bind/named.conf.options:''': Neste arquivo vão configurações "globais" do bind.
 
Arquivo '''/etc/bind/named.conf.options:''': Neste arquivo vão configurações "globais" do bind.
<code>
+
<syntaxhighlight lang=lang="html4strict">
  
 
options {
 
options {
Linha 286: Linha 286:
 
Arquivo '''/etc/bind/named.conf.local''': Neste arquivo indicamos o domínio a ser configurado e em quais arquivos ficarão as configurações deste e do DNS reverso.
 
Arquivo '''/etc/bind/named.conf.local''': Neste arquivo indicamos o domínio a ser configurado e em quais arquivos ficarão as configurações deste e do DNS reverso.
  
<code>
+
<syntaxhighlight lang=lang="html4strict">
 
...
 
...
 
zone "cafeonline.sj.ifsc.edu.br" {
 
zone "cafeonline.sj.ifsc.edu.br" {
Linha 301: Linha 301:
 
Arquivo '''/etc/bind/dbcafeonline.sj.ifsc.edu.br''': Arquivo com as configurações do domínio
 
Arquivo '''/etc/bind/dbcafeonline.sj.ifsc.edu.br''': Arquivo com as configurações do domínio
  
<code>
+
<syntaxhighlight lang=lang="html4strict">
  
 
$TTL 86400
 
$TTL 86400
Linha 329: Linha 329:
 
Arquivo '''/etc/bind/db100.64-127.37.135.200.in-addr.arpa''': Arquivo com as configurações do DNS reverso
 
Arquivo '''/etc/bind/db100.64-127.37.135.200.in-addr.arpa''': Arquivo com as configurações do DNS reverso
  
<code>
+
<syntaxhighlight lang=lang="html4strict">
  
 
$TTL    86400
 
$TTL    86400
Linha 362: Linha 362:
  
 
Instalando:
 
Instalando:
<code>
+
<syntaxhighlight lang=lang="html4strict">
 
#aptitude update; aptitude install apache2
 
#aptitude update; aptitude install apache2
 
</syntaxhighlight>
 
</syntaxhighlight>
Linha 376: Linha 376:
  
 
Instalando:
 
Instalando:
<code>
+
<syntaxhighlight lang=lang="html4strict">
 
#aptitude update; aptitude install lxde
 
#aptitude update; aptitude install lxde
 
</syntaxhighlight>
 
</syntaxhighlight>
Linha 384: Linha 384:
 
Instalando e configurando o OpenSSH-Server[http://www.openssh.com/]
 
Instalando e configurando o OpenSSH-Server[http://www.openssh.com/]
  
<code>
+
<syntaxhighlight lang=lang="html4strict">
  
 
# aptitude update; aptitude install openssh-server
 
# aptitude update; aptitude install openssh-server
Linha 392: Linha 392:
 
Arquivo '''/etc/ssh/sshd_config''': Neste arquivo de configuração do servidor ssh. Abaixo apenas os parâmetros a adicionar ou alterar.
 
Arquivo '''/etc/ssh/sshd_config''': Neste arquivo de configuração do servidor ssh. Abaixo apenas os parâmetros a adicionar ou alterar.
  
<code>
+
<syntaxhighlight lang=lang="html4strict">
 
#Lista de usuários que podem golar no servidor
 
#Lista de usuários que podem golar no servidor
 
AllowUsers nx cafeonline  
 
AllowUsers nx cafeonline  
Linha 409: Linha 409:
 
http://www.nomachine.com/download-package.php?Prod_Id=1978
 
http://www.nomachine.com/download-package.php?Prod_Id=1978
 
depois instale com(deve se instalar nessa ordem nxcliente nxnode nxserver ):
 
depois instale com(deve se instalar nessa ordem nxcliente nxnode nxserver ):
<code>
+
<syntaxhighlight lang=lang="html4strict">
 
#cd diretorio-onde-salvou-os-pacotes
 
#cd diretorio-onde-salvou-os-pacotes
 
# dpkg -i nxclient_3.4.0-7_i386.deb nxnode_3.4.0-11_i386.deb nxserver_3.4.0-12_i386.deb
 
# dpkg -i nxclient_3.4.0-7_i386.deb nxnode_3.4.0-11_i386.deb nxserver_3.4.0-12_i386.deb
Linha 427: Linha 427:
 
Linha referente ao Backup no '''/etc/crontab''':
 
Linha referente ao Backup no '''/etc/crontab''':
  
<code>
+
<syntaxhighlight lang=lang="html4strict">
 
#blablabla...
 
#blablabla...
  
Linha 436: Linha 436:
  
 
script de backup:
 
script de backup:
<code>
+
<syntaxhighlight lang=lang="html4strict">
  
 
#!/bin/bash  
 
#!/bin/bash  
Linha 556: Linha 556:
  
 
Instalando:
 
Instalando:
<code>
+
<syntaxhighlight lang=lang="html4strict">
 
#aptitude update; aptitude install sshfs  
 
#aptitude update; aptitude install sshfs  
 
</syntaxhighlight>
 
</syntaxhighlight>
Linha 562: Linha 562:
  
 
No servidor local como root(ja que é este usuário que executara o script via cron):
 
No servidor local como root(ja que é este usuário que executara o script via cron):
<code>
+
<syntaxhighlight lang=lang="html4strict">
 
#ssh-keygen -t rsa
 
#ssh-keygen -t rsa
 
# scp ~/.ssh/id_rsa.pub backup@eris.dontexist.net:/backup
 
# scp ~/.ssh/id_rsa.pub backup@eris.dontexist.net:/backup
Linha 569: Linha 569:
 
</syntaxhighlight>
 
</syntaxhighlight>
 
No servidor remoto:
 
No servidor remoto:
<code>
+
<syntaxhighlight lang=lang="html4strict">
 
backup@buxtehude ~]% cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
 
backup@buxtehude ~]% cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
 
% rm -rf id_rsa.pub
 
% rm -rf id_rsa.pub
Linha 623: Linha 623:
  
 
Instalando:
 
Instalando:
<code>
+
<syntaxhighlight lang=lang="html4strict">
 
# aptitude update; aptitude install dhcp3-server
 
# aptitude update; aptitude install dhcp3-server
 
</syntaxhighlight>
 
</syntaxhighlight>
Linha 629: Linha 629:
 
Arquivo: '''/etc/dhcp3/dhcpd.conf''' configurações do servidor dhcp.
 
Arquivo: '''/etc/dhcp3/dhcpd.conf''' configurações do servidor dhcp.
  
<code>
+
<syntaxhighlight lang=lang="html4strict">
  
 
# Integração com os outros serviços
 
# Integração com os outros serviços
Linha 671: Linha 671:
  
 
Backup do arquivo de configuração:
 
Backup do arquivo de configuração:
<code>
+
<syntaxhighlight lang=lang="html4strict">
 
#cp /etc/dhcp3/dhcpd.conf /etc/dhcp3/dhcpd.conf-backup
 
#cp /etc/dhcp3/dhcpd.conf /etc/dhcp3/dhcpd.conf-backup
 
</syntaxhighlight>
 
</syntaxhighlight>
Linha 677: Linha 677:
 
Remoção do serviço:
 
Remoção do serviço:
  
<code>
+
<syntaxhighlight lang=lang="html4strict">
 
#aptitude purge dhcp3-server
 
#aptitude purge dhcp3-server
 
</syntaxhighlight>
 
</syntaxhighlight>
Linha 690: Linha 690:
  
 
Instalando:
 
Instalando:
<code>
+
<syntaxhighlight lang=lang="html4strict">
 
# aptitude update; aptitude install squid3
 
# aptitude update; aptitude install squid3
 
</syntaxhighlight>
 
</syntaxhighlight>
 
Arquivo: '''/etc/squid3/squid.conf''' Principal arquivo de configuração  
 
Arquivo: '''/etc/squid3/squid.conf''' Principal arquivo de configuração  
<code>
+
<syntaxhighlight lang=lang="html4strict">
 
#blablabla...
 
#blablabla...
  
Linha 711: Linha 711:
  
 
Instalando:
 
Instalando:
<code>
+
<syntaxhighlight lang=lang="html4strict">
 
#aptitude update; aptitude install dansguardian
 
#aptitude update; aptitude install dansguardian
 
</syntaxhighlight>
 
</syntaxhighlight>
 
Arquivo: '''/etc/dansguardian/dansguardian.conf''' comentar a linha
 
Arquivo: '''/etc/dansguardian/dansguardian.conf''' comentar a linha
<code>
+
<syntaxhighlight lang=lang="html4strict">
 
#blablabla...
 
#blablabla...
  
Linha 751: Linha 751:
  
 
Instalando:
 
Instalando:
<code>
+
<syntaxhighlight lang=lang="html4strict">
  
 
#aptitude update; aptitude install postfix
 
#aptitude update; aptitude install postfix
Linha 759: Linha 759:
 
Arquivo: '''/etc/postfix/main.cf''' principal arquivo de configuração do postfix
 
Arquivo: '''/etc/postfix/main.cf''' principal arquivo de configuração do postfix
  
<code>
+
<syntaxhighlight lang=lang="html4strict">
  
 
myhostname = server.$mydomain
 
myhostname = server.$mydomain
Linha 784: Linha 784:
  
 
Instalando:
 
Instalando:
<code>
+
<syntaxhighlight lang=lang="html4strict">
 
#aptitude update; aptitude unstall  snmpd
 
#aptitude update; aptitude unstall  snmpd
 
</syntaxhighlight>
 
</syntaxhighlight>
Linha 790: Linha 790:
 
Arquivo: '''/etc/snmp/snmpd.conf''' Principal arquivo de configuração.
 
Arquivo: '''/etc/snmp/snmpd.conf''' Principal arquivo de configuração.
  
<code>
+
<syntaxhighlight lang=lang="html4strict">
  
 
rocommunity cafeonline
 
rocommunity cafeonline
Linha 828: Linha 828:
  
 
Instalando:
 
Instalando:
<code>
+
<syntaxhighlight lang=lang="html4strict">
 
#aptitude  update; aptitude install ntop
 
#aptitude  update; aptitude install ntop
 
</syntaxhighlight>
 
</syntaxhighlight>
Linha 844: Linha 844:
  
 
Instalando:
 
Instalando:
<code>
+
<syntaxhighlight lang=lang="html4strict">
 
#aptitude update; install iptraf
 
#aptitude update; install iptraf
 
</syntaxhighlight>
 
</syntaxhighlight>

Edição atual tal como às 10h56min de 14 de fevereiro de 2020

Descrição das atividades por datas - Projeto Integrador 2010-1

Dia: 08/6/2010

Criação do nome da equipe: Café On-line.

Cabeamento

  • Foi passado os cabos do Patch Panel do Armário Principal para o Armário Café On-line.
  • Feitos os pontos de acesso (Tomadas).
  • Padrão 568A.

Gerência de Rede

  • Instalação do Sistema Operacional, definido pela equipe.


Hardware do servidor

*Processador:
# lshw -short -c cpu
H/W path         Device      Class       Description
====================================================
/0/4                         processor   Intel(R) Celeron(R) CPU 2.26GHz

*Memoria:
# lshw -short -c memory
H/W path         Device      Class       Description
====================================================
/0/4/5                       memory      16KiB L1 cache
/0/4/6                       memory      256KiB L2 cache
/0/2f                        memory      512MiB System Memory
/0/2f/0                      memory      256MiB DIMM DDR Synchronous 333 MHz (3.0 ns)
/0/2f/1                      memory      256MiB DIMM DDR Synchronous 333 MHz (3.0 ns)

*Rede
# lshw -short -c network
H/W path         Device      Class       Description
====================================================
/0/100/1e/1      eth1        network     RTL-8169 Gigabit Ethernet
/0/100/1e/8      eth0        network     82801DB PRO/100 VE (LOM) Ethernet Controller


*Disco
# lshw -short -c disk
H/W path         Device      Class       Description
====================================================
/0/100/1f.1/0    /dev/sda    disk        41GB Maxtor 6E040L0
/0/100/1f.1/1    /dev/cdrom  disk        CD/DVDW SH-S182D

*Video
# lspci | grep VGA
00:02.0 VGA compatible controller: Intel Corporation 82845G/GL[Brookdale-G]/GE 
Chipset Integrated Graphics Device (rev 01)

Para informações adicionais executar
# dmidecode | less

Distribuição utilizada:

# lsb_release -a
Distributor ID: Ubuntu
Description:    Ubuntu 10.04 LTS
Release:        10.04
Codename:       lucid

Utilizamos a Distribuição Ubuntu Server 10.04 LTS[1]. por ser a de maior familiaridade entre os integrantes da equipe e na "versão" LTS[2] por ter suporte por um período de tempo maior que as demais versões do Ubuntu, possibilitando que a experiência realizada no projeto possa ser aproveitada no futuro sem grandes alterações.

Particionamento usado:

Partição     "Tamanho"    Tipo       Ponto de montagem
====================================================
/dev/sda1     285MB       EXT3            /boot
/dev/sda2     717MB    Linux/swap 
/dev/sda3     36GB        EXT4            /
  • Rede cafeonline:

Rede externa:

IP:200.135.37.100       Mascara: 255.255.255.192 (/26)      Broadcast 200.135.37.127
Rede:200.135.37.64/26   1°IP valido: 200.135.37.65          Ultimo IP valido: 200.135.37.126 
Gateway:200.135.37.126

Rede interna:

IP:192.168.100.1         Mascara: 255.255.255.0 (/24  )      Broadcast 192.168.100.255
Rede:192.168.100.0       1°IP valido: 192.168.100.1          Ultimo IP valido: 192.168.100.254 
Gateway:192.168.100.254

Rede Wireless(Acces Point):

IP:192.168.200.1         Mascara: 255.255.255.0 (/24  )      Broadcast 192.168.200.255
Rede:192.168.200.0       1°IP valido: 192.168.200.1          Ultimo IP valido: 192.168.200.254 
Gateway:192.168.200.254


  • configuração de rede

Arquivo /etc/network/interfaces: Arquivo de configuração das interfaces de rede

auto lo
iface lo inet loopback

# The primary network interface
# Interface externa ip 200.135.37.100/26
auto eth0
iface eth0 inet static
        address 200.135.37.100
        netmask 255.255.255.192
        broadcast 200.135.37.127
        network 200.135.37.64
        gateway 200.135.37.126
        # dns-* options are implemented by the resolvconf package, if installed
        dns-nameservers 127.0.0.1 ns1.cafeonline.sj.ifsc.edu.br
        dns-search cafeonline.sj.ifsc.edu.br


# Interface interna ip 192.168.100.1/24
auto eth1
iface eth1 inet static
        address 192.168.100.1
        netmask 255.255.255.0
        network 192.168.100.0
        broadcast 192.168.100.255
        post-up route add -net 192.168.200.0/24 gw 192.168.100.254

Arquivo /etc/resolv.conf: Arquivo de configuração dos servidores DNS que o sistema utilizara, no caso é a própria maquina pois ela sera um servidor também DNS.

nameserver 127.0.0.1

Scritp basico para "NAT" e redirecionamento de portas, utilizando o netfilter/iptables[3]

Instalando

#aptotude update; aptitude install iptables

script /etc/init.d/fw:

#!/bin/sh
 
# Interfaces
IFACE_INTERNA="eth1"
IFACE_EXTERNA="eth0"

# Habilita ip forward 
echo 1 > /proc/sys/net/ipv4/ip_forward

# Habilita syncookies (evita que um grande numero de pacotes SYN, estourem o limite de conexões)
echo 1 > /proc/sys/net/ipv4/tcp_syncookies

# NAT
iptables -t nat -A POSTROUTING -o ${IFACE_EXTERNA} -j MASQUERADE
 
# Redirecionamento para o Analisador de Conteúdo Dansguardian
iptables -t nat -A PREROUTING -i ${IFACE_INTERNA} -p tcp --dport 80 \
-j REDIRECT --to-port 8080
 
# Bloqueio para acesso direto ao Proxy
iptables -A INPUT -m tcp -p tcp ! -s 127.0.0.1 --dport 3128 -j DROP

#limita resposta a "ping"
iptables -A INPUT -p icmp --icmp-type echo-request -m limit --limit 1/s -j ACCEPT

# Bloqueia pacotes invalidos
iptables -A INPUT -m state --state INVALID -j DROP


 
exit 0

Iniciar o script junto com o sistema

update-rc.d fw start 01 2 3 4 5


Link's uteis: Ubuntu server guide:[4] em pdf[5], Pesquisa no Guia FOCA [6], google/linux [7] --Eris 12:54, 5 Julho 2010 (BRT)

Fotos do Primeiro Dia

Portas das Tomadas do Patch Panel do Armário Café On-line.
Portas do Patch Panel Armário Principal da equipe Café On-line.
Portas que chegam do Armário Principal para o Armário Café On-line.
Rack Armário Principal.
Rack Café On-line.

Dia: 09/6/2010

Cabeamento

  • Verificamos se a parte de cabeamento ta ok.
  • Foi visto que os Patch Panel do Lab. de Transmissão não funcionam muito bem.

Gerência de Rede

Instalação e configuração dos serviços

  • NTP
  • DNS

NTP

  • NTP[8] (Network Time Protocol ou Protocolo de Tempo para Redes). É um protocolo que permite a sincronização dos relógios dos dispositivos de uma rede como servidores, estações de trabalho, roteadores e outros equipamentos à partir de referências de tempo confiável[9] Portas 123UDP/TCP.


  • Instalando e configurando
#aptitude update; aptitude install ntp

Arquivo /etc/ntp.conf: Arquivo de configuração do daemon ntpd. Abaixo os parâmetros alterados.

# blablabla..
#Linhas adicionadas para que o ntpd sincronize o horário com os servidores abaixo
#servidor da rnp
server ntp.cais.rnp.br
#servidor "a" do observatório nacional
server a.ntp.br
#servidor "b" do observatório nacional
server b.ntp.br
# blablabla...
#Restringe o acesso ao servidor ntp apenas a dispositivos da rede local
restrict 192.168.100.0 mask 255.255.255.0 nomodify notrap
restrict 192.168.200.0 mask 255.255.255.0 nomodify notrap
# blablabla...


link's uteis: ntp.br [10], guia rápido de configuração do ntp.br [11], manual sobre ntp da rnp[12], documentação no ntp.org [13]

--Eris 12:53, 5 Julho 2010 (BRT)

DNS

  • DNS (Domain Name System - Sistema de Nomes de Domínios) é um sistema de gerenciamento de nomes hierárquico e distribuído que permite a "tradução" de nomes de "maquinas" em endereços IP.

Portas utilizadas: 53 UDP/TCP

Instalação e configuração de servidor DNS(BIND9[14])

*Instalar

# aptitude update; aptitude install bind9

Arquivo /etc/bind/named.conf.options:: Neste arquivo vão configurações "globais" do bind.

options {
               directory "/var/cache/bind";
        version "N/A"; # Não exibe versão do bind
        listen-on-v6 { any; };
           listen-on { any; };
           allow-recursion { 127.0.0.0/8; 192.168.100.0/24; }; # define quem pode faver consultas recursssivas ao servidor
           allow-query { any; }; # define quem pode consultar o servidor
           allow-query-cache { any; };

};

Arquivo /etc/bind/named.conf.local: Neste arquivo indicamos o domínio a ser configurado e em quais arquivos ficarão as configurações deste e do DNS reverso.

...
zone "cafeonline.sj.ifsc.edu.br" {
 type master;
 file "/etc/bind/dbcafeonline.sj.ifsc.edu.br";
};
zone "100.64-127.37.135.200.in-addr.arpa" {
 type master;
 file "/etc/bind/db100.64-127.37.135.200.in-addr.arpa";
};

Arquivo /etc/bind/dbcafeonline.sj.ifsc.edu.br: Arquivo com as configurações do domínio

$TTL 86400
@         IN   SOA   server.cafeonline.sj.ifsc.edu.br.   admin.cafeonline.sj.ifsc.edu.br. (
    2010063001   ; serial
            1d   ; refresh
            1h   ; retry
            1w   ; expire
            1d   ; negative cache ttl
)
@       IN   NS     server
@       IN    A    200.135.37.100
@       IN    MX 0  mail.cafeonline.sj.ifsc.edu.br.
server  IN    A    200.135.37.100
ns1     IN    A    200.135.37.100
mail    IN    A    200.135.37.100
www     IN    A    200.135.37.100
smtp    IN      CNAME   mail.cafeonline.sj.ifsc.edu.br.
pop     IN      CNAME   mail.cafeonline.sj.ifsc.edu.br.
imap    IN      CNAME   mail.cafeonline.sj.ifsc.edu.br.
ssl     IN      CNAME   www.cafeonline.sj.ifsc.edu.br.
cacti   IN      CNAME   www.cafeonline.sj.ifsc.edu.br.
cafeonline.sj.ifsc.edu.br. IN TXT "v=spf1 mx -all"

Arquivo /etc/bind/db100.64-127.37.135.200.in-addr.arpa: Arquivo com as configurações do DNS reverso

$TTL    86400
; Start of Authority: início de autoridade
@    IN    SOA    ns1.cafeonline.sj.ifsc.edu.br. admin.cafeonline.sj.ifsc.edu.br. (
  2010070501        ; Serial
  1d        ; Refresh
  4h        ; Retry
  1w        ; Expire
  1d )    ; Negative Cache TTL
;
; Name Server: servidores DNS
@    IN    NS    ns1.cafeonline.sj.ifsc.edu.br.
; Address: endereço
100        IN    PTR    ns1.cafeonline.sj.ifsc.edu.br.

--Eris 12:53, 5 Julho 2010 (BRT)

Dia: 10/6/2010

Cabeamento

  • Verificamos a parte dos Patch Panel, apenas uma porta não funciona.

Gerência de Rede

  • servidor web apache2

O apache[15] e um servidor de paginas web amplamente utilizado mundo afora por sua flexibilidade e robustez.
Portas 80TCP(HTTP[16]) 443(HTTPS[17])


Instalando:

#aptitude update; aptitude install apache2

Dia: 11/6/2010

Gerência de Rede

  • Instalação ambiente desktop LXDE
  • Configurado acesso remoto.

Devido a pouca experiência com o linux(shell) da maior parte dos integrantes da equipe e a praticidade de algumas ferramentas em ambiente gráfico(como mysql-admin/MySQL Query Browser. [18],IDE geany[19], wireshark[20]...) decidimos por instalar um ambiente desktop. Para não afetar o desempenho do sistema optou se pelo LXDE[21] por possuir uma boa gama de recursos e ser muito mais "leve" que outros ambientes disponíveis para linux como o gnome, KDE ou mesmo o XFCE.

Instalando:

#aptitude update; aptitude install lxde

SSH[22]: É um protocolo de rede que permite acesso remoto seguro(conexão entre cliente e servidor criptografada), Porta 22TCP.

Instalando e configurando o OpenSSH-Server[23]

# aptitude update; aptitude install openssh-server

Arquivo /etc/ssh/sshd_config: Neste arquivo de configuração do servidor ssh. Abaixo apenas os parâmetros a adicionar ou alterar.

#Lista de usuários que podem golar no servidor
AllowUsers nx cafeonline 
#porta na qual o serviço ficara ativo
Port 22
# Define se o usuario root podo acessar via ssh
PermitRootLogin no

NXServer[24]: software para acesso remoto ao ambiente gráfico X, apresenta a vantagem de usar o SSH(criptografia), interagir com o servidor X(ao invés de tirar screenshots como o VNC)e possuir um sistema de duplo cache[25](no cliente e servidor) o que diminui o volume de dados transmitidos. Porta 22TCP

Instalando o servidor: Fazer download do nx; client, node e server(é necessário a instalação dos três pacotes) em: http://www.nomachine.com/download-package.php?Prod_Id=1978 depois instale com(deve se instalar nessa ordem nxcliente nxnode nxserver ):

#cd diretorio-onde-salvou-os-pacotes
# dpkg -i nxclient_3.4.0-7_i386.deb nxnode_3.4.0-11_i386.deb nxserver_3.4.0-12_i386.deb

Screenshot acesso via nxclient ao servidor:

1nxclient.png

Link util: Usando o NX Server[26]

Gerência de Rede/Programação

  • Configurado scritp de backup/acesso automatizado ao servidor de backup externo

Scritp de backup: /var/backup/scripts/backup.sh programado via cron para executar todos os dias as 03:20(Três horas e vinte minutos).

Linha referente ao Backup no /etc/crontab:

#blablabla...

20 3    * * *   root    /var/backup/scripts/backup.sh  2>/var/backup/local/backup-exec.txt

#blablabla...

script de backup:

#!/bin/bash 
########################################################################################
########################################################################################
# O objetivo deste scritp e realizar backup do servidor em um diretório local, em DVD 
#e ainda enviar uma copia a um servidor remoto via ssh
#
#Escrito por: equipe cafeonline para  o projeto integrador do curso técnico
#em telecomunicações com enfase em redes  (erixtec@gmail.com)
#Ultima alteração em: 05/07/2010 para: Modificar acesso remoto, para usar o sshfs


######			Variáveis de uso geral 
###############################################

# Formata a  data utilizada para identificar quando o backup foi realizado
DATA=`date  +%d-%m-%Y-%H-%M`
# Diretorio onde sera feito o backup
DIRBKP=/var/backup/local
# Nome do arquivo compactado
NOMEARQUIVO=server-cafeonline-backup-local.tar.bz2



#####			Variáveis para gravação em DVD
######################################################

## Dispositivo usado para a gravação em /dev/dispositivo como em /dev/sr0
DEVICE=/dev/dvd
## Velovidade de gravação 
VELGRAV=4
## Diretorio a ser gravado
DIRGRAV=/var/backup/local



#####			Variáveis para backup remoto
#####################################################

## Servidor onde sera armazenado o backup
SERVERSSH=eris.dontexist.net
## Porta do SSH no servidor de backup
PORTSERVERSSH=22
## Usuario  usado para logar no servidor de backup
USERSSH=backup
## Diretorio Usado para armazenar o backup no servidor remoto
DIRREMOTO=/backup/server-cafeonline
##  Diretorio onde sera montado o diretório remoto a fim de receber o backup
DIRMNT=/mnt/backupremoto


#####################################################################
#####			Inicio do bakup				#####

# Cria o diretório de backup caso ele não exista
mkdir -p $DIRBKP
# Acessa o diretório
cd $DIRBKP 

echo "Backup $DATA iniciado" >$DIRBKP/log-backup.txt

## Cria o arquivo compactado de backup
tar -cvpjf  $NOMEARQUIVO --exclude=/lost+found/* --exclude=/dev/* --exclude=/sys/* \ 
 --exclude=/proc/* --exclude=/tmp/* --exclude=/var/tmp/*  --exclude=$DIRBKP  --exclude=/mnt/*  /



##############################################
#####		Gravar em DVD	         #####

## Fecha a "gaveta" da unidade de DVD caso esteja aberta
eject -t

## Coleta informações  da mídia 
#(algumas vezes a mídia não é reconhecida se não for executado este comando)
dvd+rw-mediainfo $DEVICE

## Formata DVD-RW (opções uteis -force, -lead-out)
dvd+rw-format -gui -blank  $DEVICE

sleep 5

# Iden acima para este comando
dvd+rw-mediainfo $DEVICE


## Grava os arquivos
echo "Gravação iniciada as $DATA " >>$DIRBKP/log-backup.txt
## grava o backup 
growisofs -speed=$VELGRAV -Z $DEVICE -R -J $DIRGRAV
sleep 5

echo "Gravação finalizada as $DATA" >>$DIRBKP/log-backup.txt
# Ejeta o  DVD
eject

##############################################
#####       Backup Remoto Via sshfs	 #####

## Monta o diretório remoto
sshfs $USERSSH@$SERVERSSH:$DIRREMOTO $DIRMNT -o reconnect,sshfs_sync,allow_other -p $PORTSERVERSSH

## Copia o backup
cp -v  $DIRBKP/$NOMEARQUIVO  $DIRMNT


sleep 5

fusermount -u $DIRMNT


exit 0

Para a conexão com o servidor remoto sera utilizado o software sshfs[27] que usa o protocolo SSH e o FUSE[28] para montar um diretório remoto de forma que para o usuário pareça um diretório Local, o que torna mais simples "movimentar" arquivos entre os servidores.

Instalando:

#aptitude update; aptitude install sshfs

Para automatizar o login no servidor de backup(permitir que o script o faça "sozinho") sera preciso configurar o openssh-server[29](no servidor que recebera o backup) para aceitar login sem pedir senha, usando no lugar um par de chaves criptográficas[30]

No servidor local como root(ja que é este usuário que executara o script via cron):

#ssh-keygen -t rsa
# scp ~/.ssh/id_rsa.pub backup@eris.dontexist.net:/backup
# chmod 700 ~/.ssh
# chmod 600 ~/.ssh/id_rsa

No servidor remoto:

backup@buxtehude ~]% cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
% rm -rf id_rsa.pub
% chmod 600 ~/.ssh/authorized_keys

Link's uteis: openssh manual [31], CentOS HowTos [32] --Eris 13:22, 5 Julho 2010 (BRT)

Dia 14/6/2010

Aula após o Intervalo, pois tivemos que apresentar um trabalho.

Instalação de Equipamento

  • Implantação dos Modems, como o cabo que interliga os laboratórios chega no RACK da direita, acabamos instalando todos os modems no mesmo lugar onde o fio chegava.
  • Rede interna: 192.168.100.0/24.

Cabeamento

  • Foi feito os Patch Cord.


Fotos certificação do Link físico

Roteador Cisco, Modem Parks e Modem Digitel.
Modems sincronizados
Link de 2Mbps certificado!
Link 64Kbps certificado!
Conexão Modem
Diagrama de interconexão física dos laboratórios.


Dia 15/6/2010

Instalação de Equipamento

  • Inicio das configurações dos modems.

Programação

  • Iniciamos a página de autenticação.

Cabeamento

  • Realizamos testes do link.
  • Apenas uma porta não funciona.

Gerência de Rede

  • Configurado DHCP

DHCP[33] (Dynamic Host Configuration Protocol, protocolo de configuração dinâmica de hosts) é um protocolo para configuração dinâmica de parâmetros de rede como endereço IP, DNS, Gateway etc. Porta 67/UDP.

Instalando:

# aptitude update; aptitude install dhcp3-server

Arquivo: /etc/dhcp3/dhcpd.conf configurações do servidor dhcp.

# Integração com os outros serviços
#
# Atualizar alguma informação com origem no DNS? Nenhuma (none).
ddns-update-style none;
#
# O 'log' das atividades do servidor serão registradas pela 'facility' local7 - arquivo /var/log/sys
log
log-facility local7;
 
# Rede interna:  192.168.100.0/24
subnet 192.168.100.0 netmask 255.255.255.0 {
   #
   # Faixa de IPs disponíveis
   range 192.168.100.2 192.168.100.253;
   #
   # Máscara de rede    
   option subnet-mask 255.255.255.0;
   #
   #Endereço de 'broadcast'
   option broadcast-address 192.168.100.255;
   #
   # Rotas
   option routers 192.168.100.1;
   #
   # Servidores e domínios DNS
   option domain-name-servers 192.168.100.1;
   option domain-name "cafeonline.sj.ifsc.edu.br";
 
   # Tempo predefinido e máximo de "aluguel" (lease): 4h e 1 dia respectivamente
   default-lease-time 14440;
   max-lease-time 86400;
}
  • Devido a problemas com os roteadores este serviço foi configurado no Access Point[34].

Como não sera mias necessário no servidor, foi feito backup do arquivo de configuração e desinstalação do serviço.

Backup do arquivo de configuração:

#cp /etc/dhcp3/dhcpd.conf /etc/dhcp3/dhcpd.conf-backup

Remoção do serviço:

#aptitude purge dhcp3-server

Dia 16/6/2010

Gerência de Rede

  • Squid e Dansguardian.

Squid[35] é um servidor proxy[36] e cache de paginas web. Porta 3128 TCP

Instalando:

# aptitude update; aptitude install squid3

Arquivo: /etc/squid3/squid.conf Principal arquivo de configuração

#blablabla...

#substituir http_port 3128, por: http_port 3128 transparent
http_port 3128 transparent

#blablabla...

visible_hostname www.cafeonline.sj.ifsc.edu.br

#blablabla...

Dansguardian[37] é um software para filtrar conteúdo web que funciona em conjunto com o squid, para a restringir o acesso a paginas web ou a conteúdo das mesmas, sera usado no projeto pois permite modificar o código das paginas acessadas através dele. Porta 8080 TCP

Instalando:

#aptitude update; aptitude install dansguardian

Arquivo: /etc/dansguardian/dansguardian.conf comentar a linha

#blablabla...

#comentar a linha abaixo
#UNCONFIGURED

#blablabla...

#alterar as mensagens para português do Brasil: 
language = 'ptbrazilian'

#blablabla...

Link's uteis: squid ninja[38] squid-cache brasil [39]

Dia 17/6/2010

Programação

  • Criação das tabelas no Mysql

Dia 18/6/2010 ao dia 24/6/2010

Programação

  • Andamento do Site


Dia 25/6/2010

Gerência de Rede

  • Email

Postfix [40] é um agente de transferência de emails (MTA)[41], um software livre para envio e entrega de emails[42]. Porta 25TCP(SMTP[43])

Instalando:

#aptitude update; aptitude install postfix

Arquivo: /etc/postfix/main.cf principal arquivo de configuração do postfix

myhostname = server.$mydomain
mydomain = cafeonline.sj.ifsc.edu.br
alias_maps = hash:/etc/aliases
alias_database = hash:/etc/aliases
myorigin = $mydomain
mydestination = $myhostname, $mydomain, mail.cafeonline.sj.ifsc.edu.br,  smtp.cafeonline.sj.ifsc.edu.br,  localhost.cafeonline.sj.ifsc.edu.br, localhost,  localhost.localdomain

relayhost =
mynetworks = 127.0.0.0/8 [::ffff:127.0.0.0]/104 [::1]/128
mailbox_size_limit = 0
recipient_delimiter = +
inet_interfaces = all


Dia 30/6/2010

Gerência de Rede

  • snmp

SNMP[44] (Simple Network Management Protocol - Protocolo Simples de Gerência de Rede) ele é usado para se obter de informação dos dispositivos na rede.
Portas: 161UDP/TCP 162UDP/TCP

Instalando:

#aptitude update; aptitude unstall  snmpd

Arquivo: /etc/snmp/snmpd.conf Principal arquivo de configuração.

rocommunity cafeonline
syslocation cafeonline-TI
syscontact root@cafeonline.sj.ifsc.edu.br
sysservices 72
  • cacti

Cacti[45] Cacti é uma ferramenta que recolhe e exibe informações sobre o estado de uma rede de computadores através de gráficos, usando como base o rrdtool[46]


Plugins: realtime :Permite gerar gráficos em tempo real thold: Permite enviar alertas em determinadas situações, por intermedio dos dados coletados pelo Cacti monitor: Permite monitorar um dispositivo discover: procura dispositivos com suporte a snmp na rede

Estes e outros plugins, bem como instruções para instalação estão disponíveis em: http://cactiusers.org/

Screenshots do Cacti no servidor:


1cacti.png

1cacti-monitor.png
2cacti.png
3cacti.png
2cacti-thold.png
1cacti-email.png


  • ntop

NTOP[47] e uma ferramenta para monitoramento do trafego na rede, que permite visulizar graficos detalhados via browser. Porta 3000 TCP

Instalando:

#aptitude  update; aptitude install ntop

para acessar digite do navegador: ip-do-servidor:3000

1ntop.png
2ntop.png
3ntop.png


  • iptraf

IPTRAF [48] É um analisador de trafego da rede com interface em "modo texto" TUI[49].

Instalando:

#aptitude update; install iptraf

para usar basta digitar iptraf como root no shell:

Iptraf.png

Dia 02/07/2010

  • configuração do Access Point Wireless

Marca/Modelo: Edimax[50] EW-7209APg[51] manual [52]

Configuração básica: Basic-setting.png

Configurações avançadas:

1advanced-settings.png

Configurações de segurança(desabilitado conforme especificação do projeto):

1security.png

Configurações de rede e dhcp:

1systemutility.png


Aplicação

Autenticação

  • Página principal do site (index.html):
<html>
<head>
	<title>Caf&eacute; On-line</title>
	<link rel="stylesheet" media="all" type="text/css" href="style.css" />
<body bgcolor="000000">
	<h1>Cadastros com Webmaster</h1>
	<p>webserver@cafeonline.sj.ifsc.edu.br</p>
	<p><a href="http://www.cafeonline.sj.ifsc.edu.br/autenticacao.php">Acesso Restrito</a></p>	
<center><img src="800x600.gif"></center>
</body>
</html>
  • Página de autenticação do admin (autenticacao.php):
<html>
<head>
        <title> Caf&eacute; On-line </title>
	<link rel="stylesheet" media="all" type="text/css" href="style.css" />        
</head>
<body>
        <h1><center> Autentica&ccedil;&atilde;o <center></h1>
        <form name="formulario" action="verificar.php" method="post">
                <p> Login: <br>
                <input type="text" name="login">
                <p> Senha: <br>
                <input type="password" name="senha"> <br>
                <input type="submit" name="b_enviar" value="Enviar" class="botoes" />
</body>
</html>
  • Página de verificação do login (verificar.php):
<?
	$admin = $_POST['login'];
	$senha = $_POST['senha'];

     if (($admin == 'admin') && ($senha == 'cafeonline')){
		session_start();
	 	$_SESSION['login'] = $admin;
		$_SESSION['senha'] = $senha;
		header("Location: listar.php");
         }else{
	    	header("Location: autenticacao.php");
         }
      
?>

Cadastro dos anúncios

  • Segue abaixo o código da página (cadastro.php) onde o admin digitará os dados do anúncio:
<?
	session_start();
	if(isset($_SESSION['login'])){
?>

<html>
<head>
   <title> Caf&eacute; On-line </title>
   <link rel="stylesheet" media="all" type="text/css" href="style.css" />	
</head>
<body bgcolor="000000" text="FFFFFF">
   <h1>Cadastro de an&uacute;ncios</h1>
   <a href="http://www.cafeonline.sj.ifsc.edu.br/sair">Sair</a>
   <table align=center>
	<tr>
		<form name="formTeste" action="add.php" method="post">
		<table>
			<tr><td>
				<p> T&iacute;tulo: <br>
				<input type:"text" name="titulo">
				<p> Nome do cliente: <br>
				<input type:"text" name="nome">
				<p> An&uacute;ncio: <br>
				<textarea rows="2" cols="20" name="texto"></textarea>
				<p> Link: <br>
				<input type:"text" name="link">
				<p> Expira em: <br>
				<input type:"text"name="validade"><br>
				<input type="submit" name="b_enviar" value="Gravar"><BR>
			</td><td>
				<img src="800x600.gif" border="0" width="600" height="400">
			</td></tr>
</body>
</html>

<?
	}else{
		header("Location: autenticacao.php");
}
?>


  • Depois de informados os dados do anúncio o admin é redirecionado para outra pagina onde será feita a conexão com o banco de dados mysql para inserir os dados nas tabelas.

Segue o código (add.php):

<?
        session_start();
        if(isset($_SESSION['login'])){
?>

<html>
<head>
	<meta http-equiv="content-Type" content="text/html; charset=iso-8859-1" />
	<link rel="stylesheet" media="all" type="text/css" href="style.css" />
	<title>Caf&eacute; On-line</title>
</head>
<body bgcolor="000000" text="FFFFFF">
<?

  $titulo=$_POST['titulo'] ;
  $nome=$_POST['nome'] ;
  $texto=$_POST['texto'] ;
  $link=$_POST['link'] ;
  $validade=$_POST['validade'] ;

  if (!empty ($titulo) && !empty ($nome) && !empty ($texto) && !empty ($link) && !empty ($validade))
  {
	$conexao = mysql_connect("localhost","root","cafeonline") ;
	$base_ok = mysql_select_db("cafeonline",$conexao) or die ("erro 1");
	$inserir = "INSERT INTO anuncio (NOMECLIENTE, NOMEANUNCIO, TEXTO, LINK, VALIDADE) VALUES ('$nome', '$titulo', '$texto', '$link', '$validade')";
	$cadastrar = mysql_query($inserir,$conexao) or die("erro 2");
	mysql_close($conexao) or die("Erro fechar conexao");
	if($cadastrar==true)
	{
		echo "<h2>An&uacute;ncio cadastrado com sucesso <br></h2>";	
		echo "<a href='http://www.cafeonline.sj.ifsc.edu.br/listar>Ir para lista de an&uacute;ncios</a>";
	}else
	{
		echo "Erro ao cadastrar an&uacute;ncio";
		echo "<a href='http://www.cafeonline.sj.ifsc.edu.br/listar>Ir para lista de anúncios</a>";
	}
  }else
  {
	  echo "<h2>Erro, campos vazios<br></h2>";
	  echo "<a href='http://www.cafeonline.sj.ifsc.edu.br/cadastro'>Voltar para cadastro</a>";
  }
header("Content-Type: text/html; charset=ISO-8859-1", true);
?>
</body>
</html>

<?
        }else
        {
                header("Location: autenticacao.php");
		}
?>

Listagem de anúncios

  • Na página listar.php é feita a conexão com o banco de dados e também a consulta nas tabelas, para fazer a listagem dos anúncios ja cadastrados, e através dessa página pode-se selecionar um anúncio o qual deseja editar ou excluir. Segue o código (listar.php):
<?
	session_start();
	if (isset($_SESSION['login'])){
?>
<html>
<head>
	<meta http-equiv="content-Type" content="text/html; charset=iso-8859-1" />
	<link rel="stylesheet" media="all" type="text/css" href="style.css" />
	<title> Caf&eacute; On-line </title>
</head>
<body bgcolor="000000" text="FFFFFF">
	<h1>Listagem de an&uacute;ncios</h1>
	<a href="http://www.cafeonline.sj.ifsc.edu.br/sair">Sair</a>
	<table><tr><td valign="top">
<?
$conexao = mysql_connect("localhost","root","cafeonline") or die ("ERRO");
if($conexao) // se $conexao é true, ou seja, conectou ao banco de dados, seleciona com qual banco deseja trabalhar.
{
	mysql_select_db("cafeonline") or die ("erro 1"); //seleciona qual o banco
	$query = "SELECT * FROM anuncio" or die ("erro 2"); //seleciona tudo (*), de uma tabela chamada anuncio
	$dados = mysql_query($query,$conexao) or die ("erro 3");

	echo "<table class='stats'>";
	echo "<th>Nome do cliente</th>";
	echo "<th>T&iacute;tulo do an&uacute;ncio</th>";
	echo "<th>Visitas</th>";
	echo "<th>Validade</th>";
	echo "<th>A&ccedil;&otilde;es</th>";
	 
	while($linha=mysql_fetch_array($dados,MYSQL_ASSOC))
	{
		$id = $linha["IDANUNCIO"];	
		echo "<tr><td>" . $linha["NOMECLIENTE"] . "</td>" ;
		echo "<td>" . $linha["NOMEANUNCIO"] . "</td>" ;
		echo "<td>" . $linha["VISITAS"] . "</td>" ;
		echo "<td>" . $linha["VALIDADE"] . "</td>" ;
		echo "<td><a href='excluir.php?id=$id' style='text-decoration:none'>Excluir&nbsp;&nbsp;</a>";
		echo "<a href='editar.php?id=$id' style='text-decoration:none'>Editar</a></td></tr>";
	}
	echo "</table>";
	echo "<center><a href='http://www.cafeonline.sj.ifsc.edu.br/cadastro'>Incluir novo an&uacute;ncio</a></center>";
	mysql_close($conexao) or die ("erro 5");
}
header("Content-Type: text/html; charset=ISO-8859-1", true); 
?>
</td><td>
<img src="800x600.gif" border="0" width="600" height="400" align="right"></td></tr></table>
</body>
</html>

<?
	}else{
		header("Location: autenticacao.php");
	}
?>


Editando e atualizando os anúncios

  • Depois de selecionado um anúncio na página de listagem o admin é direcionado para a página de edição de anúncios. E então são mostrados os dados que já estão cadastrados do anúncio selecionado, podendo alterar o que desejar e depois apertando no botão gravar que é direcionado para a página onde será feita a atualização do banco de dados.

Segue o código da página de edição de anúncios (editar.php):

<?
	session_start();
	if(isset($_SESSION['login'])){
?>

<html>
<head>
	<meta http-equiv="content-Type" content="text/html; charset=iso-8859-1" />
	<link rel="stylesheet" media="all" type="text/css" href="style.css" />
	<title> Caf&eacute; On-line </title>
</head>
<body bgcolor="000000" text="FFFFFF">
  <h1>Editar an&uacute;ncio </h1>
  <a href="http://www.cafeonline.sj.ifsc.edu.br/sair">Sair</a>
  
<?	
	$id = $_GET['id'];
	$conexao = mysql_connect("localhost","root","cafeonline") ;
	mysql_select_db("cafeonline") or die ("erro 1");
	$query = ("select * from anuncio where IDANUNCIO=$id");
	$dados = mysql_query($query,$conexao);
	$linha=mysql_fetch_array($dados,MYSQL_ASSOC);
	mysql_query($linha);
	header("Content-Type: text/html; charset=ISO-8859-1", true);
?>
  <form name="formTeste" action="add2.php?id=<? echo $id ?>" method="post">
	<table>
	   <tr><td>
  		<p> T&iacute;tulo: <br>
  		<input type:"text" name="titulo" value="<? echo  $linha['NOMEANUNCIO']  ?>">
  		<p> Nome do cliente: <br>
  		<input type:"text" name="nome" value="<? echo  $linha['NOMECLIENTE']  ?>">
  		<p> An&uacute;ncio: <br>
  		<textarea rows="2" cols="20" name="texto"><? echo  $linha['TEXTO']  ?></textarea>
  		<p> Link: <br>
  		<input type:"text" name="link" value="<? echo  $linha['LINK']  ?>">
  		<p> Expira em: <br>
  		<input type:"text"name="validade" value="<? echo  $linha['VALIDADE']  ?>">
  		<p> An&uacute;ncio expirado?
  		<?$data = date("Y-m-d");
		$timestamp1 = strtotime($linha['VALIDADE']);
		$timestamp2 = strtotime($data);
		if ($timestamp1 < $timestamp2){
			echo "Sim<br>";
		}else{
			echo "N&atilde;o<br>";
		}
		?>
		<input type="submit" name="b_enviar" value="Gravar"><BR>
	   </td><td>
	    <img src="800x600.gif" border="0" width="600" height="400">
       </td></tr>
</body>
</html>

<?
	}else{
		header("Location: autenticacao.php");
	}
?>


  • Código onde é feita a atualização do banco de dados (add2.php):
<?
        session_start();
        if(isset($_SESSION['login'])){
?>

<html>
<head>
	<meta http-equiv="content-Type" content="text/html; charset=iso-8859-1" />
	<link rel="stylesheet" media="all" type="text/css" href="style.css" />
	<title>Caf&eacute; On-line</title>
</head>
<body bgcolor="000000" text="FFFFFF">
<?
	$conexao = mysql_connect("localhost","root","cafeonline") ;
	$base_ok = mysql_select_db("cafeonline",$conexao);
	$id = $_GET['id'];
	$titulo=$_POST['titulo'] ;
	$nome=$_POST['nome'] ;
	$texto=$_POST['texto'] ;
	$link=$_POST['link'] ;
	$validade=$_POST['validade'] ;
	
	if (!empty ($titulo) && !empty ($nome) && !empty ($texto) && !empty ($link) && !empty ($validade))
	{
		$update=mysql_query("UPDATE anuncio SET NOMECLIENTE='$nome', NOMEANUNCIO='$titulo', TEXTO='$texto', LINK='$link', VALIDADE='$validade' WHERE IDANUNCIO='$id'");
		if($update==true)
		{
			echo "<h2>Dados atualizados com sucesso <br></h2>";	
			echo "<a href='http://www.cafeonline.sj.ifsc.edu.br/listar>Ir para lista de an&uacute;ncios</a>";
		}else
		{
			echo "Erro ao Atualizar";
			"<a href='http://www.cafeonline.sj.ifsc.edu.br/listar>Ir para lista de an&uacutencios</a>";
		}
	}else
	{
		echo "<h2>Erro, campos vazios<br></h2>";
		echo "<a href='http://www.cafeonline.sj.ifsc.edu.br/listar'>Voltar para lista de an&uacute;ncios</a>";
	}
header("Content-Type: text/html; charset=ISO-8859-1", true);
?>
</body>
</html>

<?
        }else
        {
                header("Location: autenticacao.php");
		}
?>


Excluindo anúncios

Segue o código da página para exclusão de anúncios (excluir.php):

<?
	session_start();
	if(isset($_SESSION['login'])){
?>

<html>
<head>
	<meta http-equiv="content-Type" content="text/html; charset=iso-8859-1" />
	<link rel="stylesheet" media="all" type="text/css" href="style.css" />
	<title>Caf&eacute; On-line</title>
</head>
<body bgcolor="000000" text="FFFFFF">

<?
$conexao = mysql_connect("localhost","root","cafeonline") ;
$base_ok = mysql_select_db("cafeonline",$conexao) or die ("erro 1");
$id=$_GET["id"]; 
$query = mysql_query("delete from anuncio where IDANUNCIO='$id'");
mysql_query($query);

if ($query==true)
{
	echo "<h2>An&uacute;ncio exlcluido<br></h2>";
	echo "<a href='http://www.cafeonline.sj.ifsc.edu.br/listar>Voltar para lista de an&uacute;ncios</a>";
}else{
	echo "Erro ao excluir anúncio";
	echo "<a href='http://www.cafeonline.sj.ifsc.edu.br/listar>Voltar para lista de anúncios</a>";
}
header("Content-Type: text/html; charset=ISO-8859-1", true);
?>
</body>
</html>

<?
	}else{
                header("Location: autenticacao.php");
	}
?>

Botão sair

  • Nas páginas de listagem, cadastro e edição foram colocados links para o usuario sair da seção(sair.php):
<?
	session_start(); //iniciamos a sessão que foi aberta
	session_destroy(); //destruimos a sessão
	session_unset(); //limpamos as variaveis globais das sessões
	header("Location: autenticacao.php");
?>

CSS usado para estilo das páginas

  • Segue o código css para a estilização das páginas (style.css):
body {
	margin: 0;
	padding: 0;
	background: #000000;
	font-family: Arial, Helvetica, sans-serif;
	font-size: 12px;
	color: #CFCFCF;
}

h1, h2, h3 {
	margin: 0;
	padding: 0;
	font-weight: normal;
	color: #E8E8E8;
}

h1 {
	font-size: 2em;
}

h2 {
	font-size: 2.4em;
}

h3 {
	font-size: 1.6em;
}

p, ul, ol {
	margin-top: 0;
	line-height: 180%;
}

a {
	text-decoration: none;
	color: #860B28;
}

table.stats th
{text-align: center;
font-family: Verdana, Geneva, Arial, Helvetica, sans-serif ;
font-weight: negrit;
font-size: 14px;
color: #fff;
width: 280px;
background-color: #000;
border: 1px solid;
border-collapse: collapse;
border-spacing: 1px;}

table.stats td
{background-color: #000;
color: #fff;
padding: 4px;
text-align: left;
border: 1px #fff solid;}


  • Segue o código do banner que ficará localizado no topo da página (banner.php):
<?

$conexao = mysql_connect("localhost","root","cafeonline") or die ("ERRO");
if($conexao) // se $conexao é true, ou seja, conectou ao banco de dados, seleciona com qual banco deseja trabalhar.
{
	mysql_select_db("cafeonline") or die ("erro 1"); //seleciona qual o banco
	$query = "SELECT * FROM anuncio" or die ("erro 2"); //seleciona tudo (*), de uma tabela chamada anuncio
	$dados = mysql_query($query,$conexao) or die ("erro 3");
	$linhas = mysql_num_rows($dados);
	$linhas--;
	$aleatorio = rand(0, $linhas);
	mysql_data_seek($dados, $aleatorio);
	$imprimir = mysql_fetch_array($dados,MYSQL_ASSOC);
	
	$tempo_atual = date("Y-n-j");
	$verificar_exp = (strtotime($tempo_atual)-strtotime($imprimir["VALIDADE"]));
	
	if($verificar_exp < 0){
		
// definindo as dimensoes da imagem: largura , altura
$imagem = imagecreate( 800, 70 );
 
// definindo a cor de fundo e do texto
$fundo = imagecolorallocate( $imagem, 0, 0, 0 );
$corTexto = imagecolorallocate( $imagem, 255, 255, 255 );
 
// cor de uma linha
$corLinha = imagecolorallocate( $imagem, 255, 48, 48  );
 
imagettftext($imagem, 12, 0, 10, 18, $corTexto, "/usr/share/fonts/truetype/ttf-dejavu/DejaVuSans.ttf", $imprimir["NOMEANUNCIO"]);
// Configuração da função imagettftext(imagem,tamanho,ângulo,X,Y,cor,arquivo da fonte,texto)
imagettftext($imagem, 9, 0, 10, 43, $corTexto, "/usr/share/fonts/truetype/ttf-dejavu/DejaVuSans.ttf", $imprimir["TEXTO"]);

// desenhando uma linha de largura 2px abaixo do texto
imagesetthickness ( $imagem, 2 );
imageline( $imagem, 5, 25, 790, 25, $corLinha );
 
// gravando o arquivo no subdiretorio site
// o usuario www-data deve ter permissao de escrita neste diretorio
imagepng( $imagem, "/var/www/site/propaganda.png" );
 
// retirando a figura da memoria
imagedestroy( $imagem );

//contador
$atualiza = "update id set propaganda = '$imprimir[IDANUNCIO]'";
mysql_query($atualiza,$conexao) or die ("erro 3");	
 	
	}
}
?>

Contador de visitas

  • Segue código do contador de visitas (cont.php), que quando o cliente clica no banner incrementa mais uma visita na coluna VISITAS do banco de dados, e através deste código que o cliente é redirecionado para a página do banner.
<?
$action = $_GET['action'];
if ($action == "go") {
	$conexao = mysql_connect("localhost","root","cafeonline") or die ("ERRO");
	if($conexao) 
	{
		mysql_select_db("cafeonline") or die ("erro 1"); //seleciona qual o banco
		$query = "select propaganda from id" or die ("erro 2"); //seleciona  coluna propaganda da tabela id
		$dados = mysql_query($query,$conexao) or die ("erro 3"); 
		$imprimir = mysql_fetch_array($dados,MYSQL_ASSOC); //pega a linha inteira
	
		$query2 = "select * from anuncio where IDANUNCIO='$imprimir[propaganda]'"; //seleciona tudo da tabela anuncio onde IDANUNCIO é igual ao id da propaganda
		$dados2 = mysql_query($query2,$conexao) or die ("erro 4");
		$imprimir2 = mysql_fetch_array($dados2, MYSQL_ASSOC);
		
		$visitas = $imprimir2['VISITAS'];
		$visitas++;
		
		$query3 = "update anuncio set VISITAS='$visitas' where IDANUNCIO='$imprimir[propaganda]'"; //atualiza na tabela anuncio a coluna VISITAS
		mysql_query($query3,$conexao) or die ("erro 5"); 
        header("Location: $imprimir2[LINK]");
	}
}
?>