Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- Comandos Linux basicos/////////////////////////////////////////////
- ##########################Crear usuarios UNIX:
- sudo useradd -m -s /bin/bash [nombre user]
- //-m crea y monta un home directory con el mismo nombre que el user
- //-s le asigna el interprete de comandos bash (le permite usar la terminal y autentificarse)
- //Despues hay que generar la password
- sudo passwd [nombre user]
- #############################################
- #############################Permisos
- Cambiar set de permisos
- []=opcional
- sudo chmod [-R] 755 <ruta del archvio o directorio>
- //-R si la ruta apunta a un directorio todo su contenido pasara recursivamente a
- //775 (Permisos muy relajados lectura/escritura)
- Cambiar propietario del archivo
- sudo chown [-R] <user>:<group> <ruta archivo o directorio>
- //-R igual que chmod
- //<group> normalmente el mismo que el user, ya que unix al crear un user crea un grupo con su
- //mismo nombre y lo mete hay.
- //Si tienes problemas con los Documents roots de los sitios web dale de forma recursiva la carpeta /var/www/html
- al user www-data (usuario de apache),
- #####################################
- ///////////////////////////////////////////////////////////////////////
- APACHE///////////////////////////////////////////////////////////////
- #Comandos: sudo service apache2 <start,reload,stop,restart>
- #Archivos:/etc/apache2/sites-enabled/loquesea.conf
- #Config tipos de VirtualHost:
- Listen <Puerto de escuha> uno por cada puerto que levantes
- //Vhost basado en puertos(Cualquier IP a un puerto especifico)
- <VirtualHost *:[puerto]> (Si se quiere por varios puertos a la vez dejar un espacio y volver a poner *:[puerto adcional])
- //Raiz del servidor web
- DocumentRoot /var/www/html/site1
- </VirtualHost>
- //Vhost basado en IP(Ip determinada a un puerto especifico)
- <VirtualHost [IP]:[puerto]>
- //Raiz del servidor web
- DocumentRoot /var/www/html/site1
- </VirtualHost>
- //Vhost basado en dominio (Cualquier IP hacia con un dominio determinado)
- <VirtualHost *:8085>
- DocumentRoot /var/www/html/site3
- ServerName fran3.local //Dominio por el cual se accedera
- ServerAlias fran4.local //Dominio adicional por el cual acceder a este document root
- </VirtualHost>
- nota: meter entrada en el archivo host del cliente
- <IP (cualquiera del servidor (si utilizas el propio server como cliente [localhost]))> <dominio>
- Windows: C:\Windows\System32\drivers\etc (Abre el archivo desde un notepad con privilegios)
- Linux: /etc/hosts
- ##############################################################################################
- #Config AUTHbasic y AUTHDIGEST
- //Proteje un directorio de apache con user y password va dentro de un viertualhost de apache
- BASIC:
- <VirtualHost [IP]||*:[puerto]>
- DocumentRoot /var/www/html/site1
- //Imaginamos que dentro de site1 hay una carpeta llamada secret
- <Directory /var/www/html/secret>
- AuthType Basic
- AuthName "Putos nabos" //Pon lo que quieras
- AuthUserFile <ruta de archivo de USER> //ahora lo genero (Te recomiendo crear el directorio /etc/apache/passwords/<nombreFichero>)
- requiere valid-user //Todos los user del archivo tienen acceso
- //si pide un user determinado require <user>
- </Directory>
- </VirtualHost>
- Activar modulo auth_basic:
- sudo a2enmod auth_basic (deberia estar activo)
- Generacion de archivo de contraseñas:
- //Colocate en el directorio que contiene el archvio especificado en el AuthUserFile
- //Genera las credenciales de BASIC
- htpasswd [-c] <nombrefichero> (lo creara el comando) <username>
- //[-c] solo usalo la primera vez, si añades mas user con este parametro machacaras
- //Los anteriores
- //Reinicia apache y deberia ir tanto por navegador como por terminal
- //Ver el contenido del fichero (comprobar que todo esta guay)
- cat <nombrefichero>
- Terminal: wget http://<ip>||<dominio>:<puerto> --http-user=<user> --http-password=<password>
- Digest:
- <VirtualHost [IP]||*:[puerto]>
- DocumentRoot /var/www/html/site1
- //Imaginamos que dentro de site1 hay una carpeta llamada secret
- <Directory /var/www/html/secret>
- AuthType Digest
- AuthName "Putos_nabos" //Ahora si es importante recuerdalo
- AuthDigestProvider file
- AuthUserFile <ruta de archivo de USER> //no machaques el de Basic (Te recomiendo crear el directorio /etc/apache/passwords/<nombreFichero2>)
- requiere valid-user //Todos los user del archivo tienen acceso
- //si pide un user determinado require <user>
- </Directory>
- </VirtualHost>
- Activar modulo auth_digest:
- sudo a2enmod auth_digest (deberia estar activo)
- Generacion de archivo de contraseñas:
- //Colocate en el directorio que contiene el archvio especificado en el AuthUserFile
- //Genera las credenciales de Digest
- htdigest [-c] <nombrefichero> (lo creara el comando) Putos_nabos <username>
- //[-c] solo usalo la primera vez, si añades mas user con este parametro machacaras
- //Los anteriores
- //Es igual que BAsic pero hay que añadir antes del user lo que hayas puesto
- //En AuthName
- //Ver el contenido del fichero (comprobar que todo esta guay)
- cat <nombrefichero>
- //Reinicia apache y deberia ir tanto por navegador como por terminal
- Terminal: wget http://<ip>||<dominio>:<puerto> --http-user=<user> --http-password=<password>
- ###################################################################################################
- #Config APACHE SSL (Certificado para que un virtualhost vaya por HTTPS)
- //PASOS:
- apt-get install apache2 openssl
- mkdir -p /etc/ssl/localcerts //Diretorio donde generaremos el certificado
- openssl req -new -x509 -days 365 -nodes -out /etc/ssl/localcerts/apache.crt -keyout /etc/ssl/localcerts/apache.key
- //Esto genera un certificado asimetrico (clave publica apache.crt)/(clave privada apache.key) //Puedes cambiar los nombres la extension no
- chmod 600 /etc/ssl/localcerts/apache* //Opcional pero hazlo (Proteje los certificados desde el exterior)
- //Crear un virtualHOST SSL
- Listen 443
- <VirtualHost <ip>||*:443>
- DocumentRoot /var/www/html/sslite (Por ejemplo)
- SSLEngine On
- SSLCertificateFile /etc/ssl/localcerts/apache.crt
- SSLCertificateKeyFile /etc/ssl/localcerts/apache.key
- </VirtualHost>
- //Activar modulo SSL
- sudo a2enmod ssl (deberia estar activado)
- //Reinicia apache y deberia funcionar
- #Config Alias en un Virtualhost
- Un alias es un directorio alternativo al DocumentRoot de un virtualhost, es un enlace hacia un directorio
- que no este en el ambito del servidor web (var/www/html)
- Ejemplo Virtualhost con ALIAS
- <VirtualHost <ip>||*:<puerto>>
- DocumentRoot /var/www/html/site1
- <Directory /home>
- Require all granted //Necesario para mapear Alias del diretorio /home(Seguridad de Debian)
- </Directory>
- Alias /fulano /home/fulano/ftp
- //Al acceder a http://<ip>:puerto/fulano Accedemos al contenido de ftp
- //en esta carpeta debe de haber algo like index.html o dara un forbidden, acuerdate de que la carpeta
- //Pertenezca al user
- </VirtualHost>
- //Con esto el tema APACHE CERRADO
- ////////////////////////////////////////////////////////////////////////////////////////////////////
- FTP////////////////////////////////////////////////////////////////////////////////////////////////
- #Comandos: sudo service proftpd <start,reload,stop,restart>
- #Archivos:/etc/proftpd/proftpd.conf
- proftpd utiliza como usuarios los usuarios de UNIX <ver Crear usuarios UNIX>
- Utiliza el Puerto 21 para enviar los metodos (GET PUT..) y el 20 Para trasmitir los archivos
- //Nos hara hacer cositas con usuarios que creemos asegurate de que la home de cada usuario le pertenezca recursivamente
- a ese usuario sudo chown -R user:user /home/user (hazlo al final cuando hayas creado las carpetas de trabajo pertinentes)
- like a /home/fulano/ftp (cosas asi)
- #Config proftpd.conf
- //Enjaular usuarios en su home/ftp
- DefaultRoot /home/%u/ftp
- //Los user de UNIX en filezilla no podran salir de su carpeta ftp
- //Si creas los usuarios de UNIX con una shell falsa
- sudo useradd -m -s /bin/false [nombre user]
- //Es necesario Setear la propiedad
- RequireValidShell off
- //Recuerda reiniciar el servidor
- service proftpd restart
- #Metodos de acceso a un servidor FTP:
- -Filezilla
- - Inicia un navegador web.
- anònim ftp://<ip> //Si esta activado en proftp.conf
- ftp://user@<ip> //Pedira password
- ftp://user:contrasenya@<ip>
- -terminal
- wget ftp://<ip>/<archivo> //Anonimo
- wget ftp://user:contraseña@<ip>/<archivo> //AUtentificado
- /////////////////////////////Con esto FTP finiquitao
- //////////JAVA Bajar archivo por HTTP y subirlo por FTP a la home de uno de nuestros user (/home/mengano/ftp)
- EL programa se baja por HTTP el archivo http://<ip>/mengano/index.html (Recuerda Alias a /home/mengano/ftp)
- y lo sube renombrado like fran_index.html por FTP al mismo lugar ftp://mengano:password@<ip> = /home/mengano/ftp
- Es un esquema faltan los IMPORTS y los TRHOWs esto no compila ni flipando, necesitaras la libreria de ftp4java y añadirla al proyecto
- http://www.sauronsoftware.it/projects/ftp4j/download.php
- public class ClienteFTP {
- //Inicializo el stream de entrada y salida de mi programa JAVA anull
- private static InputStream reader=null;
- private static OutputStream writer=null;
- public static void main(String[] args) {
- String Path="http://<ip>/mengano/index.html";
- byte[] b=new byte[100]; //Lo utilizare de buffer
- //Creo el fichero que contendra el recurso pedido por HTTP
- File fichero= new File("index.html");
- if(!fichero.exists()) {
- fichero.createNewFile();
- }
- //Abrimos una conexion HTTP hacia el archivo deseado
- URLConnection conexion = new URL(Path).openConnection();
- conexion.connect();
- //Vinculamos nuestra entrada a la conexion HTTP
- reader = conexion.getInputStream();
- //Vinculamos la salida a nuestro fichero index.html
- writer = new FileOutputStream("index.html");
- //Mientras haya datos en el exterior escribe en el buffer y lo escribe en el fichero
- while(reader.read(b)!=-1){
- writer.write(b);
- }
- //Cerramos los streams
- writer.close();
- reader.close();
- //Renombramos el fichero si no esta renombrado ya
- File fichero_nuevo=new File("nombre_user_index.html");
- if(fichero.exists() && !fichero.getName().contains("nombreuser_")) {
- fichero.renameTo(fichero_nuevo);
- }
- //Creo un objeto FTPclient
- cliente=new FTPClient();
- //abro un socket FTP hacia el server
- cliente.connect("<ip servidor ftp>");
- //Me logueo en el server FTP
- cliente.login("mengano","mengano" );
- cliente.upload(new File("nombreuser_index.html"));
- }
- }
- ///////////////////////////////////////////////////////////////////////////
- //////////////PHP CRUD
- Un CRUD es un servicio que acepta peticiones las procesa y duevelve algo en este caso crea modifica y muestra y borra archivos a merced del cliente
- <?php
- $archivo=$_REQUEST['id'];
- $body=file_get_contents( 'php://input'); //Cuerpo de las peticiones (PUT,POST)
- $log="log.txt"; //Log donde guardo las peticiones hechas
- //Trabajo sobre el Directorio DATA/
- //Obetener archivo
- if ($_SERVER['REQUEST_METHOD'] == 'GET' ){
- if(file_exists("DATA/".$archivo)){
- $contenido=file_get_contents("DATA/".$archivo);
- echo $contenido;
- file_put_contents($log,' METHOD: GET FILE: '.$archivo." OK\n",FILE_APPEND);
- }else{
- echo 'Fichero no encontrado';
- file_put_contents($log,' METHOD: GET FILE: '.$archivo." ERROR\n",FILE_APPEND);
- }
- //Actualizar archivo
- } else if ($_SERVER['REQUEST_METHOD'] == 'POST' ){
- if(file_exists("DATA/".$archivo)){
- file_put_contents("DATA/".$archivo,$body);
- echo 'OK fichero actualidado';
- file_put_contents($log,' METHOD: POST FILE: '.$archivo." OK\n",FILE_APPEND);
- }else{
- echo 'El fichero no existe, crealo antes';
- file_put_contents($log,' METHOD: POST FILE: '.$archivo." ERROR\n",FILE_APPEND);
- }
- //Crear archivo
- } else if ($_SERVER['REQUEST_METHOD'] == 'PUT' ){
- if(file_exists("DATA/".$archivo)){
- echo 'El fichero ya existe';
- file_put_contents($log,' METHOD: PUT FILE: '.$archivo." ERROR\n",FILE_APPEND);
- }
- else{
- file_put_contents("DATA/".$archivo,$body);
- echo 'OK fichero creado';
- file_put_contents($log,' METHOD: PUT FILE: '.$archivo." OK\n",FILE_APPEND);
- }
- //Borrar archivo
- } else if ($_SERVER['REQUEST_METHOD'] == 'DELETE' ){
- if(file_exists("DATA/".$archivo)){
- unlink("DATA/".$archivo);
- echo 'Archivo Borrado corectamente';
- file_put_contents($log,' METHOD: DELETE FILE: '.$archivo." OK\n",FILE_APPEND);
- }else{
- echo 'El fichero no existe o no es accesible';
- file_put_contents($log,' METHOD: DELETE FILE: '.$archivo." ERROR\n",FILE_APPEND);
- }
- }
- ?>
- ////////////////////////////////////////////////////////////////////////////////////////////////
- /////////////////////////////////////JAVA CLIENTE CRUD
- Cliente JAVA que hara peticiones HTTP (REST) a nuestro PHP CRUD(Lo que hariamos con SoapUI)
- import java.io.DataInputStream;
- import java.io.DataOutputStream;
- import java.io.IOException;
- import java.net.HttpURLConnection;
- import java.net.MalformedURLException;
- import java.net.ProtocolException;
- import java.net.URL;
- //Esta Practica depende de los parametros pasados al programa (args[]) (Run Configuration en eclipse, en netbeans es parecido)
- public class PR9 {
- public static void main(String[] args) {
- URL url=null;
- HttpURLConnection conexion=null;
- DataInputStream reader=null;
- DataOutputStream writer=null;
- switch(args[0]) {
- case "GET":
- try {
- url = new URL(args[1]);
- conexion = (HttpURLConnection)url.openConnection();
- conexion.setRequestMethod("GET");
- conexion.setDoInput(true);
- reader=new DataInputStream(conexion.getInputStream());
- byte[] buffer=new byte[1024];
- int tamaño=-1;
- while((tamaño=reader.read(buffer))>-1) {
- System.out.write(buffer,0,tamaño);
- }
- conexion.disconnect();
- } catch (MalformedURLException e) {
- System.out.println(e.getMessage());
- } catch (ProtocolException e) {
- System.out.println(e.getMessage());
- } catch (IOException e) {
- System.out.println(e.getMessage());
- } finally {
- if(reader!=null) {
- try {
- reader.close();
- } catch (IOException e) {
- System.out.println(e.getMessage());
- }
- }
- }
- break;
- case "PUT":
- try {
- url = new URL(args[2]);
- conexion = (HttpURLConnection)url.openConnection();
- conexion.setRequestMethod("PUT");
- conexion.setDoInput(true);
- conexion.setDoOutput(true);
- writer=new DataOutputStream(conexion.getOutputStream());
- writer.writeBytes(args[1]);
- reader=new DataInputStream(conexion.getInputStream());
- byte[] buffer=new byte[1024];
- int tamaño=-1;
- while((tamaño=reader.read(buffer))>-1) {
- System.out.write(buffer,0,tamaño);
- }
- conexion.disconnect();
- } catch (MalformedURLException e) {
- System.out.println(e.getMessage());
- } catch (ProtocolException e) {
- System.out.println(e.getMessage());
- } catch (IOException e) {
- System.out.println(e.getMessage());
- System.out.println("Fichero ya existente");
- }finally {
- if(reader!=null) {
- try {
- reader.close();
- } catch (IOException e) {
- System.out.println(e.getMessage());
- }
- }
- if(writer!=null) {
- try {
- writer.close();
- } catch (IOException e) {
- System.out.println(e.getMessage());
- }
- }
- }
- break;
- case "POST":
- try {
- url = new URL(args[2]);
- conexion = (HttpURLConnection)url.openConnection();
- conexion.setRequestMethod("POST");
- conexion.setRequestProperty("Content-Type", "text/plain; charset=utf-8" );
- conexion.setDoInput(true);
- conexion.setDoOutput(true);
- writer=new DataOutputStream(conexion.getOutputStream());
- writer.writeBytes(args[1]);
- reader=new DataInputStream(conexion.getInputStream());
- byte[] buffer=new byte[1024];
- int tamaño=-1;
- while((tamaño=reader.read(buffer))>-1) {
- System.out.write(buffer,0,tamaño);
- }
- conexion.disconnect();
- } catch (MalformedURLException e) {
- System.out.println(e.getMessage());
- } catch (ProtocolException e) {
- System.out.println(e.getMessage());
- } catch (IOException e) {
- System.out.println(e.getMessage());
- }finally {
- if(reader!=null) {
- try {
- reader.close();
- } catch (IOException e) {
- System.out.println(e.getMessage());
- }
- }
- if(writer!=null) {
- try {
- writer.close();
- } catch (IOException e) {
- System.out.println(e.getMessage());
- }
- }
- }
- break;
- case "DELETE":
- try {
- url = new URL(args[1]);
- conexion = (HttpURLConnection)url.openConnection();
- conexion.setRequestMethod("DELETE");
- conexion.setDoInput(true);
- reader=new DataInputStream(conexion.getInputStream());
- byte[] buffer=new byte[1024];
- int tamaño=-1;
- while((tamaño=reader.read(buffer))>-1) {
- System.out.write(buffer,0,tamaño);
- }
- conexion.disconnect();
- } catch (MalformedURLException e) {
- System.out.println(e.getMessage());
- } catch (ProtocolException e) {
- System.out.println(e.getMessage());
- } catch (IOException e) {
- System.out.println(e.getMessage());
- } finally {
- if(reader!=null) {
- try {
- reader.close();
- } catch (IOException e) {
- System.out.println(e.getMessage());
- }
- }
- }
- }//Fin Swicht
- }//Fin main
- }//
- ///////Aparcao
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement