Sunday, 20 March 2022

Saturday, 12 March 2022

JMX Wildfly 8.2.1



set "JAVA_OPTS=%JAVA_OPTS% -Djboss.modules.system.pkgs=org.jboss.logmanager -Djava.util.logging.manager=org.jboss.logmanager.LogManager -Xbootclasspath/p:C:\Users\zafru\Downloads\wildfly-8.2.1.Final\modules\system\layers\base\org\jboss\logmanager\main\jboss-logmanager-1.5.2.Final.jar -Djava.rmi.server.hostname=192.168.1.168 -Dcom.sun.management.jmxremote -Dcom.sun.management.jmxremote.port=8686 -Dcom.sun.management.jmxremote.ssl=false -Dcom.sun.management.jmxremote.authenticate=false"

 Steps

1) .\visualvm.exe --cp:a C:/Users/zafru/Downloads/visualvm_212/visualvm/lib/jboss-cli-client.jar

2) standalone.xml


<?xml version="1.0" ?>


<server xmlns="urn:jboss:domain:2.2">


    <extensions>

        <extension module="org.jboss.as.clustering.infinispan"/>

        <extension module="org.jboss.as.connector"/>

        <extension module="org.jboss.as.deployment-scanner"/>

        <extension module="org.jboss.as.ee"/>

        <extension module="org.jboss.as.ejb3"/>

        <extension module="org.jboss.as.jaxrs"/>

        <extension module="org.jboss.as.jdr"/>

        <extension module="org.jboss.as.jmx"/>

        <extension module="org.jboss.as.jpa"/>

        <extension module="org.jboss.as.jsf"/>

        <extension module="org.jboss.as.logging"/>

        <extension module="org.jboss.as.mail"/>

        <extension module="org.jboss.as.naming"/>

        <extension module="org.jboss.as.pojo"/>

        <extension module="org.jboss.as.remoting"/>

        <extension module="org.jboss.as.sar"/>

        <extension module="org.jboss.as.security"/>

        <extension module="org.jboss.as.transactions"/>

        <extension module="org.jboss.as.webservices"/>

        <extension module="org.jboss.as.weld"/>

        <extension module="org.wildfly.extension.batch"/>

        <extension module="org.wildfly.extension.io"/>

        <extension module="org.wildfly.extension.undertow"/>

    </extensions>



    <management>

        <security-realms>

            <security-realm name="ManagementRealm">

                <authentication>

                    <local default-user="$local" skip-group-loading="true"/>

                    <properties path="mgmt-users.properties" relative-to="jboss.server.config.dir"/>

                </authentication>

                <authorization map-groups-to-roles="false">

                    <properties path="mgmt-groups.properties" relative-to="jboss.server.config.dir"/>

                </authorization>

            </security-realm>

            <security-realm name="ApplicationRealm">

                <authentication>

                    <local default-user="$local" allowed-users="*" skip-group-loading="true"/>

                    <properties path="application-users.properties" relative-to="jboss.server.config.dir"/>

                </authentication>

                <authorization>

                    <properties path="application-roles.properties" relative-to="jboss.server.config.dir"/>

                </authorization>

            </security-realm>

        </security-realms>

        <audit-log>

            <formatters>

                <json-formatter name="json-formatter"/>

            </formatters>

            <handlers>

                <file-handler name="file" formatter="json-formatter" path="audit-log.log" relative-to="jboss.server.data.dir"/>

            </handlers>

            <logger log-boot="true" log-read-only="false" enabled="false">

                <handlers>

                    <handler name="file"/>

                </handlers>

            </logger>

        </audit-log>

        <management-interfaces>

            <http-interface security-realm="ManagementRealm" http-upgrade-enabled="true">

                <socket-binding http="management-http"/>

            </http-interface>

        </management-interfaces>

        <access-control provider="simple">

            <role-mapping>

                <role name="SuperUser">

                    <include>

                        <user name="$local"/>

                    </include>

                </role>

            </role-mapping>

        </access-control>

    </management>


    <profile>

        <subsystem xmlns="urn:jboss:domain:logging:2.0">

            <console-handler name="CONSOLE">

                <level name="INFO"/>

                <formatter>

                    <named-formatter name="COLOR-PATTERN"/>

                </formatter>

            </console-handler>

            <periodic-rotating-file-handler name="FILE" autoflush="true">

                <formatter>

                    <named-formatter name="PATTERN"/>

                </formatter>

                <file relative-to="jboss.server.log.dir" path="server.log"/>

                <suffix value=".yyyy-MM-dd"/>

                <append value="true"/>

            </periodic-rotating-file-handler>

            <logger category="com.arjuna">

                <level name="WARN"/>

            </logger>

            <logger category="org.apache.tomcat.util.modeler">

                <level name="WARN"/>

            </logger>

            <logger category="org.jboss.as.config">

                <level name="DEBUG"/>

            </logger>

            <logger category="sun.rmi">

                <level name="WARN"/>

            </logger>

            <logger category="jacorb">

                <level name="WARN"/>

            </logger>

            <logger category="jacorb.config">

                <level name="ERROR"/>

            </logger>

            <root-logger>

                <level name="INFO"/>

                <handlers>

                    <handler name="CONSOLE"/>

                    <handler name="FILE"/>

                </handlers>

            </root-logger>

            <formatter name="PATTERN">

                <pattern-formatter pattern="%d{yyyy-MM-dd HH:mm:ss,SSS} %-5p [%c] (%t) %s%E%n"/>

            </formatter>

            <formatter name="COLOR-PATTERN">

                <pattern-formatter pattern="%K{level}%d{HH:mm:ss,SSS} %-5p [%c] (%t) %s%E%n"/>

            </formatter>

        </subsystem>

        <subsystem xmlns="urn:jboss:domain:batch:1.0">

            <job-repository>

                <in-memory/>

            </job-repository>

            <thread-pool>

                <max-threads count="10"/>

                <keepalive-time time="30" unit="seconds"/>

            </thread-pool>

        </subsystem>

        <subsystem xmlns="urn:jboss:domain:datasources:2.0">

            <datasources>

                <datasource jndi-name="java:jboss/datasources/ExampleDS" pool-name="ExampleDS" enabled="true" use-java-context="true">

                    <connection-url>jdbc:h2:mem:test;DB_CLOSE_DELAY=-1;DB_CLOSE_ON_EXIT=FALSE</connection-url>

                    <driver>h2</driver>

                    <security>

                        <user-name>sa</user-name>

                        <password>sa</password>

                    </security>

                </datasource>

                <drivers>

                    <driver name="h2" module="com.h2database.h2">

                        <xa-datasource-class>org.h2.jdbcx.JdbcDataSource</xa-datasource-class>

                    </driver>

                </drivers>

            </datasources>

        </subsystem>

        <subsystem xmlns="urn:jboss:domain:deployment-scanner:2.0">

            <deployment-scanner path="deployments" relative-to="jboss.server.base.dir" scan-interval="5000"/>

        </subsystem>

        <subsystem xmlns="urn:jboss:domain:ee:2.0">

            <spec-descriptor-property-replacement>false</spec-descriptor-property-replacement>

            <concurrent>

                <context-services>

                    <context-service name="default" jndi-name="java:jboss/ee/concurrency/context/default" use-transaction-setup-provider="true"/>

                </context-services>

                <managed-thread-factories>

                    <managed-thread-factory name="default" jndi-name="java:jboss/ee/concurrency/factory/default" context-service="default"/>

                </managed-thread-factories>

                <managed-executor-services>

                    <managed-executor-service name="default" jndi-name="java:jboss/ee/concurrency/executor/default" context-service="default" hung-task-threshold="60000" core-threads="5" max-threads="25" keepalive-time="5000"/>

                </managed-executor-services>

                <managed-scheduled-executor-services>

                    <managed-scheduled-executor-service name="default" jndi-name="java:jboss/ee/concurrency/scheduler/default" context-service="default" hung-task-threshold="60000" core-threads="2" keepalive-time="3000"/>

                </managed-scheduled-executor-services>

            </concurrent>

            <default-bindings context-service="java:jboss/ee/concurrency/context/default" datasource="java:jboss/datasources/ExampleDS" jms-connection-factory="java:jboss/DefaultJMSConnectionFactory" managed-executor-service="java:jboss/ee/concurrency/executor/default" managed-scheduled-executor-service="java:jboss/ee/concurrency/scheduler/default" managed-thread-factory="java:jboss/ee/concurrency/factory/default"/>

        </subsystem>

        <subsystem xmlns="urn:jboss:domain:ejb3:2.0">

            <session-bean>

                <stateful default-access-timeout="5000" cache-ref="simple" passivation-disabled-cache-ref="simple"/>

                <singleton default-access-timeout="5000"/>

            </session-bean>

            <pools>

                <bean-instance-pools>

                    <strict-max-pool name="slsb-strict-max-pool" max-pool-size="20" instance-acquisition-timeout="5" instance-acquisition-timeout-unit="MINUTES"/>

                    <strict-max-pool name="mdb-strict-max-pool" max-pool-size="20" instance-acquisition-timeout="5" instance-acquisition-timeout-unit="MINUTES"/>

                </bean-instance-pools>

            </pools>

            <caches>

                <cache name="simple"/>

                <cache name="distributable" passivation-store-ref="infinispan" aliases="passivating clustered"/>

            </caches>

            <passivation-stores>

                <passivation-store name="infinispan" cache-container="ejb" max-size="10000"/>

            </passivation-stores>

            <timer-service thread-pool-name="default" default-data-store="default-file-store">

                <data-stores>

                    <file-data-store name="default-file-store" path="timer-service-data" relative-to="jboss.server.data.dir"/>

                </data-stores>

            </timer-service>

            <remote connector-ref="http-remoting-connector" thread-pool-name="default"/>

            <thread-pools>

                <thread-pool name="default">

                    <max-threads count="10"/>

                    <keepalive-time time="100" unit="milliseconds"/>

                </thread-pool>

            </thread-pools>

            <default-security-domain value="other"/>

            <default-missing-method-permissions-deny-access value="true"/>

        </subsystem>

        <subsystem xmlns="urn:jboss:domain:io:1.1">

            <worker name="default"/>

            <buffer-pool name="default"/>

        </subsystem>

        <subsystem xmlns="urn:jboss:domain:infinispan:2.0">

            <cache-container name="web" default-cache="passivation" module="org.wildfly.clustering.web.infinispan">

                <local-cache name="passivation" batching="true">

                    <file-store passivation="true" purge="false"/>

                </local-cache>

                <local-cache name="persistent" batching="true">

                    <file-store passivation="false" purge="false"/>

                </local-cache>

            </cache-container>

            <cache-container name="ejb" default-cache="passivation" module="org.wildfly.clustering.ejb.infinispan" aliases="sfsb">

                <local-cache name="passivation" batching="true">

                    <file-store passivation="true" purge="false"/>

                </local-cache>

                <local-cache name="persistent" batching="true">

                    <file-store passivation="false" purge="false"/>

                </local-cache>

            </cache-container>

            <cache-container name="hibernate" default-cache="local-query" module="org.hibernate">

                <local-cache name="entity">

                    <transaction mode="NON_XA"/>

                    <eviction strategy="LRU" max-entries="10000"/>

                    <expiration max-idle="100000"/>

                </local-cache>

                <local-cache name="local-query">

                    <transaction mode="NONE"/>

                    <eviction strategy="LRU" max-entries="10000"/>

                    <expiration max-idle="100000"/>

                </local-cache>

                <local-cache name="timestamps">

                    <transaction mode="NONE"/>

                    <eviction strategy="NONE"/>

                </local-cache>

            </cache-container>

        </subsystem>

        <subsystem xmlns="urn:jboss:domain:jaxrs:1.0"/>

        <subsystem xmlns="urn:jboss:domain:jca:2.0">

            <archive-validation enabled="true" fail-on-error="true" fail-on-warn="false"/>

            <bean-validation enabled="true"/>

            <default-workmanager>

                <short-running-threads>

                    <core-threads count="50"/>

                    <queue-length count="50"/>

                    <max-threads count="50"/>

                    <keepalive-time time="10" unit="seconds"/>

                </short-running-threads>

                <long-running-threads>

                    <core-threads count="50"/>

                    <queue-length count="50"/>

                    <max-threads count="50"/>

                    <keepalive-time time="10" unit="seconds"/>

                </long-running-threads>

            </default-workmanager>

            <cached-connection-manager/>

        </subsystem>

        <subsystem xmlns="urn:jboss:domain:jdr:1.0"/>

        <subsystem xmlns="urn:jboss:domain:jmx:1.3">

            <expose-resolved-model/>

            <expose-expression-model/>

            <remoting-connector use-management-endpoint="true"/>

        </subsystem>

        <subsystem xmlns="urn:jboss:domain:jpa:1.1">

            <jpa default-datasource="" default-extended-persistence-inheritance="DEEP"/>

        </subsystem>

        <subsystem xmlns="urn:jboss:domain:jsf:1.0"/>

        <subsystem xmlns="urn:jboss:domain:mail:2.0">

            <mail-session name="default" jndi-name="java:jboss/mail/Default">

                <smtp-server outbound-socket-binding-ref="mail-smtp"/>

            </mail-session>

        </subsystem>

        <subsystem xmlns="urn:jboss:domain:naming:2.0">

            <remote-naming/>

        </subsystem>

        <subsystem xmlns="urn:jboss:domain:pojo:1.0"/>

        <subsystem xmlns="urn:jboss:domain:remoting:2.0">

            <endpoint worker="default"/>

            <http-connector name="http-remoting-connector" connector-ref="default" security-realm="ApplicationRealm"/>

        </subsystem>

        <subsystem xmlns="urn:jboss:domain:resource-adapters:2.0"/>

        <subsystem xmlns="urn:jboss:domain:sar:1.0"/>

        <subsystem xmlns="urn:jboss:domain:security:1.2">

            <security-domains>

                <security-domain name="other" cache-type="default">

                    <authentication>

                        <login-module code="Remoting" flag="optional">

                            <module-option name="password-stacking" value="useFirstPass"/>

                        </login-module>

                        <login-module code="RealmDirect" flag="required">

                            <module-option name="password-stacking" value="useFirstPass"/>

                        </login-module>

                    </authentication>

                </security-domain>

                <security-domain name="jboss-web-policy" cache-type="default">

                    <authorization>

                        <policy-module code="Delegating" flag="required"/>

                    </authorization>

                </security-domain>

                <security-domain name="jboss-ejb-policy" cache-type="default">

                    <authorization>

                        <policy-module code="Delegating" flag="required"/>

                    </authorization>

                </security-domain>

            </security-domains>

        </subsystem>

        <subsystem xmlns="urn:jboss:domain:transactions:2.0">

            <core-environment>

                <process-id>

                    <uuid/>

                </process-id>

            </core-environment>

            <recovery-environment socket-binding="txn-recovery-environment" status-socket-binding="txn-status-manager"/>

        </subsystem>

        <subsystem xmlns="urn:jboss:domain:undertow:1.2">

            <buffer-cache name="default"/>

            <server name="default-server">

                <http-listener name="default" socket-binding="http"/>

                <host name="default-host" alias="localhost">

                    <location name="/" handler="welcome-content"/>

                    <filter-ref name="server-header"/>

                    <filter-ref name="x-powered-by-header"/>

                </host>

            </server>

            <servlet-container name="default">

                <jsp-config/>

                <websockets/>

            </servlet-container>

            <handlers>

                <file name="welcome-content" path="${jboss.home.dir}/welcome-content"/>

            </handlers>

            <filters>

                <response-header name="server-header" header-name="Server" header-value="WildFly/8"/>

                <response-header name="x-powered-by-header" header-name="X-Powered-By" header-value="Undertow/1"/>

            </filters>

        </subsystem>

        <subsystem xmlns="urn:jboss:domain:webservices:1.2">

            <wsdl-host>${jboss.bind.address:0.0.0.0}</wsdl-host>

            <endpoint-config name="Standard-Endpoint-Config"/>

            <endpoint-config name="Recording-Endpoint-Config">

                <pre-handler-chain name="recording-handlers" protocol-bindings="##SOAP11_HTTP ##SOAP11_HTTP_MTOM ##SOAP12_HTTP ##SOAP12_HTTP_MTOM">

                    <handler name="RecordingHandler" class="org.jboss.ws.common.invocation.RecordingServerHandler"/>

                </pre-handler-chain>

            </endpoint-config>

            <client-config name="Standard-Client-Config"/>

        </subsystem>

        <subsystem xmlns="urn:jboss:domain:weld:2.0"/>

    </profile>


    <interfaces>

        <interface name="management">

            <inet-address value="${jboss.bind.address.management:0.0.0.0}"/>

        </interface>

        <interface name="public">

            <inet-address value="${jboss.bind.address:0.0.0.0}"/>

        </interface>

        <interface name="unsecure">

            <inet-address value="${jboss.bind.address.unsecure:0.0.0.0}"/>

        </interface>

    </interfaces>


    <socket-binding-group name="standard-sockets" default-interface="public" port-offset="${jboss.socket.binding.port-offset:0}">

        <socket-binding name="management-http" interface="management" port="${jboss.management.http.port:9990}"/>

        <socket-binding name="management-https" interface="management" port="${jboss.management.https.port:9993}"/>

        <socket-binding name="ajp" port="${jboss.ajp.port:8009}"/>

        <socket-binding name="http" port="${jboss.http.port:8090}"/>

        <socket-binding name="https" port="${jboss.https.port:8443}"/>

        <socket-binding name="txn-recovery-environment" port="4712"/>

        <socket-binding name="txn-status-manager" port="4713"/>

        <outbound-socket-binding name="mail-smtp">

            <remote-destination host="localhost" port="25"/>

        </outbound-socket-binding>

    </socket-binding-group>

