Браузерден SAP GUI ишке киргизилүүдө

Бул макаланы биринчи жолу мен жазган блог, издебей, кийин кайра эстеп калбаш үчүн, бирок блогду эч ким окубагандыктан, кимдир бирөө пайдалуу болсо, бул маалыматты баары менен бөлүшкүм келди.

SAP R/3 системаларында сырсөздү баштапкы абалга келтирүү кызматы идеясынын үстүндө иштеп жатып, суроо пайда болду - SAP GUIди браузерден керектүү параметрлер менен кантип ишке киргизүү керек? Бул идея веб-кызматты колдонууну билдиргендиктен, адегенде SAP GUIден SOAP суроо-талабына жооп берүү жана паролду баштапкы абалга келтирүү скрипти бар веб-баракчага шилтеме менен кат жөнөтүү, андан кийин колдонуучуга көрсөтүү. ийгиликтүү сырсөздү баштапкы абалга келтирүү жана ушул баштапкы сырсөздү көрсөтүү жөнүндө билдирүү , анда мен бул баракта SAP GUIди ишке киргизүү үчүн шилтеме болушун каалайм. Мындан тышкары, бул шилтеме каалаган системаны ачышы керек жана логин жана парол талаалары дароо толтурулат: колдонуучу эки жолу гана жемиштүү сырсөздү толтурушу керек.

SAP Logon'ду ишке киргизүү биздин максат үчүн кызыктуу болгон жок, ал эми sapgui.exe иштеп жатканда кардарды жана колдонуучунун атын көрсөтүү мүмкүн эмес болчу, бирок SAP Logon'до аныкталбаган системаны ишке киргизүүгө болот. Башка жагынан алганда, SAP GUIди сервердин ыктыярдуу параметрлери менен ишке киргизүү өзгөчө актуалдуу болгон жок: эгерде биз колдонуучунун сырсөзүн кайра орнотуу маселесин чечип жаткан болсок, анда ал SAP Logon программасында керектүү сапка ээ болушу мүмкүн, ага керектүү орнотуулар жана ал жерде өзү менен аралашуунун кереги жок. Бирок көрсөтүлгөн талаптарга SAP GUI Shortcut технологиясы жана sapshcut.exe программасынын өзү жооп берген, бул SAP GUIди белгилүү бир "жарлык" аркылуу ишке киргизүүгө мүмкүндүк берген.

Көйгөйдү бетме-бет чечүү: ActiveX объектинин жардамы менен түздөн-түз браузерден sapshcut.exe ишке киргизүү:

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');
}

Чечим начар: биринчиден, ал Internet Explorerде гана иштейт, экинчиден, ал браузерде тиешелүү коопсуздук жөндөөлөрүн талап кылат, ал уюмда домен деңгээлинде тыюу салынышы мүмкүн, ал тургай уруксат берилгенде браузер коркунучтуу терезени көрсөтөт. колдонуучуга эскертүү:

Браузерден SAP GUI ишке киргизилүүдө

Мен Интернетте №2 чечим таптым: өз веб-протоколуңузду түзүү. Бизге HKEY_CLASSES_ROOT бөлүмүндөгү реестрде Windowsта өзүбүз каттаган протоколду көрсөткөн шилтеме аркылуу керектүү тиркемени ишке киргизүүгө мүмкүндүк берет. SAP GUI Shortcut бул бөлүмдө өзүнүн бөлүмчөсүнө ээ болгондуктан, сиз URL Protocol сап параметрин бош маани менен кошо аласыз:

Браузерден SAP GUI ишке киргизилүүдө

Бул протокол башталат sapgui.exe параметр менен /SHORTCUT, бул бизге так керек:

Браузерден SAP GUI ишке киргизилүүдө

Ооба, же биз толугу менен ыктыярдуу протокол түзүүнү кааласак (мисалы, sapshcut), анда сиз аны төмөнкү reg файлын колдонуп каттай аласыз:

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""

Эми биз протоколду көрсөткөн веб-баракчага шилтеме жасасак Sapgui.Shortcut.File Ушундай эле жол менен:

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

Биз мындай терезени көрүшүбүз керек:

Браузерден SAP GUI ишке киргизилүүдө

Жана баары сонун көрүнөт, бирок сиз "Уруксат берүү" баскычын басканда, биз көрөбүз:

Браузерден SAP GUI ишке киргизилүүдө

Ой, браузер боштук тилкесин %20га айлантты. Ооба, башка белгилер да пайыз белгиси менен өздөрүнүн сандык кодуна коддолот. Эң жагымсыз нерсе, бул жерде браузердин деңгээлинде эч нерсе кылуу мүмкүн эмес (бул жерде бардыгы стандартка ылайык жасалат) - браузер мындай символдорду жактырбайт жана Windows командалык котормочу мындай коддолгон маанилер менен иштебейт. Жана дагы бир минус - бүт сап протоколдун аталышын жана ал тургай кош чекитти кошо алганда, параметр катары өткөрүлөт (sapgui.shortcut.file:). Анын үстүнө, ошол эле болсо да sapshcut.exe ал үчүн параметр болбогон нерселердин баарын жокко чыгара алат ("-" белгиси менен башталат, андан кийин аты, "=" жана маани), б.а. сыяктуу сап "sapgui.shortcut.file: -system=SID"ал дагы эле иштейт, анда бош орун жок"sapgui.shortcut.file:-system=SID"мындан ары иштебейт.

Көрсө, URI протоколун колдонуунун эки варианты бар:

  1. Параметрлери жок колдонуу: Биз типтеги бардык системаларыбыз үчүн бир топ протоколдорду түзөбүз СИДМАНДТ, сыяктуу AAA200, BBB200 жана башка. Эгер сиз жөн гана каалаган системаны башташыңыз керек болсо, анда бул вариант абдан пайдалуу, бирок биздин учурда бул ылайыктуу эмес, анткени сиз жок дегенде колдонуучунун логинине өтүүнү каалайсыз, бирок муну мындай кылуу мүмкүн эмес.
  2. Чалуу үчүн орогуч программасын колдонуу sapshcut.exe же sapgui.exe. Бул программанын маңызы жөнөкөй - ал веб-протокол аркылуу браузер ага өткөргөн сапты алып, аны Windows алган өкүлчүлүккө айландырышы керек, б.а. бардык символдор коддорун кайра символдорго айлантат (мүмкүн, сапты параметрлер боюнча талдайт) жана SAP GUIди кепилденген туура буйрук менен чакырат. Биздин учурда, бул да толугу менен ылайыктуу эмес (ошондуктан мен аны жазган эмесмин), анткени протоколду бардык колдонуучу компьютерлерине кошуу бизге жетишсиз (домендин ичинде бул дагы деле жакшы, бирок андан да жакшыраак. Бул практикадан алыс болуңуз), бирок бул жерде биз программаны компьютерге көбүрөөк жайгаштырышыбыз керек, ошондой эле программалык камсыздоону компьютерге кайра орноткондо анын өчүп калбасын дайыма текшерип турушубуз керек.

Ошол. Биз бул параметрди өзүбүзгө ылайыксыз деп жокко чыгарабыз.

Ушул учурда мен SAP GUIди браузерден керектүү параметрлер менен ишке киргизүү идеясы менен коштошушум керек деп ойлой баштадым, бирок кийин мага SAP Logon менен жарлык жасай аласыз деген ой келди. аны иш тактаңызга көчүрүңүз. Мен бул ыкманы бир жолу колдонгом, бирок ага чейин мен жарлык файлын атайын караган эмесмин. Жана бул жарлык кеңейтүү менен кадимки текст файлы экени белгилүү болду .sap. Эгер сиз аны Windowsта иштетсеңиз, SAP GUI бул файлда көрсөтүлгөн параметрлер менен ишке кирет. "Бинго!"

Бул файлдын форматы болжол менен төмөнкүдөй (башкаруу учурунда транзакция да болушу мүмкүн, бирок мен аны өткөрүп жибердим):

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

Керектүү нерселердин баары: системанын идентификатору, кардар, колдонуучу аты жана ал тургай сырсөз. Ал тургай, кошумча параметрлери: наам - терезенин аталышы, GuiSize — иштеп жаткан терезенин өлчөмү (толук экран же жок) жана Кайра колдонуу — жаңы терезе ачуу керекпи же ошол эле система менен мурунтан эле ачылган терезени колдонуу керекпи. Бирок дароо бир нюанс пайда болду - SAP Logon программасында сырсөз коюуга мүмкүн болбой, линия бөгөттөлгөн. Бул коопсуздук максатында жасалганы белгилүү болду: ал SAP Logon программасында түзүлгөн бардык жарлыктарды файлда сактайт. sapshortcut.ini (жанында saplogon.ini Windows колдонуучу профилинде) жана ошол жерде, алар шифрленген болсо да, алар өтө катуу шифрленген эмес жана кааласа, аларды чечмелесе болот. Бирок сиз муну реестрдеги бир параметрдин маанисин өзгөртүү менен чечсеңиз болот (демейки маани 0):

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

Бул SAP Logon ичиндеги жарлык түзүү формасына кирүү үчүн Сырсөз талаасын ачат:

Браузерден SAP GUI ишке киргизилүүдө

Жана бул тилкеге ​​сырсөздү киргизгенде, ал тиешелүү сапка жайгаштырылат
sapshortcut.ini, бирок сиз жарлыкты иш тактасына сүйрөгөнүңүздө, ал жерде көрүнбөйт - бирок аны кол менен кошо аласыз. Сырсөз шифрленген, 111111 үчүн ал төмөнкүдөй болот: PW_49B02219D1F6, 222222 үчүн - PW_4AB3211AD2F5. Бирок бизди бул сырсөз конкреттүү компьютерден көзкарандысыз бир жол менен шифрленгени көбүрөөк кызыктырат жана эгер биз сырсөздү баштапкыга кайтарсак, анда бул талаада алдын ала белгилүү болгон бир маанини колдоно алабыз. Эгер биз туш келди түзүлгөн сырсөздү колдонгубуз келсе, анда бул шифрдин алгоритмин түшүнүшүбүз керек. Бирок келтирилген мисалдарга караганда, муну жасоо кыйынга турбайт. Айтмакчы, SAP GUI 7.40да бул талаа формадан толугу менен жок болгон, бирок ал толтурулган сырсөз менен файлды туура кабыл алат.

Башкача айтканда, браузерде сиз жөн гана .sap кеңейтүүсү жана каалаган форматтагы файлга шилтемени чыкылдатыңыз - жана аны SAP GUI Shortcut сыяктуу файл катары ачууну сунуштайт (табигый эле компьютерде). SAP GUI орнотулган) жана көрсөтүлгөн параметрлери бар SAP GUI терезесин ачат (эгерде SID жана кардар жуптары бул компьютердеги SAP кирүү тизмесинде болсо).

Бирок, эч ким жөн гана алдын ала файлдарды түзүп, аларды сайтта сактабай турганы түшүнүктүү - алар керектүү параметрлердин негизинде түзүлүшү керек. Мисалы, сиз жарлыктарды түзүү үчүн PHP скриптин түзө аласыз (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";
?>

Эгер сиз колдонуучунун атын жана паролду көрсөтпөсөңүз, логин менен сырсөздү сураган төмөнкү терезени аласыз:

Браузерден SAP GUI ишке киргизилүүдө

Эгер сиз логинди гана тапшырсаңыз, логин талаасы толтурулат жана сырсөз талаасы бош болот. Эгерде биз колдонуучуга логинди да, сырсөздү да берсек, бирок компьютердеги колдонуучу [HKEY_CURRENT_USERSoftwareSAPSAPShortcutSecurity] бөлүмүндөгү реестрде EnablePassword ачкычын 0 кылып койгон болсо, анда биз бир эле нерсени алабыз. Жана эгер бул ачкыч 1ге коюлса жана биз атын да, баштапкы сырсөзүн да өткөрүп берсек, система дароо жаңы туруктуу сырсөздү эки жолу киргизүүнү сунуштайт. Мына ошону алышыбыз керек болчу.

Натыйжада, биз жогоруда айтылгандардын бардыгына мисал катары каралуучу варианттардын төмөнкү топтомун алабыз:

<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>

Акыркы вариант мага туура келди. Бирок SAP жарлыктарын түзүүнүн ордуна, мисалы, CMD файлдарын генерациялоону да колдоно аласыз, алар браузерден ачылганда сиз үчүн SAP GUI терезесин да ачат. Төмөндө бир мисал (sapguicmd.php) SAP Logon конфигурацияланбастан, SAP GUIди толук туташуу саптары менен түздөн-түз ишке киргизиңиз:

<?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";
?>

Source: www.habr.com

Комментарий кошуу