This section allows you to view all posts made by this member. Note that you can only see posts made in areas you currently have access to.
1
Web Server - Ask For Help / Re: Convert text to HTML text for display
« on: September 26, 2024, 04:18:54 AM »
Use the display field, Display tab and then in source select file tag <!--Net: F, or as Bruce says post example
2
Web Server - Ask For Help / Re: Convert text to HTML text for display
« on: September 26, 2024, 03:07:14 AM »
if you use text field then check Allow xhtml and Allow UNSAFE Html
3
Web Server - Ask For Help / Re: Apostraphe value in sql
« on: September 14, 2024, 12:07:38 PM »
"You should not be using Prop:SQL at all in your program. This is very, very bad. Using Prop:Sql will open up your program to SQL injection attacks. Do not do it."
Bruce how is possible SQL injection attacks with prop:sql ?
i can create a public demo that use prop:sql for you to try the sql injetion
Bruce how is possible SQL injection attacks with prop:sql ?
i can create a public demo that use prop:sql for you to try the sql injetion
4
Web Server - Ask For Help / Decrypt with clarion
« on: August 02, 2024, 05:40:22 AM »
Is it possible to decrypt a value with Clarion, perhaps with Cryptonite, from an Encrypt in C#? I have a source code in C# with a password. I have tried it with Cryptonite but without result.
i know the value of one field that is omar11 and the encriptation is 2boh1Rk2ze3J8grK7pAiQQ==
the source decrypt correctly the value, but i need decrypt with clarion. Everythig is in the code
this is the source code that can run in this site https://www.jdoodle.com/
using System;
using System.Collections.Generic;
using System.Text;
using System.Security.Cryptography;
using System.IO;
using System;
class Program
{
static void Main() {
string result;
// Create an instance of the Cryptography class using the constructor that takes a SymmetricAlgorithm parameter
Cryptography cryptography = new Cryptography(new RijndaelManaged());
result = cryptography.Decrypt("2boh1Rk2ze3J8grK7pAiQQ==");
Console.Write("La Contrase?a desencriptada es: " + result);
}
}
public class Cryptography
{
//================================================
// Fields
//================================================
private string Key;
private SymmetricAlgorithm mobjCryptoService;
//================================================
// Methods
//================================================
public Cryptography(SymmetricAlgorithm ServiceProvider)
{
this.Key = "malla@malla.com";
this.mobjCryptoService = ServiceProvider;
}
public string Decrypt(string Source)
{
byte[] buffer = Convert.FromBase64String(Source);
MemoryStream stream = new MemoryStream();
byte[] legalKey = this.GetLegalKey(this.Key);
this.mobjCryptoService.Key = legalKey;
this.mobjCryptoService.IV = legalKey;
ICryptoTransform transform = this.mobjCryptoService.CreateDecryptor();
CryptoStream stream2 = new CryptoStream(stream, transform, CryptoStreamMode.Write);
stream2.Write(buffer, 0, buffer.Length);
stream2.FlushFinalBlock();
byte[] bytes = stream.ToArray();
stream.Close();
stream = null;
stream2.Close();
stream2 = null;
return Encoding.UTF8.GetString(bytes);
}
public string Encrypt(string Source)
{
byte[] bytes = Encoding.ASCII.GetBytes(Source);
MemoryStream stream = new MemoryStream();
byte[] legalKey = this.GetLegalKey(this.Key);
this.mobjCryptoService.Key = legalKey;
this.mobjCryptoService.IV = legalKey;
ICryptoTransform transform = this.mobjCryptoService.CreateEncryptor();
CryptoStream stream2 = new CryptoStream(stream, transform, CryptoStreamMode.Write);
stream2.Write(bytes, 0, bytes.Length);
stream2.FlushFinalBlock();
byte[] inArray = stream.ToArray();
stream.Close();
stream = null;
stream2.Close();
stream2 = null;
return Convert.ToBase64String(inArray);
}
private byte[] GetLegalKey(string Key)
{
string s = "";
char paddingChar = char.Parse(" ");
if (this.mobjCryptoService.LegalKeySizes.Length > 0)
{
int minSize = this.mobjCryptoService.LegalKeySizes[0].MinSize;
while ((Key.Length * > minSize)
{
minSize += this.mobjCryptoService.LegalKeySizes[0].SkipSize;
}
s = Key.PadRight(minSize / 8, paddingChar);
}
else
{
s = Key;
}
return Encoding.ASCII.GetBytes(s);
}
//================================================
// Properties
//================================================
public string SetKey
{
get
{
return this.Key;
}
set
{
this.Key = value;
}
}
//================================================
// Nested Types
//================================================
public enum SymmProvEnum
{
DES,
RC2,
Rijndael
}
}
i know the value of one field that is omar11 and the encriptation is 2boh1Rk2ze3J8grK7pAiQQ==
the source decrypt correctly the value, but i need decrypt with clarion. Everythig is in the code
this is the source code that can run in this site https://www.jdoodle.com/
using System;
using System.Collections.Generic;
using System.Text;
using System.Security.Cryptography;
using System.IO;
using System;
class Program
{
static void Main() {
string result;
// Create an instance of the Cryptography class using the constructor that takes a SymmetricAlgorithm parameter
Cryptography cryptography = new Cryptography(new RijndaelManaged());
result = cryptography.Decrypt("2boh1Rk2ze3J8grK7pAiQQ==");
Console.Write("La Contrase?a desencriptada es: " + result);
}
}
public class Cryptography
{
//================================================
// Fields
//================================================
private string Key;
private SymmetricAlgorithm mobjCryptoService;
//================================================
// Methods
//================================================
public Cryptography(SymmetricAlgorithm ServiceProvider)
{
this.Key = "malla@malla.com";
this.mobjCryptoService = ServiceProvider;
}
public string Decrypt(string Source)
{
byte[] buffer = Convert.FromBase64String(Source);
MemoryStream stream = new MemoryStream();
byte[] legalKey = this.GetLegalKey(this.Key);
this.mobjCryptoService.Key = legalKey;
this.mobjCryptoService.IV = legalKey;
ICryptoTransform transform = this.mobjCryptoService.CreateDecryptor();
CryptoStream stream2 = new CryptoStream(stream, transform, CryptoStreamMode.Write);
stream2.Write(buffer, 0, buffer.Length);
stream2.FlushFinalBlock();
byte[] bytes = stream.ToArray();
stream.Close();
stream = null;
stream2.Close();
stream2 = null;
return Encoding.UTF8.GetString(bytes);
}
public string Encrypt(string Source)
{
byte[] bytes = Encoding.ASCII.GetBytes(Source);
MemoryStream stream = new MemoryStream();
byte[] legalKey = this.GetLegalKey(this.Key);
this.mobjCryptoService.Key = legalKey;
this.mobjCryptoService.IV = legalKey;
ICryptoTransform transform = this.mobjCryptoService.CreateEncryptor();
CryptoStream stream2 = new CryptoStream(stream, transform, CryptoStreamMode.Write);
stream2.Write(bytes, 0, bytes.Length);
stream2.FlushFinalBlock();
byte[] inArray = stream.ToArray();
stream.Close();
stream = null;
stream2.Close();
stream2 = null;
return Convert.ToBase64String(inArray);
}
private byte[] GetLegalKey(string Key)
{
string s = "";
char paddingChar = char.Parse(" ");
if (this.mobjCryptoService.LegalKeySizes.Length > 0)
{
int minSize = this.mobjCryptoService.LegalKeySizes[0].MinSize;
while ((Key.Length * > minSize)
{
minSize += this.mobjCryptoService.LegalKeySizes[0].SkipSize;
}
s = Key.PadRight(minSize / 8, paddingChar);
}
else
{
s = Key;
}
return Encoding.ASCII.GetBytes(s);
}
//================================================
// Properties
//================================================
public string SetKey
{
get
{
return this.Key;
}
set
{
this.Key = value;
}
}
//================================================
// Nested Types
//================================================
public enum SymmProvEnum
{
DES,
RC2,
Rijndael
}
}
6
Web Server - Ask For Help / Re: Popups - Close
« on: July 28, 2024, 04:01:55 AM »
yo can create any button and then on click tab put 'ntd.close();' in GotFocusBack you can set variables or when open a form
7
Web Server - Ask For Help / Re: Using popup menu/menuitem on a browse row
« on: July 17, 2024, 03:43:01 AM »
i use another approach, in a browse create a buttons and his buttons call another window that send or process any code, look my images the button request open a popup window to send email
8
Web Server - Ask For Help / Re: Reading values posted to page by JavaScript
« on: July 08, 2024, 04:04:51 AM »
you can put the result in session variable in your javascript like this
SetSessionValue('yoursessionname',yourvariable);
and then in webhandler in SessionValueSetFromBrowser
CASE p_Name
OF 'yoursessionname'
IF p_web.gsv('yoursessionname')<>''
Do yourroutine
ELSE
Do Cancel
END
END
SetSessionValue('yoursessionname',yourvariable);
and then in webhandler in SessionValueSetFromBrowser
CASE p_Name
OF 'yoursessionname'
IF p_web.gsv('yoursessionname')<>''
Do yourroutine
ELSE
Do Cancel
END
END
9
Web Server - Ask For Help / Re: Old wizard
« on: May 24, 2024, 06:57:06 AM »
by the way the login wizard generate LevelBenign without :
10
Web Server - Ask For Help / Re: Form Layout Tab Suppress Comments setting not respected?
« on: May 11, 2024, 05:01:38 AM »
work if set in settings in webserver ..
11
Web Server - Ask For Help / Re: Form Layout Tab Suppress Comments setting not respected?
« on: May 11, 2024, 03:59:32 AM »
for me work, maybe try to set settings in webserver settings, example https://www.fecipur.org/UpdatePerfil?insert_btn=insert
NT 14.21
NT 14.21
12
Web Server - Ask For Help / Re: Redirect URL received after POST, how to handle (YOCO)
« on: May 10, 2024, 04:35:51 AM »
is the correct way, this is an example for the old Stripe API, the new API is a little more difficult, but the Yoco API is similar to the old Stripe API, you can convert this code to NT curl and avoid using NetWebClient. By the way, I never used nt curl but I think it's similar to Mike Duglas' curl
SendRequest ROUTINE
DATA
curl TCurlHttpClass
res CURLcode
qIndex LONG, AUTO
respBuffer STRING(65000) !big enuff to hold received response
CODE
curl.Init()
curl.FreeHttpHeaders()
SSLInfo:bUseSSL = TRUE
p_web.ssv('PaymentFrom','Afiliacion')
IF SSLInfo:bUseSSL
res = curl.SetSSLVerifyHost(SSLInfo:bVerifyHost)
IF res <> CURLE_OK
END
res = curl.SetSSLVerifyPeer(SSLInfo:bVerifyPeer)
IF res <> CURLE_OK
END
res = curl.SetSSLVersion(SSLInfo:Version)
IF res <> CURLE_OK
END
IF SSLInfo:Certificate
res = curl.SetCAInfo(SSLInfo:Certificate)
IF res <> CURLE_OK
END
END
END
curl.SetCustomRequest('POST')
!-H "Content-Type: application/json"
!-H "Authorization: Bearer Access-Token"
CASE p_Web.gsv('Com:PaymentEnviroment')
OF 'sandbox'
curl.AddHttpHeader('Authorization: Bearer '&p_web.gsv('Com:StripteSandBoxToken'))
OF 'production'
curl.AddHttpHeader('Authorization: Bearer '&p_web.gsv('Com:StripteProductionToken'))
END
!-- applies http headers added by AddHttpHeader calls
curl.SetHttpHeaders()
!----Create a Token --------!
Send:Url = 'https://api.stripe.com/v1/tokens'
Send:PostParams ='card[number]='&p_web.gsv('CardNumber')&'&card[exp_month]='&p_web.GSV('ExpMonth')&'&card[exp_year]='&p_web.GSV('ExpYear')&'&card[cvc]='&p_web.GSV('Cvv')
!----Create a Token -------!
CLEAR(TokenError)
CLEAR(Token)
res = curl.SendRequestStr(Send:Url, Send:PostParams, respBuffer)
Loc:CantidadaPagarSend = p_web.gsv('Loc:CantidadaPagar')*100
IF res = CURLE_OK
jsonStr = CLIP(respBuffer)
DO ParseJSON
IF Token<>'' AND TokenError=''
CLEAR(pJsonString)
curl.FreeHttpHeaders()
curl.SetCustomRequest('POST')
CASE p_web.gsv('Com:PaymentEnviroment')
OF 'sandbox'
curl.AddHttpHeader('Authorization: Bearer '&p_web.gsv('Com:StripteSandBoxToken'))
OF 'production'
curl.AddHttpHeader('Authorization: Bearer '&p_web.gsv('Com:StripteProductionToken'))
END
curl.SetHttpHeaders()
Send:Url = 'https://api.stripe.com/v1/charges'
Send:PostParams ='currency=usd&amount='&p_web.gsv('Loc:CantidadaPagar')*100&'&description=charge&source='&clip(Token)&'&receipt_email='&p_web.gsv('Use:EMAIL')&'&metadata[afiliacionid]='&p_web.gsv('AfiliacionId')
res = curl.SendRequestStr(Send:Url, Send:PostParams, respBuffer)
IF res = CURLE_OK
pJsonString = CLIP(respBuffer)
DO ParseJSON2
IF TokenError<>''
loc:alert = TokenError
p_web.SetValue('SelectField','CardNumber')
EXIT
END
Loc:Status=1
DO AddPayment
do Refresh::b1
DO SendEmail
p_web.Script( p_web.WindowOpen( 'PaymentSucessfull' ))
END
ELSE
loc:alert = CLIP(TokenError)
p_web.SetValue('SelectField','NameonCard')
EXIT
END
ELSIF res = -1
loc:alert = 'Cannot open local file Contact System Administrator'
p_web.SetValue('SelectField','NameonCard')
ELSE
loc:alert = 'SendRequest failed2: '& curl.StrError(res)&' Contact System Administrator'
p_web.SetValue('SelectField','NameonCard')
END
SendRequest ROUTINE
DATA
curl TCurlHttpClass
res CURLcode
qIndex LONG, AUTO
respBuffer STRING(65000) !big enuff to hold received response
CODE
curl.Init()
curl.FreeHttpHeaders()
SSLInfo:bUseSSL = TRUE
p_web.ssv('PaymentFrom','Afiliacion')
IF SSLInfo:bUseSSL
res = curl.SetSSLVerifyHost(SSLInfo:bVerifyHost)
IF res <> CURLE_OK
END
res = curl.SetSSLVerifyPeer(SSLInfo:bVerifyPeer)
IF res <> CURLE_OK
END
res = curl.SetSSLVersion(SSLInfo:Version)
IF res <> CURLE_OK
END
IF SSLInfo:Certificate
res = curl.SetCAInfo(SSLInfo:Certificate)
IF res <> CURLE_OK
END
END
END
curl.SetCustomRequest('POST')
!-H "Content-Type: application/json"
!-H "Authorization: Bearer Access-Token"
CASE p_Web.gsv('Com:PaymentEnviroment')
OF 'sandbox'
curl.AddHttpHeader('Authorization: Bearer '&p_web.gsv('Com:StripteSandBoxToken'))
OF 'production'
curl.AddHttpHeader('Authorization: Bearer '&p_web.gsv('Com:StripteProductionToken'))
END
!-- applies http headers added by AddHttpHeader calls
curl.SetHttpHeaders()
!----Create a Token --------!
Send:Url = 'https://api.stripe.com/v1/tokens'
Send:PostParams ='card[number]='&p_web.gsv('CardNumber')&'&card[exp_month]='&p_web.GSV('ExpMonth')&'&card[exp_year]='&p_web.GSV('ExpYear')&'&card[cvc]='&p_web.GSV('Cvv')
!----Create a Token -------!
CLEAR(TokenError)
CLEAR(Token)
res = curl.SendRequestStr(Send:Url, Send:PostParams, respBuffer)
Loc:CantidadaPagarSend = p_web.gsv('Loc:CantidadaPagar')*100
IF res = CURLE_OK
jsonStr = CLIP(respBuffer)
DO ParseJSON
IF Token<>'' AND TokenError=''
CLEAR(pJsonString)
curl.FreeHttpHeaders()
curl.SetCustomRequest('POST')
CASE p_web.gsv('Com:PaymentEnviroment')
OF 'sandbox'
curl.AddHttpHeader('Authorization: Bearer '&p_web.gsv('Com:StripteSandBoxToken'))
OF 'production'
curl.AddHttpHeader('Authorization: Bearer '&p_web.gsv('Com:StripteProductionToken'))
END
curl.SetHttpHeaders()
Send:Url = 'https://api.stripe.com/v1/charges'
Send:PostParams ='currency=usd&amount='&p_web.gsv('Loc:CantidadaPagar')*100&'&description=charge&source='&clip(Token)&'&receipt_email='&p_web.gsv('Use:EMAIL')&'&metadata[afiliacionid]='&p_web.gsv('AfiliacionId')
res = curl.SendRequestStr(Send:Url, Send:PostParams, respBuffer)
IF res = CURLE_OK
pJsonString = CLIP(respBuffer)
DO ParseJSON2
IF TokenError<>''
loc:alert = TokenError
p_web.SetValue('SelectField','CardNumber')
EXIT
END
Loc:Status=1
DO AddPayment
do Refresh::b1
DO SendEmail
p_web.Script( p_web.WindowOpen( 'PaymentSucessfull' ))
END
ELSE
loc:alert = CLIP(TokenError)
p_web.SetValue('SelectField','NameonCard')
EXIT
END
ELSIF res = -1
loc:alert = 'Cannot open local file Contact System Administrator'
p_web.SetValue('SelectField','NameonCard')
ELSE
loc:alert = 'SendRequest failed2: '& curl.StrError(res)&' Contact System Administrator'
p_web.SetValue('SelectField','NameonCard')
END
13
Web Server - Ask For Help / EXCEPTION_ACCESS_VIOLATION - Error reading data at : 20202244h
« on: May 08, 2024, 01:47:39 PM »
This is in a multihost app
This program has performed an illegal operation and will now be restarted.
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
Program : C:\Apps\IstprHost\IstprHost.exe
Version :
At : 17:06:55 on 2024/05/08
Workstation: : istpr
User Name: : Administrator
Reported error : EXCEPTION_ACCESS_VIOLATION - Error reading data at : 20202244h
Windows : Win 10 - 10.0.20348
Clarion : 0.9
Thread : 4 Field : 0 Event : 0 Keycode : 0
Error at address : 00FA0537h Line=3047 Proc=PROCESSREQUEST@F22NETWEBSERVERWORKERBASEsb Src=NetWeb.Clw
Stack Trace
0105B9D4h Line ?=135 no proc Src=xFiles.clw
[01] 00EC623Bh Line=66 Proc=WEBHANDLER@Fsb Src=IstprHost030.clw
[02] 7410E2FFh no line number no proc Module=C:\Apps\IstprHost\ClaRUN.dll 11.0.13630
74188C14h Line ?=47 no proc Src=wxeh.cpp Module=C:\Apps\IstprHost\ClaRUN.dll 11.0.13630
7416940Ah Line ?=47 no proc Src=wxeh.cpp Module=C:\Apps\IstprHost\ClaRUN.dll 11.0.13630
[03] 7410DDF1h no line number no proc Module=C:\Apps\IstprHost\ClaRUN.dll 11.0.13630
74169420h Line ?=47 no proc Src=wxeh.cpp Module=C:\Apps\IstprHost\ClaRUN.dll 11.0.13630
74188C14h Line ?=47 no proc Src=wxeh.cpp Module=C:\Apps\IstprHost\ClaRUN.dll 11.0.13630
74188C94h Line ?=47 no proc Src=wxeh.cpp Module=C:\Apps\IstprHost\ClaRUN.dll 11.0.13630
7417D1D8h Line ?=47 no proc Src=wxeh.cpp Module=C:\Apps\IstprHost\ClaRUN.dll 11.0.13630
7417D1ECh Line ?=47 no proc Src=wxeh.cpp Module=C:\Apps\IstprHost\ClaRUN.dll 11.0.13630
7417D208h Line ?=47 no proc Src=wxeh.cpp Module=C:\Apps\IstprHost\ClaRUN.dll 11.0.13630
7417D1FCh Line ?=47 no proc Src=wxeh.cpp Module=C:\Apps\IstprHost\ClaRUN.dll 11.0.13630
7417D224h Line ?=47 no proc Src=wxeh.cpp Module=C:\Apps\IstprHost\ClaRUN.dll 11.0.13630
7417D218h Line ?=47 no proc Src=wxeh.cpp Module=C:\Apps\IstprHost\ClaRUN.dll 11.0.13630
[04] 77C97F4Dh no debug info, Module=C:\Windows\SYSTEM32\ntdll.dll 10.0.20348.2340 (WinBuild.160101.0800)
[05] 77C97F1Bh no debug info, Module=C:\Windows\SYSTEM32\ntdll.dll 10.0.20348.2340 (WinBuild.160101.0800)
Line=3047 in Netweb.clw NT 14.21
loop x = 1 to self.RequestData.DataStringTheory.records()
self.SessionId = self.RequestData.DataStringTheory.getline(x) !self.RequestData.SessionId
if self.SessionId <> ''
! test for web socket connections before deleting the session.
if not self.webserver &= null and not self.webserver.WebSocketServer &= null and |
self.webserver.WebSocketServer.IsWebSocketSession(self.SessionId) = 0
self.NotifyDeleteSession()
self.DeleteSession()
else
self.TouchSession()
End
End
end
in xfile 4.31 line 135
xFileBase.Construct PROCEDURE
CODE
This program has performed an illegal operation and will now be restarted.
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
Program : C:\Apps\IstprHost\IstprHost.exe
Version :
At : 17:06:55 on 2024/05/08
Workstation: : istpr
User Name: : Administrator
Reported error : EXCEPTION_ACCESS_VIOLATION - Error reading data at : 20202244h
Windows : Win 10 - 10.0.20348
Clarion : 0.9
Thread : 4 Field : 0 Event : 0 Keycode : 0
Error at address : 00FA0537h Line=3047 Proc=PROCESSREQUEST@F22NETWEBSERVERWORKERBASEsb Src=NetWeb.Clw
Stack Trace
0105B9D4h Line ?=135 no proc Src=xFiles.clw
[01] 00EC623Bh Line=66 Proc=WEBHANDLER@Fsb Src=IstprHost030.clw
[02] 7410E2FFh no line number no proc Module=C:\Apps\IstprHost\ClaRUN.dll 11.0.13630
74188C14h Line ?=47 no proc Src=wxeh.cpp Module=C:\Apps\IstprHost\ClaRUN.dll 11.0.13630
7416940Ah Line ?=47 no proc Src=wxeh.cpp Module=C:\Apps\IstprHost\ClaRUN.dll 11.0.13630
[03] 7410DDF1h no line number no proc Module=C:\Apps\IstprHost\ClaRUN.dll 11.0.13630
74169420h Line ?=47 no proc Src=wxeh.cpp Module=C:\Apps\IstprHost\ClaRUN.dll 11.0.13630
74188C14h Line ?=47 no proc Src=wxeh.cpp Module=C:\Apps\IstprHost\ClaRUN.dll 11.0.13630
74188C94h Line ?=47 no proc Src=wxeh.cpp Module=C:\Apps\IstprHost\ClaRUN.dll 11.0.13630
7417D1D8h Line ?=47 no proc Src=wxeh.cpp Module=C:\Apps\IstprHost\ClaRUN.dll 11.0.13630
7417D1ECh Line ?=47 no proc Src=wxeh.cpp Module=C:\Apps\IstprHost\ClaRUN.dll 11.0.13630
7417D208h Line ?=47 no proc Src=wxeh.cpp Module=C:\Apps\IstprHost\ClaRUN.dll 11.0.13630
7417D1FCh Line ?=47 no proc Src=wxeh.cpp Module=C:\Apps\IstprHost\ClaRUN.dll 11.0.13630
7417D224h Line ?=47 no proc Src=wxeh.cpp Module=C:\Apps\IstprHost\ClaRUN.dll 11.0.13630
7417D218h Line ?=47 no proc Src=wxeh.cpp Module=C:\Apps\IstprHost\ClaRUN.dll 11.0.13630
[04] 77C97F4Dh no debug info, Module=C:\Windows\SYSTEM32\ntdll.dll 10.0.20348.2340 (WinBuild.160101.0800)
[05] 77C97F1Bh no debug info, Module=C:\Windows\SYSTEM32\ntdll.dll 10.0.20348.2340 (WinBuild.160101.0800)
Line=3047 in Netweb.clw NT 14.21
loop x = 1 to self.RequestData.DataStringTheory.records()
self.SessionId = self.RequestData.DataStringTheory.getline(x) !self.RequestData.SessionId
if self.SessionId <> ''
! test for web socket connections before deleting the session.
if not self.webserver &= null and not self.webserver.WebSocketServer &= null and |
self.webserver.WebSocketServer.IsWebSocketSession(self.SessionId) = 0
self.NotifyDeleteSession()
self.DeleteSession()
else
self.TouchSession()
End
End
end
in xfile 4.31 line 135
xFileBase.Construct PROCEDURE
CODE
14
Web Server - Ask For Help / Re: Barcode Scanner
« on: May 07, 2024, 03:19:19 AM »
I can't believe that was the problem, but it was a copy from the other server where it does work or there was something in the cache because after ctrl-f5 it worked...
Seanh, thanks for the suggestion
Seanh, thanks for the suggestion
15
Web Server - Ask For Help / Re: disable moving columns
« on: May 07, 2024, 03:16:06 AM »
all settings is off in webserver and Browse procedure, but i saw if a setting in websever layout Method is Flexbox always generate a column resizing, in table mode not generate but in my case use Flexbox.
Attached example
Attached example