</server>


Sunday, 6 February 2022

Android App - Browser Specific URL testing - Source Code

1) activity_main.xml - Layout design

 <?xml version="1.0" encoding="utf-8"?>

<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".MainActivity">

<Button
android:id="@+id/btnChrome"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="55dp"
android:layout_marginTop="163dp"
android:layout_marginBottom="273dp"
android:onClick="btnChrome"
android:text="Chrome"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/urlText" />

<Button
android:id="@+id/btnEdge"
android:layout_width="96dp"
android:layout_height="51dp"
android:layout_marginStart="94dp"
android:layout_marginEnd="69dp"
android:layout_marginBottom="273dp"
android:onClick="btnEdge"
android:text="Edge"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toEndOf="@+id/btnChrome" />

<TextView
android:id="@+id/textView"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_marginTop="91dp"
android:layout_marginBottom="69dp"
android:fontFamily="sans-serif-medium"
android:gravity="center"
android:text="Browser URL Tester"
android:textSize="24sp"
app:layout_constraintBottom_toTopOf="@+id/urlText"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintHorizontal_bias="0.0"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintVertical_bias="0.0" />

<EditText
android:id="@+id/urlText"
android:layout_width="242dp"
android:layout_height="48dp"
android:layout_marginEnd="55dp"
android:layout_marginBottom="160dp"
android:ems="10"
android:hint="Enter URL"
android:inputType="text"
app:layout_constraintBottom_toTopOf="@+id/btnEdge"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toEndOf="@+id/textView3" />

