SCN Meetup Novo Hamburgo 2015

Let the world know ...Tweet about this on TwitterShare on Google+Share on FacebookEmail this to someoneShare on LinkedIn

First time we hosted na event at Novo Hamburgo and also our first meetup at Feevale university. The focus of the event was EAM and IoT. As it was a meet-up, the event occurred in the evening, from 18:00 to 22:00. This allowed the participants to work during the day at their companies and connect with similar minded professionals during the event, without causing too much impact on their projects.

Information

 

Official site

Meetup Novo Hamburgo

Edition

1

Date

5.11.2015

Location

Auditório Prédio Multicolor – Universidade Feevale – Rodovia RS 239, 2755 – Vila Nova, Novo Hamburgo, RS

Twitter

#scnnh

Sessions

10

Speakers

9

Tracks

1

Participants

102

Tweets

36

Twitter reach

4.412

 

Event Schedule

Links

SCN Meetup Novo Hamburgo 2015 – Chamada para Palestrantes

SCN Meetup Novo Hamburgo 2015 – INSCRIÇÕES ABERTAS

Divulgação

Let the world know ...Tweet about this on TwitterShare on Google+Share on FacebookEmail this to someoneShare on LinkedIn

Use a specific Cordova version for hybrid app development

Let the world know ...Tweet about this on TwitterShare on Google+Share on FacebookEmail this to someoneShare on LinkedIn

Scenario

Cordova is used as the de-facto standard software for creating hybrid mobile apps. To keep up with mobile platforms, a new version of Cordova is released constantly. This creates a certain challenge for mobile app developers that have to not only create new apps, but also have to maintain older versions. Specifically in enterprise environments, it is not always possible to simply update to a new Cordova version. One reason can be an upcoming go-live. You do not want to change your SDK days before a go-live as this increases drastically your testing efforts. For instance, SAP releases a software development kit (SDK) for its SAP Mobile Platform 3 (SMP3) to enable developers to efficiently create apps. The SDK is not a static product but is actively developed and supported by SAP. This means that a SDK receives constant updates and patches. Each SDK SP version comes with a minimum and recommended Cordova version. A developer that has to create new apps and at the same time maintain older versions may come into the situation where it is necessary to have not only different version of a SDK SP installed, but also of the Cordova tool. Given a normal workload, the developer may have to change between the new project and the maintenance several time per day.

Problem

The above scenario creates the following problem for the developer: by default, Cordova is installed via npm globally. With this, only one version of Cordova is available at a given time. For the developer this means that he cannot simply have several versions for each SDK SP and project available. A manual remove of the current version of Cordova and install of the needed version is necessary. As the npm install is globally done, one version of Cordova is activated for all users of the computer.

Solution

The root cause of the problem is how Cordova is installed. Cordova is delivered and maintained via npm. The default way of installing Cordova is to issue the command:

npm –g install cordova[@{version}]

Install locally

npm offers alternatives to the above shown installation option. Without the –g flag, a npm module will be installed into the nodes_module folder of the current path. To install Cordova locally to the project folder, the command is:

npm install cordova[@{version}]

With this, Cordova executable is available at node_modules/cordova/bin/cordova

A cordova –v run against the newly installed version shows that the right version is installed.

To create a Cordova project with that version, this newly installed version must be used and not the globally available version. The command line parameters are not affected by this.

node_modules/cordova/bin/cordova create hello com.sap.hello HelloWorld

To add Cordova platforms or plugins, the Cordova version inside the local nodes_modules folder must be invoked.

node_modules/cordova/bin/cordova platform add android

node_modules/cordova/bin/cordova plugins add cordova-plugin-console

The same rule applies for compilation, build or run of a Cordova app.

node_modules/cordova/bin/cordova compile

Install locally (advanced)

Installing Cordova locally as shown above still means that the Cordova package must be installed before a Cordova/Kapsel project is created. To have several version of Cordova available in that way, several folders must be created, preferably containing a version tag of the installed Cordova. This implies that inside the actual hybrid project, no reference to the needed Cordova version is maintained, despite the SDK SP dependency.

To have the Cordova version tight into the project, any Cordova version can be used to create the project folder structure. Inside the folder the needed Cordova version can be installed locally. That way, the Cordova version is made available inside the project, making it easier to share the project or to onboard new team members. On the contrary, instead of having one single repository for each Cordova version, the executable must be provided for each project.

NPM link

