go to post Dmitry Maslennikov · Sep 5, 2016 Looks like, you do not know about %Installer.Manifest. You can use it in any different ways, be it installation new application or just simple changing instance's settings. With this manifest I'm building installation archive with project, it includes deployed code some data, and web sources. I'm installing new server with it, manually, or even with docker. And you can use internal Task Manager to run this installation by schedule automatically. You may also look at this project - GitHubCI, it helps to deploy application automatically just after commit to your github repository.
go to post Dmitry Maslennikov · Sep 5, 2016 I think you should look at class %SYSTEM.Encryption where all encryption placed, and at the method $system.Encryption.HMACSHA()
go to post Dmitry Maslennikov · Sep 2, 2016 Since so big difference between this versions, and you may caught many incompatibilities, I would very recommend to install new instance and move all your data and settings from the old one. And then check everything in your application very carefully.
go to post Dmitry Maslennikov · Aug 29, 2016 You can look at the documentation here onlineand excerpt about custom installationThe Caché installation program allows you to select certain Caché components to be installed on the computer. For example, you may want to install only the Caché SQL Manager. Keep in mind that some selections require that you also install other components.and about standard installationThe standard installation procedure installs both Caché server and client components on the computer.
go to post Dmitry Maslennikov · Aug 27, 2016 does not matter what `ccontrol list` shows, may be you just removed instance from this listif you removed this folder, try to restart machine, and check output with commands, which I gave you
go to post Dmitry Maslennikov · Aug 27, 2016 Such error you can face on a windows as well. Your super port has already in use by another instance of Cache. And you can change port for new instance, by editing cache.cpf file in the root of installed Cache. To be sure that port is in use you can use some network tools, such as netstat netstat -na | grep 1972 tcp4 0 0 *.1972 *.* LISTEN or lsof, which can show which process with pid uses this port sudo lsof -i tcp:1972 cache 14960 cacheusr 4u IPv4 0x768e107dffb0f4df 0t0 TCP *:1972 (LISTEN)
go to post Dmitry Maslennikov · Aug 26, 2016 Yes, you still have to ask user for login password, and should check it in Caché, so, you just should try to connect with user's login/pass, and so, you can validate him.
go to post Dmitry Maslennikov · Aug 26, 2016 I did not show how you made connection to the Caché, and looks like, your Java application has hardcoded login password which used to connect to server. so, I may only suggest, that you use code like this Class.forName ("com.intersys.jdbc.CacheDriver").newInstance(); CacheDataSource ds = new CacheDataSource(); ds.setURL("jdbc:Cache://127.0.0.1:1972/SAMPLES"); Connection dbconn = ds.getConnection("_SYSTEM","SYS"); Last string is Caché login password, so you should use here user's login and password. Any works from your application should be with user's login.
go to post Dmitry Maslennikov · Aug 25, 2016 You can use $order to order all users, in global set FF="" for { set FF = $order(^Users(FF)) quit:FF="" set isAllowed = $get(^Users(FF, "SETTINGS", "isAllowed")) write:isAllowed !,"User ",FF," is allowed" }
go to post Dmitry Maslennikov · Aug 24, 2016 As I remember, you could create user TRM or TELNET, with routine %PMODE, and will get access without authentication.Don't remember how it was in 5.0, but currently default login/password is _SYSTEM/SYS
go to post Dmitry Maslennikov · Aug 24, 2016 UDL format is for classes only, and this format how that classes looks in Studio. Export web files, available as any others in XML format with $system.OBJ.Export() USER>d $system.OBJ.Export("/csp/user/*.*","export.xml") Exporting to XML started on 08/24/2016 20:52:44 Exporting CSP/CSR or file: /csp/user/ML_Util.js Exporting CSP/CSR or file: /csp/user/menu.csp Exporting CSP/CSR or file: /csp/user/showsource.csp Export finished successfully. And all web files stores as files in the directory for this web-application, so you can get it directly, but native export/import works only in XML
go to post Dmitry Maslennikov · Aug 22, 2016 You should not read stream which you got from request, just pass it to $fromJSON, because it understand streams too.
go to post Dmitry Maslennikov · Aug 18, 2016 Macros - a part of the ObjectScript compiler that converts macro code into usable Caché ObjectScript code.Routine - a callable block of user-written code that is a Caché ObjectScript program.
go to post Dmitry Maslennikov · Aug 18, 2016 Documentation about $horolog Contains the local date and time for the current process.
go to post Dmitry Maslennikov · Aug 18, 2016 Why do you name it macro ?Maybe you mean MAC routine ? I highly recommend to read this tutorial about CacheObjectScript usually you can call routine by simple command do ^routine but sometime you need to call directly to concrete label in that routine do label^routine() but in this case if you use curly brace style, you should public such method in routine label() public { write "Hello World!" } or in old style label() write "Hello world!" quit
go to post Dmitry Maslennikov · Aug 17, 2016 As I see you a talking about Ensemble REST service. In this case I am not 100% sure, I think pInput only contains some binary data, or json. But forms data any should be available with %request.
go to post Dmitry Maslennikov · Aug 17, 2016 So, you had to start with such explanation.Well, does not matter what do you set in Accept header, if you don't use it by yourself. Like, you should check incoming content type and send an error if it is not accepted. This Header change nothing in incoming data, if data was sent in another format.To read data, you should know that %request has three different ways for getting data. You have already known in %request.Content, which usually contains binary streams. Then %request.MimeData, and %request.Data, it is a Multidimensional properties, and %request has some getters for them, %request.GetMimeData and %request.Get. MimeData, needs when client send data in multipart mime format, such as several files or so on. And %request.Data, in all most cases, and you should look at this property and method %request.Get("somename")
go to post Dmitry Maslennikov · Aug 17, 2016 Well, in this case you should set Header Accept, with needed one or more formats, more info in wiki set %response.SetHeader("Accept","text/plain")
go to post Dmitry Maslennikov · Aug 17, 2016 If you use %CSP.REST, you can set needed ContentType in any called method XData UrlMap { <Routes> <Route Url="/text" Method="GET" Call="GetText" Cors="false" /> </Routes> } ClassMethod GetText() { set %response.ContentType="text/plain" write "test" quit $$$OK } and test ➜ ~ curl -v http://localhost:57774/api/app/text * Trying ::1... * Connected to localhost (::1) port 57774 (#0) > GET /api/ambulance/text HTTP/1.1 > Host: localhost:57774 > User-Agent: curl/7.49.1 > Accept: */* > < HTTP/1.1 200 OK < Date: Wed, 17 Aug 2016 17:54:28 GMT < Server: Apache < CACHE-CONTROL: no-cache < EXPIRES: Thu, 29 Oct 1998 17:04:19 GMT < PRAGMA: no-cache < CONTENT-LENGTH: 4 < Content-Type: text/plain; charset=utf-8 < * Connection #0 to host localhost left intact test%