<TextView
android:id="@+id/textView3"
android:layout_width="74dp"
android:layout_height="31dp"
android:layout_marginStart="30dp"
android:layout_marginTop="80dp"
android:layout_marginBottom="171dp"
android:gravity="center"
android:text="http://"
android:textSize="20sp"
app:layout_constraintBottom_toTopOf="@+id/btnChrome"
app:layout_constraintEnd_toStartOf="@+id/urlText"
app:layout_constraintHorizontal_bias="1.0"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/textView"
app:layout_constraintVertical_bias="1.0" />

<androidx.constraintlayout.helper.widget.Flow
android:layout_width="wrap_content"
android:layout_height="wrap_content"
app:layout_constraintBottom_toTopOf="@+id/btnEdge"
app:layout_constraintStart_toEndOf="@+id/btnChrome" />

<androidx.constraintlayout.widget.Guideline
android:id="@+id/guideline2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="horizontal"
app:layout_constraintGuide_begin="289dp" />

<androidx.constraintlayout.widget.Guideline
android:id="@+id/guideline3"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="horizontal"
app:layout_constraintGuide_begin="286dp" />

</androidx.constraintlayout.widget.ConstraintLayout>

MainActivity.java - Main Java File
package com.example.myapplication;

import androidx.appcompat.app.AppCompatActivity;

