Mudanças entre as edições de "Projeto Integrador - 2011.1 - Teletec"
Linha 304: | Linha 304: | ||
- Edição do Arquivo '''Verificação.php''': | - Edição do Arquivo '''Verificação.php''': | ||
+ | |||
Esta pagina PHP verifica se o login e a senha do administrador esta correto. | Esta pagina PHP verifica se o login e a senha do administrador esta correto. | ||
Se estiver correto vai para a pagina "principal.php" se não volta para "login.php". | Se estiver correto vai para a pagina "principal.php" se não volta para "login.php". | ||
Linha 320: | Linha 321: | ||
- Edição do Arquivo '''sair.php''': | - Edição do Arquivo '''sair.php''': | ||
+ | |||
Esta pagina PHP faz o administrador "deslogar" ("logoff") e depois volta para pagina "login.php" | Esta pagina PHP faz o administrador "deslogar" ("logoff") e depois volta para pagina "login.php" | ||
Linha 329: | Linha 331: | ||
- Edição do arquivo '''principal.php''': | - Edição do arquivo '''principal.php''': | ||
+ | |||
Esta é a principal pagina PHP do site, nela verificamos os clientes criados e armazenados no banco de dados, redirecionamos para pagina que modifica os dominios (alterar.php), redirecionamos para pagina que remover os dominios (excluir.php)e tambem redirecionamos para a pagina que adiciona os dominios (adicionar.php). | Esta é a principal pagina PHP do site, nela verificamos os clientes criados e armazenados no banco de dados, redirecionamos para pagina que modifica os dominios (alterar.php), redirecionamos para pagina que remover os dominios (excluir.php)e tambem redirecionamos para a pagina que adiciona os dominios (adicionar.php). | ||
Quando é redirecionado para pagina de modificação e remoção tambem é enviado uma variavel com o dominio do cliente para saber qual usuario deve ser modificado ou alterado. | Quando é redirecionado para pagina de modificação e remoção tambem é enviado uma variavel com o dominio do cliente para saber qual usuario deve ser modificado ou alterado. | ||
Linha 373: | Linha 376: | ||
- Edição do Arquivo '''mod-domínio.php''': | - Edição do Arquivo '''mod-domínio.php''': | ||
+ | |||
Esta pagina PHP recebe três variaveis com o dominio antigo do clinete, o novo dominio e o novo nome do cliente, estas variaveis são repassadas para o script "mod-dominio.sh" e este é executado modificando o dominio e o nome do cliente, depois de executar o script as informações do banco de dados tambem são modificadas e o serviço APACHE2 é reiniciado. | Esta pagina PHP recebe três variaveis com o dominio antigo do clinete, o novo dominio e o novo nome do cliente, estas variaveis são repassadas para o script "mod-dominio.sh" e este é executado modificando o dominio e o nome do cliente, depois de executar o script as informações do banco de dados tambem são modificadas e o serviço APACHE2 é reiniciado. | ||
Após todo este processamento a pagina é redirecionada para 'principal.php". | Após todo este processamento a pagina é redirecionada para 'principal.php". | ||
Linha 427: | Linha 431: | ||
- Edição do Arquivo '''login.php''': | - Edição do Arquivo '''login.php''': | ||
+ | |||
Esta pagina PHP recolhe o login e a senha fornecidas pelo administrador atraves de um formulario e manda para a pagina PHP de processamento que verifica se esta correto. | Esta pagina PHP recolhe o login e a senha fornecidas pelo administrador atraves de um formulario e manda para a pagina PHP de processamento que verifica se esta correto. | ||
.<? | .<? | ||
Linha 459: | Linha 464: | ||
- Edição do Arquivo '''Index.php''': | - Edição do Arquivo '''Index.php''': | ||
+ | |||
Esta pagina apenas redireciona para "login.php" | Esta pagina apenas redireciona para "login.php" | ||
<.? | <.? | ||
Linha 494: | Linha 500: | ||
- Edição do Arquivo '''del-dominio.php''': | - Edição do Arquivo '''del-dominio.php''': | ||
+ | |||
Esta pagina PHP é uma pagina de processamento que recebe em uma variavel o nome do dominio que sera removido e transfere esta variavel para o script em bash "del-dominio.sh" ja executa o script, depois este dominio é removido do banco de dados e o serviço APACHE2 é reiniciado. | Esta pagina PHP é uma pagina de processamento que recebe em uma variavel o nome do dominio que sera removido e transfere esta variavel para o script em bash "del-dominio.sh" ja executa o script, depois este dominio é removido do banco de dados e o serviço APACHE2 é reiniciado. | ||
Após todo o processamento a pagina é redirecionada para "principal.php". | Após todo o processamento a pagina é redirecionada para "principal.php". | ||
Linha 516: | Linha 523: | ||
- Edição do '''Arquivo alterar.php''': | - Edição do '''Arquivo alterar.php''': | ||
+ | |||
Nesta pagina PHP o administrador informa o novo nome do cliente e o novo dominio, estas informações são gravadas em uma variavel que será mandada para a pagina PHP que vai fazer todo o trabalho de processamento (mod-dominio.php). | Nesta pagina PHP o administrador informa o novo nome do cliente e o novo dominio, estas informações são gravadas em uma variavel que será mandada para a pagina PHP que vai fazer todo o trabalho de processamento (mod-dominio.php). | ||
Linha 549: | Linha 557: | ||
- Edição do Arquivo '''adicionar.php''': | - Edição do Arquivo '''adicionar.php''': | ||
+ | |||
Esta pagina PHP recolhe duas variaveis atraves do formulrios, em uma esta o nome do clinete e na outra o dominio escolhido, estas variaveis são repassadas para a pagina de processamento que vai adicionar este novo subdominio (add-dominio.php).Depois ela é redirecionada para a pagina de processamento "add-dominio.php". | Esta pagina PHP recolhe duas variaveis atraves do formulrios, em uma esta o nome do clinete e na outra o dominio escolhido, estas variaveis são repassadas para a pagina de processamento que vai adicionar este novo subdominio (add-dominio.php).Depois ela é redirecionada para a pagina de processamento "add-dominio.php". | ||
Linha 578: | Linha 587: | ||
- Edição do Arquivo '''add-dominio.php''': | - Edição do Arquivo '''add-dominio.php''': | ||
+ | |||
Esta pagina PHP é uma pagina de processamento que recebe duas variaveis, na primeira esta o nome do dominio que sera removido e na segunda está o dominio do cliente, estas variaveis são transferidas para o script em bash "add-dominio.sh" que é executado, depois este dominio é adicionado no banco de dados e o serviço APACHE2 é reiniciado. | Esta pagina PHP é uma pagina de processamento que recebe duas variaveis, na primeira esta o nome do dominio que sera removido e na segunda está o dominio do cliente, estas variaveis são transferidas para o script em bash "add-dominio.sh" que é executado, depois este dominio é adicionado no banco de dados e o serviço APACHE2 é reiniciado. | ||
Após todo o processamento a pagina é redirecionada para "principal.php". | Após todo o processamento a pagina é redirecionada para "principal.php". |
Edição das 18h49min de 9 de julho de 2011
* Equipe 2 : TELETEC
INTEGRANTES TELETEC
* Daniel Estefano; estefano.daniel@gmail.com * Denis Teixeira; denisteixeira3@gmail.com * Leonardo Oliveira P.; leonardo-op@live.com * Odair de Moraes; odairdmoraes@hotmail.com * Robson de Carvalho; rob_carvalho12@hotmail.com * Vagner Cordeiro. cordeirotelecom@gmail.com
SOBRE A EMPRESA TELETEC - PROVEDORA DE ACESSO Á INTERNET:
A Empresa Oferece os seguintes serviços: # Conta de Usuário para cada cliente; # Conta de E-mail para cada cliente; # Uma página Web Padrão; # Instalação do Modem ADSL e do Cabeamento Estrurado; # Acesso Wirelles;
Etapas Iniciais de Configurações da Rede
# Instalação do Sistema Operacional:Ubuntu-Server; # Definido Sistema de Arquivo, Dividido em 3 Partições: 1 Partição Primátia, 1 Partição Secundária e uma Partição para Swap; # Definido nome do Domínio: teletec.sj.ifsc.edu.br; # Criado um Usuário: Tecnico; # Acesso via SSH ao Servidor Teletec.
Gerencia de Redes: Apache, Postfix e DNS
Configurações do servidor DNS:
- Edição do Arquivo para IP Estático: /etc/network/interfaces
# This file describes the network interfaces available on your system # and how to activate them. For more information, see interfaces(5). # The loopback network interface auto lo iface lo inet loopback # The primary network interface auto eth0 iface eth0 inet static address 200.135.37.100 netmask 255.255.255.192 gateway 200.135.37.126
- Edição do Arquivo do servidor DNS /etc/bind/named.conf
Indica todos os arquivos que vai fazer a configuração dele
// This is the primary configuration file for the BIND DNS server named. // // Please read /usr/share/doc/bind9/README.Debian.gz for information on the // structure of BIND configuration files in Debian, *BEFORE* you customize // this configuration file. // // If you are just adding zones, please do that in /etc/bind/named.conf.local include "/etc/bind/named.conf.options"; include "/etc/bind/named.conf.local"; include "/etc/bind/named.conf.default-zones"; include "/etc/bind/servidor.conf"; include "/etc/bind/tecnico.conf"; include "/etc/bind/daniel.conf";
- Edição do Arquivo de servidor DNS: named.conf.local /etc/bind/named.conf.local
É um arquivo padrão do BIND onde foi configurado o o nosso dominino TELETEC.
// // Do any local configuration here // // Consider adding the 1918 zones here, if they are not used in your // organization //include "/etc/bind/zones.rfc1918"8; zone "teletec.sj.ifsc.edu.br." IN { type master; file "/etc/bind/teletec.zone"; allow-update { none; }; };
- Edição do Arquivo de DNS Reverso: /etc/bind/37.135.200.in-addr.arpa
O DNS Reverso resolve um endereço IP para um nome de servidor – por exemplo, ele poderia resolver 200.176.3.142 para exemplo.hipotetico.com.br.
$TTL 86400 @ IN SOA servidor.teletec.sj.ifsc.edu.br. root ( 2011061500 ; 1d ; 1h ; 1w ; 1d ; ) IN NS servidor.teletec.sj.ifsc.edu.br. 100 IN PTR servidor.teletec.sj.ifsc.edu.br.
- Edição do Arquivo para criar um subdomínio:/etc/bind/teletec.zone
Arquivo que traz todas as configurações de cada subdomínio.
$TTL 86400 @ IN SOA teletec.teletec.sj.ifsc.edu.br root ( 2011062901; 3H; 15M; 1W; 1D ); IN NS teletec.teletec.sj.ifsc.edu.br. IN MX 0 mail.teletec.sj.ifsc.edu.br. localhost IN A 127.0.0.1 $ORIGIN teletec.sj.ifsc.edu.br. teletec A 200.135.37.100 www A 200.135.37.100 mail A 200.135.37.100
- Configuração do servidor Apache
No servidor Apache foi feito a instalação com o comando:
apt-get install apache2
E nele não foi preciso fazer configuraçoẽs, nele vai ser criado uma nova nova pagina web para cada novo cliente na pasta: /etc/apache2/sites-enabled' essas paginas web serão adicionadas automaticamente pelo script
- Configuração do servidor POSTFIX
- Primeiro foi feito a instalação com o comando:
apt-get install postfix
Em seguida o programa de instalação vai fazer algumas perguntas sobre a localização dos arquivos e alguns parametros
Instalação de Equipamento de Redes (Modem, Switch e Roteadores)
Configurações:
Instalação:
minicom -s
Configuração do Roteador Cisco 1700:
- Configuração dos Dois Roteadores Utilizando a ferramenta "Minicon" (Se fosse Windows seria Hyperterminal)
- Configuração dos dispositivos: Serial e Ethernet
- Configuração como Protocolo PPP
- "Configuração da porta serial":
┌─────────────[configuração]──────────────┐ │ Nomes de arquivos e rotas │ Protocolos de transferência de arquivos │ Configuração da porta serial │ Modem e discagem │ Tela e teclado │ Salvar configuração como dfl │ Salvar configuração como │ Sair │ Sair do Minicom └────────────────────────────────────────┘
- "Alteração da Porta Serial"
┌──────────────────────────────────────────────────────────┐ │ A – Dispositivo Serial : /dev/ttSy0 │ B – Localização do Arquivo de Travamento : /var/lock │ C – Programa de Entrada : │ D – Programa de Saída : │ E – Bps/Paridade/Bits : 9600 8N1 │ F – Controle de Fluxo por Hardware : Não │ G – Controle de Fluxo por Software : Não │ │ Alterar qual configuração? └──────────────────────────────────────────────────────────┘
- "Salvar configuração com dfl"
- Configurando a Interface Serial do Roteador:
enable; configure terminal; #Para configurar a interface serial: interface serial 0; ip address 10.0.0.1/30; encapsulation ppp; exit; #Para configurar a interface ethernet: interface fastethernet 0; ip address 172.18.0.1/24; exit; exit; #Para salvar as configurações: wr;
Radius
Para ter acesso a rede aDSL ou pela rede sem fio será usado Radius para que os usuários sejam autenticados. O RADIUS é um sistema utilizado para prover uma autenticação centralizada em redes dial-up, VPN's (Virtual Private Network) e redes sem fio. Ele tem um modelo cliente-servidor, onde o cliente é o Network Access Server (NAS). Esse servidor é responsável por obter a informação sobre o cliente e repassá-la para o servidor RADIUS, além de interpretar a resposta, dando ou não acesso ao cliente. O servidor RADIUS é responsável por receber pedidos de conexão, autenticar o usuário e repassar ao NAS as informações necessárias para esse dar acesso ao usuário na rede.
Arquivos configurados:
Configurar login e senha para o cliente Radius ( /etc/freeradius /users ):
“Usúario” Cleartext-Password := "senha" “Usúario” User-Password := "senha"
Teste antes se seu servidor Radius está autenticando usuáriosfaça o seguinte comando no AC PPPoE (que fica em Ac-server):
radtest seu_usuario sua_senha IP_do_seu_servidor_Radius 1 segredo_do_seu_servidor_Radius
Configurando o Servidor PPPoe (/etc/ppp/pppoe-servers-options):
require-chap auth lcp-echo-interval 10 lcp-echo-failure 2 ms-dns IP do seu servidor DNS netmask 255.255.255.0 noipdefault debug kdebug 4 plugin radius.so plugin radattr.so radius-config-file /etc/radiusclient/teletec.conf mru 1492 mtu 1492
Configuração do Cliente Radius ( etc/radiusclient/teletec.conf ):
auth_order radius login_tries 4 login_timeout 60 nologin /etc/nologin issue /etc/radiusclient/issue authserver 200.135.37.100 acctserver 200.135.37.100 servers /etc/radiusclient/servers dictionary /etc/radiusclient/dictionary login_radius /usr/sbin/login.radius seqfile /var/run/radius.seq mapfile /etc/radiusclient/port-id-map default_realm radius_timeout 10 radius_retries 3 login_local /bin/login
Configurando o IP do Servidor Radius ( /etc/radiusclient/servers ):
200.135.37.100 testing123
Integrando Radius ao Banco de Dados
Primeiro procedimento, instale o pacote.
apt-get install freeradius-mysql
Edite o arquivo de configuração do freeradius, e descomente a seguinte linha ( /etc/freeradius/radiusd.conf ):
$INCLUDE sql.conf
Para entrar no MySQL execute o comando:
mysql -u root -p
Crie uma base de dados somente para o Radius e dê ao usuário Radius a devida permissão para acesso a esta base. No shell do MySQL, execute os comandos:
CREATE DATABASE radius; GRANT ALL ON radius.* TO freerad@localhost IDENTIFIED BY "senha_do_usuário_freeradius"; exit;
Inserindo informações na base de dados:
mysql -u “usuário” -p “senha do usuário radius” “database” < /etc/freeradius/sql/mysql/schema.sql mysql -u “usuário” -p “senha do usuário radius” “database” < /etc/freeradius/sql/mysql/nas.sql
Editar o arquivo /etc/freeradius/sql.conf, colocando a senha do usuário Radius:
passwrod = "senha do usuário radius"
E descomente a linha do mesmo arquivo ( /etc/freeradius/sql.conf ) :
readclients = yes
Reinicie o FreeRadius:
service freeradius restart
Cabeamento Estruturado
Atividades Concluídas:
- o A central telefônica ao DSLAM - o O DSLAM ao armário de telecom da equipe, através de uma linha telefone + DSL - o armário da equipe a uma área de trabalho. - O cabeamento permitiu a conexão do modem DSL no armário de telecom. - As tomadas da área de trabalho para conexão com Telefone e o Modem ADSL.
Programação para Redes de Computadores
Os Arquivos PHP (pagina Web) Encontram-se dentro da pasta: /var/www/teletec
- Edição do Arquivo Verificação.php:
Esta pagina PHP verifica se o login e a senha do administrador esta correto. Se estiver correto vai para a pagina "principal.php" se não volta para "login.php".
<? session_start(); $login = $_POST['login']; $senha = $_POST['senha']; if ( ( $login == "LOGIN-DO-ADMIN" ) && ( $senha == "SENHA-DO-ADMIN" ) ){ $_SESSION['autorizado'] = $login; Header ("Location: principal.php"); }else{ Header ("Location: login.php"); } ?>
- Edição do Arquivo sair.php:
Esta pagina PHP faz o administrador "deslogar" ("logoff") e depois volta para pagina "login.php"
<? session_start(); session_destroy(); Header ("Location: login.php"); ?>
- Edição do arquivo principal.php:
Esta é a principal pagina PHP do site, nela verificamos os clientes criados e armazenados no banco de dados, redirecionamos para pagina que modifica os dominios (alterar.php), redirecionamos para pagina que remover os dominios (excluir.php)e tambem redirecionamos para a pagina que adiciona os dominios (adicionar.php). Quando é redirecionado para pagina de modificação e remoção tambem é enviado uma variavel com o dominio do cliente para saber qual usuario deve ser modificado ou alterado.
<.? .session_start(); .if (!isset($_SESSION['autorizado'])){ .header ("Location: login.php"); .}else{ .?> <.html> <.head> <.meta http-equiv="content-type" content="text/html; charset=iso-8859-1"> <.title>Administrcao de Dominios</title> <./head> <.body>
<.p><a href="sair.php">Sair</a>
<.p>
<.p style="text-align:center;margin-left:auto;margin-right:auto;">Cliente Dominio Acao
<.? $conexao = mysql_connect("localhost","www-data","orelha1234"); $base_ok = mysql_select_db("teletec",$conexao); $consulta = "SELECT * from clientes"; $resultado = mysql_query($consulta,$conexao); while($linha = mysql_fetch_array($resultado)){ $cliente = $linha['cliente']; $dominio = $linha['dominio']; .?> <.form> <.p style="text-align:center;margin-left:auto;margin-right:auto;"> <.a name="cliente" id="cliente" href="alterar.php?id=<? echo $linha['dominio'];?>"> <?echo $.linha['cliente'];?></a>
<.? echo $linha['dominio'];?> <a href="excluir.php?id=<? echo $linha['dominio'];?>"> Excluir</a>
<./form> <.? .} .mysql_free_result($resultado); .mysql_close($conexao); .} .?> <.p style="text-align:right;margin-left:auto;margin-right:0;">
<.a href="adicionar.php">Adicionar novo dominio</a>
<./body> <./html>
- Edição do Arquivo mod-domínio.php:
Esta pagina PHP recebe três variaveis com o dominio antigo do clinete, o novo dominio e o novo nome do cliente, estas variaveis são repassadas para o script "mod-dominio.sh" e este é executado modificando o dominio e o nome do cliente, depois de executar o script as informações do banco de dados tambem são modificadas e o serviço APACHE2 é reiniciado. Após todo este processamento a pagina é redirecionada para 'principal.php".
<.? session_start(); if (!isset($_SESSION['autorizado'])){ header ("Location: login.php"); }else{ $cliente = $_POST['cliente']; $dominio = $_POST['dominio']; $antigo = $_POST['antigo'];; if (empty($dominio)) { $dominio = "invalido"; } if (preg_match('/^[a-z0-9]+/', $dominio)){ }else{ $dominio = "invalido"; } $arquivo = '/etc/bind/named.conf'; $linhas = array(); exec("cat $arquivo",$linhas); for ($i = 0 ; $i < sizeof($linhas); $i++){ if ($linhas[$i] == "include \"/etc/bind/$dominio.conf\";"){ $dominio = "invalido"; } } if ($dominio == "invalido"){ header ("Location: alterar.php"); }else{ $script = "/etc/teletec/mod-dominio.sh $antigo '$cliente' $dominio"; exec("$script"); exec("/etc/init.d/apache2 restart"); $conexao = mysql_connect("localhost","www-data","orelha1234"); $base_ok = mysql_select_db("teletec",$conexao); $deletar = "DELETE FROM clientes WHERE dominio='$antigo.teletec.sj.ifsc.edu.br'"; mysql_query($deletar,$conexao); mysql_close($conexao); $conexao = mysql_connect("localhost","www-data","orelha1234"); $base_ok = mysql_select_db("teletec",$conexao); $inserir = "INSERT INTO clientes (cliente,dominio) VALUES ('$cliente','$dominio.teletec.sj.ifsc.edu.br')"; mysql_query($inserir,$conexao); mysql_close($conexao); header ("Location: http://www.teletec.sj.ifsc.edu.br/principal.php"); } .} ?.>
- Edição do Arquivo login.php:
Esta pagina PHP recolhe o login e a senha fornecidas pelo administrador atraves de um formulario e manda para a pagina PHP de processamento que verifica se esta correto.
.<? .session_start(); .if (isset($_SESSION['autorizado'])){ .Header ("Location: principal.php"); .}else{ .?> <.html> <.head> <.meta http-equiv="content-type" content="text/html; charset=iso-8859-1"> <.title>Hospedagem Web</title> <./head> <.body>
<.p>
<.p>Sistemas de Hospedagem de Sitios Web
<.p>
<.form name="formTeste" action="verificacao.php" method="post"> <.p>Usuário:
<.input type="text" name="login"> <.p>Senha:
<.input type="password" name="senha"> <.input type="submit" name="b_enviar" value="Entrar"> <./form>
<.p>
<.? } .?> <./body> <./html>
- Edição do Arquivo Index.php:
Esta pagina apenas redireciona para "login.php"
<.? Header ("Location: login.php"); .?>
- Edição do Arquivo excluir.php: Esta pagina PHP faz uma verificação, se o administrador realmente querer excluir o dominio é mandado o dominio do clinete em uma variavel para a pagina PHP de processamento "del-dominio.php" e a pagina é redirecionada para la, mais se o usuario não quiser escluir é mandado novamente para p pagina "principal.php".
<.? session_start(); if (!isset($_SESSION['autorizado'])){ header ("Location: login.php"); }else{ $id=$_GET['id']; $parte1 = explode(".", $id); $antigo = $parte1[0]; ?.> <.html> <head> <.meta http-equiv="content-type" content="text/html; charset=iso-8859-1"> <.title>Excluir o cliente</title> <./head> <.body>
<.p>Voce realmente deseja excluir o cliente?
<.p><a href="del-dominio.php?id=<?echo $antigo;?>">Sim</a> <a
.href="principal.php">Nao</a>
<.p>
<? } .?> <./body> <./html>
- Edição do Arquivo del-dominio.php:
Esta pagina PHP é uma pagina de processamento que recebe em uma variavel o nome do dominio que sera removido e transfere esta variavel para o script em bash "del-dominio.sh" ja executa o script, depois este dominio é removido do banco de dados e o serviço APACHE2 é reiniciado. Após todo o processamento a pagina é redirecionada para "principal.php".
<.? session_start(); if (!isset($_SESSION['autorizado'])){ header ("Location: login.php"); }else{ $dominio = $_GET['id']; $script = "/etc/teletec/del-dominio.sh $dominio"; exec("$script"); exec("/etc/init.d/apache2 restart"); $conexao = mysql_connect("localhost","www-data","orelha1234"); $base_ok = mysql_select_db("teletec",$conexao); $deletar = "DELETE FROM clientes WHERE dominio='$dominio.teletec.sj.ifsc.edu.br'"; mysql_query($deletar,$conexao); mysql_close($conexao); header ("Location: http://www.teletec.sj.ifsc.edu.br/principal.php"); } ?.>
- Edição do Arquivo alterar.php:
Nesta pagina PHP o administrador informa o novo nome do cliente e o novo dominio, estas informações são gravadas em uma variavel que será mandada para a pagina PHP que vai fazer todo o trabalho de processamento (mod-dominio.php).
<.? session_start(); if (!isset($_SESSION['autorizado'])){ header ("Location: login.php"); }else{ $id=$_GET['id']; $parte1 = explode(".", $id); $antigo = $parte1[0]; ?.> <.html> <.head> <.meta http-equiv="content-type" content="text/html; charset=iso-8859-1"> <.title>Alterar Dominio</title> </.head> <.body>
<.p><.a href="principal.php">Voltar </a>
<.form name="formTeste" action="mod-dominio.php" method="post"> <.p>Novo nome do cliente:
<.input type="text" name="cliente"> <.p>Novo dominio:
<.input type="text" name="dominio"> <.input type="hidden" name="antigo" value="<?echo $antigo;?>"> <.input type="submit" name="b_enviar" value="Alterar"> <./form> <.? } ?.> <./body> <./html>
- Edição do Arquivo adicionar.php:
Esta pagina PHP recolhe duas variaveis atraves do formulrios, em uma esta o nome do clinete e na outra o dominio escolhido, estas variaveis são repassadas para a pagina de processamento que vai adicionar este novo subdominio (add-dominio.php).Depois ela é redirecionada para a pagina de processamento "add-dominio.php".
<.? session_start(); if (!isset($_SESSION['autorizado'])){ header ("Location: login.php"); .}else{ .?> <.html> <.head> <.meta http-equiv="content-type" content="text/html; charset=iso-8859-1"> <.title>Adicionar Cliente</title> <./head> <.body>
<.p><.a href="principal.php">Voltar </a>
<.form name="formTeste" action="add-dominio.php" method="post"> <.p>Nome do cliente:
<.input type="text" name="cliente"> <.p>Dominio:
<.input type="text" name="dominio"> <.input type="submit" name="b_enviar" value="Criar"> <./form> <.? .} .?> <./body> <./html>
- Edição do Arquivo add-dominio.php:
Esta pagina PHP é uma pagina de processamento que recebe duas variaveis, na primeira esta o nome do dominio que sera removido e na segunda está o dominio do cliente, estas variaveis são transferidas para o script em bash "add-dominio.sh" que é executado, depois este dominio é adicionado no banco de dados e o serviço APACHE2 é reiniciado. Após todo o processamento a pagina é redirecionada para "principal.php".
<.? session_start(); if (!isset($_SESSION['autorizado'])){ header ("Location: login.php"); }else{ $cliente = $_POST['cliente']; $dominio = $_POST['dominio']; if (empty($dominio)) { $dominio = "invalido"; } if (preg_match('/^[a-z0-9]+/', $dominio)){ }else{ $dominio = "invalido"; } $arquivo = '/etc/bind/named.conf'; $linhas = array(); exec("cat $arquivo",$linhas); for ($i = 0 ; $i < sizeof($linhas); $i++){ if ($linhas[$i] == "include \"/etc/bind/$dominio.conf\";"){ $dominio = "invalido"; } } if ($dominio == "invalido"){ header ("Location: adicionar.php"); }else{ $script = "/etc/teletec/add-dominio.sh '$cliente' $dominio"; exec("$script"); exec("/etc/init.d/apache2 restart"); $conexao = mysql_connect("localhost","www-data","orelha1234"); $base_ok = mysql_select_db("teletec",$conexao); $inserir = "INSERT INTO clientes (cliente,dominio) VALUES ('$cliente','$dominio.teletec.sj.ifsc.edu.br')"; mysql_query($inserir,$conexao); mysql_close($conexao); header ("Location: http://www.teletec.sj.ifsc.edu.br/principal.php"); } } ?.>
Os Arquivos .sh (scripts que adicionam, removem ou alteram os usuários no servidor) Encontram-se dentro da pasta: /etc/teletec
- Edição do Arquivo mod-dominio.sh: Script em bash que altera o dominio do cliente (Subdominio, E-mail e Pagina WEB):
O script de modificação na verdade exclui o dominio criado e cria um novo, os scripts de remover e adicionar estão juntos neste script.
#!/bin/bash #Leonardo #echo -n "Dominio: " #read antigo #IFS=$'\n' #for linha in `cat /etc/bind/named.conf`; do # if [ $linha = 'include "/etc/bind/'$antigo'.conf";' ];then # valido=sim # break # else # valido=nao # fi #done #if [ $valido = nao ];then # echo -e " * Você entrou com um dominio inválido!\t\t\t \e[31m [ ERRO ] \e[m" # echo -e " * O dominio não existe ou esta em branco.\n" # exit #fi #echo -n "Novo nome para o cliente: " #read nome #echo -n "Novo dominio: " #read dominio #echo=${dominio:=nulo} #IFS=$'\n' #for linha in `cat /etc/bind/named.conf`; do # if [ $linha = 'include "/etc/bind/'$dominio'.conf";' ];then # dominio=existe # break # fi #done #if [ $dominio != nulo ] && [ $dominio != existe ];then antigo=$1 nome=$2 dominio=$3 sudo sed -i '/\/etc\/bind\/'$antigo'\.conf/Id' /etc/bind/named.conf sudo rm /etc/bind/$antigo.conf sudo rm /etc/bind/$antigo.zone sudo rm /etc/apache2/sites-enabled/$antigo-default sudo rm -r /var/www/$antigo sudo sed -i '/'$antigo'\.teletec\.sj\.ifsc\.edu\.br Subdominio-'$antigo'/Id' /etc/postfix/virtual sudo sed -i '/'$antigo'@teletec\.sj\.ifsc\.edu\.br '$antigo'/Id' /etc/postfix/virtual sudo sed -i '/'$antigo'\.teletec\.sj\.ifsc\.edu\.br OK/Id' /etc/postfix/mydomains sudo echo 'include "/etc/bind/'$dominio'.conf";' >> /etc/bind/named.conf numero=`date | cut -d ":" -f 3 | cut -d " " -f 1` novoserial=$((1000000000+$numero)) sudo sed s/padrao/$dominio/g /etc/bind/padrao.conf > /etc/bind/$dominio.conf sudo sed s/padrao/$dominio/g /etc/bind/padrao.zone | sed s/2011061504/$novoserial/g > /etc/bind/$dominio.zone sudo /etc/init.d/bind9 restart sudo sed s/padrao/$dominio/g /etc/apache2/sites-available/padrao-default > /etc/apache2/sites-enabled/$dominio-default mkdir /var/www/$dominio sed s/dominio/$dominio/g /var/www/padrao/index.html | sed s/nome/"$nome"/g > /var/www/$dominio/index.html sudo echo ' ' >> /etc/postfix/virtual sudo echo $dominio'.teletec.sj.ifsc.edu.br Subdominio-'$dominio >> /etc/postfix/virtual sudo echo $dominio'@teletec.sj.ifsc.edu.br '$dominio >> /etc/postfix/virtual sudo echo $dominio'.teletec.sj.ifsc.edu.br OK' >> /etc/postfix/mydomains sudo postmap /etc/postfix/virtual sudo postmap /etc/postfix/mydomains sudo /etc/init.d/postfix restart # echo -e " * Dominio modificado com sucesso!\t\t\t\t[ OK ]\n" # else # echo -e " * Você entrou com um dominio inválido!\t\t\t \e[31m [ ERRO ] \e[m" # echo -e " * O dominio ja existe ou esta em branco.\n" #fi
- Edição do Arquivo del-dominio.sh: Script em bash que remove o cliente (Subdominio, E-mail e Pagina WEB):
Exclui todos os arquivos de configuração criados para este cliente e retira as linhas de configuração adicionadas em arquivos como o "named.conf", "virtual" e "mydomains", por ultimo os serviçoes DNS e POSTFIX são reiniciados ( o APACHE2 é reiniciado na pagina PHP).
#!/bin/bash #Leonardo #echo -n "Dominio: " #read dominio #IFS=$'\n' #for linha in `cat /etc/bind/named.conf`; do # if [ $linha = 'include "/etc/bind/'$dominio'.conf";' ];then dominio=$1 sudo sed -i '/\/etc\/bind\/'$dominio'\.conf/Id' /etc/bind/named.conf sudo rm /etc/bind/$dominio.conf sudo rm /etc/bind/$dominio.zone sudo /etc/init.d/bind9 restart sudo rm /etc/apache2/sites-enabled/$dominio-default sudo rm -r /var/www/$dominio sudo sed -i '/'$dominio'\.teletec\.sj\.ifsc\.edu\.br Subdominio-'$dominio'/Id' /etc/postfix/virtual sudo sed -i '/'$dominio'@teletec\.sj\.ifsc\.edu\.br '$dominio'/Id' /etc/postfix/virtual sudo sed -i '/'$dominio'\.teletec\.sj\.ifsc\.edu\.br OK/Id' /etc/postfix/mydomains sudo postmap /etc/postfix/virtual sudo postmap /etc/postfix/mydomains sudo /etc/init.d/postfix restart # echo -e " * Dominio removido com sucesso!\t\t\t\t[ OK ]\n" # exit # fi #done # echo -e " * Você entrou com um dominio inválido!\t\t\t \e[31m [ ERRO ] \e[m" # echo -e " * O dominio não existe ou esta em branco.\n"
- Edição do Arquivo add-dominio.sh: Script em bash que adiciona o cliente (Subdominio, E-mail e Pagina WEB):
Sub-dominio: O script pega como base arquivos padrões ja criados e configurados ( padrao.conf e padrao.zone ), altera todas as palavras "padrao" destes arvivos pelo dominio escolhido pelo usuario e salva como "dominio-escolhido".zone e "dominio-escolhido".conf. Alem disso ele tambem inclui o caminho do arquivo de configuração ".conf" no "named.conf".
Pagina-Web: Assim como no sub-dominio, o script troca as palavras "padrao" que estão em um arquivo padrao de configuração ( padrao-default) pelo dominio escolhido pelo cliente, criando um novo arquivo de configuração com nome "dominio-escolhido"-default. Tambem cria uma pagina web html padrao.
E-mail: O script adiciona as linhas de configuração do e-mail do cliente nos arquivos "virtual" e "mydomains".
Após fazer as confgurações o script reinicia o DNS e o POSTFIX. (o APACHE2 é reiniciado na pagina PHP).
#!/bin/bash # Leonardo #echo -n "Nome do cliente: " #read nome #echo -n "Dominio: " #read dominio #echo=${dominio:=nulo} #IFS=$'\n' #for linha in `cat /etc/bind/named.conf`; do # if [ $linha = 'include "/etc/bind/'$dominio'.conf";' ];then # dominio=existe # break # fi #done # #if [ $dominio != nulo ] && [ $dominio != existe ];then nome=$1 dominio=$2 sudo echo 'include "/etc/bind/'$dominio'.conf";' >> /etc/bind/named.conf numero=`date | cut -d ":" -f 3 | cut -d " " -f 1` novoserial=$((1000000000+$numero)) sudo sed s/padrao/$dominio/g /etc/bind/padrao.conf > /etc/bind/$dominio.conf sudo sed s/padrao/$dominio/g /etc/bind/padrao.zone | sed s/2011061504/$novoserial/g > /etc/bind/$dominio.zone sudo /etc/init.d/bind9 restart sudo sed s/padrao/$dominio/g /etc/apache2/sites-available/padrao-default > /etc/apache2/sites-enabled/$dominio-default mkdir /var/www/$dominio sed s/dominio/$dominio/g /var/www/padrao/index.html | sed s/nome/"$nome"/g > /var/www/$dominio/index.html sudo echo ' ' >> /etc/postfix/virtual sudo echo $dominio'.teletec.sj.ifsc.edu.br Subdominio-'$dominio >> /etc/postfix/virtual sudo echo $dominio'@teletec.sj.ifsc.edu.br '$dominio >> /etc/postfix/virtual sudo echo $dominio'.teletec.sj.ifsc.edu.br OK' >> /etc/postfix/mydomains sudo postmap /etc/postfix/virtual sudo postmap /etc/postfix/mydomains sudo /etc/init.d/postfix restart # echo -e " * Dominio criado com sucesso!\t\t\t\t[ OK ]\n" # else # echo -e " * Você entrou com um dominio inválido!\t\t\t \e[31m [ ERRO ] \e[m" # echo -e " * O dominio ja existe ou esta em branco.\n" #fi