NPM comes with a link tool. This tool links a package globally. This makes a local package globally available. The local package will appear as it was installed using npm install –g <package>. The link tool is handy when the npm package is available via its source code (like GitHub) and is therefore not needed to be installed from the npm repository.

In combination with Cordova, npm link allows to make a checked out version of Cordova globally available. A local available versoin of Cordova downloaded via git can be checked out and activated by npm link. To activate a specific version, this version is checked out via git and then activated by npm link.

The installation procedure is as given by Cordova.

git clone https://git-wip-us.apache.org/repos/asf/cordova-cli.git
cd cordova-cli
npm install
sudo npm link
npm link plugman

To go through each step:

git clone https://git-wip-us.apache.org/repos/asf/cordova-cli.git

npm install

npm link

To check the currently activated version of Cordova: cordova –v


To switch to another version of Crodova, git is to be used. The following example shows how to switch to Cordova 4.0.0 globally. First, get a list of tags from git: git tag

Checkout version 4.0.0.

git checkout 4.0.0

npm install

npm link

The check that version 4.0.0 is now available globally, issue cordova –v from the command line.

To test that Cordova 4.0.0 is now being used, create a new project: cordova create TestSAP com.sap.hello TestSAP

Add android as a platform: cordova platforms add android

Please note that android platform version 3.6.4 is used, and not 4.1.1 as it was with Cordova 5.4.1

Let the world know ...Tweet about this on TwitterShare on Google+Share on FacebookEmail this to someoneShare on LinkedIn

Installing SMP3 SP9 in CentOS

Let the world know ...Tweet about this on TwitterShare on Google+Share on FacebookEmail this to someoneShare on LinkedIn

Installing SMP3 came with an OS pre-requisite check in previous versions. This means that you could not simply install SMP3 in a not-supported OS. The installer refused to continue the installation. Makes sense when installing it in a landscape, less sense when you want to install it on your laptop / VM to try thinks out. Good news that (at least) with SP9 the installer lets you setup SMP3 even in a not supported OS.

Start installation: ./SilentInstall.sh

You will get informed by the installer that you are doing it wrong, aka using a not supported platform, but compared to previous SPs, the installer executes. I recommend to make use of the silent installation, and put all parameters into the txt file. In that case, it’s just running the silent installer instead of the setupLinux binary.

Output

[root@smp3 ebf25288]# ./SilentInstall_Linux.sh

Initializing Wizard……..

Launching InstallShield Wizard……..

