Ngajalankeun SAP GUI tina browser

Kuring mimiti nulis artikel ieu di abdi blog, supados henteu milarian sareng nginget-nginget deui, tapi kumargi teu aya anu maca blog, kuring hoyong bagikeun inpormasi ieu ka sadayana, upami aya anu mendakan mangpaat.

Nalika ngerjakeun ideu jasa reset sandi dina sistem SAP R/3, timbul patarosan - kumaha ngajalankeun SAP GUI kalayan parameter anu diperyogikeun tina browser? Kusabab ide ieu nunjukkeun panggunaan jasa wéb, mimitina ngaréspon kana pamundut SOAP ti SAP GUI sareng ngirim surat kalayan tautan ka halaman wéb anu nganggo skrip pikeun ngareset kecap konci ka anu awal, teras ditingalikeun ka pangguna. pesen ngeunaan reset sandi suksés tur mintonkeun sandi pisan awal ieu, lajeng Abdi hoyong kaca ieu ogé boga tumbu ka peluncuran SAP GUI. Sumawona, tautan ieu kedah muka sistem anu dipikahoyong, sareng, langkung saé, kalayan widang login sareng kecap akses dieusian sakaligus: pangguna ngan ukur kedah ngeusian kecap konci anu produktif dua kali.

Ngaluncurkeun SAP Logon henteu pikaresepeun pikeun tujuan urang, sareng nalika ngajalankeun sapgui.exe mustahil pikeun netepkeun nami klien sareng pangguna, tapi mungkin pikeun ngaluncurkeun sistem anu henteu ditetepkeun dina SAP Logon. Di sisi séjén, launching SAP GUI kalawan parameter server sawenang teu utamana relevan: lamun urang ngarengsekeun masalah ngareset kecap akses pamaké, teras paling dipikaresep anjeunna geus boga garis diperlukeun dina SAP Logon, kalawan setélan nu diperlukeun, sarta aya. teu kudu mess kalawan sorangan. Tapi sarat anu ditetepkeun ku téknologi Shortcut SAP GUI sareng program sapshcut.exe sorangan, anu ngamungkinkeun pikeun ngaluncurkeun GUI SAP nganggo "potong kompas" khusus.

Ngarengsekeun masalah langsung: ngaluncurkeun sapshcut.exe langsung tina browser nganggo obyék ActiveX:

function openSAPGui(sid, client, user, password) {
var shell = new ActiveXObject("WScript.Shell");
shell.run('sapshcut.exe -system="'+sid+'" -client='+client+' -user="'+user+'" -pw="'+password+'" -language=RU');
}

Solusina goréng: kahiji, éta ngan ukur tiasa dianggo dina Internet Explorer, kadua, peryogi setélan kaamanan anu pas dina browser, anu dina organisasi tiasa dilarang dina tingkat domain, sareng upami diidinan, browser nampilkeun jandela anu pikasieuneun. warning ka pamaké:

Ngajalankeun SAP GUI tina browser

Kuring mendakan solusi #2 dina Internét: nyieun protokol wéb anjeun soranganNgamungkinkeun urang pikeun ngajalankeun aplikasi anu urang peryogikeun nganggo tautan anu nangtukeun protokol tempat urang ngadaptarkeun diri urang. Windows Dina registri, dina HKEY_CLASSES_ROOT. Kusabab SAP GUI Shortcut gaduh subkunci sorangan dina bagian ieu, anjeun tiasa nambihan parameter string URL Protocol kalayan nilai kosong:

Ngajalankeun SAP GUI tina browser

Protokol ieu dimimitian sapgui.exe kalawan parameter / KOSOR, anu persis anu urang peryogikeun:

Ngajalankeun SAP GUI tina browser

Nya, atanapi upami urang hoyong ngadamel protokol anu sawenang-wenang (contona, sapshcut), teras anjeun tiasa ngadaptarkeun éta nganggo file reg di handap ieu:

Windows Registry Editor Version 5.00
[HKEY_CLASSES_ROOTsapshcut]
@="sapshcut Handler"
"URL Protocol"=""
[HKEY_CLASSES_ROOTsapshcutDefaultIcon]
@="sapshcut.exe"
[HKEY_CLASSES_ROOTsapshcutshell]
[HKEY_CLASSES_ROOTsapshcutshellopen]
[HKEY_CLASSES_ROOTsapshcutshellopencommand]
@="sapshcut.exe "%1""

