Hi Kris.
What version of Caché do you have?
SetHttpHeader is correct method to add headers.
ISCSOAP began logging headers starting from 2016.1. In order to log headers you need to add "h" to the ^ISCSOAP("Log").
- Log in to post comments
Hi Kris.
What version of Caché do you have?
SetHttpHeader is correct method to add headers.
ISCSOAP began logging headers starting from 2016.1. In order to log headers you need to add "h" to the ^ISCSOAP("Log").
Unpack IAM-0.34-1-1.tar.gz first. Docker image is inside this archive
Maybe you have source control enabled in this namespace?
You should look into query plans for these queries.
Generally, they can be different.
The best I know is $TR/$J combination:
USER>w $TR($J("",10)," ","x") ; repeat x 10 times xxxxxxxxxx USER>w $TR($J("",5)," ","y") ; repeat y 5 times yyyyy
Hi Thembelani.
See InterSystems IRIS Adoption Guide (available in WRC -> Online Distributions -> Docs)
%Library.CachePopulate was renamed to %Compiler.Type.Populate
The best way to handle such problems is:
a) Enable Audit (System Administration -> Security -> Auditing) b) Enable logging of audit events LoginFailure and Protect (Configure System Events) c) Reproduce the error d) Check Audit database if it has any reported LoginFailure or Protect events. If yes -- check details of these events.
Hi Laura.
There should be only one copy of zenutils.js. It should be only in csp\broker.
CSP Gateway first looks for any static file (including zenutils.js) in appropritate folder (.e.g. csp\samples). If file is not present there, CSP Gateway then looks for that file in csp\bpoker.
Hope this helps, Alexander.
Hi Vikram.
Looks like you trying to use InterSystems IRIS Power BI Adaptor to connect to Caché. This adaptor does not support Caché.
Use ODBC connection to connect to Caché from Power BI.
Hope this helps, Alexander.
Hi Federico.
Try %request.GetCgiEnv("HTTP_REQUESTFROM")
Web Gateway user (CSPSystem) should have permissions to read database where custom login page is located.
Enable <PROTECT> events logging in Audit, reproduce the NOT FOUND error and you'll see <PROTECT> events logged.
Hi Brian.
I never used Crystal Reports, however code 30 might correspond to "Table or view not found".
See https://cedocs.intersystems.com/ens201813/csp/docbook/DocBook.UI.Page.cls?KEY=RERR_sql#RERR_sql_1
Following command lists all collations. Even not loaded:
%SYS>do ^COLLATE
E.g.
%SYS>w $zv
IRIS for Windows (x86-64) 2019.1.1 (Build 612U) Mon Oct 28 2019 11:29:24 EDT
%SYS>do ^COLLATE
Status Number Abbrev Name
---------- ------ ------ ----------------------
Built-in 0 OANS ISM Pre-6.2
Built-in 1 ANSI ISM 6.2->6.4
Built-in 2 COBR Ipsum/Cobra
Built-in 3 DTMC DTM-compatible
Built-in 4 CBR2 Ipsum/Cobra-2
Built-in 5 UNIC IRIS standard
Not loaded 10 GER1 German1
Not loaded 11 POR1 Portuguese1
Not loaded 12 POL1 Polish1
Not loaded 13 GER2 German2
Not loaded 14 SPA1 Spanish1
Not loaded 15 DAN1 Danish1
Available 16 CYR1 Cyrillic1
Not loaded 17 GRE1 Greek1
Not loaded 18 CZE1 Czech1
Not loaded 19 CZE2 Czech2
Not loaded 20 POR2 Portuguese2
Not loaded 21 FIN1 Finnish1
Not loaded 22 JAP1 Japanese1
Not loaded 24 POL2 Polish2
Not loaded 27 FRE1 French1
Not loaded 28 FIN2 Finnish2
Not loaded 29 HUN1 Hungarian1
Not loaded 30 GER3 German3
Not loaded 31 POL3 Polish3
Not loaded 32 SPA2 Spanish2
Not loaded 33 DAN2 Danish2
Not loaded 34 GRE2 Greek2
Not loaded 35 FIN3 Finnish3
Not loaded 36 LIT1 Lithuanian1
Available 37 CYR3 Cyrillic3
Not loaded 38 SLO1 Slovenian1
Not loaded 39 SLO2 Slovenian2
Not loaded 40 TUR1 Turkish1
Not loaded 41 DAN3 Danish3
Available 42 UKR1 Ukrainian1
Available 43 CYR4 Cyrillic4
Not loaded 44 CZE3 Czech3
Not loaded 46 MAL1 Maltese1
Not loaded 48 MAL2 Maltese2
Not loaded 49 SPA4 Spanish4
Not loaded 50 SLO1 Slovak1
Not loaded 51 SPA5 Spanish5
Not loaded 52 FIN4 Finnish4
Not loaded 53 CZE4 Czech4
Not loaded 54 GER4 German4
Not loaded 56 FRE2 French2
Not loaded 57 GER5 German5
Not loaded 58 NOR1 Norwegian1
Built-in 128 OSTR ISM Pre-6.2 string
Built-in 129 NSTR ISM 6.2->6.4 string
Built-in 133 USTR IRIS standard string
Available 144 CYR1S Cyrillic1 string
Available 165 CYR3S Cyrillic3 string
Available 170 UKR1S Ukrainian1 string
Available 171 CYR4S Cyrillic4 string
Thanks for sharing Paul.
Though reference article for $username has this documented:
$USERNAME contains the username for the current process. This can be in one of two forms:
To allow multiple security domains, go to the Management Portal, select System Administration, Security, System Security, System-wide Security Parameters. Select the Allow multiple security domains check box. Changes to this setting apply to new invoked processes; changing it does not affect the value returned by the current process.
https://cedocs.intersystems.com/ens201813/csp/docbook/DocBook.UI.Page.cls?KEY=RCOS_vusername
Hi Laura.
First question -- what algorithm does openssl_public_encrypt use?
PHP reference [1] and source code [2] says that this is RSA.
So in Ensemble you can use $system.Encryption.RSAEncrypt() [3]
Important thing to note about RSA encryption, is that length of the plaintext can not be greater than the length of the modulus of the RSA public key contained in the certificate minus 42 bytes.
[1] https://www.php.net/manual/en/function.openssl-public-encrypt.php [2] https://github.com/php/php-src/blob/master/ext/openssl/openssl.c#L5549 [3] https://cedocs.intersystems.com/latest/csp/documatic/%25CSP.Documatic.cls?PAGE=CLASS&LIBRARY=%25SYS&CLASSNAME=%25SYSTEM.Encryption#METHOD_RSAEncrypt
Hi Anzelem.
If that is the question on how you can disable telnet -- then you should disable service %Service_Telnet in System Administration > Security > Services.
https://cedocs.intersystems.com/ens201813/csp/docbook/DocBook.UI.Page.cls?KEY=GCAS_svcs
No other settings.
What %Service_Telnet does is it starts/stops process that listens on port 23 (by default). If you disable this service than process is stopped, so nothing from Caché side is listening on port 23.
To get status of ECP servers you should use class SYS.ECP in %SYS namespace [1]
It has methods GetClientConnState and GetServerConnState
No, Alexey, for 2020.1 I don't know.
And for 2019.1.4 -- I don't know what version is this.
Raj has complex id here -- @ Raj.Singh5479
David, you should set ContentType in OnPreHTTP method.
%XML.TextReader traverses XML nodes. Each node can have different type. NACS is node of type Element. It does not have any value. Node 111111 is of type Chars. However it does not have any name. Thus the output that you see.
Hint: change line in your code as follows to see types of nodes :
set practices = practices_textreader.Name_"("_textreader.NodeType_"):"
Take a look here for data model of XML: https://www.w3.org/XML/Datamodel.html
See also class reference for %XML.TextReader. Particularly for Value property. It explains what this property holds depending on type of node.
Hi Asif.
We recommend that you don't import whole library in Java Gateway Wizard.
Create simple wrapper class with methods that you are going to call from Ensemble. And import only that class.
Specify library only as a classpath.
With that approach Ensemble will create only basic proxy class.
There are two preferred ways to limit facts that go into cube.
A) Build restriction option in cube. Change of build restriction requires recompilation of cube. Though you can call stored procedure there. B) %OnProcessFact callback in the cube class.
For details please see "Restricting the Records Used in the Cube" in the documentation [1]
Disadvantage of using data connectors is that cube synchronization is not possible for cubes based on them: [2].
Hi Rubens.
Works fine for me on IRIS 2020.1 with rusw locale, see below.
Perhaps you can try to export directly to file, instead of using stream.
USER>!type ..\..\csp\user\test.json
{
"a":"русский текст"
}
USER>set stream=##class(%Stream.FileCharacter).%New()
USER>set stream.Filename = "c:\temp\qq.xml"
USER>do $System.OBJ.ExportToStream("/csp/user/test.json", .stream,,,"UTF8")
Exporting to XML started on 04/16/2020 12:13:33
Exporting CSP/CSR or file: /csp/user/test.json
Export finished successfully.
USER>w stream.%Save()
1
USER>!type c:\temp\qq.xml
<?xml version="1.0" encoding="UTF8"?>
<Export generator="IRIS" version="26" zv="IRIS for Windows (x86-64) 2020.1 (Build 215U)" ts="2020-04-16 12:13:33">
<CSP name="test.json" application="/csp/user/" default="1"><![CDATA[
{
"a":"русский текст"
}]]></CSP>
</Export>
What Caché version do you have?
On my 2018.1.3 instance code is following:
// Look for pattern : version "1.8.0.1
// where the double quote may optionally be replaced with a single quote or ommitted
Set regex = "version\s['""]?(\d+(\.\d+)+)"
Set pos = $Locate(pOutput,regex,1,,versionWithPrefix)
// Get just the number from the previous pattern : 1.8.0.1
Set regex = "(\d+(\.\d+)+)"
Set pos = $Locate($Get(versionWithPrefix),regex,1,,version)
Notice -- $Get around versionWithPrefix.
Most likely Caché cannot find java home dir. Specify Java Home Directory in JDBC Gateway Server settings.
Hi David.
Source code for EnsLib.FTP.InboundAdapter is available in the installation.
EnsLib.FTP.InboundAdapter calls method %Net.FtpSession:List to get files. And that method uses "LIST" command.
EnsLib.FTP.InboundAdapter:OnTask executes following resultSet to get files:
Set tSC=..%CurrResultSet.Execute($this,..FilePath,..FileSpec,..SubdirectoryLevels,$S(..%isSFTP:"FileListSSH",1:"FileList"),..SemaphoreSpec) Quit:$$$ISERR(tSC)
And in OnInit, ..%CurrResultSet is initialized as follows:
Set ..%CurrResultSet=##class(%ResultSet).%New($$$CurrentClass_":DeepList")
Query DeepList is defined in EnsLib.File.Common, and it's just a proxy for the query that is passed as 5th parameter to the Execute -- FileList in this case.
And EnsLib.FTP.Common:FileList calls %Net.FtpSession:List.
Hi Mark.
I don't know where "undefined" word comes from on the trace, but when %XML.Reader reads empty element it reads it as character with code 0 -- $char(0), that corresponds to empty string in SQL:
Class Community.Test Extends (%RegisteredObject, %XML.Adaptor)
{
Property StatusLastChecked As %String(XMLPROJECTION = "element");
ClassMethod test()
{
set xml = "<root><Test><StatusLastChecked></StatusLastChecked></Test></root>"
set reader = ##class(%XML.Reader).%New()
do reader.OpenString(xml)
do reader.Correlate("Test","Community.Test")
do reader.Next(.obj)
zw obj
}
}
USER>do ##class(Community.Test).test()
obj=3@Community.Test ; <OREF>
+----------------- general information ---------------
| oref value: 3
| class name: Community.Test
| reference count: 2
+----------------- attribute values ------------------
| StatusLastChecked = $c(0)
+-----------------------------------------------------
So in your code you can compare with $C(0).
Also for details on handling empty strings, see following section in documentation:
I would look for errors in javascript console (Web Developer tools).
Also I would double-check if database HSTMDATADEV indeed has packages, based on its name it looks like it could have only data, and there is also HSTMCODEDEV where actual packages are stored.