diff options
Diffstat (limited to 'nxproxy')
-rw-r--r-- | nxproxy/.gitignore | 21 | ||||
-rw-r--r-- | nxproxy/CHANGELOG | 216 | ||||
-rw-r--r-- | nxproxy/COPYING | 339 | ||||
-rw-r--r-- | nxproxy/LICENSE | 36 | ||||
-rw-r--r-- | nxproxy/Makefile.am | 17 | ||||
-rw-r--r-- | nxproxy/Makefile.in | 101 | ||||
-rw-r--r-- | nxproxy/README | 14 | ||||
-rw-r--r-- | nxproxy/README-IPAQ | 27 | ||||
-rw-r--r-- | nxproxy/README-VALGRIND | 39 | ||||
l---------[-rw-r--r--] | nxproxy/VERSION | 2 | ||||
-rw-r--r-- | nxproxy/configure.ac | 49 | ||||
-rw-r--r-- | nxproxy/configure.in | 185 | ||||
-rwxr-xr-x | nxproxy/install-sh | 238 | ||||
l--------- | nxproxy/m4/ax_cxx_compile_stdcxx.m4 | 1 | ||||
l--------- | nxproxy/m4/ax_cxx_compile_stdcxx_11.m4 | 1 | ||||
l--------- | nxproxy/m4/ax_pthread.m4 | 1 | ||||
l--------- | nxproxy/m4/nx-macros.m4 | 1 | ||||
-rw-r--r-- | nxproxy/man/Makefile.am | 5 | ||||
-rw-r--r-- | nxproxy/man/nxproxy.1 | 422 | ||||
-rwxr-xr-x | nxproxy/mkinstalldirs | 34 | ||||
-rw-r--r-- | nxproxy/src/Main.c (renamed from nxproxy/Main.c) | 78 | ||||
-rw-r--r-- | nxproxy/src/Makefile.am | 27 |
22 files changed, 611 insertions, 1243 deletions
diff --git a/nxproxy/.gitignore b/nxproxy/.gitignore new file mode 100644 index 000000000..35c4c4dfd --- /dev/null +++ b/nxproxy/.gitignore @@ -0,0 +1,21 @@ +Makefile +Makefile.in +aclocal.m4 +compile +config.guess +config.sub +depcomp +install-sh +ltmain.sh +missing +config.h +config.h.in +libtool +m4/libtool.m4 +m4/ltoptions.m4 +m4/ltsugar.m4 +m4/ltversion.m4 +m4/lt~obsolete.m4 +src/Makefile +src/Makefile.in +src/nxproxy diff --git a/nxproxy/CHANGELOG b/nxproxy/CHANGELOG deleted file mode 100644 index e5dff2e4f..000000000 --- a/nxproxy/CHANGELOG +++ /dev/null @@ -1,216 +0,0 @@ -ChangeLog: - -nxproxy-3.5.0-1 - -- Opened the 3.5.0 branch based on nxproxy-3.4.0-2. - -- Updated copyright to year 2011. - -nxproxy-3.4.0-2 - -- Updated copyright to year 2009. - -nxproxy-3.4.0-1 - -- Opened the 3.4.0 branch based on nxproxy-3.3.0-2. - -- Changed version number. - -nxproxy-3.3.0-2 - -- Updated VERSION. - -nxproxy-3.3.0-1 - -- Opened the 3.3.0 branch based on nxproxy-3.2.0-1. - -nxproxy-3.2.0-1 - -- Opened the 3.2.0 branch based on nxproxy-3.1.0-2. - -nxproxy-3.1.0-2 - -- Updated version number. - -nxproxy-3.1.0-1 - -- Opened the 3.1.0 branch based on nxproxy-3.0.0-4. - -nxproxy-3.0.0-4 - -- Added file COPYING. - -- Changed the LICENSE file to state that the software is only made - available under the version 2 of the GPL. - -nxproxy-3.0.0-3 - -- Updated the copyright notices to year 2007. - -nxproxy-3.0.0-2 - -- Updated the file VERSION. - -nxproxy-3.0.0-1 - -- Opened the 3.0.0 branch based on nxproxy-2.0.0-2. - -nxproxy-2.0.0-2 - -- Updated copyright to year 2006. - -nxproxy-2.0.0-1 - -- Opened the 2.0.0 branch based on nxproxy-1.5.0-10. - -nxproxy-1.5.0-10 - -- Added the JPEG, PNG and Z libraries to the linker when compiling - on Cygwin. GCC 3.3.x requires that these libraries are explicitly - given while this is not required since GCC 3.4.x. - -- Created a new configure using autoconf 2.59. - -nxproxy-1.5.0-9 - -- Removed provision for dynamically loading a different version of - the nxcomp library. - -nxproxy-1.5.0-8 - -- Updated to reflect the new naming of the NX transport interfaces. - -nxproxy-1.5.0-7 - -- Modified the Makefile.in to remove the *.out.* files generated by - Valgrind when running a 'make clean'. - -- Modified the README files and removed files that were outdated. - -nxproxy-1.5.0-6 - -- Removed the NX_FORCE_IDLE_PROXY stubs. - -nxproxy-1.5.0-5 - -- This version has NX_FORCE_IDLE_PROXY undefined, so it should work - in a way that is compatible with the old nxproxy. - -nxproxy-1.5.0-4 - -- This software is crafted by default to test the new integration - between nxcomp and nxssh. The process will stay idle and will - let nxssh create the proxy. Note that the session log will go to - 'sshlog', not to 'session'. This will have to be fixed in nxcomp - in future versions. - -- Removed the references to the "bind" functionality that is not - used in the current software. - -nxproxy-1.5.0-3 - -- Added a NX_FORCE_IDLE_PROXY. If set, nxproxy will stay idle and - will not try to create a nxcomp proxy. This is used for testing - the new in-process nxcomp functionalities with the development - versions of nxclient and nxssh software. - -nxproxy-1.5.0-2 - -- Small changes to this file. - -nxproxy-1.5.0-1 - -- Opened the 1.5.0 branch. - -nxproxy-1.4.1-1 - -- Opened the 1.4.1 branch. - -nxproxy-1.4.0-3 - -- We were lucky. We found a machine where nxproxy failed exactly - in the same way described by multiple users in their reports. - The error was the same ('dlopen: win32 line 126') and neither - rebasing the Cygwin DLLs or removing all the other Cygwin li- - braries worked. So the problem had necessarily to be in a bug- - gy Cygwin dlopen() implementation. To solve this I had to make - changes to the nxproxy code on Windows, so it links to nxcomp - at compile time in the way specified below. As far as I can - tell, any other way fails. This seems to be another Cygwin bug: - the linker says that everything is OK but then the executable - can't be run. Both the Cygwin's bash and the command.com say - 'Permission denied'. - - LIBS = -L../nxcomp -lstdc++ -Wl,-e,_mainCRTStartup -lXcomp \ - -lcygipc -static -lpng -static -ljpeg -lz - -nxproxy-1.4.0-2 - -- Added a Binder class invoked when calling proxy with -B option. - It would serve as a replacement of the modifications I'm doing - in nxssh. The class is just a framework and the implementation - is unfinished. - -- Solved a potential problem in Main.c with NXExit() being called - after the dlclose(). This was unlikely to happen as proxy never - returns. - -nxproxy-1.4.0-1 - -- Opened the 1.4.0 branch. - -nxproxy-1.3.2-1 - -- Opened the 1.3.2 branch. - -nxproxy-1.3.1-2 - -- Removed the underline characters and added a colon in the - title of this ChangeLog to fully comply with format used in - the release notices. - -nxproxy-1.3.1-1 - -- Opened the 1.3.1 branch. - -nxproxy-1.3.0-7 - -- Added a check on the OS version when running on MacOS/X. - Versions 10.2 and 10.3 differ in the way names are mangled. - -- Fixed error detection on dlsym(). The previous code was not - able to correctly identify missing symbols. - -nxproxy-1.3.0-6 - -- Modified configure.in to compile under FreeBSD. - -nxproxy-1.3.0-5 - -- Fixed a (further) compilation problem under Cygwin. - -nxproxy-1.3.0-4 - -- New nxproxy is able to load libXcomp by dlopen() under - Cygwin. This simplifies both code in Main.c and the - configure.in script. - -- Changed configure.in to not link with -mwindows under - Cygwin. Linking with -mwindows prevented stderr to be - correctly output when running nxproxy on a console. - -nxproxy-1.3.0-3 - -- Changed configure.in to first check for nx-X11 includes - and libraries. Added "/usr/openwin/bin/makedepend" to - path searched for the executable. - -nxproxy-1.3.0-2 - -- Small cleanup in configure.in. A new configure script has - been generated using autoconf-2.57-3. - -nxproxy-1.3.0-1 - -- Updated internal version, so this release tries to load - libXcomp version 1.3.0. diff --git a/nxproxy/COPYING b/nxproxy/COPYING deleted file mode 100644 index d511905c1..000000000 --- a/nxproxy/COPYING +++ /dev/null @@ -1,339 +0,0 @@ - GNU GENERAL PUBLIC LICENSE - Version 2, June 1991 - - Copyright (C) 1989, 1991 Free Software Foundation, Inc., - 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - Everyone is permitted to copy and distribute verbatim copies - of this license document, but changing it is not allowed. - - Preamble - - The licenses for most software are designed to take away your -freedom to share and change it. By contrast, the GNU General Public -License is intended to guarantee your freedom to share and change free -software--to make sure the software is free for all its users. This -General Public License applies to most of the Free Software -Foundation's software and to any other program whose authors commit to -using it. (Some other Free Software Foundation software is covered by -the GNU Lesser General Public License instead.) You can apply it to -your programs, too. - - When we speak of free software, we are referring to freedom, not -price. Our General Public Licenses are designed to make sure that you -have the freedom to distribute copies of free software (and charge for -this service if you wish), that you receive source code or can get it -if you want it, that you can change the software or use pieces of it -in new free programs; and that you know you can do these things. - - To protect your rights, we need to make restrictions that forbid -anyone to deny you these rights or to ask you to surrender the rights. -These restrictions translate to certain responsibilities for you if you -distribute copies of the software, or if you modify it. - - For example, if you distribute copies of such a program, whether -gratis or for a fee, you must give the recipients all the rights that -you have. You must make sure that they, too, receive or can get the -source code. And you must show them these terms so they know their -rights. - - We protect your rights with two steps: (1) copyright the software, and -(2) offer you this license which gives you legal permission to copy, -distribute and/or modify the software. - - Also, for each author's protection and ours, we want to make certain -that everyone understands that there is no warranty for this free -software. If the software is modified by someone else and passed on, we -want its recipients to know that what they have is not the original, so -that any problems introduced by others will not reflect on the original -authors' reputations. - - Finally, any free program is threatened constantly by software -patents. We wish to avoid the danger that redistributors of a free -program will individually obtain patent licenses, in effect making the -program proprietary. To prevent this, we have made it clear that any -patent must be licensed for everyone's free use or not licensed at all. - - The precise terms and conditions for copying, distribution and -modification follow. - - GNU GENERAL PUBLIC LICENSE - TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION - - 0. This License applies to any program or other work which contains -a notice placed by the copyright holder saying it may be distributed -under the terms of this General Public License. The "Program", below, -refers to any such program or work, and a "work based on the Program" -means either the Program or any derivative work under copyright law: -that is to say, a work containing the Program or a portion of it, -either verbatim or with modifications and/or translated into another -language. (Hereinafter, translation is included without limitation in -the term "modification".) Each licensee is addressed as "you". - -Activities other than copying, distribution and modification are not -covered by this License; they are outside its scope. The act of -running the Program is not restricted, and the output from the Program -is covered only if its contents constitute a work based on the -Program (independent of having been made by running the Program). -Whether that is true depends on what the Program does. - - 1. You may copy and distribute verbatim copies of the Program's -source code as you receive it, in any medium, provided that you -conspicuously and appropriately publish on each copy an appropriate -copyright notice and disclaimer of warranty; keep intact all the -notices that refer to this License and to the absence of any warranty; -and give any other recipients of the Program a copy of this License -along with the Program. - -You may charge a fee for the physical act of transferring a copy, and -you may at your option offer warranty protection in exchange for a fee. - - 2. You may modify your copy or copies of the Program or any portion -of it, thus forming a work based on the Program, and copy and -distribute such modifications or work under the terms of Section 1 -above, provided that you also meet all of these conditions: - - a) You must cause the modified files to carry prominent notices - stating that you changed the files and the date of any change. - - b) You must cause any work that you distribute or publish, that in - whole or in part contains or is derived from the Program or any - part thereof, to be licensed as a whole at no charge to all third - parties under the terms of this License. - - c) If the modified program normally reads commands interactively - when run, you must cause it, when started running for such - interactive use in the most ordinary way, to print or display an - announcement including an appropriate copyright notice and a - notice that there is no warranty (or else, saying that you provide - a warranty) and that users may redistribute the program under - these conditions, and telling the user how to view a copy of this - License. (Exception: if the Program itself is interactive but - does not normally print such an announcement, your work based on - the Program is not required to print an announcement.) - -These requirements apply to the modified work as a whole. If -identifiable sections of that work are not derived from the Program, -and can be reasonably considered independent and separate works in -themselves, then this License, and its terms, do not apply to those -sections when you distribute them as separate works. But when you -distribute the same sections as part of a whole which is a work based -on the Program, the distribution of the whole must be on the terms of -this License, whose permissions for other licensees extend to the -entire whole, and thus to each and every part regardless of who wrote it. - -Thus, it is not the intent of this section to claim rights or contest -your rights to work written entirely by you; rather, the intent is to -exercise the right to control the distribution of derivative or -collective works based on the Program. - -In addition, mere aggregation of another work not based on the Program -with the Program (or with a work based on the Program) on a volume of -a storage or distribution medium does not bring the other work under -the scope of this License. - - 3. You may copy and distribute the Program (or a work based on it, -under Section 2) in object code or executable form under the terms of -Sections 1 and 2 above provided that you also do one of the following: - - a) Accompany it with the complete corresponding machine-readable - source code, which must be distributed under the terms of Sections - 1 and 2 above on a medium customarily used for software interchange; or, - - b) Accompany it with a written offer, valid for at least three - years, to give any third party, for a charge no more than your - cost of physically performing source distribution, a complete - machine-readable copy of the corresponding source code, to be - distributed under the terms of Sections 1 and 2 above on a medium - customarily used for software interchange; or, - - c) Accompany it with the information you received as to the offer - to distribute corresponding source code. (This alternative is - allowed only for noncommercial distribution and only if you - received the program in object code or executable form with such - an offer, in accord with Subsection b above.) - -The source code for a work means the preferred form of the work for -making modifications to it. For an executable work, complete source -code means all the source code for all modules it contains, plus any -associated interface definition files, plus the scripts used to -control compilation and installation of the executable. However, as a -special exception, the source code distributed need not include -anything that is normally distributed (in either source or binary -form) with the major components (compiler, kernel, and so on) of the -operating system on which the executable runs, unless that component -itself accompanies the executable. - -If distribution of executable or object code is made by offering -access to copy from a designated place, then offering equivalent -access to copy the source code from the same place counts as -distribution of the source code, even though third parties are not -compelled to copy the source along with the object code. - - 4. You may not copy, modify, sublicense, or distribute the Program -except as expressly provided under this License. Any attempt -otherwise to copy, modify, sublicense or distribute the Program is -void, and will automatically terminate your rights under this License. -However, parties who have received copies, or rights, from you under -this License will not have their licenses terminated so long as such -parties remain in full compliance. - - 5. You are not required to accept this License, since you have not -signed it. However, nothing else grants you permission to modify or -distribute the Program or its derivative works. These actions are -prohibited by law if you do not accept this License. Therefore, by -modifying or distributing the Program (or any work based on the -Program), you indicate your acceptance of this License to do so, and -all its terms and conditions for copying, distributing or modifying -the Program or works based on it. - - 6. Each time you redistribute the Program (or any work based on the -Program), the recipient automatically receives a license from the -original licensor to copy, distribute or modify the Program subject to -these terms and conditions. You may not impose any further -restrictions on the recipients' exercise of the rights granted herein. -You are not responsible for enforcing compliance by third parties to -this License. - - 7. If, as a consequence of a court judgment or allegation of patent -infringement or for any other reason (not limited to patent issues), -conditions are imposed on you (whether by court order, agreement or -otherwise) that contradict the conditions of this License, they do not -excuse you from the conditions of this License. If you cannot -distribute so as to satisfy simultaneously your obligations under this -License and any other pertinent obligations, then as a consequence you -may not distribute the Program at all. For example, if a patent -license would not permit royalty-free redistribution of the Program by -all those who receive copies directly or indirectly through you, then -the only way you could satisfy both it and this License would be to -refrain entirely from distribution of the Program. - -If any portion of this section is held invalid or unenforceable under -any particular circumstance, the balance of the section is intended to -apply and the section as a whole is intended to apply in other -circumstances. - -It is not the purpose of this section to induce you to infringe any -patents or other property right claims or to contest validity of any -such claims; this section has the sole purpose of protecting the -integrity of the free software distribution system, which is -implemented by public license practices. Many people have made -generous contributions to the wide range of software distributed -through that system in reliance on consistent application of that -system; it is up to the author/donor to decide if he or she is willing -to distribute software through any other system and a licensee cannot -impose that choice. - -This section is intended to make thoroughly clear what is believed to -be a consequence of the rest of this License. - - 8. If the distribution and/or use of the Program is restricted in -certain countries either by patents or by copyrighted interfaces, the -original copyright holder who places the Program under this License -may add an explicit geographical distribution limitation excluding -those countries, so that distribution is permitted only in or among -countries not thus excluded. In such case, this License incorporates -the limitation as if written in the body of this License. - - 9. The Free Software Foundation may publish revised and/or new versions -of the General Public License from time to time. Such new versions will -be similar in spirit to the present version, but may differ in detail to -address new problems or concerns. - -Each version is given a distinguishing version number. If the Program -specifies a version number of this License which applies to it and "any -later version", you have the option of following the terms and conditions -either of that version or of any later version published by the Free -Software Foundation. If the Program does not specify a version number of -this License, you may choose any version ever published by the Free Software -Foundation. - - 10. If you wish to incorporate parts of the Program into other free -programs whose distribution conditions are different, write to the author -to ask for permission. For software which is copyrighted by the Free -Software Foundation, write to the Free Software Foundation; we sometimes -make exceptions for this. Our decision will be guided by the two goals -of preserving the free status of all derivatives of our free software and -of promoting the sharing and reuse of software generally. - - NO WARRANTY - - 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY -FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN -OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES -PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED -OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF -MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS -TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE -PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, -REPAIR OR CORRECTION. - - 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING -WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR -REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, -INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING -OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED -TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY -YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER -PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE -POSSIBILITY OF SUCH DAMAGES. - - END OF TERMS AND CONDITIONS - - How to Apply These Terms to Your New Programs - - If you develop a new program, and you want it to be of the greatest -possible use to the public, the best way to achieve this is to make it -free software which everyone can redistribute and change under these terms. - - To do so, attach the following notices to the program. It is safest -to attach them to the start of each source file to most effectively -convey the exclusion of warranty; and each file should have at least -the "copyright" line and a pointer to where the full notice is found. - - <one line to give the program's name and a brief idea of what it does.> - Copyright (C) <year> <name of author> - - This program is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 2 of the License, or - (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License along - with this program; if not, write to the Free Software Foundation, Inc., - 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. - -Also add information on how to contact you by electronic and paper mail. - -If the program is interactive, make it output a short notice like this -when it starts in an interactive mode: - - Gnomovision version 69, Copyright (C) year name of author - Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'. - This is free software, and you are welcome to redistribute it - under certain conditions; type `show c' for details. - -The hypothetical commands `show w' and `show c' should show the appropriate -parts of the General Public License. Of course, the commands you use may -be called something other than `show w' and `show c'; they could even be -mouse-clicks or menu items--whatever suits your program. - -You should also get your employer (if you work as a programmer) or your -school, if any, to sign a "copyright disclaimer" for the program, if -necessary. Here is a sample; alter the names: - - Yoyodyne, Inc., hereby disclaims all copyright interest in the program - `Gnomovision' (which makes passes at compilers) written by James Hacker. - - <signature of Ty Coon>, 1 April 1989 - Ty Coon, President of Vice - -This General Public License does not permit incorporating your program into -proprietary programs. If your program is a subroutine library, you may -consider it more useful to permit linking proprietary applications with the -library. If this is what you want to do, use the GNU Lesser General -Public License instead of this License. diff --git a/nxproxy/LICENSE b/nxproxy/LICENSE deleted file mode 100644 index 64522ca4c..000000000 --- a/nxproxy/LICENSE +++ /dev/null @@ -1,36 +0,0 @@ -Copyright (c) 2001, 2011 NoMachine - http://www.nomachine.com/. - -NXPROXY and NX extensions to this software are copyright of NoMachine. -Redistribution and use of this software is allowed according to the -following terms: - -This program is free software; you can redistribute it and/or modify -it under the terms of the GNU General Public License Version 2, and -not any other version, as published by the Free Software Foundation. - -This program is distributed in the hope that it will be useful, -but WITHOUT ANY WARRANTY; without even the implied warranty of -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -GNU General Public License for more details. - -You should have received a copy of the GNU General Public License -along with this program; if not, write to the Free Software -Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - -Parts of this software are derived from DXPC project. These copyright -notices apply to original DXPC code: - -Redistribution and use in source and binary forms are permitted provided -that the above copyright notice and this paragraph are duplicated in all -such forms. - -THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR IMPLIED -WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF -MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE. - -Copyright (c) 1995,1996 Brian Pane -Copyright (c) 1996,1997 Zachary Vonler and Brian Pane -Copyright (c) 1999 Kevin Vigor and Brian Pane -Copyright (c) 2000,2001 Gian Filippo Pinzari and Brian Pane - -All rights reserved. diff --git a/nxproxy/Makefile.am b/nxproxy/Makefile.am new file mode 100644 index 000000000..87ca0cfad --- /dev/null +++ b/nxproxy/Makefile.am @@ -0,0 +1,17 @@ +SUBDIRS = src man + +MAINTAINERCLEANFILES = \ + $(srcdir)/autom4te.cache/* \ + $(srcdir)/build-aux/* \ + $(srcdir)/Makefile.in \ + $(srcdir)/man/Makefile.in \ + $(srcdir)/src/Makefile.in \ + $(srcdir)/aclocal.m4 \ + $(srcdir)/config.h.in \ + $(srcdir)/config.h.in~ \ + $(srcdir)/config.guess \ + $(srcdir)/config.sub \ + $(srcdir)/configure \ + $(NULL) + +DISTCLEANFILES=$(MAINTAINERCLEANFILES)
\ No newline at end of file diff --git a/nxproxy/Makefile.in b/nxproxy/Makefile.in deleted file mode 100644 index 928e0d34e..000000000 --- a/nxproxy/Makefile.in +++ /dev/null @@ -1,101 +0,0 @@ -# -# Get values from configure script. -# -VERSION=@VERSION@ -LIBVERSION=@LIBVERSION@ - -# -# Enable really all warnings. This, though, gives -# a warning due to pthread.h and unistd.h. -# -# -Wredundant-decls -# -CXX = @CXX@ -CXXFLAGS = @CXXFLAGS@ @X_CFLAGS@ @DEFS@ \ - -Wall -Wpointer-arith -Wstrict-prototypes -Wmissing-prototypes \ - -Wmissing-declarations -Wnested-externs - -CXXINCLUDES = -I. -I../nxcomp - -CC = @CC@ -CCFLAGS = $(CXXFLAGS) -CCINCLUDES = -I. -I../nxcomp -CCDEFINES = - -LDFLAGS = @LDFLAGS@ -LIBS = @LIBS@ - -# -# Only if THREADS is defined. -# -# LIBS = $(LIBS) -lpthread -# - -srcdir = @srcdir@ -prefix = @prefix@ -exec_prefix = @exec_prefix@ -bindir = @bindir@ -man1dir = @mandir@/man1 -VPATH = @srcdir@ - -INSTALL = @INSTALL@ -INSTALL_PROGRAM = @INSTALL_PROGRAM@ -INSTALL_DATA = @INSTALL_DATA@ - -# -# This should be autodetected. -# - -MAKEDEPEND = @MAKEDEPEND@ -DEPENDINCLUDES = -I/usr/include/g++ -I/usr/include/g++-3 - -.SUFFIXES: .cpp.c - -.cpp.o: - $(CXX) -c $(CXXFLAGS) $(CXXINCLUDES) $(CXXDEFINES) $< -.c.o: - $(CC) -c $(CCFLAGS) $(CCINCLUDES) $(CCDEFINES) $< - -PROGRAM = nxproxy - -all: depend $(PROGRAM) - -MSRC = Main.c - -CSRC = - -CXXSRC = - -MOBJ = $(MSRC:.c=.o) -COBJ = $(CSRC:.c=.o) -CXXOBJ = $(CXXSRC:.cpp=.o) - -$(PROGRAM): $(MOBJ) $(COBJ) $(CXXOBJ) - $(CXX) $(CXXFLAGS) -o $@ $(MOBJ) $(LDFLAGS) $(LIBS) - -depends: depend.status - -depend: depend.status - -depend.status: - if [ -x $(MAKEDEPEND) ] ; then \ - $(MAKEDEPEND) $(CXXINCLUDES) $(CCINCLUDES) \ - $(DEPENDINCLUDES) -f Makefile $(MSRC) $(CSRC) $(CXXSRC) 2>/dev/null; \ - fi - touch depend.status - -install: install.bin install.man - -install.bin: $(PROGRAM) - $(srcdir)/mkinstalldirs $(bindir) - $(INSTALL) $(PROGRAM) $(bindir)/$(PROGRAM) - -install.man: - $(srcdir)/mkinstalldirs $(man1dir) - -clean: - -rm -f *~ *.o *.bak st?????? core core.* *.out.* \ - $(PROGRAM) $(PROGRAM).exe $(LIBFULL) $(LIBLOAD) $(LIBSHARED) $(LIBARCHIVE) - -distclean: clean - -rm -f config.status config.log config.cache depend.status Makefile tags diff --git a/nxproxy/README b/nxproxy/README deleted file mode 100644 index 8f95d9f3f..000000000 --- a/nxproxy/README +++ /dev/null @@ -1,14 +0,0 @@ -README ------- - -1. To compile: - - > tar zxvf nxproxy-X.Y.Z-N.tar.gz - > cd nxproxy - > ./configure - > make - - You'll have to run gmake under Solaris. - -2. The 'make install' target is not currently supported - in the Makefile, but it should be simple to fix. diff --git a/nxproxy/README-IPAQ b/nxproxy/README-IPAQ deleted file mode 100644 index 7a8a8a958..000000000 --- a/nxproxy/README-IPAQ +++ /dev/null @@ -1,27 +0,0 @@ -README-IPAQ ------------ - -1. Install a cross-compiler for ARM. You can find detailed - informations at: - - http://www.ailis.de/~k/knowledge/crosscompiling/toolchain.php - - There are also binaries needed to install the cross-compiler. - -2. Configure and compile nxproxy using: - - $ ./configure --with-ipaq - $ make - - After compilation type: - - $ arm-linux-strip nxproxy - -3. You need libXcomp.so to run nxproxy. Be sure you include the - library in your LD_LIBRARY_PATH. For example, you can run: - - > export LD_LIBRARY_PATH $HOME/NX/nxcomp - > nxproxy -S localhost:8 - -4. The package nxscripts contains many examples of NX usage that - you can modify to suit your needs. diff --git a/nxproxy/README-VALGRIND b/nxproxy/README-VALGRIND deleted file mode 100644 index ce4d513a4..000000000 --- a/nxproxy/README-VALGRIND +++ /dev/null @@ -1,39 +0,0 @@ -README-VALGRIND ---------------- - -You can run nxproxy (and nxcomp) under the supervision of valgrind -(a very good memory debugger) by wrapping nxproxy in the following -script: - -<snip> -#!/bin/bash - -# Enable core dumps. - -ulimit -c unlimited - -# Set this to directory where nxproxy is located. - -NXPROXY_DIR=~/NX/nxproxy - -# Set this to directory where valgrind is located. - -VALGRIND_DIR=/usr/local/bin - -exec ${VALGRIND_DIR}/valgrind -v --leak-check=yes --leak-resolution=high \ - --show-reachable=yes --show-reachable=yes \ - --suppressions=${NXPROXY_DIR}/nxproxy.supp \ - --num-callers=16 --logfile-fd=2 \ -\ -${NXPROXY_DIR}/nxproxy $1 $2 $3 $4 $5 $6 $7 $8 $9 -<snip> - -Run the following commands on your shell, right in the place where -the nxproxy executable is to be placed in your setup: - -$ cat >nxproxy -<copy paste the previous lines here> -$ chmod a+x nxproxy - -Output of valgrind will go on stderr, that is in session file, if -run in NX environment. diff --git a/nxproxy/VERSION b/nxproxy/VERSION index 1545d9665..6ff19de4b 100644..120000 --- a/nxproxy/VERSION +++ b/nxproxy/VERSION @@ -1 +1 @@ -3.5.0 +../VERSION
\ No newline at end of file diff --git a/nxproxy/configure.ac b/nxproxy/configure.ac new file mode 100644 index 000000000..b381862c0 --- /dev/null +++ b/nxproxy/configure.ac @@ -0,0 +1,49 @@ +dnl *************************************************************************** +dnl *** configure.ac for nxproxy *** +dnl *************************************************************************** + +m4_define([nxproxy_version], m4_esyscmd([tr -d '\n' < VERSION])) + +# Initialize Autoconf +AC_PREREQ(2.60) + +AC_INIT([NX Proxy], [nxproxy_version], [https://github.com/ArcticaProject/nx-libs/issues]) +AC_CONFIG_AUX_DIR([build-aux]) +AC_PROG_CC +AC_CONFIG_SRCDIR([Makefile.am]) +AC_CONFIG_HEADERS([config.h]) +AC_CONFIG_MACRO_DIR([m4]) + +AM_INIT_AUTOMAKE([foreign no-dist-gzip dist-xz]) + +PROXY_VERSION=nxproxy_version +AC_SUBST([PROXY_VERSION]) + +AC_LANG([C]) +NX_COMPILER_BRAND +NX_DEFAULT_OPTIONS + +dnl This is a workaround for a nasty libtool bug. +dnl We actually compile libXcomp with pthread support, but libtool uses g++ ... -nostdlib ... -pthread +dnl on Linux. -nostdlib causes -pthread to be ignored. +dnl According to GCC upstream, this is not a bug: https://gcc.gnu.org/bugzilla/show_bug.cgi?id=25460 +dnl GCC upstream insists that libtool needs to handle -pthread in a special way when using -nostdlib. +dnl A patch has been submitted to the libtool project: http://lists.gnu.org/archive/html/libtool-patches/2013-11/msg00015.html +dnl but never applied to the code base. Boo. +dnl We will work around this bug by using AX_PTHREAD and linking with pthread support in all consumers of +dnl libXcomp for now. +AX_PTHREAD([], AC_MSG_ERROR([no POSIX threads support detected])) + +AC_ARG_ENABLE([cxx11], + [AS_HELP_STRING([--enable-cxx11], + [enable optional features requiring C++11 support (disabled by default)])], + [AS_IF([test x$enableval = xyes], + [AX_CXX_COMPILE_STDCXX_11([], [mandatory])])]) + +AC_CONFIG_FILES([ +Makefile +man/Makefile +src/Makefile +]) + +AC_OUTPUT diff --git a/nxproxy/configure.in b/nxproxy/configure.in deleted file mode 100644 index bd930f166..000000000 --- a/nxproxy/configure.in +++ /dev/null @@ -1,185 +0,0 @@ -dnl Process this file with autoconf to produce a configure script. - -dnl Prolog - -AC_INIT(Main.c) -AC_PREREQ(2.13) - -dnl Reset default compilation flags. - -CXXFLAGS="-O3" -CPPFLAGS="-O3" - -dnl Prefer headers and libraries from nx-X11 if present. - -if test -d "../nx-X11/exports/include" ; then - CXXFLAGS="$CXXFLAGS -I../nx-X11/exports/include" - LIBS="$LIBS -L../nx-X11/exports/lib" -fi - -dnl Check whether --with-ipaq was given. - -if test "${with_ipaq}" = yes; then - echo -e "enabling ipaq configuration" - CXX="arm-linux-c++" - CC="arm-linux-gcc" - unset ac_cv_prog_armcxx - unset ac_cv_prog_armcc - unset ac_cv_prog_CXXCPP - AC_CHECK_PROG([armcxx],["$CXX"],[yes],[no],[$PATH]) - AC_CHECK_PROG([armcc],["$CC"],[yes],[no],[$PATH]) - if test $armcxx = "yes" && test $armcc = "yes" ; then - ac_cv_prog_CXX="$CXX" - ac_cv_prog_CC="$CC" - else - AC_MSG_ERROR(installation or configuration problem: I cannot find compiler for arm-linux) - fi -else - unset ac_cv_prog_CXX - unset ac_cv_prog_CC - unset ac_cv_prog_CXXCPP -fi - -dnl Check for programs. - -AC_PROG_CXX -AC_PROG_CC -AC_LANG_CPLUSPLUS - -dnl Check for BSD compatible install. - -AC_PROG_INSTALL - -dnl Check for extra header files. - -AC_PATH_XTRA - -dnl Custom addition. - -ac_help="$ac_help - --with-symbols give -g flag to compiler to produce debug symbols - --with-info define INFO at compile time to get basic log output - --with-valgrind clean up allocated buffers to avoid valgrind warnings - --with-version use this version for produced libraries" - -dnl Check to see if we're running under Cygwin32. - - -dnl Check to see if we're running under FreeBSD. -AC_DEFUN(nxconf_FreeBSD, -[AC_CACHE_CHECK(for FreeBSD environment, nxconf_cv_freebsd, -[AC_TRY_COMPILE(,[return __FreeBSD__;], -nxconf_cv_freebsd=yes, nxconf_cv_freebsd=no) -rm -f conftest*]) -FreeBSD= -test "$nxconf_cv_freebsd" = yes && FreeBSD=yes]) -nxconf_FreeBSD - - -AC_DEFUN(nxconf_CYGWIN32, -[AC_CACHE_CHECK(for Cygwin32 environment, nxconf_cv_cygwin32, -[AC_TRY_COMPILE(,[return __CYGWIN32__;], -nxconf_cv_cygwin32=yes, nxconf_cv_cygwin32=no) -rm -f conftest*]) -CYGWIN32= -test "$nxconf_cv_cygwin32" = yes && CYGWIN32=yes]) -nxconf_CYGWIN32 - -dnl Check for Darwin environment. - -AC_DEFUN(nxconf_DARWIN, -[AC_CACHE_CHECK(for Darwin environment, nxconf_cv_darwin, -[AC_TRY_COMPILE(,[return __APPLE__;], -nxconf_cv_darwin=yes, nxconf_cv_darwin=no) -rm -f conftest*]) -DARWIN= -test "$nxconf_cv_darwin" = yes && DARWIN=yes]) -nxconf_DARWIN - -dnl Check to see if we're running under Solaris. - -AC_DEFUN(nxconf_SUN, -[AC_CACHE_CHECK(for SunOS environment, nxconf_cv_sun, -[AC_TRY_COMPILE(,[return __sun;], -nxconf_cv_sun=yes, nxconf_cv_sun=no) -rm -f conftest*]) -SUN= -test "$nxconf_cv_sun" = yes && SUN=yes]) -nxconf_SUN - -dnl Check whether --with-version was given. - -AC_SUBST(LIBVERSION) -AC_SUBST(VERSION) -if test "${with_version}" = yes; then - VERSION=${ac_option} -else - VERSION=`cat VERSION` -fi -echo -e "compiling version ${VERSION}" - -LIBVERSION=`echo ${VERSION} | cut -d '.' -f 1` - -CXXFLAGS="$CXXFLAGS -DVERSION=\\\"${VERSION}\\\"" -CPPFLAGS="$CPPFLAGS -DVERSION=\\\"${VERSION}\\\"" - -dnl Check whether --with-symbols or --without-symbols was -dnl given and set the required optimization level. - -if test "${with_symbols}" = yes; then - echo -e "enabling production of debug symbols" - CXXFLAGS="-g $CXXFLAGS" - CPPFLAGS="-g $CPPFLAGS" -else - echo -e "disabling production of debug symbols" -fi - -dnl Check whether --with-info or --without-info was given. - -if test "${with_info}" = yes; then - echo -e "enabling info output in the log file" - CXXFLAGS="$CXXFLAGS -DINFO" - CPPFLAGS="$CPPFLAGS -DINFO" -else - echo -e "disabling info output in the log file" -fi - -dnl Check whether --with-valgrind or --without-valgrind was given. - -if test "${with_valgrind}" = yes; then - echo -e "enabling valgrind memory checker workarounds" - CXXFLAGS="$CXXFLAGS -DVALGRIND" - CPPFLAGS="$CPPFLAGS -DVALGRIND" -else - echo -e "disabling valgrind memory checker workarounds" -fi - -dnl Cygwin requires that the stdc++ library is linked explicitly. -dnl GCC 3.3.x requires also the z, png and jpeg libraries. This is -dnl not true anymore since GCC 3.4.x. - -if test "$CYGWIN32" = yes; then - LIBS="$LIBS -L../nxcomp -lXcomp -lstdc++ -Wl,-e,_mainCRTStartup -ljpeg -lpng -lz" -else - LIBS="$LIBS -L../nxcomp -lXcomp" -fi - -dnl Find makedepend somewhere. - -AC_SUBST(MAKEDEPEND) - -if test -x "../nx-X11/config/makedepend/makedepend" ; then - MAKEDEPEND=../nx-X11/config/makedepend/makedepend -else - if test -x "/usr/X11R6/bin/makedepend" ; then - MAKEDEPEND=/usr/X11R6/bin/makedepend - else - if test -x "/usr/openwin/bin/makedepend" ; then - MAKEDEPEND=/usr/openwin/bin/makedepend - else - MAKEDEPEND=makedepend - fi - fi -fi - -AC_OUTPUT(Makefile) diff --git a/nxproxy/install-sh b/nxproxy/install-sh deleted file mode 100755 index 58719246f..000000000 --- a/nxproxy/install-sh +++ /dev/null @@ -1,238 +0,0 @@ -#! /bin/sh -# -# install - install a program, script, or datafile -# This comes from X11R5. -# -# Calling this script install-sh is preferred over install.sh, to prevent -# `make' implicit rules from creating a file called install from it -# when there is no Makefile. -# -# This script is compatible with the BSD install script, but was written -# from scratch. -# - - -# set DOITPROG to echo to test this script - -# Don't use :- since 4.3BSD and earlier shells don't like it. -doit="${DOITPROG-}" - - -# put in absolute paths if you don't have them in your path; or use env. vars. - -mvprog="${MVPROG-mv}" -cpprog="${CPPROG-cp}" -chmodprog="${CHMODPROG-chmod}" -chownprog="${CHOWNPROG-chown}" -chgrpprog="${CHGRPPROG-chgrp}" -stripprog="${STRIPPROG-strip}" -rmprog="${RMPROG-rm}" -mkdirprog="${MKDIRPROG-mkdir}" - -transformbasename="" -transform_arg="" -instcmd="$mvprog" -chmodcmd="$chmodprog 0755" -chowncmd="" -chgrpcmd="" -stripcmd="" -rmcmd="$rmprog -f" -mvcmd="$mvprog" -src="" -dst="" -dir_arg="" - -while [ x"$1" != x ]; do - case $1 in - -c) instcmd="$cpprog" - shift - continue;; - - -d) dir_arg=true - shift - continue;; - - -m) chmodcmd="$chmodprog $2" - shift - shift - continue;; - - -o) chowncmd="$chownprog $2" - shift - shift - continue;; - - -g) chgrpcmd="$chgrpprog $2" - shift - shift - continue;; - - -s) stripcmd="$stripprog" - shift - continue;; - - -t=*) transformarg=`echo $1 | sed 's/-t=//'` - shift - continue;; - - -b=*) transformbasename=`echo $1 | sed 's/-b=//'` - shift - continue;; - - *) if [ x"$src" = x ] - then - src=$1 - else - # this colon is to work around a 386BSD /bin/sh bug - : - dst=$1 - fi - shift - continue;; - esac -done - -if [ x"$src" = x ] -then - echo "install: no input file specified" - exit 1 -else - true -fi - -if [ x"$dir_arg" != x ]; then - dst=$src - src="" - - if [ -d $dst ]; then - instcmd=: - else - instcmd=mkdir - fi -else - -# Waiting for this to be detected by the "$instcmd $src $dsttmp" command -# might cause directories to be created, which would be especially bad -# if $src (and thus $dsttmp) contains '*'. - - if [ -f $src -o -d $src ] - then - true - else - echo "install: $src does not exist" - exit 1 - fi - - if [ x"$dst" = x ] - then - echo "install: no destination specified" - exit 1 - else - true - fi - -# If destination is a directory, append the input filename; if your system -# does not like double slashes in filenames, you may need to add some logic - - if [ -d $dst ] - then - dst="$dst"/`basename $src` - else - true - fi -fi - -## this sed command emulates the dirname command -dstdir=`echo $dst | sed -e 's,[^/]*$,,;s,/$,,;s,^$,.,'` - -# Make sure that the destination directory exists. -# this part is taken from Noah Friedman's mkinstalldirs script - -# Skip lots of stat calls in the usual case. -if [ ! -d "$dstdir" ]; then -defaultIFS=' -' -IFS="${IFS-${defaultIFS}}" - -oIFS="${IFS}" -# Some sh's can't handle IFS=/ for some reason. -IFS='%' -set - `echo ${dstdir} | sed -e 's@/@%@g' -e 's@^%@/@'` -IFS="${oIFS}" - -pathcomp='' - -while [ $# -ne 0 ] ; do - pathcomp="${pathcomp}${1}" - shift - - if [ ! -d "${pathcomp}" ] ; - then - $mkdirprog "${pathcomp}" - else - true - fi - - pathcomp="${pathcomp}/" -done -fi - -if [ x"$dir_arg" != x ] -then - $doit $instcmd $dst && - - if [ x"$chowncmd" != x ]; then $doit $chowncmd $dst; else true ; fi && - if [ x"$chgrpcmd" != x ]; then $doit $chgrpcmd $dst; else true ; fi && - if [ x"$stripcmd" != x ]; then $doit $stripcmd $dst; else true ; fi && - if [ x"$chmodcmd" != x ]; then $doit $chmodcmd $dst; else true ; fi -else - -# If we're going to rename the final executable, determine the name now. - - if [ x"$transformarg" = x ] - then - dstfile=`basename $dst` - else - dstfile=`basename $dst $transformbasename | - sed $transformarg`$transformbasename - fi - -# don't allow the sed command to completely eliminate the filename - - if [ x"$dstfile" = x ] - then - dstfile=`basename $dst` - else - true - fi - -# Make a temp file name in the proper directory. - - dsttmp=$dstdir/#inst.$$# - -# Move or copy the file name to the temp name - - $doit $instcmd $src $dsttmp && - - trap "rm -f ${dsttmp}" 0 && - -# and set any options; do chmod last to preserve setuid bits - -# If any of these fail, we abort the whole thing. If we want to -# ignore errors from any of these, just make sure not to ignore -# errors from the above "$doit $instcmd $src $dsttmp" command. - - if [ x"$chowncmd" != x ]; then $doit $chowncmd $dsttmp; else true;fi && - if [ x"$chgrpcmd" != x ]; then $doit $chgrpcmd $dsttmp; else true;fi && - if [ x"$stripcmd" != x ]; then $doit $stripcmd $dsttmp; else true;fi && - if [ x"$chmodcmd" != x ]; then $doit $chmodcmd $dsttmp; else true;fi && - -# Now rename the file to the real destination. - - $doit $rmcmd -f $dstdir/$dstfile && - $doit $mvcmd $dsttmp $dstdir/$dstfile - -fi && - - -exit 0 diff --git a/nxproxy/m4/ax_cxx_compile_stdcxx.m4 b/nxproxy/m4/ax_cxx_compile_stdcxx.m4 new file mode 120000 index 000000000..28ebfd1a6 --- /dev/null +++ b/nxproxy/m4/ax_cxx_compile_stdcxx.m4 @@ -0,0 +1 @@ +../../m4/ax_cxx_compile_stdcxx.m4
\ No newline at end of file diff --git a/nxproxy/m4/ax_cxx_compile_stdcxx_11.m4 b/nxproxy/m4/ax_cxx_compile_stdcxx_11.m4 new file mode 120000 index 000000000..5fbe8790d --- /dev/null +++ b/nxproxy/m4/ax_cxx_compile_stdcxx_11.m4 @@ -0,0 +1 @@ +../../m4/ax_cxx_compile_stdcxx_11.m4
\ No newline at end of file diff --git a/nxproxy/m4/ax_pthread.m4 b/nxproxy/m4/ax_pthread.m4 new file mode 120000 index 000000000..156af3df3 --- /dev/null +++ b/nxproxy/m4/ax_pthread.m4 @@ -0,0 +1 @@ +../../m4/ax_pthread.m4
\ No newline at end of file diff --git a/nxproxy/m4/nx-macros.m4 b/nxproxy/m4/nx-macros.m4 new file mode 120000 index 000000000..813e9b041 --- /dev/null +++ b/nxproxy/m4/nx-macros.m4 @@ -0,0 +1 @@ +../../m4/nx-macros.m4
\ No newline at end of file diff --git a/nxproxy/man/Makefile.am b/nxproxy/man/Makefile.am new file mode 100644 index 000000000..8f9211c07 --- /dev/null +++ b/nxproxy/man/Makefile.am @@ -0,0 +1,5 @@ +NULL = + +dist_man_MANS = \ + nxproxy.1 \ + $(NULL) diff --git a/nxproxy/man/nxproxy.1 b/nxproxy/man/nxproxy.1 new file mode 100644 index 000000000..4c0d563aa --- /dev/null +++ b/nxproxy/man/nxproxy.1 @@ -0,0 +1,422 @@ +'\" -*- coding: utf-8 -*- +.if \n(.g .ds T< \\FC +.if \n(.g .ds T> \\F[\n[.fam]] +.de URL +\\$2 \(la\\$1\(ra\\$3 +.. +.if \n(.g .mso www.tmac +.TH nxproxy 1 "Dec 2017" "Version 3.5.99.12" "NX Proxy" +.SH NAME +nxproxy \- NX Proxy Tool +.SH SYNOPSIS +'nh +.fi +.ad l +\fBnxproxy\fR \fI[<options>] <host>:<port>\fR + +.SH DESCRIPTION +\fBnxproxy\fR is a tool that allows one to tunnel X sessions through +the NX compression library. \fBnxproxy\fR is a backend application +utilized by various client application (Remmina, X2Go Client, PyHoca-Gui, +Arctica Client, TheQVD Client, etc.). +.PP +.SH COMMAND LINE OPTIONS +.TP 8 +.B -C +Specify that nxproxy has to run on the 'X client' side, listening for +connections and impersonating an X server. +.TP 8 +.B -S +Specify that nxproxy has to run in 'X server' mode, thus forwarding the +connections to daemons running on the client. +.TP 8 +.B -h +Print this message. +.TP 8 +.B -v +Print version information. +.TP 8 +.B -d <int> +Set log level (0 for FATAL, 1 for ERROR, 2 for WARNING, 3 for INFO, 4 for +DEBUG). The default is 0. +.TP 8 +.B -o <string> +Name of the log file. Default is stderr. +.TP 8 +.B -f <string> +Specify log format. The characters in <string> define how the loglines +are formatted. The following characters are supported, default is '0': +.RS 8 +.TP 8 +.I 0 +only the plain text without any additions. This is the default. +.TP 8 +.I u +include time +.TP 8 +.I l +include loglevel +.TP 8 +.I T +include thread ids +.TP 8 +.I L +include the location of the log call in the source code +.RE +.TP 8 +.B <host>:<port> +Put at the end, specifies the host and port of the listening proxy. + +.SH NX/NX DISPLAY OPTIONS +Multiple nx/nx options can be specified in the DISPLAY environment or on +the command line, by using the nx/nx,option=value notation. +.TP 8 +.B link=<string> +An indication of the link speed that is going to be used between the +proxies. Usually the compression and the other link parameters depend on +this setting. The value can be either 'modem', 'isdn', 'adsl', 'wan', 'lan', 'local' +or a bandwidth specification, like for example '56k', '1m', '100m', etc. + +.TP 8 +.B type=<string> +Type of session, for example 'windows', 'unix-kde'. 'unix-application', +etc. + +.TP 8 +.B display=<string> +Specify the real display where X connections have to be forwarded by the +proxy running on the client. + +.TP 8 +.B listen=<int> +Local port used for accepting the proxy connection. + +.TP 8 +.B loopback=<bool> +Bind to the loopback device only. + +.TP 8 +.B accept=<string> +Name or IP of host that can connect to the proxy. + +.TP 8 +.B connect=<string> +Name or IP of host that the proxy will connect to. + +.TP 8 +.B port=<int> +Remote port used for the connection. + +.TP 8 +.B retry=<int> +Number of connection atempts. + +.TP 8 +.B root=<string> +The root directory for the session. Usually is the C\-* or S\-* in the .nx +directory in the user's home, with '*' being the virtual display. + +.TP 8 +.B session=<string> +Name of the session file. The default is the name 'session' in the +session directory. + +.TP 8 +.B errors=<string> +Name of the log file used by the proxy. The default is the name 'errors' +in the session directory. + +.TP 8 +.B stats=<string> +Name of the file where are written the proxy statistics. The default is a +file 'stats' in the session directory. The proxy replaces the data in the +file whenever it receives a SIGUSR1 or SIGUSR2 signal: + +.I SIGUSR1: +Gives total statistics, i.e. statistics collected since the beginning of +the session. + +.I SIGUSR2: +Gives partial statistics, i.e. statistics collected since the last time +this signal was received. + +.TP 8 +.B cookie=<string> +Use the provided cookie for authenticating to the remote proxy. The same +cookie is used as the fake value used for the X authorization. The fake +cookie is replaced on the X server side with the real cookie to be used +for the display, so that the real cookie doesn't have to travel over the +net. When not using a proxy cookie, any host will be able to connect to +the proxy. See also the 'accept' parameter. + +.TP 8 +.B nodelay=<bool> +A boolean indicating if TCP_NODELAY has to be set on the proxy link. Old +Linux kernels had problems with handling TCP_NODELAY on PPP links. + +.TP 8 +.B policy=<bool> +Let or not the agent decide when it is the best time to flush the proxy +link. If set to 0, the proxy will flush any encoded data immediately. The +option has only effect on the X client side proxy. + +.TP 8 +.B render=<bool> +Enable or disable use of the RENDER extension. + +.TP 8 +.B taint=<bool> +Try to suppress trivial sources of X roundtrips by generating the reply +on the X client side. + +.TP 8 +.B delta=<bool> +Enable X differential compression. + +.TP 8 +.B data=<int> +Enable or disable the ZLIB data compression. It is possible to specify a +value between 0 and 9. Usually the value is chosen automatically based on +the requested link setting. + +.TP 8 +.B stream=<int> +Enable or disable the ZLIB stream compression. The value, between 0 and +9, is usually determined according to the requested link setting. Not +fully implemented in nx-X11 Agent, yet. + +.TP 8 +.B limit=<int> +Specify a bitrate limit allowed for this session. + +.TP 8 +.B memory=<int> +Trigger memory optimizations used to keep small the size of X buffers. +This is useful on embedded plat- forms, or where memory is scarce. + +.TP 8 +.B cache=<int> +Size of the in-memory X message cache. Setting the value to 0 will +disable the memory cache as well as the NX differential compression. + +.TP 8 +.B images=<int> +Size of the persistent image cache. + +.TP 8 +.B shseg=<int> +Enable the use of the MIT-SHM extension between the \fBnxproxy\fR and the +real X server. A value greater than 1 is assumed to be the size of +requested shared memory segment. By default, the size of the segment is +determined based on the size of the in-memory cache. + +.TP 8 +.B load=<bool> +Enable loading a persistent X message cache at the proxy startup. + +.TP 8 +.B save=<bool> +Enable saving a persistent X message cache at the end of session. + +.TP 8 +.B cups=<int> +Enable or disable forwarding of CUPS connections, by listening on the +optional port 'n'. + +.TP 8 +.B aux=<int> +Enable or disable forwarding of the auxiliary X channel used for +controlling the keyboard. The 'keybd=<int>' form is accepted for backward +compatibility. + +.TP 8 +.B smb=<int> +Enable or disable forwarding of SMB connections. The 'samba=<int>' form is +accepted for backward compatibility. + +.TP 8 +.B media=<int> +Enable forwarding of audio connections. + +.TP 8 +.B http=<int> +Enable forwarding of HTTP connections. + +.TP 8 +.B font=<int> +Enable forwarding of reversed connections to a font +server running on the NX server. + +.TP 8 +.B file=<int> +Enable forwarding of file transfer connections. + +.TP 8 +.B mask=<int> +Determine the distribution of channel ids between the proxies. By +default, channels whose ids are multiple of 8 (starting from 0) are +reserved for the NX client side. All the other channels can be allocated +by the nx-X11 Agent side. + +.TP 8 +.B timeout=t +Specify the keep-alive timeout used by proxies to determine if there is a +network problem preventing communication with the remote peer. A value of +0 disables the check. + +.TP 8 +.B cleanup=t +Specify the number of seconds the proxy has to wait at session shutdown +before closing all channels. The feature is used by the NX server to +ensure that services are disconnected before shutting down the link. + +.TP 8 +.B pack=<string> +Determine the method used to compress images. + +.TP 8 +.B product=<string> +The product id of the client or server. The value is ignored by the +proxy, but the client or server can provide it to facilitate the support. + +.TP 8 +.B core=<bool> +Enable production of core dumps when aborting the proxy connection. + +.TP 8 +.B options=<string> +Specify an additional file containing options that has to be merged with +option read from the command line or the environment. + +.TP 8 +.B kill=<int> +Add the given process to the list of daemons that must be terminated at +session shutdown. Multiple 'kill=<int>' options can be specified. The proxy +will send them a SIGTERM signal just before exiting. + +.TP 8 +.B strict=<bool> +Optimize for responsiveness, rather than for the best use of all the +available bandwidth. + +.TP 8 +.B encryption=<bool> +Should be set to 1 if the proxy is running as part of a program providing +encryption of the point to point communication. + +.TP 8 +.I These options are interpreted by the nx-NX Agent. They are ignored by the proxy. + + rootless=<bool> + geometry=<string> + resize=<bool> + fullscreen=<bool> + keyboard=<string> + clipboard=<int> + streaming=<int> + backingstore=<int> + composite=<int> + xinerama=<int> + shmem=<bool> + shpix=<bool> + kbtype=<string> + client=<string> + shadow=<int> + shadowuid=<int> + shadowmode=<string> + defer=<int> + tile=<string> + menu=<int> + sleep=<int> + +.SH NX ENVIRONMENT VARIABLES + +The \fBnxproxy\fR application (and also \fBnxagent\fR when using nxcomp +support) can be influenced by the following environment variables: + + +.TP 8 +.B NX_ROOT +The root NX directory is the place where the session directory and the +cache files are created. This is usually overridden by passing the 'root=' +option. By default, the root NX directory is assumed to be the +directory '.nx' in the user's home. + +.TP 8 +.B NX_SYSTEM +The directory where NX programs and libraries reside. If not set, the +value is assumed to be '/usr/NX'. Programs, libraries and data files are +respectedly searched in the 'bin', 'lib' and 'share' subdirectories. + +.TP 8 +.B NX_HOME +The NX user's home directory. If NX_ROOT is not set or invalid, the +user's NX directory is created here. + +.TP 8 +.B NX_TEMP +The directory where all temporary files are to be created. + +.TP 8 +.B NX_CLIENT +The full path to the <nxclient> executable. If the variable is not set, +the <nxclient> executable will be run assuming that the program is in the +system path. This can be useful on platforms like Windows and the MacOS X +where <nxclient> is located in a different directory compared to the +other programs, to make easier for the user to execute the program from +the shell. + +.TP 8 +.B NX_SLAVE_CMD +The full path to the slave channel handler. When the slave channel is +enabled, the agent will listen on a port and forward the connection to +the NX_SLAVE_CMD program. This can be used to implement agent/proxy +communication for applications such as serial port and USB forwarding. + +.SH SHELL ENVIRONMENT VARIABLES + +.TP 8 +.B HOME +The variable is checked in the case NX_HOME is not set, null or invalid. + +.TP 8 +.B TEMP +The variable is checked whenever the NX_TEMP directory is not set, null +or invalid. + +.TP 8 +.B PATH +The path where all executables are searched, except <nxclient>. If +NX_CLIENT is not set, also the client executable is searched in the +system path. + +.TP 8 +.B LD_LIBRARY_PATH +System-wide library search order. This should be set by the program +invoking the proxy. + +.TP 8 +.B DISPLAY +On the X server side, the DISPLAY variable indicates the location of the +X11 server. When nxcomp is used as a transport library, the DISPLAY may +represent a NX transport specification and options can passed in the form +nx/nx,option=value... + +.TP 8 +.B XAUTHORITY +This is the file containing the X11 authorization cookie. If not set, the +file is assumed to be in the user's home (either NX_HOME or HOME). + +.SH AUTHOR +The \fBnxproxy\fR application has originally been derived from a software +project called DXCP. The company NoMachine turned DXCP into nxcomp with +nxproxy as executable around nxcomp. +.PP +The current maintenance of \fBnxproxy\fR (major version 3) is coordinated +between various projects, mainly by The Arctica Project, TheQVD (Qindel +Group) and the X2Go Project. +.PP +This manual has been written by Mike Gabriel +<mike.gabriel@das\-netzwerkteam.de> for the X2Go project +(http://www.x2go.org) and later on improved for the Arctica Project +(https://arctica-project.org). diff --git a/nxproxy/mkinstalldirs b/nxproxy/mkinstalldirs deleted file mode 100755 index 936cf3407..000000000 --- a/nxproxy/mkinstalldirs +++ /dev/null @@ -1,34 +0,0 @@ -#! /bin/sh -# mkinstalldirs --- make directory hierarchy -# Author: Noah Friedman <friedman@prep.ai.mit.edu> -# Created: 1993-05-16 -# Last modified: 1995-03-05 -# Public domain - -errstatus=0 - -for file in ${1+"$@"} ; do - set fnord `echo ":$file" | sed -ne 's/^:\//#/;s/^://;s/\// /g;s/^#/\//;p'` - shift - - pathcomp= - for d in ${1+"$@"} ; do - pathcomp="$pathcomp$d" - case "$pathcomp" in - -* ) pathcomp=./$pathcomp ;; - esac - - if test ! -d "$pathcomp"; then - echo "mkdir $pathcomp" 1>&2 - mkdir "$pathcomp" > /dev/null 2>&1 || lasterr=$? - fi - - if test ! -d "$pathcomp"; then - errstatus=$lasterr - fi - - pathcomp="$pathcomp/" - done -done - -exit $errstatus diff --git a/nxproxy/Main.c b/nxproxy/src/Main.c index ae90990d4..dc4e0fd68 100644 --- a/nxproxy/Main.c +++ b/nxproxy/src/Main.c @@ -19,6 +19,8 @@ #include <stdlib.h> #include <string.h> #include <unistd.h> +#include <errno.h> +#include <limits.h> #include "NX.h" @@ -27,6 +29,8 @@ #undef TEST #undef DEBUG +extern const char *__progname; + /* * Entry point when running nxproxy stand-alone. */ @@ -37,27 +41,75 @@ int main(int argc, const char **argv) char *options = NULL; + unsigned long int nx_commfd; + char *nx_commfd_str = NULL; + options = getenv("NX_DISPLAY"); - if (NXTransParseCommandLine(argc, argv) < 0) + if ((nx_commfd_str = getenv("NX_COMMFD")) != NULL) { - NXTransCleanup(); - } + errno = 0; + nx_commfd = strtoul(nx_commfd_str, NULL, 10); - if (NXTransParseEnvironment(options, 0) < 0) - { - NXTransCleanup(); + if ((errno) && (0 == nx_commfd)) + { + fprintf(stderr, "%s: NX_COMMFD environment variable's value [%s] is not a file descriptor number. " + "Aborting...\n", + __progname, nx_commfd_str + ); + NXTransCleanup(); + } + else if ((unsigned long int) INT_MAX < nx_commfd) + { + fprintf(stderr, "%s: NX_COMMFD environment variable's value [%lu] is out of range for a file descriptor number. " + "Aborting...\n", + __progname, nx_commfd); + NXTransCleanup(); + } + else { + result = NXTransCreate(nx_commfd, NX_MODE_SERVER, options); + + if (result != 1) + { + fprintf(stderr, "%s: NXTransCreate failed for FD#%lu\n" + "Aborting...", + __progname, nx_commfd); + NXTransCleanup(); + } + + } + + // go into endless loop + + if (result == 1) + { + while (NXTransRunning(NX_FD_ANY)) + result = NXTransContinue(NULL); + } } + else + { - /* - * This should not return... - */ + if (NXTransParseCommandLine(argc, argv) < 0) + { + NXTransCleanup(); + } - #ifdef TEST - fprintf(stderr, "Main: Yielding control to NX entry point.\n"); - #endif + if (NXTransParseEnvironment(options, 0) < 0) + { + NXTransCleanup(); + } - result = NXTransProxy(NX_FD_ANY, NX_MODE_ANY, NX_DISPLAY_ANY); + /* + * This should not return... + */ + + #ifdef TEST + fprintf(stderr, "%s: Yielding control to NX entry point.\n", __progname); + #endif + + result = NXTransProxy(NX_FD_ANY, NX_MODE_ANY, NX_DISPLAY_ANY); + } /* * ...So these should not be called. diff --git a/nxproxy/src/Makefile.am b/nxproxy/src/Makefile.am new file mode 100644 index 000000000..4fd2eefd6 --- /dev/null +++ b/nxproxy/src/Makefile.am @@ -0,0 +1,27 @@ +NULL = + +nxexecdir = $(bindir) + +nxexec_PROGRAMS = nxproxy + +nxproxy_SOURCES = \ + Main.c \ + $(NULL) + +nxproxy_LDADD = \ + @PTHREAD_LIBS@ \ + -L$(top_srcdir)/../nxcomp/src/.libs -lXcomp \ + $(NULL) + +nxproxy_LDFLAGS = \ + $(PTHREAD_LDFLAGS) \ + $(NULL) + +nxproxy_CFLAGS = \ + $(BASE_CFLAGS) \ + $(PTHREAD_CFLAGS) \ + $(NULL) + +AM_CPPFLAGS = \ + -I$(top_srcdir)/../nxcomp/include/ \ + $(NULL) |