Mudanças entre as edições de "Projeto Integrador - 2010.1 - Equipe Café On-Line"
(Corrigido o realce de sintaxe) |
|||
(37 revisões intermediárias por 3 usuários não estão sendo mostradas) | |||
Linha 67: | Linha 67: | ||
</syntaxhighlight> | </syntaxhighlight> | ||
− | Utilizamos a Distribuição Ubuntu Server LTS. por ser a de maior familiaridade entre os integrantes da equipe e na "versão" LTS por ter suporte por um período de tempo maior que as demais versões do Ubuntu, possibilitando que a | + | Utilizamos a Distribuição Ubuntu Server 10.04 LTS[http://www.ubuntu.com/server]. por ser a de maior familiaridade entre os integrantes da equipe e na "versão" LTS[https://wiki.ubuntu.com/LTS] 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: | Particionamento usado: | ||
Linha 79: | Linha 79: | ||
</syntaxhighlight> | </syntaxhighlight> | ||
*Rede cafeonline: | *Rede cafeonline: | ||
+ | |||
Rede externa: | Rede externa: | ||
− | < | + | <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 | ||
Gateway:200.135.37.126 | Gateway:200.135.37.126 | ||
</syntaxhighlight> | </syntaxhighlight> | ||
+ | |||
Rede interna: | Rede interna: | ||
− | < | + | <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 | ||
− | Gateway: | + | Gateway:192.168.100.254 |
</syntaxhighlight> | </syntaxhighlight> | ||
+ | |||
+ | Rede Wireless(Acces Point): | ||
+ | <syntaxhighlight lang=lang="html4strict"> | ||
+ | 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 | ||
+ | </syntaxhighlight> | ||
+ | |||
+ | |||
*configuração de rede | *configuração de rede | ||
Arquivo '''/etc/network/interfaces''': Arquivo de configuração das interfaces de rede | Arquivo '''/etc/network/interfaces''': Arquivo de configuração das interfaces de rede | ||
− | < | + | <syntaxhighlight lang=lang="html4strict"> |
auto lo | auto lo | ||
Linha 121: | Linha 132: | ||
network 192.168.100.0 | network 192.168.100.0 | ||
broadcast 192.168.100.255 | broadcast 192.168.100.255 | ||
+ | post-up route add -net 192.168.200.0/24 gw 192.168.100.254 | ||
</syntaxhighlight> | </syntaxhighlight> | ||
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. | ||
− | < | + | <syntaxhighlight lang=lang="html4strict"> |
nameserver 127.0.0.1 | nameserver 127.0.0.1 | ||
Linha 134: | Linha 146: | ||
Instalando | Instalando | ||
− | < | + | <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''': | ||
− | < | + | <syntaxhighlight lang=lang="html4strict"> |
#!/bin/sh | #!/bin/sh | ||
Linha 175: | Linha 187: | ||
Iniciar o script junto com o sistema | Iniciar o script junto com o sistema | ||
− | < | + | <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 214: | Linha 226: | ||
*Instalando e configurando | *Instalando e configurando | ||
− | < | + | <syntaxhighlight lang=lang="html4strict"> |
#aptitude update; aptitude install ntp | #aptitude update; aptitude install ntp | ||
Linha 222: | 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. | ||
− | < | + | <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 | ||
− | # | + | #servidor da rnp |
server ntp.cais.rnp.br | server ntp.cais.rnp.br | ||
#servidor "a" do observatório nacional | #servidor "a" do observatório nacional | ||
Linha 234: | Linha 246: | ||
#Restringe o acesso ao servidor ntp apenas a dispositivos da rede local | #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.100.0 mask 255.255.255.0 nomodify notrap | ||
+ | restrict 192.168.200.0 mask 255.255.255.0 nomodify notrap | ||
# blablabla... | # blablabla... | ||
</syntaxhighlight> | </syntaxhighlight> | ||
Linha 248: | 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]) | ||
− | < | + | <syntaxhighlight lang=lang="html4strict"> |
*Instalar | *Instalar | ||
Linha 255: | 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. | ||
− | < | + | <syntaxhighlight lang=lang="html4strict"> |
options { | options { | ||
Linha 273: | 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. | ||
− | < | + | <syntaxhighlight lang=lang="html4strict"> |
... | ... | ||
zone "cafeonline.sj.ifsc.edu.br" { | zone "cafeonline.sj.ifsc.edu.br" { | ||
Linha 288: | 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 | ||
− | < | + | <syntaxhighlight lang=lang="html4strict"> |
$TTL 86400 | $TTL 86400 | ||
Linha 316: | 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 | ||
− | < | + | <syntaxhighlight lang=lang="html4strict"> |
$TTL 86400 | $TTL 86400 | ||
Linha 341: | Linha 354: | ||
===Cabeamento=== | ===Cabeamento=== | ||
* Verificamos a parte dos Patch Panel, apenas uma porta não funciona. | * Verificamos a parte dos Patch Panel, apenas uma porta não funciona. | ||
+ | ===Gerência de Rede=== | ||
+ | *servidor web apache2 | ||
+ | O apache[http://httpd.apache.org/] e um servidor de paginas web amplamente utilizado mundo afora por sua flexibilidade e robustez.<br> | ||
+ | Portas 80TCP(HTTP[http://pt.wikipedia.org/wiki/Hypertext_Transfer_Protocol]) 443(HTTPS[http://pt.wikipedia.org/wiki/HTTPS]) | ||
+ | |||
+ | Instalando: | ||
+ | <syntaxhighlight lang=lang="html4strict"> | ||
+ | #aptitude update; aptitude install apache2 | ||
+ | </syntaxhighlight> | ||
==Dia: 11/6/2010== | ==Dia: 11/6/2010== | ||
===Gerência de Rede=== | ===Gerência de Rede=== | ||
+ | *Instalação ambiente desktop LXDE | ||
* Configurado acesso remoto. | * 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. [http://dev.mysql.com/doc/query-browser/pt/index.html],IDE geany[http://www.geany.org/], wireshark[http://www.wireshark.org/]...) decidimos por instalar | ||
+ | um ambiente desktop. Para não afetar o desempenho do sistema optou se pelo LXDE[http://lxde.org/pt-br] 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. <br> | ||
+ | |||
+ | Instalando: | ||
+ | <syntaxhighlight lang=lang="html4strict"> | ||
+ | #aptitude update; aptitude install lxde | ||
+ | </syntaxhighlight> | ||
SSH[http://en.wikipedia.org/wiki/Secure_Shell]: É um protocolo de rede que permite acesso remoto seguro(conexão entre cliente e servidor criptografada), Porta 22TCP. | SSH[http://en.wikipedia.org/wiki/Secure_Shell]: É um protocolo de rede que permite acesso remoto seguro(conexão entre cliente e servidor criptografada), Porta 22TCP. | ||
Linha 353: | Linha 384: | ||
Instalando e configurando o OpenSSH-Server[http://www.openssh.com/] | Instalando e configurando o OpenSSH-Server[http://www.openssh.com/] | ||
− | < | + | <syntaxhighlight lang=lang="html4strict"> |
# aptitude update; aptitude install openssh-server | # aptitude update; aptitude install openssh-server | ||
Linha 361: | 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. | ||
− | < | + | <syntaxhighlight lang=lang="html4strict"> |
− | #Lista de usuários que podem | + | #Lista de usuários que podem golar no servidor |
AllowUsers nx cafeonline | AllowUsers nx cafeonline | ||
#porta na qual o serviço ficara ativo | #porta na qual o serviço ficara ativo | ||
Linha 370: | Linha 401: | ||
</syntaxhighlight> | </syntaxhighlight> | ||
+ | |||
+ | NXServer[http://www.nomachine.com/products.php]: 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[http://en.wikipedia.org/wiki/NX_technology](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 ): | ||
+ | <syntaxhighlight lang=lang="html4strict"> | ||
+ | #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 | ||
+ | </syntaxhighlight> | ||
+ | |||
+ | Screenshot acesso via nxclient ao servidor: | ||
+ | |||
+ | [[Imagem:1nxclient.png]] | ||
+ | |||
+ | Link util: Usando o NX Server[http://www.guiadohardware.net/tutoriais/nx-server/] | ||
===Gerência de Rede/Programação=== | ===Gerência de Rede/Programação=== | ||
* Configurado scritp de backup/acesso automatizado ao servidor de backup externo | * Configurado scritp de backup/acesso automatizado ao servidor de backup externo | ||
− | Scritp de backup: | + | 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''': |
+ | |||
+ | <syntaxhighlight lang=lang="html4strict"> | ||
+ | #blablabla... | ||
+ | |||
+ | 20 3 * * * root /var/backup/scripts/backup.sh 2>/var/backup/local/backup-exec.txt | ||
+ | |||
+ | #blablabla... | ||
+ | </syntaxhighlight> | ||
+ | |||
+ | script de backup: | ||
+ | <syntaxhighlight lang=lang="html4strict"> | ||
#!/bin/bash | #!/bin/bash | ||
Linha 493: | Linha 553: | ||
</syntaxhighlight> | </syntaxhighlight> | ||
− | Para a conexão com o servidor remoto sera utilizado o software sshfs[http://fuse.sourceforge.net/sshfs.html] que usa o protocolo SSH e o FUSE[http://fuse.sourceforge.net/] para montar um diretório remoto de forma que para o usuário pareça um diretório Local, o que torna mais simples | + | Para a conexão com o servidor remoto sera utilizado o software sshfs[http://fuse.sourceforge.net/sshfs.html] que usa o protocolo SSH e o FUSE[http://fuse.sourceforge.net/] 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: | Instalando: | ||
− | < | + | <syntaxhighlight lang=lang="html4strict"> |
#aptitude update; aptitude install sshfs | #aptitude update; aptitude install sshfs | ||
</syntaxhighlight> | </syntaxhighlight> | ||
Linha 502: | 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): | ||
− | < | + | <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 509: | Linha 569: | ||
</syntaxhighlight> | </syntaxhighlight> | ||
No servidor remoto: | No servidor remoto: | ||
− | < | + | <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 559: | Linha 619: | ||
===Gerência de Rede=== | ===Gerência de Rede=== | ||
* Configurado DHCP | * Configurado DHCP | ||
+ | '''DHCP'''[http://en.wikipedia.org/wiki/DHCP] (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: | ||
+ | <syntaxhighlight lang=lang="html4strict"> | ||
+ | # aptitude update; aptitude install dhcp3-server | ||
+ | </syntaxhighlight> | ||
+ | |||
+ | Arquivo: '''/etc/dhcp3/dhcpd.conf''' configurações do servidor dhcp. | ||
+ | |||
+ | <syntaxhighlight lang=lang="html4strict"> | ||
+ | |||
+ | # 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; | ||
+ | } | ||
+ | |||
+ | </syntaxhighlight> | ||
+ | |||
+ | *Devido a problemas com os roteadores este serviço foi configurado no Access Point[http://wiki.sj.ifsc.edu.br/index.php/Projeto_Integrador_-_2010.1_-_Equipe_Café_On-Line#Dia_02.2F07.2F2010]. | ||
+ | |||
+ | 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: | ||
+ | <syntaxhighlight lang=lang="html4strict"> | ||
+ | #cp /etc/dhcp3/dhcpd.conf /etc/dhcp3/dhcpd.conf-backup | ||
+ | </syntaxhighlight> | ||
+ | |||
+ | Remoção do serviço: | ||
+ | |||
+ | <syntaxhighlight lang=lang="html4strict"> | ||
+ | #aptitude purge dhcp3-server | ||
+ | </syntaxhighlight> | ||
==Dia 16/6/2010== | ==Dia 16/6/2010== | ||
===Gerência de Rede=== | ===Gerência de Rede=== | ||
− | * | + | * Squid e Dansguardian. |
− | |||
− | --[[ | + | Squid[http://www.squid-cache.org/] é um servidor proxy[http://pt.wikipedia.org/wiki/Proxy] e cache de paginas web. |
+ | Porta 3128 TCP | ||
+ | |||
+ | Instalando: | ||
+ | <syntaxhighlight lang=lang="html4strict"> | ||
+ | # aptitude update; aptitude install squid3 | ||
+ | </syntaxhighlight> | ||
+ | Arquivo: '''/etc/squid3/squid.conf''' Principal arquivo de configuração | ||
+ | <syntaxhighlight lang=lang="html4strict"> | ||
+ | #blablabla... | ||
+ | |||
+ | #substituir http_port 3128, por: http_port 3128 transparent | ||
+ | http_port 3128 transparent | ||
+ | |||
+ | #blablabla... | ||
+ | |||
+ | visible_hostname www.cafeonline.sj.ifsc.edu.br | ||
+ | |||
+ | #blablabla... | ||
+ | </syntaxhighlight> | ||
+ | |||
+ | Dansguardian[http://dansguardian.org/] é 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: | ||
+ | <syntaxhighlight lang=lang="html4strict"> | ||
+ | #aptitude update; aptitude install dansguardian | ||
+ | </syntaxhighlight> | ||
+ | Arquivo: '''/etc/dansguardian/dansguardian.conf''' comentar a linha | ||
+ | <syntaxhighlight lang=lang="html4strict"> | ||
+ | #blablabla... | ||
+ | |||
+ | #comentar a linha abaixo | ||
+ | #UNCONFIGURED | ||
+ | |||
+ | #blablabla... | ||
+ | |||
+ | #alterar as mensagens para português do Brasil: | ||
+ | language = 'ptbrazilian' | ||
+ | |||
+ | #blablabla... | ||
+ | |||
+ | </syntaxhighlight> | ||
+ | |||
+ | Link's uteis: squid ninja[http://www.linuxman.pro.br/squid/] squid-cache brasil [http://www.squid-cache.org.br/] | ||
+ | |||
+ | ==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 [http://www.postfix.org/] é um agente de transferência de emails (MTA)[http://pt.wikipedia.org/wiki/MTA], um software livre para envio e entrega de emails[http://pt.wikipedia.org/wiki/Postfix]. | ||
+ | Porta 25TCP(SMTP[http://pt.wikipedia.org/wiki/Simple_Mail_Transfer_Protocol]) | ||
+ | |||
+ | Instalando: | ||
+ | <syntaxhighlight lang=lang="html4strict"> | ||
+ | |||
+ | #aptitude update; aptitude install postfix | ||
+ | |||
+ | </syntaxhighlight> | ||
+ | |||
+ | Arquivo: '''/etc/postfix/main.cf''' principal arquivo de configuração do postfix | ||
+ | |||
+ | <syntaxhighlight lang=lang="html4strict"> | ||
+ | |||
+ | 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 | ||
+ | |||
+ | </syntaxhighlight> | ||
+ | |||
+ | |||
+ | ==Dia 30/6/2010== | ||
+ | ===Gerência de Rede=== | ||
+ | *snmp | ||
+ | SNMP[http://pt.wikipedia.org/wiki/Simple_Network_Management_Protocol] (Simple Network Management Protocol - Protocolo Simples de Gerência de Rede) ele é usado para se obter de informação dos dispositivos na rede.<br> | ||
+ | Portas: 161UDP/TCP 162UDP/TCP | ||
+ | |||
+ | Instalando: | ||
+ | <syntaxhighlight lang=lang="html4strict"> | ||
+ | #aptitude update; aptitude unstall snmpd | ||
+ | </syntaxhighlight> | ||
+ | |||
+ | Arquivo: '''/etc/snmp/snmpd.conf''' Principal arquivo de configuração. | ||
+ | |||
+ | <syntaxhighlight lang=lang="html4strict"> | ||
+ | |||
+ | rocommunity cafeonline | ||
+ | syslocation cafeonline-TI | ||
+ | syscontact root@cafeonline.sj.ifsc.edu.br | ||
+ | sysservices 72 | ||
+ | |||
+ | </syntaxhighlight> | ||
+ | |||
+ | *cacti | ||
+ | Cacti[http://www.cacti.net/] 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[http://oss.oetiker.ch/rrdtool/] | ||
+ | |||
+ | |||
+ | 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: | ||
+ | |||
+ | |||
+ | [[Imagem:1cacti.png]]<br> | ||
+ | |||
+ | [[Imagem:1cacti-monitor.png]]<br> | ||
+ | [[Imagem:2cacti.png]]<br> | ||
+ | [[Imagem:3cacti.png]]<br> | ||
+ | [[Imagem:2cacti-thold.png]]<br> | ||
+ | [[Imagem:1cacti-email.png]]<br> | ||
+ | |||
+ | |||
+ | *ntop | ||
+ | NTOP[http://www.ntop.org] e uma ferramenta para monitoramento do trafego na rede, que permite visulizar graficos detalhados via browser. | ||
+ | Porta 3000 TCP | ||
+ | |||
+ | Instalando: | ||
+ | <syntaxhighlight lang=lang="html4strict"> | ||
+ | #aptitude update; aptitude install ntop | ||
+ | </syntaxhighlight> | ||
+ | |||
+ | para acessar digite do navegador: ip-do-servidor:3000 | ||
+ | |||
+ | [[Imagem:1ntop.png]]<br> | ||
+ | [[Imagem:2ntop.png]]<br> | ||
+ | [[Imagem:3ntop.png]]<br> | ||
+ | |||
+ | |||
+ | |||
+ | *iptraf | ||
+ | IPTRAF [http://iptraf.seul.org/] É um analisador de trafego da rede com interface em "modo texto" TUI[http://en.wikipedia.org/wiki/Text_user_interface]. | ||
+ | |||
+ | Instalando: | ||
+ | <syntaxhighlight lang=lang="html4strict"> | ||
+ | #aptitude update; install iptraf | ||
+ | </syntaxhighlight> | ||
+ | para usar basta digitar iptraf como root no shell: | ||
+ | |||
+ | [[Imagem:Iptraf.png]] | ||
+ | |||
+ | ==Dia 02/07/2010== | ||
+ | *configuração do Access Point Wireless | ||
+ | Marca/Modelo: Edimax[http://www.edimaxbrasil.com.br/pt/index.php] EW-7209APg[http://www.edimaxbrasil.com.br/pt/produce_detail.php?pd_id=19&pl1_id=1&pl2_id=5] manual [http://www.edimax.com/images/Image/manual/Wireless/EW-7209APg/EW-7209APg-Manual_080919.zip] | ||
+ | |||
+ | '''Configuração básica:''' | ||
+ | [[Imagem:Basic-setting.png]] | ||
+ | |||
+ | '''Configurações avançadas:''' | ||
+ | |||
+ | [[Imagem:1advanced-settings.png]] | ||
+ | |||
+ | '''Configurações de segurança(desabilitado conforme especificação do projeto):''' | ||
+ | |||
+ | [[Imagem:1security.png]] | ||
+ | |||
+ | '''Configurações de rede e dhcp:''' | ||
+ | |||
+ | [[Imagem:1systemutility.png]] | ||
==Aplicação== | ==Aplicação== | ||
− | === | + | ===Autenticação=== |
− | * | + | *Página principal do site (index.html): |
− | ( | + | |
+ | <syntaxhighlight lang=lang="html4strict"> | ||
+ | |||
+ | <html> | ||
+ | <head> | ||
+ | <title>Café 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> | ||
+ | |||
+ | |||
+ | </syntaxhighlight> | ||
+ | |||
+ | *Página de autenticação do admin (autenticacao.php): | ||
+ | |||
+ | <syntaxhighlight lang=lang="php"> | ||
+ | |||
+ | <html> | ||
+ | <head> | ||
+ | <title> Café On-line </title> | ||
+ | <link rel="stylesheet" media="all" type="text/css" href="style.css" /> | ||
+ | </head> | ||
+ | <body> | ||
+ | <h1><center> Autenticaçã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> | ||
+ | |||
+ | </syntaxhighlight> | ||
+ | |||
+ | *Página de verificação do login (verificar.php): | ||
+ | |||
+ | <syntaxhighlight lang=lang="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"); | ||
+ | } | ||
+ | |||
+ | ?> | ||
+ | |||
+ | </syntaxhighlight> | ||
===Cadastro dos anúncios=== | ===Cadastro dos anúncios=== | ||
− | *Segue abaixo o código da página (cadastro. | + | *Segue abaixo o código da página (cadastro.php) onde o admin digitará os dados do anúncio: |
− | <syntaxhighlight lang=lang=" | + | <syntaxhighlight lang=lang="php"> |
+ | |||
+ | <? | ||
+ | session_start(); | ||
+ | if(isset($_SESSION['login'])){ | ||
+ | ?> | ||
<html> | <html> | ||
<head> | <head> | ||
− | <title> Café | + | <title> Café On-line </title> |
− | </head> | + | <link rel="stylesheet" media="all" type="text/css" href="style.css" /> |
− | + | </head> | |
+ | <body bgcolor="000000" text="FFFFFF"> | ||
+ | <h1>Cadastro de anúncios</h1> | ||
+ | <a href="http://www.cafeonline.sj.ifsc.edu.br/sair">Sair</a> | ||
<table align=center> | <table align=center> | ||
− | + | <tr> | |
− | + | <form name="formTeste" action="add.php" method="post"> | |
− | + | <table> | |
− | + | <tr><td> | |
− | + | <p> Título: <br> | |
− | + | <input type:"text" name="titulo"> | |
− | + | <p> Nome do cliente: <br> | |
− | + | <input type:"text" name="nome"> | |
− | + | <p> Anú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> | </body> | ||
</html> | </html> | ||
+ | |||
+ | <? | ||
+ | }else{ | ||
+ | header("Location: autenticacao.php"); | ||
+ | } | ||
+ | ?> | ||
</syntaxhighlight> | </syntaxhighlight> | ||
Linha 618: | Linha 988: | ||
<syntaxhighlight lang=lang="php"> | <syntaxhighlight lang=lang="php"> | ||
+ | |||
+ | <? | ||
+ | session_start(); | ||
+ | if(isset($_SESSION['login'])){ | ||
+ | ?> | ||
<html> | <html> | ||
<head> | <head> | ||
− | <meta http-equiv="content-Type" content="text/html; charset=iso-8859-1" /> | + | <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é On-line</title> | ||
</head> | </head> | ||
<body bgcolor="000000" text="FFFFFF"> | <body bgcolor="000000" text="FFFFFF"> | ||
Linha 643: | Linha 1 020: | ||
echo "<h2>Anúncio cadastrado com sucesso <br></h2>"; | echo "<h2>Anúncio cadastrado com sucesso <br></h2>"; | ||
echo "<a href='http://www.cafeonline.sj.ifsc.edu.br/listar>Ir para lista de anúncios</a>"; | echo "<a href='http://www.cafeonline.sj.ifsc.edu.br/listar>Ir para lista de anúncios</a>"; | ||
− | }else{ | + | }else |
+ | { | ||
echo "Erro ao cadastrar anúncio"; | echo "Erro ao cadastrar anúncio"; | ||
− | echo "<a href='http://www.cafeonline.sj.ifsc.edu.br/listar>Ir para lista de | + | echo "<a href='http://www.cafeonline.sj.ifsc.edu.br/listar>Ir para lista de anúncios</a>"; |
} | } | ||
− | }else{ | + | }else |
+ | { | ||
echo "<h2>Erro, campos vazios<br></h2>"; | echo "<h2>Erro, campos vazios<br></h2>"; | ||
echo "<a href='http://www.cafeonline.sj.ifsc.edu.br/cadastro'>Voltar para cadastro</a>"; | echo "<a href='http://www.cafeonline.sj.ifsc.edu.br/cadastro'>Voltar para cadastro</a>"; | ||
Linha 655: | Linha 1 034: | ||
</body> | </body> | ||
</html> | </html> | ||
+ | |||
+ | <? | ||
+ | }else | ||
+ | { | ||
+ | header("Location: autenticacao.php"); | ||
+ | } | ||
+ | ?> | ||
</syntaxhighlight> | </syntaxhighlight> | ||
− | |||
===Listagem de anúncios=== | ===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. | + | *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): |
<syntaxhighlight lang=lang="php"> | <syntaxhighlight lang=lang="php"> | ||
+ | <? | ||
+ | session_start(); | ||
+ | if (isset($_SESSION['login'])){ | ||
+ | ?> | ||
<html> | <html> | ||
<head> | <head> | ||
<meta http-equiv="content-Type" content="text/html; charset=iso-8859-1" /> | <meta http-equiv="content-Type" content="text/html; charset=iso-8859-1" /> | ||
− | <title> Café | + | <link rel="stylesheet" media="all" type="text/css" href="style.css" /> |
+ | <title> Café On-line </title> | ||
</head> | </head> | ||
<body bgcolor="000000" text="FFFFFF"> | <body bgcolor="000000" text="FFFFFF"> | ||
<h1>Listagem de anúncios</h1> | <h1>Listagem de anúncios</h1> | ||
− | <table><tr><td> | + | <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"); | $conexao = mysql_connect("localhost","root","cafeonline") or die ("ERRO"); | ||
Linha 680: | Linha 1 071: | ||
$dados = mysql_query($query,$conexao) or die ("erro 3"); | $dados = mysql_query($query,$conexao) or die ("erro 3"); | ||
− | echo "<table | + | echo "<table class='stats'>"; |
− | echo "< | + | echo "<th>Nome do cliente</th>"; |
− | echo "< | + | echo "<th>Título do anúncio</th>"; |
− | echo "< | + | echo "<th>Visitas</th>"; |
− | echo "< | + | echo "<th>Validade</th>"; |
+ | echo "<th>Ações</th>"; | ||
while($linha=mysql_fetch_array($dados,MYSQL_ASSOC)) | while($linha=mysql_fetch_array($dados,MYSQL_ASSOC)) | ||
{ | { | ||
− | + | $id = $linha["IDANUNCIO"]; | |
echo "<tr><td>" . $linha["NOMECLIENTE"] . "</td>" ; | echo "<tr><td>" . $linha["NOMECLIENTE"] . "</td>" ; | ||
echo "<td>" . $linha["NOMEANUNCIO"] . "</td>" ; | echo "<td>" . $linha["NOMEANUNCIO"] . "</td>" ; | ||
+ | echo "<td>" . $linha["VISITAS"] . "</td>" ; | ||
echo "<td>" . $linha["VALIDADE"] . "</td>" ; | echo "<td>" . $linha["VALIDADE"] . "</td>" ; | ||
echo "<td><a href='excluir.php?id=$id' style='text-decoration:none'>Excluir </a>"; | echo "<td><a href='excluir.php?id=$id' style='text-decoration:none'>Excluir </a>"; | ||
Linha 705: | Linha 1 098: | ||
</body> | </body> | ||
</html> | </html> | ||
+ | |||
+ | <? | ||
+ | }else{ | ||
+ | header("Location: autenticacao.php"); | ||
+ | } | ||
+ | ?> | ||
</syntaxhighlight> | </syntaxhighlight> | ||
Linha 713: | Linha 1 112: | ||
Segue o código da página de edição de anúncios (editar.php): | Segue o código da página de edição de anúncios (editar.php): | ||
+ | |||
<syntaxhighlight lang=lang="php"> | <syntaxhighlight lang=lang="php"> | ||
+ | |||
+ | <? | ||
+ | session_start(); | ||
+ | if(isset($_SESSION['login'])){ | ||
+ | ?> | ||
<html> | <html> | ||
<head> | <head> | ||
<meta http-equiv="content-Type" content="text/html; charset=iso-8859-1" /> | <meta http-equiv="content-Type" content="text/html; charset=iso-8859-1" /> | ||
− | <title> Caf& | + | <link rel="stylesheet" media="all" type="text/css" href="style.css" /> |
+ | <title> Café On-line </title> | ||
</head> | </head> | ||
− | + | <body bgcolor="000000" text="FFFFFF"> | |
<h1>Editar anúncio </h1> | <h1>Editar anúncio </h1> | ||
+ | <a href="http://www.cafeonline.sj.ifsc.edu.br/sair">Sair</a> | ||
<? | <? | ||
Linha 735: | Linha 1 142: | ||
<form name="formTeste" action="add2.php?id=<? echo $id ?>" method="post"> | <form name="formTeste" action="add2.php?id=<? echo $id ?>" method="post"> | ||
<table> | <table> | ||
− | <tr> | + | <tr><td> |
− | |||
<p> Título: <br> | <p> Título: <br> | ||
<input type:"text" name="titulo" value="<? echo $linha['NOMEANUNCIO'] ?>"> | <input type:"text" name="titulo" value="<? echo $linha['NOMEANUNCIO'] ?>"> | ||
Linha 747: | Linha 1 153: | ||
<p> Expira em: <br> | <p> Expira em: <br> | ||
<input type:"text"name="validade" value="<? echo $linha['VALIDADE'] ?>"> | <input type:"text"name="validade" value="<? echo $linha['VALIDADE'] ?>"> | ||
− | <p> | + | <p> Anúncio expirado? |
− | < | + | <?$data = date("Y-m-d"); |
+ | $timestamp1 = strtotime($linha['VALIDADE']); | ||
+ | $timestamp2 = strtotime($data); | ||
+ | if ($timestamp1 < $timestamp2){ | ||
+ | echo "Sim<br>"; | ||
+ | }else{ | ||
+ | echo "Não<br>"; | ||
+ | } | ||
+ | ?> | ||
<input type="submit" name="b_enviar" value="Gravar"><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> | </body> | ||
</html> | </html> | ||
+ | |||
+ | <? | ||
+ | }else{ | ||
+ | header("Location: autenticacao.php"); | ||
+ | } | ||
+ | ?> | ||
</syntaxhighlight> | </syntaxhighlight> | ||
Linha 764: | Linha 1 182: | ||
<syntaxhighlight lang=lang="php"> | <syntaxhighlight lang=lang="php"> | ||
+ | |||
+ | <? | ||
+ | session_start(); | ||
+ | if(isset($_SESSION['login'])){ | ||
+ | ?> | ||
<html> | <html> | ||
<head> | <head> | ||
− | <meta http-equiv="content-Type" content="text/html; charset=iso-8859-1" /> | + | <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é On-line</title> | ||
</head> | </head> | ||
<body bgcolor="000000" text="FFFFFF"> | <body bgcolor="000000" text="FFFFFF"> | ||
Linha 785: | Linha 1 210: | ||
if($update==true) | 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úncios</a>"; | |
− | }else{ | + | }else |
+ | { | ||
echo "Erro ao Atualizar"; | echo "Erro ao Atualizar"; | ||
"<a href='http://www.cafeonline.sj.ifsc.edu.br/listar>Ir para lista de anúncios</a>"; | "<a href='http://www.cafeonline.sj.ifsc.edu.br/listar>Ir para lista de anúncios</a>"; | ||
} | } | ||
− | }else{ | + | }else |
+ | { | ||
echo "<h2>Erro, campos vazios<br></h2>"; | echo "<h2>Erro, campos vazios<br></h2>"; | ||
echo "<a href='http://www.cafeonline.sj.ifsc.edu.br/listar'>Voltar para lista de anúncios</a>"; | echo "<a href='http://www.cafeonline.sj.ifsc.edu.br/listar'>Voltar para lista de anúncios</a>"; | ||
Linha 799: | Linha 1 226: | ||
</body> | </body> | ||
</html> | </html> | ||
+ | |||
+ | <? | ||
+ | }else | ||
+ | { | ||
+ | header("Location: autenticacao.php"); | ||
+ | } | ||
+ | ?> | ||
</syntaxhighlight> | </syntaxhighlight> | ||
Linha 807: | Linha 1 241: | ||
<syntaxhighlight lang=lang="php"> | <syntaxhighlight lang=lang="php"> | ||
+ | |||
+ | <? | ||
+ | session_start(); | ||
+ | if(isset($_SESSION['login'])){ | ||
+ | ?> | ||
<html> | <html> | ||
− | <head><meta http-equiv="content-Type" content="text/html; charset=iso-8859-1" /></head> | + | <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é On-line</title> | ||
+ | </head> | ||
<body bgcolor="000000" text="FFFFFF"> | <body bgcolor="000000" text="FFFFFF"> | ||
+ | |||
<? | <? | ||
− | |||
$conexao = mysql_connect("localhost","root","cafeonline") ; | $conexao = mysql_connect("localhost","root","cafeonline") ; | ||
$base_ok = mysql_select_db("cafeonline",$conexao) or die ("erro 1"); | $base_ok = mysql_select_db("cafeonline",$conexao) or die ("erro 1"); | ||
Linha 832: | Linha 1 275: | ||
</html> | </html> | ||
+ | <? | ||
+ | }else{ | ||
+ | header("Location: autenticacao.php"); | ||
+ | } | ||
+ | ?> | ||
+ | |||
+ | </syntaxhighlight> | ||
+ | |||
+ | ===Botão sair=== | ||
+ | *Nas páginas de listagem, cadastro e edição foram colocados links para o usuario sair da seção(sair.php): | ||
+ | |||
+ | <syntaxhighlight lang=lang="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"); | ||
+ | ?> | ||
+ | |||
+ | </syntaxhighlight> | ||
+ | |||
+ | ===CSS usado para estilo das páginas=== | ||
+ | *Segue o código css para a estilização das páginas (style.css): | ||
+ | |||
+ | <syntaxhighlight lang=lang="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;} | ||
+ | |||
+ | </syntaxhighlight> | ||
+ | |||
+ | |||
+ | ===Banner=== | ||
+ | *Segue o código do banner que ficará localizado no topo da página (banner.php): | ||
+ | |||
+ | <syntaxhighlight lang=lang="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"); | ||
+ | |||
+ | } | ||
+ | } | ||
+ | ?> | ||
+ | |||
+ | </syntaxhighlight> | ||
+ | |||
+ | ===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. | ||
+ | |||
+ | <syntaxhighlight lang=lang="php"> | ||
+ | |||
+ | <? | ||
+ | $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]"); | ||
+ | } | ||
+ | } | ||
+ | ?> | ||
</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
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:
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
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
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:
- 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
- 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:
Dia 02/07/2010
- configuração do Access Point Wireless
Marca/Modelo: Edimax[50] EW-7209APg[51] manual [52]
Configurações avançadas:
Configurações de segurança(desabilitado conforme especificação do projeto):
Configurações de rede e dhcp:
Aplicação
Autenticação
- Página principal do site (index.html):
<html>
<head>
<title>Café 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é On-line </title>
<link rel="stylesheet" media="all" type="text/css" href="style.css" />
</head>
<body>
<h1><center> Autenticaçã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é On-line </title>
<link rel="stylesheet" media="all" type="text/css" href="style.css" />
</head>
<body bgcolor="000000" text="FFFFFF">
<h1>Cadastro de anú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ítulo: <br>
<input type:"text" name="titulo">
<p> Nome do cliente: <br>
<input type:"text" name="nome">
<p> Anú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é 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úncio cadastrado com sucesso <br></h2>";
echo "<a href='http://www.cafeonline.sj.ifsc.edu.br/listar>Ir para lista de anúncios</a>";
}else
{
echo "Erro ao cadastrar anú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é On-line </title>
</head>
<body bgcolor="000000" text="FFFFFF">
<h1>Listagem de anú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ítulo do anúncio</th>";
echo "<th>Visitas</th>";
echo "<th>Validade</th>";
echo "<th>Açõ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 </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ú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é On-line </title>
</head>
<body bgcolor="000000" text="FFFFFF">
<h1>Editar anú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í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ú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úncio expirado?
<?$data = date("Y-m-d");
$timestamp1 = strtotime($linha['VALIDADE']);
$timestamp2 = strtotime($data);
if ($timestamp1 < $timestamp2){
echo "Sim<br>";
}else{
echo "Nã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é 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úncios</a>";
}else
{
echo "Erro ao Atualizar";
"<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/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");
}
?>
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é 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úncio exlcluido<br></h2>";
echo "<a href='http://www.cafeonline.sj.ifsc.edu.br/listar>Voltar para lista de anú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;}
Banner
- 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]");
}
}
?>