import android.content.ActivityNotFoundException;
import android.content.Intent;
import android.net.Uri;
import android.os.Bundle;
import android.view.View;
import android.widget.EditText;
import android.widget.TextView;

public class MainActivity extends AppCompatActivity {

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}

public void btnChrome(View view){
TextView tView = findViewById(R.id.textView);
EditText urlTxt = findViewById(R.id.urlText);
String URL = urlTxt.getText().toString();
tView.setText(URL.toString());
openUrlChrome("http://"+URL.toString());
}

public void btnEdge(View view){
TextView tView = findViewById(R.id.textView);
EditText urlTxt = findViewById(R.id.urlText);
String URL = urlTxt.getText().toString();
tView.setText(URL.toString());
openUrlEdge("http://"+URL.toString());
}

public void openUrlChrome(String url) {
//url = url.replace("http://","");
Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse(url));
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
intent.setPackage("com.android.chrome");
try {

startActivity(intent);
} catch (ActivityNotFoundException ex) {

intent.setPackage(null);
startActivity(Intent.createChooser(intent, "Select Browser"));
}

}

public void openUrlEdge(String url) {
//url = url.replace("http://","");
Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse(url));
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
intent.setPackage("com.android.edge");
try {

startActivity(intent);
} catch (ActivityNotFoundException ex) {

intent.setPackage(null);
startActivity(Intent.createChooser(intent, "Select Browser"));
}
}
}





