From b8d27db3fb59d69e00da27b1126410465166aba4 Mon Sep 17 00:00:00 2001 From: luisgulo Date: Fri, 2 Jun 2023 17:38:45 +0200 Subject: [PATCH] Subido a Gitea --- .directory | 2 + .gambas/FMAIN | Bin 0 -> 4920 bytes .gambas/FRMROOTPASSWORD | Bin 0 -> 1656 bytes .hidden/CHANGELOG | 3 ++ .icon.png | Bin 0 -> 16728 bytes .lang/#project.pot | 20 +++++++ .lang/.pot | 53 +++++++++++++++++++ .lang/FMain.pot | 24 +++++++++ .lang/en.mo | Bin 0 -> 775 bytes .lang/en.po | 43 +++++++++++++++ .lang/es_ES.mo | Bin 0 -> 832 bytes .lang/es_ES.po | 43 +++++++++++++++ .lang/frmRootPassword.pot | 28 ++++++++++ .project | 31 +++++++++++ .settings | 18 +++++++ .src/FMain.class | 102 +++++++++++++++++++++++++++++++++++ .src/FMain.class~ | 103 ++++++++++++++++++++++++++++++++++++ .src/FMain.form | 50 +++++++++++++++++ .src/FMain.form~ | 50 +++++++++++++++++ .src/frmRootPassword.class | 18 +++++++ .src/frmRootPassword.class~ | 18 +++++++ .src/frmRootPassword.form | 26 +++++++++ .src/frmRootPassword.form~ | 20 +++++++ .startup | 10 ++++ README.md | 0 WifiQR-icono.png | Bin 0 -> 14472 bytes WifiQR.gambas | Bin 0 -> 23535 bytes WifiQR_Ejemplo.png | Bin 0 -> 776 bytes 28 files changed, 662 insertions(+) create mode 100644 .directory create mode 100644 .gambas/FMAIN create mode 100644 .gambas/FRMROOTPASSWORD create mode 100644 .hidden/CHANGELOG create mode 100644 .icon.png create mode 100644 .lang/#project.pot create mode 100644 .lang/.pot create mode 100644 .lang/FMain.pot create mode 100644 .lang/en.mo create mode 100644 .lang/en.po create mode 100644 .lang/es_ES.mo create mode 100644 .lang/es_ES.po create mode 100644 .lang/frmRootPassword.pot create mode 100644 .project create mode 100644 .settings create mode 100644 .src/FMain.class create mode 100644 .src/FMain.class~ create mode 100644 .src/FMain.form create mode 100644 .src/FMain.form~ create mode 100644 .src/frmRootPassword.class create mode 100644 .src/frmRootPassword.class~ create mode 100644 .src/frmRootPassword.form create mode 100644 .src/frmRootPassword.form~ create mode 100644 .startup create mode 100644 README.md create mode 100644 WifiQR-icono.png create mode 100755 WifiQR.gambas create mode 100644 WifiQR_Ejemplo.png diff --git a/.directory b/.directory new file mode 100644 index 0000000..06dab1c --- /dev/null +++ b/.directory @@ -0,0 +1,2 @@ +[Desktop Entry] +Icon=./.icon.png diff --git a/.gambas/FMAIN b/.gambas/FMAIN new file mode 100644 index 0000000000000000000000000000000000000000..63b82bfcb51b2619ce1dbbd83e18c4d4045367e4 GIT binary patch literal 4920 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 fNJ?u+kLWQSd&Z*UwInS#p4FrU+r^O!uH2(PM 1.0.5 +- Lanzamiento inicial + diff --git a/.icon.png b/.icon.png new file mode 100644 index 0000000000000000000000000000000000000000..ca98bdf2e08ab843ce2b2a82adbda7fd29e45e3b GIT binary patch literal 16728 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 literal 0 HcmV?d00001 diff --git a/.lang/en.po b/.lang/en.po new file mode 100644 index 0000000..e4894ef --- /dev/null +++ b/.lang/en.po @@ -0,0 +1,43 @@ +#, fuzzy +msgid "" +msgstr "" +"Project-Id-Version: WifiQR 3.12.2\n" +"PO-Revision-Date: 2020-01-12 17:17 UTC\n" +"Last-Translator: luisgulo \n" +"Language: en\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" + +#: .project:1 FMain.form:15 +msgid "WIFI & QR" +msgstr "WIFI & QR" + +#: .project:2 +msgid "Recupera tus claves WIFI y genera conexiones a ellas como códigos QR" +msgstr "Recover your WIFI keys and generate connections to them as QR codes" + +#: FMain.form:29 +msgid "WiFi a las que te has conectado" +msgstr "WiFi you have connected to" + +#: FMain.form:34 +msgid "abc123ABC" +msgstr "abc123ABC" + +#: frmRootPassword.form:11 +msgid "Necesario usar clave de 'root'" +msgstr "You need to use 'root' password" + +#: frmRootPassword.form:22 +msgid "Contraseña de 'root'" +msgstr "'root' password" + +#: frmRootPassword.form:27 +msgid "Aceptar" +msgstr "" + +#: frmRootPassword.form:33 +msgid " Salir" +msgstr "Quit" + diff --git a/.lang/es_ES.mo b/.lang/es_ES.mo new file mode 100644 index 0000000000000000000000000000000000000000..b08403975048ac4688504cef0953212bea0c4386 GIT binary patch literal 832 zcmdUsK~EGh7>27N=tM6jdLsH=l+&y`Ljq(}0_Qh^L>5W%zVE!bs{jXgIQ35o8U8u;|G`qKfw(6 z4Q_)!;4YZHBt#d!566r*@IAOWU!TCgu>J_goOhQeIq%_^^8t=IpWvAD4URcCu1s?7 zz;V3*BSKsS*Fd~Wd>=>5#kTR7I(HPd2tix2)=sP{9tG({$C}`z=hH8eN~SqyZI}}; zSh1H*TWTOuwLIj1$^%x-h@GU+_({>zPQTZuW2)H1g0hB>G#;KLaa~LF*#k@J^lPar z>uGZ!#ycL2XS%1+7rWjzOo3^Cyuq*vva~|(sw|&hecBNl&c4RWv|pw#*?F8$(2m~I zn**9}WqB)4HrCStAL>|2pUJ=lOD%-`PraAa&isy_eB$szz2wWB;nVm8|vGx)(RdTJ0o$NH)kk9-%AnQFu72r8bX9 j?Mvr5JlP)h(xr>Oc=jH\n" +"Language: es_ES\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" + +#: .project:1 FMain.form:15 +msgid "WIFI & QR" +msgstr "WIFI & QR" + +#: .project:2 +msgid "Recupera tus claves WIFI y genera conexiones a ellas como códigos QR" +msgstr "Recupera tus claves WIFI y genera conexiones a ellas como códigos QR" + +#: FMain.form:29 +msgid "WiFi a las que te has conectado" +msgstr "WiFi a las que te has conectado" + +#: FMain.form:34 +msgid "abc123ABC" +msgstr "abc123ABC" + +#: frmRootPassword.form:11 +msgid "Necesario usar clave de 'root'" +msgstr "Necesario usar clave de 'root'" + +#: frmRootPassword.form:22 +msgid "Contraseña de 'root'" +msgstr "Contraseña de 'root'" + +#: frmRootPassword.form:27 +msgid "Aceptar" +msgstr "Aceptar" + +#: frmRootPassword.form:33 +msgid " Salir" +msgstr " Salir" + diff --git a/.lang/frmRootPassword.pot b/.lang/frmRootPassword.pot new file mode 100644 index 0000000..91421b7 --- /dev/null +++ b/.lang/frmRootPassword.pot @@ -0,0 +1,28 @@ +# /home/luisgulo/ProyectosGAMBAS/WifiQR/.src/frmRootPassword.class +# Generated by the Gambas 3.12 compiler + +#, fuzzy +msgid "" +msgstr "" +"Project-Id-Version: $(PACKAGE) $(VERSION)\n" +"POT-Creation-Date: 2020-01-12 17:28 UTC\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" + +#: frmRootPassword.form:11 +msgid "Necesario usar clave de 'root'" +msgstr "" + +#: frmRootPassword.form:22 +msgid "Contraseña de 'root'" +msgstr "" + +#: frmRootPassword.form:27 +msgid "Aceptar" +msgstr "" + +#: frmRootPassword.form:33 +msgid " Salir" +msgstr "" + diff --git a/.project b/.project new file mode 100644 index 0000000..471c633 --- /dev/null +++ b/.project @@ -0,0 +1,31 @@ +# Gambas Project File 3.0 +Title=WIFI & QR +Startup=FMain +Icon=WifiQR-icono.png +Version=1.0.5 +Component=gb.image +Component=gb.gui +Component=gb.form +Description="Recupera tus claves WIFI y genera conexiones a ellas como códigos QR" +Authors="Luis GuLo" +TabSize=2 +Translate=1 +Language=es_ES +SourcePath=/home/luisgulo/ProyectosGAMBAS/SOURCEs +Maintainer=luisgulo +Vendor=LuisGulo +Address=luisgulo@soloconlinux.org.es +Url=https://repositorio.soloconlinux.org.es +License=General Public License +PackageName=wifiqr-1.0.5 +CreateEachDirectory=1 +Packager=1 +Systems=debian +Menus=debian:"Applications/Network/Monitoring" +Categories=debian:"Network" +Groups=debian:"net" +ExtraDependencies=debian:"qrencode\t\t" +Tags=Network,Profiling,RasterGraphics,System,Web +Dependencies=qrencode +WebSite=https://repositorio.soloconlinux.org.es +CreateMenu=1 diff --git a/.settings b/.settings new file mode 100644 index 0000000..29ca11f --- /dev/null +++ b/.settings @@ -0,0 +1,18 @@ +[Breakpoints] +Count=0 + +[DebugWindow] +Count=0 + +[Executable] +Path="WifiQR.gambas" + +[OpenFile] +Active=2 +File[1]=".src/FMain.form" +File[2]=".src/FMain.class:69.8" +Count=2 + +[Watches] +Count=0 + diff --git a/.src/FMain.class b/.src/FMain.class new file mode 100644 index 0000000..2b85d3c --- /dev/null +++ b/.src/FMain.class @@ -0,0 +1,102 @@ +' Gambas class file + +'' Generar Imagen QR desde consola +' echo 'WIFI:S:IDENTIFICADOR_WIFI;T:WEP;P:ABC1234;;' |qrencode -o /tmp/qr2.png -s 9 -v l +' Idem pero generar hacia standard output +' echo 'WIFI:S:IDENTIFICADOR_WIFI;T:WEP;P:ABC1234;;' |qrencode -o - -s 9 -v 3 +' Codificacion(T) => WEP/WPA/nopass +Public RootPassword As String = "" +Public RutaWIFIS As String = "/etc/NetworkManager/system-connections" + +Public Sub Form_Open() + System.Shell = "/bin/bash" + Me.Text = "WIFI & QR " & " Versión " & Application.Version + RellenarWifis() + ' Pintamos QR de Ejemplo + GeneraImagenWifiQR("SOLO_CON_LINUX", "WPA", "ABCD1234") + Me.Show + 'Pedimos clave de Root y comprobamos si es correcta + frmRootPassword.ShowModal + CompruebaPwRoot() +End + +Public Function RellenarWifis() + 'Buscar lista de Wifis a las que se ha conectado el equipo alguna vez + Dim Fichero As String + For Each Fichero In Dir(RutaWIFIS).Sort() + ComboWIFIS.Add(Fichero) + Next +End + + +Public Sub CheckMostrarClave_Click() + If CheckMostrarClave.Value + txtClave.Password = False + Else + txtClave.Password = True + Endif +End + +Public Sub OjoVerClave_MouseDown() + CheckMostrarClave_Click() + CheckMostrarClave.Value = Not CheckMostrarClave.Value +End + +Public Sub ComboWIFIS_Click() + Dim FicheroWifi As String + FicheroWifi = Shell$(RutaWIFIS & "/" & ComboWIFIS.Current.Text) + 'Message("Ahora es:" & FicheroWifi) + 'Cargar Valores + Dim SSID As String + Dim TIPO As String + Dim CLAVE As String + Shell "echo -n $(echo " & RootPassword & " | su --session-command \"grep -i 'SSID' " & FicheroWifi & "\" | awk -F '=' '{print $2}')" To SSID + Shell "echo -n $(echo " & RootPassword & " | su --session-command \"grep -i 'KEY-MGMT' " & FicheroWifi & "\" | awk -F '=' '{print $2}')" To TIPO + Shell "echo -n $(echo " & RootPassword & " | su --session-command \"grep -i 'PSK=' " & FicheroWifi & "\" | awk -F '=' '{print $2}')" To CLAVE + txtClave.Text = CLAVE + GeneraImagenWifiQR(SSID, TIPO, CLAVE) +End + + +Public Sub botonClaveRoot_Click() + frmRootPassword.ShowModal + CompruebaPwRoot() +End + +Public Function CompruebaPwRoot() + Dim Resultado As String + Dim F1 As String + F1 = Shell$(RutaWIFIS & "/" & ComboWIFIS[0].Text) + Shell "echo " & RootPassword & " | su --session-command \"cat " & F1 & "\" 1>/dev/null 2>/dev/null; echo -n $?" To Resultado + 'Message("recibi: -" & Resultado & "-") + If Resultado = "0" + ' Clave Correcta => Desbloqueamos Controles + ComboWIFIS.Enabled = True + OjoVerClave.Enabled = True + CheckMostrarClave.Enabled = True + botonGrabarQR.Enabled = True + Else + ' Clave Incorrecta => Bloqueado + ComboWIFIS.Enabled = False + OjoVerClave.Enabled = False + CheckMostrarClave.Enabled = False + botonGrabarQR.Enabled = False + Endif +End + +Public Sub botonGrabarQR_Click() + Dim ruta As String + ruta = User.Home & "/WifiQR-" & ComboWIFIS.Current.Text & ".png" + imagenQR.Picture.Save(ruta) + Message("Conexión WifiQR grabada en: " & ruta) +End + + +Public Function GeneraImagenWifiQR(SSID As String, TIPO As String, CLAVE As String) + 'Generamos PNG en formato String + Dim TEXTOQR As String + 'Shell "echo 'WIFI:S:SOLO_CON_LINUX;T:WPA;P:ABC1234;;' |qrencode -o - -s 9 -v 3" To TEXTOQR + Shell "echo 'WIFI:S:" & SSID & ";T:" & TIPO & ";P:" & CLAVE & ";;' |qrencode -o - -s 9 -v 3" To TEXTOQR + imagenQR.Picture = Picture.FromString(TEXTOQR) +End + diff --git a/.src/FMain.class~ b/.src/FMain.class~ new file mode 100644 index 0000000..70d7e27 --- /dev/null +++ b/.src/FMain.class~ @@ -0,0 +1,103 @@ +' Gambas class file + +'' Generar Imagen QR desde consola +' echo 'WIFI:S:IDENTIFICADOR_WIFI;T:WEP;P:ABC1234;;' |qrencode -o /tmp/qr2.png -s 9 -v l +' Idem pero generar hacia standard output +' echo 'WIFI:S:IDENTIFICADOR_WIFI;T:WEP;P:ABC1234;;' |qrencode -o - -s 9 -v 3 +' Codificacion(T) => WEP/WPA/nopass +Public RootPassword As String = "" +Public RutaWIFIS As String = "/etc/NetworkManager/system-connections" + +Public Sub Form_Open() + System.Shell = "/bin/bash" + Me.Text = "WIFI & QR " & " Versión " & Application.Version + RellenarWifis() + ' Pintamos QR de Ejemplo + GeneraImagenWifiQR("SOLO_CON_LINUX", "WPA", "ABCD1234") + Me.Show + 'Pedimos clave de Root y comprobamos si es correcta + frmRootPassword.ShowModal + CompruebaPwRoot() +End + +Public Function RellenarWifis() + 'Buscar lista de Wifis a las que se ha conectado el equipo alguna vez + Dim Fichero As String + ComboWIFIS.Add("SOLO_CON_LINUX") + For Each Fichero In Dir(RutaWIFIS).Sort() + ComboWIFIS.Add(Fichero) + Next +End + + +Public Sub CheckMostrarClave_Click() + If CheckMostrarClave.Value + txtClave.Password = False + Else + txtClave.Password = True + Endif +End + +Public Sub OjoVerClave_MouseDown() + CheckMostrarClave_Click() + CheckMostrarClave.Value = Not CheckMostrarClave.Value +End + +Public Sub ComboWIFIS_Click() + Dim FicheroWifi As String + FicheroWifi = Shell$(RutaWIFIS & "/" & ComboWIFIS.Current.Text) + 'Message("Ahora es:" & FicheroWifi) + 'Cargar Valores + Dim SSID As String + Dim TIPO As String + Dim CLAVE As String + Shell "echo -n $(echo " & RootPassword & " | su --session-command \"grep -i 'SSID' " & FicheroWifi & "\" | awk -F '=' '{print $2}')" To SSID + Shell "echo -n $(echo " & RootPassword & " | su --session-command \"grep -i 'KEY-MGMT' " & FicheroWifi & "\" | awk -F '=' '{print $2}')" To TIPO + Shell "echo -n $(echo " & RootPassword & " | su --session-command \"grep -i 'PSK=' " & FicheroWifi & "\" | awk -F '=' '{print $2}')" To CLAVE + txtClave.Text = CLAVE + GeneraImagenWifiQR(SSID, TIPO, CLAVE) +End + + +Public Sub botonClaveRoot_Click() + frmRootPassword.ShowModal + CompruebaPwRoot() +End + +Public Function CompruebaPwRoot() + Dim Resultado As String + Dim F1 As String + F1 = Shell$(RutaWIFIS & "/" & ComboWIFIS[0].Text) + Shell "echo " & RootPassword & " | su --session-command \"cat " & F1 & "\" 1>/dev/null 2>/dev/null; echo -n $?" To Resultado + 'Message("recibi: -" & Resultado & "-") + If Resultado = "0" + ' Clave Correcta => Desbloqueamos Controles + ComboWIFIS.Enabled = True + OjoVerClave.Enabled = True + CheckMostrarClave.Enabled = True + botonGrabarQR.Enabled = True + Else + ' Clave Incorrecta => Bloqueado + ComboWIFIS.Enabled = False + OjoVerClave.Enabled = False + CheckMostrarClave.Enabled = False + botonGrabarQR.Enabled = False + Endif +End + +Public Sub botonGrabarQR_Click() + Dim ruta As String + ruta = User.Home & "/WifiQR-" & ComboWIFIS.Current.Text & ".png" + imagenQR.Picture.Save(ruta) + Message("Conexión WifiQR grabada en: " & ruta) +End + + +Public Function GeneraImagenWifiQR(SSID As String, TIPO As String, CLAVE As String) + 'Generamos PNG en formato String + Dim TEXTOQR As String + 'Shell "echo 'WIFI:S:SOLO_CON_LINUX;T:WPA;P:ABC1234;;' |qrencode -o - -s 9 -v 3" To TEXTOQR + Shell "echo 'WIFI:S:" & SSID & ";T:" & TIPO & ";P:" & CLAVE & ";;' |qrencode -o - -s 9 -v 3" To TEXTOQR + imagenQR.Picture = Picture.FromString(TEXTOQR) +End + diff --git a/.src/FMain.form b/.src/FMain.form new file mode 100644 index 0000000..228d223 --- /dev/null +++ b/.src/FMain.form @@ -0,0 +1,50 @@ +# Gambas Form File 3.0 + +{ Form Form + MoveScaled(0,0,50,62) + Text = ("WIFI & QR") + Icon = Picture["WifiQR-icono.png"] + Resizable = False + { CheckMostrarClave CheckBox + MoveScaled(40,9,8,4) + Enabled = False + Text = (" ") + } + { ComboWIFIS ComboBox + MoveScaled(2,3,36,4) + Enabled = False + ReadOnly = True + Text = ("WiFi a las que te has conectado") + } + { txtClave TextBox + MoveScaled(7,9,32,4) + Text = ("abc123ABC") + ReadOnly = True + Password = True + } + { imagenQR PictureBox + MoveScaled(2,14,46,46) + Expand = True + Border = Border.Plain + Stretch = True + } + { PictureBox1 PictureBox + MoveScaled(40,1,8,8) + Picture = Picture["WifiQR-icono.png"] + Stretch = True + } + { OjoVerClave PictureBox + MoveScaled(43,9,5,5) + Enabled = False + Picture = Picture["icon:/32/watch"] + } + { botonClaveRoot Button + MoveScaled(2,9,4,4) + Picture = Picture["icon:/22/unlock"] + } + { botonGrabarQR Button + MoveScaled(43,56,5,4) + Enabled = False + Picture = Picture["icon:/22/save"] + } +} diff --git a/.src/FMain.form~ b/.src/FMain.form~ new file mode 100644 index 0000000..52af88d --- /dev/null +++ b/.src/FMain.form~ @@ -0,0 +1,50 @@ +# Gambas Form File 3.0 + +{ Form Form + MoveScaled(0,0,50,62) + Text = ("WIFI & QR") + Icon = Picture["WifiQR-icono.png"] + Resizable = False + { CheckMostrarClave CheckBox + MoveScaled(40,9,8,4) + Enabled = False + Text = (" ") + } + { ComboWIFIS ComboBox + MoveScaled(2,3,36,4) + Enabled = False + ReadOnly = True + Text = ("WiFi a las que te has conectado") + } + { txtClave TextBox + MoveScaled(7,9,32,4) + Text = ("abc123ABC") + ReadOnly = True + Password = True + } + { imagenQR PictureBox + MoveScaled(2,14,46,46) + Expand = True + Border = Border.Plain + Stretch = True + } + { PictureBox1 PictureBox + MoveScaled(40,1,8,8) + Picture = Picture["WifiQR-icono.png"] + Stretch = True + } + { OjoVerClave PictureBox + MoveScaled(43,9,5,5) + Enabled = False + Picture = Picture["icon:/32/watch"] + } + { botonClaveRoot Button + MoveScaled(2,9,4,4) + Picture = Picture["icon:/22/unlock"] + } + { botonGrabarQR Button + MoveScaled(42,55,5,4) + Enabled = False + Picture = Picture["icon:/22/save"] + } +} diff --git a/.src/frmRootPassword.class b/.src/frmRootPassword.class new file mode 100644 index 0000000..fd6bdba --- /dev/null +++ b/.src/frmRootPassword.class @@ -0,0 +1,18 @@ +' Gambas class file + + +Public Sub Form_Open() + 'Situar dentro de FMain + Me.X = FMain.X + 20 + Me.Y = FMain.Y + 40 +End + +Public Sub botonAbandonar_Click() + ' No sabe clave o quiere salir + Quit +End + +Public Sub botonAceptar_Click() + FMain.RootPassword = txtRootPassword.Text + Me.Close +End diff --git a/.src/frmRootPassword.class~ b/.src/frmRootPassword.class~ new file mode 100644 index 0000000..647bb5f --- /dev/null +++ b/.src/frmRootPassword.class~ @@ -0,0 +1,18 @@ +' Gambas class file + + +Public Sub Form_Open() + 'Situar dentro de FMain + Me.X = FMain.X + 20 + Me.Y = FMain.Y + 20 +End + +Public Sub botonAbandonar_Click() + ' No sabe clave o quiere salir + Quit +End + +Public Sub botonAceptar_Click() + FMain.RootPassword = txtRootPassword.Text + Me.Close +End diff --git a/.src/frmRootPassword.form b/.src/frmRootPassword.form new file mode 100644 index 0000000..b7a3dcc --- /dev/null +++ b/.src/frmRootPassword.form @@ -0,0 +1,26 @@ +# Gambas Form File 3.0 + +{ Form Form + MoveScaled(0,0,41,15) + Text = ("Necesario usar clave de 'root'") + Icon = Picture["WifiQR-icono.png"] + Resizable = False + { txtRootPassword TextBox + MoveScaled(1,5,39,4) + Password = True + } + { Label1 Label + MoveScaled(1,1,24,4) + Text = ("Contraseña de 'root'") + } + { botonAceptar Button + MoveScaled(24,10,16,4) + Text = ("Aceptar") + Picture = Picture["icon:/22/unlock"] + } + { botonAbandonar Button + MoveScaled(7,10,16,4) + Text = (" Salir") + Picture = Picture["icon:/22/quit"] + } +} diff --git a/.src/frmRootPassword.form~ b/.src/frmRootPassword.form~ new file mode 100644 index 0000000..9984481 --- /dev/null +++ b/.src/frmRootPassword.form~ @@ -0,0 +1,20 @@ +# Gambas Form File 3.0 + +{ Form Form + MoveScaled(0,0,41,15) + Text = ("Necesario usar clave de 'root'") + Icon = Picture["WifiQR-icono.png"] + Resizable = False + { txtRootPassword TextBox + MoveScaled(1,5,39,4) + Password = True + } + { Label1 Label + MoveScaled(1,1,24,4) + Text = ("Contraseña de 'root'") + } + { botonAceptar Button + MoveScaled(24,10,16,4) + Text = ("Aceptar") + } +} diff --git a/.startup b/.startup new file mode 100644 index 0000000..709744f --- /dev/null +++ b/.startup @@ -0,0 +1,10 @@ +FMain +WIFI & QR +0 +0 +1.0.5 + +gb.image +gb.gui +gb.form + diff --git a/README.md b/README.md new file mode 100644 index 0000000..e69de29 diff --git a/WifiQR-icono.png b/WifiQR-icono.png new file mode 100644 index 0000000000000000000000000000000000000000..ecb5ff87e6bc2fead7605efa5f1bf62270caa447 GIT binary patch literal 14472 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

