Diferencia entre revisiones de «Grupo de Cabina de votación (2014-15)»
(→Subsistemas relacionados) |
(→Instalación del subsistema) |
||
(No se muestran 15 ediciones intermedias de 4 usuarios) | |||
Línea 35: | Línea 35: | ||
Para que el subsistema de Almacenamiento de votos, pueda obtener dicho voto, le mandaremos un JSON con la siguiente estructura: | Para que el subsistema de Almacenamiento de votos, pueda obtener dicho voto, le mandaremos un JSON con la siguiente estructura: | ||
− | {"age": | + | { |
− | + | "age": "24", | |
− | + | "answers": [ | |
− | + | { | |
− | + | "question":"Pregunta 1", | |
− | + | "answer_question":"SI" | |
− | } | + | }, |
+ | { | ||
+ | "question":"Pregunta 2", | ||
+ | "answer_question":"SI" | ||
+ | } | ||
+ | ], | ||
+ | "id": 1, | ||
+ | "autonomous_community": "Andalucia", | ||
+ | "genre": "Masculino", | ||
+ | "id_poll": 32778 | ||
+ | } | ||
+ | |||
* [[Grupo Creación/Administración de censos(2014-15)|Creación/Administración de censos]] | * [[Grupo Creación/Administración de censos(2014-15)|Creación/Administración de censos]] | ||
Línea 52: | Línea 63: | ||
http://localhost:8000/cabinaus/15/ | http://localhost:8000/cabinaus/15/ | ||
+ | |||
+ | == ACLARACIONES RSA == | ||
+ | Como ya se ha avisado, el '''cifrado-descifrado de RSA tanto en Python como en Java ya funcionan''' y el voto es guardado cifrado. | ||
+ | El formato que tiene al guardarse en la base de dato de almacenamiento es: | ||
+ | |||
+ | {"votes":["J9mbVwCRkeIGewJTPyZ7ZYxDJ7GsFO.........vERJUZlc0v3eF02M0WtKxEypWA==\n"],"msg":1} | ||
+ | (Ejemplo real, [http://php-egc.rhcloud.com/get_votes.php?votation_id=998]) | ||
+ | |||
+ | == ¡Advertencias! == | ||
+ | *1. La cadena esta codificada en BASE64 | ||
+ | *2. La cadena puede contener "\n" y en java puede dar problemas. Esos caracteres '''SÍ''' son necesarios. | ||
+ | *3. La cadena(en un 95% de las veces) puede finalizar en "\n". Eso no pertenece al cifrado y se debe obviar. (No se porque aparece en la base de datos de ellos) | ||
+ | |||
+ | == Descifrado con JAVA == | ||
+ | BASE64Decoder decoder = new BASE64Decoder(); | ||
+ | String textoCon64 = "textoDeLaBD"; | ||
+ | byte[] bytesDecode = decoder.decodeBuffer(textoCon64); | ||
+ | String textoNormal = auth.decrypt(bytesDecode, keyPrivate); | ||
+ | System.out.println("descifrado es: " + textoNormal); | ||
+ | |||
+ | (No hay que tomars el código al pie de la letra, pues está basado en muchas modificaciones del .jar de verificación que he ido realizando, pero '''FUNCIONA''') | ||
+ | (Este código no contempla los puntos 2 y 3 mencionados anteriormente) | ||
== Instalación del subsistema == | == Instalación del subsistema == | ||
Línea 61: | Línea 94: | ||
*2. Instalar Setuptools ([http://www.lfd.uci.edu/~gohlke/pythonlibs/ link]) teniendo en cuenta python 2.7.7 y 64 o 32 bits | *2. Instalar Setuptools ([http://www.lfd.uci.edu/~gohlke/pythonlibs/ link]) teniendo en cuenta python 2.7.7 y 64 o 32 bits | ||
*3. Ir a la ruta de instalación de scripts python (por defecto: C:\Python27\Scripts) desde el cmd y ejecutar: | *3. Ir a la ruta de instalación de scripts python (por defecto: C:\Python27\Scripts) desde el cmd y ejecutar: | ||
+ | easy_install pip | ||
pip install Django==1.4.7 | pip install Django==1.4.7 | ||
pip install djangorestframework==2.4.3 | pip install djangorestframework==2.4.3 | ||
Línea 66: | Línea 100: | ||
pip install django-cors-headers==0.13 | pip install django-cors-headers==0.13 | ||
<!-- pip install django-filter==0.9.1 --> | <!-- pip install django-filter==0.9.1 --> | ||
− | pip install requests==2. | + | pip install requests==2.4.3 |
+ | pip install pycrypto==2.6.1 | ||
*4. Ir a la carpeta donde esté el proyecto por cmd y ejecutar: manage.py runserver | *4. Ir a la carpeta donde esté el proyecto por cmd y ejecutar: manage.py runserver | ||
*5. Abrir el navegador en 127.0.0.1:8000 | *5. Abrir el navegador en 127.0.0.1:8000 | ||
Línea 72: | Línea 107: | ||
== Instalación del subsistema en Ubuntu == | == Instalación del subsistema en Ubuntu == | ||
− | 1.- Descargar los scripts para Linux: | + | 1.- Crear carpeta llamada '''cabina-integracion''' |
− | + | ||
− | + | mkdir cabina-integracion | |
+ | |||
+ | |||
+ | 2.- Descargar los scripts para Linux: | ||
+ | |||
+ | [https://www.dropbox.com/s/iihid4n7ffv0bh2/install.sh?dl=0 install.sh] | ||
+ | [https://www.dropbox.com/s/v93phu3wg3k78tp/run.sh?dl=0 run.sh] | ||
− | |||
− | |||
− | |||
− | + | 3.- Mover los scripts descargados a la carpeta '''cabina-integracion''', creada en el punto 1 | |
− | + | ||
− | + | 4.- Dar permisos de ejecución a los scripts: | |
+ | |||
+ | chmod +x *.sh | ||
+ | |||
+ | |||
+ | 5.- Copiamos dentro de la carpeta '''cabina-integracion''' la última versión de cabina '''cabina-agora-us'''. La estructura que va a tener la carpeta '''cabina-integracion''' es la siguiente: | ||
+ | |||
+ | '''cabina-integracion''' | ||
| | | | ||
|- cabina-agora-us | |- cabina-agora-us | ||
Línea 89: | Línea 134: | ||
|- run.sh | |- run.sh | ||
− | + | ||
− | + | 6.- Ejecutar scripts: | |
+ | |||
./install.sh | ./install.sh | ||
− | |||
./run.sh | ./run.sh | ||
− | + | El primer script (install.sh) instala y arranca el proyecto. El segundo (run.sh) solo lo arranca. Por tanto la primera vez que ejecutéis el proyecto después de descargarlo ejecutad el script install.sh, y el resto de las veces el run.sh | |
− | |||
− | |||
− | |||
− | Tras | + | Tras la ejecución de cada script, saldrá el siguiente mensaje: '''================= OK ===================''' y el terminal se quedara "esperando". Llegados a este punto tendremos el servidor arrancado. Para parar el servidor presionamos Ctrl + c. |
Revisión actual del 17:00 21 dic 2014
Contenido
Definición
Un subsistema de AGORA@US para mostrar las opciones de la votación donde el votante pueda realizar la votación. El voto tiene que cifrarse en cliente, nunca debe llegar al servidor el voto en claro. A la cabina sólo podrán llegar usuarios autenticados que aún no hayan votado. El voto se enviará cifrado al almacenamiento de votos
Miembros
- Francisco Javier Aguadero García: Gestor de la configuración
- Alfonso Alcántara López: Gestor de la configuración
- José Ignacio Algarín Rodríguez: Gestor de la configuración
- Carlos Borja García-Baquero: Gestor de la configuración
- José Javier Delgado Cuder: Gestor de la configuración
- David Jiménez Vargas: Gestor de la configuración
- Juan Elias Maireles Osuna: Jefe de proyecto
- David Miñon Saborido: Gestor de la configuración
- Lara Rodríguez Ternero: Gestor de la configuración
Iteraciones
- Taller de creación de grupos (29/09/14)
- Taller de arquitectura de la aplicación (01/10/14)
- Taller de gestión de código (1) (06/10/14)
- Taller de gestión de código (2) (08/10/14)
- Taller de herramientas de análisis (15/10/2014)
- Taller de gestión del código (3) (27/10/2014)
Subsistemas relacionados
Para que el subsistema de Almacenamiento de votos, pueda obtener dicho voto, le mandaremos un JSON con la siguiente estructura:
{ "age": "24", "answers": [ { "question":"Pregunta 1", "answer_question":"SI" }, { "question":"Pregunta 2", "answer_question":"SI" } ], "id": 1, "autonomous_community": "Andalucia", "genre": "Masculino", "id_poll": 32778 }
Para que el subsistema de Creación/Administración de Censos puedan comunicarse con nuestro subsistema, la URI que debe poner en el botón o enlace para que salga la cabina de votación es la siguiente:
http://localhost:8000/cabinaus/id_votacion/
Donde id_votacion siempre debe ser un número, por ejemplo:
http://localhost:8000/cabinaus/15/
ACLARACIONES RSA
Como ya se ha avisado, el cifrado-descifrado de RSA tanto en Python como en Java ya funcionan y el voto es guardado cifrado. El formato que tiene al guardarse en la base de dato de almacenamiento es:
{"votes":["J9mbVwCRkeIGewJTPyZ7ZYxDJ7GsFO.........vERJUZlc0v3eF02M0WtKxEypWA==\n"],"msg":1} (Ejemplo real, [1])
¡Advertencias!
- 1. La cadena esta codificada en BASE64
- 2. La cadena puede contener "\n" y en java puede dar problemas. Esos caracteres SÍ son necesarios.
- 3. La cadena(en un 95% de las veces) puede finalizar en "\n". Eso no pertenece al cifrado y se debe obviar. (No se porque aparece en la base de datos de ellos)
Descifrado con JAVA
BASE64Decoder decoder = new BASE64Decoder(); String textoCon64 = "textoDeLaBD"; byte[] bytesDecode = decoder.decodeBuffer(textoCon64); String textoNormal = auth.decrypt(bytesDecode, keyPrivate); System.out.println("descifrado es: " + textoNormal);
(No hay que tomars el código al pie de la letra, pues está basado en muchas modificaciones del .jar de verificación que he ido realizando, pero FUNCIONA) (Este código no contempla los puntos 2 y 3 mencionados anteriormente)
Instalación del subsistema
Probado en Windows 7 SP1 x64 (imagen de DreamSpark disponible en la web de la escuela). Para otros sistemas el procedimiento es el mismo.
Probado en Windows 8 (x64 y x32) y 8.1 (x64 y x32)
- 1. Instalar Python 2.7.7 (link)
- 2. Instalar Setuptools (link) teniendo en cuenta python 2.7.7 y 64 o 32 bits
- 3. Ir a la ruta de instalación de scripts python (por defecto: C:\Python27\Scripts) desde el cmd y ejecutar:
easy_install pip pip install Django==1.4.7 pip install djangorestframework==2.4.3 pip install rsa==3.1.4 pip install django-cors-headers==0.13 pip install requests==2.4.3 pip install pycrypto==2.6.1
- 4. Ir a la carpeta donde esté el proyecto por cmd y ejecutar: manage.py runserver
- 5. Abrir el navegador en 127.0.0.1:8000
Instalación del subsistema en Ubuntu
1.- Crear carpeta llamada cabina-integracion
mkdir cabina-integracion
2.- Descargar los scripts para Linux:
3.- Mover los scripts descargados a la carpeta cabina-integracion, creada en el punto 1
4.- Dar permisos de ejecución a los scripts:
chmod +x *.sh
5.- Copiamos dentro de la carpeta cabina-integracion la última versión de cabina cabina-agora-us. La estructura que va a tener la carpeta cabina-integracion es la siguiente:
cabina-integracion | |- cabina-agora-us |- install.sh |- run.sh
6.- Ejecutar scripts:
./install.sh
./run.sh
El primer script (install.sh) instala y arranca el proyecto. El segundo (run.sh) solo lo arranca. Por tanto la primera vez que ejecutéis el proyecto después de descargarlo ejecutad el script install.sh, y el resto de las veces el run.sh
Tras la ejecución de cada script, saldrá el siguiente mensaje: ================= OK =================== y el terminal se quedara "esperando". Llegados a este punto tendremos el servidor arrancado. Para parar el servidor presionamos Ctrl + c.