Ayeuna, upami urang ngadamel tautan dina halaman wéb anu nunjukkeun protokol Sapgui.Shortcut.File Dina cara anu sami:

<a href='Sapgui.Shortcut.File: -system=SID -client=200'>SID200</a>

Urang kedah ningali jandela sapertos kieu:

Ngajalankeun SAP GUI tina browser

Sareng sadayana sigana saé, tapi nalika anjeun ngaklik tombol "Ngidinan" kami ningali:

Ngajalankeun SAP GUI tina browser

Haduh, browser ngarobah spasi jadi %20. Jeung karakter séjén ogé bakal dikodekeun kana kode numerik sorangan kalawan tanda persén. Jeung bagian anu pangparahna nyaéta teu aya anu bisa dilakukeun dina tingkat browser (sadayana standar di dieu)—browser teu resep kana karakter sapertos kitu, jeung juru paréntah teu resep. Windows teu tiasa dianggo sareng nilai anu dikodekeun sapertos kitu. Sareng kakurangan anu sanésna nyaéta sadaya string disalurkeun salaku parameter, kalebet nami protokol sareng bahkan titik dua (sapgui.shortcut.file:). Sumawona, sanajan sarua sapshcut.exe tiasa miceun sadayana anu sanés parameter pikeun éta (dimimitian ku simbol "-", teras nami, "=" sareng nilai), i.e. garis kawas "sapgui.shortcut.file: -sistem = SID"éta tetep tiasa dianggo, teras tanpa spasi"sapgui.shortcut.file:-system=SID"teu dianggo deui.

Tétéla, prinsipna mah, aya dua pilihan pikeun ngagunakeun protokol URI:

  1. Ngagunakeun tanpa parameter: Urang nyieun sakabeh kebat protokol pikeun sakabéh sistem urang tina tipe SIDMANDT, siga AAA200, BBB200 teras salajengna. Upami anjeun ngan ukur kedah ngamimitian sistem anu dipikahoyong, maka pilihanna lumayan tiasa dianggo, tapi dina kasus kami henteu cocog, sabab sahenteuna anjeun hoyong mindahkeun login pangguna, tapi ieu henteu tiasa dilakukeun ku cara ieu.
  2. Ngagunakeun program wrapper mun nelepon sapshcut.exe atawa sapgui.exeInti tina program ieu saderhana - éta kedah nyandak string anu dikirimkeun ku browser ka dinya ngalangkungan protokol wéb sareng ngarobihna kana representasi anu ditampi. Windows, nyaéta, éta ngarobah sadaya kode karakter deui kana karakter (malah meureun ngaparsing string ku parameter) teras nyauran SAP GUI nganggo paréntah anu dijamin-leres-leres. Ieu henteu cocog pisan pikeun kasus urang (éta sababna kuring henteu repot-repot nyeratna), sabab nambihan protokol ka sadaya PC pangguna henteu cekap (éta masih lumayan dina domain, sanaos langkung saé nyingkahan prakték ieu). Urang ogé kedah masang program dina PC sareng teras-terasan ngawaskeunana pikeun mastikeun éta tetep aya nalika masang deui parangkat lunak dina PC.

Jelema. Urang ogé piceun pilihan ieu salaku teu cocog pikeun urang.

Dina titik ieu kuring parantos mimiti mikir yén kuring kedah pamit pikeun ngaluncurkeun SAP GUI kalayan parameter anu dipikabutuh tina browser, tapi teras aya ideu yén anjeun tiasa ngadamel potong kompas dina SAP Logon sareng salin kana desktop Anjeun. Kuring nganggo metode ieu sakali, tapi sateuacan éta kuring henteu ningali sacara khusus kana file potong kompas. Sareng tétéla yén potong kompas ieu mangrupikeun file téks biasa sareng ekstensi .sapSareng upami anjeun ngajalankeunana Windows — GUI SAP bakal dijalankeun nganggo parameter anu ditangtukeun dina file ieu. "Bingo!"

Format file ieu kira-kira di handap ieu (bisa ogé aya transaksi anu diluncurkeun nalika ngamimitian, tapi kuring ngaleungitkeunana):

[System]
Name=SID
Client=200
[User]
Name=
Language=RU
Password=
[Function]
Title=
[Configuration]
GuiSize=Maximized
[Options]
Reuse=0