setupLinux.bin: line 1952: warning: here-document at line 1952 delimited by end-of-file (wanted `/dev/null’)

ERROR: Your operating system is not officially supported by SAP Mobile Platform 3.0 SP09. See the SAP Product Availability Matrix (PAM) for information on supported platforms.

Welcome to the SAP® Mobile Platform 3.0 SP09 installer. SAP Mobile Platform 3.0 SP09 will be installed on your computer.

SAP Mobile Platform Server 3.0 SP09

SAP SE

http://www.sap.com

ERROR: Your operating system is not officially supported by SAP Mobile Platform 3.0 SP09. See the SAP Product Availability Matrix (PAM) for information on supported platforms.

(Nov 12, 2015 10:03:54 AM), , com.installshield.smpserver.event.dialog.silent.PanelProductEditionOptionSilentImpl, dbg, productInstallOption: Developer Installation

(Nov 12, 2015 10:03:54 AM), , com.installshield.smpserver.event.dialog.silent.PanelProductEditionOptionSilentImpl, err, ERROR: Your operating system is not officially supported by SAP Mobile Platform 3.0 SP09. See the SAP Product Availability Matrix (PAM) for information on supported platforms.

(Nov 12, 2015 10:03:55 AM), , com.sybase.englwd.wizardbean.GetHostNameIP, dbg, GetHostNameIP:execute method

(Nov 12, 2015 10:03:55 AM), , com.sybase.englwd.wizardbean.GetHostNameIP, dbg, GetHostNameIP:The hostname is [smp3.tobias.de] and the IP is [192.168.15.133]

(Nov 12, 2015 10:03:55 AM), , com.sybase.englwd.wizardbean.GetHostNameIP, dbg, GetHostNameIP:getCanonicalHostName does not start with getHostName()

(Nov 12, 2015 10:03:55 AM), , com.sybase.englwd.wizardbean.GetHostNameIP, dbg, GetHostNameIP:Setting domain name to getHostName()

(Nov 12, 2015 10:03:55 AM), , com.sybase.englwd.wizardbean.GetHostNameIP, dbg, GetHostNameIP:The domain name is [smp3.tobias.de]

(Nov 12, 2015 10:03:55 AM), , com.sybase.englwd.wizardbean.GetHostNameIP, dbg, GetHostNameIP:The fully qualified domain name is [smp3.tobias.de]

(Nov 12, 2015 10:03:55 AM), , com.installshield.smpserver.event.dialog.silent.PanelAdminCredentialsSilentImpl, dbg, adminUsername: smpAdmin

(Nov 12, 2015 10:03:57 AM), , com.ibm.wizard.platform.linux.LinuxJVMServiceImpl, dbg.jvm, calculating size from directory /sap/ebf25288/sapjvm_7_jre/

(Nov 12, 2015 10:03:57 AM), , com.installshield.product.actions.AddRequiredBytes, dbg, Adding 364431509 bytes to /sap/MobilePlatform3/sapjvm_8

(Nov 12, 2015 10:03:57 AM), , com.installshield.product.actions.AddRequiredBytes, dbg, Adding 1100718777 bytes to /sap/MobilePlatform3

(Nov 12, 2015 10:03:57 AM), , com.installshield.product.actions.AddRequiredBytes, dbg, Adding 0 bytes to /sap/MobilePlatform3/Server

(Nov 12, 2015 10:03:57 AM), , com.installshield.product.actions.AddRequiredBytes, dbg, Adding 0 bytes to /sap/MobilePlatform3

(Nov 12, 2015 10:03:58 AM), , com.sap.install.smp.wizardaction.ExtractZipFile, dbg, ExtractZipFile: execute()

(Nov 12, 2015 10:04:05 AM), , com.sap.install.smp.wizardaction.ExtractZipFile, dbg, /sap/ebf25288/modules/common/SAPJDK-81.8.8-linux.zip is extracted to /sap/MobilePlatform3

(Nov 12, 2015 10:04:06 AM), , com.sap.install.smp.wizardaction.ExtractZipFile, dbg, ExtractZipFile: execute()

(Nov 12, 2015 10:04:44 AM), , com.sap.install.smp.wizardaction.ExtractZipFile, dbg, /sap/ebf25288/modules/server/com.sap.mobile.platform.server.build.dist.onpremise-linux.gtk.amd64.zip is extracted to /sap/MobilePlatform3/Server

(Nov 12, 2015 10:04:44 AM), , com.sybase.englwd.wizardbean.FilesActionWizard, dbg, Deleting File: /sap/MobilePlatform3/Server/configuration/com.sap.mobile.platform.server.security/csikeystore.jceks

(Nov 12, 2015 10:04:44 AM), , com.sybase.englwd.wizardbean.FilesActionWizard, dbg, Deleting File: /sap/MobilePlatform3/Server/configuration/com.sap.mobile.platform.server.security/csibootstrap.properties

(Nov 12, 2015 10:04:44 AM), , com.sap.install.smp.wizardaction.ExecSilentInstall, dbg, genCSIBootStrap: command: /sap/MobilePlatform3/Util/genCSIBootStrap.sh

(Nov 12, 2015 10:04:44 AM), , com.sap.install.smp.wizardaction.ExecSilentInstall, dbg, genCSIBootStrap: arguments: developer /sap/MobilePlatform3

(Nov 12, 2015 10:04:49 AM), , com.sap.install.smp.wizardaction.ExecSilentInstall, dbg, return value: 0

(Nov 12, 2015 10:04:51 AM), , com.sap.install.smp.wizardaction.ExecSilentInstall, dbg, encryptAdminPwd: command: /sap/MobilePlatform3/Util/encryptAdminPwd.sh

(Nov 12, 2015 10:04:51 AM), , com.sap.install.smp.wizardaction.ExecSilentInstall, dbg, encryptAdminPwd: arguments: [admin password] [CSI keyStore password] [CSI keyStoreAlias password] /sap/MobilePlatform3

(Nov 12, 2015 10:04:56 AM), , com.sap.install.smp.wizardaction.ExecSilentInstall, dbg, return value: 0

(Nov 12, 2015 10:04:58 AM), , com.sybase.englwd.wizardbean.FilesActionWizard, dbg, Copying File: /sap/ebf25288/modules/server/masterKeyRandom.sh to /sap/MobilePlatform3/Util/masterKeyRandom.sh

(Nov 12, 2015 10:04:59 AM), , com.sap.install.smp.wizardaction.ExecSilentInstall, dbg, masterKeyRandom: command: /sap/MobilePlatform3/Util/masterKeyRandom.sh

(Nov 12, 2015 10:04:59 AM), , com.sap.install.smp.wizardaction.ExecSilentInstall, dbg, masterKeyRandom: arguments: [masterKey password] ENosSxFLOr ENosSxFLOr /sap/MobilePlatform3

(Nov 12, 2015 10:05:00 AM), , com.sap.install.smp.wizardaction.ExecSilentInstall, dbg, return value: 0

(Nov 12, 2015 10:05:02 AM), , com.sybase.englwd.wizardbean.FilesActionWizard, dbg, Copying File: /sap/ebf25288/modules/server/keystoreEncryption.sh to /sap/MobilePlatform3/Util/keystoreEncryption.sh

(Nov 12, 2015 10:05:03 AM), , com.sap.install.smp.wizardaction.ExecSilentInstall, dbg, keystoreEncryption: command: /sap/MobilePlatform3/Util/keystoreEncryption.sh

(Nov 12, 2015 10:05:03 AM), , com.sap.install.smp.wizardaction.ExecSilentInstall, dbg, keystoreEncryption: arguments: [master key] [password to encrypt]

(Nov 12, 2015 10:05:06 AM), , com.sap.install.smp.wizardaction.ExecSilentInstall, dbg, return value: 0

(Nov 12, 2015 10:05:08 AM), , com.sybase.englwd.wizardbean.FilesActionWizard, dbg, Copying File: /sap/ebf25288/modules/server/setKeystorePassword.sh to /sap/MobilePlatform3/Util/setKeystorePassword.sh

(Nov 12, 2015 10:05:09 AM), , com.sap.install.smp.wizardaction.ExecSilentInstall, dbg, setKeystorePassword: command: /sap/MobilePlatform3/Util/setKeystorePassword.sh

(Nov 12, 2015 10:05:09 AM), , com.sap.install.smp.wizardaction.ExecSilentInstall, dbg, setKeystorePassword: arguments: [keyStore password] /sap/MobilePlatform3 smp3.tobias.de /sap/MobilePlatform3/sapjvm_8

(Nov 12, 2015 10:05:22 AM), , com.sap.install.smp.wizardaction.ExecSilentInstall, dbg, return value: 0

(Nov 12, 2015 10:05:24 AM), , com.sap.install.smp.wizardaction.ExecSilentInstall, dbg, dbEncryption: command: /sap/MobilePlatform3/Util/keystoreEncryption.sh

(Nov 12, 2015 10:05:24 AM), , com.sap.install.smp.wizardaction.ExecSilentInstall, dbg, dbEncryption: arguments: [master key] [password to encrypt]

(Nov 12, 2015 10:05:27 AM), , com.sap.install.smp.wizardaction.ExecSilentInstall, dbg, return value: 0

(Nov 12, 2015 10:05:27 AM), , com.sap.install.smp.wizardaction.ExecSilentInstall, dbg, reading the line1/sap/MobilePlatform3/InstallLogs/silentInstall/dbEncryption.log

(Nov 12, 2015 10:05:29 AM), , com.sybase.englwd.wizardbean.FilesActionWizard, dbg, Copying File: /sap/ebf25288/modules/server/serverBuildInfo.txt to /sap/MobilePlatform3/Server/config_master/dist.name

(Nov 12, 2015 10:05:29 AM), , com.installshield.product.actions.UninstallerJVMResolution, dbg.jvm, attempting to use the current JVM

(Nov 12, 2015 10:05:29 AM), , com.installshield.product.actions.UninstallerJVMResolution, dbg.jvm, copying the current JVM

(Nov 12, 2015 10:05:29 AM), , com.ibm.wizard.platform.linux.LinuxJVMServiceImpl, dbg.jvm, copying directory /sap/ebf25288/sapjvm_7_jre/ to /sap/MobilePlatform3/_smpjvm

(Nov 12, 2015 10:05:52 AM), , com.ibm.wizard.platform.linux.LinuxJVMServiceImpl, dbg.jvm, JVM_HOME = /sap/MobilePlatform3/_smpjvm

(Nov 12, 2015 10:05:52 AM), , com.ibm.wizard.platform.linux.LinuxProductServiceImpl, dbg.install, JVM memory before installing Add Required Bytes (jdkSize): free=13854736 total=40587264

(Nov 12, 2015 10:05:52 AM), , com.ibm.wizard.platform.linux.LinuxProductServiceImpl, msg1, installing Add Required Bytes (jdkSize)

(Nov 12, 2015 10:05:52 AM), , com.ibm.wizard.platform.linux.LinuxProductServiceImpl, dbg.install, JVM memory after installing Add Required Bytes (jdkSize): free=13403696 total=40587264

(Nov 12, 2015 10:05:52 AM), , com.ibm.wizard.platform.linux.LinuxProductServiceImpl, dbg.install, JVM memory before installing Files (bean157): free=13178200 total=40587264

(Nov 12, 2015 10:05:52 AM), , com.ibm.wizard.platform.linux.LinuxProductServiceImpl, msg1, installing Files (bean157)

(Nov 12, 2015 10:05:52 AM), , com.ibm.wizard.platform.linux.LinuxProductServiceImpl, dbg.install, JVM memory after installing Files (bean157): free=12614416 total=40587264

(Nov 12, 2015 10:05:52 AM), , com.ibm.wizard.platform.linux.LinuxProductServiceImpl, dbg.install, JVM memory before installing Exec Action (chmodJDK): free=12388832 total=40587264

(Nov 12, 2015 10:05:52 AM), , com.ibm.wizard.platform.linux.LinuxProductServiceImpl, msg1, installing Exec Action (chmodJDK)

(Nov 12, 2015 10:05:53 AM), , com.ibm.wizard.platform.linux.LinuxProductServiceImpl, dbg.install, JVM memory after installing Exec Action (chmodJDK): free=11586480 total=40587264

(Nov 12, 2015 10:05:53 AM), , com.ibm.wizard.platform.linux.LinuxProductServiceImpl, dbg.install, JVM memory before installing Files (bean1): free=11360928 total=40587264

(Nov 12, 2015 10:05:53 AM), , com.ibm.wizard.platform.linux.LinuxProductServiceImpl, msg1, installing Files (bean1)

(Nov 12, 2015 10:05:53 AM), , com.ibm.wizard.platform.linux.LinuxProductServiceImpl, dbg.install, JVM memory after installing Files (bean1): free=21373168 total=40587264

(Nov 12, 2015 10:05:53 AM), , com.ibm.wizard.platform.linux.LinuxProductServiceImpl, dbg.install, JVM memory before installing Add Required Bytes (connSize): free=21055248 total=40587264

(Nov 12, 2015 10:05:53 AM), , com.ibm.wizard.platform.linux.LinuxProductServiceImpl, msg1, installing Add Required Bytes (connSize)

(Nov 12, 2015 10:05:53 AM), , com.ibm.wizard.platform.linux.LinuxProductServiceImpl, dbg.install, JVM memory after installing Add Required Bytes (connSize): free=20578272 total=40587264

(Nov 12, 2015 10:05:53 AM), , com.ibm.wizard.platform.linux.LinuxProductServiceImpl, dbg.install, JVM memory before installing Exec Action (chmodServer): free=20419272 total=40587264

(Nov 12, 2015 10:05:53 AM), , com.ibm.wizard.platform.linux.LinuxProductServiceImpl, msg1, installing Exec Action (chmodServer)

(Nov 12, 2015 10:05:53 AM), , com.ibm.wizard.platform.linux.LinuxProductServiceImpl, dbg.install, JVM memory after installing Exec Action (chmodServer): free=19721992 total=40587264

(Nov 12, 2015 10:05:53 AM), , com.ibm.wizard.platform.linux.LinuxProductServiceImpl, dbg.install, JVM memory before installing Files (bean106): free=19404048 total=40587264

(Nov 12, 2015 10:05:53 AM), , com.ibm.wizard.platform.linux.LinuxProductServiceImpl, msg1, installing Files (bean106)

(Nov 12, 2015 10:05:53 AM), , com.ibm.wizard.platform.linux.LinuxProductServiceImpl, dbg.install, JVM memory after installing Files (bean106): free=19086056 total=40587264

(Nov 12, 2015 10:05:53 AM), , com.ibm.wizard.platform.linux.LinuxProductServiceImpl, dbg.install, JVM memory before installing Add Required Bytes (mobiliserSize): free=18768040 total=40587264

(Nov 12, 2015 10:05:53 AM), , com.ibm.wizard.platform.linux.LinuxProductServiceImpl, msg1, installing Add Required Bytes (mobiliserSize)

(Nov 12, 2015 10:05:53 AM), , com.ibm.wizard.platform.linux.LinuxProductServiceImpl, dbg.install, JVM memory after installing Add Required Bytes (mobiliserSize): free=18291136 total=40587264

(Nov 12, 2015 10:05:53 AM), , com.ibm.wizard.platform.linux.LinuxProductServiceImpl, dbg.install, JVM memory before installing Add Required Bytes (agentrySize): free=18132184 total=40587264

(Nov 12, 2015 10:05:53 AM), , com.ibm.wizard.platform.linux.LinuxProductServiceImpl, msg1, installing Add Required Bytes (agentrySize)

(Nov 12, 2015 10:05:53 AM), , com.ibm.wizard.platform.linux.LinuxProductServiceImpl, dbg.install, JVM memory after installing Add Required Bytes (agentrySize): free=17655240 total=40587264

(Nov 12, 2015 10:05:57 AM), , com.sybase.stf.install.uep.wizardaction.InstallStatus, dbg, status: 3

(Nov 12, 2015 10:05:57 AM), , com.sybase.englwd.wizardbean.FilesActionWizard, dbg, Creating directory: /sap/MobilePlatform3/ThirdParty/Legal

(Nov 12, 2015 10:05:57 AM), , com.sybase.englwd.wizardbean.FilesActionWizard, dbg, Copying File: /sap/ebf25288/3rdPartyLicenses/OSSNotices-SAPMobilePlatform3_0.pdf to /sap/MobilePlatform3/ThirdParty/Legal/OSSNotices-SAPMobilePlatform3_0.pdf

(Nov 12, 2015 10:05:57 AM), , com.sybase.englwd.wizardbean.FilesActionWizard, dbg, Copying File: /sap/ebf25288/SilentUninstall_Linux.sh to /sap/MobilePlatform3/SilentUninstall_Linux.sh

(Nov 12, 2015 10:05:58 AM), , com.sybase.englwd.wizardbean.FilesActionWizard, dbg, Copying File: /sap/ebf25288/SilentUninstall_Linux.txt to /sap/MobilePlatform3/Uninstaller/Server/SilentUninstall_Linux.txt

(Nov 12, 2015 10:05:58 AM), , com.sybase.englwd.wizardbean.FilesActionWizard, dbg, Deleting File: /sap/MobilePlatform3/InstallLogs/silentInstall/encryptpwd.log

(Nov 12, 2015 10:05:58 AM), , com.sap.install.smp.wizardaction.InstallProductInfoFile, dbg, New product info file: /sap/ebf25288/smp_product_info.xml

(Nov 12, 2015 10:05:58 AM), , com.sap.install.smp.wizardaction.InstallProductInfoFile, dbg, Copied File: /sap/ebf25288/smp_product_info.xml to /sap/MobilePlatform3/smp_product_info.xml

(Nov 12, 2015 10:05:58 AM), , com.installshield.sybaseuep.event.dialog.silent.PanelLastSilentImpl, dbg, SAP Mobile Platform 3.0 SP09 has been installed successfully.

Installation Successful

Let the world know ...Tweet about this on TwitterShare on Google+Share on FacebookEmail this to someoneShare on LinkedIn

Download a HDS VOD stream

Let the world know ...Tweet about this on TwitterShare on Google+Share on FacebookEmail this to someoneShare on LinkedIn

Video streaming is nice, but you need to be online to watch most of the videos made available. If you want to assist them offline or archive them for later reference, you depend on whether a downloadable version is available … or you capture the video. There are a lot of tools available to do this, but it is not really easy for HDS videos made available via on demand. But there is a PHP script available that assists you in retrieving these kind of videos for offline consumption.

Basically, you start the video and look in the network trace for manifest. Copy the URL as this is the URL going to be used by the php script. There are two parameters you`ll need:

  • g
  • hdcore

Any other parameter can be deleted. In Google Chrome, you can start the video and in the network tab you`ll be able to see and copy the manifest.f4m URL.

Sample URL:

http://server.akamaihd.net/z/path/vod/abc1111_,200,600,1200,.mp4.csmil/manifest.f4m?g=ABCDEFGH&hdcore=3.3.0

Paste this URL as the manifest parameter of the php script and run it.

Command: php AdobeHDS.php –manifest “http://server.akamaihd.net/z/path/vod/abc1111_,200,600,1200,.mp4.csmil/manifest.f4m?g=ABCDEFGH&hdcore=3.3.0” –delete

This will start the download of the files in 8 threads and after all are downloaded, make them available as a flv file.

Downloading fragments

Result

Let the world know ...Tweet about this on TwitterShare on Google+Share on FacebookEmail this to someoneShare on LinkedIn

Enable certificate based logon – 6 Test certificate based logon with Web Dispatcher

Let the world know ...Tweet about this on TwitterShare on Google+Share on FacebookEmail this to someoneShare on LinkedIn

For the user to able to log on with his client certificate, SAP Web Dispatcher (WD) must forward it. In a SSL termination scenario, this means that the WD is authenticating itself against a SAP backend, and repasses the client certificate of the user inside a header. SAP Help. This is the scenario configured in the previous blogs and the one that must be tested. To test it, I`ll use the Fiori logon screen.

ICF

Change ICF node to use client certificate based logon

Transaction: SICF

Path: /default_host/sap/bc/ui5_ui5/ui2

Changing the procedure can give you some popups about the current configuration; depends what was already configured.

With this, to access the ICF node, the user must send a client certificate.

Test

Call the URL of the service in the browser. URL: https://nwgw74.tobias.de:8100/sap/bc/ui5_ui5/ui2/ushell/

A popup should appear (given that you have a valid client certificate installed). Select the right certificate.

Let the world know ...Tweet about this on TwitterShare on Google+Share on FacebookEmail this to someoneShare on LinkedIn

Enable certificate based logon – 5 Configure SAP Web Dispatcher

Let the world know ...Tweet about this on TwitterShare on Google+Share on FacebookEmail this to someoneShare on LinkedIn

For SAP Web Dispatcher be able to forward the received client certificate received by the browser, it must

  1. Re-encrypt the connection
  2. Add the client certificate as a header in the request

To ensure the connection is forwarded encrypted via TLS, use the parameter wdisp/ssl_enrypt=2. Value 2 means that WD will always forward using TLS, independently if the request received was HTTP or HTTPS. To inform WD which client certificate to use, configure parameter wdisp/ssl_auth. Value 2 means that the certificate specified by parameter wdisp/ssl_cred is used. In the below sample profile, ssl_cred points to the client PSE (SAPSSLC.pse). Icm/HTTPS/verify_client controls whether or not WD is asking or demanding for a client certificate. 1 means that WD will ask for one, but continue if not presented, while 2 means that a certificate must be presented.

With this information, WD can be used to connect securely the backend and forward the client certificate as a header, while using its own client certificate to authenticate against the backend NetWeaver system.

Extract of a sample WD profile

# unique instance identifier

SAPSYSTEMNAME = TOB

# unique instance number

SAPSYSTEM = 00

wdisp/ssl_encrypt=2

wdisp/ssl_auth=2

#

# Configuration for handling certificates

#

wdisp/ssl_cred=$(DIR_PROFILE)/sec/SAPSSLC.pse

icm/HTTPS/forward_ccert_as_header = true

icm/HTTPS/verify_client = 1

icm/HTTPS/client_certificate_header_name = SSL_CLIENT_CERT

icm/HTTPS/client_key_size_header_name = SSL_CIPHER_USEKEYSIZE

icm/HTTPS/client_cipher_suite_header_name = SSL_CIPHER_SUITE

icm/HTTPS/client_certificate_chain_header_prefix = SSL_CLIENT_CERT_CHAIN_1

#

# Backend System

#

wdisp/system_0 = SID=GWD, MSHOST=nwgw74.tobias.de, MSPORT=8101, SRCURL=/, SRCSRV=*:*, SSL_ENCRYPT=1

# SAP Web Dispatcher Ports

icm/server_port_1 = PROT=HTTPS,PORT=443

Let the world know ...Tweet about this on TwitterShare on Google+Share on FacebookEmail this to someoneShare on LinkedIn

Enable certificate based logon – 4 Import WD client certificate into ABAP system using STRUST

Let the world know ...Tweet about this on TwitterShare on Google+Share on FacebookEmail this to someoneShare on LinkedIn

For the backend SAP NetWeaver ABAP system to trust the WD client certificate, it must be imported into the PSE. I am not 100% sure about this, as importing the root CA certificate should also do the trick.

Transaction: STRUST

Change to edit mode:

Select SSL standard server

Import WD certificate of Client PSE.

Result

Save

Let the world know ...Tweet about this on TwitterShare on Google+Share on FacebookEmail this to someoneShare on LinkedIn

Enable certificate based logon – 3 Activate client certificate verification on NetWeaver ABAP

Let the world know ...Tweet about this on TwitterShare on Google+Share on FacebookEmail this to someoneShare on LinkedIn

For the NetWeaver ABAP system to be able to accept the certificate based logon from Web Dispatcher, it must be configured to accept the certificate of the WD system as a client certificate. SAP Help

Transaction: RZ10

Instance profile

It is necessary to maintain 2 profile parameters:

  • icm/HTTPS/trust_client_with_issuer
  • icm/HTTPS/trust_client_with_subject

These two parameters are needed to let NW ABAP identifiy which client certificate to trust. They define the DN of the client and the DN of the CA that issued the certificate. Even when someone sends a certificate with the same DN as of WD, but signed by a different CA, it won`t be accepted by NW ABAP. This helps to increase the level of security.

To add both, you have to select Change and then Add new parameter

Parameter name: icm/HTTPS/trust_client_with_issuer

The value of the parameter is taken from the Issuer line of the client PSE of the WD.

Parameter name icm/HTTPS/trust_client_with_subject

The value of the parameter is taken from the Subject line of the client PSE of the WD.

The example screenshots show CN=WDP, OU=SSL Client. These are the standard values of the self-signed certificate of WD client PSE. In case you do not have a CA available, self-signed certificates like the above can be used too.

Result

Let the world know ...Tweet about this on TwitterShare on Google+Share on FacebookEmail this to someoneShare on LinkedIn

Enable certificate based logon – 2 Maintain Client PSE of Web Dispatcher

Let the world know ...Tweet about this on TwitterShare on Google+Share on FacebookEmail this to someoneShare on LinkedIn

OK, now it will get complicated. Certificate based logons do not really like reverse proxies. First step is to ensure that the client has a certificate that is accepted by the SAP NetWeaver ABAP PSE. For this, the certificate must be signed by a CA that the ABAP PSE trusts.

Log on the WD admin and select PSE Management

Select Recreate PSE.

In the DN field, use the name of the WD: CN=wd.tobias.de. The other information is optional, but should be added.

Right now, the certificate is created and the PSE has a private key, but the certificate is self-signed. To have an official certificate, it must be signed by a CA. To do this, select: “Create a CA Request” to create a CSR that will be send to the CA.

Create CA Request

Save the output in a TXT file, send it to your CA, let it get signed. Then, go back to WD admin and import the CA response.

The client PSE updates the issuer information. Now there must be shown the DN of the CA. In my case: C=BR, O=EJBCA, CN=ca.tobias.de

Let the world know ...Tweet about this on TwitterShare on Google+Share on FacebookEmail this to someoneShare on LinkedIn

Enable certificate based logon – 1 Prepare SAP NetWeaver ABAP system for user certificate based logon

Let the world know ...Tweet about this on TwitterShare on Google+Share on FacebookEmail this to someoneShare on LinkedIn

One of the more secure ways to authenticate you is to use a user certificate for logon. A pre-requisite for this is to have ICF running on HTTPS, with a valid server side certificate. How to do this was already discussed and showed here. Next pre-requisite is of course to have a valid user certificate. To obtain one is the task of the CA. You than have to

  • enable certificate based logon for a ICF service and
  • tell ABAP how to interpret the received certificate.

I am now taking a closer look at how to tell ABAP how to interpret the received certificate. This is done by configuring SAP NetWeaver ABAP to map the CN name of the certificate to a user Id. The following steps demonstrate how to do this manually for each user. Yes, for each user. Nothing you can do in a PRD environment with thousands of users. There you`ll have to write a report or use the rule based wizard available as of SAP NetWeaver ABAP 7.4. But for now, let`s do it manually for each user.

Transaction: SE11

Database table: VUSREXTID

Select Contents

For external ID type, give DN.

DN is the distinguished name of the certificate, aka the subject. This is the part of the certificate that informs the common name (CN). For a server certificate, this is the FQDN of the server, for a user, it is normally the user id.

Click OK

Select edit.

Select New Entries

Enter the data.

The external ID value is determined by the user certificate. In my case, the user certificate contains as subject only CN=tobias.

Save to persist the information.

Result

The certificate that contains the CN=tobias is linked to the user id tobias in the system. After the certificate was validated, it is used to log on this linked user id. This also means that a simple form of user mapping can be realized

Let the world know ...Tweet about this on TwitterShare on Google+Share on FacebookEmail this to someoneShare on LinkedIn