Sunday, 29 August 2021

PowerShell on Ubuntu

Commands to connect from Linux to Windows Server


Enter-PSSession -ComputerName <IPADDR> -Credential oneflorida\administrator -Authentication Negotiate

Invoke-Command -ComputerName  <IPADDR>  -ScriptBlock { get-ChildItem c:\ } -Credential oneflorida\administrator -Authentication Negotiate 


Install PowerShell

# Update the list of packages
sudo apt-get update
# Install pre-requisite packages.
sudo apt-get install -y wget apt-transport-https
# Download the Microsoft repository GPG keys
wget -q https://packages.microsoft.com/config/ubuntu/20.04/packages-microsoft-prod.deb
# Register the Microsoft repository GPG keys
sudo dpkg -i packages-microsoft-prod.deb
# Update the list of products
sudo apt-get update
# Enable the "universe" repositories
sudo add-apt-repository universe
# Install PowerShell
sudo apt-get install -y powershell
# Start PowerShell
pwsh
Fix one issues with the library
ldd /opt/microsoft/powershell/7/libmi.so
   linux-vdso.so.1 (0x00007fff9617c000)
   libpthread.so.0 => /lib/x86_64-linux-gnu/libpthread.so.0 (0x00007f2a180a2000)
   libdl.so.2 => /lib/x86_64-linux-gnu/libdl.so.2 (0x00007f2a1809c000)
   libpam.so.0 => /lib/x86_64-linux-gnu/libpam.so.0 (0x00007f2a1808a000)
   libssl.so.1.0.0 => not found
   libcrypto.so.1.0.0 => not found
   libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007f2a17e98000)
   /lib64/ld-linux-x86-64.so.2 (0x00007f2a182ad000)
   libaudit.so.1 => /lib/x86_64-linux-gnu/libaudit.so.1 (0x00007f2a17e6a000)
   libcap-ng.so.0 => /lib/x86_64-linux-gnu/libcap-ng.so.0 (0x00007f2a17e62000)
sudo ln -s /usr/lib/x86_64-linux-gnu/libssl.so.1.1 /lib/x86_64-linux-gnu/libssl.so.1.0.0
sudo ln -s /usr/lib/x86_64-linux-gnu/libcrypto.so.1.1 /lib/x86_64-linux-gnu/libcrypto.so.1.0.0
apt install gss-ntlmssp

Wednesday, 18 August 2021

lxc container oracle/centos 8 not getting macvlan ip address


This has been beating us up here as well. Today, I found an answer. It may not be /the/ answer, but it does work. The problem is with CentOS 8 and the complete replacement of network-scripts with NetworkManager scripts. I know that there have been others searching for an answer to this in vain, so I’m offering up what I’ve found. Do with it what you may!

  1. Create a centos8 container using the defaults (i.e., don’t apply macvlan to them on the build) so have it use the bridge interface, which is the default

  2. Next get into the container

lxc exec [container_name] bash

  1. Next install the old network-scripts package

dnf install network-scripts

  1. Next stop Network Manager

systemctl stop NetworkManager

  1. Now make sure it doesn’t start on container startup

systemctl disable NetworkManager

  1. Next enable the Network service (part of the network-scripts package)

systemctl enable network.service

  1. Exit out of the container

  2. Now apply (or assign) your macvlan template to the container

lxc profile apply [container_name] default,macvlan - Get into the container and modify the interface vi /etc/sysconfig/network-scripts/ifcfg-eth0

and set the interface with the IP or dhcp, depending on your setup. Save the configuration and get out.

  1. Test that the interface comes up

ifup eth0

Monday, 2 August 2021

PUMMER Deployment

Script to Deploy PUM Images Automatically

Main: pummer.ksh
==============
process_id=$(echo $$);
clear
echo ""
echo ""
echo ""

deploy_pum_image()
{

# Clone Container
# MODULE="CRM"
# bugid="31046243"
# NUMBER=3

# Prepare the container

echo "Destroying the existing ${MODULE}${bugid} container, if it exists \n"
    
lxc-ls --active
lxc-stop -k -n ${MODULE}${bugid}
lxc-destroy -n ${MODULE}${bugid}

echo "Cloning and Creating ${MODULE}${bugid} container"
lxc-clone oraclepumtemplate ${MODULE}${bugid}

echo "Preparing ${MODULE}${bugid} container"
mkdir -p /container/${MODULE}${bugid}/rootfs/pumdownload     
unalias cp;cp -rf /container/templates/config_template /container/${MODULE}${bugid}/config
sed -i "s/"__HOSTNAME__"/"${MODULE}${bugid}"/g" /container/${MODULE}${bugid}/config
cat /container/${MODULE}${bugid}/config

# Start the container

lxc-start -n ${MODULE}${bugid} -d -o /container/${MODULE}${bugid}.log -l DEBUG

# Deploy PUM IMAGE
lxc-attach -e -n "${MODULE}${bugid}" -o /tmp/${MODULE}${bugid}_$$.log -- chmod +x /root/scripts/pum_deploy.sh
lxc-attach -e -n "${MODULE}${bugid}" -o /tmp/${MODULE}${bugid}_$$.log -- /root/scripts/pum_deploy.sh ${NUMBER} ${bugid}

}

echo "==========================================="
echo "Welcome to PUMMER - PUM Deployment Manager"
echo "==========================================="

