home *** CD-ROM | disk | FTP | other *** search
/ Chip 2000 May / Chip_2000-05_cd1.bin / zkuste / Perl / ActivePerl-5.6.0.613.msi / 䆊䌷䈹䈙䏵-䞅䞆䞀㡆䞃䄦䠥 / _e47756fc3f15bbd407886fadebd32e8d < prev    next >
Text File  |  2000-03-23  |  7KB  |  149 lines

  1.  
  2. <HTML>
  3. <HEAD>
  4. <TITLE>send - Execute a command in a different application</TITLE>
  5. <LINK REL="stylesheet" HREF="../../../Active.css" TYPE="text/css">
  6. <LINK REV="made" HREF="mailto:">
  7. </HEAD>
  8.  
  9. <BODY>
  10. <TABLE BORDER=0 CELLPADDING=0 CELLSPACING=0 WIDTH=100%>
  11. <TR><TD CLASS=block VALIGN=MIDDLE WIDTH=100% BGCOLOR="#cccccc">
  12. <STRONG><P CLASS=block> send - Execute a command in a different application</P></STRONG>
  13. </TD></TR>
  14. </TABLE>
  15.  
  16. <A NAME="__index__"></A>
  17. <!-- INDEX BEGIN -->
  18.  
  19. <UL>
  20.  
  21.     <LI><A HREF="#name">NAME</A></LI><LI><A HREF="#supportedplatforms">SUPPORTED PLATFORMS</A></LI>
  22.  
  23.     <LI><A HREF="#synopsis">SYNOPSIS</A></LI>
  24.     <LI><A HREF="#description">DESCRIPTION</A></LI>
  25.     <LI><A HREF="#application names">APPLICATION NAMES</A></LI>
  26.     <LI><A HREF="#what is a send">WHAT IS A SEND</A></LI>
  27.     <LI><A HREF="#security">SECURITY</A></LI>
  28.     <LI><A HREF="#see also">SEE ALSO</A></LI>
  29.     <LI><A HREF="#keywords">KEYWORDS</A></LI>
  30. </UL>
  31. <!-- INDEX END -->
  32.  
  33. <HR>
  34. <P>
  35. <H1><A NAME="name">NAME</A></H1>
  36. <P>send - Execute a command in a different application</P>
  37. <P>
  38. <HR>
  39. <H1><A NAME="supportedplatforms">SUPPORTED PLATFORMS</A></H1>
  40. <UL>
  41. <LI>Linux</LI>
  42. <LI>Solaris</LI>
  43. <LI>Windows</LI>
  44. </UL>
  45. <HR>
  46. <H1><A NAME="synopsis">SYNOPSIS</A></H1>
  47. <P>    <EM>$result</EM> = <EM>$widget</EM>-><STRONG>send</STRONG>(?<EM>options</EM>,?<EM>app</EM>=><EM>cmd</EM>?<EM>arg arg ...</EM>?)</P>
  48. <P>
  49. <HR>
  50. <H1><A NAME="description">DESCRIPTION</A></H1>
  51. <P>This method arranges for <EM>cmd</EM> (and <EM>arg</EM>s) to be 'sent' to the
  52. application named by <EM>app</EM>.  It returns the result or
  53. an error (hence above should probably be 'wrapped' in <STRONG>eval{}</STRONG> and $@ tested).
  54. <EM>App</EM> may be the name of any application whose main window is
  55. on the display containing the sender's main window;  it need not
  56. be within the same process.
  57. If no <EM>arg</EM> arguments are present, then the string to be sent
  58. is contained entirely within the <EM>cmd</EM> argument.  If one or
  59. more <EM>arg</EM>s are present, they are concatenated separated by white space to
  60. form the string to be sent.</P>
  61. <P>If the initial arguments of the call begin with ``-''
  62. they are treated as options.  The following options are
  63. currently defined:</P>
  64. <DL>
  65. <DT><STRONG><A NAME="item_%2Dasync"><STRONG>-async</STRONG></A></STRONG><BR>
  66. <DD>
  67. Requests asynchronous invocation.  In this case the <STRONG>send</STRONG>
  68. command will complete immediately without waiting for <EM>cmd</EM>
  69. to complete in the target application;  no result will be available
  70. and errors in the sent command will be ignored.
  71. If the target application is in the same process as the sending
  72. application then the <STRONG>-async</STRONG> option is ignored.
  73. <P></P>
  74. <DT><STRONG><A NAME="item_%2D%2D"><STRONG>--</STRONG></A></STRONG><BR>
  75. <DD>
  76. Serves no purpose except to terminate the list of options.  This
  77. option is needed only if <EM>app</EM> could contain a leading ``-''
  78. character.
  79. <P></P></DL>
  80. <P>
  81. <HR>
  82. <H1><A NAME="application names">APPLICATION NAMES</A></H1>
  83. <P>The name of an application is set initially from the name of the
  84. program or script that created the application.
  85. You can query and change the name of an application with the
  86. <STRONG>appname</STRONG> method.</P>
  87. <P>
  88. <HR>
  89. <H1><A NAME="what is a send">WHAT IS A SEND</A></H1>
  90. <P>The <STRONG>send</STRONG> mechanism was designed to allow Tcl/Tk applications
  91. to send Tcl Scripts to each other. This does not map very well onto perl/Tk.
  92. Perl/Tk ``sends'' a string to <EM>app</EM>, what happens as a result of this
  93. depends on the receiving application. If the other application is a Tcl/Tk4.*
  94. application it will be treated as a Tcl Script. If the ``other'' application is
  95. perl/Tk application (including sends to self) then the string is
  96. passed as an argument to a method call of the following form:</P>
  97. <P><EM>$mainwindow</EM>-><STRONG>Receive(</STRONG><EM>string</EM>);</P>
  98. <P>There is a default (AutoLoaded) <STRONG>Tk::Receive</STRONG> which returns an error to the
  99. sending application. A particular application may define its own
  100. <STRONG>Receive</STRONG> method in any class in <STRONG>MainWindow</STRONG>'s inheritance tree
  101. to do whatever it sees fit. For example it could <STRONG>eval</STRONG> the string,
  102. possibly in a <STRONG>Safe</STRONG> ``compartment''.</P>
  103. <P>If a Tcl/Tk application ``sends'' anything to a perl/Tk application
  104. then the perl/Tk application would have to attempt to interpret the
  105. incoming string as a Tcl Script. Simple cases are should not be too hard to
  106. emulate (split on white space and treat first element as ``command'' and other
  107. elements as arguments).</P>
  108. <P>
  109. <HR>
  110. <H1><A NAME="security">SECURITY</A></H1>
  111. <P>The <STRONG>send</STRONG> command is potentially a serious security loophole,
  112. since any application that can connect to your X server can send
  113. scripts to your applications. Hence the default behaviour outlined above.
  114. (With the availability of <STRONG>Safe</STRONG> it may make sense to relax default behaviour
  115. a little.)</P>
  116. <P>Unmonitored <STRONG>eval</STRONG>'ing of these incoming ``scripts'' can cause perl to
  117. read and write files and invoke subprocesses under your name.
  118. Host-based access control such as that provided by <STRONG>xhost</STRONG>
  119. is particularly insecure, since it allows anyone with an account
  120. on particular hosts to connect to your server, and if disabled it
  121. allows anyone anywhere to connect to your server.
  122. In order to provide at least a small amount of
  123. security, core Tk checks the access control being used by the server
  124. and rejects incoming sends unless (a) <STRONG>xhost</STRONG>-style access control
  125. is enabled (i.e. only certain hosts can establish connections) and (b) the
  126. list of enabled hosts is empty.
  127. This means that applications cannot connect to your server unless
  128. they use some other form of authorization
  129. such as that provide by <STRONG>xauth</STRONG>.</P>
  130. <P>
  131. <HR>
  132. <H1><A NAME="see also">SEE ALSO</A></H1>
  133. <P>Perl's <STRONG>eval</STRONG>
  134. perl's <STRONG>Safe</STRONG> Module
  135. system's administrator/corporate security guidelines etc.</P>
  136. <P>
  137. <HR>
  138. <H1><A NAME="keywords">KEYWORDS</A></H1>
  139. <P>application, name, remote execution, security, send</P>
  140. <TABLE BORDER=0 CELLPADDING=0 CELLSPACING=0 WIDTH=100%>
  141. <TR><TD CLASS=block VALIGN=MIDDLE WIDTH=100% BGCOLOR="#cccccc">
  142. <STRONG><P CLASS=block> send - Execute a command in a different application</P></STRONG>
  143. </TD></TR>
  144. </TABLE>
  145.  
  146. </BODY>
  147.  
  148. </HTML>
  149.