M3 Security Fixes for Pass 41

This commit is contained in:
Mark Gregory
2026-09-17 13:37:19 +01:00
parent a9b63e43b3
commit 15773b0bce
56 changed files with 169 additions and 216 deletions
@@ -134,7 +134,7 @@ class CloseShipment extends Controller
// Check Date & Time Before Updating ICM699M
if ($sHDT != '' && $sHTIME != '' && $sHTYPE != '' && $nODEBUG) {
$iCM699MU = DB::connection(config('m3.connection', 'pgsql'))->table('icm699m')
DB::connection(config('m3.connection', 'pgsql'))->table('icm699m')
->where('SHMACPKR', $mANIFEST)
->where('SHDT', $sHDT)
->where('SHTIME', $sHTIME)
@@ -156,7 +156,7 @@ class CloseShipment extends Controller
->where('SHERROR', 'Z')
->where('SHTYPE', 'M3-QtyChg')
->get();
foreach ($iCM699MQtyChg as $key => $ICM699MQtyChgR) {
foreach ($iCM699MQtyChg as $ICM699MQtyChgR) {
$string = $ICM699MQtyChgR->SHDATA;
$start = 'PickerLine:';
$end = ' -';
@@ -308,7 +308,6 @@ class CloseShipment extends Controller
$a4ONO = trim($ICM695M1JOINR->A4ONO);
$aYMACPKR = trim($ICM695M1JOINR->AYMACPKR);
$aYINTBOX = trim($ICM695M1JOINR->AYINTBOX);
$a4CLOSEM3 = trim($ICM695M1JOINR->A4CLOSEM3);
$tRACKING = trim($ICM695M1JOINR->TRACKING);
$sCAC = trim($ICM695M1JOINR->SCAC);
$cARRIER = '';
@@ -379,7 +378,7 @@ class CloseShipment extends Controller
// Get Commodities
$commoditiesTmp = isset($responseData->commodities) ? $responseData->commodities : '';
if ($commoditiesTmp != '') {
$commodities = $commoditiesTmp; // json_encode($commoditiesTmp);
$commodities = $commoditiesTmp;
} else {
$commodities = '';
$errorMsgs = $errorMsgs . ' Could not find Commodities; ';
@@ -639,7 +638,6 @@ class CloseShipment extends Controller
if ($responseContents != null && $responseStatusCode == '200') {
$responseMsg = $responseContents->result->CloseShipment;
$m3APIRESULT = $responseMsg->PickingListClose->Result;
$m3APIRESULTMsg = isset($responseMsg->PickingListClose->ErrorMessage) ? $responseMsg->PickingListClose->ErrorMessage : '';
// Check M3 Response for Errors
$responseResult = $responseContents->result;
@@ -664,7 +662,6 @@ class CloseShipment extends Controller
} else {
$m3APIRESULT = 'Error';
$responseMsg = self::NULL_M3_RESPONSE;
$m3APIRESULTMsg = self::NULL_M3_RESPONSE;
$responseResult = '';
$m3Errors = $responseStatusCode;
}
@@ -745,7 +742,7 @@ class CloseShipment extends Controller
// Update ICM699M : Look for CommTCP_read and set SHERROR to Z Case # 580
$sHACKNOTE = 'Sentinel automatically closed the error (false positive CommTCP_read)';
$iCM699MUZ = DB::connection(config('m3.connection', 'pgsql'))->table('icm699m')
DB::connection(config('m3.connection', 'pgsql'))->table('icm699m')
->where('SHMACPKR', $aYMACPKR)
->where('SHCO', $cOMPANY)
->where('SHWHS', $wHS)
@@ -757,7 +754,7 @@ class CloseShipment extends Controller
// Update ICM705M1 to say that we have processed this manifest (set APSPARE2='X' )
if ($tRANSTYPE == 'M') {
$iCM705M1U = DB::connection(config('m3.connection', 'pgsql'))->table('icm705m1')
DB::connection(config('m3.connection', 'pgsql'))->table('icm705m1')
->where('APMANIFEST', $mANIFEST)
->where('APCO', $cOMPANY)
->where('APWHS', $wHS)
@@ -794,7 +791,6 @@ class CloseShipment extends Controller
$a4REFORD = trim($ICM695M1JOINR->A4REFORD);
$a4ONO = trim($ICM695M1JOINR->A4ONO);
$aYMACPKR = trim($ICM695M1JOINR->A4MACPKR);
$a4CLOSEM3 = trim($ICM695M1JOINR->A4CLOSEM3);
$aYWHS = trim($ICM695M1JOINR->A4WHS);
$aYCO = trim($ICM695M1JOINR->A4CO);
@@ -843,7 +839,6 @@ class CloseShipment extends Controller
if ($responseContents != null) {
$responseMsg = $responseContents->result->CloseShipment;
$m3APIRESULT = $responseMsg->PickingListClose->Result;
$m3APIRESULTMsg = isset($responseMsg->PickingListClose->ErrorMessage) ? $responseMsg->PickingListClose->ErrorMessage : '';
// Check M3 Response for Errors
$responseResult = $responseContents->result;
@@ -863,7 +858,6 @@ class CloseShipment extends Controller
} else {
$m3APIRESULT = 'Error';
$responseMsg = self::NULL_M3_RESPONSE;
$m3APIRESULTMsg = self::NULL_M3_RESPONSE;
}
// If you get a successful response
@@ -917,7 +911,7 @@ class CloseShipment extends Controller
// Update ICM699M : Look for CommTCP_read and set SHERROR to Z Case # 580
$sHACKNOTE = 'Sentinel automatically closed the error (false positive CommTCP_read)';
$iCM699MUZ = DB::connection(config('m3.connection', 'pgsql'))->table('icm699m')
DB::connection(config('m3.connection', 'pgsql'))->table('icm699m')
->where('SHMACPKR', $aYMACPKR)
->where('SHCO', $cOMPANY)
->where('SHWHS', $wHS)
@@ -141,7 +141,7 @@ class TransferAPI extends Controller
}
// Set SHERROR to Z in ICM699M
$iCM699MU = DB::connection(config('m3.connection', 'pgsql'))->table('icm699m')
DB::connection(config('m3.connection', 'pgsql'))->table('icm699m')
->where('SHMACPKR', $dELIVERYNO)
->where('SHDT', $sHDT)
->where('SHTIME', $sHTIME)
@@ -266,7 +266,7 @@ class TransferAPI extends Controller
$responseStatusCode = $response->getStatusCode();
$m3SessionId = $response->hasHeader('x-transaction-id') ? '-sessionID:' . $response->header('x-transaction-id') : '-sessionID';
$m3ResponseTimeTmp = $response->hasHeader('x-response-time') ? ltrim($response->header('x-response-time'), '-') : '0';
$m3ResponseTimeTmp2 = floatval($m3ResponseTimeTmp) / 1000; // $m3ResponseTimeTmp / 1000;
$m3ResponseTimeTmp2 = floatval($m3ResponseTimeTmp) / 1000;
$dateTime = new DateTime;
$dateTime->setTimestamp($m3ResponseTimeTmp2);
$m3ResponseTime = $m3ResponseTimeTmp != '' ? '-M3ResponseTime:' . $dateTime->format('d/m/Y H:i:s.v') : '-M3ResponseTime';
@@ -301,7 +301,7 @@ class TransferAPI extends Controller
Helper::logToICM699M($data);
// Log to ICM799M
$iCM799MINS = DB::connection(config('m3.connection', 'pgsql'))->table('icm799m')
DB::connection(config('m3.connection', 'pgsql'))->table('icm799m')
->insert(['IMDIV' => $dIVI,
'IMPLANT' => $a5PLANT,
'IMWHS' => $wHS,
@@ -548,7 +548,7 @@ class TransferAPI extends Controller
$responseStatusCode = $response->getStatusCode();
$m3SessionId = $response->hasHeader('x-transaction-id') ? '-sessionID:' . $response->header('x-transaction-id') : '-sessionID';
$m3ResponseTimeTmp = $response->hasHeader('x-response-time') ? ltrim($response->header('x-response-time'), '-') : '0';
$m3ResponseTimeTmp2 = floatval($m3ResponseTimeTmp) / 1000; // $m3ResponseTimeTmp / 1000;
$m3ResponseTimeTmp2 = floatval($m3ResponseTimeTmp) / 1000;
$dateTime = new DateTime;
$dateTime->setTimestamp($m3ResponseTimeTmp2);
$m3ResponseTime = $m3ResponseTimeTmp != '' ? '-M3ResponseTime:' . $dateTime->format('d/m/Y H:i:s.v') : '-M3ResponseTime';
@@ -2,7 +2,7 @@
namespace Modules\M3\Http\Controllers;
class authController extends Controller
class AuthController extends Controller
{
public static function logout()
{
@@ -8,7 +8,7 @@ use Illuminate\Support\Facades\Schema;
use Modules\M3\Helpers\Helper;
use Modules\M3\Models\ICM160M;
class carrierMaintController extends Controller
class CarrierMaintController extends Controller
{
public static function index(Request $request)
{
@@ -2,7 +2,7 @@
namespace Modules\M3\Http\Controllers;
class dashboardController extends Controller
class DashboardController extends Controller
{
public static function index()
{
@@ -7,7 +7,7 @@ use Illuminate\Http\Request;
use Log;
use Str;
class execSummaryController extends Controller
class ExecSummaryController extends Controller
{
private const WAREHOUSE_IN_CLAUSE = "' and a5whs in (";
@@ -7,7 +7,7 @@ use Illuminate\Http\Request;
use Log;
use Str;
class execSummaryLineController extends Controller
class ExecSummaryLineController extends Controller
{
private const WAREHOUSE_IN_CLAUSE = "' and a5whs in (";
@@ -5,7 +5,7 @@ namespace Modules\M3\Http\Controllers;
use Illuminate\Http\Request;
use Modules\M3\Services\BillOfLadingService;
class fillBOL2Controller extends Controller
class FillBOL2Controller extends Controller
{
protected $bolService;
@@ -6,7 +6,7 @@ use Illuminate\Http\Request;
use mikehaertl\pdftk\Pdf;
use Storage;
class fillBOLController extends Controller
class FillBOLController extends Controller
{
public static function index(Request $request)
{
@@ -151,7 +151,7 @@ class M3ErrorsDispController extends Controller
$cLOSESIM = $request->CLOSESIM != null ? trim($request->CLOSESIM) : 'N';
if ($cLOSESIM == 'N') {
$iCM699MU = DB::connection(config('m3.connection', 'pgsql'))->table('icm699m')
DB::connection(config('m3.connection', 'pgsql'))->table('icm699m')
->where('SHMACPKR', $sHMACPKR)
->where('SHDT', $sHDT)
->where('SHTIME', $sHTIME)
@@ -163,7 +163,7 @@ class M3ErrorsDispController extends Controller
->update(['SHERROR' => 'Z', 'SHACKUSER' => $sHUSER, 'SHACKDATE' => date('Y-m-d'), 'SHACKTIME' => date('H:i:s'), 'SHACKNOTE' => $sHACKNOTE]);
} else {
$iCM699MU = DB::connection(config('m3.connection', 'pgsql'))->table('icm699m')
DB::connection(config('m3.connection', 'pgsql'))->table('icm699m')
->where('SHCO', $sHCO)
->where('SHWHS', $sHWHS)
->where('SHSOURCE', $sHSOURCE)
@@ -18,20 +18,15 @@ class OrderLinesOfClosedOrder extends Controller
public static function index(Request $request)
{
$iC670M = $iCM688M2 = [];
$wHDDA = $cOMPANY = $pLANT = $wHS = '';
$rEPORTDATEDisp = today()->format('Ymd');
$allReportsUrls = [];
try {
[$cOMPANY, $pLANT, $wHS] = self::userWarehouseContext('110', '144', '322');
// Warehouse Table
$iC670M = DB::connection(config('m3.connection', 'pgsql'))->table('ic670m')->get();
// Get URL PARAMS
$urlParams = count($request->all()) > 0 ? $request->all() : '';
$rEPORTDATEDisp = isset($urlParams['REPORTDATEDisp']) ? \DateTime::createFromFormat('Y-m-d', trim($urlParams['REPORTDATEDisp']))->format('Ymd') : today()->format('Ymd');
$wHDDA = $cOMPANY . $pLANT . $wHS;
if ($rEPORTDATEDisp != '' && $cOMPANY != '' && $wHS != '' && $pLANT != '') {
// Case 729: Add Currency code A1SHCURR FROM ICM666M
$selectContent = "
@@ -91,8 +86,6 @@ class OrderLinesOfClosedOrder extends Controller
[$cOMPANY, $pLANT, $wHS] = self::userWarehouseContext();
// Warehouse Table
$iC670M = DB::connection(config('m3.connection', 'pgsql'))->table('ic670m')->get();
// Get URL PARAMS
$urlParams = count($request->all()) > 0 ? $request->all() : '';
$reportDate = isset($urlParams['REPORTDATE']) ? \DateTime::createFromFormat('Y-m-d', trim($urlParams['REPORTDATE']))->format('Ymd') : today()->format('Ymd');
@@ -100,8 +93,6 @@ class OrderLinesOfClosedOrder extends Controller
$reportDateWD = isset($urlParams['REPORTDATE']) ? trim($urlParams['REPORTDATE']) : today()->format('Y-m-d');
$toreportDateWD = isset($urlParams['TOREPORTDATE']) ? trim($urlParams['TOREPORTDATE']) : today()->format('Y-m-d');
$wHDDA = $cOMPANY . $pLANT . $wHS;
if ($reportDate != '' && $cOMPANY != '' && $wHS != '' && $pLANT != '') {
// Case 729: Add Currency code A1SHCURR FROM ICM666M
$selectContent = "
@@ -175,16 +166,12 @@ class OrderLinesOfClosedOrder extends Controller
[$cOMPANY, $pLANT, $wHS] = self::userWarehouseContext();
// Warehouse Table
$iC670M = DB::connection(config('m3.connection', 'pgsql'))->table('ic670m')->get();
// Get URL PARAMS
$urlParams = count($request->all()) > 0 ? $request->all() : '';
$reportDate = isset($urlParams['REPORTDATE']) ? \DateTime::createFromFormat('Y-m-d', trim($urlParams['REPORTDATE']))->format('Ymd') : today()->format('Ymd');
$toreportDate = isset($urlParams['TOREPORTDATE']) ? \DateTime::createFromFormat('Y-m-d', trim($urlParams['TOREPORTDATE']))->format('Ymd') : today()->format('Ymd');
$reportDateWD = isset($urlParams['REPORTDATE']) ? trim($urlParams['REPORTDATE']) : today()->format('Y-m-d');
$toreportDateWD = isset($urlParams['TOREPORTDATE']) ? trim($urlParams['TOREPORTDATE']) : today()->format('Y-m-d');
$wHDDA = $cOMPANY . $pLANT . $wHS;
if ($reportDate != '' && $cOMPANY != '' && $wHS != '' && $pLANT != '') {
// Case 729: Add Currency code A1SHCURR FROM ICM666M
$iCM688M2 = DB::connection(config('m3.connection', 'pgsql'))
@@ -8,7 +8,7 @@ use Illuminate\Http\Request;
use Illuminate\Support\Facades\Schema;
use Modules\M3\Models\ICM709M;
class palletQtyController extends Controller
class PalletQtyController extends Controller
{
public static function index(Request $request)
{
@@ -7,7 +7,7 @@ namespace Modules\M3\Http\Controllers;
use DB;
use Symfony\Component\HttpFoundation\Request;
class pendingClosureController extends Controller
class PendingClosureController extends Controller
{
public static function index(Request $request)
{
@@ -5,7 +5,7 @@ namespace Modules\M3\Http\Controllers;
use DB;
use Illuminate\Http\Request;
class sentinelController extends Controller
class SentinelController extends Controller
{
public static function packSyst5Func(Request $request)
{
@@ -9,7 +9,7 @@ use Illuminate\Support\Facades\Schema;
use Modules\M3\Models\ICM428M;
use Modules\M3\Services\PostgresProgramBridge;
class userControlController extends Controller
class UserControlController extends Controller
{
private const AUTH_FAILURE_MESSAGE = 'Could not connect due to wrong user or password.';
@@ -101,7 +101,6 @@ class userControlController extends Controller
// # $result = $conn->PgmCall(Config::get('eproconf.misc.PGM1'), Config::get('eproconf.misc.libname4'), $params, array(), array());
$result = $conn->PgmCall('ICMUSRPRF', 'EWOBJ', $params, [], []);
if (! $result) {
$pGMERRORS = self::PROGRAM_ERROR_PREFIX . $conn->getErrorCode() . self::MESSAGE_SEPARATOR . $conn->getErrorMsg();
return 'error profile2';
} else {
@@ -171,8 +170,6 @@ class userControlController extends Controller
public static function callCL(Request $request)
{
$pGMERRORS = '';
// connect to toolkit using DB2 credentials (can also leave blank for default authority)
try {
$conn = app(PostgresProgramBridge::class);
@@ -186,13 +183,10 @@ class userControlController extends Controller
case 8001:
// "Authorization failure on distributed database connection attempt"
// Usually means a wrong DB2 user or password
$pGMERRORS = self::AUTH_FAILURE_MESSAGE;
break;
case 42705:
$pGMERRORS = self::DATABASE_NOT_FOUND_MESSAGE;
break;
default:
$pGMERRORS = self::CONNECTION_ERROR_PREFIX . $code . ' ' . $msg;
break;
}
}
@@ -210,7 +204,6 @@ class userControlController extends Controller
// AddParameterPackDec($io, $length, $scale, $comment, $varName, $value,$dimension)
// Add Delivery Note Param
// $params[] = $conn->AddParameterPackDec('in', 11, 0, 'ParamIn','','00000087125');
// Start Time Tracking
// $start = microtime(true);
@@ -220,7 +213,6 @@ class userControlController extends Controller
$result = $conn->PgmCall('ICMCHGPRF', 'EWOBJ', $params, [], []);
if (! $result) {
$pGMERRORS = self::PROGRAM_ERROR_PREFIX . $conn->getErrorCode() . self::MESSAGE_SEPARATOR . $conn->getErrorMsg();
echo "<script>alert($pGMERRORS);</script>";
return 'error';
@@ -253,8 +245,6 @@ class userControlController extends Controller
ini_set('max_input_time', Config::get('arrays.PHPTimeOut'));
ini_set('default_socket_timeout', Config::get('arrays.PHPTimeOut'));
$pGMERRORS = '';
// echo "B3<br>";
// connect to toolkit using DB2 credentials (can also leave blank for default authority)
try {
@@ -267,24 +257,17 @@ class userControlController extends Controller
case 8001:
// "Authorization failure on distributed database connection attempt"
// Usually means a wrong DB2 user or password
$pGMERRORS = self::AUTH_FAILURE_MESSAGE;
break;
case 42705:
$pGMERRORS = self::DATABASE_NOT_FOUND_MESSAGE;
break;
default:
$pGMERRORS = self::CONNECTION_ERROR_PREFIX . $code . ' ' . $msg;
break;
}
}
// $params[] = $conn->AddParameterChar('in', 9, 'sts','STATUS','*ENABLED');
// $params[] = $conn->AddParameterChar('in', 4, 'pwdexp','PWDEXP','*NO');
$result = $conn->CLCommand('QSYS/CHGUSRPRF USRPRF(' . $request->R428US_PWD . ') PASSWORD(' . $request->NEW_PASSWORD . ') STATUS(*ENABLED) PWDEXP(*NO)');
if (! $result) {
$pGMERRORS = self::PROGRAM_ERROR_PREFIX . $conn->getErrorCode() . self::MESSAGE_SEPARATOR . $conn->getErrorMsg();
dump($pGMERRORS);
echo "<script>alert($pGMERRORS);</script>";
@@ -7,7 +7,7 @@ use DB;
use Illuminate\Support\Facades\Schema;
use Symfony\Component\HttpFoundation\Request;
class userPickingStats4 extends Controller
class UserPickingStats4 extends Controller
{
public static function index(Request $request)
{
@@ -244,9 +244,6 @@ class userPickingStats4 extends Controller
}
// print_r($request);
// print_r($perf_array); print_r($monitor_array);
// return encoded json if input field named format is json
if ($request->format == 'json') {
@@ -285,12 +282,12 @@ class userPickingStats4 extends Controller
// display webpage of statistic version 4
$request->ports = Config::get('arrays.env_ports');
$no_data = 'N';
if (empty($statistic4) && $_SERVER['REQUEST_URI'] != '/userPickingStats4') {
if (empty($statistic4) && $_SERVER['REQUEST_URI'] != '/UserPickingStats4') {
$no_data = 'Y';
}
return view(
'm3::liberty-theme.pages.userPickingStats4',
'm3::liberty-theme.pages.UserPickingStats4',
compact('statistic4', 'starting', 'user', 'user_array', 'monitor_array', 'totals_array', 'perf_array', 'request', 'no_data'),
);
@@ -9,7 +9,7 @@ use Illuminate\Support\Facades\Log;
use Illuminate\Support\Facades\Schema;
use Symfony\Component\HttpFoundation\Request;
class userPickingStats5 extends Controller
class UserPickingStats5 extends Controller
{
public static function index(Request $request)
{
@@ -31,7 +31,7 @@ class userPickingStats5 extends Controller
$totals_array = $totals;
$user_array = $userArray;
return view('m3::liberty-theme.pages.userPickingStats5', compact(
return view('m3::liberty-theme.pages.UserPickingStats5', compact(
'statistic5',
'totals_array',
'user_array',
@@ -103,7 +103,7 @@ class userPickingStats5 extends Controller
{
$statistics = [];
$count = 0;
$url = $request->getSchemeAndHttpHost() . '/userPickingStats4';
$url = $request->getSchemeAndHttpHost() . '/UserPickingStats4';
for ($day = 0; $day <= $days; $day++) {
$date = date('Y-m-d', strtotime($starting . "+$day days"));
@@ -6,7 +6,7 @@ use DB;
use Illuminate\Http\Request;
use Modules\M3\Models\ICM428M;
class userProfileController extends Controller
class UserProfileController extends Controller
{
public static function index(Request $request)
{
@@ -13,17 +13,15 @@ use Log;
use Modules\M3\Services\PostgresProgramBridge;
use PDF;
use Picqer\Barcode\BarcodeGeneratorPNG;
use Smalot\PdfParser\Parser;
use Zebra\Zpl\Image;
class utilitiesContoller extends Controller
class UtilitiesController extends Controller
{
public static function index(Request $request)
{
dd('SentM3Test');
// Get The Next ID by Calling POM002C
$pGMERRORS = '';
// connect to toolkit using DB2 credentials (can also leave blank for default authority)
try {
@@ -38,13 +36,10 @@ class utilitiesContoller extends Controller
case 8001:
// "Authorization failure on distributed database connection attempt"
// Usually means a wrong DB2 user or password
$pGMERRORS = 'Could not connect due to wrong user or password.';
break;
case 42705:
$pGMERRORS = 'Database not found. Try WRKRDBDIRE to check.';
break;
default:
$pGMERRORS = 'Could not connect. Error: ' . $code . ' ' . $msg;
break;
}
}
@@ -74,7 +69,6 @@ class utilitiesContoller extends Controller
$result = $conn->PgmCall('ICM700CSBM', 'EWOBJTST', $params, [], []);
if (! $result) {
$pGMERRORS = 'Error calling program. Code: ' . $conn->getErrorCode() . ' Msg: ' . $conn->getErrorMsg();
}
// Successful Call
else {
@@ -96,8 +90,6 @@ class utilitiesContoller extends Controller
$pdfFileName = 'E1232824-10826596';
// Parse PDF file and build necessary objects.
$parser = new Parser;
$pdfFile = File::get('/www/sentm3test/htdocs/labels/' . $pdfFileName . '.pdf');
// Transform content to base64
@@ -155,7 +147,7 @@ class utilitiesContoller extends Controller
->orderBy('A5PICKSTRD', 'ASC')
->get();
foreach ($iCM688M2SLTMP as $key => $ICM688M2SL) {
foreach ($iCM688M2SLTMP as $ICM688M2SL) {
$a5MACPKR = isset($ICM688M2SL->A5MACPKR) ? $ICM688M2SL->A5MACPKR : '';
$a5SENTPKR = isset($ICM688M2SL->A5SENTPKR) ? $ICM688M2SL->A5SENTPKR : '';
@@ -8,7 +8,7 @@ use Illuminate\Http\Request;
use PhpOffice\PhpSpreadsheet\IOFactory;
use PhpOffice\PhpSpreadsheet\Writer\Xlsx;
class whsePerfController extends Controller
class WhsePerfController extends Controller
{
public static function index(Request $request)
{
@@ -5,7 +5,7 @@ namespace Modules\M3\Http\Controllers;
use DB;
use Illuminate\Http\Request;
class whsePerfDetailsController extends Controller
class WhsePerfDetailsController extends Controller
{
public static function index(Request $request)
{