read -p 'Please Enter your Oracle ID:  ' uservar
read -sp 'Password: ' passvar
echo ""
echo ""
echo -n "Validating your Credentials: "
if [ $(/usr/bin/java -jar /root/pumdump/getMOSPatch.jar MOSUser=$uservar MOSPass=$passvar platform=226P download=all patch=32356044|grep "ERROR: Invalid credentials"|wc -l) -eq 1 ]; then
        echo -n "Invalid Credentials"
else
        echo -n " All Good"
        echo ""
        echo ""

        #read -p 'Application Module Number? 1-FSCM, 2-HCM, 3-CRM, 4-PORTAL:  ' module

                while true
                do
                read -p "Module Number? 1-FSCM, 2-HCM, 3-CRM, 4-PORTAL, 5-ELM, 6-CampusSolutions:  " NUMBER
                case $NUMBER in
                                1) MODULE="FSCM"; break;;
                                2) MODULE="HCM"; break;;
                                3) MODULE="CRM"; break;;
                                4) MODULE="PORTAL"; break;;
5) MODULE="ELM"; break;;
5) MODULE="CS"; break;;
                                *) echo "Not a valid option" ; continue ;;
                esac
                done

        echo ""

                while true
                do
                read -p 'Please Enter PUM / Bug ID:  ' bugid
                /usr/bin/java -jar /root/pumdump/getMOSPatch.jar MOSUser=$uservar MOSPass=$passvar platform=226P patch=$bugid > /tmp/${bugid}_${process_id}.txt 2>/dev/null

                                if [ $(cat /tmp/${bugid}_${process_id}.txt|grep zip|wc -l) -gt 5 ];
                                then
                                        break;
                                else
                                        continue
                                fi
                done

fi

 cat /tmp/${bugid}_${process_id}.txt

 echo "Please confirm if you want to move forward with the download of the BUG ID : $bugid and create a PUM instance ?"

read -r -p "Are you sure? [y/N] " response

if [[ "$response" =~ ^([yY][eE][sS]|[yY])$ ]]
then
                mkdir -p /pumdownloads/${MODULE}/${bugid} && cd /pumdownloads/${MODULE}/${bugid}

                if [ -f /pumdownloads/${MODULE}/${bugid}/ALL_GOOD_FILES.txt ]
                then
                        echo ""
                        echo ""
                        echo "Good News: PUM Image ${MODULE} has been already downloaded no need to download once again. :)"
                        echo "Thanks, PUMMER will sent email notification along with the URL to your oracle $uservar once the PUM image is successfully deployed"
deploy_pum_image
                        echo ""
                        echo ""
                else
cd /pumdownloads/${MODULE}/${bugid}
nohup /container/scripts/download_deploy_pum_image.ksh uservar passvar bugid MODULE NUMBER > /pumdownloads/download_deploy_pum_image_${bugid}_${process_id}.log 2>&1 &
# deploy_pum_image
touch /pumdownloads/${MODULE}/${bugid}/ALL_GOOD_FILES.txt
                        echo ""
                        echo ""
                        echo "Thanks, PUMMER will sent email notification along with the URL to your oracle $uservar once the PUM image is successfully deployed"
                        echo ""
                        echo ""
                fi
else
 echo "Ok, your request is cancelled!"
fi



[root@localhost scripts]# cat download_deploy_pum_image.ksh
uservar=$1
passvar=$2
bugid=$3
MODULE=$4
NUMBER=$5

deploy_pum_image()
{

# Clone Container
# MODULE="CRM"
# bugid="31046243"
# NUMBER=3

# Prepare the container

echo "Destroying the existing ${MODULE}${bugid} container, if it exists \n"

        lxc-ls --active
        lxc-stop -k -n ${MODULE}${bugid}
        lxc-destroy -n ${MODULE}${bugid}

echo "Cloning and Creating ${MODULE}${bugid} container"

        lxc-clone oraclepumtemplate ${MODULE}${bugid}

echo "Preparing ${MODULE}${bugid} container"

        mkdir -p /container/${MODULE}${bugid}/rootfs/pumdownload
        unalias cp;cp -rf /container/templates/config_template /container/${MODULE}${bugid}/config
        sed -i "s/"__HOSTNAME__"/"${MODULE}${bugid}"/g" /container/${MODULE}${bugid}/config
        cat /container/${MODULE}${bugid}/config

# Start the container

lxc-start -n ${MODULE}${bugid} -d -o /container/${MODULE}${bugid}.log -l DEBUG

# Deploy PUM IMAGE
lxc-attach -e -n "${MODULE}${bugid}" -o /tmp/${MODULE}${bugid}_$$.log -- chmod +x /root/scripts/pum_deploy.sh
lxc-attach -e -n "${MODULE}${bugid}" -o /tmp/${MODULE}${bugid}_$$.log -- /root/scripts/pum_deploy.sh ${NUMBER} ${bugid}

}


/usr/bin/java -jar /root/pumdump/getMOSPatch.jar MOSUser=$uservar MOSPass=$passvar download=all platform=226P patch=$bugid; > /pumdownloads/${bugid}_${process_id}.log
touch /pumdownloads/${MODULE}/${bugid}/ALL_GOOD_FILES.txt
deploy_pum_image



# pum_deploy.sh
==============

[root@localhost scripts]# cat pum_deploy.sh
#pum_deploy.sh <APPLICATION> <PUMIMAGEID>
# 1-FSCM, 2-HCM, 3-CRM, 4-PORTAL, 5-ELM, 6-CampusSolutions

