<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en_US" lang="en_US"> <head> <title> GmManualHooksFrameworkRu < Gnumed < Foswiki</title> <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" /> <meta name="robots" content="noindex" /> <link rel="alternate" type="application/rss+xml" title="RSS Feed" href="WebRss.html" /> <link rel="icon" href="../rsrc/System/ProjectLogos/favicon.ico" type="image/x-icon" /> <link rel="shortcut icon" href="../rsrc/System/ProjectLogos/favicon.ico" type="image/x-icon" /> <link rel="alternate" href="http://wiki.gnumed.de/bin/edit/Gnumed/GmManualHooksFrameworkRu?t=1362919416" type="application/x-wiki" title="edit GmManualHooksFrameworkRu" /> <meta name="description" content="GmManualHooksFrameworkRu" /> <!--[if IE]></base><![endif]--> <style type="text/css" media="all"> @import url('../rsrc/System/SkinTemplates/base.css'); </style> <style type="text/css" media="all"> @import url('../rsrc/System/SkinTemplates/default.css'); </style> <!--[if IE]><style type="text/css" media="screen"> pre { overflow-x:auto; padding-bottom:expression(this.scrollWidth > this.offsetWidth ? 16 : 0); } </style> <![endif]--> <meta name="foswiki.PUBURL" content="http://wiki.gnumed.de/pub" /> <!-- PUBURL --> <meta name="foswiki.PUBURLPATH" content="/pub" /> <!-- PUBURLPATH --> <meta name="foswiki.SCRIPTSUFFIX" content="" /> <!-- SCRIPTSUFFIX --> <meta name="foswiki.SCRIPTURL" content="http://wiki.gnumed.de/bin" /> <!-- SCRIPTURL --> <meta name="foswiki.SCRIPTURLPATH" content="/bin" /> <!-- SCRIPTURLPATH --> <meta name="foswiki.SERVERTIME" content="10%20Mar%202013%20-%2013:43" /> <!-- SERVERTIME --> <meta name="foswiki.SKIN" content="twikinet%2c%20pattern" /> <!-- SKIN --> <meta name="foswiki.SYSTEMWEB" content="System" /> <!-- SYSTEMWEB --> <meta name="foswiki.TOPIC" content="GmManualHooksFrameworkRu" /> <!-- TOPIC --> <meta name="foswiki.USERNAME" content="KarstenHilbert" /> <!-- USERNAME --> <meta name="foswiki.USERSWEB" content="Main" /> <!-- USERSWEB --> <meta name="foswiki.WEB" content="Gnumed" /> <!-- WEB --> <meta name="foswiki.WIKINAME" content="KarstenHilbert" /> <!-- WIKINAME --> <meta name="foswiki.WIKIUSERNAME" content="Main.KarstenHilbert" /> <!-- WIKIUSERNAME --> <meta name="foswiki.NAMEFILTER" content="%5b%5cs%5c*%3f~%5e%5c%24%40%25%60%22'%26%3b%7c%3c%3e%5c%5b%5c%5d%23%5cx00-%5cx1f%5d" /> <!-- NAMEFILTER --><!--JQUERYPLUGIN::FOSWIKI::META--> <script type='text/javascript' src='../rsrc/System/JQueryPlugin/jquery-1.4.3.js'></script><!--JQUERYPLUGIN--> <script type='text/javascript' src='../rsrc/System/JQueryPlugin/plugins/livequery/jquery.livequery.js'></script><!--JQUERYPLUGIN::LIVEQUERY--> <script type='text/javascript' src='../rsrc/System/JQueryPlugin/plugins/foswiki/jquery.foswiki.js'></script><!--JQUERYPLUGIN::FOSWIKI--> <script type='text/javascript' src='../rsrc/System/JSTreeContrib/jquery.jstree.js'></script><!--JQUERYPLUGIN::JSTREE--> </head> <body class=""><div class="foswikiPage"> <a name="PageTop"></a> <p></p> <p></p> <h1><a name="A_44_GNUmed_44"></a> Использование обработчиков, чтобы GNUmed делал то, что нужно </h1> <p></p> В различных точках рабочего процесса (например, сразу после активации пациента) GNUmed может вызывать сценарий, чтобы разрешить вам настройку происходящего. Он и мощен и, возможно, опасен: можно через GNUmed делать почти все, что вы хотите - но злоумышленник также может найти дыру в эксплуатации, которая послужит для злодеяний. Однако, GNUmed принял некоторые меры предосторожности, чтобы вообще предотвратить <a href="http://www.catb.org/jargon/html/S/script-kiddies.html" target="_top">скриптового малыша</a> или <a href="http://www.catb.org/jargon/html/W/wannabee.html" target="_top">подражателя</a> <a href="http://www.catb.org/jargon/html/E/elite.html" target="_top">E7EET</a> <a href="http://www.catb.org/jargon/html/C/cracker.html" target="_top">hax</a><a href="http://www.catb.org/jargon/html/W/warez-d00dz.html" target="_top">xor</a>. <p></p> Документация, поставляемая с пакетом, содержит <a href="http://gitorious.org/gnumed/gnumed/blobs/master/gnumed/gnumed/client/doc/hook_script_example.py" target="_top">примерный сценарий</a> <code>hook_script_example.py</code>, имеющий ряд примеров для некоторых известных обработчиков. <p></p> Вы всегда можете узнать точно версию ваших обработчиков из поддержки GNUmed через запуск GNUmed с <code>--debug</code> (или отметьте поле <code>отладки [x] включенным</code> в окне системного входа) и затем посмотрите лог-файл. <p></p> <h2><a name="A_"></a> Сценарий обработчика </h2> <p></p> Сценарий <code>~/.gnumed/scripts/hook_script.py</code> вызывается для всех обработчиков, поэтому имеется единый сценарий для действий обработчика каждого пользователя. <p></p> Этот файл сценария должен соответствовать следующим условиям: <p></p> <ul> <li> должен принадлежать пользователю, запустившему GNUmed </li> <li> должен иметь набор малых разрешений 100600 (<code>- rw- --- ---</code>) </li> <li> должен иметь функцию Python на уровне модуля <code>run_script(hook=None)</code> </li></ul> <p></p> GNUmed затем импортирует этот файл и выполнит функцию <code>run_script()</code> в разное время. Единственный аргумент, передаваемый в эту функцию, называется <code>hook</code>. Он удержит фактическое имя обработчика, из которого был вызван сценарий. Таким образом, может приниматься соответствующее действие, зависящее от того, из какого обработчика вызывается сценарий. Он может сделать затем довольно много из того, что Python может сделать в рамках GNUmed - включая выяснение, какие пользователи запущены, как и какое рабочее место он вызвал. <p></p> Учтите, что некоторые обработчики могут быть вызваны до или после того, как доступен графический интерфейс wxPython. <p></p> <h2><a name="A_AN1"></a> Известные обработчики </h2> <p></p> <ul> <li> в последнем исходном коде см. <a href="http://gitorious.org/gnumed/gnumed/blobs/master/gnumed/gnumed/client/pycommon/gmHooks.py" target="_top">список обработчиков</a> </li></ul> <p></p> Учтите, что некоторые обработчики могут быть еще недоступны в текущей изданной версии. <p></p> <a name="TopicEnd"></a> <p></p> <p></p> <p></p> <p></p> </div> </body></html>