Sigana mah sagalana nu diperlukeun: identifier sistem, klien, ngaran pamaké sarta malah sandi a. Sareng parameter tambahan: gelar - judul jandela, GuiSize - ukuran tina jandela ngajalankeun (layar pinuh atanapi henteu) jeung Ngagunakeun deui - naha perlu muka jandela anyar atanapi nganggo anu parantos dibuka sareng sistem anu sami. Tapi nuansa langsung muncul - tétéla yén kecap akses dina SAP Logon teu tiasa diatur, jalurna diblokir. Tétéla yén ieu dilakukeun pikeun alesan kaamanan: nyimpen sadaya potong kompas anu diciptakeun dina SAP Logon dina file sapshortcut.ini (Deukeut saplogon.ini dina profil pangguna Windows) sareng sanaos dienkripsi di dinya, éta henteu dienkripsi teuing beurat sareng tiasa didekripsi upami anjeun leres-leres hoyong. Tapi anjeun ogé tiasa ngabéréskeun ieu ku ngarobih nilai hiji parameter dina pendaptaran (nilai standar nyaéta 0):

Windows Registry Editor Version 5.00
[HKEY_CURRENT_USERSoftwareSAPSAPShortcutSecurity]
"EnablePassword"="1"

Ieu muka konci widang Sandi pikeun éntri dina formulir kreasi potong kompas dina SAP Logon:

Ngajalankeun SAP GUI tina browser

Sareng nalika anjeun ngalebetkeun kecap konci dina widang ieu, éta bakal disimpen dina garis anu saluyu
sapshortcut.ini, tapi mun anjeun nyered potong kompas ka desktop, éta teu némbongan di dinya - tapi anjeun bisa nambahkeun eta sacara manual. Sandi énkripsi, pikeun 111111 bakal kieu: PW_49B02219D1F6, pikeun 222222 - PW_4AB3211AD2F5. Tapi urang leuwih kabetot dina kanyataan yén sandi ieu énkripsi dina hiji cara, bebas tina PC husus, sarta lamun urang ngareset sandi ka awal, urang tiasa nganggo hiji nilai pre-dipikawanoh dina widang ieu. Nya, upami urang hoyong nganggo sandi anu didamel sacara acak, urang kedah ngartos algoritma cipher ieu. Tapi ditilik ku conto anu dipasihkeun, ieu moal sesah dilakukeun. Ku jalan kitu, dina SAP GUI 7.40 widang ieu sagemblengna ngiles tina formulir, tapi neuleu narima file kalawan sandi dieusian.

Nyaéta, tétéla yén dina browser anjeun ngan ukur kedah ngaklik tautan kana file anu nganggo ekstensi .sap sareng format anu dipikahoyong - sareng éta bakal nawiskeun pikeun muka file sapertos SAP GUI Shortcut (alami dina PC. kalawan SAP GUI dipasang) sarta bakal muka jandela SAP GUI kalawan parameter husus (lamun SID jeung klien pasangan dina daptar SAP Logon on PC ieu).

Tapi, écés yén teu aya anu ngan saukur nyiptakeun file sateuacanna sareng nyimpen éta dina situs - aranjeunna kedah didamel dumasar kana parameter anu diperyogikeun. Contona, Anjeun bisa nyieun skrip PHP pikeun ngahasilkeun potong kompas (sapshcut.php):

<?php
$queries = array();
parse_str($_SERVER['QUERY_STRING'], $queries);
$Title = $queries['Title'];
$Size = $queries['Size'];
$SID = $queries['SID'];
$Client = $queries['Client'];
if($Client == '') { $Client=200; };
$Lang = $queries['Language'];
if($Lang=='') { $Lang = 'RU'; };
$User = $queries['Username'];
if($User<>'') { $Password = $queries['Password']; };
$filename = $SID.$Client.'.sap';
header('Content-disposition: attachment; filename='.$filename);
header('Content-type: application/sap');
echo "[System]rn";
echo "Name=".$SID."rn";
echo "Client=".$Client."rn";
echo "[User]rn";
echo "Name=".$Username."rn";
echo "Language=".$Lang."rn";
if($Password<>'') echo "Password=".$Password."rn";
echo "[Function]rn";
if($Title<>'') {echo "Title=".$Title."rn";} else {echo "Title=Вход в системуrn";};
echo "[Configuration]rn";
if($Size=='max') { echo "GuiSize=Maximizedrn"; };
echo "[Options]rn";
echo "Reuse=0rn";
?>