O?d7gw~HKwTB*CBJD zo%YeZw5oh-sOP4Iw;_V@e68hGuxz1%_eSez358xvKzX0*Cx|C-hOuhrqwv?p_rHVh zGuSod#n>Z7tx|;Q=%eypCoD^Dh54<2Bw#)ypfL*uI_KxUDQ(p}WI}BF^^ageeF&tq zQ;?Ty-9BsHxNtvjwHQw#7`GiA!O-2pH5TYt)4CVVoA%2AX%Kg+&an?m^5U#)r|G#? z?jK1KMdMfzq_Gi|tP^ziEQL{E7g?FD06S^FX}$$*Tv&J78y?N9CXH_JTlX&GCME4b z96~=OT2c77n~3|%j_^?e+!T`gS6f8?3Hj*r5XbM|XTi5F-5GnGg+fCVEOl+oXbPp~ z+X|FTujDrC#p7of?%yj}l($g%I0kfSZK~7oeihR%lxp8X+-^PtZ8!Q>nj*80=B*!< zLUciWTE;2T&g2i5m^%DggRUJX^pu%$9Z<$GqJy3p$&RD_V9EA-{go%|zbN~YhP&1D z@@R`JZgm6vuPeOnYFxeM)`%CSC+Q%E94!Lj2-{_X(4HxZx38=BroS8QWn^>l;Z+DcxZ+cneZA+Uq&|SUM{a1uCDBh6Oddjv~9AJ!4VypI?|Ls;E%o(w7dmh__b`ld)qGrGzZM))#jIb zmRbV9T90D^5}~El8k#tDqFGj}**vnF zuIJs1SdmQO-4GDyu%g;Ue72a-;pX~__*Zu?2lm*^z0K2{;>Ci5gzp~gGoGOoYs7+| zRO1EZeJ_NXBNJ4f#v8Z#VufwrUnivo-Iy9(7FlO>3NU(d4=Jbs2-kT%RU0P>r|X&{ z0b&wwFQfM{po1=i4bPis_cCNH4Sn<0NSfdsk8mzI%4nvq)EyzzUqUHr&xWvV;{Rn) zmst%z|BYnXT>#r*Rq425QF|komeNaW19dlvVj~!WZLkAiz~DL(qd9aJ%ZvaP(Hmfx zl!4ueeOET$Yc$XL3Mr~4i_hELgP_F*t68)ewv4X~L-rv&oU(Pa6@eX5Iwg0`-oWRY z&BKD&Y#V}sgpzD8^(4%)jL{J{b%QplYBO7#1F}DnmZa>^xhFcl-{yZHs0QT0$_or* z8ZVaqTAUsozv#4iI*rgM_W7}1FI6$>?ChMuqzjCKv}CQ7c;lls(l-{=B)&Zyt{6Zd z7OXg{=~V7}kqikJrG0nq^aHfb_@pbLpa+V1zeH|~%7r383Hp-7{)`{p?B(7SV($J_ zbv7YRkO9hkigoqW1-fb1Zi3IO7prm0tkSe2B9P=D40>oJT{wpfv?0^8@Tw0P%jwhW&Gq0|c+_u4#q&%W6Q5(VQZ$A7IdL2WhM_;m;(B0tP^ z1H~j;G&3?(uSUZ3&?nYs-u>|jh1vUBLZ2GftNpIbfP;*a%|NItaS19K{)jz^~7cM0af z*C*BTU@mUBw%R2=Viqv<(CK%i&Qh+nKNrEdeEsl5o4PGk;_jZrfu8>Y_yA|s_zieM zX1~G}?WC48ol`Uc@M_;oGg|t8x5NFv`{n-kg!_%fcQQa%^4~Wdl_AK6K!BW-vShWm H(eM8ObvM{$ literal 0 HcmV?d00001 diff --git a/WifiQR.gambas b/WifiQR.gambas new file mode 100755 index 0000000000000000000000000000000000000000..1719227025182df38fdf3f0eab55855ce9e93b8a GIT binary patch literal 23535 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 e=ipGw)OAdLe9`kxQ6I+h5->Q5o-`CjGsBbs literal 0 HcmV?d00001 diff --git a/WifiQR_Ejemplo.png b/WifiQR_Ejemplo.png new file mode 100644 index 0000000000000000000000000000000000000000..7fff9c61e2dfc55e6a4263e9b5cf546da60948a5 GIT binary patch literal 776 zcmV+j1NZ!iP)~)>Fbsuhq;TmYax@>sM@Tt^5w6HbO4ed#f$6xwVBa8l4gaio^ zBuGreA&^Jxy=-xcw8gP~$2@*w#Z9J$S)7J-y3KfZ}gz0Vjz1p@dSQ$BKRGU6sbv+BO+-v3!7e1h&)DG6!|QPiiD<*O4N&67HWj3_%69HAuY z5(n!0S3YRDYEFP75_c7el0?idrWt-7n9;V`;q9AekS0<~Cp1pRP&l4;X zwTSH5#PK+sb)-d`lBiGg;5vLXDw6h&Z~s>#QHE#kDMqze(+inMF?NM9=-I> z32-i6BLI`ANQi`mai`m4y)Lx>G((~!@jD?wf&>W?L;e8EnWKW;jnV=D0000