TEMPLATES=/root/scripts/templates
APPLICATION=$1
PUMIMAGE=$2
# /etc/hosts file update
if [ $(/sbin/ifconfig|grep eth1|wc -l) -eq 1 ]
then
        /sbin/ifconfig| grep eth1 -A 1|grep inet|awk -v host=$(hostname) '{ print "127.0.0.1 localhost\n"  $2 " " host }' > /etc/hosts
else
        echo "eth1 Not Found"
fi

if [ $APPLICATION -eq 1 ]
then
        # FSCM execution
        if [ -d /pumdownload/pumdownloads/FSCM/$PUMIMAGE ]; then
                cd /pumdownload/pumdownloads/FSCM/$PUMIMAGE/ && unzip -o *_1of*.zip
                cd /pumdownload/pumdownloads/FSCM/$PUMIMAGE/setup
                sh psft-dpk-setup.sh --silent --response_file=$TEMPLATES/fscm_response.txt --customization_file=$TEMPLATES/fscm_psft_customizations.yaml
        else
                echo "Sorry the PUM Image $PUMIMAGE Not Found for FSCM"
                exit 5
        fi
elif [ $APPLICATION -eq 2 ]; then
        # HCM execution
        if [ -d /pumdownload/pumdownloads/HCM/$PUMIMAGE ]; then
                cd /pumdownload/pumdownloads/HCM/$PUMIMAGE/ && unzip -o *_1of*.zip
                cd /pumdownload/pumdownloads/HCM/$PUMIMAGE/setup
                sh psft-dpk-setup.sh --silent --response_file=$TEMPLATES/hcm_response.txt --customization_file=$TEMPLATES/hcm_psft_customizations.yaml
        else
                echo "Sorry the PUM Image $PUMIMAGE Not Found for HCM"
                exit 5
        fi
elif [ $APPLICATION -eq 3 ]; then
        # CRM execution
        if [ -d /pumdownload/pumdownloads/CRM/$PUMIMAGE ]; then
                cd /pumdownload/pumdownloads/CRM/$PUMIMAGE/ && unzip -o *_1of*.zip
                cd /pumdownload/pumdownloads/CRM/$PUMIMAGE/setup
                sh psft-dpk-setup.sh --silent --response_file=$TEMPLATES/crm_response.txt --customization_file=$TEMPLATES/crm_psft_customizations.yaml
        else
                echo "Sorry the PUM Image $PUMIMAGE Not Found for CRM"
                exit 5
        fi
elif [ $APPLICATION -eq 4 ]; then
        # PORTAL execution
        if [ -d /pumdownload/pumdownloads/PORTAL/$PUMIMAGE ]; then
                cd /pumdownload/pumdownloads/PORTAL/$PUMIMAGE/ && unzip -o *_1of*.zip
                cd /pumdownload/pumdownloads/PORTAL/$PUMIMAGE/setup
                sh psft-dpk-setup.sh --silent --response_file=$TEMPLATES/portal_response.txt --customization_file=$TEMPLATES/portal_psft_customizations.yaml
        else
                echo "Sorry the PUM Image $PUMIMAGE Not Found for PORTAL"
                exit 5
        fi
elif [ $APPLICATION -eq 5 ]; then
        # ELM execution
                if [ -d /pumdownload/pumdownloads/ELM/$PUMIMAGE ]; then
                cd /pumdownload/pumdownloads/ELM/$PUMIMAGE/ && unzip -o *_1of*.zip
                cd /pumdownload/pumdownloads/ELM/$PUMIMAGE/setup
                sh psft-dpk-setup.sh --silent --response_file=$TEMPLATES/elm_response.txt --customization_file=$TEMPLATES/elm_psft_customizations.yaml
        else
                echo "Sorry the PUM Image $PUMIMAGE Not Found for ELM"
                exit 5
        fi
elif [ $APPLICATION -eq 6 ]; then
        # CS execution

        if [ -d /pumdownload/pumdownloads/CS/$PUMIMAGE ]; then
                cd /pumdownload/pumdownloads/CS/$PUMIMAGE/ && unzip -o *_1of*.zip
                cd /pumdownload/pumdownloads/CS/$PUMIMAGE/setup
                sh psft-dpk-setup.sh --silent --response_file=$TEMPLATES/cs_response.txt --customization_file=$TEMPLATES/cs_psft_customizations.yaml
        else
                echo "Sorry the PUM Image $PUMIMAGE Not Found for CS"
                exit 5
        fi
else
                echo "Wrong Option for the PUM Images"
                exit 1;
fi


Wednesday, 21 July 2021

PeopleSoft PUM - Silent Installation using Linux Containers LXC

PeopleSoft FSCM PUM Installation

sh psft-dpk-setup.sh --silent --response_file=/tmp/response.txt --customization_file=/tmp/psft_customizations.yaml

PeopleSoft PUM Database response file: response.txt

install_type=FRESH [or PUM]
psft_base_dir=/u02/fsc040
user_home_dir=/home/
db_type=DEMO
db_platform=ORACLE
db_name=EP92U040
db_service_name=EP92U040
db_port=1521
connect_id=people
connect_pwd=people
opr_id=VP1
opr_pwd=VP1
admin_pwd=Tiger123
access_id=SYSADM
access_pwd=SYSADM
weblogic_admin_pwd=Tiger123
webprofile_user_id=PTWEBSERVER
webprofile_user_pwd=PTWEBSERVER
gw_user_id=administrator
gw_user_pwd=Tiger123
gw_keystore_pwd=Tiger123


YAML File: psft_customizations.yaml