Upami anjeun henteu netepkeun nami pangguna sareng kecap konci, anjeun bakal nampi jandela di handap ieu anu naroskeun login sareng kecap akses:

Ngajalankeun SAP GUI tina browser

Upami anjeun ngan ukur ngalangkungan login, kolom login bakal dieusi sareng kolom sandi bakal kosong. Lamun urang masihan pamaké duanana login sarta sandi a, tapi pamaké on PC nu boga konci EnablePassword dina pendaptaran di [HKEY_CURRENT_USERSoftwareSAPSAPShortcutSecurity] bagian disetel ka 0, lajeng urang meunang hal anu sarua. Sareng upami konci ieu disetel ka 1 sareng urang lulus nami sareng kecap konci awal, sistem bakal langsung ngajurung anjeun ngalebetkeun kecap konci permanén dua kali. Éta naon urang diperlukeun pikeun meunangkeun.

Hasilna, kami ngagaduhan set pilihan anu dianggap salaku ilustrasi sadaya di luhur:

<html>
<head>
<script>
function openSAPGui(sid, client, user, password) {
var shell = new ActiveXObject("WScript.Shell");
shell.run('sapshcut.exe -system="'+sid+'" -client='+client+' -user="'+user+'" -pw="'+password+'" -language=RU');
}
</script>
</head>
<body>
<a href='' onclick="javascript:openSAPGui('SID', '200', 'test', '');"/>Example 1: Execute sapshcut.exe (ActiveX)<br>
<a href='Sapgui.Shortcut.File: -system=SID -client=200'>Example 2: Open sapshcut.exe (URI)</a><br>
<a href='sapshcut.php?SID=SID&Client=200&User=test'>Example 3: Open file .sap (SAP GUI Shortcut)</a><br>
</body>
</html>

Pilihan panungtungan cocog kuring. Tapi tinimbang ngahasilkeun potong kompas SAP, anjeun ogé tiasa nganggo, contona, ngahasilkeun file CMD, anu, nalika dibuka tina browser, ogé bakal muka jandela SAP GUI pikeun anjeun. Di handap ieu conto (sapguicmd.php) langsung ngaluncurkeun SAP GUI kalayan senar sambungan pinuh, tanpa kedah ngonpigurasikeun SAP Logon:

<?php
$queries = array();
parse_str($_SERVER['QUERY_STRING'], $queries);
$Title = $queries['Title'];
$ROUTER = $queries['ROUTER'];
$ROUTERPORT = $queries['ROUTERPORT'];
$HOST = $queries['HOST'];
$PORT = $queries['PORT'];
$MESS = $queries['MESS'];
$LG = $queries['LG'];
$filename = 'SAPGUI_';
if($MESS<>'') $filename = $filename.$MESS;
if($HOST<>'') $filename = $filename.$HOST;
if($PORT<>'') $filename = $filename.'_'.$PORT;
$filename = $filename.'.cmd';
header('Content-disposition: attachment; filename='.$filename);
header('Content-type: application/cmd');
echo "@echo offrn";
echo "chcp 1251rn";
echo "echo Вход в ".$Title."rn";
echo "set SAP_CODEPAGE=1504rn";
echo 'if exist "%ProgramFiles(x86)%SAPFrontEndSapGuisapgui.exe" set gui=%ProgramFiles(x86)%SAPFrontEndSapGuisapgui.exe'."rn";
echo 'if exist "%ProgramFiles%SAPFrontEndSapGuisapgui.exe" set gui=%ProgramFiles%SAPFrontEndSapGuisapgui.exe'."rn";
echo "set logon=";
if($ROUTER<>'') echo "/H/".$ROUTER;
if($ROUTERPORT<>'') echo "/S/".$ROUTERPORT;
if($MESS<>'') echo "/M/".$MESS;
if($HOST<>'') echo "/H/".$HOST;
if($PORT<>'') echo "/S/".$PORT;
if($LG<>'') echo "/G/".$LG;
echo "rn";
echo '"%gui%" %logon%'."rn";
?>

sumber: www.habr.com

Mésér hosting anu dipercaya pikeun situs anu gaduh panyalindungan DDoS, server VPS VDS 🔥 Meser hosting situs wéb anu tiasa dipercaya nganggo panyalindungan DDoS, server VPS VDS | ProHoster