---
db_name:           EP92U040
db_user:           VP1
db_user_pwd:       VP1
db_connect_id:     people
db_connect_pwd:    people
change_password:    false
access_id:          SYSADM
access_pwd:         SYSADM
db_admin_pwd:          Tiger123
domain_user:           "%{hiera('psft_runtime_user_name')}"
ps_config_home:        "%{hiera('user_home_dir')}/%{hiera('domain_user')}/psft/pt/8.58"
appserver_template:    small
appserver_domain_name: EP92U040
prcs_domain_name:      EP92U040
prcs_domain_id:        "PRCS%{::rand}"
report_node_name:      "%{hiera('prcs_domain_id')}"
pia_domain_name:       peoplesoft
pia_site_name:         ps
pia_http_port:         8022
pia_https_port:        8455
jolt_port:             9055
wsl_port:              8001
db_port:               1521
pia_gateway_user:      administrator
pia_gateway_user_pwd:  Tiger123
pia_gateway_keystore_pwd: Tiger123
domain_conn_pwd:       Tiger123
peoplesoft_base: /u02/fsc040
dpk_location:     "%{hiera('peoplesoft_base')}/dpk"
archive_location: "%{hiera('dpk_location')}/archives"
pt_location:      "%{hiera('peoplesoft_base')}/pt"
db_location:      "%{hiera('peoplesoft_base')}/db"
psft_runtime_group_name:     psft
psft_app_install_group_name: appinst
oracle_install_group_name:   oinstall
oracle_runtime_group_name:   dba

groups:
  psft_runtime_group:
    name:     "%{hiera('psft_runtime_group_name')}"
  app_install_group:
    name:     "%{hiera('psft_app_install_group_name')}"
  oracle_install_group:
    name:     "%{hiera('oracle_install_group_name')}"
    remove:   false
  oracle_runtime_group:
    name:     "%{hiera('oracle_runtime_group_name')}"
    remove:   false

psft_user_pwd:         0radmin
oracle_user_pwd:       oracle
user_home_dir:         /u02
psft_install_user_name:     psadm11
psft_runtime_user_name:     psadm22
psft_app_install_user_name: psadm33
oracle_user_name:           oracle22
psft_es_user_name:          esadm11
psft_es_esadmin_name:       esadmin
psft_es_espeople_name:      people
setup_samba:     false
setup_sysctl:    false
setup_services:  true







Starting the PeopleSoft Environment Setup Process: 

Validating User Arguments:                                           [  OK  ]
Validating PeopleSoft Supported Platform:                            [  OK  ]



Validating Oracle Central Inventory:                                 [  OK  ]
Verifying if PeopleSoft Relocatable Puppet Software is installed:    [  OK  ]
Checking if PeopleSoft DPKs are Present:                             [  OK  ]
Checking if the Base Directory has Enough Free Space:                [  OK  ]

Checking if User Home Directory /home is Writable:                   [  OK  ]



Validating the PeopleSoft DPKs in the Linux Host: 
Validating the PeopleSoft Application DPK:                           [  OK  ]
Validating the PeopleSoft PeopleTools Server DPK:                    [  OK  ]
Validating the Oracle Server Database DPK:                           [  OK  ]
Validating the PeopleSoft PeopleTools Client DPK:                    [  OK  ]

Validating the Manifest Information in PeopleSoft DPKs:              [  OK  ]

Extracting the PeopleSoft DPK Archives in the Linux Host: 
Extracting the Oracle Database Server DPK Archive:                   [  OK  ]
                                                                     [  OK  ]
Extracting the PeopleSoft FSCM Application DPK Archives:             [  OK  ]

Extracting the 8.59 PeopleSoft PeopleTools Client DPK Archive:       [  OK  ]
Extracting the 8.58 PeopleSoft PeopleTools Client DPK Archive:       [  OK  ]
Extracting the 8.57 PeopleSoft PeopleTools Client DPK Archive:       [  OK  ]
Extracting the Oracle Database Client DPK Archive:                   [  OK  ]

Setting up Puppet on the Linux Host: 
Generating eYAML Hiera Backend Encryption Keys:                      [  OK  ]
Updating the Puppet Hiera YAML Files in the Linux Host:              [  OK  ]
Updating the Role in Puppet Site File for the Linux Host:            [  OK  ]

Encrypting the Passwords in the User Data:                           [  OK  ]

Updating the Puppet Hiera YAML Files with User Data:                 [  OK  ]
                                                                     [  OK  ]

Starting the Default Initialization of PeopleSoft Environment: 

Setting up System Settings:                                          [  OK  ]
Deploying Application Components:                                    [  OK  ]
Deploying Oracle Database Server:                                    [  OK  ]
Deploying PeopleTools Components:                                    [  OK  ]
Setting up PeopleSoft OS Users Environment:                          [  OK  ]
Setting up PeopleSoft Database:                                      [  OK  ]
Setting up PeopleSoft Application Server Domain:                     [  OK  ]
Setting up PeopleSoft Process Scheduler Domain:                      [  OK  ]
Setting up PeopleSoft PIA Domain:                                    [  OK  ]
Setting up Samba Shares:                                             [  OK  ]
Changing the Passwords for the Environment:                          [  OK  ]
Updating table for PUM Multi-Language Support:                       [  OK  ]
Setting up automated PUM downloads and updates:                      [  OK  ]
Configuring Pre-Boot PeopleSoft Environment:                         [  OK  ]
Configuring components for PUM downloads and updates:                [  OK  ]
Starting PeopleSoft Domains:                                         [  OK  ]
Configuring Post-Boot PeopleSoft Environment:                        [  OK  ]
Setting up Source Details for PeopleTools Client:                    [  OK  ]

The PeopleSoft Environment Setup Process Ended.