Showing preview only (6,162K chars total). Download the full file or copy to clipboard to get everything.
Repository: TigerVNC/tigervnc
Branch: master
Commit: 71fe03a49684
Files: 897
Total size: 5.7 MB
Directory structure:
gitextract_fwbflnoz/
├── .github/
│ ├── ISSUE_TEMPLATE/
│ │ ├── bug_report.md
│ │ ├── config.yml
│ │ └── feature_request.md
│ ├── containers/
│ │ ├── jammy/
│ │ │ ├── Dockerfile
│ │ │ └── build.sh
│ │ ├── noble/
│ │ │ ├── Dockerfile
│ │ │ └── build.sh
│ │ ├── rocky10/
│ │ │ ├── Dockerfile
│ │ │ └── build.sh
│ │ ├── rocky8/
│ │ │ ├── Dockerfile
│ │ │ └── build.sh
│ │ └── rocky9/
│ │ ├── Dockerfile
│ │ └── build.sh
│ └── workflows/
│ ├── build.yml
│ └── test-report.yml
├── .gitignore
├── BUILDING.txt
├── CMakeLists.txt
├── LICENCE.TXT
├── README.rst
├── cmake/
│ ├── Modules/
│ │ ├── CMakeMacroLibtoolFile.cmake
│ │ ├── FindAVCodec.cmake
│ │ ├── FindAVUtil.cmake
│ │ ├── FindGLib.cmake
│ │ ├── FindGMP.cmake
│ │ ├── FindGio.cmake
│ │ ├── FindGobject.cmake
│ │ ├── FindNettle.cmake
│ │ ├── FindPAM.cmake
│ │ ├── FindPWQuality.cmake
│ │ ├── FindPipeWire.cmake
│ │ ├── FindPixman.cmake
│ │ ├── FindSELinux.cmake
│ │ ├── FindSWScale.cmake
│ │ ├── FindSystemd.cmake
│ │ ├── FindUuid.cmake
│ │ ├── FindWaylandClient.cmake
│ │ └── FindXkbcommon.cmake
│ ├── StaticBuild.cmake
│ └── cmake_uninstall.cmake.in
├── common/
│ ├── CMakeLists.txt
│ ├── core/
│ │ ├── CMakeLists.txt
│ │ ├── Configuration.cxx
│ │ ├── Configuration.h
│ │ ├── Exception.cxx
│ │ ├── Exception.h
│ │ ├── LogWriter.cxx
│ │ ├── LogWriter.h
│ │ ├── Logger.cxx
│ │ ├── Logger.h
│ │ ├── Logger_file.cxx
│ │ ├── Logger_file.h
│ │ ├── Logger_stdio.cxx
│ │ ├── Logger_stdio.h
│ │ ├── Logger_syslog.cxx
│ │ ├── Logger_syslog.h
│ │ ├── Rect.h
│ │ ├── Region.cxx
│ │ ├── Region.h
│ │ ├── Timer.cxx
│ │ ├── Timer.h
│ │ ├── string.cxx
│ │ ├── string.h
│ │ ├── time.cxx
│ │ ├── time.h
│ │ ├── winerrno.h
│ │ ├── xdgdirs.cxx
│ │ └── xdgdirs.h
│ ├── network/
│ │ ├── CMakeLists.txt
│ │ ├── Socket.cxx
│ │ ├── Socket.h
│ │ ├── TcpSocket.cxx
│ │ ├── TcpSocket.h
│ │ ├── UnixSocket.cxx
│ │ └── UnixSocket.h
│ ├── rdr/
│ │ ├── AESInStream.cxx
│ │ ├── AESInStream.h
│ │ ├── AESOutStream.cxx
│ │ ├── AESOutStream.h
│ │ ├── BufferedInStream.cxx
│ │ ├── BufferedInStream.h
│ │ ├── BufferedOutStream.cxx
│ │ ├── BufferedOutStream.h
│ │ ├── CMakeLists.txt
│ │ ├── FdInStream.cxx
│ │ ├── FdInStream.h
│ │ ├── FdOutStream.cxx
│ │ ├── FdOutStream.h
│ │ ├── FileInStream.cxx
│ │ ├── FileInStream.h
│ │ ├── HexInStream.cxx
│ │ ├── HexInStream.h
│ │ ├── HexOutStream.cxx
│ │ ├── HexOutStream.h
│ │ ├── InStream.h
│ │ ├── MemInStream.h
│ │ ├── MemOutStream.h
│ │ ├── OutStream.h
│ │ ├── RandomStream.cxx
│ │ ├── RandomStream.h
│ │ ├── TLSException.cxx
│ │ ├── TLSException.h
│ │ ├── TLSInStream.cxx
│ │ ├── TLSInStream.h
│ │ ├── TLSOutStream.cxx
│ │ ├── TLSOutStream.h
│ │ ├── TLSSocket.cxx
│ │ ├── TLSSocket.h
│ │ ├── ZlibInStream.cxx
│ │ ├── ZlibInStream.h
│ │ ├── ZlibOutStream.cxx
│ │ └── ZlibOutStream.h
│ └── rfb/
│ ├── AccessRights.cxx
│ ├── AccessRights.h
│ ├── Blacklist.cxx
│ ├── Blacklist.h
│ ├── CConnection.cxx
│ ├── CConnection.h
│ ├── CMakeLists.txt
│ ├── CMsgHandler.h
│ ├── CMsgReader.cxx
│ ├── CMsgReader.h
│ ├── CMsgWriter.cxx
│ ├── CMsgWriter.h
│ ├── CSecurity.h
│ ├── CSecurityDH.cxx
│ ├── CSecurityDH.h
│ ├── CSecurityMSLogonII.cxx
│ ├── CSecurityMSLogonII.h
│ ├── CSecurityNone.h
│ ├── CSecurityPlain.cxx
│ ├── CSecurityPlain.h
│ ├── CSecurityRSAAES.cxx
│ ├── CSecurityRSAAES.h
│ ├── CSecurityStack.cxx
│ ├── CSecurityStack.h
│ ├── CSecurityTLS.cxx
│ ├── CSecurityTLS.h
│ ├── CSecurityVeNCrypt.cxx
│ ├── CSecurityVeNCrypt.h
│ ├── CSecurityVncAuth.cxx
│ ├── CSecurityVncAuth.h
│ ├── ClientParams.cxx
│ ├── ClientParams.h
│ ├── ComparingUpdateTracker.cxx
│ ├── ComparingUpdateTracker.h
│ ├── Congestion.cxx
│ ├── Congestion.h
│ ├── CopyRectDecoder.cxx
│ ├── CopyRectDecoder.h
│ ├── Cursor.cxx
│ ├── Cursor.h
│ ├── DecodeManager.cxx
│ ├── DecodeManager.h
│ ├── Decoder.cxx
│ ├── Decoder.h
│ ├── EncodeManager.cxx
│ ├── EncodeManager.h
│ ├── Encoder.cxx
│ ├── Encoder.h
│ ├── Exception.h
│ ├── H264Decoder.cxx
│ ├── H264Decoder.h
│ ├── H264DecoderContext.cxx
│ ├── H264DecoderContext.h
│ ├── H264LibavDecoderContext.cxx
│ ├── H264LibavDecoderContext.h
│ ├── H264WinDecoderContext.cxx
│ ├── H264WinDecoderContext.h
│ ├── HextileDecoder.cxx
│ ├── HextileDecoder.h
│ ├── HextileEncoder.cxx
│ ├── HextileEncoder.h
│ ├── JPEGDecoder.cxx
│ ├── JPEGDecoder.h
│ ├── JPEGEncoder.cxx
│ ├── JPEGEncoder.h
│ ├── JpegCompressor.cxx
│ ├── JpegCompressor.h
│ ├── JpegDecompressor.cxx
│ ├── JpegDecompressor.h
│ ├── KeyRemapper.cxx
│ ├── KeyRemapper.h
│ ├── KeysymStr.c
│ ├── KeysymStr.h
│ ├── Palette.h
│ ├── PixelBuffer.cxx
│ ├── PixelBuffer.h
│ ├── PixelFormat.cxx
│ ├── PixelFormat.h
│ ├── PixelFormat.inl
│ ├── RREDecoder.cxx
│ ├── RREDecoder.h
│ ├── RREEncoder.cxx
│ ├── RREEncoder.h
│ ├── RawDecoder.cxx
│ ├── RawDecoder.h
│ ├── RawEncoder.cxx
│ ├── RawEncoder.h
│ ├── SConnection.cxx
│ ├── SConnection.h
│ ├── SDesktop.h
│ ├── SMsgHandler.h
│ ├── SMsgReader.cxx
│ ├── SMsgReader.h
│ ├── SMsgWriter.cxx
│ ├── SMsgWriter.h
│ ├── SSecurity.h
│ ├── SSecurityNone.h
│ ├── SSecurityPlain.cxx
│ ├── SSecurityPlain.h
│ ├── SSecurityRSAAES.cxx
│ ├── SSecurityRSAAES.h
│ ├── SSecurityStack.cxx
│ ├── SSecurityStack.h
│ ├── SSecurityTLS.cxx
│ ├── SSecurityTLS.h
│ ├── SSecurityVeNCrypt.cxx
│ ├── SSecurityVeNCrypt.h
│ ├── SSecurityVncAuth.cxx
│ ├── SSecurityVncAuth.h
│ ├── ScreenSet.h
│ ├── Security.cxx
│ ├── Security.h
│ ├── SecurityClient.cxx
│ ├── SecurityClient.h
│ ├── SecurityServer.cxx
│ ├── SecurityServer.h
│ ├── ServerCore.cxx
│ ├── ServerCore.h
│ ├── ServerParams.cxx
│ ├── ServerParams.h
│ ├── TightConstants.h
│ ├── TightDecoder.cxx
│ ├── TightDecoder.h
│ ├── TightEncoder.cxx
│ ├── TightEncoder.h
│ ├── TightJPEGEncoder.cxx
│ ├── TightJPEGEncoder.h
│ ├── UnixPasswordValidator.cxx
│ ├── UnixPasswordValidator.h
│ ├── UpdateTracker.cxx
│ ├── UpdateTracker.h
│ ├── VNCSConnectionST.cxx
│ ├── VNCSConnectionST.h
│ ├── VNCServer.h
│ ├── VNCServerST.cxx
│ ├── VNCServerST.h
│ ├── WinPasswdValidator.cxx
│ ├── WinPasswdValidator.h
│ ├── XF86keysym.h
│ ├── ZRLEDecoder.cxx
│ ├── ZRLEDecoder.h
│ ├── ZRLEEncoder.cxx
│ ├── ZRLEEncoder.h
│ ├── clipboardTypes.h
│ ├── d3des.c
│ ├── d3des.h
│ ├── encodings.cxx
│ ├── encodings.h
│ ├── fenceTypes.h
│ ├── hextileConstants.h
│ ├── keysymdef.h
│ ├── ks_tables.h
│ ├── ledStates.h
│ ├── msgTypes.h
│ ├── obfuscate.cxx
│ ├── obfuscate.h
│ ├── qemuTypes.h
│ └── screenTypes.h
├── config.h.in
├── contrib/
│ └── packages/
│ ├── deb/
│ │ ├── ubuntu-jammy/
│ │ │ └── debian/
│ │ │ ├── changelog
│ │ │ ├── compat
│ │ │ ├── control
│ │ │ ├── copyright
│ │ │ ├── rules
│ │ │ ├── source/
│ │ │ │ └── format
│ │ │ ├── tigervncserver.postinst.in
│ │ │ ├── tigervncserver.prerm
│ │ │ ├── xorg-source-patches/
│ │ │ │ ├── 516_tigervnc-xorg-manpages.patch
│ │ │ │ └── debian_libtool.patch
│ │ │ ├── xtigervncviewer.menu
│ │ │ ├── xtigervncviewer.postinst
│ │ │ └── xtigervncviewer.prerm
│ │ └── ubuntu-noble/
│ │ └── debian/
│ │ ├── changelog
│ │ ├── compat
│ │ ├── control
│ │ ├── copyright
│ │ ├── rules
│ │ ├── source/
│ │ │ └── format
│ │ ├── tigervncserver.postinst.in
│ │ ├── tigervncserver.prerm
│ │ ├── xorg-source-patches/
│ │ │ ├── 516_tigervnc-xorg-manpages.patch
│ │ │ └── debian_libtool.patch
│ │ ├── xtigervncviewer.menu
│ │ ├── xtigervncviewer.postinst
│ │ └── xtigervncviewer.prerm
│ └── rpm/
│ ├── el10/
│ │ ├── SOURCES/
│ │ │ └── 0001-configure.ac-search-for-the-fontrootdir-ourselves.patch
│ │ └── SPECS/
│ │ └── tigervnc.spec
│ ├── el8/
│ │ ├── SOURCES/
│ │ │ └── 10-libvnc.conf
│ │ └── SPECS/
│ │ └── tigervnc.spec
│ └── el9/
│ ├── SOURCES/
│ │ └── 10-libvnc.conf
│ └── SPECS/
│ └── tigervnc.spec
├── doc/
│ └── keyboard-test.txt
├── java/
│ ├── .gitignore
│ ├── CMakeLists.txt
│ ├── cmake/
│ │ └── SignJar.cmake
│ └── com/
│ ├── jcraft/
│ │ ├── jsch/
│ │ │ ├── Buffer.java
│ │ │ ├── ChangeLog
│ │ │ ├── Channel.java
│ │ │ ├── ChannelAgentForwarding.java
│ │ │ ├── ChannelDirectTCPIP.java
│ │ │ ├── ChannelExec.java
│ │ │ ├── ChannelForwardedTCPIP.java
│ │ │ ├── ChannelSession.java
│ │ │ ├── ChannelSftp.java
│ │ │ ├── ChannelShell.java
│ │ │ ├── ChannelSubsystem.java
│ │ │ ├── ChannelX11.java
│ │ │ ├── Cipher.java
│ │ │ ├── CipherNone.java
│ │ │ ├── Compression.java
│ │ │ ├── ConfigRepository.java
│ │ │ ├── DH.java
│ │ │ ├── DHEC256.java
│ │ │ ├── DHEC384.java
│ │ │ ├── DHEC521.java
│ │ │ ├── DHECN.java
│ │ │ ├── DHG1.java
│ │ │ ├── DHG14.java
│ │ │ ├── DHGEX.java
│ │ │ ├── DHGEX256.java
│ │ │ ├── ECDH.java
│ │ │ ├── ForwardedTCPIPDaemon.java
│ │ │ ├── GSSContext.java
│ │ │ ├── HASH.java
│ │ │ ├── HostKey.java
│ │ │ ├── HostKeyRepository.java
│ │ │ ├── IO.java
│ │ │ ├── Identity.java
│ │ │ ├── IdentityFile.java
│ │ │ ├── IdentityRepository.java
│ │ │ ├── JSch.java
│ │ │ ├── JSchAuthCancelException.java
│ │ │ ├── JSchException.java
│ │ │ ├── JSchPartialAuthException.java
│ │ │ ├── KeyExchange.java
│ │ │ ├── KeyPair.java
│ │ │ ├── KeyPairDSA.java
│ │ │ ├── KeyPairECDSA.java
│ │ │ ├── KeyPairGenDSA.java
│ │ │ ├── KeyPairGenECDSA.java
│ │ │ ├── KeyPairGenRSA.java
│ │ │ ├── KeyPairPKCS8.java
│ │ │ ├── KeyPairRSA.java
│ │ │ ├── KnownHosts.java
│ │ │ ├── LICENSE.txt
│ │ │ ├── LocalIdentityRepository.java
│ │ │ ├── Logger.java
│ │ │ ├── MAC.java
│ │ │ ├── OpenSSHConfig.java
│ │ │ ├── PBKDF.java
│ │ │ ├── Packet.java
│ │ │ ├── PortWatcher.java
│ │ │ ├── Proxy.java
│ │ │ ├── ProxyHTTP.java
│ │ │ ├── ProxySOCKS4.java
│ │ │ ├── ProxySOCKS5.java
│ │ │ ├── README
│ │ │ ├── Random.java
│ │ │ ├── Request.java
│ │ │ ├── RequestAgentForwarding.java
│ │ │ ├── RequestEnv.java
│ │ │ ├── RequestExec.java
│ │ │ ├── RequestPtyReq.java
│ │ │ ├── RequestSftp.java
│ │ │ ├── RequestShell.java
│ │ │ ├── RequestSignal.java
│ │ │ ├── RequestSubsystem.java
│ │ │ ├── RequestWindowChange.java
│ │ │ ├── RequestX11.java
│ │ │ ├── ServerSocketFactory.java
│ │ │ ├── Session.java
│ │ │ ├── SftpATTRS.java
│ │ │ ├── SftpException.java
│ │ │ ├── SftpProgressMonitor.java
│ │ │ ├── SftpStatVFS.java
│ │ │ ├── Signature.java
│ │ │ ├── SignatureDSA.java
│ │ │ ├── SignatureECDSA.java
│ │ │ ├── SignatureRSA.java
│ │ │ ├── SocketFactory.java
│ │ │ ├── UIKeyboardInteractive.java
│ │ │ ├── UserAuth.java
│ │ │ ├── UserAuthGSSAPIWithMIC.java
│ │ │ ├── UserAuthKeyboardInteractive.java
│ │ │ ├── UserAuthNone.java
│ │ │ ├── UserAuthPassword.java
│ │ │ ├── UserAuthPublicKey.java
│ │ │ ├── UserInfo.java
│ │ │ ├── Util.java
│ │ │ ├── jce/
│ │ │ │ ├── AES128CBC.java
│ │ │ │ ├── AES128CTR.java
│ │ │ │ ├── AES192CBC.java
│ │ │ │ ├── AES192CTR.java
│ │ │ │ ├── AES256CBC.java
│ │ │ │ ├── AES256CTR.java
│ │ │ │ ├── ARCFOUR.java
│ │ │ │ ├── ARCFOUR128.java
│ │ │ │ ├── ARCFOUR256.java
│ │ │ │ ├── BlowfishCBC.java
│ │ │ │ ├── DH.java
│ │ │ │ ├── ECDH256.java
│ │ │ │ ├── ECDH384.java
│ │ │ │ ├── ECDH521.java
│ │ │ │ ├── ECDHN.java
│ │ │ │ ├── HMAC.java
│ │ │ │ ├── HMACMD5.java
│ │ │ │ ├── HMACMD596.java
│ │ │ │ ├── HMACSHA1.java
│ │ │ │ ├── HMACSHA196.java
│ │ │ │ ├── HMACSHA256.java
│ │ │ │ ├── HMACSHA512.java
│ │ │ │ ├── KeyPairGenDSA.java
│ │ │ │ ├── KeyPairGenECDSA.java
│ │ │ │ ├── KeyPairGenRSA.java
│ │ │ │ ├── MD5.java
│ │ │ │ ├── PBKDF.java
│ │ │ │ ├── Random.java
│ │ │ │ ├── SHA1.java
│ │ │ │ ├── SHA256.java
│ │ │ │ ├── SHA384.java
│ │ │ │ ├── SHA512.java
│ │ │ │ ├── SignatureDSA.java
│ │ │ │ ├── SignatureECDSA.java
│ │ │ │ ├── SignatureRSA.java
│ │ │ │ ├── TripleDESCBC.java
│ │ │ │ └── TripleDESCTR.java
│ │ │ ├── jcraft/
│ │ │ │ ├── Compression.java
│ │ │ │ ├── HMAC.java
│ │ │ │ ├── HMACMD5.java
│ │ │ │ ├── HMACMD596.java
│ │ │ │ ├── HMACSHA1.java
│ │ │ │ └── HMACSHA196.java
│ │ │ └── jgss/
│ │ │ └── GSSContextKrb5.java
│ │ └── jzlib/
│ │ ├── Adler32.java
│ │ ├── CRC32.java
│ │ ├── ChangeLog
│ │ ├── Checksum.java
│ │ ├── Deflate.java
│ │ ├── Deflater.java
│ │ ├── DeflaterOutputStream.java
│ │ ├── GZIPException.java
│ │ ├── GZIPHeader.java
│ │ ├── GZIPInputStream.java
│ │ ├── GZIPOutputStream.java
│ │ ├── InfBlocks.java
│ │ ├── InfCodes.java
│ │ ├── InfTree.java
│ │ ├── Inflate.java
│ │ ├── Inflater.java
│ │ ├── InflaterInputStream.java
│ │ ├── JZlib.java
│ │ ├── LICENSE.txt
│ │ ├── README
│ │ ├── StaticTree.java
│ │ ├── Tree.java
│ │ ├── ZInputStream.java
│ │ ├── ZOutputStream.java
│ │ ├── ZStream.java
│ │ └── ZStreamException.java
│ └── tigervnc/
│ ├── network/
│ │ ├── FileDescriptor.java
│ │ ├── SSLEngineManager.java
│ │ ├── Socket.java
│ │ ├── SocketDescriptor.java
│ │ ├── SocketException.java
│ │ ├── SocketListener.java
│ │ ├── TcpListener.java
│ │ └── TcpSocket.java
│ ├── rdr/
│ │ ├── AESEAXCipher.java
│ │ ├── AESInStream.java
│ │ ├── AESOutStream.java
│ │ ├── EndOfStream.java
│ │ ├── Exception.java
│ │ ├── FdInStream.java
│ │ ├── FdInStreamBlockCallback.java
│ │ ├── FdOutStream.java
│ │ ├── InStream.java
│ │ ├── MemInStream.java
│ │ ├── MemOutStream.java
│ │ ├── OutStream.java
│ │ ├── SystemException.java
│ │ ├── TLSException.java
│ │ ├── TLSInStream.java
│ │ ├── TLSOutStream.java
│ │ ├── TimedOut.java
│ │ ├── WarningException.java
│ │ └── ZlibInStream.java
│ ├── rfb/
│ │ ├── AliasParameter.java
│ │ ├── AuthFailureException.java
│ │ ├── BoolParameter.java
│ │ ├── CConnection.java
│ │ ├── CMsgHandler.java
│ │ ├── CMsgReader.java
│ │ ├── CMsgWriter.java
│ │ ├── CSecurity.java
│ │ ├── CSecurityIdent.java
│ │ ├── CSecurityNone.java
│ │ ├── CSecurityPlain.java
│ │ ├── CSecurityRSAAES.java
│ │ ├── CSecurityStack.java
│ │ ├── CSecurityTLS.java
│ │ ├── CSecurityVeNCrypt.java
│ │ ├── CSecurityVncAuth.java
│ │ ├── Configuration.java
│ │ ├── ConnFailedException.java
│ │ ├── CopyRectDecoder.java
│ │ ├── Cursor.java
│ │ ├── DecodeManager.java
│ │ ├── Decoder.java
│ │ ├── DesCipher.java
│ │ ├── Encoder.java
│ │ ├── Encodings.java
│ │ ├── Exception.java
│ │ ├── FullFramePixelBuffer.java
│ │ ├── Hextile.java
│ │ ├── HextileDecoder.java
│ │ ├── Hostname.java
│ │ ├── IntParameter.java
│ │ ├── JpegCompressor.java
│ │ ├── JpegDecompressor.java
│ │ ├── Keysym2ucs.java
│ │ ├── Keysymdef.java
│ │ ├── LogWriter.java
│ │ ├── ManagedPixelBuffer.java
│ │ ├── ModifiablePixelBuffer.java
│ │ ├── MsgTypes.java
│ │ ├── PixelBuffer.java
│ │ ├── PixelFormat.java
│ │ ├── Point.java
│ │ ├── RREDecoder.java
│ │ ├── RawDecoder.java
│ │ ├── Rect.java
│ │ ├── Region.java
│ │ ├── Screen.java
│ │ ├── ScreenSet.java
│ │ ├── Security.java
│ │ ├── SecurityClient.java
│ │ ├── ServerParams.java
│ │ ├── StringParameter.java
│ │ ├── TightDecoder.java
│ │ ├── UserMsgBox.java
│ │ ├── UserPasswdGetter.java
│ │ ├── VncAuth.java
│ │ ├── VoidParameter.java
│ │ ├── ZRLEDecoder.java
│ │ ├── fenceTypes.java
│ │ └── screenTypes.java
│ └── vncviewer/
│ ├── CConn.java
│ ├── ClipboardDialog.java
│ ├── DesktopWindow.java
│ ├── Dialog.java
│ ├── ExtProcess.java
│ ├── FileUtils.java
│ ├── JavaPixelBuffer.java
│ ├── KeyMap.java
│ ├── LICENCE.TXT
│ ├── MANIFEST.MF
│ ├── MenuKey.java
│ ├── OptionsDialog.java
│ ├── Parameters.java
│ ├── PasswdDialog.java
│ ├── PlatformPixelBuffer.java
│ ├── README
│ ├── ServerDialog.java
│ ├── Tunnel.java
│ ├── UserDialog.java
│ ├── UserPreferences.java
│ ├── Viewport.java
│ ├── VncViewer.java
│ └── timestamp.in
├── media/
│ ├── CMakeLists.txt
│ ├── icons/
│ │ └── tigervnc.icns
│ ├── insecure.xpm
│ └── secure.xpm
├── po/
│ ├── CMakeLists.txt
│ ├── DO_NOT_EDIT
│ ├── LINGUAS
│ ├── ar.po
│ ├── bg.po
│ ├── checkaccels
│ ├── cs.po
│ ├── da.po
│ ├── de.po
│ ├── el.po
│ ├── eo.po
│ ├── es.po
│ ├── fi.po
│ ├── fr.po
│ ├── fur.po
│ ├── he.po
│ ├── hu.po
│ ├── id.po
│ ├── it.po
│ ├── ka.po
│ ├── ko.po
│ ├── nl.po
│ ├── pl.po
│ ├── pt_BR.po
│ ├── ro.po
│ ├── ru.po
│ ├── sk.po
│ ├── sr.po
│ ├── sv.po
│ ├── tigervnc.pot
│ ├── tr.po
│ ├── uk.po
│ ├── vi.po
│ ├── zh_CN.po
│ └── zh_TW.po
├── release/
│ ├── .gitignore
│ ├── CMakeLists.txt
│ ├── Info.plist.in
│ ├── makemacapp.in
│ ├── maketarball.in
│ ├── tigervnc.iss.in
│ └── winvnc.iss.in
├── tests/
│ ├── .gitignore
│ ├── CMakeLists.txt
│ ├── perf/
│ │ ├── CMakeLists.txt
│ │ ├── convperf.cxx
│ │ ├── decperf.cxx
│ │ ├── encperf.cxx
│ │ ├── fbperf.cxx
│ │ ├── results/
│ │ │ ├── multicore/
│ │ │ │ ├── README
│ │ │ │ └── multicore.ods
│ │ │ └── notrans/
│ │ │ ├── README
│ │ │ ├── armhf.csv
│ │ │ ├── i386.csv
│ │ │ └── x86_64.csv
│ │ ├── util.cxx
│ │ └── util.h
│ └── unit/
│ ├── CMakeLists.txt
│ ├── configargs.cxx
│ ├── conv.cxx
│ ├── convertlf.cxx
│ ├── emulatemb.cxx
│ ├── gesturehandler.cxx
│ ├── hostport.cxx
│ ├── parameters.cxx
│ ├── pixelformat.cxx
│ ├── shortcuthandler.cxx
│ └── unicode.cxx
├── unix/
│ ├── CMakeLists.txt
│ ├── common/
│ │ ├── CMakeLists.txt
│ │ ├── RandrGlue.h
│ │ ├── randr.cxx
│ │ └── unixcommon.h
│ ├── tx/
│ │ ├── CMakeLists.txt
│ │ ├── TXButton.h
│ │ ├── TXCheckbox.h
│ │ ├── TXDialog.h
│ │ ├── TXLabel.h
│ │ ├── TXWindow.cxx
│ │ └── TXWindow.h
│ ├── w0vncserver/
│ │ ├── CMakeLists.txt
│ │ ├── GSocketSource.cxx
│ │ ├── GSocketSource.h
│ │ ├── RFBTimerSource.cxx
│ │ ├── RFBTimerSource.h
│ │ ├── parameters.cxx
│ │ ├── parameters.h
│ │ ├── pipewire/
│ │ │ ├── PipeWirePixelBuffer.cxx
│ │ │ ├── PipeWirePixelBuffer.h
│ │ │ ├── PipeWireSource.cxx
│ │ │ ├── PipeWireSource.h
│ │ │ ├── PipeWireStream.cxx
│ │ │ └── PipeWireStream.h
│ │ ├── portals/
│ │ │ ├── Clipboard.cxx
│ │ │ ├── Clipboard.h
│ │ │ ├── PortalDesktop.cxx
│ │ │ ├── PortalDesktop.h
│ │ │ ├── PortalProxy.cxx
│ │ │ ├── PortalProxy.h
│ │ │ ├── RemoteDesktop.cxx
│ │ │ ├── RemoteDesktop.h
│ │ │ └── portalConstants.h
│ │ ├── qnum_to_xorgevdev.c
│ │ ├── w0vncserver-forget.cxx
│ │ ├── w0vncserver-forget.man
│ │ ├── w0vncserver.cxx
│ │ ├── w0vncserver.h
│ │ ├── w0vncserver.man
│ │ ├── wayland/
│ │ │ ├── GWaylandSource.cxx
│ │ │ ├── GWaylandSource.h
│ │ │ ├── WaylandDesktop.cxx
│ │ │ ├── WaylandDesktop.h
│ │ │ ├── WaylandPixelBuffer.cxx
│ │ │ ├── WaylandPixelBuffer.h
│ │ │ ├── objects/
│ │ │ │ ├── DataControl.cxx
│ │ │ │ ├── DataControl.h
│ │ │ │ ├── Display.cxx
│ │ │ │ ├── Display.h
│ │ │ │ ├── ImageCaptureSource.cxx
│ │ │ │ ├── ImageCaptureSource.h
│ │ │ │ ├── ImageCopyCaptureCursorSession.cxx
│ │ │ │ ├── ImageCopyCaptureCursorSession.h
│ │ │ │ ├── ImageCopyCaptureManager.cxx
│ │ │ │ ├── ImageCopyCaptureManager.h
│ │ │ │ ├── ImageCopyCaptureSession.cxx
│ │ │ │ ├── ImageCopyCaptureSession.h
│ │ │ │ ├── Keyboard.cxx
│ │ │ │ ├── Keyboard.h
│ │ │ │ ├── Object.cxx
│ │ │ │ ├── Object.h
│ │ │ │ ├── Output.cxx
│ │ │ │ ├── Output.h
│ │ │ │ ├── Pointer.cxx
│ │ │ │ ├── Pointer.h
│ │ │ │ ├── ScreencopyManager.cxx
│ │ │ │ ├── ScreencopyManager.h
│ │ │ │ ├── Seat.cxx
│ │ │ │ ├── Seat.h
│ │ │ │ ├── Shm.cxx
│ │ │ │ ├── Shm.h
│ │ │ │ ├── ShmPool.cxx
│ │ │ │ ├── ShmPool.h
│ │ │ │ ├── VirtualKeyboard.cxx
│ │ │ │ ├── VirtualKeyboard.h
│ │ │ │ ├── VirtualPointer.cxx
│ │ │ │ └── VirtualPointer.h
│ │ │ └── protocols/
│ │ │ ├── ext-data-control-v1.xml
│ │ │ ├── ext-foreign-toplevel-list-v1.xml
│ │ │ ├── ext-image-capture-source-v1.xml
│ │ │ ├── ext-image-copy-capture-v1.xml
│ │ │ ├── virtual-keyboard-unstable-v1.xml
│ │ │ ├── wlr-screencopy-unstable-v1.xml
│ │ │ └── wlr-virtual-pointer-unstable-v1.xml
│ │ └── xkb_to_qnum.c
│ ├── xserver/
│ │ ├── .gitignore
│ │ └── hw/
│ │ └── vnc/
│ │ ├── .gitignore
│ │ ├── Makefile.am
│ │ ├── RFBGlue.cc
│ │ ├── RFBGlue.h
│ │ ├── RandrGlue.c
│ │ ├── XorgGlue.c
│ │ ├── XorgGlue.h
│ │ ├── XserverDesktop.cc
│ │ ├── XserverDesktop.h
│ │ ├── Xvnc.man
│ │ ├── buildtime.c
│ │ ├── qnum_to_xorgevdev.c
│ │ ├── qnum_to_xorgkbd.c
│ │ ├── vncBlockHandler.c
│ │ ├── vncBlockHandler.h
│ │ ├── vncDRI3.c
│ │ ├── vncDRI3.h
│ │ ├── vncDRI3Draw.c
│ │ ├── vncExt.c
│ │ ├── vncExtInit.cc
│ │ ├── vncExtInit.h
│ │ ├── vncHooks.c
│ │ ├── vncHooks.h
│ │ ├── vncInput.c
│ │ ├── vncInput.h
│ │ ├── vncInputXKB.c
│ │ ├── vncModule.c
│ │ ├── vncPresent.c
│ │ ├── vncPresent.h
│ │ ├── vncSelection.c
│ │ ├── vncSelection.h
│ │ ├── xorg-version.h
│ │ └── xvnc.c
│ ├── xserver120.patch
│ └── xserver21.patch
└── win/
├── CMakeLists.txt
├── logmessages/
│ ├── messages.h
│ ├── messages.mc
│ └── messages.rc
├── resdefs.h.in
├── rfb_win32/
│ ├── AboutDialog.cxx
│ ├── AboutDialog.h
│ ├── BitmapInfo.h
│ ├── CMakeLists.txt
│ ├── CleanDesktop.cxx
│ ├── CleanDesktop.h
│ ├── Clipboard.cxx
│ ├── Clipboard.h
│ ├── CompatibleBitmap.h
│ ├── ComputerName.h
│ ├── CurrentUser.cxx
│ ├── CurrentUser.h
│ ├── DIBSectionBuffer.cxx
│ ├── DIBSectionBuffer.h
│ ├── DeviceContext.cxx
│ ├── DeviceContext.h
│ ├── DeviceFrameBuffer.cxx
│ ├── DeviceFrameBuffer.h
│ ├── Dialog.cxx
│ ├── Dialog.h
│ ├── EventManager.cxx
│ ├── EventManager.h
│ ├── Handle.h
│ ├── IconInfo.h
│ ├── IntervalTimer.h
│ ├── LaunchProcess.cxx
│ ├── LaunchProcess.h
│ ├── ListViewControl.cxx
│ ├── ListViewControl.h
│ ├── LocalMem.h
│ ├── ModuleFileName.h
│ ├── MonitorInfo.cxx
│ ├── MonitorInfo.h
│ ├── MsgBox.h
│ ├── MsgWindow.cxx
│ ├── MsgWindow.h
│ ├── RegConfig.cxx
│ ├── RegConfig.h
│ ├── Registry.cxx
│ ├── Registry.h
│ ├── SDisplay.cxx
│ ├── SDisplay.h
│ ├── SDisplayCorePolling.cxx
│ ├── SDisplayCorePolling.h
│ ├── SDisplayCoreWMHooks.cxx
│ ├── SDisplayCoreWMHooks.h
│ ├── SInput.cxx
│ ├── SInput.h
│ ├── Security.cxx
│ ├── Security.h
│ ├── SecurityPage.cxx
│ ├── SecurityPage.h
│ ├── Service.cxx
│ ├── Service.h
│ ├── SocketManager.cxx
│ ├── SocketManager.h
│ ├── TrayIcon.h
│ ├── TsSessions.cxx
│ ├── TsSessions.h
│ ├── WMCursor.cxx
│ ├── WMCursor.h
│ ├── WMHooks.cxx
│ ├── WMHooks.h
│ ├── WMNotifier.cxx
│ ├── WMNotifier.h
│ ├── WMPoller.cxx
│ ├── WMPoller.h
│ ├── WMShatter.cxx
│ ├── WMShatter.h
│ ├── WMWindowCopyRect.cxx
│ ├── WMWindowCopyRect.h
│ ├── Win32Util.cxx
│ ├── Win32Util.h
│ ├── keymap.h
│ └── resource.h
├── vncconfig/
│ ├── Authentication.h
│ ├── CMakeLists.txt
│ ├── Connections.h
│ ├── Desktop.h
│ ├── Hooking.h
│ ├── Inputs.h
│ ├── Legacy.cxx
│ ├── Legacy.h
│ ├── PasswordDialog.cxx
│ ├── PasswordDialog.h
│ ├── Sharing.h
│ ├── resource.h
│ ├── vncconfig.cxx
│ ├── vncconfig.exe.manifest
│ ├── vncconfig.exe.manifest64
│ └── vncconfig.rc
├── winvnc/
│ ├── AddNewClientDialog.h
│ ├── CMakeLists.txt
│ ├── ControlPanel.cxx
│ ├── ControlPanel.h
│ ├── ListConnInfo.h
│ ├── ManagedListener.cxx
│ ├── ManagedListener.h
│ ├── QueryConnectDialog.cxx
│ ├── QueryConnectDialog.h
│ ├── STrayIcon.cxx
│ ├── STrayIcon.h
│ ├── VNCServerService.cxx
│ ├── VNCServerService.h
│ ├── VNCServerWin32.cxx
│ ├── VNCServerWin32.h
│ ├── buildTime.cxx
│ ├── resource.h
│ ├── winvnc.cxx
│ ├── winvnc.rc
│ ├── winvnc4.exe.manifest
│ └── winvnc4.exe.manifest64
└── wm_hooks/
├── CMakeLists.txt
├── resource.h
├── wm_hooks.cxx
├── wm_hooks.h
└── wm_hooks.rc
================================================
FILE CONTENTS
================================================
================================================
FILE: .github/ISSUE_TEMPLATE/bug_report.md
================================================
---
name: Bug report
about: Create a report to help us improve
---
**Describe the bug**
A clear and concise description of what the bug is.
**To Reproduce**
Steps to reproduce the behavior:
1. Go to '...'
2. Click on '....'
3. Scroll down to '....'
4. See error
**Expected behavior**
A clear and concise description of what you expected to happen.
**Screenshots**
If applicable, add screenshots to help explain your problem.
**Client (please complete the following information):**
- OS: [e.g. Windows 8.1]
- VNC client: [e.g. TigerVNC, or UltraVNC]
- VNC client version: [e.g. 1.8.0]
- Client downloaded from: [e.g. my Linux distribution]
**Server (please complete the following information):**
- OS: [e.g. Windows 8.1]
- VNC server: [e.g. TigerVNC, or UltraVNC]
- VNC server version: [e.g. 1.8.0]
- Server downloaded from: [e.g. my Linux distribution]
- Server was started using: [e.g. `vncserver`]
**Additional context**
Add any other context about the problem here.
================================================
FILE: .github/ISSUE_TEMPLATE/config.yml
================================================
blank_issues_enabled: false
contact_links:
- name: Usage question or discussion
url: https://groups.google.com/forum/#!forum/tigervnc-users
about: Ask a question or start a discussion on how to use TigerVNC
- name: Development question or discussion
url: https://groups.google.com/forum/#!forum/tigervnc-devel
about: Ask a question or start a discussion about TigerVNC's code
================================================
FILE: .github/ISSUE_TEMPLATE/feature_request.md
================================================
---
name: Feature request
about: Suggest an idea for this project
---
**Is your feature request related to a problem? Please describe.**
A clear and concise description of what the problem is. Ex. I'm always frustrated when [...]
**Describe the solution you'd like**
A clear and concise description of what you want to happen.
**Describe alternatives you've considered**
A clear and concise description of any alternative solutions or features you've considered.
**Additional context**
Add any other context or screenshots about the feature request here.
================================================
FILE: .github/containers/jammy/Dockerfile
================================================
FROM ubuntu:jammy
ARG DEBIAN_FRONTEND=noninteractive
RUN apt-get update
RUN apt-get -y install packaging-dev equivs
RUN useradd -s /bin/bash -m deb
RUN echo >> /etc/sudoers
RUN echo "deb ALL=(ALL) NOPASSWD:ALL" >> /etc/sudoers
USER deb
WORKDIR /home/deb
================================================
FILE: .github/containers/jammy/build.sh
================================================
#!/bin/bash
set -e
set -x
## Basic variables
CURDIR=$(dirname $(readlink -f $0))
TOPDIR=$(git rev-parse --show-toplevel 2>/dev/null)
DEBDIR=${TOPDIR}/contrib/packages/deb/ubuntu-jammy
VERSION=$(grep '^set(VERSION ' ${TOPDIR}/CMakeLists.txt | sed 's@^set(VERSION \(.*\))@\1@')
## Prepare the build directory
rm -rf ${CURDIR}/build
mkdir -p ${CURDIR}/build
chmod a+w ${CURDIR}/build
[ -x /usr/sbin/selinuxenabled ] && /usr/sbin/selinuxenabled && chcon -Rt container_file_t ${CURDIR}/build
## Copy over the source code
(cd ${TOPDIR} && git archive --prefix tigervnc-${VERSION}/ HEAD) | xz > ${CURDIR}/build/tigervnc_${VERSION}.orig.tar.xz
## Copy over the packaging files
cp -r ${DEBDIR}/debian ${CURDIR}/build/debian
chmod a+x ${CURDIR}/build/debian/rules
# Assemble a fake changelog entry to get the correct version
cat - > ${CURDIR}/build/debian/changelog << EOT
tigervnc (${VERSION}-1ubuntu1) UNRELEASED; urgency=low
* Automated build for TigerVNC
-- Build bot <tigervncbot@tigervnc.org> $(date -R)
EOT
cat ${DEBDIR}/debian/changelog >> ${CURDIR}/build/debian/changelog
## Start the build
docker run --volume ${CURDIR}/build:/home/deb/build --interactive --rm tigervnc/${DOCKER} \
bash -e -x -c "
tar -C ~/build -axf ~/build/tigervnc_${VERSION}.orig.tar.xz
cp -a ~/build/debian ~/build/tigervnc-${VERSION}/debian
sudo apt-get update
mk-build-deps ~/build/tigervnc-${VERSION}/debian/control
sudo DEBIAN_FRONTEND=noninteractive \
apt-get install -y ~/tigervnc-build-deps_*.deb
cd ~/build/tigervnc-${VERSION} && dpkg-buildpackage
"
mkdir -p ${CURDIR}/result
cp -av ${CURDIR}/build/*.deb ${CURDIR}/result
cp -av ${CURDIR}/build/*.ddeb ${CURDIR}/result
================================================
FILE: .github/containers/noble/Dockerfile
================================================
FROM ubuntu:noble
ARG DEBIAN_FRONTEND=noninteractive
RUN apt-get update
RUN apt-get -y install packaging-dev equivs
RUN useradd -s /bin/bash -m deb
RUN echo >> /etc/sudoers
RUN echo "deb ALL=(ALL) NOPASSWD:ALL" >> /etc/sudoers
USER deb
WORKDIR /home/deb
================================================
FILE: .github/containers/noble/build.sh
================================================
#!/bin/bash
set -e
set -x
## Basic variables
CURDIR=$(dirname $(readlink -f $0))
TOPDIR=$(git rev-parse --show-toplevel 2>/dev/null)
DEBDIR=${TOPDIR}/contrib/packages/deb/ubuntu-noble
VERSION=$(grep '^set(VERSION ' ${TOPDIR}/CMakeLists.txt | sed 's@^set(VERSION \(.*\))@\1@')
## Prepare the build directory
rm -rf ${CURDIR}/build
mkdir -p ${CURDIR}/build
chmod a+w ${CURDIR}/build
[ -x /usr/sbin/selinuxenabled ] && /usr/sbin/selinuxenabled && chcon -Rt container_file_t ${CURDIR}/build
## Copy over the source code
(cd ${TOPDIR} && git archive --prefix tigervnc-${VERSION}/ HEAD) | xz > ${CURDIR}/build/tigervnc_${VERSION}.orig.tar.xz
## Copy over the packaging files
cp -r ${DEBDIR}/debian ${CURDIR}/build/debian
chmod a+x ${CURDIR}/build/debian/rules
# Assemble a fake changelog entry to get the correct version
cat - > ${CURDIR}/build/debian/changelog << EOT
tigervnc (${VERSION}-1ubuntu1) UNRELEASED; urgency=low
* Automated build for TigerVNC
-- Build bot <tigervncbot@tigervnc.org> $(date -R)
EOT
cat ${DEBDIR}/debian/changelog >> ${CURDIR}/build/debian/changelog
## Start the build
docker run --volume ${CURDIR}/build:/home/deb/build --interactive --rm tigervnc/${DOCKER} \
bash -e -x -c "
tar -C ~/build -axf ~/build/tigervnc_${VERSION}.orig.tar.xz
cp -a ~/build/debian ~/build/tigervnc-${VERSION}/debian
sudo apt-get update
mk-build-deps ~/build/tigervnc-${VERSION}/debian/control
sudo DEBIAN_FRONTEND=noninteractive \
apt-get install -y ~/tigervnc-build-deps_*.deb
cd ~/build/tigervnc-${VERSION} && dpkg-buildpackage
"
mkdir -p ${CURDIR}/result
cp -av ${CURDIR}/build/*.deb ${CURDIR}/result
cp -av ${CURDIR}/build/*.ddeb ${CURDIR}/result
================================================
FILE: .github/containers/rocky10/Dockerfile
================================================
FROM rockylinux/rockylinux:10
RUN dnf -y group install 'Development Tools'
RUN dnf -y install dnf-plugins-core sudo
RUN dnf config-manager --set-enabled crb
RUN dnf -y install epel-release
RUN useradd -s /bin/bash -m rpm
RUN echo >> /etc/sudoers
RUN echo "rpm ALL=(ALL) NOPASSWD:ALL" >> /etc/sudoers
USER rpm
WORKDIR /home/rpm
================================================
FILE: .github/containers/rocky10/build.sh
================================================
#!/bin/bash
set -e
set -x
## Basic variables
CURDIR=$(dirname $(readlink -f $0))
TOPDIR=$(git rev-parse --show-toplevel 2>/dev/null)
RPMDIR=${TOPDIR}/contrib/packages/rpm/el10
VERSION=$(grep '^set(VERSION ' ${TOPDIR}/CMakeLists.txt | sed 's@^set(VERSION \(.*\))@\1@')
## Prepare the build directory
rm -rf ${CURDIR}/rpmbuild
mkdir -p ${CURDIR}/rpmbuild/{BUILD,BUILDROOT,SRPMS,SOURCES,SPECS,RPMS}
chmod a+w ${CURDIR}/rpmbuild/{BUILD,BUILDROOT,SRPMS,RPMS}
[ -x /usr/sbin/selinuxenabled ] && /usr/sbin/selinuxenabled && chcon -Rt container_file_t ${CURDIR}/rpmbuild
## Copy over the packaging files
cp ${RPMDIR}/SOURCES/* ${CURDIR}/rpmbuild/SOURCES
cp ${RPMDIR}/SPECS/tigervnc.spec ${CURDIR}/rpmbuild/SPECS
sed -i "s/@VERSION@/${VERSION}/" ${CURDIR}/rpmbuild/SPECS/tigervnc.spec
## Copy over the source code
(cd ${TOPDIR} && git archive --prefix tigervnc-${VERSION}/ HEAD) | bzip2 > ${CURDIR}/rpmbuild/SOURCES/tigervnc-${VERSION}.tar.bz2
## Download the xorg-server source code
curl -L https://xorg.freedesktop.org/releases/individual/xserver/xorg-server-21.1.18.tar.xz > ${CURDIR}/rpmbuild/SOURCES/xorg-server-21.1.18.tar.xz
## Start the build
docker run --volume ${CURDIR}/rpmbuild:/home/rpm/rpmbuild --interactive --rm tigervnc/${DOCKER} \
bash -e -x -c "
sudo dnf builddep -y ~/rpmbuild/SPECS/tigervnc.spec
sudo chown 0.0 ~/rpmbuild/SOURCES/*
sudo chown 0.0 ~/rpmbuild/SPECS/*
rpmbuild -ba ~/rpmbuild/SPECS/tigervnc.spec
"
mkdir -p ${CURDIR}/result
cp -av ${CURDIR}/rpmbuild/RPMS ${CURDIR}/result
cp -av ${CURDIR}/rpmbuild/SRPMS ${CURDIR}/result
================================================
FILE: .github/containers/rocky8/Dockerfile
================================================
FROM rockylinux/rockylinux:8
RUN dnf -y group install 'Development Tools'
RUN dnf -y install sudo
RUN dnf -y install dnf-plugins-core
RUN dnf -y install https://dl.fedoraproject.org/pub/epel/epel-release-latest-8.noarch.rpm
RUN dnf config-manager --set-enabled powertools
RUN useradd -s /bin/bash -m rpm
RUN echo >> /etc/sudoers
RUN echo "rpm ALL=(ALL) NOPASSWD:ALL" >> /etc/sudoers
USER rpm
WORKDIR /home/rpm
================================================
FILE: .github/containers/rocky8/build.sh
================================================
#!/bin/bash
set -e
set -x
## Basic variables
CURDIR=$(dirname $(readlink -f $0))
TOPDIR=$(git rev-parse --show-toplevel 2>/dev/null)
RPMDIR=${TOPDIR}/contrib/packages/rpm/el8
VERSION=$(grep '^set(VERSION ' ${TOPDIR}/CMakeLists.txt | sed 's@^set(VERSION \(.*\))@\1@')
## Prepare the build directory
rm -rf ${CURDIR}/rpmbuild
mkdir -p ${CURDIR}/rpmbuild/{BUILD,BUILDROOT,SRPMS,SOURCES,SPECS,RPMS}
chmod a+w ${CURDIR}/rpmbuild/{BUILD,BUILDROOT,SRPMS,RPMS}
[ -x /usr/sbin/selinuxenabled ] && /usr/sbin/selinuxenabled && chcon -Rt container_file_t ${CURDIR}/rpmbuild
## Copy over the packaging files
cp ${RPMDIR}/SOURCES/* ${CURDIR}/rpmbuild/SOURCES
cp ${RPMDIR}/SPECS/tigervnc.spec ${CURDIR}/rpmbuild/SPECS
sed -i "s/@VERSION@/${VERSION}/" ${CURDIR}/rpmbuild/SPECS/tigervnc.spec
## Copy over the source code
(cd ${TOPDIR} && git archive --prefix tigervnc-${VERSION}/ HEAD) | bzip2 > ${CURDIR}/rpmbuild/SOURCES/tigervnc-${VERSION}.tar.bz2
## Start the build
docker run --volume ${CURDIR}/rpmbuild:/home/rpm/rpmbuild --interactive --rm tigervnc/${DOCKER} \
bash -e -x -c "
sudo dnf install -y xorg-x11-server-devel
sudo dnf builddep -y ~/rpmbuild/SPECS/tigervnc.spec
sudo chown 0.0 ~/rpmbuild/SOURCES/*
sudo chown 0.0 ~/rpmbuild/SPECS/*
rpmbuild -ba ~/rpmbuild/SPECS/tigervnc.spec
"
mkdir -p ${CURDIR}/result
cp -av ${CURDIR}/rpmbuild/RPMS ${CURDIR}/result
cp -av ${CURDIR}/rpmbuild/SRPMS ${CURDIR}/result
================================================
FILE: .github/containers/rocky9/Dockerfile
================================================
FROM rockylinux/rockylinux:9
RUN dnf -y group install 'Development Tools'
RUN dnf -y install dnf-plugins-core sudo
RUN dnf config-manager --set-enabled crb
RUN useradd -s /bin/bash -m rpm
RUN echo >> /etc/sudoers
RUN echo "rpm ALL=(ALL) NOPASSWD:ALL" >> /etc/sudoers
USER rpm
WORKDIR /home/rpm
================================================
FILE: .github/containers/rocky9/build.sh
================================================
#!/bin/bash
set -e
set -x
## Basic variables
CURDIR=$(dirname $(readlink -f $0))
TOPDIR=$(git rev-parse --show-toplevel 2>/dev/null)
RPMDIR=${TOPDIR}/contrib/packages/rpm/el9
VERSION=$(grep '^set(VERSION ' ${TOPDIR}/CMakeLists.txt | sed 's@^set(VERSION \(.*\))@\1@')
## Prepare the build directory
rm -rf ${CURDIR}/rpmbuild
mkdir -p ${CURDIR}/rpmbuild/{BUILD,BUILDROOT,SRPMS,SOURCES,SPECS,RPMS}
chmod a+w ${CURDIR}/rpmbuild/{BUILD,BUILDROOT,SRPMS,RPMS}
[ -x /usr/sbin/selinuxenabled ] && /usr/sbin/selinuxenabled && chcon -Rt container_file_t ${CURDIR}/rpmbuild
## Copy over the packaging files
cp ${RPMDIR}/SOURCES/* ${CURDIR}/rpmbuild/SOURCES
cp ${RPMDIR}/SPECS/tigervnc.spec ${CURDIR}/rpmbuild/SPECS
sed -i "s/@VERSION@/${VERSION}/" ${CURDIR}/rpmbuild/SPECS/tigervnc.spec
## Copy over the source code
(cd ${TOPDIR} && git archive --prefix tigervnc-${VERSION}/ HEAD) | bzip2 > ${CURDIR}/rpmbuild/SOURCES/tigervnc-${VERSION}.tar.bz2
## Start the build
docker run --volume ${CURDIR}/rpmbuild:/home/rpm/rpmbuild --interactive --rm tigervnc/${DOCKER} \
bash -e -x -c "
sudo dnf install -y xorg-x11-server-devel
sudo dnf builddep -y ~/rpmbuild/SPECS/tigervnc.spec
sudo chown 0.0 ~/rpmbuild/SOURCES/*
sudo chown 0.0 ~/rpmbuild/SPECS/*
rpmbuild -ba ~/rpmbuild/SPECS/tigervnc.spec
"
mkdir -p ${CURDIR}/result
cp -av ${CURDIR}/rpmbuild/RPMS ${CURDIR}/result
cp -av ${CURDIR}/rpmbuild/SRPMS ${CURDIR}/result
================================================
FILE: .github/workflows/build.yml
================================================
name: Build
on: [push, pull_request]
jobs:
build-linux:
runs-on: ubuntu-latest
timeout-minutes: 10
env:
VERBOSE: 1
steps:
- uses: actions/checkout@v4
- name: Install dependencies
run: |
sudo apt-get update
sudo apt-get install -y libfltk1.3-dev fluid gettext appstream
sudo apt-get install -y libpixman-1-dev libjpeg-turbo8-dev
sudo apt-get install -y libgnutls28-dev nettle-dev libgmp-dev
sudo apt-get install -y libxtst-dev libxdamage-dev libxfixes-dev libxrandr-dev libpam-dev
sudo apt-get install -y libavcodec-dev libavutil-dev libswscale-dev
sudo apt-get install -y uuid-dev libglib2.0-dev libpipewire-0.3-dev
sudo apt-get install -y libwayland-dev libxkbcommon-dev
sudo apt-get install -y libgtest-dev
- name: Configure
run: |
cmake \
-DCMAKE_BUILD_TYPE=Debug \
-DENABLE_NLS=ON \
-DENABLE_H264=ON \
-DENABLE_GNUTLS=ON \
-DENABLE_NETTLE=ON \
-DBUILD_VIEWER=ON \
-S . -B build
- name: Build
working-directory: build
run: make
- name: Install
working-directory: build
run: make tarball
- uses: actions/upload-artifact@v4
with:
name: Linux (Ubuntu)
path: build/tigervnc-*.tar.gz
- name: Test
working-directory: build
run: ctest --test-dir tests/unit/ --output-junit test-results.xml
- name: Upload test results
uses: actions/upload-artifact@v4
if: always()
with:
name: test-results-linux
path: build/tests/unit/test-results.xml
build-windows:
runs-on: windows-latest
timeout-minutes: 20
env:
VERBOSE: 1
defaults:
run:
shell: msys2 {0}
steps:
- uses: actions/checkout@v4
- uses: msys2/setup-msys2@v2
with:
update: true
- name: Install dependencies
run: |
pacman --sync --noconfirm --needed \
make mingw-w64-x86_64-toolchain mingw-w64-x86_64-cmake
pacman --sync --noconfirm --needed \
mingw-w64-x86_64-fltk1.3 mingw-w64-x86_64-libjpeg-turbo \
mingw-w64-x86_64-gnutls mingw-w64-x86_64-pixman \
mingw-w64-x86_64-nettle mingw-w64-x86_64-gmp \
mingw-w64-x86_64-gtest
- name: Configure
run: |
cmake \
-G "MSYS Makefiles" \
-DCMAKE_BUILD_TYPE=Debug \
-DENABLE_NLS=ON \
-DENABLE_H264=ON \
-DENABLE_GNUTLS=ON \
-DENABLE_NETTLE=ON \
-DBUILD_VIEWER=ON \
-S . -B build
- name: Build
working-directory: build
run: make
- name: Install
working-directory: build
env:
MSYS2_PATH_TYPE: inherit
run: make installer winvnc_installer
- uses: actions/upload-artifact@v4
with:
name: Windows
path: build/release/tigervnc*.exe
- name: Test
working-directory: build
run: ctest --test-dir tests/unit/ --output-junit test-results.xml
- name: Upload test results
uses: actions/upload-artifact@v4
if: always()
with:
name: test-results-windows
path: build/tests/unit/test-results.xml
build-macos:
runs-on: macos-latest
timeout-minutes: 20
env:
VERBOSE: 1
steps:
- uses: actions/checkout@v4
- name: Install dependencies
run: |
brew install fltk@1.3 pixman ffmpeg
brew install gnutls nettle gmp
brew install googletest
brew link fltk@1.3
- name: Configure
run: |
cmake \
-DCMAKE_BUILD_TYPE=Debug \
-DENABLE_NLS=ON \
-DENABLE_H264=ON \
-DENABLE_GNUTLS=ON \
-DENABLE_NETTLE=ON \
-DENABLE_WAYLAND=ON \
-DBUILD_VIEWER=ON \
-S . -B build
- name: Build
working-directory: build
run: make
- name: Install
working-directory: build
run: make dmg
- uses: actions/upload-artifact@v4
with:
name: macOS
path: build/release/TigerVNC-*.dmg
- name: Test
working-directory: build
run: ctest --test-dir tests/unit/ --output-junit test-results.xml
- name: Upload test results
uses: actions/upload-artifact@v4
if: always()
with:
name: test-results-macos
path: build/tests/unit/test-results.xml
build-java:
runs-on: ubuntu-latest
timeout-minutes: 5
env:
VERBOSE: 1
strategy:
matrix:
java: [ '8', '11', '17', '21' ]
steps:
- uses: actions/checkout@v4
- name: Setup java
uses: actions/setup-java@v4
with:
distribution: 'temurin'
java-version: ${{ matrix.java }}
- name: Configure
working-directory: java
run: cmake -DCMAKE_BUILD_TYPE=Debug -S . -B build
- name: Build
working-directory: java/build
run: make
- uses: actions/upload-artifact@v4
with:
name: Java (${{ matrix.java }})
path: java/build/VncViewer.jar
build-packages:
timeout-minutes: 20
strategy:
matrix:
target:
- rocky8
- rocky9
- rocky10
- jammy
- noble
fail-fast: false
runs-on: ubuntu-latest
env:
DOCKER: ${{ matrix.target }}
steps:
- uses: actions/checkout@v4
- name: Build image
run: docker build -t tigervnc/$DOCKER .github/containers/$DOCKER
- name: Build packages
run: .github/containers/$DOCKER/build.sh
- uses: actions/upload-artifact@v4
with:
name: Packages (${{ matrix.target }})
path: .github/containers/${{ matrix.target }}/result
================================================
FILE: .github/workflows/test-report.yml
================================================
name: Test report
on:
workflow_run:
workflows: ['build']
types:
- completed
jobs:
report:
runs-on: ubuntu-latest
steps:
- uses: dorny/test-reporter@v1
with:
artifact: /test-results-(.*)/
name: Unit tests ($1)
path: '*.xml'
reporter: java-junit
================================================
FILE: .gitignore
================================================
*.[ao]
*.mo
*.la
*.lo
.deps
.libs
CMakeFiles
CMakeCache.txt
Makefile
Makefile.in
config.h
cmake_install.cmake
cmake_uninstall.cmake
install_manifest.txt
================================================
FILE: BUILDING.txt
================================================
*******************************************************************************
** Building TigerVNC
*******************************************************************************
================================
Build requirements (all systems)
================================
-- CMake (http://www.cmake.org) v3.10 or later
-- gcc
Development kits for the following packages:
-- zlib
-- pixman
-- FLTK 1.3.3 or later
-- If building TLS support:
* GnuTLS 3.x
* See "Building TLS Support" below.
-- If building RSA-AES support:
* Nettle 3.0 or later
-- If building native language support (NLS):
* Gnu gettext 0.14.4 or later
* See "Building Native Language Support" below.
-- libjpeg-turbo
* "Normal" libjpegv6 is also supported, although it is not
recommended as it is much slower.
=========================
Build requirements (Unix)
=========================
-- Non-Mac platforms:
* Development kits for all standard X11 libraries
* PAM
-- If building Xvnc/libvnc.so:
* Xorg server source code, 1.20 or later
* All build requirements Xorg imposes (see its documentation)
* patch
-- If building x0vncserver with socket activation support:
* libsystemd
-- If building w0vncserver:
* GLib (Gio + GObject)
* libpipewire
* libuuuid
* libwayland-client
* libxkbcommon
-- Optional ffmpeg development kit support (libav)
* You might have to enable additional repositories for this. E.g.,
on RHEL, EPEL and RPMFusion (free + nonfree) need to be enabled.
-- If building vncpasswd with password quality check support:
* libpwquality
============================
Build requirements (Windows)
============================
-- MinGW or MinGW-w64
-- Inno Setup (needed to build the TigerVNC installer)
Inno Setup can be downloaded from http://www.jrsoftware.org/isinfo.php.
You also need the Inno Setup Preprocessor, which is available in the
Inno Setup QuickStart Pack.
Add the directory containing iscc.exe (for instance,
C:\Program Files\Inno Setup 5) to the system or user PATH environment
variable prior to building TigerVNC.
=========================
Build requirements (Java)
=========================
-- Sun/Oracle JDK 1.7 or later or OpenJDK 7 or later
-- See "Building Java support" below.
==================
Out-of-tree builds
==================
Binary objects, libraries, and executables are generated in the same directory
from which cmake was executed (the "binary directory"), and this directory need
not necessarily be the same as the TigerVNC source directory. You can create
multiple independent binary directories, in which different versions of
TigerVNC can be built from the same source tree using different compilers or
settings. In the sections below, {build_directory} refers to the binary
directory, whereas {source_directory} refers to the TigerVNC source directory.
For in-tree builds, these directories are the same.
=================
Building TigerVNC
=================
Building the TigerVNC viewer on Unix/Mac systems
------------------------------------------------
The following procedure will build the TigerVNC viewer on Linux and Unix
systems.
cd {build_directory}
cmake -G "Unix Makefiles" [additional CMake flags] {source_directory}
make
Building the TigerVNC server on Unix/Linux systems
--------------------------------------------------
Building the TigerVNC server (Xvnc) is a bit trickier. Xvnc is typically built
to use the X11 shared libraries provided with the system. The procedure for
this is system-specific, since it requires specifying such things as font
directories, but the general outline is as follows (this procedure assumes
that the viewer has already been built, per above.)
> cd {build_directory}
If performing an out-of-tree build:
> cp -R {source_directory}/unix/xserver unix/
> cp -R {xorg_source}/* unix/xserver/
(NOTE: {xorg_source} is the directory containing the Xorg source for the
machine on which you are building TigerVNC. The most recent versions of
Red Hat/CentOS/Fedora, for instance, provide an RPM called
"xorg-x11-server-source", which installs the Xorg source under
/usr/share/xorg-x11-server-source.)
> cd unix/xserver/
> patch -p1 < {source_directory}/unix/xserver{version}.patch
(where {version} matches the X server version you are building, such as
"120" for version 1.20.x.)
> autoreconf -fiv
> ./configure --with-pic --without-dtrace --disable-static --disable-dri \
--disable-xinerama --disable-xvfb --disable-xnest --disable-xorg \
--disable-dmx --disable-xwin --disable-xephyr --disable-kdrive \
--disable-config-hal --disable-config-udev --disable-dri2 --enable-glx \
--with-default-font-path="catalogue:/etc/X11/fontpath.d,built-ins" \
--with-xkb-path=/usr/share/X11/xkb \
--with-xkb-output=/var/lib/xkb \
--with-xkb-bin-directory=/usr/bin \
--with-serverconfig-path=/usr/lib64/xorg \
{additional configure options}
(NOTE: This is merely an example that works with Red Hat Enterprise/CentOS
9 and recent Fedora releases. You should customize it for your particular
system. In particular, it will be necessary to customize the XKB
directory.)
For a regular, in-tree build:
> make TIGERVNC_SRCDIR={source_directory}
If performing an out-of-tree build:
> make TIGERVNC_SRCDIR={source_directory} TIGERVNC_BUILDDIR={build_directory}
(NOTE: Use absolute paths for source_directory and build_directory)
Building the Windows TigerVNC viewer with MinGW
-----------------------------------------------
If building the Windows version of TigerVNC on a Windows build system, use
the following procedure.
cd {build_directory}
cmake -G "MSYS Makefiles" [additional CMake flags] {source_directory}
make
If cross-compiling on a Unix/Linux system, then see the "Build Recipes" section
below.
Debug build
-----------
Add "-DCMAKE_BUILD_TYPE=Debug" to the CMake command line.
Portable (semi-static) build
----------------------------
TigerVNC can under favourble circumstances be built in a way that allows
the resulting binaries to run on any system without having to also install
all the dynamic libraries it depends on. Enable this mode by adding:
-DBUILD_STATIC=1
to the CMake command line.
Note that the method used to achieve this is very fragile and it may be
necessary to tweak cmake/StaticBuild.cmake to make things work on your
specific system.
=====================
Building Java support
=====================
TigerVNC includes a Java version of the TigerVNC Viewer, which can be used on
any platform that has a Java Runtime Environment (JRE) installed. The Java
viewer works similarly to the native viewer, but with lower performance.
To build the Java TigerVNC Viewer, add
-DBUILD_JAVA=1
to the CMake or build-xorg command line. The build system will attempt to find
an installed Java Development Kit (JDK) and determine the appropriate paths for
the Java compiler (javac) and the JAR creation utility (jar). You can override
these paths by setting the Java_JAVAC_EXECUTABLE and Java_JAR_EXECUTABLE CMake
variables. You can also override the default flags that are passed to javac
by setting the JAVACFLAGS CMake variable. The build system will look for
keytool and jarsigner in the same directory as Java_JAR_EXECUTABLE. These
tools are needed to sign the JAR file, which is necessary to enable certain
functionality (such as clipboard transfers) when the Java viewer is used as an
applet.
If the Java viewer is built along with the Windows TigerVNC server (WinVNC),
then the build system will embed the Java viewer into WinVNC4.exe so that it
will automatically be served up using WinVNC's built-in HTTP server.
Similarly, if the Java viewer is built along with the Unix TigerVNC server
(Xvnc), then the build system will include the Java viewer in the server
tarball.
By default, a self-signed certificate will be generated and used to sign the
jar file. By specifying the following command line arguments to the CMake
command line, an alternate certificate may be used for signing.
-DJAVA_KEYSTORE=${keystore_location_or_url}
-DJAVA_KEYSTORE_TYPE=${keystore_type} (Default: "jks")
-DJAVA_KEY_ALIAS=${keytore_key_alias}
-DJAVA_STOREPASS=${keystore_password}
-DJAVA_KEYPASS=${keystore_entry_password}
-DJAVA_TSA_URL=${url_of_timestamping_authority}
The values of the JAVA_STOREPASS and JAVA_KEYPASS arguments may optionally be
read from file or environment variables by prefixing the value with ":env "
or ":file " (see the jarsigner documentation for more info):
export StorePass=tigervnc
export KeyPass=tigervnc
cmake \
...
-DJAVA_STOREPASS=":env StorePass"
-DJAVA_KEYPASS=":env KeyPass"
======================================
Building TLS support
======================================
TLS requires GnuTLS, which is supplied with most Linux distributions and
with MinGW for Windows and can be built from source on OS X and other
Unix variants. However, GnuTLS versions > 2.12.x && < 3.3.x should be
avoided because of potential incompatibilities during initial handshaking.
======================================
Building native language support (NLS)
======================================
NLS requires gettext, which is supplied with most Linux distributions and
with MinGW for Windows and which can easily be built from source on OS X and
other Unix variants.
===================
Installing TigerVNC
===================
You can use the build system to install TigerVNC into a directory of your
choosing. To do this, add:
-DCMAKE_INSTALL_PREFIX={install_directory}
to the CMake command line. Then, you can run 'make install' to build and
install it.
If you don't specify CMAKE_INSTALL_PREFIX, then the default is
c:\Program Files\TigerVNC on Windows and /usr/local on Unix.
=========================
Creating release packages
=========================
The following commands can be used to create various types of release packages:
Unix
----
make tarball
Create a binary tarball containing the TigerVNC viewer
macOS
-----
make dmg
Create Macintosh disk image file that contains an application bundle of the
TigerVNC viewer
Windows
-------
make installer
Create a Windows installer using Inno Setup. The installer package
(TigerVNC[64].exe) will be located under {build_directory}.
=============
Build recipes
=============
MinGW build on Cygwin
---------------------
cd {build_directory}
CC=/usr/bin/x86_64-w64-mingw32-gcc CXX=/usr/bin/x86_64-w64-mingw32-g++ \
RC=/usr/bin/x86_64-w64-mingw32-windres \
cmake -G "Unix Makefiles" -DCMAKE_SYSTEM_NAME=Windows \
-DCMAKE_AR=/usr/bin/x86_64-w64-mingw32-ar \
-DCMAKE_RANLIB=/usr/bin/x86_64-w64-mingw32-ranlib {source_directory}
make
This produces a build of TigerVNC that does not depend on cygwin1.dll or
other Cygwin DLL's. The mingw64-x86_64-gcc-core and mingw64-x86_64-gcc-g++
packages (and their dependencies) must be installed.
MinGW-w64 build on Windows
--------------------------
This produces a build of TigerVNC using the "native" MinGW-w64 toolchain
(which is faster than the Cygwin version):
cd {build_directory}
CC={mingw-w64_binary_path}/x86_64-w64-mingw32-gcc \
CXX={mingw-w64_binary_path}/x86_64-w64-mingw32-g++ \
RC={mingw-w64_binary_path}/x86_64-w64-mingw32-windres \
cmake -G "MSYS Makefiles" \
-DCMAKE_AR={mingw-w64_binary_path}/x86_64-w64-mingw32-ar \
-DCMAKE_RANLIB={mingw-w64_binary_path}/x86_64-w64-mingw32-ranlib \
{source_directory}
make
MinGW build on Linux
--------------------
cd {build_directory}
CC={mingw_binary_path}/x86_64-w64-mingw32-gcc \
CXX={mingw_binary_path}/x86_64-w64-mingw32-g++ \
RC={mingw_binary_path}/x86_64-w64-mingw32-windres \
cmake -G "Unix Makefiles" -DCMAKE_SYSTEM_NAME=Windows \
-DCMAKE_AR={mingw_binary_path}/x86_64-w64-mingw32-ar \
-DCMAKE_RANLIB={mingw_binary_path}/x86_64-w64-mingw32-ranlib \
{source_directory}
make
===============================
Distribution-specific packaging
===============================
Configuration for building packages for current versions of RHEL/CentOS
and Ubuntu LTS can be found under contrib/packages.
================================================
FILE: CMakeLists.txt
================================================
#
# Setup
#
cmake_minimum_required(VERSION 3.10.0)
# Internal cmake modules
set(CMAKE_MODULE_PATH ${CMAKE_SOURCE_DIR}/cmake/Modules)
include(CheckIncludeFiles)
include(CheckFunctionExists)
include(CheckLibraryExists)
include(CheckVariableExists)
include(CheckTypeSize)
include(CheckCSourceCompiles)
include(CheckCXXSourceCompiles)
include(CheckCSourceRuns)
include(CMakeMacroLibtoolFile)
project(tigervnc)
set(VERSION 1.16.80)
# The RC version must always be four comma-separated numbers
string(REPLACE . , RCVERSION "${VERSION}.0")
# Installation paths
include(GNUInstallDirs)
set(CMAKE_INSTALL_UNITDIR "lib/systemd/system" CACHE PATH "systemd unit files (lib/systemd/system)")
if(IS_ABSOLUTE "${CMAKE_INSTALL_UNITDIR}")
set(CMAKE_INSTALL_FULL_UNITDIR "${CMAKE_INSTALL_UNITDIR}")
else()
set(CMAKE_INSTALL_FULL_UNITDIR "${CMAKE_INSTALL_PREFIX}/${CMAKE_INSTALL_UNITDIR}")
endif()
option(INSTALL_SYSTEMD_UNITS "Install TigerVNC systemd units" ON)
if(MSVC)
message(FATAL_ERROR "TigerVNC cannot be built with Visual Studio. Please use MinGW")
endif()
if(NOT BUILD_TIMESTAMP)
STRING(TIMESTAMP BUILD_TIMESTAMP "%Y-%m-%d %H:%M" UTC)
endif()
# Default to optimised builds instead of debug ones. Our code has no bugs ;)
# (CMake makes it fairly easy to toggle this back to Debug if needed)
if(NOT CMAKE_BUILD_TYPE)
set(CMAKE_BUILD_TYPE Release)
endif()
message(STATUS "CMAKE_BUILD_TYPE = ${CMAKE_BUILD_TYPE}")
message(STATUS "VERSION = ${VERSION}")
message(STATUS "BUILD_TIMESTAMP = ${BUILD_TIMESTAMP}")
add_definitions(-DBUILD_TIMESTAMP="${BUILD_TIMESTAMP}")
# We want to keep our asserts even in release builds so remove NDEBUG
set(CMAKE_C_FLAGS_RELEASE "${CMAKE_C_FLAGS_RELEASE} -UNDEBUG")
set(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} -UNDEBUG")
set(CMAKE_C_FLAGS_RELWITHDEBINFO "${CMAKE_C_FLAGS_RELWITHDEBINFO} -UNDEBUG")
set(CMAKE_CXX_FLAGS_RELWITHDEBINFO "${CMAKE_CXX_FLAGS_RELWITHDEBINFO} -UNDEBUG")
set(CMAKE_C_FLAGS_MINSIZEREL "${CMAKE_C_FLAGS_MINSIZEREL} -UNDEBUG")
set(CMAKE_CXX_FLAGS_MINSIZEREL "${CMAKE_CXX_FLAGS_MINSIZEREL} -UNDEBUG")
# But extra debug checks are still gated by this custom define
set(CMAKE_C_FLAGS_DEBUG "${CMAKE_C_FLAGS_DEBUG} -D_DEBUG")
set(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} -D_DEBUG")
# Enable debug friendly optimizations for debug builds
set(CMAKE_C_FLAGS_DEBUG "${CMAKE_C_FLAGS_DEBUG} -Og")
set(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} -Og")
# Make sure we get a sane C and C++ version
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -std=gnu99")
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=gnu++11")
# Tell the compiler to be stringent
add_compile_definitions(_FORTIFY_SOURCE=2)
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wall -Wextra -Wformat=2 -Wvla")
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wall -Wextra -Wformat=2 -Wvla")
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wzero-as-null-pointer-constant")
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wsuggest-override")
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wshadow")
# Make sure we catch these issues whilst developing
set(CMAKE_C_FLAGS_DEBUG "${CMAKE_C_FLAGS_DEBUG} -Werror")
set(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} -Werror")
# clang doesn't support format_arg, which breaks this warning
if (CMAKE_CXX_COMPILER_ID MATCHES "Clang")
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wno-format-nonliteral -Wno-format-security")
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wno-format-nonliteral -Wno-format-security")
endif()
option(ENABLE_ASAN "Enable address sanitizer support" OFF)
if(ENABLE_ASAN AND NOT WIN32 AND NOT APPLE)
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -fsanitize=address")
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fsanitize=address")
endif()
option(ENABLE_TSAN "Enable thread sanitizer support" OFF)
if(ENABLE_TSAN AND NOT WIN32 AND NOT APPLE AND CMAKE_SIZEOF_VOID_P MATCHES 8)
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -fsanitize=thread")
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fsanitize=thread")
endif()
if(MSVC)
# undef min and max macro
target_compile_definitions(rfb PRIVATE NOMINMAX)
endif()
if(NOT DEFINED BUILD_WINVNC)
set(BUILD_WINVNC 1)
endif()
# libstdc++ doesn't implicitly include this, although it is very much
# required when using any of the C++ threading features (at least on
# systems where pthread is a separate library, e.g. glibc < 2.34)
if(UNIX)
link_libraries(pthread)
endif()
# Minimum version is Windows 7
if(WIN32)
add_definitions(-D_WIN32_WINNT=0x0601)
endif()
# Legacy macros (macOS 10.12 and older) conflict with our code
if(APPLE)
add_definitions(-D__ASSERT_MACROS_DEFINE_VERSIONS_WITHOUT_UNDERSCORES=0)
endif()
#### Check for required and optional libraries ####
macro(trioption VAR DESC)
set(${VAR} AUTO CACHE STRING "${DESC}")
set_property(CACHE ${VAR} PROPERTY STRINGS AUTO ON OFF)
endmacro()
# X11 stuff. It's in a if() so that we can say REQUIRED
if(UNIX AND NOT APPLE)
find_package(X11 REQUIRED)
if(X11_Xdamage_LIB)
add_definitions(-DHAVE_XDAMAGE)
endif()
if(X11_Xfixes_LIB)
add_definitions(-DHAVE_XFIXES)
endif()
if(X11_Xrandr_LIB)
add_definitions(-DHAVE_XRANDR)
endif()
if(X11_XTest_LIB)
add_definitions(-DHAVE_XTEST)
endif()
endif()
# Check for zlib
find_package(ZLIB REQUIRED)
# Check for pixman
find_package(Pixman REQUIRED)
# Check for gettext
trioption(ENABLE_NLS "Enable translation of program messages")
if(ENABLE_NLS)
# Tools
if(ENABLE_NLS STREQUAL "AUTO")
find_package(Gettext)
else()
find_package(Gettext REQUIRED)
endif()
# Runtime library
if(ENABLE_NLS STREQUAL "AUTO")
find_package(Intl)
else()
find_package(Intl REQUIRED)
endif()
if(NOT GETTEXT_FOUND OR NOT INTL_FOUND)
message(WARNING "Gettext NOT found. Native Language Support disabled.")
set(ENABLE_NLS 0)
endif()
endif()
trioption(ENABLE_H264 "Enable H.264 RFB encoding")
if(ENABLE_H264)
if(WIN32)
add_definitions("-DHAVE_H264")
set(H264_LIBS "WIN") # may be LIBAV in the future
set(H264_LIBRARIES ole32 mfplat mfuuid wmcodecdspuuid)
set(CMAKE_REQUIRED_LIBRARIES ${H264_LIBRARIES})
check_variable_exists(CLSID_VideoProcessorMFT HAVE_VIDEO_PROCESSOR_MFT)
set(CMAKE_REQUIRED_LIBRARIES)
if(HAVE_VIDEO_PROCESSOR_MFT)
add_definitions("-DHAVE_VIDEO_PROCESSOR_MFT")
endif()
else()
if(ENABLE_H264 STREQUAL "AUTO")
find_package(AVCodec)
find_package(AVUtil)
find_package(SWScale)
else()
find_package(AVCodec REQUIRED)
find_package(AVUtil REQUIRED)
find_package(SWScale REQUIRED)
endif()
if (AVCODEC_FOUND AND AVUTIL_FOUND AND SWSCALE_FOUND)
set(H264_INCLUDE_DIRS ${AVCODEC_INCLUDE_DIRS} ${AVUTIL_INCLUDE_DIRS} ${SWSCALE_INCLUDE_DIRS})
set(H264_LIBRARIES ${AVCODEC_LIBRARIES} ${AVUTIL_LIBRARIES} ${SWSCALE_LIBRARIES})
add_definitions("-D__STDC_CONSTANT_MACROS")
add_definitions("-DHAVE_H264")
set(H264_LIBS "LIBAV")
else()
set(H264_LIBS "NONE")
message(WARNING "FFMPEG support can't be found")
endif()
endif()
add_definitions("-DH264_${H264_LIBS}")
endif()
# Check for libjpeg
find_package(JPEG REQUIRED)
# Warn if it doesn't seem to be the accelerated libjpeg that's found
set(CMAKE_REQUIRED_LIBRARIES ${JPEG_LIBRARIES})
set(CMAKE_REQUIRED_FLAGS -I${JPEG_INCLUDE_DIR})
set(JPEG_TEST_SOURCE "\n
#include <stdio.h>\n
#include <jpeglib.h>\n
int main(void) {\n
struct jpeg_compress_struct cinfo;\n
struct jpeg_error_mgr jerr;\n
cinfo.err=jpeg_std_error(&jerr);\n
jpeg_create_compress(&cinfo);\n
cinfo.input_components = 3;\n
jpeg_set_defaults(&cinfo);\n
cinfo.in_color_space = JCS_EXT_RGB;\n
jpeg_default_colorspace(&cinfo);\n
return 0;\n
}")
if(CMAKE_CROSSCOMPILING)
check_c_source_compiles("${JPEG_TEST_SOURCE}" FOUND_LIBJPEG_TURBO)
else()
check_c_source_runs("${JPEG_TEST_SOURCE}" FOUND_LIBJPEG_TURBO)
endif()
set(CMAKE_REQUIRED_LIBRARIES)
set(CMAKE_REQUIRED_FLAGS)
set(CMAKE_REQUIRED_DEFINITIONS)
if(NOT FOUND_LIBJPEG_TURBO)
message(STATUS "Warning: You are not using libjpeg-turbo. Performance will suffer.")
endif()
option(BUILD_JAVA "Build Java version of the TigerVNC Viewer" FALSE)
if(BUILD_JAVA)
add_subdirectory(java)
endif()
trioption(BUILD_VIEWER "Build TigerVNC viewer")
if(BUILD_VIEWER)
# Check for FLTK
set(FLTK_SKIP_FLUID TRUE)
set(FLTK_SKIP_OPENGL TRUE)
set(FLTK_SKIP_FORMS TRUE)
if(BUILD_VIEWER STREQUAL "AUTO")
find_package(FLTK)
else()
find_package(FLTK REQUIRED)
endif()
if(NOT FLTK_FOUND)
message(WARNING "FLTK NOT found. TigerVNC viewer disabled.")
set(BUILD_VIEWER 0)
endif()
if(UNIX AND NOT APPLE)
# No proper handling for extra X11 libs that FLTK might need...
if(X11_Xft_FOUND)
# Xft headers include references to fontconfig, so we need
# to link to that as well
find_library(FONTCONFIG_LIB fontconfig)
set(FLTK_LIBRARIES ${FLTK_LIBRARIES} ${X11_Xft_LIB} ${FONTCONFIG_LIB})
endif()
if(X11_Xinerama_FOUND)
set(FLTK_LIBRARIES ${FLTK_LIBRARIES} ${X11_Xinerama_LIB})
endif()
if(X11_Xfixes_FOUND)
set(FLTK_LIBRARIES ${FLTK_LIBRARIES} ${X11_Xfixes_LIB})
endif()
if(X11_Xcursor_FOUND)
set(FLTK_LIBRARIES ${FLTK_LIBRARIES} ${X11_Xcursor_LIB})
endif()
if(X11_Xrender_FOUND)
set(FLTK_LIBRARIES ${FLTK_LIBRARIES} ${X11_Xrender_LIB})
endif()
endif()
if(FLTK_FOUND)
set(CMAKE_REQUIRED_FLAGS "-Wno-error")
set(CMAKE_REQUIRED_INCLUDES ${FLTK_INCLUDE_DIR})
set(CMAKE_REQUIRED_LIBRARIES ${FLTK_LIBRARIES})
check_cxx_source_compiles("#include <FL/Fl.H>\n#if FL_MAJOR_VERSION != 1 || FL_MINOR_VERSION != 3\n#error Wrong FLTK version\n#endif\nint main(int, char**) { return 0; }" OK_FLTK_VERSION)
if(NOT OK_FLTK_VERSION)
message(FATAL_ERROR "Incompatible version of FLTK")
endif()
set(CMAKE_REQUIRED_FLAGS)
set(CMAKE_REQUIRED_INCLUDES)
set(CMAKE_REQUIRED_LIBRARIES)
endif()
endif()
# Check for GNUTLS library
trioption(ENABLE_GNUTLS "Enable protocol encryption and advanced authentication")
if(ENABLE_GNUTLS)
if(ENABLE_GNUTLS STREQUAL "AUTO")
find_package(GnuTLS)
else()
find_package(GnuTLS REQUIRED)
endif()
if (GNUTLS_FOUND)
add_definitions("-DHAVE_GNUTLS")
endif()
endif()
trioption(ENABLE_NETTLE "Enable RSA-AES security types")
if (ENABLE_NETTLE)
if(ENABLE_NETTLE STREQUAL "AUTO")
find_package(Nettle)
else()
find_package(Nettle REQUIRED)
endif()
if (NETTLE_FOUND)
add_definitions("-DHAVE_NETTLE")
endif()
endif()
# Check for PAM library
if(UNIX AND NOT APPLE)
find_package(PAM REQUIRED)
endif()
# Check for SELinux library
if(UNIX AND NOT APPLE)
trioption(ENABLE_SELINUX "Enable SELinux support")
if(ENABLE_SELINUX)
if(ENABLE_SELINUX STREQUAL "AUTO")
find_package(SELinux)
else()
find_package(SELinux REQUIRED)
endif()
if(SELINUX_FOUND)
add_definitions("-DHAVE_SELINUX")
endif()
endif()
endif()
# check for systemd support (socket activation)
if(UNIX AND NOT APPLE)
trioption(ENABLE_SYSTEMD "Enable systemd support")
if(ENABLE_SYSTEMD)
if(ENABLE_SYSTEMD STREQUAL "AUTO")
find_package(Systemd)
else()
find_package(Systemd REQUIRED)
endif()
if (SYSTEMD_FOUND)
add_definitions(-DHAVE_LIBSYSTEMD)
endif()
endif()
endif()
# check for password pwquality check support
if(UNIX AND NOT APPLE)
trioption(ENABLE_PWQUALITY "Enable password pwquality check")
if(ENABLE_PWQUALITY)
if(ENABLE_PWQUALITY STREQUAL "AUTO")
find_package(PWQuality)
else()
find_package(PWQuality REQUIRED)
endif()
if(PWQUALITY_FOUND)
add_definitions(-DHAVE_PWQUALITY)
endif()
endif()
endif()
# check for libraries needed for wayland support
if(UNIX AND NOT APPLE)
trioption(ENABLE_WAYLAND "Enable wayland support")
if(ENABLE_WAYLAND)
if(ENABLE_WAYLAND STREQUAL "AUTO")
find_package(GLib)
find_package(Gio)
find_package(Gobject)
# Portals specific
find_package(PipeWire)
find_package(Uuid)
# wlroots specific
find_package(WaylandClient)
find_package(Xkbcommon)
else()
find_package(GLib REQUIRED)
find_package(Gio REQUIRED)
find_package(Gobject REQUIRED)
# Portals specific
find_package(PipeWire REQUIRED)
find_package(Uuid REQUIRED)
# wlroots specific
find_package(WaylandClient REQUIRED)
find_package(Xkbcommon REQUIRED)
endif()
if(NOT GLIB_FOUND OR NOT GIO_FOUND OR NOT GOBJECT_FOUND OR NOT PIPEWIRE_FOUND
OR NOT UUID_FOUND OR NOT WAYLANDCLIENT_FOUND OR NOT XKBCOMMON_FOUND)
set(ENABLE_WAYLAND 0)
message(WARNING "GLib, Gio, Gobject, PipeWire, Uuid, WaylandClient or Xkbcommon NOT found. w0vncserver disabled.")
endif()
endif()
endif()
find_package(GTest)
# Generate config.h and make sure the source finds it
configure_file(config.h.in config.h)
add_definitions(-DHAVE_CONFIG_H)
include_directories(${CMAKE_BINARY_DIR})
include(cmake/StaticBuild.cmake)
add_subdirectory(common)
if(WIN32)
add_subdirectory(win)
else()
# No interest in building x related parts on Apple
if(NOT APPLE)
add_subdirectory(unix)
endif()
endif()
if(ENABLE_NLS)
add_subdirectory(po)
endif()
if(BUILD_VIEWER)
add_subdirectory(vncviewer)
add_subdirectory(media)
endif()
add_subdirectory(tests)
if(BUILD_VIEWER)
add_subdirectory(release)
endif()
# uninstall
configure_file("${CMAKE_SOURCE_DIR}/cmake/cmake_uninstall.cmake.in"
"cmake_uninstall.cmake" IMMEDIATE @ONLY)
add_custom_target(uninstall COMMAND ${CMAKE_COMMAND} -P cmake_uninstall.cmake)
libtool_generate_control_files()
================================================
FILE: LICENCE.TXT
================================================
GNU GENERAL PUBLIC LICENSE
Version 2, June 1991
Copyright (C) 1989, 1991 Free Software Foundation, Inc.
59 Temple Place - Suite 330, Boston, MA 02111-1307, 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 Library 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
Appendix: 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) 19yy <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., 59 Temple Place - Suite 330, Boston, MA 02111-1307,
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) 19yy 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 Library General
Public License instead of this License.
================================================
FILE: README.rst
================================================
About TigerVNC
==============
Virtual Network Computing (VNC) is a remote display system which allows you to
view and interact with a virtual desktop environment that is running on another
computer on the network. Using VNC, you can run graphical applications on a
remote machine and send only the display from these applications to your local
machine. VNC is platform-independent and supports a wide variety of operating
systems and architectures as both servers and clients.
TigerVNC is a high-speed version of VNC based on the RealVNC 4 and X.org code
bases. TigerVNC started as a next-generation development effort for TightVNC
on Unix and Linux platforms, but it split from its parent project in early 2009
so that TightVNC could focus on Windows platforms. TigerVNC supports a variant
of Tight encoding that is greatly accelerated by the use of the libjpeg-turbo
JPEG codec.
Legal
=====
Incomplete and generally out of date copyright list::
Copyright (C) 1999 AT&T Laboratories Cambridge
Copyright (C) 2002-2005 RealVNC Ltd.
Copyright (C) 2000-2006 TightVNC Group
Copyright (C) 2005-2006 Martin Koegler
Copyright (C) 2005-2006 Sun Microsystems, Inc.
Copyright (C) 2006 OCCAM Financial Technology
Copyright (C) 2000-2008 Constantin Kaplinsky
Copyright (C) 2004-2017 Peter Astrand for Cendio AB
Copyright (C) 2010 Antoine Martin
Copyright (C) 2010 m-privacy GmbH
Copyright (C) 2009-2011 D. R. Commander
Copyright (C) 2009-2011 Pierre Ossman for Cendio AB
Copyright (C) 2004, 2009-2011 Red Hat, Inc.
Copyright (C) 2009-2026 TigerVNC team
All Rights Reserved.
This software is distributed under the GNU General Public Licence as published
by the Free Software Foundation. See the file LICENCE.TXT for the conditions
under which this software is made available. TigerVNC also contains code from
other sources. See the Acknowledgements section below, and the individual
source files, for details of the conditions under which they are made
available.
All Platforms
=============
All versions of TigerVNC contain the following programs:
* vncviewer - the cross-platform TigerVNC Viewer, written using FLTK.
vncviewer connects to a VNC server and allows you to interact
with the remote desktop being displayed by the VNC server. The
VNC server can be running on a Windows or a Unix/Linux machine.
Windows-specific
================
The Windows version of TigerVNC contains the following programs:
* winvnc - the TigerVNC server for Windows. winvnc allows a Windows desktop to
be accessed remotely using a VNC viewer.
WARNING: winvnc is currently unmaintained and and may not function correctly.
winvnc may not work if the Fast user switching or Remote desktop features are
in use.
Unix/Linux-specific (not Mac)
=============================
The Unix/Linux version of TigerVNC contains the following programs:
* Xvnc - the TigerVNC server for Unix. Xvnc is both a VNC server and an X
server with a "virtual" framebuffer. You should normally use the
vncserver service to start Xvnc.
* vncpasswd - a program which allows you to change the VNC password used to
access your VNC server sessions (assuming that VNC authentication
is being used.) This command must be run to set a password before
using VNC authentication with any of the servers or services.
* vncconfig - a program which is used to configure and control a running
instance of Xvnc.
* x0vncserver - an inefficient VNC server which continuously polls any X
display, allowing it to be controlled via VNC. It is intended
mainly as a demonstration of a simple VNC server.
* w0vncserver - a VNC server for Wayland compositors which gives control
over your local Wayland session.
It also contains the following systemd service:
* vncserver@.service - a service to start a user session with Xvnc and one of
the desktop environments available on the system.
ACKNOWLEDGEMENTS
================
This distribution contains public domain DES software by Richard Outerbridge.
This is:
Copyright (c) 1988,1989,1990,1991,1992 by Richard Outerbridge.
(GEnie : OUTER; CIS : [71755,204]) Graven Imagery, 1992.
This distribution contains software from the X Window System. This is:
Copyright 1987, 1988, 1998 The Open Group
Permission to use, copy, modify, distribute, and sell this software and its
documentation for any purpose is hereby granted without fee, provided that
the above copyright notice appear in all copies and that both that
copyright notice and this permission notice appear in supporting
documentation.
The above copyright notice and this permission notice shall be included in
all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
Except as contained in this notice, the name of The Open Group shall not be
used in advertising or otherwise to promote the sale, use or other dealings
in this Software without prior written authorization from The Open Group.
Copyright 1987, 1988 by Digital Equipment Corporation, Maynard, Massachusetts.
All Rights Reserved
Permission to use, copy, modify, and distribute this software and its
documentation for any purpose and without fee is hereby granted,
provided that the above copyright notice appear in all copies and that
both that copyright notice and this permission notice appear in
supporting documentation, and that the name of Digital not be
used in advertising or publicity pertaining to distribution of the
software without specific, written prior permission.
DIGITAL DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING
ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL
DIGITAL BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR
ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION,
ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS
SOFTWARE.
================================================
FILE: cmake/Modules/CMakeMacroLibtoolFile.cmake
================================================
# FIXME: Since we cannot require CMake 3.17, we cannot used deferred
# functions, and hence we have to do something similar manually
set_property(GLOBAL PROPERTY LIBTOOL_TARGETS "")
function(libtool_create_control_file target)
set_property(GLOBAL APPEND PROPERTY LIBTOOL_TARGETS ${target})
endfunction()
function(libtool_generate_control_files)
get_property(LIBTOOL_TARGETS GLOBAL PROPERTY LIBTOOL_TARGETS)
foreach(target ${LIBTOOL_TARGETS})
libtool_generate_control_file(${target})
endforeach()
endfunction()
function(libtool_generate_control_file _target)
get_target_property(_target_type ${_target} TYPE)
message("-- Creating static libtool control file for target ${_target}")
# No support for shared libraries, as TigerVNC only needs libtool config
# files for static libraries.
if("${_target_type}" MATCHES "^[^STATIC_LIBRARY]$")
message(FATAL_ERROR " - trying to use libtool_create_control_file for non-static library target.")
endif()
#
# Parse the INTERFACE_LINK_LIBRARIES property to determine which
# libraries to put into libtool control file as library dependencies,
# and handle a few corner cases.
#
# First we need to split up any internal entries
set(target_libs "")
get_property(_target_libs TARGET ${_target}
PROPERTY INTERFACE_LINK_LIBRARIES)
foreach(library ${_target_libs})
if("${library}" MATCHES " ")
string(REPLACE " " ";" lib_list "${library}")
list(APPEND target_libs ${lib_list})
else()
list(APPEND target_libs "${library}")
endif()
endforeach()
set(STATIC_MODE OFF)
set(FRAMEWORK OFF)
get_property(LIBRARY_PATHS TARGET ${_target}
PROPERTY INTERFACE_LINK_DIRECTORIES)
foreach(library ${target_libs})
if(FRAMEWORK)
set(_target_dependency_libs "${_target_dependency_libs} -framework ${library}")
set(FRAMEWORK OFF)
continue()
elseif(${library} STREQUAL "-framework")
set(FRAMEWORK ON)
continue()
# Assume all entries are shared libs if platform-specific static library
# extension is not matched.
elseif(NOT "${library}" MATCHES ".+${CMAKE_STATIC_LIBRARY_SUFFIX}$")
set(SHARED OFF)
foreach(suffix ${CMAKE_SHARED_LIBRARY_SUFFIX} ${CMAKE_EXTRA_SHARED_LIBRARY_SUFFIXES})
if("${library}" MATCHES ".+${suffix}$")
set(SHARED ON)
break()
endif()
endforeach()
if(SHARED)
# Shared library extension matched, so extract the path and library
# name, then add the result to the libtool dependency libs. This
# will always be an absolute path, because that's what CMake uses
# internally.
get_filename_component(_shared_lib ${library} NAME_WE)
get_filename_component(_shared_lib_path ${library} PATH)
string(REPLACE "lib" "" _shared_lib ${_shared_lib})
set(_target_dependency_libs "${_target_dependency_libs} -L${_shared_lib_path} -l${_shared_lib}")
else()
# No shared library extension matched. Check whether target is a CMake
# target.
if(TARGET ${library})
# Target is a CMake target, so assume it is a static library and
# build a reference to it
get_target_property(library_path ${library} BINARY_DIR)
set(library ${library_path}/${CMAKE_STATIC_LIBRARY_PREFIX}${library}.la)
set(_target_dependency_libs "${_target_dependency_libs} ${library}")
elseif(${library} STREQUAL "-Wl,-Bstatic")
# All following libraries should be static
set(STATIC_MODE ON)
elseif(${library} STREQUAL "-Wl,-Bdynamic")
# All following libraries should be dynamic
set(STATIC_MODE OFF)
elseif(${library} MATCHES "^${CMAKE_LIBRARY_PATH_FLAG}")
# Library search path
string(REPLACE ${CMAKE_LIBRARY_PATH_FLAG} "" library ${library})
list(APPEND LIBRARY_PATHS ${library})
else()
# Normal library, so use find_library() to attempt to locate the
# library in a system directory.
# Need to remove -l prefix
if(${library} MATCHES "^${CMAKE_LINK_LIBRARY_FLAG}")
string(REPLACE ${CMAKE_LINK_LIBRARY_FLAG} "" library ${library})
endif()
if(STATIC_MODE)
set(_library ${CMAKE_STATIC_LIBRARY_PREFIX}${library}${CMAKE_STATIC_LIBRARY_SUFFIX})
find_library(FL ${_library} PATHS ${LIBRARY_PATHS})
endif()
if(NOT FL)
find_library(FL ${library} PATHS ${LIBRARY_PATHS})
endif()
if(FL)
# Found library. Depending on if it's static or not we might
# extract the path and library name, then add the
# result to the libtool dependency libs.
if("${FL}" MATCHES ".+${CMAKE_STATIC_LIBRARY_SUFFIX}$")
set(_target_dependency_libs "${_target_dependency_libs} ${FL}")
else()
get_filename_component(_shared_lib ${FL} NAME_WE)
get_filename_component(_shared_lib_path ${FL} PATH)
string(REPLACE "lib" "" _shared_lib ${_shared_lib})
set(_target_dependency_libs "${_target_dependency_libs} -L${_shared_lib_path} -l${_shared_lib}")
endif()
else()
message(FATAL_ERROR " - could not find library ${library}")
endif()
# Need to clear FL to get new results next loop
unset(FL CACHE)
endif()
endif()
else()
# Detected a static library. Check whether the library pathname is
# absolute and, if not, use find_library() to get the absolute path.
get_filename_component(_name ${library} NAME)
string(REPLACE "${_name}" "" _path ${library})
if(NOT "${_path}" STREQUAL "")
# Pathname is absolute, so add it to the libtool library dependencies
# as-is.
set(_target_dependency_libs "${_target_dependency_libs} ${library}")
else()
# Pathname is not absolute, so use find_library() to get the absolute
# path.
find_library(FL ${library})
if(FL)
# Absolute pathname found. Add it.
set(_target_dependency_libs "${_target_dependency_libs} ${FL}")
else()
message(FATAL_ERROR " - could not find library ${library}")
endif()
# Need to clear FL to get new results next loop
unset(FL CACHE)
endif()
endif()
endforeach()
get_target_property(_binary_dir ${_target} BINARY_DIR)
# Write the libtool control file for the static library
set(_lname ${CMAKE_STATIC_LIBRARY_PREFIX}${_target})
set(_laname ${_binary_dir}/${_lname}.la)
file(WRITE ${_laname} "# ${_lname}.la - a libtool library file\n# Generated by ltmain.sh (GNU libtool) 2.2.6b\n")
file(APPEND ${_laname} "dlname=''\n\n")
file(APPEND ${_laname} "library_names=''\n\n")
file(APPEND ${_laname} "old_library='${_lname}${CMAKE_STATIC_LIBRARY_SUFFIX}'\n\n")
file(APPEND ${_laname} "inherited_linker_flags=''\n\n")
file(APPEND ${_laname} "dependency_libs=' ${_target_dependency_libs}'\n\n")
file(APPEND ${_laname} "weak_library_names=''\n\n")
file(APPEND ${_laname} "current=\n")
file(APPEND ${_laname} "age=\n")
file(APPEND ${_laname} "revision=\n\n")
file(APPEND ${_laname} "installed=no\n\n")
file(APPEND ${_laname} "shouldnotlink=no\n\n")
file(APPEND ${_laname} "dlopen=''\n")
file(APPEND ${_laname} "dlpreopen=''\n\n")
file(APPEND ${_laname} "libdir='/usr/lib'\n\n")
# Make sure the timestamp is updated to trigger other make invocations
set(_lamarker ${_binary_dir}/.${_lname}.la.fresh)
add_custom_command(OUTPUT "${_lamarker}" DEPENDS ${_target}
COMMENT "Updating timestamp on ${_lname}.la"
COMMAND "${CMAKE_COMMAND}" -E touch "${_lamarker}"
COMMAND "${CMAKE_COMMAND}" -E touch "${_laname}")
# Add custom command to symlink the static library so that autotools finds
# the library in .libs. These are executed after the specified target build.
set(_libname ${_binary_dir}/.libs/${_lname}${CMAKE_STATIC_LIBRARY_SUFFIX})
add_custom_command(OUTPUT "${_libname}" DEPENDS ${_target}
COMMENT "Creating symlink .libs/${_lname}${CMAKE_STATIC_LIBRARY_SUFFIX}"
COMMAND "${CMAKE_COMMAND}" -E make_directory "${_binary_dir}/.libs"
COMMAND "${CMAKE_COMMAND}" -E create_symlink ../${_lname}${CMAKE_STATIC_LIBRARY_SUFFIX} "${_libname}")
add_custom_target(${_target}.la ALL
DEPENDS "${_lamarker}" "${_libname}")
endfunction()
================================================
FILE: cmake/Modules/FindAVCodec.cmake
================================================
#[=======================================================================[.rst:
FindAVCodec
-----------
Find the FFmpeg avcodec library
Result variables
^^^^^^^^^^^^^^^^
This module will set the following variables if found:
``AVCODEC_INCLUDE_DIRS``
where to find libavcodec/avcodec.h, etc.
``AVCODEC_LIBRARIES``
the libraries to link against to use avcodec.
``AVCODEC_FOUND``
TRUE if found
#]=======================================================================]
find_package(PkgConfig QUIET)
if(PKG_CONFIG_FOUND)
pkg_check_modules(PC_AVCodec QUIET libavcodec)
endif()
find_path(AVCodec_INCLUDE_DIR NAMES libavcodec/avcodec.h
HINTS
${PC_AVCodec_INCLUDE_DIRS}
)
mark_as_advanced(AVCodec_INCLUDE_DIR)
find_library(AVCodec_LIBRARY NAMES avcodec
HINTS
${PC_AVCodec_LIBRARY_DIRS}
)
mark_as_advanced(AVCodec_LIBRARY)
include(FindPackageHandleStandardArgs)
find_package_handle_standard_args(AVCodec
REQUIRED_VARS
AVCodec_LIBRARY AVCodec_INCLUDE_DIR
)
if(AVCodec_FOUND)
set(AVCODEC_INCLUDE_DIRS ${AVCodec_INCLUDE_DIR})
set(AVCODEC_LIBRARIES ${AVCodec_LIBRARY})
endif()
================================================
FILE: cmake/Modules/FindAVUtil.cmake
================================================
#[=======================================================================[.rst:
FindAVUtil
----------
Find the FFmpeg avutil library
Result variables
^^^^^^^^^^^^^^^^
This module will set the following variables if found:
``AVUTIL_INCLUDE_DIRS``
where to find libavutil/avutil.h, etc.
``AVUTIL_LIBRARIES``
the libraries to link against to use avutil.
``AVUTIL_FOUND``
TRUE if found
#]=======================================================================]
find_package(PkgConfig QUIET)
if(PKG_CONFIG_FOUND)
pkg_check_modules(PC_AVUtil QUIET libavutil)
endif()
find_path(AVUtil_INCLUDE_DIR NAMES libavutil/avutil.h
HINTS
${PC_AVUtil_INCLUDE_DIRS}
)
mark_as_advanced(AVUtil_INCLUDE_DIR)
find_library(AVUtil_LIBRARY NAMES avutil
HINTS
${PC_AVUtil_LIBRARY_DIRS}
)
mark_as_advanced(AVUtil_LIBRARY)
include(FindPackageHandleStandardArgs)
find_package_handle_standard_args(AVUtil
REQUIRED_VARS
AVUtil_LIBRARY AVUtil_INCLUDE_DIR
)
if(AVUtil_FOUND)
set(AVUTIL_INCLUDE_DIRS ${AVUtil_INCLUDE_DIR})
set(AVUTIL_LIBRARIES ${AVUtil_LIBRARY})
endif()
================================================
FILE: cmake/Modules/FindGLib.cmake
================================================
#[=======================================================================[.rst:
FindGLib
----------
Find the GLib library
Result variables
^^^^^^^^^^^^^^^^
This module will set the following variables if found:
``GLIB_INCLUDE_DIRS``
where to find glib.h, etc.
``GLIB_LIBRARIES``
the libraries to link against to use libglib.
``GLIB_FOUND``
TRUE if found
#]=======================================================================]
find_package(PkgConfig QUIET)
if (PKG_CONFIG_FOUND)
pkg_check_modules(PC_GLib QUIET glib-2.0)
endif()
find_path(GLib_INCLUDE_DIR NAMES glib.h
PATH_SUFFIXES
glib-2.0
HINTS
${PC_GLib_INCLUDE_DIRS}
)
mark_as_advanced(GLib_INCLUDE_DIR)
find_path(GLib_CONFIG_INCLUDE_DIR NAMES glibconfig.h
PATH_SUFFIXES
glib-2.0/include
HINTS
${PC_GLib_INCLUDE_DIRS}
)
mark_as_advanced(GLib_CONFIG_INCLUDE_DIR)
find_library(GLib_LIBRARIES NAMES glib-2.0
HINTS
${PC_GLib_LIBRARY_DIRS}
)
include(FindPackageHandleStandardArgs)
find_package_handle_standard_args(GLib
REQUIRED_VARS
GLib_LIBRARIES GLib_INCLUDE_DIR GLib_CONFIG_INCLUDE_DIR
)
if(GLIB_FOUND)
set(GLIB_INCLUDE_DIRS ${GLib_INCLUDE_DIR} ${GLib_CONFIG_INCLUDE_DIR})
set(GLIB_LIBRARIES ${GLib_LIBRARIES})
endif()
================================================
FILE: cmake/Modules/FindGMP.cmake
================================================
#[=======================================================================[.rst:
FindGMP
-------
Find the GNU MP bignum library
Result variables
^^^^^^^^^^^^^^^^
This module will set the following variables if found:
``GMP_INCLUDE_DIRS``
where to find gmp.h, etc.
``GMP_LIBRARIES``
the libraries to link against to use GMP.
``GMP_FOUND``
TRUE if found
#]=======================================================================]
find_package(PkgConfig QUIET)
if(PKG_CONFIG_FOUND)
pkg_check_modules(PC_GMP QUIET gmp)
endif()
find_path(GMP_INCLUDE_DIR NAMES gmp.h
HINTS
${PC_GMP_INCLUDE_DIRS}
)
mark_as_advanced(GMP_INCLUDE_DIR)
find_library(GMP_LIBRARY NAMES gmp
HINTS
${PC_GMP_LIBRARY_DIRS}
)
mark_as_advanced(GMP_LIBRARY)
include(FindPackageHandleStandardArgs)
find_package_handle_standard_args(GMP
REQUIRED_VARS
GMP_LIBRARY GMP_INCLUDE_DIR
)
if(GMP_FOUND)
set(GMP_INCLUDE_DIRS ${GMP_INCLUDE_DIR})
set(GMP_LIBRARIES ${GMP_LIBRARY})
endif()
================================================
FILE: cmake/Modules/FindGio.cmake
================================================
#[=======================================================================[.rst:
FindGio
----------
Find the GIO library
Result variables
^^^^^^^^^^^^^^^^
This module will set the following variables if found:
``GIO_INCLUDE_DIRS``
where to find gio/gio.h, etc.
``GIO_LIBRARIES``
the libraries to link against to use libgio.
``GIO_FOUND``
TRUE if found
#]=======================================================================]
find_package(PkgConfig QUIET)
if (PKG_CONFIG_FOUND)
pkg_check_modules(PC_Gio QUIET gio-2.0)
pkg_check_modules(PC_Gio_unix QUIET gio-unix-2.0)
endif()
find_path(Gio_INCLUDE_DIR NAMES gio/gio.h
PATH_SUFFIXES
glib-2.0
HINTS
${PC_Gio_INCLUDE_DIRS}
)
mark_as_advanced(Gio_INCLUDE_DIR)
find_path(Gio_unix_INCLUDE_DIR NAMES gio/gunixfdlist.h
PATH_SUFFIXES
gio-unix-2.0
HINTS
${PC_Gio_unix_INCLUDE_DIRS}
)
mark_as_advanced(Gio_unix_INCLUDE_DIR)
find_library(Gio_LIBRARIES NAMES gio-2.0
HINTS
${PC_Gio_LIBRARY_DIRS}
)
mark_as_advanced(Gio_LIBRARIES)
include(FindPackageHandleStandardArgs)
find_package_handle_standard_args(Gio
REQUIRED_VARS
Gio_LIBRARIES Gio_INCLUDE_DIR Gio_unix_INCLUDE_DIR
)
if(GIO_FOUND)
set(GIO_INCLUDE_DIRS ${Gio_INCLUDE_DIR} ${Gio_unix_INCLUDE_DIR})
set(GIO_LIBRARIES ${Gio_LIBRARIES})
endif()
================================================
FILE: cmake/Modules/FindGobject.cmake
================================================
#[=======================================================================[.rst:
FindGobject
----------
Find the GObject library
Result variables
^^^^^^^^^^^^^^^^
This module will set the following variables if found:
``GOBJECT_INCLUDE_DIRS``
where to find gobject/gobject.h, etc.
``GOBJECT_LIBRARIES``
the libraries to link against to use libgobject.
``GOBJECT_FOUND``
TRUE if found
#]=======================================================================]
find_package(PkgConfig QUIET)
if (PKG_CONFIG_FOUND)
pkg_check_modules(PC_Gobject QUIET gobject-2.0)
endif()
find_path(Gobject_INCLUDE_DIR NAMES gobject/gobject.h
PATH_SUFFIXES
glib-2.0
HINTS
${PC_Gobject_INCLUDE_DIRS}
)
mark_as_advanced(Gobject_INCLUDE_DIR)
find_library(Gobject_LIBRARIES NAMES gobject-2.0
HINTS
${PC_Gobject_LIBRARY_DIRS}
)
mark_as_advanced(Gobject_LIBRARIES)
include(FindPackageHandleStandardArgs)
find_package_handle_standard_args(Gobject
REQUIRED_vARS
Gobject_INCLUDE_DIR Gobject_LIBRARIES
)
if(GOBJECT_FOUND)
set(GOBJECT_INCLUDE_DIRS ${Gobject_INCLUDE_DIR})
set(GOBJECT_LIBRARIES ${Gobject_LIBRARIES})
endif()
================================================
FILE: cmake/Modules/FindNettle.cmake
================================================
#[=======================================================================[.rst:
FindNettle
----------
Find the Nettle and Hogweed libraries
Result variables
^^^^^^^^^^^^^^^^
This module will set the following variables if found:
``NETTLE_INCLUDE_DIRS``
where to find nettle/eax.h, etc.
``NETTLE_LIBRARIES``
the libraries to link against to use Nettle.
``HOGWEED_LIBRARIES``
the libraries to link against to use Hogweed.
``NETTLE_FOUND``
TRUE if found
#]=======================================================================]
if(Nettle_FIND_REQUIRED)
find_package(GMP QUIET REQUIRED)
else()
find_package(GMP QUIET)
endif()
find_package(PkgConfig QUIET)
if(PKG_CONFIG_FOUND)
pkg_check_modules(PC_Nettle QUIET nettle)
pkg_check_modules(PC_Hogweed QUIET hogweed)
endif()
find_path(Nettle_INCLUDE_DIR NAMES nettle/eax.h
HINTS
${PC_Nettle_INCLUDE_DIRS}
)
mark_as_advanced(Nettle_INCLUDE_DIR)
find_library(Nettle_LIBRARY NAMES nettle
HINTS
${PC_Nettle_LIBRARY_DIRS}
)
mark_as_advanced(Nettle_LIBRARY)
find_library(Hogweed_LIBRARY NAMES hogweed
HINTS
${PC_Hogweed_LIBRARY_DIRS}
)
mark_as_advanced(Hogweed_LIBRARY)
include(FindPackageHandleStandardArgs)
find_package_handle_standard_args(Nettle
REQUIRED_VARS
Nettle_LIBRARY Nettle_INCLUDE_DIR Hogweed_LIBRARY
)
if(Nettle_FOUND)
set(NETTLE_INCLUDE_DIRS ${Nettle_INCLUDE_DIR} ${GMP_INCLUDE_DIRS})
set(NETTLE_LIBRARIES ${Nettle_LIBRARY})
set(HOGWEED_LIBRARIES ${Hogweed_LIBRARY} ${GMP_LIBRARIES})
endif()
================================================
FILE: cmake/Modules/FindPAM.cmake
================================================
#[=======================================================================[.rst:
FindPAM
-------
Find the Pluggable Authentication Modules library
Result variables
^^^^^^^^^^^^^^^^
This module will set the following variables if found:
``PAM_INCLUDE_DIRS``
where to find security/pam_appl.h, etc.
``PAM_LIBRARIES``
the libraries to link against to use PAM.
``PAM_FOUND``
TRUE if found
#]=======================================================================]
find_package(PkgConfig QUIET)
if(PKG_CONFIG_FOUND)
pkg_check_modules(PC_PAM QUIET pam)
endif()
find_path(PAM_INCLUDE_DIR NAMES security/pam_appl.h
HINTS
${PC_PAM_INCLUDE_DIRS}
)
mark_as_advanced(PAM_INCLUDE_DIR)
find_library(PAM_LIBRARY NAMES pam
HINTS
${PC_PAM_LIBRARY_DIRS}
)
mark_as_advanced(PAM_LIBRARY)
include(FindPackageHandleStandardArgs)
find_package_handle_standard_args(PAM
REQUIRED_VARS
PAM_LIBRARY PAM_INCLUDE_DIR
)
if(PAM_FOUND)
set(PAM_INCLUDE_DIRS ${PAM_INCLUDE_DIR})
set(PAM_LIBRARIES ${PAM_LIBRARY})
endif()
================================================
FILE: cmake/Modules/FindPWQuality.cmake
================================================
#[=======================================================================[.rst:
FindPWQuality
-------------
Find the password quality library
Result variables
^^^^^^^^^^^^^^^^
This module will set the following variables if found:
``PWQUALITY_INCLUDE_DIRS``
where to find pwquality.h, etc.
``PWQUALITY_LIBRARIES``
the libraries to link against to use pwquality.
``PWQUALITY_FOUND``
TRUE if found
#]=======================================================================]
find_package(PkgConfig QUIET)
if(PKG_CONFIG_FOUND)
pkg_check_modules(PC_PWQuality QUIET pwquality)
endif()
find_path(PWQuality_INCLUDE_DIR NAMES pwquality.h
HINTS
${PC_PWQuality_INCLUDE_DIRS}
)
mark_as_advanced(PWQuality_INCLUDE_DIR)
find_library(PWQuality_LIBRARY NAMES pwquality
HINTS
${PC_PWQuality_LIBRARY_DIRS}
)
mark_as_advanced(PWQuality_LIBRARY)
include(FindPackageHandleStandardArgs)
find_package_handle_standard_args(PWQuality
REQUIRED_VARS
PWQuality_LIBRARY PWQuality_INCLUDE_DIR
)
if(PWQuality_FOUND)
set(PWQUALITY_INCLUDE_DIRS ${PWQuality_INCLUDE_DIR})
set(PWQUALITY_LIBRARIES ${PWQuality_LIBRARY})
endif()
================================================
FILE: cmake/Modules/FindPipeWire.cmake
================================================
#[=======================================================================[.rst:
FindPipeWire
----------
Find the PipeWire library
Result variables
^^^^^^^^^^^^^^^^
This module will set the following variables if found:
``PIPEWIRE_INCLUDE_DIRS``
where to find pipewire/pipewire.h, etc.
``PIPEWIRE_LIBRARIES``
the libraries to link against to use libpipewire.
``PIPEWIRE_FOUND``
TRUE if found
#]=======================================================================]
find_package(PkgConfig QUIET)
if(PKG_CONFIG_FOUND)
pkg_check_modules(PC_PipeWire QUIET libpipewire-0.3)
endif()
find_path(PipeWire_INCLUDE_DIR NAMES pipewire/pipewire.h
PATH_SUFFIXES
pipewire-0.3
HINTS
${PC_PipeWire_INCLUDE_DIRS}
)
mark_as_advanced(PipeWire_INCLUDE_DIR)
find_path(Spa_INCLUDE_DIR NAMES spa/pod/pod.h
PATH_SUFFIXES
spa-0.2
HINTS
${PC_PipeWire_INCLUDE_DIRS})
mark_as_advanced(Spa_INCLUDE_DIR)
find_library(PipeWire_LIBRARY NAMES pipewire-0.3
HINTS
${PC_PipeWire_LIBRARY_DIRS}
)
mark_as_advanced(PipeWire_LIBRARY)
include(FindPackageHandleStandardArgs)
find_package_handle_standard_args(PipeWire
REQUIRED_VARS
PipeWire_LIBRARY PipeWire_INCLUDE_DIR Spa_INCLUDE_DIR
)
if(PipeWire_FOUND)
set(PIPEWIRE_LIBRARIES ${PipeWire_LIBRARY})
set(PIPEWIRE_INCLUDE_DIRS ${PipeWire_INCLUDE_DIR} ${Spa_INCLUDE_DIR})
endif()
================================================
FILE: cmake/Modules/FindPixman.cmake
================================================
#[=======================================================================[.rst:
FindPixman
----------
Find the Pixman library
Result variables
^^^^^^^^^^^^^^^^
This module will set the following variables if found:
``PIXMAN_INCLUDE_DIRS``
where to find pixman.h, etc.
``PIXMAN_LIBRARIES``
the libraries to link against to use Pixman.
``PIXMAN_FOUND``
TRUE if found
#]=======================================================================]
find_package(PkgConfig QUIET)
if(PKG_CONFIG_FOUND)
pkg_check_modules(PC_Pixman QUIET pixman-1)
endif()
find_path(Pixman_INCLUDE_DIR NAMES pixman.h
PATH_SUFFIXES
pixman-1
HINTS
${PC_Pixman_INCLUDE_DIRS}
)
mark_as_advanced(Pixman_INCLUDE_DIR)
find_library(Pixman_LIBRARY NAMES pixman-1
HINTS
${PC_Pixman_LIBRARY_DIRS}
)
mark_as_advanced(Pixman_LIBRARY)
include(FindPackageHandleStandardArgs)
find_package_handle_standard_args(Pixman
REQUIRED_VARS
Pixman_LIBRARY Pixman_INCLUDE_DIR
)
if(Pixman_FOUND)
set(PIXMAN_INCLUDE_DIRS ${Pixman_INCLUDE_DIR})
set(PIXMAN_LIBRARIES ${Pixman_LIBRARY})
endif()
================================================
FILE: cmake/Modules/FindSELinux.cmake
================================================
#[=======================================================================[.rst:
FindSELinux
-----------
Find the SELinux library
Result variables
^^^^^^^^^^^^^^^^
This module will set the following variables if found:
``SELINUX_INCLUDE_DIRS``
where to find selinux/selinux.h, etc.
``SELINUX_LIBRARIES``
the libraries to link against to use libselinux.
``SELINUX_FOUND``
TRUE if found
#]=======================================================================]
find_package(PkgConfig QUIET)
if(PKG_CONFIG_FOUND)
pkg_check_modules(PC_SELinux QUIET libselinux)
endif()
find_path(SELinux_INCLUDE_DIR NAMES selinux/selinux.h
HINTS
${PC_SELinux_INCLUDE_DIRS}
)
mark_as_advanced(SELinux_INCLUDE_DIR)
find_library(SELinux_LIBRARY NAMES selinux
HINTS
${PC_SELinux_LIBRARY_DIRS}
)
mark_as_advanced(SELinux_LIBRARY)
include(FindPackageHandleStandardArgs)
find_package_handle_standard_args(SELinux
REQUIRED_VARS
SELinux_LIBRARY SELinux_INCLUDE_DIR
)
if(SELinux_FOUND)
set(SELINUX_INCLUDE_DIRS ${SELinux_INCLUDE_DIR})
set(SELINUX_LIBRARIES ${SELinux_LIBRARY})
endif()
================================================
FILE: cmake/Modules/FindSWScale.cmake
================================================
#[=======================================================================[.rst:
FindSWScale
-----------
Find the FFmpeg swscale library
Result variables
^^^^^^^^^^^^^^^^
This module will set the following variables if found:
``SWSCALE_INCLUDE_DIRS``
where to find libswscale/swscale.h, etc.
``SWSCALE_LIBRARIES``
the libraries to link against to use swscale.
``SWSCALE_FOUND``
TRUE if found
#]=======================================================================]
find_package(PkgConfig QUIET)
if(PKG_CONFIG_FOUND)
pkg_check_modules(PC_SWScale QUIET libswscale)
endif()
find_path(SWScale_INCLUDE_DIR NAMES libswscale/swscale.h
HINTS
${PC_SWScale_INCLUDE_DIRS}
)
mark_as_advanced(SWScale_INCLUDE_DIR)
find_library(SWScale_LIBRARY NAMES swscale
HINTS
${PC_SWScale_LIBRARY_DIRS}
)
mark_as_advanced(SWScale_LIBRARY)
include(FindPackageHandleStandardArgs)
find_package_handle_standard_args(SWScale
REQUIRED_VARS
SWScale_LIBRARY SWScale_INCLUDE_DIR
)
if(SWScale_FOUND)
set(SWSCALE_INCLUDE_DIRS ${SWScale_INCLUDE_DIR})
set(SWSCALE_LIBRARIES ${SWScale_LIBRARY})
endif()
================================================
FILE: cmake/Modules/FindSystemd.cmake
================================================
#[=======================================================================[.rst:
FindSystemd
-----------
Find the systemd library
Result variables
^^^^^^^^^^^^^^^^
This module will set the following variables if found:
``SYSTEMD_INCLUDE_DIRS``
where to find systemd/sd-daemon.h, etc.
``SYSTEMD_LIBRARIES``
the libraries to link against to use libsystemd.
``SYSTEMD_FOUND``
TRUE if found
#]=======================================================================]
find_package(PkgConfig QUIET)
if(PKG_CONFIG_FOUND)
pkg_check_modules(PC_Systemd QUIET libsystemd)
endif()
find_path(Systemd_INCLUDE_DIR NAMES systemd/sd-daemon.h
HINTS
${PC_Systemd_INCLUDE_DIRS}
)
mark_as_advanced(Systemd_INCLUDE_DIR)
find_library(Systemd_LIBRARY NAMES systemd
HINTS
${PC_Systemd_LIBRARY_DIRS}
)
mark_as_advanced(Systemd_LIBRARY)
include(FindPackageHandleStandardArgs)
find_package_handle_standard_args(Systemd
REQUIRED_VARS
Systemd_LIBRARY Systemd_INCLUDE_DIR
)
if(Systemd_FOUND)
set(SYSTEMD_INCLUDE_DIRS ${Systemd_INCLUDE_DIR})
set(SYSTEMD_LIBRARIES ${Systemd_LIBRARY})
endif()
================================================
FILE: cmake/Modules/FindUuid.cmake
================================================
#[=======================================================================[.rst:
FindUuid
----------
Find the UUID library
Result variables
^^^^^^^^^^^^^^^^
This module will set the following variables if found:
``UUID_INCLUDE_DIRS``
where to find uuid/uuid.h, etc.
``UUID_LIBRARIES``
the libraries to link against to use libuuid.
``UUID_FOUND``
TRUE if found
#]=======================================================================]
find_package(PkgConfig QUIET)
if (PKG_CONFIG_FOUND)
pkg_check_modules(PC_Uuid QUIET uuid)
endif()
find_path(Uuid_INCLUDE_DIR NAMES uuid/uuid.h
HINTS
${PC_Uuid_INCLUDE_DIRS}
)
mark_as_advanced(Uuid_INCLUDE_DIR)
find_library(Uuid_LIBRARIES NAMES uuid
HINTS
${PC_Uuid_LIBRARY_DIRS}
)
mark_as_advanced(Uuid_LIBRARIES)
include(FindPackageHandleStandardArgs)
find_package_handle_standard_args(Uuid
REQUIRED_VARS
Uuid_LIBRARIES Uuid_INCLUDE_DIR
)
if(Uuid_FOUND)
set(UUID_INCLUDE_DIRS ${Uuid_INCLUDE_DIR})
set(UUID_LIBRARIES ${Uuid_LIBRARIES})
endif()
================================================
FILE: cmake/Modules/FindWaylandClient.cmake
================================================
#[=======================================================================[.rst:
FindWaylandClient
-----------------
Find the Wayland client library
Result variables
^^^^^^^^^^^^^^^^
This module will set the following variables if found:
``WAYLANDCLIENT_INCLUDE_DIRS``
where to find wayland-client.h.h, etc.
``WAYLANDCLIENT_LIBRARIES``
the libraries to link against to use wayland client.
``WAYLAND_CLIENT_FOUND``
TRUE if found
#]=======================================================================]
find_package(PkgConfig QUIET)
if (PKG_CONFIG_FOUND)
pkg_check_modules(PC_WaylandClient QUIET wayland-client)
endif()
find_program(Wayland_scanner_EXECUTABLE
NAMES wayland-scanner
)
find_path(WaylandClient_INCLUDE_DIR NAMES wayland-client.h
PATH_SUFFIXES
wayland
HINTS
${PC_WaylandClient_INCLUDE_DIRS}
)
mark_as_advanced(WaylandClient_INCLUDE_DIR)
find_library(WaylandClient_LIBRARIES NAMES wayland-client
HINTS
${PC_WaylandClient_LIBRARY_DIRS}
)
mark_as_advanced(WaylandClient_LIBRARIES)
include(FindPackageHandleStandardArgs)
find_package_handle_standard_args(WaylandClient
REQUIRED_VARS
WaylandClient_LIBRARIES WaylandClient_INCLUDE_DIR Wayland_scanner_EXECUTABLE
)
if(WaylandClient_FOUND)
set(WAYLANDCLIENT_INCLUDE_DIRS ${WaylandClient_INCLUDE_DIR})
set(WAYLANDCLIENT_LIBRARIES ${WaylandClient_LIBRARIES})
set(WAYLAND_SCANNER_EXECUTABLE ${Wayland_scanner_EXECUTABLE})
endif()
================================================
FILE: cmake/Modules/FindXkbcommon.cmake
================================================
#[=======================================================================[.rst:
FindXkbcommon
----------
Find the Xkbcommon library
Result variables
^^^^^^^^^^^^^^^^
This module will set the following variables if found:
``XKBCOMMON_INCLUDE_DIRS``
where to find xkbcommon/xkbcommon.h, etc.
``XKBCOMMON_LIBRARIES``
the libraries to link against to use libxkbcommon.
``XKBCOMMON_FOUND``
TRUE if found
#]=======================================================================]
find_package(Pkgconfig QUIET)
if(PKG_CONFIG_FOUND)
pkg_check_modules(PC_Xkbcommon QUIET xkbcommon)
endif()
find_path(Xkbcommon_INCLUDE_DIR NAMES xkbcommon/xkbcommon.h
HINTS
${PC_Xkbcommon_INCLUDE_DIRS}
)
mark_as_advanced(Xkbcommon_INCLUDE_DIR)
find_library(Xkbcommon_LIBRARIES NAMES xkbcommon
HINTS
${PC_Xkbcommon_LIBRARY_DIRS}
)
mark_as_advanced(Xkbcommon_LIBRARIES)
include(FindPackageHandleStandardArgs)
find_package_handle_standard_args(Xkbcommon
REQUIRED_VARS Xkbcommon_LIBRARIES Xkbcommon_INCLUDE_DIR
)
if(Xkbcommon_FOUND)
set(XKBCOMMON_INCLUDE_DIRS ${Xkbcommon_INCLUDE_DIR})
set(XKBCOMMON_LIBRARIES ${Xkbcommon_LIBRARIES})
endif()
================================================
FILE: cmake/StaticBuild.cmake
================================================
#
# Best-effort magic that tries to produce semi-static binaries
# (i.e. only depends on "safe" libraries like libc and libX11)
#
# Note that this often fails as there is no way to automatically
# determine the dependencies of the libraries we depend on, and
# a lot of details change with each different build environment.
#
option(BUILD_STATIC
"Link statically against most libraries, if possible" OFF)
option(BUILD_STATIC_GCC
"Link statically against only libgcc and libstdc++" OFF)
if(BUILD_STATIC)
message(STATUS "Attempting to link static binaries...")
set(BUILD_STATIC_GCC 1)
set(JPEG_LIBRARIES "-Wl,-Bstatic -ljpeg -Wl,-Bdynamic")
set(ZLIB_LIBRARIES "-Wl,-Bstatic -lz -Wl,-Bdynamic")
set(PIXMAN_LIBRARIES "-Wl,-Bstatic -lpixman-1 -Wl,-Bdynamic")
# FIXME: This code has not yet been tested
if(UNIX AND NOT APPLE)
if (PIPEWIRE_FOUND)
set(PIPEWIRE_LIBRARIES, "-Wl,-Bstatic -lpipewire-0.3 -Wl, -Bdynamic")
endif()
if (UUID_FOUND)
set(UUID_LIBRARIES, "-Wl,-Bstatic -luuid -Wl, -Bdynamic")
endif()
if (GLIB_FOUND)
set(GLIB_LIBRARIES, "-Wl,-Bstatic -lglib-2.0 -Wl, -Bdynamic")
endif()
if (GIO_FOUND)
set(GIO_LIBRARIES, "-Wl,-Bstatic -lgio-2.0 -lgobject-2.0 -lglib-2.0 -Wl, -Bdynamic")
endif()
if (GOBJECT_FOUND)
set(GOBJECT_LIBRARIES, "-Wl,-Bstatic -lgobject-2.0 -lglib-2.0 -Wl, -Bdynamic")
endif()
endif()
# gettext is included in libc on many unix systems
check_function_exists(dgettext LIBC_HAS_DGETTEXT)
if(NOT LIBC_HAS_DGETTEXT)
FIND_LIBRARY(UNISTRING_LIBRARY NAMES unistring libunistring)
set(Intl_LIBRARIES "-Wl,-Bstatic -lintl")
if(UNISTRING_LIBRARY)
set(Intl_LIBRARIES "${Intl_LIBRARIES} -lunistring")
endif()
set(Intl_LIBRARIES "${Intl_LIBRARIES} -Wl,-Bdynamic")
if(APPLE)
set(Intl_LIBRARIES "${Intl_LIBRARIES} -liconv")
else()
set(Intl_LIBRARIES "${Intl_LIBRARIES} -Wl,-Bstatic")
set(Intl_LIBRARIES "${Intl_LIBRARIES} -liconv")
set(Intl_LIBRARIES "${Intl_LIBRARIES} -Wl,-Bdynamic")
endif()
if(APPLE)
set(Intl_LIBRARIES "${Intl_LIBRARIES} -framework Carbon")
endif()
endif()
if(GNUTLS_FOUND)
# GnuTLS has historically had different crypto backends
FIND_LIBRARY(NETTLE_LIBRARY NAMES nettle libnettle
HINTS ${PC_GNUTLS_LIBDIR} ${PC_GNUTLS_LIBRARY_DIRS})
FIND_LIBRARY(TASN1_LIBRARY NAMES tasn1 libtasn1
HINTS ${PC_GNUTLS_LIBDIR} ${PC_GNUTLS_LIBRARY_DIRS})
FIND_LIBRARY(IDN2_LIBRARY NAMES idn2 libidn2
HINTS ${PC_GNUTLS_LIBDIR} ${PC_GNUTLS_LIBRARY_DIRS})
FIND_LIBRARY(ZSTD_LIBRARY NAMES zstd libzstd
HINTS ${PC_GNUTLS_LIBDIR} ${PC_GNUTLS_LIBRARY_DIRS})
set(GNUTLS_LIBRARIES "-Wl,-Bstatic -lgnutls")
if(TASN1_LIBRARY)
set(GNUTLS_LIBRARIES "${GNUTLS_LIBRARIES} -ltasn1")
endif()
if(NETTLE_LIBRARY)
set(GNUTLS_LIBRARIES "${GNUTLS_LIBRARIES} -lhogweed -lnettle -lgmp")
endif()
if(IDN2_LIBRARY)
set(GNUTLS_LIBRARIES "${GNUTLS_LIBRARIES} -lidn2")
endif()
if(ZSTD_LIBRARY)
set(GNUTLS_LIBRARIES "${GNUTLS_LIBRARIES} -lzstd")
endif()
set(GNUTLS_LIBRARIES "${GNUTLS_LIBRARIES} -Wl,-Bdynamic")
if (WIN32)
FIND_LIBRARY(P11KIT_LIBRARY NAMES p11-kit libp11-kit
HINTS ${PC_GNUTLS_LIBDIR} ${PC_GNUTLS_LIBRARY_DIRS})
FIND_LIBRARY(UNISTRING_LIBRARY NAMES unistring libunistring
HINTS ${PC_GNUTLS_LIBDIR} ${PC_GNUTLS_LIBRARY_DIRS})
# GnuTLS uses various crypto-api stuff
set(GNUTLS_LIBRARIES "${GNUTLS_LIBRARIES} -lcrypt32 -lncrypt -lbcrypt")
# And sockets
set(GNUTLS_LIBRARIES "${GNUTLS_LIBRARIES} -lws2_32")
# p11-kit only available as dynamic library for MSYS2 on Windows and dynamic linking of unistring is required
if(P11KIT_LIBRARY)
set(GNUTLS_LIBRARIES "${GNUTLS_LIBRARIES} -lp11-kit")
endif()
if(UNISTRING_LIBRARY)
set(GNUTLS_LIBRARIES "${GNUTLS_LIBRARIES} -lunistring")
endif()
endif()
if(${CMAKE_SYSTEM_NAME} MATCHES "SunOS")
# nanosleep() lives here on Solaris
set(GNUTLS_LIBRARIES "${GNUTLS_LIBRARIES} -lrt")
# and socket functions are hidden here
set(GNUTLS_LIBRARIES "${GNUTLS_LIBRARIES} -lsocket")
endif()
# GnuTLS uses gettext and zlib, so make sure those are always
# included and in the proper order
set(GNUTLS_LIBRARIES "${GNUTLS_LIBRARIES} ${ZLIB_LIBRARIES}")
set(GNUTLS_LIBRARIES "${GNUTLS_LIBRARIES} ${Intl_LIBRARIES}")
# The last variables might introduce whitespace, which CMake
# throws a hissy fit about
string(STRIP ${GNUTLS_LIBRARIES} GNUTLS_LIBRARIES)
endif()
if(NETTLE_FOUND)
set(NETTLE_LIBRARIES "-Wl,-Bstatic -lnettle -Wl,-Bdynamic")
set(HOGWEED_LIBRARIES "-Wl,-Bstatic -lhogweed -lnettle -lgmp -Wl,-Bdynamic")
endif()
if(DEFINED FLTK_LIBRARIES)
set(FLTK_LIBRARIES "-Wl,-Bstatic -lfltk_images -lpng -ljpeg -lfltk -Wl,-Bdynamic")
if(WIN32)
set(FLTK_LIBRARIES "${FLTK_LIBRARIES} -lcomctl32")
elseif(APPLE)
set(FLTK_LIBRARIES "${FLTK_LIBRARIES} -framework Cocoa")
else()
set(FLTK_LIBRARIES "${FLTK_LIBRARIES} -lm -ldl")
endif()
if(X11_FOUND AND NOT APPLE)
if(${CMAKE_SYSTEM_NAME} MATCHES "SunOS")
set(FLTK_LIBRARIES "${FLTK_LIBRARIES} ${X11_Xcursor_LIB} ${X11_Xfixes_LIB} -Wl,-Bstatic -lXft -Wl,-Bdynamic -lfontconfig -lXrender -lXext -R/usr/sfw/lib -L=/usr/sfw/lib -lfreetype -lsocket -lnsl")
else()
set(FLTK_LIBRARIES "${FLTK_LIBRARIES} -Wl,-Bstatic -lXcursor -lXfixes -lXft -lfontconfig -lexpat -lfreetype -lpng -lbz2 -luuid -lXrender -lXext -lXinerama -Wl,-Bdynamic")
endif()
set(FLTK_LIBRARIES "${FLTK_LIBRARIES} -lX11")
endif()
endif()
# X11 libraries change constantly on Linux systems so we have to link
# them statically, even libXext. libX11 is somewhat stable, although
# even it has had an ABI change once or twice.
if(X11_FOUND AND NOT ${CMAKE_SYSTEM_NAME} MATCHES "SunOS")
set(X11_LIBRARIES "-Wl,-Bstatic -lXext -Wl,-Bdynamic -lX11")
if(X11_XTest_LIB)
set(X11_XTest_LIB "-Wl,-Bstatic -lXtst -Wl,-Bdynamic")
endif()
if(X11_Xdamage_LIB)
set(X11_Xdamage_LIB "-Wl,-Bstatic -lXdamage -Wl,-Bdynamic")
endif()
if(X11_Xrandr_LIB)
set(X11_Xrandr_LIB "-Wl,-Bstatic -lXrandr -lXrender -Wl,-Bdynamic")
endif()
if(X11_Xi_LIB)
set(X11_Xi_LIB "-Wl,-Bstatic -lXi -Wl,-Bdynamic")
endif()
endif()
endif()
if(BUILD_STATIC_GCC)
set(CMAKE_C_LINK_EXECUTABLE "${CMAKE_C_LINK_EXECUTABLE} -static-libgcc")
set(CMAKE_CXX_LINK_EXECUTABLE "${CMAKE_CXX_LINK_EXECUTABLE} -static-libstdc++ -static-libgcc")
if(ENABLE_ASAN)
set(CMAKE_C_LINK_EXECUTABLE "${CMAKE_C_LINK_EXECUTABLE} -static-libasan")
set(CMAKE_CXX_LINK_EXECUTABLE "${CMAKE_CXX_LINK_EXECUTABLE} -static-libasan")
endif()
if(ENABLE_TSAN)
set(CMAKE_C_LINK_EXECUTABLE "${CMAKE_C_LINK_EXECUTABLE} -static-libtsan")
set(CMAKE_CXX_LINK_EXECUTABLE "${CMAKE_CXX_LINK_EXECUTABLE} -static-libtsan")
endif()
endif()
================================================
FILE: cmake/cmake_uninstall.cmake.in
================================================
# This code is from the CMake FAQ
if (NOT EXISTS "@CMAKE_CURRENT_BINARY_DIR@/install_manifest.txt")
message(FATAL_ERROR "Cannot find install manifest: \"@CMAKE_CURRENT_BINARY_DIR@/install_manifest.txt\"")
endif(NOT EXISTS "@CMAKE_CURRENT_BINARY_DIR@/install_manifest.txt")
file(READ "@CMAKE_CURRENT_BINARY_DIR@/install_manifest.txt" files)
string(REGEX REPLACE "\n" ";" files "${files}")
list(REVERSE files)
foreach (file ${files})
message(STATUS "Uninstalling \"$ENV{DESTDIR}${file}\"")
if (EXISTS "$ENV{DESTDIR}${file}")
execute_process(
COMMAND @CMAKE_COMMAND@ -E remove "$ENV{DESTDIR}${file}"
OUTPUT_VARIABLE rm_out
RESULT_VARIABLE rm_retval
)
if(NOT ${rm_retval} EQUAL 0)
message(FATAL_ERROR "Problem when removing \"$ENV{DESTDIR}${file}\"")
endif (NOT ${rm_retval} EQUAL 0)
else (EXISTS "$ENV{DESTDIR}${file}")
message(STATUS "File \"$ENV{DESTDIR}${file}\" does not exist.")
endif (EXISTS "$ENV{DESTDIR}${file}")
endforeach(file)
================================================
FILE: common/CMakeLists.txt
================================================
add_subdirectory(core)
add_subdirectory(rdr)
add_subdirectory(network)
add_subdirectory(rfb)
# For any convenience libraries that are linked into libvnc.so, we need to
# explicitly build their corresponding sources using PIC. WIN32 is excluded
# because PIC code does not exist on that platform and MinGW complains if -fPIC
# is passed (additionally, libvnc is not used on Windows.)
if(NOT WIN32)
set_target_properties(core rdr network rfb
PROPERTIES COMPILE_FLAGS -fPIC)
endif()
================================================
FILE: common/core/CMakeLists.txt
================================================
add_library(core STATIC
Configuration.cxx
Exception.cxx
Logger.cxx
Logger_file.cxx
Logger_stdio.cxx
LogWriter.cxx
Region.cxx
Timer.cxx
string.cxx
time.cxx
xdgdirs.cxx)
target_include_directories(core PUBLIC ${CMAKE_SOURCE_DIR}/common)
target_include_directories(core SYSTEM PUBLIC ${PIXMAN_INCLUDE_DIRS})
target_link_libraries(core ${PIXMAN_LIBRARIES})
if(UNIX)
target_sources(core PRIVATE Logger_syslog.cxx)
endif()
if(WIN32)
target_link_libraries(core ws2_32)
endif()
if(UNIX)
target_sources(core PRIVATE Logger_syslog.cxx)
endif()
if(UNIX)
libtool_create_control_file(core)
endif()
================================================
FILE: common/core/Configuration.cxx
================================================
/* Copyright (C) 2002-2005 RealVNC Ltd. All Rights Reserved.
* Copyright 2004-2005 Cendio AB.
* Copyright 2017 Peter Astrand <astrand@cendio.se> for Cendio AB
* Copyright 2011-2025 Pierre Ossman for Cendio AB
*
* This 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 software 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 software; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307,
* USA.
*/
// -=- Configuration.cxx
#ifdef HAVE_CONFIG_H
#include <config.h>
#endif
#include <assert.h>
#include <stdlib.h>
#include <ctype.h>
#include <string.h>
#include <algorithm>
#include <stdexcept>
#include <core/Configuration.h>
#include <core/LogWriter.h>
#include <core/string.h>
#include <rdr/HexOutStream.h>
#include <rdr/HexInStream.h>
using namespace core;
static LogWriter vlog("Config");
// -=- The Global Configuration object
Configuration* Configuration::global_ = nullptr;
Configuration* Configuration::global() {
if (!global_)
global_ = new Configuration();
return global_;
}
// -=- Configuration implementation
bool Configuration::set(const char* paramName, const char* val,
bool immutable)
{
for (VoidParameter* current: params) {
if (strcasecmp(current->getName(), paramName) == 0) {
bool b = current->setParam(val);
if (b && immutable)
current->setImmutable();
return b;
}
}
return false;
}
VoidParameter* Configuration::get(const char* param)
{
for (VoidParameter* current: params) {
if (strcasecmp(current->getName(), param) == 0)
return current;
}
return nullptr;
}
void Configuration::list(int width, int nameWidth) {
for (VoidParameter* current: params) {
std::string def_str = current->getDefaultStr();
std::string desc_str = current->getDescription();
if (!def_str.empty())
desc_str += " (default=" + def_str + ")";
const char* desc = desc_str.c_str();
fprintf(stderr," %-*s -", nameWidth, current->getName());
int column = strlen(current->getName());
if (column < nameWidth) column = nameWidth;
column += 4;
while (true) {
if (desc[0] == '\0')
break;
int wordLen = strcspn(desc, " \f\n\r\t\v,");
if (wordLen == 0) {
desc++;
continue;
}
if (desc[wordLen] == ',')
wordLen++;
if (column + wordLen + 1 > width) {
fprintf(stderr,"\n%*s",nameWidth+4,"");
column = nameWidth+4;
}
fprintf(stderr, " ");
column++;
fprintf(stderr, "%.*s", wordLen, desc);
column += wordLen;
desc += wordLen;
}
fprintf(stderr,"\n");
}
}
bool Configuration::remove(const char* param) {
std::list<VoidParameter*>::iterator iter;
iter = std::find_if(params.begin(), params.end(),
[param](VoidParameter* p) {
return strcasecmp(p->getName(), param) == 0;
});
if (iter == params.end())
return false;
params.erase(iter);
return true;
}
int Configuration::handleArg(int argc, char* argv[], int index)
{
std::string param, val;
const char* equal = strchr(argv[index], '=');
if (equal == argv[index])
return 0;
if (equal) {
param.assign(argv[index], equal-argv[index]);
val.assign(equal+1);
} else {
param.assign(argv[index]);
}
if ((param.length() > 0) && (param[0] == '-')) {
// allow gnu-style --<option>
if ((param.length() > 1) && (param[1] == '-'))
param = param.substr(2);
else
param = param.substr(1);
} else {
// All command line arguments need either an initial '-', or an '='
if (!equal)
return 0;
}
if (equal)
return set(param.c_str(), val.c_str()) ? 1 : 0;
for (VoidParameter* current: params) {
if (strcasecmp(current->getName(), param.c_str()) != 0)
continue;
// We need to resolve an ambiguity for booleans
if (dynamic_cast<BoolParameter*>(current) != nullptr) {
if (index+1 < argc) {
// FIXME: Should not duplicate the list of values here
if ((strcasecmp(argv[index+1], "0") == 0) ||
(strcasecmp(argv[index+1], "1") == 0) ||
(strcasecmp(argv[index+1], "on") == 0) ||
(strcasecmp(argv[index+1], "off") == 0) ||
(strcasecmp(argv[index+1], "true") == 0) ||
(strcasecmp(argv[index+1], "false") == 0) ||
(strcasecmp(argv[index+1], "yes") == 0) ||
(strcasecmp(argv[index+1], "no") == 0)) {
return current->setParam(argv[index+1]) ? 2 : 0;
}
}
}
if (current->setParam())
return 1;
if (index+1 >= argc)
return 0;
return current->setParam(argv[index+1]) ? 2 : 0;
}
return 0;
}
// -=- VoidParameter
VoidParameter::VoidParameter(const char* name_, const char* desc_)
: immutable(false), name(name_), description(desc_)
{
Configuration *conf;
conf = Configuration::global();
conf->params.push_back(this);
conf->params.sort([](const VoidParameter* a, const VoidParameter* b) {
return strcasecmp(a->getName(), b->getName()) < 0;
});
}
VoidParameter::~VoidParameter() {
Configuration *conf;
conf = Configuration::global();
conf->params.remove(this);
}
const char*
VoidParameter::getName() const {
return name;
}
const char*
VoidParameter::getDescription() const {
return description;
}
bool VoidParameter::setParam() {
return false;
}
bool VoidParameter::isDefault() const {
return getDefaultStr() == getValueStr();
}
void
VoidParameter::setImmutable() {
vlog.debug("Set immutable %s", getName());
immutable = true;
}
// -=- AliasParameter
AliasParameter::AliasParameter(const char* name_, const char* desc_,
VoidParameter* param_)
: VoidParameter(name_, desc_), param(param_) {
}
bool
AliasParameter::setParam(const char* v) {
return param->setParam(v);
}
bool AliasParameter::setParam() {
return param->setParam();
}
std::string AliasParameter::getDefaultStr() const {
return "";
}
std::string AliasParameter::getValueStr() const {
return param->getValueStr();
}
void
AliasParameter::setImmutable() {
vlog.debug("Set immutable %s (Alias)", getName());
param->setImmutable();
}
// -=- BoolParameter
BoolParameter::BoolParameter(const char* name_, const char* desc_, bool v)
: VoidParameter(name_, desc_), value(v), def_value(v) {
}
bool
BoolParameter::setParam(const char* v) {
if (immutable) return true;
if (*v == 0 || strcasecmp(v, "1") == 0 || strcasecmp(v, "on") == 0
|| strcasecmp(v, "true") == 0 || strcasecmp(v, "yes") == 0)
setParam(true);
else if (strcasecmp(v, "0") == 0 || strcasecmp(v, "off") == 0
|| strcasecmp(v, "false") == 0 || strcasecmp(v, "no") == 0)
setParam(false);
else {
vlog.error("Bool parameter %s: Invalid value '%s'", getName(), v);
return false;
}
return true;
}
bool BoolParameter::setParam() {
setParam(true);
return true;
}
void BoolParameter::setParam(bool b) {
if (immutable) return;
value = b;
vlog.debug("Set %s(Bool) to %s", getName(), getValueStr().c_str());
}
std::string BoolParameter::getDefaultStr() const {
return def_value ? "on" : "off";
}
std::string BoolParameter::getValueStr() const {
return value ? "on" : "off";
}
BoolParameter::operator bool() const {
return value;
}
// -=- IntParameter
IntParameter::IntParameter(const char* name_, const char* desc_, int v,
int minValue_, int maxValue_)
: VoidParameter(name_, desc_), value(v), def_value(v),
minValue(minValue_), maxValue(maxValue_)
{
if (v < minValue || v > maxValue) {
vlog.error("Invalid default value %d for %s", v, getName());
throw std::invalid_argument("Invalid default value");
}
}
bool
IntParameter::setParam(const char* v) {
char* end;
long n;
if (immutable) return true;
n = strtol(v, &end, 0);
if ((*end != 0) || (n < INT_MIN) || (n > INT_MAX)) {
vlog.error("Int parameter %s: Invalid value '%s'", getName(), v);
return false;
}
return setParam(n);
}
bool
IntParameter::setParam(int v) {
if (immutable) return true;
if (v < minValue || v > maxValue) {
vlog.error("Int parameter %s: Invalid value '%d'", getName(), v);
return false;
}
vlog.debug("Set %s(Int) to %d", getName(), v);
value = v;
return true;
}
std::string IntParameter::getDefaultStr() const {
char result[16];
sprintf(result, "%d", def_value);
return result;
}
std::string IntParameter::getValueStr() const {
char result[16];
sprintf(result, "%d", value);
return result;
}
IntParameter::operator int() const {
return value;
}
// -=- StringParameter
StringParameter::StringParameter(const char* name_, const char* desc_,
const char* v)
: VoidParameter(name_, desc_), value(v?v:""), def_value(v?v:"")
{
if (!v) {
vlog.error("Default value <null> for %s not allowed",name_);
throw std::invalid_argument("Default value <null> not allowed");
}
}
bool StringParameter::setParam(const char* v) {
if (immutable) return true;
if (!v)
throw std::invalid_argument("setParam(<null>) not allowed");
vlog.debug("Set %s(String) to %s", getName(), v);
value = v;
return true;
}
std::string StringParameter::getDefaultStr() const {
return def_value;
}
std::string StringParameter::getValueStr() const {
return value;
}
StringParameter::operator const char *() const {
return value.c_str();
}
// -=- EnumParameter
EnumParameter::EnumParameter(const char* name_, const char* desc_,
const std::set<const char*>& enums_,
const char* v)
: VoidParameter(name_, desc_), value(v?v:""), def_value(v?v:"")
{
if (!v) {
vlog.error("Default value <null> for %s not allowed", name_);
throw std::invalid_argument("Default value <null> not allowed");
}
for (const char* e: enums_) {
if (!e) {
vlog.error("Enumeration <null> for %s not allowed", name_);
throw std::invalid_argument("Enumeration <null> not allowed");
}
enums.insert(e);
}
if (std::find(enums.begin(), enums.end(), def_value) == enums.end()) {
vlog.error("Default value %s for %s is not in list of valid values",
def_value.c_str(), name_);
throw std::invalid_argument("Default value is not in list of valid values");
}
}
bool EnumParameter::setParam(const char* v)
{
std::set<std::string>::const_iterator iter;
if (immutable) return true;
if (!v)
throw std::invalid_argument("setParam(<null>) not allowed");
iter = std::find_if(enums.begin(), enums.end(),
[v](const std::string& e) {
return strcasecmp(e.c_str(), v) == 0;
});
if (iter == enums.end()) {
vlog.error("Enum parameter %s: Invalid value '%s'", getName(), v);
return false;
}
vlog.debug("Set %s(Enum) to %s", getName(), iter->c_str());
value = *iter;
return true;
}
std::string EnumParameter::getDefaultStr() const
{
return def_value;
}
std::string EnumParameter::getValueStr() const
{
return value;
}
bool EnumParameter::operator==(const char* other) const
{
return strcasecmp(value.c_str(), other) == 0;
}
bool EnumParameter::operator==(const std::string& other) const
{
return *this == other.c_str();
}
bool EnumParameter::operator!=(const char* other) const
{
return strcasecmp(value.c_str(), other) != 0;
}
bool EnumParameter::operator!=(const std::string& other) const
{
return *this != other.c_str();
}
// -=- BinaryParameter
BinaryParameter::BinaryParameter(const char* name_, const char* desc_,
const uint8_t* v, size_t l)
: VoidParameter(name_, desc_),
value(nullptr), length(0), def_value(nullptr), def_length(0) {
if (l) {
assert(v);
value = new uint8_t[l];
length = l;
memcpy(value, v, l);
def_value = new uint8_t[l];
def_length = l;
memcpy(def_value, v, l);
}
}
BinaryParameter::~BinaryParameter() {
delete [] value;
delete [] def_value;
}
bool BinaryParameter::setParam(const char* v) {
if (immutable) return true;
std::vector<uint8_t> newValue = hexToBin(v, strlen(v));
if (newValue.empty() && strlen(v) > 0)
return false;
setParam(newValue.data(), newValue.size());
return true;
}
void BinaryParameter::setParam(const uint8_t* v, size_t len) {
if (immutable) return;
vlog.debug("Set %s(Binary)", getName());
delete [] value;
value = nullptr;
length = 0;
if (len) {
assert(v);
value = new uint8_t[len];
length = len;
memcpy(value, v, len);
}
}
std::string BinaryParameter::getDefaultStr() const {
return binToHex(def_value, def_length);
}
std::string BinaryParameter::getValueStr() const {
return binToHex(value, length);
}
std::vector<uint8_t> BinaryParameter::getData() const {
std::vector<uint8_t> out(length);
memcpy(out.data(), value, length);
return out;
}
// -=- ListParameter template
template<typename ValueType>
ListParameter<ValueType>::ListParameter(const char* name_,
const char* desc_,
const ListType& v)
: VoidParameter(name_, desc_), value(v), def_value(v)
{
}
template<typename ValueType>
bool ListParameter<ValueType>::setParam(const char* v)
{
std::vector<std::string> entries;
ListType new_value;
if (immutable)
return true;
// setParam({}) ends up as setParam(nullptr)
if (v != nullptr)
entries = split(v, ',');
for (std::string& entry : entries) {
ValueType e;
entry.erase(0, entry.find_first_not_of(" \f\n\r\t\v"));
entry.erase(entry.find_last_not_of(" \f\n\r\t\v")+1);
// Special case, entire v was just whitespace
if (entry.empty() && (entries.size() == 1))
break;
if (!decodeEntry(entry.c_str(), &e)) {
vlog.error("List parameter %s: Invalid value '%s'",
getName(), entry.c_str());
return false;
}
new_value.push_back(e);
}
return setParam(new_value);
}
template<typename ValueType>
bool ListParameter<ValueType>::setParam(const ListType& v)
{
ListType vnorm;
if (immutable)
return true;
for (const ValueType& entry : v) {
if (!validateEntry(entry)) {
vlog.error("List parameter %s: Invalid value '%s'", getName(),
encodeEntry(entry).c_str());
return false;
}
vnorm.push_back(normaliseEntry(entry));
}
value = vnorm;
vlog.debug("set %s(List) to %s", getName(), getValueStr().c_str());
return true;
}
template<typename ValueType>
std::string ListParameter<ValueType>::getDefaultStr() const
{
std::string result;
for (ValueType entry : def_value) {
// FIXME: Might want to add a space here as well for readability,
// but this would sacrifice backward compatibility
if (!result.empty())
result += ',';
result += encodeEntry(entry);
}
return result;
}
template<typename ValueType>
std::string ListParameter<ValueType>::getValueStr() const
{
std::string result;
for (ValueType entry : value) {
// FIXME: Might want to add a space here as well for readability,
// but this would sacrifice backward compatibility
if (!result.empty())
result += ',';
result += encodeEntry(entry);
}
return result;
}
template<typename ValueType>
typename ListParameter<ValueType>::const_iterator ListParameter<ValueType>::begin() const
{
return value.begin();
}
template<typename ValueType>
typename ListParameter<ValueType>::const_iterator ListParameter<ValueType>::end() const
{
return value.end();
}
template<typename ValueType>
bool ListParameter<ValueType>::validateEntry(const ValueType& /*entry*/) const
{
return true;
}
template<typename ValueType>
ValueType ListParameter<ValueType>::normaliseEntry(const ValueType& entry) const
{
return entry;
}
// -=- IntListParameter
template class core::ListParameter<int>;
IntListParameter::IntListParameter(const char* name_, const char* desc_,
const ListType& v,
int minValue_, int maxValue_)
: ListParameter<int>(name_, desc_, v),
minValue(minValue_), maxValue(maxValue_)
{
for (int entry : v) {
if (!validateEntry(entry)) {
vlog.error("Invalid default value %d for %s", entry, getName());
throw std::invalid_argument("Invalid default value");
}
}
}
bool IntListParameter::decodeEntry(const char* entry, int* out) const
{
long n;
char *end;
assert(entry);
assert(out);
if (entry[0] == '\0')
return false;
n = strtol(entry, &end, 0);
if ((*end != 0) || (n < INT_MIN) || (n > INT_MAX))
return false;
*out = n;
return true;
}
std::string IntListParameter::encodeEntry(const int& entry) const
{
char valstr[16];
sprintf(valstr, "%d", entry);
return valstr;
}
bool IntListParameter::validateEntry(const int& entry) const
{
return (entry >= minValue) && (entry <= maxValue);
}
// -=- StringListParameter
template class core::ListParameter<std::string>;
StringListParameter::StringListParameter(const char* name_,
const char* desc_,
const std::list<const char*>& v_)
: ListParameter<std::string>(name_, desc_, {})
{
for (const char* v: v_) {
if (!v) {
vlog.error("Default value <null> for %s not allowed", name_);
throw std::invalid_argument("Default value <null> not allowed");
}
value.push_back(v);
def_value.push_back(v);
}
}
StringListParameter::const_iterator StringListParameter::begin() const
{
return ListParameter<std::string>::begin();
}
StringListParameter::const_iterator StringListParameter::end() const
{
return ListParameter<std::string>::end();
}
bool StringListParameter::decodeEntry(const char* entry, std::string* out) const
{
*out = entry;
return true;
}
std::string StringListParameter::encodeEntry(const std::string& entry) const
{
return entry;
}
// -=- EnumListEntry
EnumListEntry::EnumListEntry(const std::string& v)
: value(v)
{
}
std::string EnumListEntry::getValueStr() const
{
return value;
}
bool EnumListEntry::operator==(const char* other) const
{
return strcasecmp(value.c_str(), other) == 0;
}
bool EnumListEntry::operator==(const std::string& other) const
{
return *this == other.c_str();
}
bool EnumListEntry::operator!=(const char* other) const
{
return strcasecmp(value.c_str(), other) != 0;
}
bool EnumListEntry::operator!=(const std::string& other) const
{
return *this != other.c_str();
}
// -=- EnumListParameter
EnumListParameter::EnumListParameter(const char* name_,
const char* desc_,
const std::set<const char*>& enums_,
const std::list<const char*>& v_)
: ListParameter<std::string>(name_, desc_, {})
{
for (const char* v: v_) {
if (!v) {
vlog.error("Default value <null> for %s not allowed", name_);
throw std::invalid_argument("Default value <null> not allowed");
}
value.push_back(v);
def_value.push_back(v);
}
for (const char* e: enums_) {
if (!e) {
vlog.error("Enumeration <null> for %s not allowed", name_);
throw std::invalid_argument("Enumeration <null> not allowed");
}
enums.insert(e);
}
for (const std::string& def_entry : def_value) {
if (std::find(enums.begin(), enums.end(), def_entry) == enums.end()) {
vlog.error("Default value %s for %s is not in list of valid values",
def_entry.c_str(), name_);
throw std::invalid_argument("Default value is not in list of valid values");
}
}
}
EnumListParameter::const_iterator EnumListParameter::begin() const
{
return ListParameter<std::string>::begin();
}
EnumListParameter::const_iterator EnumListParameter::end() const
{
return ListParameter<std::string>::end();
}
bool EnumListParameter::decodeEntry(const char* entry, std::string* out) const
{
*out = entry;
return true;
}
std::string EnumListParameter::encodeEntry(const std::string& entry) const
{
return entry;
}
bool EnumListParameter::validateEntry(const std::string& entry) const
{
for (const std::string& e : enums) {
if (strcasecmp(e.c_str(), entry.c_str()) == 0)
return true;
}
return false;
}
std::string EnumListParameter::normaliseEntry(const std::string& entry) const
{
for (const std::string& e : enums) {
if (strcasecmp(e.c_str(), entry.c_str()) == 0)
return e;
}
throw std::logic_error("Entry is not in list of valid values");
}
================================================
FILE: common/core/Configuration.h
================================================
/* Copyright (C) 2002-2005 RealVNC Ltd. All Rights Reserved.
* Copyright 2011-2025 Pierre Ossman for Cendio AB
*
* This 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 software 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 software; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307,
* USA.
*/
// -=- Configuration.h
//
// This header defines a set of classes used to represent configuration
// parameters of different types. Instances of the different parameter
// types are associated with instances of the Configuration class, and
// are each given a unique name. The Configuration class provides a
// generic API through which parameters may be located by name and their
// value set, thus removing the need to write platform-specific code.
// Simply defining a new parameter and associating it with a Configuration
// will allow it to be configured by the user.
//
// If no Configuration is specified when creating a Parameter, then the
// global Configuration will be assumed.
//
// Configurations can be "chained" into groups. Each group has a root
// Configuration, a pointer to which should be passed to the constructors
// of the other group members. set() and get() operations called on the
// root will iterate through all of the group's members.
//
// NB: On platforms that support Threading, locking is performed to protect
// complex parameter types from concurrent access (e.g. strings).
// NB: NO LOCKING is performed when linking Configurations to groups
// or when adding Parameters to Configurations.
#ifndef __CORE_CONFIGURATION_H__
#define __CORE_CONFIGURATION_H__
#include <limits.h>
#include <stdint.h>
#include <list>
#include <set>
#include <string>
#include <vector>
namespace core {
class VoidParameter;
// -=- Configuration
// Class used to access parameters.
class Configuration {
public:
// - Create a new Configuration object
Configuration() {}
// - Set named parameter to value
bool set(const char* param, const char* value, bool immutable=false);
// - Get named parameter
VoidParameter* get(const char* param);
// - List the parameters of this Configuration group
void list(int width=79, int nameWidth=10);
// - Remove a parameter from this Configuration group
bool remove(const char* param);
// - handleArg
// Parse a command line argument into a parameter, returning how
// many arguments were consumed
int handleArg(int argc, char* argv[], int index);
// - Iterate over all parameters
std::list<VoidParameter*>::iterator begin() { return params.begin(); }
std::list<VoidParameter*>::iterator end() { return params.end(); }
// - Returns the number of parameters
int size() { return params.size(); }
// - Get the Global Configuration object
// NB: This call does NOT lock the Configuration system.
// ALWAYS ensure that if you have ANY global Parameters,
// then they are defined as global objects, to ensure that
// global() is called when only the main thread is running.
static Configuration* global();
// - Container for process-wide Global parameters
static bool setParam(const char* param, const char* value, bool immutable=false) {
return global()->set(param, value, immutable);
}
static VoidParameter* getParam(const char* param) { return global()->get(param); }
static void listParams(int width=79, int nameWidth=10) {
global()->list(width, nameWidth);
}
static bool removeParam(const char* param) {
return global()->remove(param);
}
static int handleParamArg(int argc, char* argv[], int index) {
return global()->handleArg(argc, argv, index);
}
private:
friend class VoidParameter;
// - List of Parameters
std::list<VoidParameter*> params;
// The process-wide, Global Configuration object
static Configuration* global_;
};
// -=- VoidParameter
// Configuration parameter base-class.
class VoidParameter {
public:
VoidParameter(const char* name_, const char* desc_);
virtual ~VoidParameter();
const char* getName() const;
const char* getDescription() const;
virtual bool setParam(const char* value) = 0;
virtual bool setParam();
virtual std::string getDefaultStr() const = 0;
virtual std::string getValueStr() const = 0;
virtual bool isDefault() const;
virtual void setImmutable();
protected:
friend class Configuration;
VoidParameter* _next;
bool immutable;
const char* name;
const char* description;
};
class AliasParameter : public VoidParameter {
public:
AliasParameter(const char* name_, const char* desc_,VoidParameter* param_);
bool setParam(const char* value) override;
bool setParam() override;
std::string getDefaultStr() const override;
std::string getValueStr() const override;
void setImmutable() override;
private:
VoidParameter* param;
};
class BoolParameter : public VoidParameter {
public:
BoolParameter(const char* name_, const char* desc_, bool v);
bool setParam(const char* value) override;
bool setParam() override;
virtual void setParam(bool b);
std::string getDefaultStr() const override;
std::string getValueStr() const override;
operator bool() const;
protected:
bool value;
bool def_value;
};
class IntParameter : public VoidParameter {
public:
IntParameter(const char* name_, const char* desc_, int v,
int minValue=INT_MIN, int maxValue=INT_MAX);
using VoidParameter::setParam;
bool setParam(const char* value) override;
virtual bool setParam(int v);
std::string getDefaultStr() const override;
std::string getValueStr() const override;
operator int() const;
protected:
int value;
int def_value;
int minValue, maxValue;
};
class StringParameter : public VoidParameter {
public:
StringParameter(const char* name_, const char* desc_, const char* v);
bool setParam(const char* value) override;
std::string getDefaultStr() const override;
std::string getValueStr() const override;
operator const char*() const;
protected:
std::string value;
std::string def_value;
};
class EnumParameter : public VoidParameter {
public:
EnumParameter(const char* name_, const char* desc_,
const std::set<const char*>& enums, const char* v);
bool setParam(const char* value) override;
std::string getDefaultStr() const override;
std::string getValueStr() const override;
bool operator==(const char* other) const;
bool operator==(const std::string& other) const;
bool operator!=(const char* other) const;
bool operator!=(const std::string& other) const;
// operator const char*() omitted on purpose to force usage of above
// comparison operators
protected:
std::string value;
std::string def_value;
std::set<std::string> enums;
};
class BinaryParameter : public VoidParameter {
public:
BinaryParameter(const char* name_, const char* desc_,
const uint8_t* v, size_t l);
using VoidParameter::setParam;
~BinaryParameter() override;
bool setParam(const char* value) override;
virtual void setParam(const uint8_t* v, size_t l);
std::string getDefaultStr() const override;
std::string getValueStr() const override;
std::vector<uint8_t> getData() const;
protected:
uint8_t* value;
size_t length;
uint8_t* def_value;
size_t def_length;
};
template<typename ValueType>
class ListParameter : public VoidParameter {
public:
typedef std::list<ValueType> ListType;
typedef typename ListType::const_iterator const_iterator;
ListParameter(const char* name_, const char* desc_,
const ListType& v);
using VoidParameter::setParam;
bool setParam(const char* value) override;
virtual bool setParam(const ListType& v);
std::string getDefaultStr() const override;
std::string getValueStr() const override;
const_iterator begin() const;
const_iterator end() const;
protected:
virtual bool decodeEntry(const char* entry, ValueType* out) const = 0;
virtual std::string encodeEntry(const ValueType& entry) const = 0;
virtual bool validateEntry(const ValueType& entry) const;
virtual ValueType normaliseEntry(const ValueType& entry) const;
protected:
ListType value;
ListType def_value;
};
class IntListParameter : public ListParameter<int> {
public:
IntListParameter(const char* name_, const char* desc_,
const ListType& v,
int minValue=INT_MIN, int maxValue=INT_MAX);
protected:
bool decodeEntry(const char* entry, int* out) const override;
std::string encodeEntry(const int& entry) const override;
bool validateEntry(const int& entry) const override;
protected:
int minValue, maxValue;
};
class StringListParameter : public ListParameter<std::string> {
public:
StringListParameter(const char* name_, const char* desc_,
const std::list<const char*>& v);
class const_iterator : public ListType::const_iterator {
public:
const_iterator(const ListType::const_iterator& it) : ListType::const_iterator(it) {}
const char* operator*() const { return (ListType::const_iterator::operator*()).c_str(); }
};
const_iterator begin() const;
const_iterator end() const;
protected:
bool decodeEntry(const char* entry, std::string* out) const override;
std::string encodeEntry(const std::string& entry) const override;
};
class EnumListEntry {
public:
EnumListEntry(const std::string& v);
std::string getValueStr() const;
bool operator==(const char* other) const;
bool operator==(const std::string& other) const;
bool operator!=(const char* other) const;
bool operator!=(const std::string& other) const;
// operator const char*() omitted on purpose to force usage of above
// comparison operators
protected:
std::string value;
};
class EnumListParameter : public ListParameter<std::string> {
public:
EnumListParameter(const char* name_, const char* desc_,
const std::set<const char*>& enums,
const std::list<const char*>& v);
class const_iterator : public ListType::const_iterator {
public:
const_iterator(const ListType::const_iterator& it) : ListType::const_iterator(it) {}
const EnumListEntry operator*() const { return EnumListEntry(ListType::const_iterator::operator*()); }
const EnumListEntry operator->() const { return EnumListEntry(*ListType::const_iterator::operator->()); }
};
const_iterator begin() const;
const_iterator end() const;
protected:
bool decodeEntry(const char* entry, std::string* out) const override;
std::string encodeEntry(const std::string& entry) const override;
bool validateEntry(const std::string& entry) const override;
std::string normaliseEntry(const std::string& entry) const override;
protected:
std::set<std::string> enums;
};
};
#endif // __CORE_CONFIGURATION_H__
================================================
FILE: common/core/Exception.cxx
================================================
/* Copyright (C) 2002-2005 RealVNC Ltd. All Rights Reserved.
* Copyright (C) 2004 Red Hat Inc.
* Copyright (C) 2010 TigerVNC Team
* Copyright 2014-2024 Pierre Ossman for Cendio AB
*
* This 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 software 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 software; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307,
* USA.
*/
#ifdef HAVE_CONFIG_H
#include <config.h>
#endif
#include <stdio.h>
#include <stdarg.h>
#include <core/Exception.h>
#include <core/string.h>
#ifdef _WIN32
#include <winsock2.h>
#include <windows.h>
#include <ws2tcpip.h>
#else
#include <netdb.h>
#endif
#include <string.h>
using namespace core;
getaddrinfo_error::getaddrinfo_error(const char* s, int err_) noexcept
: std::runtime_error(core::format("%s: %s (%d)", s,
strerror(err_).c_str(), err_)),
err(err_)
{
}
getaddrinfo_error::getaddrinfo_error(const std::string& s,
int err_) noexcept
: std::runtime_error(core::format("%s: %s (%d)", s.c_str(),
strerror(err_).c_str(), err_)),
err(err_)
{
}
std::string getaddrinfo_error::strerror(int err_) const noexcept
{
#ifdef _WIN32
char str[256];
WideCharToMultiByte(CP_UTF8, 0, gai_strerrorW(err_), -1, str,
sizeof(str), nullptr, nullptr);
return str;
#else
return gai_strerror(err_);
#endif
}
posix_error::posix_error(const char* what_arg, int err_) noexcept
: std::runtime_error(core::format("%s: %s (%d)", what_arg,
strerror(err_).c_str(), err_)),
err(err_)
{
}
posix_error::posix_error(const std::string& what_arg, int err_) noexcept
: std::runtime_error(core::format("%s: %s (%d)", what_arg.c_str(),
strerror(err_).c_str(), err_)),
err(err_)
{
}
std::string posix_error::strerror(int err_) const noexcept
{
#ifdef _WIN32
char str[256];
WideCharToMultiByte(CP_UTF8, 0, _wcserror(err_), -1, str,
sizeof(str), nullptr, nullptr);
return str;
#else
return ::strerror(err_);
#endif
}
#ifdef WIN32
win32_error::win32_error(const char* what_arg, unsigned err_) noexcept
: std::runtime_error(core::format("%s: %s (%d)", what_arg,
strerror(err_).c_str(), err_)),
err(err_)
{
}
win32_error::win32_error(const std::string& what_arg,
unsigned err_) noexcept
: std::runtime_error(core::format("%s: %s (%d)", what_arg.c_str(),
strerror(err_).c_str(), err_)),
err(err_)
{
}
std::string win32_error::strerror(unsigned err_) const noexcept
{
wchar_t wstr[256];
char str[256];
FormatMessageW(FORMAT_MESSAGE_FROM_SYSTEM | FORMAT_MESSAGE_IGNORE_INSERTS,
nullptr, err_, 0, wstr, sizeof(wstr), nullptr);
WideCharToMultiByte(CP_UTF8, 0, wstr, -1, str,
sizeof(str), nullptr, nullptr);
int l = strlen(str);
if ((l >= 2) && (str[l-2] == '\r') && (str[l-1] == '\n'))
str[l-2] = 0;
return str;
}
#endif
================================================
FILE: common/core/Exception.h
================================================
/* Copyright (C) 2002-2005 RealVNC Ltd. All Rights Reserved.
* Copyright (C) 2004 Red Hat Inc.
* Copyright (C) 2010 TigerVNC Team
* Copyright 2015-2024 Pierre Ossman for Cendio AB
*
* This 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 software 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 software; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307,
* USA.
*/
#ifndef __CORE_EXCEPTION_H__
#define __CORE_EXCEPTION_H__
#include <stdexcept>
#include <string>
namespace core {
class posix_error : public std::runtime_error {
public:
int err;
posix_error(const char* what_arg, int err_) noexcept;
posix_error(const std::string& what_arg, int err_) noexcept;
private:
std::string strerror(int err_) const noexcept;
};
#ifdef WIN32
class win32_error : public std::runtime_error {
public:
unsigned err;
win32_error(const char* what_arg, unsigned err_) noexcept;
win32_error(const std::string& what_arg, unsigned err_) noexcept;
private:
std::string strerror(unsigned err_) const noexcept;
};
#endif
#ifdef WIN32
class socket_error : public win32_error {
public:
socket_error(const char* what_arg, unsigned err_) noexcept : win32_error(what_arg, err_) {}
socket_error(const std::string& what_arg, unsigned err_) noexcept : win32_error(what_arg, err_) {}
};
#else
class socket_error : public posix_error {
public:
socket_error(const char* what_arg, unsigned err_) noexcept : posix_error(what_arg, err_) {}
socket_error(const std::string& what_arg, unsigned err_) noexcept : posix_error(what_arg, err_) {}
};
#endif
class getaddrinfo_error : public std::runtime_error {
public:
int err;
getaddrinfo_error(const char* s, int err_) noexcept;
getaddrinfo_error(const std::string& s, int err_) noexcept;
private:
std::string strerror(int err_) const noexcept;
};
}
#endif
================================================
FILE: common/core/LogWriter.cxx
================================================
/* Copyright (C) 2002-2005 RealVNC Ltd. All Rights Reserved.
*
* This 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 software 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 software; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307,
* USA.
*/
// -=- LogWriter.cxx - client-side logging interface
#ifdef HAVE_CONFIG_H
#include <config.h>
#endif
#include <stdlib.h>
#include <string.h>
#include <core/Configuration.h>
#include <core/LogWriter.h>
#include <core/string.h>
using namespace core;
LogParameter core::logParams;
LogWriter::LogWriter(const char* name)
: m_name(name), m_level(0), m_log(nullptr), m_next(log_writers) {
log_writers = this;
}
LogWriter::~LogWriter() {
// *** Should remove this logger here!
}
void LogWriter::setLog(Logger *logger) {
m_log = logger;
}
void LogWriter::setLevel(int level) {
m_level = level;
}
void
LogWriter::listLogWriters(int /*width*/) {
// *** make this respect width...
LogWriter* current = log_writers;
fprintf(stderr, " ");
while (current) {
fprintf(stderr, "%s", current->m_name);
current = current->m_next;
if (current) fprintf(stderr, ", ");
}
fprintf(stderr, "\n");
}
LogWriter* LogWriter::log_writers;
LogWriter*
LogWriter::getLogWriter(const char* name) {
LogWriter* current = log_writers;
while (current) {
if (strcasecmp(name, current->m_name) == 0) return current;
current = current->m_next;
}
return nullptr;
}
bool LogWriter::setLogParams(const char* params) {
std::vector<std::string> parts;
parts = split(params, ':');
if (parts.size() != 3) {
fprintf(stderr, "Failed to parse log params:%s\n",params);
return false;
}
int level = atoi(parts[2].c_str());
Logger* logger = nullptr;
if (!parts[1].empty()) {
logger = Logger::getLogger(parts[1].c_str());
if (!logger)
fprintf(stderr, "No logger found! %s\n", parts[1].c_str());
}
if (parts[0] == "*") {
LogWriter* current = log_writers;
while (current) {
current->setLog(logger);
current->setLevel(level);
current = current->m_next;
}
return true;
} else {
LogWriter* logwriter = getLogWriter(parts[0].c_str());
if (!logwriter) {
fprintf(stderr, "No logwriter found! %s\n", parts[0].c_str());
} else {
logwriter->setLog(logger);
logwriter->setLevel(level);
return true;
}
}
return false;
}
LogParameter::LogParameter()
: StringListParameter("Log",
"Specifies which log output should be directed to "
"which target logger, and the level of output to log. "
"Format is <log>:<target>:<level>[, ...].",
{})
{
}
bool LogParameter::setParam(const char* v) {
if (immutable) return true;
LogWriter::setLogParams("*::0");
if (!StringListParameter::setParam(v))
return false;
for (const char* part : *this) {
if (part[0] == '\0')
continue;
if (!LogWriter::setLogParams(part))
return false;
}
return true;
}
================================================
FILE: common/core/LogWriter.h
================================================
/* Copyright (C) 2002-2005 RealVNC Ltd. All Rights Reserved.
*
* This 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 software 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 software; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307,
* USA.
*/
// -=- LogWriter.h - The Log writer class.
#ifndef __CORE_LOG_WRITER_H__
#define __CORE_LOG_WRITER_H__
#include <stdarg.h>
#include <core/Configuration.h>
#include <core/Logger.h>
// Each log writer instance has a unique textual name,
// and is attached to a particular Log instance and
// is assigned a particular log level.
#define DEF_LOGFUNCTION(name, level) \
inline void v##name(const char* fmt, va_list ap) \
__attribute__((__format__ (__printf__, 2, 0))) \
{ \
if (m_log && (level <= m_level)) \
m_log->write(level, m_name, fmt, ap); \
} \
inline void name(const char* fmt, ...) \
__attribute__((__format__ (__printf__, 2, 3))) \
{ \
if (m_log && (level <= m_level)) { \
va_list ap; va_start(ap, fmt); \
m_log->write(level, m_name, fmt, ap);\
va_end(ap); \
} \
}
namespace core {
class LogWriter {
public:
LogWriter(const char* name);
~LogWriter();
const char *getName() {return m_name;}
void setLog(Logger *logger);
void setLevel(int level);
int getLevel(void) { return m_level; }
inline void write(int level, const char* format, ...)
__attribute__((__format__ (__printf__, 3, 4)))
{
if (m_log && (level <= m_level)) {
va_list ap;
va_start(ap, format);
m_log->write(level, m_name, format, ap);
va_end(ap);
}
}
static const int LEVEL_ERROR = 0;
static const int LEVEL_STATUS = 10;
static const int LEVEL_INFO = 30;
static const int LEVEL_DEBUG = 100;
DEF_LOGFUNCTION(error, LEVEL_ERROR)
DEF_LOGFUNCTION(status, LEVEL_STATUS)
DEF_LOGFUNCTION(info, LEVEL_INFO)
DEF_LOGFUNCTION(debug, LEVEL_DEBUG)
// -=- DIAGNOSTIC & HELPER ROUTINES
static void listLogWriters(int width=79);
// -=- CLASS FIELDS & FUNCTIONS
static LogWriter* log_writers;
static LogWriter* getLogWriter(const char* name);
static bool setLogParams(const char* params);
private:
const char* m_name;
int m_level;
Logger* m_log;
LogWriter* m_next;
};
class LogParameter : public StringListParameter {
public:
LogParameter();
bool setParam(const char* v) override;
// We explicitly don't inherit setParam(std::list) as we want to
// force callers to use the above method to parse the values
};
extern LogParameter logParams;
};
#endif // __CORE_LOG_WRITER_H__
================================================
FILE: common/core/Logger.cxx
================================================
/* Copyright (C) 2002-2005 RealVNC Ltd. All Rights Reserved.
*
* This 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 software 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 software; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307,
* USA.
*/
// -=- Logger.cxx - support for the Logger and LogWriter classes
#ifdef HAVE_CONFIG_H
#include <config.h>
#endif
#include <stdarg.h>
#include <stdio.h>
#include <string.h>
#include <core/Logger.h>
#include <core/LogWriter.h>
using namespace core;
Logger* Logger::loggers = nullptr;
Logger::Logger(const char* name)
: registered(false), m_name(name), m_next(nullptr)
{
}
Logger::~Logger() {
// *** Should remove this logger here!
}
void Logger::write(int level, const char *logname, const char* format,
va_list ap)
{
// - Format the supplied data, and pass it to the
// actual log_message function
// The log level is included as a hint for loggers capable of representing
// different log levels in some way.
char buf1[4096];
vsnprintf(buf1, sizeof(buf1)-1, format, ap);
buf1[sizeof(buf1)-1] = 0;
char *buf = buf1;
while (true) {
char *end = strchr(buf, '\n');
if (end)
*end = '\0';
write(level, logname, buf);
if (!end)
break;
buf = end + 1;
}
}
void
Logger::registerLogger() {
if (!registered) {
registered = true;
m_next = loggers;
loggers=this;
}
}
Logger*
Logger::getLogger(const char* name) {
Logger* current = loggers;
while (current) {
if (strcasecmp(name, current->m_name) == 0) return current;
current = current->m_next;
}
return nullptr;
}
void
Logger::listLoggers() {
Logger* current = loggers;
while (current) {
printf(" %s\n", current->m_name);
current = current->m_next;
}
}
================================================
FILE: common/core/Logger.h
================================================
/* Copyright (C) 2002-2005 RealVNC Ltd. All Rights Reserved.
*
* This 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 software 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 software; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307,
* USA.
*/
// -=- Logger.h - The Logger class.
#ifndef __CORE_LOGGER_H__
#define __CORE_LOGGER_H__
#include <stdarg.h>
#include <stdio.h>
// Each log writer instance has a unique textual name,
// and is attached to a particular Logger instance and
// is assigned a particular log level.
namespace core {
class Logger {
public:
// -=- Create / Destroy a logger
Logger(const char* name);
virtual ~Logger();
// -=- Get the name of a logger
const char *getName() {return m_name;}
// -=- Write data to a log
virtual void write(int level, const char *logname, const char *text) = 0;
void write(int level, const char *logname, const char* format, va_list ap)
__attribute__((__format__ (__printf__, 4, 0)));
// -=- Register a logger
void registerLogger();
// -=- CLASS FIELDS & FUNCTIONS
static Logger* loggers;
static Logger* getLogger(const char* name);
static void listLoggers();
private:
bool registered;
const char *m_name;
Logger *m_next;
};
};
#endif // __CORE_LOGGER_H__
================================================
FILE: common/core/Logger_file.cxx
================================================
/* Copyright (C) 2002-2005 RealVNC Ltd. All Rights Reserved.
*
* This 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 software 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 software; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307,
* USA.
*/
// -=- Logger_file.cxx - Logger instance for a file
#ifdef HAVE_CONFIG_H
#include <config.h>
#endif
#include <limits.h>
#include <stdlib.h>
#include <string.h>
#include <core/Logger_file.h>
using namespace core;
Logger_File::Logger_File(const char* loggerName)
: Logger(loggerName), indent(13), width(79), m_file(nullptr),
m_lastLogTime(0)
{
m_filename[0] = '\0';
}
Logger_File::~Logger_File()
{
closeFile();
}
void Logger_File::write(int /*level*/, const char *logname, const char *message)
{
if (!m_file) {
if (m_filename[0] == '\0')
return;
char bakFilename[PATH_MAX];
if (snprintf(bakFilename, sizeof(bakFilename),
"%s.bak", m_filename) >= (int)sizeof(bakFilename)) {
remove(m_filename);
} else {
remove(bakFilename);
rename(m_filename, bakFilename);
}
m_file = fopen(m_filename, "w+");
if (!m_file) return;
}
time_t current = time(nullptr);
if (current != m_lastLogTime) {
m_lastLogTime = current;
fprintf(m_file, "\n%s", ctime(&m_lastLogTime));
}
fprintf(m_file," %s:", logname);
int column = strlen(logname) + 2;
if (column < indent) {
fprintf(m_file,"%*s",indent-column,"");
column = indent;
}
while (true) {
const char* s = strchr(message, ' ');
int wordLen;
if (s) wordLen = s-message;
else wordLen = strlen(message);
if (column + wordLen + 1 > width) {
fprintf(m_file,"\n%*s",indent,"");
column = indent;
}
fprintf(m_file," %.*s",wordLen,message);
column += wordLen + 1;
message += wordLen + 1;
if (!s) break;
}
fprintf(m_file,"\n");
fflush(m_file);
}
void Logger_File::setFilename(const char* filename)
{
closeFile();
m_filename[0] = '\0';
if (strlen(filename) >= sizeof(m_filename))
return;
strcpy(m_filename, filename);
}
void Logger_File::setFile(FILE* file)
{
closeFile();
m_file = file;
}
void Logger_File::closeFile()
{
if (m_file) {
fclose(m_file);
m_file = nullptr;
}
}
static Logger_File logger("file");
bool core::initFileLogger(const char* filename)
{
logger.setFilename(filename);
logger.registerLogger();
return true;
}
================================================
FILE: common/core/Logger_file.h
================================================
/* Copyright (C) 2002-2005 RealVNC Ltd. All Rights Reserved.
*
* This 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 software 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 software; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307,
* USA.
*/
// -=- Logger_file - log to a file
#ifndef __CORE_LOGGER_FILE_H__
#define __CORE_LOGGER_FILE_H__
#include <time.h>
#include <limits.h>
#include <core/Logger.h>
namespace core {
class Logger_File : public Logger {
public:
Logger_File(const char* loggerName);
~Logger_File();
void write(int level, const char *logname, const char *message) override;
void setFilename(const char* filename);
void setFile(FILE* file);
int indent;
int width;
protected:
void closeFile();
char m_filename[PATH_MAX];
FILE* m_file;
time_t m_lastLogTime;
};
bool initFileLogger(const char* filename);
};
#endif
================================================
FILE: common/core/Logger_stdio.cxx
================================================
/* Copyright (C) 2002-2005 RealVNC Ltd. All Rights Reserved.
*
* This 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 software 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 software; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307,
* USA.
*/
// -=- Logger_stdio.cxx - Logger instances for stderr and stdout
#ifdef HAVE_CONFIG_H
#include <config.h>
#endif
#include <core/Logger_stdio.h>
using namespace core;
static Logger_StdIO logStdErr("stderr", stderr);
static Logger_StdIO logStdOut("stdout", stdout);
bool core::initStdIOLoggers()
{
logStdErr.registerLogger();
logStdOut.registerLogger();
return true;
}
================================================
FILE: common/core/Logger_stdio.h
================================================
/* Copyright (C) 2002-2005 RealVNC Ltd. All Rights Reserved.
*
* This 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 software 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 software; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307,
* USA.
*/
// -=- Logger_stdio - standard output logger instances
#ifndef __CORE_LOGGER_STDIO_H__
#define __CORE_LOGGER_STDIO_H__
#include <core/Logger_file.h>
namespace core {
class Logger_StdIO : public Logger_File {
public:
Logger_StdIO(const char *name, FILE* file) : Logger_File(name) {
setFile(file);
}
};
bool initStdIOLoggers();
};
#endif
================================================
FILE: common/core/Logger_syslog.cxx
================================================
/* Copyright (C) 2015 TigerVNC
*
* This 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 software 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 software; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307,
* USA.
*/
// -=- Logger_syslog.cxx - Logger instance for a syslog
#ifdef HAVE_CONFIG_H
#include <config.h>
#endif
#include <stdlib.h>
#include <string.h>
#include <syslog.h>
#include <core/Logger_syslog.h>
#include <core/LogWriter.h>
using namespace core;
Logger_Syslog::Logger_Syslog(const char* loggerName)
: Logger(loggerName)
{
openlog(nullptr, LOG_CONS | LOG_PID, LOG_USER);
}
Logger_Syslog::~Logger_Syslog()
{
closelog();
}
void Logger_Syslog::write(int level, const char *logname, const char *message)
{
// Convert our priority level into syslog level
int priority;
if (level >= LogWriter::LEVEL_DEBUG) {
priority = LOG_DEBUG;
} else if (level >= LogWriter::LEVEL_INFO) {
priority = LOG_INFO;
} else if (level >= LogWriter::LEVEL_STATUS) {
priority = LOG_NOTICE;
} else {
priority = LOG_ERR;
}
syslog(priority, "%s: %s", logname, message);
}
static Logger_Syslog logger("syslog");
void core::initSyslogLogger()
{
logger.registerLogger();
}
================================================
FILE: common/core/Logger_syslog.h
================================================
/* Copyright (C) 2015 TigerVNC
*
* This 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 software 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 software; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307,
* USA.
*/
// -=- Logger_syslog - log to syslog
#ifndef __CORE_LOGGER_SYSLOG_H__
#define __CORE_LOGGER_SYSLOG_H__
#include <time.h>
#include <core/Logger.h>
namespace core {
class Logger_Syslog : public Logger {
public:
Logger_Syslog(const char* loggerName);
virtual ~Logger_Syslog();
void write(int level, const char *logname, const char *message) override;
};
void initSyslogLogger();
};
#endif
================================================
FILE: common/core/Rect.h
================================================
/* Copyright (C) 2002-2005 RealVNC Ltd. All Rights Reserved.
*
* This 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 software 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 software; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307,
* USA.
*/
// core::Rect and core::Point structures
#ifndef __CORE_RECT_INCLUDED__
#define __CORE_RECT_INCLUDED__
#include <algorithm>
namespace core {
// core::Point
//
// Represents a point in 2D space, by X and Y coordinates.
// Can also be used to represent a delta, or offset, between
// two Points.
// Functions are provided to allow Points to be compared for
// equality and translated by a supplied offset.
// Functions are also provided to negate offset Points.
struct Point {
Point() : x(0), y(0) {}
Point(int x_, int y_) : x(x_), y(y_) {}
inline Point negate() const
__attribute__ ((warn_unused_result))
{return Point(-x, -y);}
inline bool operator==(const Point &p) const {return x==p.x && y==p.y;}
inline bool operator!=(const Point &p) const {return x!=p.x || y!=p.y;}
inline Point translate(const Point &p) const
__attribute__ ((warn_unused_result))
{return Point(x+p.x, y+p.y);}
inline Point subtract(const Point &p) const
__attribute__ ((warn_unused_result))
{return Point(x-p.x, y-p.y);}
int x, y;
};
// core::Rect
//
// Represents a rectangular region defined by its top-left (tl)
// and bottom-right (br) Points.
// Rects may be compared for equality, checked to determine whether
// or not they are empty, cleared (made empty), or intersected with
// one another. The bounding rectangle of two existing Rects
// may be calculated, as may the area of a Rect.
// Rects may also be translated, in the same way as Points, by
// an offset specified in a Point structure.
struct Rect {
Rect() {}
Rect(Point tl_, Point br_) : tl(tl_), br(br_) {}
Rect(int x1, int y1, int x2, int y2) : tl(x1, y1), br(x2, y2) {}
inline void setXYWH(int x, int y, int w, int h) {
tl.x = x; tl.y = y; br.x = x+w; br.y = y+h;
}
inline Rect intersect(const Rect &r) const
__attribute__ ((warn_unused_result))
{
Rect result;
result.tl.x = std::max(tl.x, r.tl.x);
result.tl.y = std::max(tl.y, r.tl.y);
result.br.x = std::max(std::min(br.x, r.br.x), result.tl.x);
result.br.y = std::max(std::min(br.y, r.br.y), result.tl.y);
return result;
}
inline Rect union_boundary(const Rect &r) const
__attribute__ ((warn_unused_result))
{
if (r.is_empty()) return *this;
if (is_empty()) return r;
Rect result;
result.tl.x = std::min(tl.x, r.tl.x);
result.tl.y = std::min(tl.y, r.tl.y);
result.br.x = std::max(br.x, r.br.x);
result.br.y = std::max(br.y, r.br.y);
return result;
}
inline Rect translate(const Point &p) const
__attribute__ ((warn_unused_result))
{
return Rect(tl.translate(p), br.translate(p));
}
inline bool operator==(const Rect &r) const {return r.tl == tl && r.br == br;}
inline bool operator!=(const Rect &r) const {return r.tl != tl || r.br != br;}
inline bool is_empty() const {return (tl.x >= br.x) || (tl.y >= br.y);}
inline void clear() {tl = Point(); br = Point();}
inline bool enclosed_by(const Rect &r) const {
return (tl.x>=r.tl.x) && (tl.y>=r.tl.y) && (br.x<=r.br.x) && (br.y<=r.br.y);
}
inline bool overlaps(const Rect &r) const {
return tl.x < r.br.x && tl.y < r.br.y && br.x > r.tl.x && br.y > r.tl.y;
}
inline int area() const {return is_empty() ? 0 : (br.x-tl.x)*(br.y-tl.y);}
inline Point dimensions() const {return Point(width(), height());}
inline int width() const {return br.x-tl.x;}
inline int height() const {return br.y-tl.y;}
inline bool contains(const Point &p) const {
return (tl.x<=p.x) && (tl.y<=p.y) && (br.x>p.x) && (br.y>p.y);
}
Point tl;
Point br;
};
}
#endif // __CORE_RECT_INCLUDED__
================================================
FILE: common/core/Region.cxx
================================================
/* Copyright (C) 2002-2005 RealVNC Ltd. All Rights Reserved.
* Copyright 2016-2020 Pierre Ossman for Cendio AB
*
* This 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 software 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 software; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307,
* USA.
*/
#ifdef HAVE_CONFIG_H
#include <config.h>
#endif
#include <core/LogWriter.h>
#include <core/Region.h>
extern "C" {
#include <pixman.h>
}
using namespace core;
static LogWriter vlog("Region");
Region::Region()
{
rgn = new struct pixman_region16;
pixman_region_init(rgn);
}
Region::Region(const Rect& r)
{
rgn = new struct pixman_region16;
pixman_region_init_rect(rgn, r.tl.x, r.tl.y, r.width(), r.height());
}
Region::Region(const Region& r)
{
rgn = new struct pixman_region16;
pixman_region_init(rgn);
pixman_region_copy(rgn, r.rgn);
}
Region::~Region()
{
pixman_region_fini(rgn);
delete rgn;
}
Region& Region::operator=(const Region& r)
{
pixman_region_copy(rgn, r.rgn);
return *this;
}
void Region::clear()
{
// pixman_region_clear() isn't available on some older systems
pixman_region_fini(rgn);
pixman_region_init(rgn);
}
void Region::reset(const Rect& r)
{
pixman_region_fini(rgn);
pixman_region_init_rect(rgn, r.tl.x, r.tl.y, r.width(), r.height());
}
void Region::translate(const Point& delta)
{
pixman_region_translate(rgn, delta.x, delta.y);
}
void Region::assign_intersect(const Region& r)
{
pixman_region_intersect(rgn, rgn, r.rgn);
}
void Region::assign_union(const Region& r)
{
pixman_region_union(rgn, rgn, r.rgn);
}
void Region::assign_subtract(const Region& r)
{
pixman_region_subtract(rgn, rgn, r.rgn);
}
Region Region::intersect(const Region& r) const
{
Region ret;
pixman_region_intersect(ret.rgn, rgn, r.rgn);
return ret;
}
Region Region::union_(const Region& r) const
{
Region ret;
pixman_region_union(ret.rgn, rgn, r.rgn);
return ret;
}
Region Region::subtract(const Region& r) const
{
Region ret;
pixman_region_subtract(ret.rgn, rgn, r.rgn);
return ret;
}
bool Region::operator==(const Region& r) const
{
return pixman_region_equal(rgn, r.rgn);
}
bool Region::operator!=(const Region& r) const
{
return !pixman_region_equal(rgn, r.rgn);
}
int Region::numRects() const
{
return pixman_region_n_rects(rgn);
}
bool Region::get_rects(std::vector<Rect>* rects,
bool left2right, bool topdown) const
{
int nRects;
const pixman_box16_t* boxes;
int xInc, yInc, i;
boxes = pixman_region_rectangles(rgn, &nRects);
rects->clear();
rects->reserve(nRects);
xInc = left2right ? 1 : -1;
yInc = topdown ? 1 : -1;
i = topdown ? 0 : nRects-1;
while (nRects > 0) {
int firstInNextBand = i;
int nRectsInBand = 0;
while (nRects > 0 && boxes[firstInNextBand].y1 == boxes[i].y1)
{
firstInNextBand += yInc;
nRects--;
nRectsInBand++;
}
if (xInc != yInc)
i = firstInNextBand - yInc;
while (nRectsInBand > 0) {
Rect r(boxes[i].x1, boxes[i].y1, boxes[i].x2, boxes[i].y2);
rects->push_back(r);
i += xInc;
nRectsInBand--;
}
i = firstInNextBand;
}
return !rects->empty();
}
Rect Region::get_bounding_rect() const
{
const pixman_box16_t* extents;
extents = pixman_region_extents(rgn);
return Rect(extents->x1, extents->y1, extents->x2, extents->y2);
}
void Region::debug_print(const char* prefix) const
{
Rect extents;
std::vector<Rect> rects;
std::vector<Rect>::const_iterator iter;
extents = get_bounding_rect();
get_rects(&rects);
vlog.debug("%s num rects %3ld extents %3d,%3d %3dx%3d",
prefix, (long)rects.size(), extents.tl.x, extents.tl.y,
extents.width(), extents.height());
for (iter = rects.begin(); iter != rects.end(); ++iter) {
vlog.debug(" rect %3d,%3d %3dx%3d",
iter->tl.x, iter->tl.y, iter->width(), iter->height());
}
}
================================================
FILE: common/core/Region.h
================================================
/* Copyright (C) 2002-2005 RealVNC Ltd. All Rights Reserved.
* Copyright 2016-2020 Pierre Ossman for Cendio AB
*
* This 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 software 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 software; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307,
* USA.
*/
// Region class wrapper around pixman's region operations
#ifndef __CORE_REGION_INCLUDED__
#define __CORE_REGION_INCLUDED__
#include <vector>
#include <core/Rect.h>
struct pixman_region16;
namespace core {
struct Point;
struct Rect;
class Region {
public:
// Create an empty region
Region();
// Create a rectangular region
Region(const Rect& r);
Region(const Region& r);
Region &operator=(const Region& src);
~Region();
// the following methods alter the region in place:
void clear();
void reset(const Rect& r);
void translate(const Point& delta);
void assign_intersect(const Region& r);
void assign_union(const Region& r);
void assign_subtract(const Region& r);
// the following three operations return a new region:
Region intersect(const Region& r) const
__attribute__ ((warn_unused_result));
Region union_(const Region& r) const
__attribute__ ((warn_unused_result));
Region subtract(const Region& r) const
__attribute__ ((warn_unused_result));
bool operator==(const Region& b) const;
bool operator!=(const Region& b) const;
int numRects() const;
bool is_empty() const { return numRects() == 0; }
bool get_rects(std::vector<Rect>* rects, bool left2right=true,
bool topdown=true) const;
Rect get_bounding_rect() const;
void debug_print(const char *prefix) const;
protected:
struct pixman_region16* rgn;
};
};
#endif // __CORE_REGION_INCLUDED__
================================================
FILE: common/core/Timer.cxx
================================================
/* Copyright (C) 2002-2005 RealVNC Ltd. All Rights Reserved.
* Copyright 2016-2024 Pierre Ossman for Cendio AB
*
* This 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 software 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 software; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307,
* USA.
*/
// -=- Timer.cxx
#ifdef HAVE_CONFIG_H
#include <config.h>
#endif
#include <stdio.h>
#include <sys/time.h>
#include <algorithm>
#include <core/LogWriter.h>
#include <core/Timer.h>
#include <core/time.h>
using namespace core;
#ifndef __NO_DEFINE_VLOG__
static LogWriter vlog("Timer");
#endif
std::list<Timer*> Timer::pending;
int Timer::checkTimeouts() {
timeval start;
if (pending.empty())
return -1;
gettimeofday(&start, nullptr);
while (pending.front()->isBefore(start)) {
Timer* timer;
timer = pending.front();
pending.pop_front();
timer->lastDueTime = timer->dueTime;
timer->cb->handleTimeout(timer);
if (pending.empty())
return -1;
}
return getNextTimeout();
}
int Timer::getNextTimeout() {
timeval now;
gettimeofday(&now, nullptr);
if (pending.empty())
return -1;
int toWait = pending.front()->getRemainingMs();
if (toWait > pending.front()->timeoutMs) {
if (toWait - pending.front()->timeoutMs < 1000) {
vlog.info("gettimeofday is broken...");
return toWait;
}
// Time has jumped backwards!
vlog.info("Time has moved backwards!");
pending.front()->dueTime = now;
toWait = 0;
}
return toWait;
}
void Timer::insertTimer(Timer* t) {
std::list<Timer*>::iterator i;
for (i=pending.begin(); i!=pending.end(); i++) {
if (t->isBefore((*i)->dueTime)) {
pending.insert(i, t);
return;
}
}
pending.push_back(t);
}
void Timer::start(int timeoutMs_) {
timeval now;
gettimeofday(&now, nullptr);
stop();
timeoutMs = timeoutMs_;
dueTime = addMillis(now, timeoutMs);
insertTimer(this);
}
void Timer::repeat(int timeoutMs_) {
timeval now;
gettimeofday(&now, nullptr);
if (isStarted()) {
vlog.error("Incorrectly repeating already running timer");
stop();
}
if (msBetween(&lastDueTime, &dueTime) != 0)
vlog.error("Timer incorrectly modified whilst repeating");
if (timeoutMs_ != -1)
timeoutMs = timeoutMs_;
dueTime = addMillis(lastDueTime, timeoutMs);
if (isBefore(now)) {
// Time has jumped forwards, or we're not getting enough
// CPU time for the timers
dueTime = now;
}
insertTimer(this);
}
void Timer::stop() {
pending.remove(this);
}
bool Timer::isStarted() {
return std::find(pending.begin(), pending.end(),
this) != pending.end();
}
int Timer::getTimeoutMs() {
return timeoutMs;
}
int Timer::getRemainingMs() {
return msUntil(&dueTime);
}
bool Timer::isBefore(timeval other) {
return (dueTime.tv_sec < other.tv_sec) ||
((dueTime.tv_sec == other.tv_sec) &&
(dueTime.tv_usec < other.tv_usec));
}
================================================
FILE: common/core/Timer.h
================================================
/* Copyright (C) 2002-2005 RealVNC Ltd. All Rights Reserved.
* Copyright 2018-2024 Pierre Ossman for Cendio AB
*
* This 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 software 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 software; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307,
* USA.
*/
#ifndef __CORE_TIMER_H__
#define __CORE_TIMER_H__
#include <list>
#include <sys/time.h>
namespace core {
/* Timer
Cross-platform timeout handling. The caller creates instances of
Timer and passes a Callback implementation to each. The Callback
will then be called with a pointer to the Timer instance that
timed-out when the timeout occurs.
The static methods of Timer are used by the main loop of the
application both to dispatch elapsed Timer callbacks and to
determine how long to wait in select() for the next timeout to
occur.
For classes that can be derived it's best to use MethodTimer which
can call a specific method on the class, thus avoiding conflicts
when subclassing.
*/
struct Timer {
struct Callback {
// handleTimeout
// Passed a pointer to the Timer that has timed out. If the
// handler returns true then the Timer is reset and left
// running, causing another timeout after the appropriate
// interval.
// If the handler returns false then the Timer is cancelled.
virtual void handleTimeout(Timer* t) = 0;
virtual ~Callback() {}
};
// checkTimeouts()
// Dispatches any elapsed Timers, and returns the number of
// milliseconds until the next Timer will timeout.
static int checkTimeouts();
// getNextTimeout()
// Returns the number of milliseconds until the next timeout,
// without dispatching any elapsed Timers.
static int getNextTimeout();
// Create a Timer with the specified callback handler
Timer(Callback* cb_) {cb = cb_;}
~Timer() {stop();}
// start()
// Starts the timer, causing a timeout after the specified number
// of milliseconds. If the timer is already active then it will
// be implicitly cancelled and re-started.
void start(int timeoutMs_);
// repeat()
// Restarts the timer in a way that repeats that last timeout.
// This allows you to have a periodic timer without the risk of
// accumulating drift caused by processing delays.
// A new interval can be specified, otherwise the previous
// interval is reused.
void repeat(int timeoutMs_=-1);
// stop()
// Cancels the timer.
void stop();
// isStarted()
// Determines whether the timer is started.
bool isStarted();
// getTimeoutMs()
// Determines the previously used timeout value, if any.
// Usually used with isStarted() to get the _current_ timeout.
int getTimeoutMs();
// getRemainingMs()
// Determines how many milliseconds are left before the Timer
// will timeout. Only valid for an active timer.
int getRemainingMs();
// isBefore()
// Determine whether the Timer will timeout before the specified
// time.
bool isBefore(timeval other);
protected:
timeval dueTime, lastDueTime;
int timeoutMs;
Callback* cb;
static void insertTimer(Timer* t);
// The list of currently active Timers, ordered by time left until
// timeout.
static std::list<Timer*> pending;
};
template<class T> class MethodTimer
: public Timer, public Timer::Callback {
public:
MethodTimer(T* obj_, void (T::*cb_)(Timer*))
: Timer(this), obj(obj_), cb(cb_) {}
void handleTimeout(Timer* t) override { return (obj->*cb)(t); }
private:
T* obj;
void (T::*cb)(Timer*);
};
};
#endif
================================================
FILE: common/core/string.cxx
================================================
/* Copyright (C) 2002-2005 RealVNC Ltd. All Rights Reserved.
* Copyright 2011-2023 Pierre Ossman for Cendio AB
*
* This 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 software 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 software; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307,
* USA.
*/
#ifdef HAVE_CONFIG_H
#include <config.h>
#endif
#include <assert.h>
#include <ctype.h>
#include <stdarg.h>
#include <stdio.h>
#include <string.h>
#include <core/string.h>
namespace core {
std::string format(const char *fmt, ...)
{
va_list ap;
int len;
char *buf;
std::string out;
va_start(ap, fmt);
len = vsnprintf(nullptr, 0, fmt, ap);
va_end(ap);
if (len < 0)
return "";
buf = new char[len+1];
va_start(ap, fmt);
vsnprintf(buf, len+1, fmt, ap);
va_end(ap);
out = buf;
delete [] buf;
return out;
}
std::vector<std::string> split(const char* src,
const char delimiter)
{
std::vector<std::string> out;
const char *start, *stop;
if (src[0] == '\0')
return out;
start = src;
do {
stop = strchr(start, delimiter);
if (stop == nullptr) {
out.push_back(start);
} else {
out.push_back(std::string(start, stop-start));
start = stop + 1;
}
} while (stop != nullptr);
return out;
}
static char intToHex(uint8_t i) {
if (i<=9)
return '0'+i;
else if ((i>=10) && (i<=15))
return 'a'+(i-10);
assert(false);
return '\0';
}
void binToHex(const uint8_t* in, size_t inlen,
char* out, size_t outlen) {
if (inlen > outlen/2)
inlen = outlen/2;
if (inlen > 0) {
assert(in);
assert(out);
}
for (size_t i=0; i<inlen; i++) {
out[i*2] = intToHex((in[i] >> 4) & 15);
out[i*2+1] = intToHex((in[i] & 15));
}
}
std::string binToHex(const uint8_t* in, size_t inlen) {
char* buffer = new char[inlen*2+1]();
std::string out;
binToHex(in, inlen, buffer, inlen*2);
out = buffer;
delete [] buffer;
return out;
}
static bool readHexAndShift(char c, uint8_t* v) {
c=tolower(c);
if ((c >= '0') && (c <= '9'))
*v = (*v << 4) + (c - '0');
else if ((c >= 'a') && (c <= 'f'))
*v = (*v << 4) + (c - 'a' + 10);
else
return false;
return true;
}
bool hexToBin(const char* in, size_t inlen,
uint8_t* out, size_t outlen) {
assert(in || inlen == 0);
assert(out || outlen == 0);
if (inlen & 1)
return false;
if (inlen > outlen*2)
inlen = outlen*2;
for(size_t i=0; i<inlen; i+=2) {
uint8_t byte = 0;
if (!readHexAndShift(in[i], &byte) ||
!readHexAndShift(in[i+1], &byte))
return false;
out[i/2] = byte;
}
return true;
}
std::vector<uint8_t> hexToBin(const char* in, size_t inlen) {
std::vector<uint8_t> out(inlen/2);
if (!hexToBin(in, inlen, out.data(), inlen/2))
return std::vector<uint8_t>();
return out;
}
std::string convertLF(const char* src, size_t bytes)
{
size_t sz;
std::string out;
const char* in;
size_t in_len;
// Compute output size
sz = 0;
in = src;
in_len = bytes;
while ((in_len > 0) && (*in != '\0')) {
if (*in != '\r') {
sz++;
in++;
in_len--;
continue;
}
if ((in_len < 2) || (*(in+1) != '\n'))
sz++;
in++;
in_len--;
}
// Reserve space
out.reserve(sz);
// And convert
in = src;
in_len = bytes;
while ((in_len > 0) && (*in != '\0')) {
if (*in != '\r') {
out += *in++;
in_len--;
continue;
}
if ((in_len < 2) || (*(in+1) != '\n'))
out += '\n';
in++;
in_len--;
}
return out;
}
std::string convertCRLF(const char* src, size_t bytes)
{
std::string out;
size_t sz;
const char* in;
size_t in_len;
// Compute output size
sz = 0;
in = src;
in_len = bytes;
while ((in_len > 0) && (*in != '\0')) {
sz++;
if (*in == '\r') {
if ((in_len < 2) || (*(in+1) != '\n'))
sz++;
} else if (*in == '\n') {
if ((in == src) || (*(in-1) != '\r'))
sz++;
}
in++;
in_len--;
}
// Reserve space
out.reserve(sz);
// And convert
in = src;
in_len = bytes;
while ((in_len > 0) && (*in != '\0')) {
if (*in == '\n') {
if ((in == src) || (*(in-1) != '\r'))
out += '\r';
}
out += *in;
if (*in == '\r') {
if ((in_len < 2) || (*(in+1) != '\n'))
out += '\n';
}
in++;
in_len--;
}
return out;
}
size_t ucs4ToUTF8(unsigned src, char dst[5]) {
if (src < 0x80) {
*dst++ = src;
*dst++ = '\0';
return 1;
} else if (src < 0x800) {
*dst++ = 0xc0 | (src >> 6);
*dst++ = 0x80 | (src & 0x3f);
*dst++ = '\0';
return 2;
} else if ((src >= 0xd800) && (src < 0xe000)) {
return ucs4ToUTF8(0xfffd, dst);
} else if (src < 0x10000) {
*dst++ = 0xe0 | (src >> 12);
*dst++ = 0x80 | ((src >> 6) & 0x3f);
*dst++ = 0x80 | (src & 0x3f);
*dst++ = '\0';
return 3;
} else if (src < 0x110000) {
*dst++ = 0xf0 | (src >> 18);
*dst++ = 0x80 | ((src >> 12) & 0x3f);
*dst++ = 0x80 | ((src >> 6) & 0x3f);
*dst++ = 0x80 | (src & 0x3f);
*dst++ = '\0';
return 4;
} else {
return ucs4ToUTF8(0xfffd, dst);
}
}
size_t utf8ToUCS4(const char* src, size_t max, unsigned* dst) {
size_t count, consumed;
*dst = 0xfffd;
if (max == 0)
return 0;
consumed = 1;
if ((*src & 0x80) == 0) {
*dst = *src;
count = 0;
} else if ((*src & 0xe0) == 0xc0) {
*dst = *src & 0x1f;
count = 1;
} else if ((*src & 0xf0) == 0xe0) {
*dst = *src & 0x0f;
count = 2;
} else if ((*src & 0xf8) == 0xf0) {
*dst = *src & 0x07;
count = 3;
} else {
// Invalid sequence, consume all continuation characters
src++;
max--;
while ((max-- > 0) && ((*src++ & 0xc0) == 0x80))
consumed++;
return consumed;
}
src++;
max--;
while (count--) {
consumed++;
// Invalid or truncated sequence?
if ((max == 0) || ((*src & 0xc0) != 0x80)) {
*dst = 0xfffd;
return consumed;
}
*dst <<= 6;
*dst |= *src & 0x3f;
src++;
max--;
}
// UTF-16 surrogate code point?
if ((*dst >= 0xd800) && (*dst < 0xe000))
gitextract_fwbflnoz/
├── .github/
│ ├── ISSUE_TEMPLATE/
│ │ ├── bug_report.md
│ │ ├── config.yml
│ │ └── feature_request.md
│ ├── containers/
│ │ ├── jammy/
│ │ │ ├── Dockerfile
│ │ │ └── build.sh
│ │ ├── noble/
│ │ │ ├── Dockerfile
│ │ │ └── build.sh
│ │ ├── rocky10/
│ │ │ ├── Dockerfile
│ │ │ └── build.sh
│ │ ├── rocky8/
│ │ │ ├── Dockerfile
│ │ │ └── build.sh
│ │ └── rocky9/
│ │ ├── Dockerfile
│ │ └── build.sh
│ └── workflows/
│ ├── build.yml
│ └── test-report.yml
├── .gitignore
├── BUILDING.txt
├── CMakeLists.txt
├── LICENCE.TXT
├── README.rst
├── cmake/
│ ├── Modules/
│ │ ├── CMakeMacroLibtoolFile.cmake
│ │ ├── FindAVCodec.cmake
│ │ ├── FindAVUtil.cmake
│ │ ├── FindGLib.cmake
│ │ ├── FindGMP.cmake
│ │ ├── FindGio.cmake
│ │ ├── FindGobject.cmake
│ │ ├── FindNettle.cmake
│ │ ├── FindPAM.cmake
│ │ ├── FindPWQuality.cmake
│ │ ├── FindPipeWire.cmake
│ │ ├── FindPixman.cmake
│ │ ├── FindSELinux.cmake
│ │ ├── FindSWScale.cmake
│ │ ├── FindSystemd.cmake
│ │ ├── FindUuid.cmake
│ │ ├── FindWaylandClient.cmake
│ │ └── FindXkbcommon.cmake
│ ├── StaticBuild.cmake
│ └── cmake_uninstall.cmake.in
├── common/
│ ├── CMakeLists.txt
│ ├── core/
│ │ ├── CMakeLists.txt
│ │ ├── Configuration.cxx
│ │ ├── Configuration.h
│ │ ├── Exception.cxx
│ │ ├── Exception.h
│ │ ├── LogWriter.cxx
│ │ ├── LogWriter.h
│ │ ├── Logger.cxx
│ │ ├── Logger.h
│ │ ├── Logger_file.cxx
│ │ ├── Logger_file.h
│ │ ├── Logger_stdio.cxx
│ │ ├── Logger_stdio.h
│ │ ├── Logger_syslog.cxx
│ │ ├── Logger_syslog.h
│ │ ├── Rect.h
│ │ ├── Region.cxx
│ │ ├── Region.h
│ │ ├── Timer.cxx
│ │ ├── Timer.h
│ │ ├── string.cxx
│ │ ├── string.h
│ │ ├── time.cxx
│ │ ├── time.h
│ │ ├── winerrno.h
│ │ ├── xdgdirs.cxx
│ │ └── xdgdirs.h
│ ├── network/
│ │ ├── CMakeLists.txt
│ │ ├── Socket.cxx
│ │ ├── Socket.h
│ │ ├── TcpSocket.cxx
│ │ ├── TcpSocket.h
│ │ ├── UnixSocket.cxx
│ │ └── UnixSocket.h
│ ├── rdr/
│ │ ├── AESInStream.cxx
│ │ ├── AESInStream.h
│ │ ├── AESOutStream.cxx
│ │ ├── AESOutStream.h
│ │ ├── BufferedInStream.cxx
│ │ ├── BufferedInStream.h
│ │ ├── BufferedOutStream.cxx
│ │ ├── BufferedOutStream.h
│ │ ├── CMakeLists.txt
│ │ ├── FdInStream.cxx
│ │ ├── FdInStream.h
│ │ ├── FdOutStream.cxx
│ │ ├── FdOutStream.h
│ │ ├── FileInStream.cxx
│ │ ├── FileInStream.h
│ │ ├── HexInStream.cxx
│ │ ├── HexInStream.h
│ │ ├── HexOutStream.cxx
│ │ ├── HexOutStream.h
│ │ ├── InStream.h
│ │ ├── MemInStream.h
│ │ ├── MemOutStream.h
│ │ ├── OutStream.h
│ │ ├── RandomStream.cxx
│ │ ├── RandomStream.h
│ │ ├── TLSException.cxx
│ │ ├── TLSException.h
│ │ ├── TLSInStream.cxx
│ │ ├── TLSInStream.h
│ │ ├── TLSOutStream.cxx
│ │ ├── TLSOutStream.h
│ │ ├── TLSSocket.cxx
│ │ ├── TLSSocket.h
│ │ ├── ZlibInStream.cxx
│ │ ├── ZlibInStream.h
│ │ ├── ZlibOutStream.cxx
│ │ └── ZlibOutStream.h
│ └── rfb/
│ ├── AccessRights.cxx
│ ├── AccessRights.h
│ ├── Blacklist.cxx
│ ├── Blacklist.h
│ ├── CConnection.cxx
│ ├── CConnection.h
│ ├── CMakeLists.txt
│ ├── CMsgHandler.h
│ ├── CMsgReader.cxx
│ ├── CMsgReader.h
│ ├── CMsgWriter.cxx
│ ├── CMsgWriter.h
│ ├── CSecurity.h
│ ├── CSecurityDH.cxx
│ ├── CSecurityDH.h
│ ├── CSecurityMSLogonII.cxx
│ ├── CSecurityMSLogonII.h
│ ├── CSecurityNone.h
│ ├── CSecurityPlain.cxx
│ ├── CSecurityPlain.h
│ ├── CSecurityRSAAES.cxx
│ ├── CSecurityRSAAES.h
│ ├── CSecurityStack.cxx
│ ├── CSecurityStack.h
│ ├── CSecurityTLS.cxx
│ ├── CSecurityTLS.h
│ ├── CSecurityVeNCrypt.cxx
│ ├── CSecurityVeNCrypt.h
│ ├── CSecurityVncAuth.cxx
│ ├── CSecurityVncAuth.h
│ ├── ClientParams.cxx
│ ├── ClientParams.h
│ ├── ComparingUpdateTracker.cxx
│ ├── ComparingUpdateTracker.h
│ ├── Congestion.cxx
│ ├── Congestion.h
│ ├── CopyRectDecoder.cxx
│ ├── CopyRectDecoder.h
│ ├── Cursor.cxx
│ ├── Cursor.h
│ ├── DecodeManager.cxx
│ ├── DecodeManager.h
│ ├── Decoder.cxx
│ ├── Decoder.h
│ ├── EncodeManager.cxx
│ ├── EncodeManager.h
│ ├── Encoder.cxx
│ ├── Encoder.h
│ ├── Exception.h
│ ├── H264Decoder.cxx
│ ├── H264Decoder.h
│ ├── H264DecoderContext.cxx
│ ├── H264DecoderContext.h
│ ├── H264LibavDecoderContext.cxx
│ ├── H264LibavDecoderContext.h
│ ├── H264WinDecoderContext.cxx
│ ├── H264WinDecoderContext.h
│ ├── HextileDecoder.cxx
│ ├── HextileDecoder.h
│ ├── HextileEncoder.cxx
│ ├── HextileEncoder.h
│ ├── JPEGDecoder.cxx
│ ├── JPEGDecoder.h
│ ├── JPEGEncoder.cxx
│ ├── JPEGEncoder.h
│ ├── JpegCompressor.cxx
│ ├── JpegCompressor.h
│ ├── JpegDecompressor.cxx
│ ├── JpegDecompressor.h
│ ├── KeyRemapper.cxx
│ ├── KeyRemapper.h
│ ├── KeysymStr.c
│ ├── KeysymStr.h
│ ├── Palette.h
│ ├── PixelBuffer.cxx
│ ├── PixelBuffer.h
│ ├── PixelFormat.cxx
│ ├── PixelFormat.h
│ ├── PixelFormat.inl
│ ├── RREDecoder.cxx
│ ├── RREDecoder.h
│ ├── RREEncoder.cxx
│ ├── RREEncoder.h
│ ├── RawDecoder.cxx
│ ├── RawDecoder.h
│ ├── RawEncoder.cxx
│ ├── RawEncoder.h
│ ├── SConnection.cxx
│ ├── SConnection.h
│ ├── SDesktop.h
│ ├── SMsgHandler.h
│ ├── SMsgReader.cxx
│ ├── SMsgReader.h
│ ├── SMsgWriter.cxx
│ ├── SMsgWriter.h
│ ├── SSecurity.h
│ ├── SSecurityNone.h
│ ├── SSecurityPlain.cxx
│ ├── SSecurityPlain.h
│ ├── SSecurityRSAAES.cxx
│ ├── SSecurityRSAAES.h
│ ├── SSecurityStack.cxx
│ ├── SSecurityStack.h
│ ├── SSecurityTLS.cxx
│ ├── SSecurityTLS.h
│ ├── SSecurityVeNCrypt.cxx
│ ├── SSecurityVeNCrypt.h
│ ├── SSecurityVncAuth.cxx
│ ├── SSecurityVncAuth.h
│ ├── ScreenSet.h
│ ├── Security.cxx
│ ├── Security.h
│ ├── SecurityClient.cxx
│ ├── SecurityClient.h
│ ├── SecurityServer.cxx
│ ├── SecurityServer.h
│ ├── ServerCore.cxx
│ ├── ServerCore.h
│ ├── ServerParams.cxx
│ ├── ServerParams.h
│ ├── TightConstants.h
│ ├── TightDecoder.cxx
│ ├── TightDecoder.h
│ ├── TightEncoder.cxx
│ ├── TightEncoder.h
│ ├── TightJPEGEncoder.cxx
│ ├── TightJPEGEncoder.h
│ ├── UnixPasswordValidator.cxx
│ ├── UnixPasswordValidator.h
│ ├── UpdateTracker.cxx
│ ├── UpdateTracker.h
│ ├── VNCSConnectionST.cxx
│ ├── VNCSConnectionST.h
│ ├── VNCServer.h
│ ├── VNCServerST.cxx
│ ├── VNCServerST.h
│ ├── WinPasswdValidator.cxx
│ ├── WinPasswdValidator.h
│ ├── XF86keysym.h
│ ├── ZRLEDecoder.cxx
│ ├── ZRLEDecoder.h
│ ├── ZRLEEncoder.cxx
│ ├── ZRLEEncoder.h
│ ├── clipboardTypes.h
│ ├── d3des.c
│ ├── d3des.h
│ ├── encodings.cxx
│ ├── encodings.h
│ ├── fenceTypes.h
│ ├── hextileConstants.h
│ ├── keysymdef.h
│ ├── ks_tables.h
│ ├── ledStates.h
│ ├── msgTypes.h
│ ├── obfuscate.cxx
│ ├── obfuscate.h
│ ├── qemuTypes.h
│ └── screenTypes.h
├── config.h.in
├── contrib/
│ └── packages/
│ ├── deb/
│ │ ├── ubuntu-jammy/
│ │ │ └── debian/
│ │ │ ├── changelog
│ │ │ ├── compat
│ │ │ ├── control
│ │ │ ├── copyright
│ │ │ ├── rules
│ │ │ ├── source/
│ │ │ │ └── format
│ │ │ ├── tigervncserver.postinst.in
│ │ │ ├── tigervncserver.prerm
│ │ │ ├── xorg-source-patches/
│ │ │ │ ├── 516_tigervnc-xorg-manpages.patch
│ │ │ │ └── debian_libtool.patch
│ │ │ ├── xtigervncviewer.menu
│ │ │ ├── xtigervncviewer.postinst
│ │ │ └── xtigervncviewer.prerm
│ │ └── ubuntu-noble/
│ │ └── debian/
│ │ ├── changelog
│ │ ├── compat
│ │ ├── control
│ │ ├── copyright
│ │ ├── rules
│ │ ├── source/
│ │ │ └── format
│ │ ├── tigervncserver.postinst.in
│ │ ├── tigervncserver.prerm
│ │ ├── xorg-source-patches/
│ │ │ ├── 516_tigervnc-xorg-manpages.patch
│ │ │ └── debian_libtool.patch
│ │ ├── xtigervncviewer.menu
│ │ ├── xtigervncviewer.postinst
│ │ └── xtigervncviewer.prerm
│ └── rpm/
│ ├── el10/
│ │ ├── SOURCES/
│ │ │ └── 0001-configure.ac-search-for-the-fontrootdir-ourselves.patch
│ │ └── SPECS/
│ │ └── tigervnc.spec
│ ├── el8/
│ │ ├── SOURCES/
│ │ │ └── 10-libvnc.conf
│ │ └── SPECS/
│ │ └── tigervnc.spec
│ └── el9/
│ ├── SOURCES/
│ │ └── 10-libvnc.conf
│ └── SPECS/
│ └── tigervnc.spec
├── doc/
│ └── keyboard-test.txt
├── java/
│ ├── .gitignore
│ ├── CMakeLists.txt
│ ├── cmake/
│ │ └── SignJar.cmake
│ └── com/
│ ├── jcraft/
│ │ ├── jsch/
│ │ │ ├── Buffer.java
│ │ │ ├── ChangeLog
│ │ │ ├── Channel.java
│ │ │ ├── ChannelAgentForwarding.java
│ │ │ ├── ChannelDirectTCPIP.java
│ │ │ ├── ChannelExec.java
│ │ │ ├── ChannelForwardedTCPIP.java
│ │ │ ├── ChannelSession.java
│ │ │ ├── ChannelSftp.java
│ │ │ ├── ChannelShell.java
│ │ │ ├── ChannelSubsystem.java
│ │ │ ├── ChannelX11.java
│ │ │ ├── Cipher.java
│ │ │ ├── CipherNone.java
│ │ │ ├── Compression.java
│ │ │ ├── ConfigRepository.java
│ │ │ ├── DH.java
│ │ │ ├── DHEC256.java
│ │ │ ├── DHEC384.java
│ │ │ ├── DHEC521.java
│ │ │ ├── DHECN.java
│ │ │ ├── DHG1.java
│ │ │ ├── DHG14.java
│ │ │ ├── DHGEX.java
│ │ │ ├── DHGEX256.java
│ │ │ ├── ECDH.java
│ │ │ ├── ForwardedTCPIPDaemon.java
│ │ │ ├── GSSContext.java
│ │ │ ├── HASH.java
│ │ │ ├── HostKey.java
│ │ │ ├── HostKeyRepository.java
│ │ │ ├── IO.java
│ │ │ ├── Identity.java
│ │ │ ├── IdentityFile.java
│ │ │ ├── IdentityRepository.java
│ │ │ ├── JSch.java
│ │ │ ├── JSchAuthCancelException.java
│ │ │ ├── JSchException.java
│ │ │ ├── JSchPartialAuthException.java
│ │ │ ├── KeyExchange.java
│ │ │ ├── KeyPair.java
│ │ │ ├── KeyPairDSA.java
│ │ │ ├── KeyPairECDSA.java
│ │ │ ├── KeyPairGenDSA.java
│ │ │ ├── KeyPairGenECDSA.java
│ │ │ ├── KeyPairGenRSA.java
│ │ │ ├── KeyPairPKCS8.java
│ │ │ ├── KeyPairRSA.java
│ │ │ ├── KnownHosts.java
│ │ │ ├── LICENSE.txt
│ │ │ ├── LocalIdentityRepository.java
│ │ │ ├── Logger.java
│ │ │ ├── MAC.java
│ │ │ ├── OpenSSHConfig.java
│ │ │ ├── PBKDF.java
│ │ │ ├── Packet.java
│ │ │ ├── PortWatcher.java
│ │ │ ├── Proxy.java
│ │ │ ├── ProxyHTTP.java
│ │ │ ├── ProxySOCKS4.java
│ │ │ ├── ProxySOCKS5.java
│ │ │ ├── README
│ │ │ ├── Random.java
│ │ │ ├── Request.java
│ │ │ ├── RequestAgentForwarding.java
│ │ │ ├── RequestEnv.java
│ │ │ ├── RequestExec.java
│ │ │ ├── RequestPtyReq.java
│ │ │ ├── RequestSftp.java
│ │ │ ├── RequestShell.java
│ │ │ ├── RequestSignal.java
│ │ │ ├── RequestSubsystem.java
│ │ │ ├── RequestWindowChange.java
│ │ │ ├── RequestX11.java
│ │ │ ├── ServerSocketFactory.java
│ │ │ ├── Session.java
│ │ │ ├── SftpATTRS.java
│ │ │ ├── SftpException.java
│ │ │ ├── SftpProgressMonitor.java
│ │ │ ├── SftpStatVFS.java
│ │ │ ├── Signature.java
│ │ │ ├── SignatureDSA.java
│ │ │ ├── SignatureECDSA.java
│ │ │ ├── SignatureRSA.java
│ │ │ ├── SocketFactory.java
│ │ │ ├── UIKeyboardInteractive.java
│ │ │ ├── UserAuth.java
│ │ │ ├── UserAuthGSSAPIWithMIC.java
│ │ │ ├── UserAuthKeyboardInteractive.java
│ │ │ ├── UserAuthNone.java
│ │ │ ├── UserAuthPassword.java
│ │ │ ├── UserAuthPublicKey.java
│ │ │ ├── UserInfo.java
│ │ │ ├── Util.java
│ │ │ ├── jce/
│ │ │ │ ├── AES128CBC.java
│ │ │ │ ├── AES128CTR.java
│ │ │ │ ├── AES192CBC.java
│ │ │ │ ├── AES192CTR.java
│ │ │ │ ├── AES256CBC.java
│ │ │ │ ├── AES256CTR.java
│ │ │ │ ├── ARCFOUR.java
│ │ │ │ ├── ARCFOUR128.java
│ │ │ │ ├── ARCFOUR256.java
│ │ │ │ ├── BlowfishCBC.java
│ │ │ │ ├── DH.java
│ │ │ │ ├── ECDH256.java
│ │ │ │ ├── ECDH384.java
│ │ │ │ ├── ECDH521.java
│ │ │ │ ├── ECDHN.java
│ │ │ │ ├── HMAC.java
│ │ │ │ ├── HMACMD5.java
│ │ │ │ ├── HMACMD596.java
│ │ │ │ ├── HMACSHA1.java
│ │ │ │ ├── HMACSHA196.java
│ │ │ │ ├── HMACSHA256.java
│ │ │ │ ├── HMACSHA512.java
│ │ │ │ ├── KeyPairGenDSA.java
│ │ │ │ ├── KeyPairGenECDSA.java
│ │ │ │ ├── KeyPairGenRSA.java
│ │ │ │ ├── MD5.java
│ │ │ │ ├── PBKDF.java
│ │ │ │ ├── Random.java
│ │ │ │ ├── SHA1.java
│ │ │ │ ├── SHA256.java
│ │ │ │ ├── SHA384.java
│ │ │ │ ├── SHA512.java
│ │ │ │ ├── SignatureDSA.java
│ │ │ │ ├── SignatureECDSA.java
│ │ │ │ ├── SignatureRSA.java
│ │ │ │ ├── TripleDESCBC.java
│ │ │ │ └── TripleDESCTR.java
│ │ │ ├── jcraft/
│ │ │ │ ├── Compression.java
│ │ │ │ ├── HMAC.java
│ │ │ │ ├── HMACMD5.java
│ │ │ │ ├── HMACMD596.java
│ │ │ │ ├── HMACSHA1.java
│ │ │ │ └── HMACSHA196.java
│ │ │ └── jgss/
│ │ │ └── GSSContextKrb5.java
│ │ └── jzlib/
│ │ ├── Adler32.java
│ │ ├── CRC32.java
│ │ ├── ChangeLog
│ │ ├── Checksum.java
│ │ ├── Deflate.java
│ │ ├── Deflater.java
│ │ ├── DeflaterOutputStream.java
│ │ ├── GZIPException.java
│ │ ├── GZIPHeader.java
│ │ ├── GZIPInputStream.java
│ │ ├── GZIPOutputStream.java
│ │ ├── InfBlocks.java
│ │ ├── InfCodes.java
│ │ ├── InfTree.java
│ │ ├── Inflate.java
│ │ ├── Inflater.java
│ │ ├── InflaterInputStream.java
│ │ ├── JZlib.java
│ │ ├── LICENSE.txt
│ │ ├── README
│ │ ├── StaticTree.java
│ │ ├── Tree.java
│ │ ├── ZInputStream.java
│ │ ├── ZOutputStream.java
│ │ ├── ZStream.java
│ │ └── ZStreamException.java
│ └── tigervnc/
│ ├── network/
│ │ ├── FileDescriptor.java
│ │ ├── SSLEngineManager.java
│ │ ├── Socket.java
│ │ ├── SocketDescriptor.java
│ │ ├── SocketException.java
│ │ ├── SocketListener.java
│ │ ├── TcpListener.java
│ │ └── TcpSocket.java
│ ├── rdr/
│ │ ├── AESEAXCipher.java
│ │ ├── AESInStream.java
│ │ ├── AESOutStream.java
│ │ ├── EndOfStream.java
│ │ ├── Exception.java
│ │ ├── FdInStream.java
│ │ ├── FdInStreamBlockCallback.java
│ │ ├── FdOutStream.java
│ │ ├── InStream.java
│ │ ├── MemInStream.java
│ │ ├── MemOutStream.java
│ │ ├── OutStream.java
│ │ ├── SystemException.java
│ │ ├── TLSException.java
│ │ ├── TLSInStream.java
│ │ ├── TLSOutStream.java
│ │ ├── TimedOut.java
│ │ ├── WarningException.java
│ │ └── ZlibInStream.java
│ ├── rfb/
│ │ ├── AliasParameter.java
│ │ ├── AuthFailureException.java
│ │ ├── BoolParameter.java
│ │ ├── CConnection.java
│ │ ├── CMsgHandler.java
│ │ ├── CMsgReader.java
│ │ ├── CMsgWriter.java
│ │ ├── CSecurity.java
│ │ ├── CSecurityIdent.java
│ │ ├── CSecurityNone.java
│ │ ├── CSecurityPlain.java
│ │ ├── CSecurityRSAAES.java
│ │ ├── CSecurityStack.java
│ │ ├── CSecurityTLS.java
│ │ ├── CSecurityVeNCrypt.java
│ │ ├── CSecurityVncAuth.java
│ │ ├── Configuration.java
│ │ ├── ConnFailedException.java
│ │ ├── CopyRectDecoder.java
│ │ ├── Cursor.java
│ │ ├── DecodeManager.java
│ │ ├── Decoder.java
│ │ ├── DesCipher.java
│ │ ├── Encoder.java
│ │ ├── Encodings.java
│ │ ├── Exception.java
│ │ ├── FullFramePixelBuffer.java
│ │ ├── Hextile.java
│ │ ├── HextileDecoder.java
│ │ ├── Hostname.java
│ │ ├── IntParameter.java
│ │ ├── JpegCompressor.java
│ │ ├── JpegDecompressor.java
│ │ ├── Keysym2ucs.java
│ │ ├── Keysymdef.java
│ │ ├── LogWriter.java
│ │ ├── ManagedPixelBuffer.java
│ │ ├── ModifiablePixelBuffer.java
│ │ ├── MsgTypes.java
│ │ ├── PixelBuffer.java
│ │ ├── PixelFormat.java
│ │ ├── Point.java
│ │ ├── RREDecoder.java
│ │ ├── RawDecoder.java
│ │ ├── Rect.java
│ │ ├── Region.java
│ │ ├── Screen.java
│ │ ├── ScreenSet.java
│ │ ├── Security.java
│ │ ├── SecurityClient.java
│ │ ├── ServerParams.java
│ │ ├── StringParameter.java
│ │ ├── TightDecoder.java
│ │ ├── UserMsgBox.java
│ │ ├── UserPasswdGetter.java
│ │ ├── VncAuth.java
│ │ ├── VoidParameter.java
│ │ ├── ZRLEDecoder.java
│ │ ├── fenceTypes.java
│ │ └── screenTypes.java
│ └── vncviewer/
│ ├── CConn.java
│ ├── ClipboardDialog.java
│ ├── DesktopWindow.java
│ ├── Dialog.java
│ ├── ExtProcess.java
│ ├── FileUtils.java
│ ├── JavaPixelBuffer.java
│ ├── KeyMap.java
│ ├── LICENCE.TXT
│ ├── MANIFEST.MF
│ ├── MenuKey.java
│ ├── OptionsDialog.java
│ ├── Parameters.java
│ ├── PasswdDialog.java
│ ├── PlatformPixelBuffer.java
│ ├── README
│ ├── ServerDialog.java
│ ├── Tunnel.java
│ ├── UserDialog.java
│ ├── UserPreferences.java
│ ├── Viewport.java
│ ├── VncViewer.java
│ └── timestamp.in
├── media/
│ ├── CMakeLists.txt
│ ├── icons/
│ │ └── tigervnc.icns
│ ├── insecure.xpm
│ └── secure.xpm
├── po/
│ ├── CMakeLists.txt
│ ├── DO_NOT_EDIT
│ ├── LINGUAS
│ ├── ar.po
│ ├── bg.po
│ ├── checkaccels
│ ├── cs.po
│ ├── da.po
│ ├── de.po
│ ├── el.po
│ ├── eo.po
│ ├── es.po
│ ├── fi.po
│ ├── fr.po
│ ├── fur.po
│ ├── he.po
│ ├── hu.po
│ ├── id.po
│ ├── it.po
│ ├── ka.po
│ ├── ko.po
│ ├── nl.po
│ ├── pl.po
│ ├── pt_BR.po
│ ├── ro.po
│ ├── ru.po
│ ├── sk.po
│ ├── sr.po
│ ├── sv.po
│ ├── tigervnc.pot
│ ├── tr.po
│ ├── uk.po
│ ├── vi.po
│ ├── zh_CN.po
│ └── zh_TW.po
├── release/
│ ├── .gitignore
│ ├── CMakeLists.txt
│ ├── Info.plist.in
│ ├── makemacapp.in
│ ├── maketarball.in
│ ├── tigervnc.iss.in
│ └── winvnc.iss.in
├── tests/
│ ├── .gitignore
│ ├── CMakeLists.txt
│ ├── perf/
│ │ ├── CMakeLists.txt
│ │ ├── convperf.cxx
│ │ ├── decperf.cxx
│ │ ├── encperf.cxx
│ │ ├── fbperf.cxx
│ │ ├── results/
│ │ │ ├── multicore/
│ │ │ │ ├── README
│ │ │ │ └── multicore.ods
│ │ │ └── notrans/
│ │ │ ├── README
│ │ │ ├── armhf.csv
│ │ │ ├── i386.csv
│ │ │ └── x86_64.csv
│ │ ├── util.cxx
│ │ └── util.h
│ └── unit/
│ ├── CMakeLists.txt
│ ├── configargs.cxx
│ ├── conv.cxx
│ ├── convertlf.cxx
│ ├── emulatemb.cxx
│ ├── gesturehandler.cxx
│ ├── hostport.cxx
│ ├── parameters.cxx
│ ├── pixelformat.cxx
│ ├── shortcuthandler.cxx
│ └── unicode.cxx
├── unix/
│ ├── CMakeLists.txt
│ ├── common/
│ │ ├── CMakeLists.txt
│ │ ├── RandrGlue.h
│ │ ├── randr.cxx
│ │ └── unixcommon.h
│ ├── tx/
│ │ ├── CMakeLists.txt
│ │ ├── TXButton.h
│ │ ├── TXCheckbox.h
│ │ ├── TXDialog.h
│ │ ├── TXLabel.h
│ │ ├── TXWindow.cxx
│ │ └── TXWindow.h
│ ├── w0vncserver/
│ │ ├── CMakeLists.txt
│ │ ├── GSocketSource.cxx
│ │ ├── GSocketSource.h
│ │ ├── RFBTimerSource.cxx
│ │ ├── RFBTimerSource.h
│ │ ├── parameters.cxx
│ │ ├── parameters.h
│ │ ├── pipewire/
│ │ │ ├── PipeWirePixelBuffer.cxx
│ │ │ ├── PipeWirePixelBuffer.h
│ │ │ ├── PipeWireSource.cxx
│ │ │ ├── PipeWireSource.h
│ │ │ ├── PipeWireStream.cxx
│ │ │ └── PipeWireStream.h
│ │ ├── portals/
│ │ │ ├── Clipboard.cxx
│ │ │ ├── Clipboard.h
│ │ │ ├── PortalDesktop.cxx
│ │ │ ├── PortalDesktop.h
│ │ │ ├── PortalProxy.cxx
│ │ │ ├── PortalProxy.h
│ │ │ ├── RemoteDesktop.cxx
│ │ │ ├── RemoteDesktop.h
│ │ │ └── portalConstants.h
│ │ ├── qnum_to_xorgevdev.c
│ │ ├── w0vncserver-forget.cxx
│ │ ├── w0vncserver-forget.man
│ │ ├── w0vncserver.cxx
│ │ ├── w0vncserver.h
│ │ ├── w0vncserver.man
│ │ ├── wayland/
│ │ │ ├── GWaylandSource.cxx
│ │ │ ├── GWaylandSource.h
│ │ │ ├── WaylandDesktop.cxx
│ │ │ ├── WaylandDesktop.h
│ │ │ ├── WaylandPixelBuffer.cxx
│ │ │ ├── WaylandPixelBuffer.h
│ │ │ ├── objects/
│ │ │ │ ├── DataControl.cxx
│ │ │ │ ├── DataControl.h
│ │ │ │ ├── Display.cxx
│ │ │ │ ├── Display.h
│ │ │ │ ├── ImageCaptureSource.cxx
│ │ │ │ ├── ImageCaptureSource.h
│ │ │ │ ├── ImageCopyCaptureCursorSession.cxx
│ │ │ │ ├── ImageCopyCaptureCursorSession.h
│ │ │ │ ├── ImageCopyCaptureManager.cxx
│ │ │ │ ├── ImageCopyCaptureManager.h
│ │ │ │ ├── ImageCopyCaptureSession.cxx
│ │ │ │ ├── ImageCopyCaptureSession.h
│ │ │ │ ├── Keyboard.cxx
│ │ │ │ ├── Keyboard.h
│ │ │ │ ├── Object.cxx
│ │ │ │ ├── Object.h
│ │ │ │ ├── Output.cxx
│ │ │ │ ├── Output.h
│ │ │ │ ├── Pointer.cxx
│ │ │ │ ├── Pointer.h
│ │ │ │ ├── ScreencopyManager.cxx
│ │ │ │ ├── ScreencopyManager.h
│ │ │ │ ├── Seat.cxx
│ │ │ │ ├── Seat.h
│ │ │ │ ├── Shm.cxx
│ │ │ │ ├── Shm.h
│ │ │ │ ├── ShmPool.cxx
│ │ │ │ ├── ShmPool.h
│ │ │ │ ├── VirtualKeyboard.cxx
│ │ │ │ ├── VirtualKeyboard.h
│ │ │ │ ├── VirtualPointer.cxx
│ │ │ │ └── VirtualPointer.h
│ │ │ └── protocols/
│ │ │ ├── ext-data-control-v1.xml
│ │ │ ├── ext-foreign-toplevel-list-v1.xml
│ │ │ ├── ext-image-capture-source-v1.xml
│ │ │ ├── ext-image-copy-capture-v1.xml
│ │ │ ├── virtual-keyboard-unstable-v1.xml
│ │ │ ├── wlr-screencopy-unstable-v1.xml
│ │ │ └── wlr-virtual-pointer-unstable-v1.xml
│ │ └── xkb_to_qnum.c
│ ├── xserver/
│ │ ├── .gitignore
│ │ └── hw/
│ │ └── vnc/
│ │ ├── .gitignore
│ │ ├── Makefile.am
│ │ ├── RFBGlue.cc
│ │ ├── RFBGlue.h
│ │ ├── RandrGlue.c
│ │ ├── XorgGlue.c
│ │ ├── XorgGlue.h
│ │ ├── XserverDesktop.cc
│ │ ├── XserverDesktop.h
│ │ ├── Xvnc.man
│ │ ├── buildtime.c
│ │ ├── qnum_to_xorgevdev.c
│ │ ├── qnum_to_xorgkbd.c
│ │ ├── vncBlockHandler.c
│ │ ├── vncBlockHandler.h
│ │ ├── vncDRI3.c
│ │ ├── vncDRI3.h
│ │ ├── vncDRI3Draw.c
│ │ ├── vncExt.c
│ │ ├── vncExtInit.cc
│ │ ├── vncExtInit.h
│ │ ├── vncHooks.c
│ │ ├── vncHooks.h
│ │ ├── vncInput.c
│ │ ├── vncInput.h
│ │ ├── vncInputXKB.c
│ │ ├── vncModule.c
│ │ ├── vncPresent.c
│ │ ├── vncPresent.h
│ │ ├── vncSelection.c
│ │ ├── vncSelection.h
│ │ ├── xorg-version.h
│ │ └── xvnc.c
│ ├── xserver120.patch
│ └── xserver21.patch
└── win/
├── CMakeLists.txt
├── logmessages/
│ ├── messages.h
│ ├── messages.mc
│ └── messages.rc
├── resdefs.h.in
├── rfb_win32/
│ ├── AboutDialog.cxx
│ ├── AboutDialog.h
│ ├── BitmapInfo.h
│ ├── CMakeLists.txt
│ ├── CleanDesktop.cxx
│ ├── CleanDesktop.h
│ ├── Clipboard.cxx
│ ├── Clipboard.h
│ ├── CompatibleBitmap.h
│ ├── ComputerName.h
│ ├── CurrentUser.cxx
│ ├── CurrentUser.h
│ ├── DIBSectionBuffer.cxx
│ ├── DIBSectionBuffer.h
│ ├── DeviceContext.cxx
│ ├── DeviceContext.h
│ ├── DeviceFrameBuffer.cxx
│ ├── DeviceFrameBuffer.h
│ ├── Dialog.cxx
│ ├── Dialog.h
│ ├── EventManager.cxx
│ ├── EventManager.h
│ ├── Handle.h
│ ├── IconInfo.h
│ ├── IntervalTimer.h
│ ├── LaunchProcess.cxx
│ ├── LaunchProcess.h
│ ├── ListViewControl.cxx
│ ├── ListViewControl.h
│ ├── LocalMem.h
│ ├── ModuleFileName.h
│ ├── MonitorInfo.cxx
│ ├── MonitorInfo.h
│ ├── MsgBox.h
│ ├── MsgWindow.cxx
│ ├── MsgWindow.h
│ ├── RegConfig.cxx
│ ├── RegConfig.h
│ ├── Registry.cxx
│ ├── Registry.h
│ ├── SDisplay.cxx
│ ├── SDisplay.h
│ ├── SDisplayCorePolling.cxx
│ ├── SDisplayCorePolling.h
│ ├── SDisplayCoreWMHooks.cxx
│ ├── SDisplayCoreWMHooks.h
│ ├── SInput.cxx
│ ├── SInput.h
│ ├── Security.cxx
│ ├── Security.h
│ ├── SecurityPage.cxx
│ ├── SecurityPage.h
│ ├── Service.cxx
│ ├── Service.h
│ ├── SocketManager.cxx
│ ├── SocketManager.h
│ ├── TrayIcon.h
│ ├── TsSessions.cxx
│ ├── TsSessions.h
│ ├── WMCursor.cxx
│ ├── WMCursor.h
│ ├── WMHooks.cxx
│ ├── WMHooks.h
│ ├── WMNotifier.cxx
│ ├── WMNotifier.h
│ ├── WMPoller.cxx
│ ├── WMPoller.h
│ ├── WMShatter.cxx
│ ├── WMShatter.h
│ ├── WMWindowCopyRect.cxx
│ ├── WMWindowCopyRect.h
│ ├── Win32Util.cxx
│ ├── Win32Util.h
│ ├── keymap.h
│ └── resource.h
├── vncconfig/
│ ├── Authentication.h
│ ├── CMakeLists.txt
│ ├── Connections.h
│ ├── Desktop.h
│ ├── Hooking.h
│ ├── Inputs.h
│ ├── Legacy.cxx
│ ├── Legacy.h
│ ├── PasswordDialog.cxx
│ ├── PasswordDialog.h
│ ├── Sharing.h
│ ├── resource.h
│ ├── vncconfig.cxx
│ ├── vncconfig.exe.manifest
│ ├── vncconfig.exe.manifest64
│ └── vncconfig.rc
├── winvnc/
│ ├── AddNewClientDialog.h
│ ├── CMakeLists.txt
│ ├── ControlPanel.cxx
│ ├── ControlPanel.h
│ ├── ListConnInfo.h
│ ├── ManagedListener.cxx
│ ├── ManagedListener.h
│ ├── QueryConnectDialog.cxx
│ ├── QueryConnectDialog.h
│ ├── STrayIcon.cxx
│ ├── STrayIcon.h
│ ├── VNCServerService.cxx
│ ├── VNCServerService.h
│ ├── VNCServerWin32.cxx
│ ├── VNCServerWin32.h
│ ├── buildTime.cxx
│ ├── resource.h
│ ├── winvnc.cxx
│ ├── winvnc.rc
│ ├── winvnc4.exe.manifest
│ └── winvnc4.exe.manifest64
└── wm_hooks/
├── CMakeLists.txt
├── resource.h
├── wm_hooks.cxx
├── wm_hooks.h
└── wm_hooks.rc
Showing preview only (335K chars total). Download the full file or copy to clipboard to get everything.
SYMBOL INDEX (4077 symbols across 600 files)
FILE: common/core/Configuration.cxx
function Configuration (line 51) | Configuration* Configuration::global() {
function VoidParameter (line 73) | VoidParameter* Configuration::get(const char* param)
function ValueType (line 659) | ValueType ListParameter<ValueType>::normaliseEntry(const ValueType& entr...
class core::ListParameter<int> (line 666) | class core::ListParameter<int>
class core::ListParameter<std::string> (line 716) | class core::ListParameter<std::string>
FILE: common/core/Configuration.h
function namespace (line 55) | namespace core {
function removeParam (line 107) | static bool removeParam(const char* param) {
function handleParamArg (line 110) | static int handleParamArg(int argc, char* argv[], int index) {
function virtual (line 136) | virtual std::string getDefaultStr() const = 0;
function setParam (line 168) | bool setParam() override;
function class (line 194) | class StringParameter : public VoidParameter {
function class (line 206) | class EnumParameter : public VoidParameter {
function class (line 225) | class BinaryParameter : public VoidParameter {
type typename (line 249) | typedef typename ListType::const_iterator const_iterator;
function const_iterator (line 259) | const_iterator begin() const;
function class (line 287) | class StringListParameter : public ListParameter<std::string> {
FILE: common/core/Exception.h
function namespace (line 28) | namespace core {
FILE: common/core/LogWriter.cxx
function LogWriter (line 68) | LogWriter*
FILE: common/core/LogWriter.h
function namespace (line 50) | namespace core {
FILE: common/core/Logger.cxx
function Logger (line 76) | Logger*
FILE: common/core/Logger.h
function namespace (line 31) | namespace core {
FILE: common/core/Logger_file.h
function namespace (line 29) | namespace core {
FILE: common/core/Logger_stdio.h
function namespace (line 26) | namespace core {
FILE: common/core/Logger_syslog.h
function namespace (line 28) | namespace core {
FILE: common/core/Rect.h
function namespace (line 26) | namespace core {
function Rect (line 72) | inline Rect intersect(const Rect &r) const
function Rect (line 82) | inline Rect union_boundary(const Rect &r) const
function Rect (line 94) | inline Rect translate(const Point &p) const
function operator (line 99) | inline bool operator==(const Rect &r) const {return r.tl == tl && r.br =...
function operator (line 100) | inline bool operator!=(const Rect &r) const {return r.tl != tl || r.br !...
function clear (line 102) | inline void clear() {tl = Point(); br = Point();}
function enclosed_by (line 103) | inline bool enclosed_by(const Rect &r) const {
function overlaps (line 106) | inline bool overlaps(const Rect &r) const {
function Point (line 110) | inline Point dimensions() const {return Point(width(), height());}
function contains (line 113) | inline bool contains(const Point &p) const {
FILE: common/core/Region.cxx
type pixman_region16 (line 37) | struct pixman_region16
type pixman_region16 (line 43) | struct pixman_region16
type pixman_region16 (line 49) | struct pixman_region16
function Region (line 60) | Region& Region::operator=(const Region& r)
function Region (line 99) | Region Region::intersect(const Region& r) const
function Region (line 106) | Region Region::union_(const Region& r) const
function Region (line 113) | Region Region::subtract(const Region& r) const
function Rect (line 178) | Rect Region::get_bounding_rect() const
FILE: common/core/Region.h
type pixman_region16 (line 29) | struct pixman_region16
function namespace (line 31) | namespace core {
FILE: common/core/Timer.h
function namespace (line 26) | namespace core {
FILE: common/core/string.cxx
type core (line 32) | namespace core {
function format (line 34) | std::string format(const char *fmt, ...)
function split (line 61) | std::vector<std::string> split(const char* src,
function intToHex (line 84) | static char intToHex(uint8_t i) {
function binToHex (line 93) | void binToHex(const uint8_t* in, size_t inlen,
function binToHex (line 109) | std::string binToHex(const uint8_t* in, size_t inlen) {
function readHexAndShift (line 118) | static bool readHexAndShift(char c, uint8_t* v) {
function hexToBin (line 129) | bool hexToBin(const char* in, size_t inlen,
function hexToBin (line 151) | std::vector<uint8_t> hexToBin(const char* in, size_t inlen) {
function convertLF (line 158) | std::string convertLF(const char* src, size_t bytes)
function convertCRLF (line 208) | std::string convertCRLF(const char* src, size_t bytes)
function ucs4ToUTF8 (line 261) | size_t ucs4ToUTF8(unsigned src, char dst[5]) {
function utf8ToUCS4 (line 291) | size_t utf8ToUCS4(const char* src, size_t max, unsigned* dst) {
function ucs4ToUTF16 (line 348) | size_t ucs4ToUTF16(unsigned src, wchar_t dst[3]) {
function utf16ToUCS4 (line 364) | size_t utf16ToUCS4(const wchar_t* src, size_t max, unsigned* dst) {
function latin1ToUTF8 (line 404) | std::string latin1ToUTF8(const char* src, size_t bytes) {
function utf8ToLatin1 (line 439) | std::string utf8ToLatin1(const char* src, size_t bytes) {
function utf16ToUTF8 (line 483) | std::string utf16ToUTF8(const wchar_t* src, size_t units)
function utf8ToUTF16 (line 529) | std::wstring utf8ToUTF16(const char* src, size_t bytes)
function utf8ToAscii (line 575) | std::string utf8ToAscii(const char* src, size_t bytes)
function isValidUTF8 (line 621) | bool isValidUTF8(const char* str, size_t bytes)
function isValidUTF16 (line 638) | bool isValidUTF16(const wchar_t* wstr, size_t units)
function isValidAscii (line 655) | bool isValidAscii(const char *str, size_t bytes)
function doPrefix (line 666) | static std::string doPrefix(long long value, const char *unit,
function siPrefix (line 694) | std::string siPrefix(long long value, const char *unit,
function iecPrefix (line 701) | std::string iecPrefix(long long value, const char *unit,
FILE: common/core/string.h
function namespace (line 32) | namespace core {
FILE: common/core/time.cxx
type core (line 29) | namespace core {
function msBetween (line 31) | unsigned msBetween(const struct timeval *first,
function msSince (line 45) | unsigned msSince(const struct timeval *then)
function msUntil (line 54) | unsigned msUntil(const struct timeval *then)
function isBefore (line 63) | bool isBefore(const struct timeval *first,
function addMillis (line 75) | struct timeval addMillis(struct timeval inTime, int millis)
FILE: common/core/time.h
type timeval (line 29) | struct timeval
function namespace (line 31) | namespace core {
FILE: common/core/xdgdirs.cxx
type stat (line 49) | struct stat
type passwd (line 54) | struct passwd
FILE: common/core/xdgdirs.h
function namespace (line 25) | namespace core {
FILE: common/network/Socket.cxx
function Socket (line 203) | Socket* SocketListener::accept() {
FILE: common/network/Socket.h
function namespace (line 28) | namespace rdr {
function class (line 39) | class Socket {
FILE: common/network/TcpSocket.cxx
type sockaddr_in (line 83) | struct sockaddr_in
type sockaddr (line 92) | struct sockaddr
type sockaddr (line 96) | struct sockaddr
function isAllSpace (line 103) | static bool isAllSpace(const char *string) {
type addrinfo (line 214) | struct addrinfo
type addrinfo (line 218) | struct addrinfo
type sockaddr (line 383) | struct sockaddr
function Socket (line 430) | Socket* TcpListener::createSocket(int fd_) {
type addrinfo (line 435) | struct addrinfo
type addrinfo (line 440) | struct addrinfo
type addrinfo (line 487) | struct addrinfo
type addrinfo (line 518) | struct addrinfo
type addrinfo (line 524) | struct addrinfo
type addrinfo (line 548) | struct addrinfo
type addrinfo (line 550) | struct addrinfo
function patternMatchIP (line 607) | static bool
type addrinfo (line 707) | struct addrinfo
type addrinfo (line 708) | struct addrinfo
FILE: common/network/TcpSocket.h
function class (line 57) | class TcpSocket : public Socket {
function class (line 69) | class TcpListener : public SocketListener {
FILE: common/network/UnixSocket.cxx
type sockaddr_un (line 80) | struct sockaddr_un
type sockaddr (line 88) | struct sockaddr
type sockaddr_un (line 93) | struct sockaddr_un
type sockaddr (line 97) | struct sockaddr
type sockaddr_un (line 102) | struct sockaddr_un
type sockaddr_un (line 116) | struct sockaddr_un
type sockaddr (line 135) | struct sockaddr
type sockaddr_un (line 155) | struct sockaddr_un
type sockaddr (line 158) | struct sockaddr
function Socket (line 162) | Socket* UnixListener::createSocket(int fd_) {
FILE: common/network/UnixSocket.h
function namespace (line 34) | namespace network {
FILE: common/rdr/AESInStream.h
function namespace (line 28) | namespace rdr {
FILE: common/rdr/AESOutStream.h
function namespace (line 27) | namespace rdr {
FILE: common/rdr/BufferedInStream.cxx
type timeval (line 55) | struct timeval
FILE: common/rdr/BufferedInStream.h
function namespace (line 31) | namespace rdr {
FILE: common/rdr/BufferedOutStream.cxx
type timeval (line 56) | struct timeval
FILE: common/rdr/BufferedOutStream.h
function namespace (line 31) | namespace rdr {
FILE: common/rdr/FdInStream.cxx
type timeval (line 86) | struct timeval
FILE: common/rdr/FdInStream.h
function namespace (line 28) | namespace rdr {
FILE: common/rdr/FdOutStream.cxx
type timeval (line 110) | struct timeval
FILE: common/rdr/FdOutStream.h
function namespace (line 31) | namespace rdr {
FILE: common/rdr/FileInStream.h
function namespace (line 27) | namespace rdr {
FILE: common/rdr/HexInStream.h
function namespace (line 24) | namespace rdr {
FILE: common/rdr/HexOutStream.h
function namespace (line 24) | namespace rdr {
FILE: common/rdr/InStream.h
function namespace (line 39) | namespace rdr {
FILE: common/rdr/MemInStream.h
function namespace (line 32) | namespace rdr {
FILE: common/rdr/MemOutStream.h
function namespace (line 28) | namespace rdr {
FILE: common/rdr/OutStream.h
function namespace (line 34) | namespace rdr {
FILE: common/rdr/RandomStream.h
function namespace (line 33) | namespace rdr {
FILE: common/rdr/TLSException.h
function namespace (line 26) | namespace rdr {
FILE: common/rdr/TLSInStream.h
function namespace (line 28) | namespace rdr {
FILE: common/rdr/TLSOutStream.h
function namespace (line 27) | namespace rdr {
FILE: common/rdr/TLSSocket.h
function namespace (line 33) | namespace rdr {
FILE: common/rdr/ZlibInStream.h
type z_stream_s (line 29) | struct z_stream_s
function namespace (line 31) | namespace rdr {
FILE: common/rdr/ZlibOutStream.h
type z_stream_s (line 30) | struct z_stream_s
function namespace (line 32) | namespace rdr {
FILE: common/rfb/AccessRights.cxx
type rfb (line 25) | namespace rfb
FILE: common/rfb/AccessRights.h
function namespace (line 24) | namespace rfb
FILE: common/rfb/Blacklist.h
function namespace (line 35) | namespace rfb {
FILE: common/rfb/CConnection.h
function namespace (line 37) | namespace rdr {
function namespace (line 42) | namespace rfb {
FILE: common/rfb/CMsgHandler.h
function namespace (line 31) | namespace core {
function namespace (line 36) | namespace rfb {
FILE: common/rfb/CMsgReader.h
function namespace (line 31) | namespace rdr { class InStream; }
function namespace (line 33) | namespace rfb {
FILE: common/rfb/CMsgWriter.h
function namespace (line 30) | namespace core {
function namespace (line 35) | namespace rdr { class OutStream; }
function namespace (line 37) | namespace rfb {
FILE: common/rfb/CSecurity.h
function namespace (line 41) | namespace rfb {
FILE: common/rfb/CSecurityDH.cxx
type md5_ctx (line 125) | struct md5_ctx
type aes128_ctx (line 129) | struct aes128_ctx
FILE: common/rfb/CSecurityDH.h
function namespace (line 31) | namespace rfb {
FILE: common/rfb/CSecurityMSLogonII.cxx
type CBC_CTX (line 135) | struct CBC_CTX
FILE: common/rfb/CSecurityMSLogonII.h
function namespace (line 31) | namespace rfb {
FILE: common/rfb/CSecurityNone.h
function namespace (line 28) | namespace rfb {
FILE: common/rfb/CSecurityPlain.h
function namespace (line 25) | namespace rfb {
FILE: common/rfb/CSecurityRSAAES.cxx
function random_func (line 153) | static void random_func(void*, size_t length, uint8_t* dst)
type sha1_ctx (line 225) | struct sha1_ctx
type sha1_ctx (line 304) | struct sha1_ctx
type sha256_ctx (line 316) | struct sha256_ctx
type sha1_ctx (line 352) | struct sha1_ctx
type sha256_ctx (line 363) | struct sha256_ctx
type sha1_ctx (line 400) | struct sha1_ctx
type sha256_ctx (line 410) | struct sha256_ctx
FILE: common/rfb/CSecurityRSAAES.h
function namespace (line 32) | namespace core { class IntParameter; }
function namespace (line 34) | namespace rdr {
function namespace (line 41) | namespace rfb {
FILE: common/rfb/CSecurityStack.h
function namespace (line 25) | namespace rfb {
FILE: common/rfb/CSecurityTLS.h
function namespace (line 35) | namespace rdr {
function namespace (line 41) | namespace rfb {
FILE: common/rfb/CSecurityVeNCrypt.h
function namespace (line 32) | namespace rfb {
FILE: common/rfb/CSecurityVncAuth.h
function namespace (line 24) | namespace rfb {
FILE: common/rfb/ClientParams.h
function namespace (line 33) | namespace rfb {
function ledState (line 91) | unsigned int ledState() { return ledState_; }
FILE: common/rfb/ComparingUpdateTracker.h
function namespace (line 25) | namespace rfb {
FILE: common/rfb/Congestion.cxx
function isAfter (line 78) | static inline bool isAfter(unsigned a, unsigned b) {
type timeval (line 102) | struct timeval
type RTTInfo (line 151) | struct RTTInfo
type RTTInfo (line 153) | struct RTTInfo
type timeval (line 165) | struct timeval
type RTTInfo (line 166) | struct RTTInfo
type RTTInfo (line 237) | struct RTTInfo
type RTTInfo (line 241) | struct RTTInfo
type RTTInfo (line 261) | struct RTTInfo
type tcp_info (line 327) | struct tcp_info
type timeval (line 334) | struct timeval
type RTTInfo (line 366) | struct RTTInfo
FILE: common/rfb/Congestion.h
function namespace (line 24) | namespace rfb {
FILE: common/rfb/CopyRectDecoder.h
function namespace (line 23) | namespace rfb {
FILE: common/rfb/Cursor.cxx
function ipow (line 65) | static unsigned short ipow(unsigned short val, unsigned short lut[])
function srgb_to_lin (line 81) | static unsigned short srgb_to_lin(unsigned char srgb)
function dither (line 87) | static void dither(int width, int height, int32_t* data)
FILE: common/rfb/Cursor.h
function namespace (line 33) | namespace rfb {
FILE: common/rfb/DecodeManager.h
function namespace (line 32) | namespace core {
function namespace (line 36) | namespace rdr {
function namespace (line 40) | namespace rfb {
FILE: common/rfb/Decoder.cxx
type DecoderFlags (line 43) | enum DecoderFlags
function Decoder (line 90) | Decoder* Decoder::createDecoder(int encoding)
FILE: common/rfb/Decoder.h
function namespace (line 25) | namespace core {
function namespace (line 30) | namespace rdr {
function namespace (line 35) | namespace rfb {
FILE: common/rfb/EncodeManager.cxx
type rfb (line 66) | namespace rfb {
type EncoderClass (line 68) | enum EncoderClass {
type EncoderType (line 79) | enum EncoderType {
type RectInfo (line 89) | struct RectInfo {
type EncoderClass (line 386) | enum EncoderClass
type EncoderClass (line 387) | enum EncoderClass
function Encoder (line 624) | Encoder* EncodeManager::startRect(const core::Rect& rect, int type)
type RectInfo (line 870) | struct RectInfo
function PixelBuffer (line 1073) | PixelBuffer* EncodeManager::preparePixelBuffer(const core::Rect& rect,
type RectInfo (line 1105) | struct RectInfo
type RectInfo (line 1168) | struct RectInfo
FILE: common/rfb/EncodeManager.h
function namespace (line 32) | namespace rfb {
FILE: common/rfb/Encoder.cxx
type EncoderFlags (line 31) | enum EncoderFlags
FILE: common/rfb/Encoder.h
function namespace (line 25) | namespace rfb {
FILE: common/rfb/Exception.h
function namespace (line 24) | namespace rfb {
FILE: common/rfb/H264Decoder.cxx
type rectFlags (line 37) | enum rectFlags {
function H264DecoderContext (line 58) | H264DecoderContext* H264Decoder::findContext(const core::Rect& r)
FILE: common/rfb/H264Decoder.h
function namespace (line 28) | namespace rfb {
FILE: common/rfb/H264DecoderContext.cxx
function H264DecoderContext (line 37) | H264DecoderContext *H264DecoderContext::createContext(const core::Rect &r)
FILE: common/rfb/H264DecoderContext.h
function namespace (line 28) | namespace rfb {
FILE: common/rfb/H264LibavDecoderContext.h
function namespace (line 31) | namespace rfb {
FILE: common/rfb/H264WinDecoderContext.h
function namespace (line 30) | namespace rfb {
FILE: common/rfb/HextileDecoder.cxx
function T (line 150) | inline T HextileDecoder::readPixel(rdr::InStream* is)
FILE: common/rfb/HextileDecoder.h
function namespace (line 24) | namespace rfb {
FILE: common/rfb/HextileEncoder.cxx
class HextileTile (line 304) | class HextileTile {
method getFlags (line 321) | int getFlags() const { return m_flags; }
method getSize (line 327) | size_t getSize() const { return m_size; }
method getBackground (line 332) | int getBackground() const { return m_background; }
method getForeground (line 337) | int getForeground() const { return m_foreground; }
FILE: common/rfb/HextileEncoder.h
function namespace (line 24) | namespace rfb {
FILE: common/rfb/JPEGDecoder.h
function namespace (line 28) | namespace rfb {
FILE: common/rfb/JPEGEncoder.h
function namespace (line 28) | namespace rfb {
FILE: common/rfb/JpegCompressor.cxx
type JPEGConfiguration (line 41) | struct JPEGConfiguration {
type JPEGConfiguration (line 64) | struct JPEGConfiguration
type JPEG_ERROR_MGR (line 90) | struct JPEG_ERROR_MGR {
type jpeg_error_mgr (line 91) | struct jpeg_error_mgr
function JpegErrorExit (line 96) | static void
function JpegOutputMessage (line 105) | static void
type JPEG_DEST_MGR (line 117) | struct JPEG_DEST_MGR {
type jpeg_destination_mgr (line 118) | struct jpeg_destination_mgr
function JpegInitDestination (line 123) | static void
function boolean (line 134) | static boolean
function JpegTermDestination (line 147) | static void
type JPEG_ERROR_MGR (line 162) | struct JPEG_ERROR_MGR
type jpeg_error_mgr (line 91) | struct jpeg_error_mgr
type JPEG_DEST_MGR (line 175) | struct JPEG_DEST_MGR
type jpeg_destination_mgr (line 118) | struct jpeg_destination_mgr
type jpeg_destination_mgr (line 180) | struct jpeg_destination_mgr
FILE: common/rfb/JpegCompressor.h
type jpeg_compress_struct (line 32) | struct jpeg_compress_struct
type JPEG_ERROR_MGR (line 34) | struct JPEG_ERROR_MGR
type JPEG_DEST_MGR (line 35) | struct JPEG_DEST_MGR
function namespace (line 37) | namespace rfb {
FILE: common/rfb/JpegDecompressor.cxx
type JPEG_ERROR_MGR (line 54) | struct JPEG_ERROR_MGR {
type jpeg_error_mgr (line 55) | struct jpeg_error_mgr
function JpegErrorExit (line 60) | static void
function JpegOutputMessage (line 69) | static void
type JPEG_SRC_MGR (line 82) | struct JPEG_SRC_MGR {
type jpeg_source_mgr (line 83) | struct jpeg_source_mgr
function JpegNoOp (line 87) | static void
function boolean (line 92) | static boolean
function JpegSkipInputData (line 99) | static void
type JPEG_ERROR_MGR (line 116) | struct JPEG_ERROR_MGR
type jpeg_error_mgr (line 55) | struct jpeg_error_mgr
type JPEG_SRC_MGR (line 129) | struct JPEG_SRC_MGR
type jpeg_source_mgr (line 83) | struct jpeg_source_mgr
type jpeg_source_mgr (line 136) | struct jpeg_source_mgr
FILE: common/rfb/JpegDecompressor.h
type jpeg_decompress_struct (line 31) | struct jpeg_decompress_struct
type JPEG_ERROR_MGR (line 33) | struct JPEG_ERROR_MGR
type JPEG_SRC_MGR (line 34) | struct JPEG_SRC_MGR
function namespace (line 36) | namespace core { struct Rect; }
function namespace (line 38) | namespace rfb {
FILE: common/rfb/KeyRemapper.cxx
class KeyMapParameter (line 58) | class KeyMapParameter : public core::StringListParameter {
method KeyMapParameter (line 60) | KeyMapParameter()
method setParam (line 69) | bool setParam(const char* v) override {
FILE: common/rfb/KeyRemapper.h
function namespace (line 26) | namespace rfb {
FILE: common/rfb/Palette.h
function namespace (line 27) | namespace rfb {
function insert (line 69) | inline bool rfb::Palette::insert(uint32_t colour, int numPixels)
function lookup (line 147) | inline unsigned char rfb::Palette::lookup(uint32_t colour) const
function getColour (line 167) | inline uint32_t rfb::Palette::getColour(unsigned char index) const
function getCount (line 172) | inline int rfb::Palette::getCount(unsigned char index) const
function genHash (line 177) | inline unsigned char rfb::Palette::genHash(uint32_t colour) const
FILE: common/rfb/PixelBuffer.h
function namespace (line 32) | namespace core { class Region; }
function namespace (line 34) | namespace rfb {
function class (line 104) | class ModifiablePixelBuffer : public PixelBuffer {
function class (line 153) | class FullFramePixelBuffer : public ModifiablePixelBuffer {
function class (line 180) | class ManagedPixelBuffer : public FullFramePixelBuffer {
FILE: common/rfb/PixelFormat.cxx
class PixelFormat::Init (line 43) | class PixelFormat::Init {
function Pixel (line 369) | Pixel PixelFormat::pixelFromPixel(const PixelFormat &srcPF, Pixel src) c...
function bits (line 614) | static int bits(uint16_t value)
function swap (line 717) | static inline uint8_t swap(uint8_t n)
function swap (line 722) | static inline uint16_t swap(uint16_t n)
function swap (line 727) | static inline uint32_t swap(uint32_t n)
FILE: common/rfb/PixelFormat.h
function namespace (line 39) | namespace rdr { class InStream; class OutStream; }
function namespace (line 41) | namespace rfb {
FILE: common/rfb/RREDecoder.cxx
function T (line 83) | inline T RREDecoder::readPixel(rdr::InStream* is)
FILE: common/rfb/RREDecoder.h
function namespace (line 24) | namespace rfb {
FILE: common/rfb/RREEncoder.h
function namespace (line 26) | namespace rfb {
FILE: common/rfb/RawDecoder.h
function namespace (line 23) | namespace rfb {
FILE: common/rfb/RawEncoder.h
function namespace (line 24) | namespace rfb {
FILE: common/rfb/SConnection.h
function namespace (line 35) | namespace rdr {
function namespace (line 40) | namespace rfb {
FILE: common/rfb/SDesktop.h
function namespace (line 45) | namespace core { struct Point; }
function namespace (line 47) | namespace network { class Socket; }
function namespace (line 49) | namespace rfb {
FILE: common/rfb/SMsgHandler.h
function namespace (line 30) | namespace rfb {
FILE: common/rfb/SMsgReader.h
function namespace (line 27) | namespace rdr { class InStream; }
function namespace (line 29) | namespace rfb {
FILE: common/rfb/SMsgWriter.h
function namespace (line 28) | namespace core { struct Rect; }
function namespace (line 30) | namespace rdr { class OutStream; }
function namespace (line 32) | namespace rfb {
FILE: common/rfb/SSecurity.h
function namespace (line 49) | namespace rfb {
FILE: common/rfb/SSecurityNone.h
function namespace (line 27) | namespace rfb {
FILE: common/rfb/SSecurityPlain.cxx
type passwd (line 58) | struct passwd
FILE: common/rfb/SSecurityPlain.h
function namespace (line 26) | namespace core { class StringListParameter; }
function namespace (line 28) | namespace rfb {
FILE: common/rfb/SSecurityRSAAES.cxx
function findSubstr (line 134) | static inline ssize_t findSubstr(uint8_t* data, size_t size, const char ...
function loadPEM (line 148) | static bool loadPEM(uint8_t* data, size_t size, const char *begin,
type rsa_public_key (line 212) | struct rsa_public_key
type asn1_der_iterator (line 230) | struct asn1_der_iterator
type asn1_iterator_result (line 234) | enum asn1_iterator_result
function random_func (line 340) | static void random_func(void* ctx, size_t length, uint8_t* dst)
type sha1_ctx (line 411) | struct sha1_ctx
type sha256_ctx (line 423) | struct sha256_ctx
type sha1_ctx (line 459) | struct sha1_ctx
type sha256_ctx (line 470) | struct sha256_ctx
type sha1_ctx (line 507) | struct sha1_ctx
type sha256_ctx (line 517) | struct sha256_ctx
FILE: common/rfb/SSecurityRSAAES.h
function namespace (line 30) | namespace core {
function namespace (line 35) | namespace rdr {
function namespace (line 42) | namespace rfb {
FILE: common/rfb/SSecurityStack.cxx
function AccessRights (line 74) | AccessRights SSecurityStack::getAccessRights() const
FILE: common/rfb/SSecurityStack.h
function namespace (line 25) | namespace rfb {
FILE: common/rfb/SSecurityTLS.h
function namespace (line 42) | namespace rdr {
function namespace (line 48) | namespace rfb {
FILE: common/rfb/SSecurityVeNCrypt.cxx
function AccessRights (line 187) | AccessRights SSecurityVeNCrypt::getAccessRights() const
FILE: common/rfb/SSecurityVeNCrypt.h
function namespace (line 30) | namespace rfb {
FILE: common/rfb/SSecurityVncAuth.h
function namespace (line 34) | namespace rfb {
function class (line 53) | class SSecurityVncAuth : public SSecurity {
FILE: common/rfb/ScreenSet.h
function namespace (line 33) | namespace rfb {
type ScreenSet (line 65) | struct ScreenSet {
function const_iterator (line 72) | inline const_iterator begin(void) const { return screens.begin(); }
function iterator (line 73) | inline iterator end(void) { return screens.end(); }
function const_iterator (line 74) | inline const_iterator end(void) const { return screens.end(); }
function num_screens (line 76) | inline int num_screens(void) const { return screens.size(); }
function add_screen (line 78) | inline void add_screen(const Screen screen) { screens.push_back(screen); }
function remove_screen (line 79) | inline void remove_screen(uint32_t id) {
function validate (line 88) | inline bool validate(int fb_width, int fb_height) const {
function print (line 113) | inline void print(char* str, size_t len) const {
function r (line 130) | inline bool operator==(const ScreenSet& r) const {
function r (line 137) | inline bool operator!=(const ScreenSet& r) const { return !operator==(r); }
FILE: common/rfb/Security.h
function namespace (line 29) | namespace core {
function namespace (line 34) | namespace rfb {
FILE: common/rfb/SecurityClient.cxx
function CSecurity (line 75) | CSecurity* SecurityClient::GetCSecurity(CConnection* cc, uint32_t secType)
FILE: common/rfb/SecurityClient.h
function namespace (line 27) | namespace rfb {
FILE: common/rfb/SecurityServer.cxx
function SSecurity (line 67) | SSecurity* SecurityServer::GetSSecurity(SConnection* sc, uint32_t secType)
FILE: common/rfb/SecurityServer.h
function namespace (line 25) | namespace rfb {
FILE: common/rfb/ServerCore.h
function namespace (line 29) | namespace rfb {
FILE: common/rfb/ServerParams.h
function namespace (line 28) | namespace rfb {
function ledState (line 71) | unsigned int ledState() { return ledState_; }
FILE: common/rfb/TightConstants.h
function namespace (line 20) | namespace rfb {
FILE: common/rfb/TightDecoder.h
function namespace (line 26) | namespace rfb {
FILE: common/rfb/TightEncoder.cxx
type TightConf (line 39) | struct TightConf {
FILE: common/rfb/TightEncoder.h
function namespace (line 27) | namespace rfb {
FILE: common/rfb/TightJPEGEncoder.h
function namespace (line 26) | namespace rfb {
FILE: common/rfb/UnixPasswordValidator.cxx
type pam_message (line 53) | struct pam_message
type pam_response (line 54) | struct pam_response
function pam_callback (line 56) | static int pam_callback(int count, const struct pam_message **in,
type pam_conv (line 102) | struct pam_conv
FILE: common/rfb/UnixPasswordValidator.h
function namespace (line 26) | namespace rfb
FILE: common/rfb/UpdateTracker.h
function namespace (line 25) | namespace rfb {
FILE: common/rfb/VNCSConnectionST.cxx
class VNCSConnectionSTShiftPresser (line 528) | class VNCSConnectionSTShiftPresser {
method VNCSConnectionSTShiftPresser (line 530) | VNCSConnectionSTShiftPresser(VNCServerST* server_)
method press (line 538) | void press() {
FILE: common/rfb/VNCSConnectionST.h
function namespace (line 38) | namespace rfb {
FILE: common/rfb/VNCServer.h
function namespace (line 31) | namespace network { class Socket; }
function namespace (line 33) | namespace rfb {
FILE: common/rfb/VNCServerST.cxx
function SConnection (line 688) | SConnection* VNCServerST::getConnection(network::Socket* sock) {
function RenderedCursor (line 953) | const RenderedCursor* VNCServerST::getRenderedCursor()
FILE: common/rfb/VNCServerST.h
function namespace (line 36) | namespace rfb {
FILE: common/rfb/WinPasswdValidator.h
function namespace (line 27) | namespace rfb
FILE: common/rfb/ZRLEDecoder.cxx
function readOpaque24A (line 37) | static inline uint32_t readOpaque24A(rdr::InStream* is)
function readOpaque24B (line 46) | static inline uint32_t readOpaque24B(rdr::InStream* is)
function T (line 56) | static inline T readPixel(rdr::ZlibInStream* zis)
function zlibHasData (line 66) | static inline void zlibHasData(rdr::ZlibInStream* zis, size_t length)
FILE: common/rfb/ZRLEDecoder.h
function namespace (line 25) | namespace rfb {
FILE: common/rfb/ZRLEEncoder.h
function namespace (line 26) | namespace rfb {
FILE: common/rfb/clipboardTypes.h
function namespace (line 21) | namespace rfb {
FILE: common/rfb/d3des.c
function deskey (line 66) | void deskey(unsigned char *key, int edf) /* Thanks to James Gillogly & P...
function cookey (line 101) | static void cookey(register unsigned long *raw1)
function cpkey (line 123) | void cpkey(register unsigned long *into)
function usekey (line 132) | void usekey(register unsigned long *from)
function des (line 141) | void des(unsigned char *inblock, unsigned char *outblock)
function scrunch (line 151) | static void scrunch(register unsigned char *outof,
function unscrun (line 165) | static void unscrun(register unsigned long *outof,
function desfunc (line 323) | static void desfunc(register unsigned long *block,
FILE: common/rfb/encodings.h
function namespace (line 22) | namespace rfb {
FILE: common/rfb/fenceTypes.h
function namespace (line 23) | namespace rfb {
FILE: common/rfb/hextileConstants.h
function namespace (line 20) | namespace rfb {
FILE: common/rfb/ledStates.h
function namespace (line 21) | namespace rfb {
FILE: common/rfb/msgTypes.h
function namespace (line 21) | namespace rfb {
FILE: common/rfb/obfuscate.h
function namespace (line 28) | namespace rfb {
FILE: common/rfb/qemuTypes.h
function namespace (line 21) | namespace rfb {
FILE: common/rfb/screenTypes.h
function namespace (line 21) | namespace rfb {
FILE: java/com/jcraft/jsch/Buffer.java
class Buffer (line 32) | public class Buffer{
method Buffer (line 37) | public Buffer(int size){
method Buffer (line 42) | public Buffer(byte[] buffer){
method Buffer (line 47) | public Buffer(){ this(1024*10*2); }
method putByte (line 48) | public void putByte(byte foo){
method putByte (line 51) | public void putByte(byte[] foo) {
method putByte (line 54) | public void putByte(byte[] foo, int begin, int length) {
method putString (line 58) | public void putString(byte[] foo){
method putString (line 61) | public void putString(byte[] foo, int begin, int length) {
method putInt (line 65) | public void putInt(int val) {
method putLong (line 73) | public void putLong(long val) {
method skip (line 86) | void skip(int n) {
method putPad (line 89) | void putPad(int n) {
method putMPInt (line 95) | public void putMPInt(byte[] foo){
method getLength (line 107) | public int getLength(){
method getOffSet (line 110) | public int getOffSet(){
method setOffSet (line 113) | public void setOffSet(int s){
method getLong (line 116) | public long getLong(){
method getInt (line 121) | public int getInt(){
method getUInt (line 126) | public long getUInt(){
method getShort (line 136) | int getShort() {
method getByte (line 141) | public int getByte() {
method getByte (line 144) | public void getByte(byte[] foo) {
method getByte (line 147) | void getByte(byte[] foo, int start, int len) {
method getByte (line 151) | public int getByte(int len) {
method getMPInt (line 156) | public byte[] getMPInt() {
method getMPIntBits (line 167) | public byte[] getMPIntBits() {
method getString (line 180) | public byte[] getString() {
method getString (line 191) | byte[] getString(int[]start, int[]len) {
method reset (line 197) | public void reset(){
method shift (line 201) | public void shift(){
method rewind (line 207) | void rewind(){
method getCommand (line 211) | byte getCommand(){
method checkFreeSize (line 215) | void checkFreeSize(int n){
method getBytes (line 226) | byte[][] getBytes(int n, String msg) throws JSchException {
method fromBytes (line 253) | static Buffer fromBytes(byte[][] args){
FILE: java/com/jcraft/jsch/Channel.java
class Channel (line 39) | public abstract class Channel implements Runnable{
method getChannel (line 52) | static Channel getChannel(String type){
method getChannel (line 82) | static Channel getChannel(int id, Session session){
method del (line 91) | static void del(Channel c){
method Channel (line 126) | Channel(){
method setRecipient (line 132) | synchronized void setRecipient(int foo){
method getRecipient (line 137) | int getRecipient(){
method init (line 141) | void init() throws JSchException {
method connect (line 144) | public void connect() throws JSchException{
method connect (line 148) | public void connect(int connectTimeout) throws JSchException{
method setXForwarding (line 163) | public void setXForwarding(boolean foo){
method start (line 166) | public void start() throws JSchException{}
method isEOF (line 168) | public boolean isEOF() {return eof_remote;}
method getData (line 170) | void getData(Buffer buf){
method setInputStream (line 176) | public void setInputStream(InputStream in){
method setInputStream (line 179) | public void setInputStream(InputStream in, boolean dontclose){
method setOutputStream (line 182) | public void setOutputStream(OutputStream out){
method setOutputStream (line 185) | public void setOutputStream(OutputStream out, boolean dontclose){
method setExtOutputStream (line 188) | public void setExtOutputStream(OutputStream out){
method setExtOutputStream (line 191) | public void setExtOutputStream(OutputStream out, boolean dontclose){
method getInputStream (line 194) | public InputStream getInputStream() throws IOException {
method getExtInputStream (line 210) | public InputStream getExtInputStream() throws IOException {
method getOutputStream (line 226) | public OutputStream getOutputStream() throws IOException {
class MyPipedInputStream (line 328) | class MyPipedInputStream extends PipedInputStream{
method MyPipedInputStream (line 331) | MyPipedInputStream() throws IOException{ super(); }
method MyPipedInputStream (line 332) | MyPipedInputStream(int size) throws IOException{
method MyPipedInputStream (line 338) | MyPipedInputStream(int size, int max_buffer_size) throws IOException{
method MyPipedInputStream (line 342) | MyPipedInputStream(PipedOutputStream out) throws IOException{ super(...
method MyPipedInputStream (line 343) | MyPipedInputStream(PipedOutputStream out, int size) throws IOException{
method updateReadSide (line 355) | public synchronized void updateReadSide() throws IOException {
method freeSpace (line 365) | private int freeSpace(){
method checkSpace (line 376) | synchronized void checkSpace(int len) throws IOException {
method setLocalWindowSizeMax (line 419) | void setLocalWindowSizeMax(int foo){ this.lwsize_max=foo; }
method setLocalWindowSize (line 420) | void setLocalWindowSize(int foo){ this.lwsize=foo; }
method setLocalPacketSize (line 421) | void setLocalPacketSize(int foo){ this.lmpsize=foo; }
method setRemoteWindowSize (line 422) | synchronized void setRemoteWindowSize(long foo){ this.rwsize=foo; }
method addRemoteWindowSize (line 423) | synchronized void addRemoteWindowSize(long foo){
method setRemotePacketSize (line 428) | void setRemotePacketSize(int foo){ this.rmpsize=foo; }
method run (line 430) | public void run(){
method write (line 433) | void write(byte[] foo) throws IOException {
method write (line 436) | void write(byte[] foo, int s, int l) throws IOException {
method write_ext (line 441) | void write_ext(byte[] foo, int s, int l) throws IOException {
method eof_remote (line 447) | void eof_remote(){
method eof (line 455) | void eof(){
method close (line 518) | void close(){
method isClosed (line 540) | public boolean isClosed(){
method disconnect (line 543) | static void disconnect(Session session){
method disconnect (line 564) | public void disconnect(){
method isConnected (line 598) | public boolean isConnected(){
method sendSignal (line 606) | public void sendSignal(String signal) throws Exception {
class PassiveInputStream (line 624) | class PassiveInputStream extends MyPipedInputStream{
method PassiveInputStream (line 626) | PassiveInputStream(PipedOutputStream out, int size) throws IOException{
method PassiveInputStream (line 630) | PassiveInputStream(PipedOutputStream out) throws IOException{
method close (line 634) | public void close() throws IOException{
class PassiveOutputStream (line 641) | class PassiveOutputStream extends PipedOutputStream{
method PassiveOutputStream (line 643) | PassiveOutputStream(PipedInputStream in,
method write (line 650) | public void write(int b) throws IOException {
method write (line 656) | public void write(byte[] b, int off, int len) throws IOException {
method setExitStatus (line 664) | void setExitStatus(int status){ exitstatus=status; }
method getExitStatus (line 665) | public int getExitStatus(){ return exitstatus; }
method setSession (line 667) | void setSession(Session session){
method getSession (line 671) | public Session getSession() throws JSchException{
method getId (line 678) | public int getId(){ return id; }
method sendOpenConfirmation (line 680) | protected void sendOpenConfirmation() throws Exception{
method sendOpenFailure (line 692) | protected void sendOpenFailure(int reasoncode){
method genChannelOpenPacket (line 708) | protected Packet genChannelOpenPacket(){
method sendChannelOpen (line 725) | protected void sendChannelOpen() throws Exception {
FILE: java/com/jcraft/jsch/ChannelAgentForwarding.java
class ChannelAgentForwarding (line 35) | class ChannelAgentForwarding extends Channel{
method ChannelAgentForwarding (line 66) | ChannelAgentForwarding(){
method run (line 82) | public void run(){
method write (line 92) | void write(byte[] foo, int s, int l) throws java.io.IOException {
method send (line 248) | private void send(byte[] message){
method eof_remote (line 262) | void eof_remote(){
FILE: java/com/jcraft/jsch/ChannelDirectTCPIP.java
class ChannelDirectTCPIP (line 34) | public class ChannelDirectTCPIP extends Channel{
method ChannelDirectTCPIP (line 45) | ChannelDirectTCPIP(){
method init (line 53) | void init (){
method connect (line 57) | public void connect(int connectTimeout) throws JSchException{
method run (line 87) | public void run(){
method setInputStream (line 136) | public void setInputStream(InputStream in){
method setOutputStream (line 139) | public void setOutputStream(OutputStream out){
method setHost (line 143) | public void setHost(String host){this.host=host;}
method setPort (line 144) | public void setPort(int port){this.port=port;}
method setOrgIPAddress (line 145) | public void setOrgIPAddress(String foo){this.originator_IP_address=foo;}
method setOrgPort (line 146) | public void setOrgPort(int foo){this.originator_port=foo;}
method genChannelOpenPacket (line 148) | protected Packet genChannelOpenPacket(){
FILE: java/com/jcraft/jsch/ChannelExec.java
class ChannelExec (line 34) | public class ChannelExec extends ChannelSession{
method start (line 38) | public void start() throws JSchException{
method setCommand (line 62) | public void setCommand(String command){
method setCommand (line 65) | public void setCommand(byte[] command){
method init (line 69) | void init() throws JSchException {
method setErrStream (line 74) | public void setErrStream(java.io.OutputStream out){
method setErrStream (line 77) | public void setErrStream(java.io.OutputStream out, boolean dontclose){
method getErrStream (line 80) | public java.io.InputStream getErrStream() throws java.io.IOException {
FILE: java/com/jcraft/jsch/ChannelForwardedTCPIP.java
class ChannelForwardedTCPIP (line 36) | public class ChannelForwardedTCPIP extends Channel{
method ChannelForwardedTCPIP (line 50) | ChannelForwardedTCPIP(){
method run (line 59) | public void run(){
method getData (line 131) | void getData(Buffer buf){
method getPort (line 167) | private static Config getPort(Session session, String address_to_bind,...
method getPortForwarding (line 184) | static String[] getPortForwarding(Session session){
method normalize (line 202) | static String normalize(String address){
method addPort (line 208) | static void addPort(Session session, String _address_to_bind,
method addPort (line 226) | static void addPort(Session session, String _address_to_bind,
method delPort (line 243) | static void delPort(ChannelForwardedTCPIP c){
method delPort (line 254) | static void delPort(Session session, int rport){
method delPort (line 257) | static void delPort(Session session, String address_to_bind, int rport){
method delPort (line 293) | static void delPort(Session session){
method getRemotePort (line 310) | public int getRemotePort(){return (config!=null ? config.rport: 0);}
method setSocketFactory (line 311) | private void setSocketFactory(SocketFactory factory){
class Config (line 315) | static abstract class Config {
class ConfigDaemon (line 323) | static class ConfigDaemon extends Config {
class ConfigLHost (line 327) | static class ConfigLHost extends Config {
FILE: java/com/jcraft/jsch/ChannelSession.java
class ChannelSession (line 34) | class ChannelSession extends Channel{
method ChannelSession (line 50) | ChannelSession(){
method setAgentForwarding (line 61) | public void setAgentForwarding(boolean enable){
method setXForwarding (line 71) | public void setXForwarding(boolean enable){
method setEnv (line 80) | public void setEnv(Hashtable env){
method setEnv (line 96) | public void setEnv(String name, String value){
method setEnv (line 108) | public void setEnv(byte[] name, byte[] value){
method getEnv (line 114) | private Hashtable getEnv(){
method setPty (line 126) | public void setPty(boolean enable){
method setTerminalMode (line 135) | public void setTerminalMode(byte[] terminal_mode){
method setPtySize (line 148) | public void setPtySize(int col, int row, int wp, int hp){
method setPtyType (line 170) | public void setPtyType(String ttype){
method setPtyType (line 184) | public void setPtyType(String ttype, int col, int row, int wp, int hp){
method sendRequests (line 192) | protected void sendRequests() throws Exception{
method toByteArray (line 227) | private byte[] toByteArray(Object o){
method run (line 234) | public void run(){
FILE: java/com/jcraft/jsch/ChannelSftp.java
class ChannelSftp (line 36) | public class ChannelSftp extends ChannelSession{
method setBulkRequests (line 194) | public void setBulkRequests(int bulk_requests) throws JSchException {
method getBulkRequests (line 208) | public int getBulkRequests(){
method ChannelSftp (line 212) | public ChannelSftp(){
method init (line 219) | void init(){
method start (line 222) | public void start() throws JSchException{
method quit (line 320) | public void quit(){ disconnect();}
method exit (line 321) | public void exit(){ disconnect();}
method lcd (line 322) | public void lcd(String path) throws SftpException{
method cd (line 335) | public void cd(String path) throws SftpException{
method put (line 364) | public void put(String src, String dst) throws SftpException{
method put (line 367) | public void put(String src, String dst, int mode) throws SftpException{
method put (line 370) | public void put(String src, String dst,
method put (line 385) | public void put(String src, String dst,
method put (line 491) | public void put(InputStream src, String dst) throws SftpException{
method put (line 494) | public void put(InputStream src, String dst, int mode) throws SftpExce...
method put (line 497) | public void put(InputStream src, String dst,
method put (line 512) | public void put(InputStream src, String dst,
method _put (line 556) | public void _put(InputStream src, String dst,
method put (line 693) | public OutputStream put(String dst) throws SftpException{
method put (line 696) | public OutputStream put(String dst, final int mode) throws SftpException{
method put (line 699) | public OutputStream put(String dst, final SftpProgressMonitor monitor,...
method put (line 714) | public OutputStream put(String dst, final SftpProgressMonitor monitor,...
method get (line 872) | public void get(String src, String dst) throws SftpException{
method get (line 875) | public void get(String src, String dst,
method get (line 879) | public void get(String src, String dst,
method get (line 983) | public void get(String src, OutputStream dst) throws SftpException{
method get (line 986) | public void get(String src, OutputStream dst,
method get (line 990) | public void get(String src, OutputStream dst,
method _get (line 1016) | private void _get(String src, OutputStream dst,
class RequestQueue (line 1166) | private class RequestQueue {
class OutOfOrderException (line 1167) | class OutOfOrderException extends Exception {
method OutOfOrderException (line 1169) | OutOfOrderException(long offset){
class Request (line 1173) | class Request {
method RequestQueue (line 1181) | RequestQueue(int size){
method init (line 1189) | void init(){
method add (line 1193) | void add(int id, long offset, int length){
method get (line 1203) | Request get(int id) throws OutOfOrderException, SftpException {
method count (line 1227) | int count() {
method size (line 1231) | int size() {
method cancel (line 1235) | void cancel(Header header, Buffer buf) throws IOException {
method getOffset (line 1251) | long getOffset(){
method get (line 1265) | public InputStream get(String src) throws SftpException{
method get (line 1268) | public InputStream get(String src, SftpProgressMonitor monitor) throws...
method get (line 1275) | public InputStream get(String src, int mode) throws SftpException{
method get (line 1281) | public InputStream get(String src, final SftpProgressMonitor monitor, ...
method get (line 1284) | public InputStream get(String src, final SftpProgressMonitor monitor, ...
method ls (line 1518) | public java.util.Vector ls(String path) throws SftpException{
method ls (line 1540) | public void ls(String path, LsEntrySelector selector) throws SftpExcep...
method readlink (line 1725) | public String readlink(String path) throws SftpException{
method symlink (line 1775) | public void symlink(String oldpath, String newpath) throws SftpException{
method hardlink (line 1827) | public void hardlink(String oldpath, String newpath) throws SftpExcept...
method rename (line 1879) | public void rename(String oldpath, String newpath) throws SftpException{
method rm (line 1932) | public void rm(String path) throws SftpException{
method isRemoteDir (line 1970) | private boolean isRemoteDir(String path){
method chgrp (line 1991) | public void chgrp(int gid, String path) throws SftpException{
method chown (line 2017) | public void chown(int uid, String path) throws SftpException{
method chmod (line 2043) | public void chmod(int permissions, String path) throws SftpException{
method setMtime (line 2069) | public void setMtime(String path, int mtime) throws SftpException{
method rmdir (line 2095) | public void rmdir(String path) throws SftpException{
method mkdir (line 2134) | public void mkdir(String path) throws SftpException{
method stat (line 2165) | public SftpATTRS stat(String path) throws SftpException{
method _stat (line 2183) | private SftpATTRS _stat(byte[] path) throws SftpException{
method _stat (line 2214) | private SftpATTRS _stat(String path) throws SftpException{
method statVFS (line 2218) | public SftpStatVFS statVFS(String path) throws SftpException{
method _statVFS (line 2236) | private SftpStatVFS _statVFS(byte[] path) throws SftpException{
method _statVFS (line 2274) | private SftpStatVFS _statVFS(String path) throws SftpException{
method lstat (line 2278) | public SftpATTRS lstat(String path) throws SftpException{
method _lstat (line 2295) | private SftpATTRS _lstat(String path) throws SftpException{
method _realpath (line 2324) | private byte[] _realpath(String path) throws SftpException, IOExceptio...
method setStat (line 2355) | public void setStat(String path, SftpATTRS attr) throws SftpException{
method _setStat (line 2375) | private void _setStat(String path, SftpATTRS attr) throws SftpException{
method pwd (line 2402) | public String pwd() throws SftpException{ return getCwd(); }
method lpwd (line 2403) | public String lpwd(){ return lcwd; }
method version (line 2404) | public String version(){ return version; }
method getHome (line 2405) | public String getHome() throws SftpException {
method getCwd (line 2423) | private String getCwd() throws SftpException{
method setCwd (line 2429) | private void setCwd(String cwd){
method read (line 2433) | private void read(byte[] buf, int s, int l) throws IOException, SftpEx...
method checkStatus (line 2445) | private boolean checkStatus(int[] ackid, Header header) throws IOExcep...
method _sendCLOSE (line 2463) | private boolean _sendCLOSE(byte[] handle, Header header) throws Except...
method sendINIT (line 2468) | private void sendINIT() throws Exception{
method sendREALPATH (line 2475) | private void sendREALPATH(byte[] path) throws Exception{
method sendSTAT (line 2478) | private void sendSTAT(byte[] path) throws Exception{
method sendSTATVFS (line 2481) | private void sendSTATVFS(byte[] path) throws Exception{
method sendLSTAT (line 2489) | private void sendLSTAT(byte[] path) throws Exception{
method sendFSTAT (line 2492) | private void sendFSTAT(byte[] handle) throws Exception{
method sendSETSTAT (line 2495) | private void sendSETSTAT(byte[] path, SftpATTRS attr) throws Exception{
method sendREMOVE (line 2503) | private void sendREMOVE(byte[] path) throws Exception{
method sendMKDIR (line 2506) | private void sendMKDIR(byte[] path, SftpATTRS attr) throws Exception{
method sendRMDIR (line 2515) | private void sendRMDIR(byte[] path) throws Exception{
method sendSYMLINK (line 2518) | private void sendSYMLINK(byte[] p1, byte[] p2) throws Exception{
method sendHARDLINK (line 2521) | private void sendHARDLINK(byte[] p1, byte[] p2) throws Exception{
method sendREADLINK (line 2524) | private void sendREADLINK(byte[] path) throws Exception{
method sendOPENDIR (line 2527) | private void sendOPENDIR(byte[] path) throws Exception{
method sendREADDIR (line 2530) | private void sendREADDIR(byte[] path) throws Exception{
method sendRENAME (line 2533) | private void sendRENAME(byte[] p1, byte[] p2) throws Exception{
method sendCLOSE (line 2537) | private void sendCLOSE(byte[] path) throws Exception{
method sendOPENR (line 2540) | private void sendOPENR(byte[] path) throws Exception{
method sendOPENW (line 2543) | private void sendOPENW(byte[] path) throws Exception{
method sendOPENA (line 2546) | private void sendOPENA(byte[] path) throws Exception{
method sendOPEN (line 2549) | private void sendOPEN(byte[] path, int mode) throws Exception{
method sendPacketPath (line 2558) | private void sendPacketPath(byte fxp, byte[] path) throws Exception{
method sendPacketPath (line 2561) | private void sendPacketPath(byte fxp, byte[] path, String extension) t...
method sendPacketPath (line 2578) | private void sendPacketPath(byte fxp, byte[] p1, byte[] p2) throws Exc...
method sendPacketPath (line 2581) | private void sendPacketPath(byte fxp, byte[] p1, byte[] p2, String ext...
method sendWRITE (line 2599) | private int sendWRITE(byte[] handle, long offset,
method sendREAD (line 2622) | private void sendREAD(byte[] handle, long offset, int length) throws E...
method sendREAD (line 2625) | private void sendREAD(byte[] handle, long offset, int length,
method putHEAD (line 2639) | private void putHEAD(Buffer buf, byte type, int length) throws Exception{
method putHEAD (line 2647) | private void putHEAD(byte type, int length) throws Exception{
method glob_remote (line 2651) | private Vector glob_remote(String _path) throws Exception{
method isPattern (line 2768) | private boolean isPattern(byte[] path){
method glob_local (line 2781) | private Vector glob_local(String _path) throws Exception{
method throwStatusError (line 2841) | private void throwStatusError(Buffer buf, int i) throws SftpException{
method isLocalAbsolutePath (line 2853) | private static boolean isLocalAbsolutePath(String path){
method disconnect (line 2857) | public void disconnect(){
method isPattern (line 2861) | private boolean isPattern(String path, byte[][] utf8){
method isPattern (line 2868) | private boolean isPattern(String path){
method fill (line 2872) | private void fill(Buffer buf, int len) throws IOException{
method fill (line 2878) | private int fill(byte[] buf, int s, int len) throws IOException{
method skip (line 2892) | private void skip(long foo) throws IOException{
class Header (line 2901) | class Header{
method header (line 2906) | private Header header(Buffer buf, Header header) throws IOException{
method remoteAbsolutePath (line 2915) | private String remoteAbsolutePath(String path) throws SftpException{
method localAbsolutePath (line 2923) | private String localAbsolutePath(String path){
method isUnique (line 2935) | private String isUnique(String path) throws SftpException, Exception{
method getServerVersion (line 2943) | public int getServerVersion() throws SftpException{
method setFilenameEncoding (line 2950) | public void setFilenameEncoding(String encoding) throws SftpException{
method getExtension (line 2964) | public String getExtension(String key){
method realpath (line 2970) | public String realpath(String path) throws SftpException{
class LsEntry (line 2983) | public class LsEntry implements Comparable{
method LsEntry (line 2987) | LsEntry(String filename, String longname, SftpATTRS attrs){
method getFilename (line 2992) | public String getFilename(){return filename;}
method setFilename (line 2993) | void setFilename(String filename){this.filename = filename;}
method getLongname (line 2994) | public String getLongname(){return longname;}
method setLongname (line 2995) | void setLongname(String longname){this.longname = longname;}
method getAttrs (line 2996) | public SftpATTRS getAttrs(){return attrs;}
method setAttrs (line 2997) | void setAttrs(SftpATTRS attrs) {this.attrs = attrs;}
method toString (line 2998) | public String toString(){ return longname; }
method compareTo (line 2999) | public int compareTo(Object o) throws ClassCastException{
type LsEntrySelector (line 3014) | public interface LsEntrySelector {
method select (line 3026) | public int select(LsEntry entry);
FILE: java/com/jcraft/jsch/ChannelShell.java
class ChannelShell (line 34) | public class ChannelShell extends ChannelSession{
method ChannelShell (line 36) | ChannelShell(){
method start (line 41) | public void start() throws JSchException{
method init (line 66) | void init() throws JSchException {
FILE: java/com/jcraft/jsch/ChannelSubsystem.java
class ChannelSubsystem (line 32) | public class ChannelSubsystem extends ChannelSession{
method setXForwarding (line 37) | public void setXForwarding(boolean foo){ xforwading=foo; }
method setPty (line 38) | public void setPty(boolean foo){ pty=foo; }
method setWantReply (line 39) | public void setWantReply(boolean foo){ want_reply=foo; }
method setSubsystem (line 40) | public void setSubsystem(String foo){ subsystem=foo; }
method start (line 41) | public void start() throws JSchException{
method init (line 72) | void init() throws JSchException {
method setErrStream (line 77) | public void setErrStream(java.io.OutputStream out){
method getErrStream (line 80) | public java.io.InputStream getErrStream() throws java.io.IOException {
FILE: java/com/jcraft/jsch/ChannelX11.java
class ChannelX11 (line 34) | class ChannelX11 extends Channel{
method revtable (line 57) | static int revtable(byte foo){
method setCookie (line 63) | static void setCookie(String foo){
method setHost (line 71) | static void setHost(String foo){ host=foo; }
method setPort (line 72) | static void setPort(int foo){ port=foo; }
method getFakedCookie (line 73) | static byte[] getFakedCookie(Session session){
method removeFakedCookie (line 102) | static void removeFakedCookie(Session session){
method ChannelX11 (line 109) | ChannelX11(){
method run (line 133) | public void run(){
method addCache (line 181) | private byte[] addCache(byte[] foo, int s, int l){
method write (line 190) | void write(byte[] foo, int s, int l) throws java.io.IOException {
method equals (line 266) | private static boolean equals(byte[] foo, byte[] bar){
FILE: java/com/jcraft/jsch/Cipher.java
type Cipher (line 32) | public interface Cipher{
method getIVSize (line 35) | int getIVSize();
method getBlockSize (line 36) | int getBlockSize();
method init (line 37) | void init(int mode, byte[] key, byte[] iv) throws Exception;
method update (line 38) | void update(byte[] foo, int s1, int len, byte[] bar, int s2) throws Ex...
method isCBC (line 39) | boolean isCBC();
FILE: java/com/jcraft/jsch/CipherNone.java
class CipherNone (line 32) | public class CipherNone implements Cipher{
method getIVSize (line 35) | public int getIVSize(){return ivsize;}
method getBlockSize (line 36) | public int getBlockSize(){return bsize;}
method init (line 37) | public void init(int mode, byte[] key, byte[] iv) throws Exception{
method update (line 39) | public void update(byte[] foo, int s1, int len, byte[] bar, int s2) th...
method isCBC (line 41) | public boolean isCBC(){return false; }
FILE: java/com/jcraft/jsch/Compression.java
type Compression (line 32) | public interface Compression{
method init (line 35) | void init(int type, int level);
method compress (line 36) | byte[] compress(byte[] buf, int start, int[] len);
method uncompress (line 37) | byte[] uncompress(byte[] buf, int start, int[] len);
FILE: java/com/jcraft/jsch/ConfigRepository.java
type ConfigRepository (line 32) | public interface ConfigRepository {
method getConfig (line 34) | public Config getConfig(String host);
type Config (line 36) | public interface Config {
method getHostname (line 37) | public String getHostname();
method getUser (line 38) | public String getUser();
method getPort (line 39) | public int getPort();
method getValue (line 40) | public String getValue(String key);
method getValues (line 41) | public String[] getValues(String key);
method getHostname (line 45) | public String getHostname() {return null;}
method getUser (line 46) | public String getUser() {return null;}
method getPort (line 47) | public int getPort() {return -1;}
method getValue (line 48) | public String getValue(String key) {return null;}
method getValues (line 49) | public String[] getValues(String key) {return null;}
method getConfig (line 53) | public Config getConfig(String host) { return defaultConfig; }
FILE: java/com/jcraft/jsch/DH.java
type DH (line 32) | public interface DH{
method init (line 33) | void init() throws Exception;
method setP (line 34) | void setP(byte[] p);
method setG (line 35) | void setG(byte[] g);
method getE (line 36) | byte[] getE() throws Exception;
method setF (line 37) | void setF(byte[] f);
method getK (line 38) | byte[] getK() throws Exception;
method checkRange (line 42) | void checkRange() throws Exception;
FILE: java/com/jcraft/jsch/DHEC256.java
class DHEC256 (line 32) | public class DHEC256 extends DHECN {
method DHEC256 (line 33) | public DHEC256(){
FILE: java/com/jcraft/jsch/DHEC384.java
class DHEC384 (line 32) | public class DHEC384 extends DHECN {
method DHEC384 (line 33) | public DHEC384(){
FILE: java/com/jcraft/jsch/DHEC521.java
class DHEC521 (line 32) | public class DHEC521 extends DHECN {
method DHEC521 (line 33) | public DHEC521(){
FILE: java/com/jcraft/jsch/DHECN.java
class DHECN (line 32) | public abstract class DHECN extends KeyExchange{
method init (line 55) | public void init(Session session,
method next (line 108) | public boolean next(Buffer _buf) throws Exception{
method getState (line 186) | public int getState(){return state; }
FILE: java/com/jcraft/jsch/DHG1.java
class DHG1 (line 32) | public class DHG1 extends KeyExchange{
method init (line 72) | public void init(Session session,
method next (line 127) | public boolean next(Buffer _buf) throws Exception{
method getState (line 195) | public int getState(){return state; }
FILE: java/com/jcraft/jsch/DHG14.java
class DHG14 (line 32) | public class DHG14 extends KeyExchange{
method init (line 88) | public void init(Session session,
method next (line 146) | public boolean next(Buffer _buf) throws Exception{
method getState (line 214) | public int getState(){return state; }
FILE: java/com/jcraft/jsch/DHGEX.java
class DHGEX (line 32) | public class DHGEX extends KeyExchange{
method init (line 61) | public void init(Session session,
method next (line 110) | public boolean next(Buffer _buf) throws Exception{
method getState (line 227) | public int getState(){return state; }
method check2048 (line 229) | protected int check2048(Class c, int _max) throws Exception {
FILE: java/com/jcraft/jsch/DHGEX256.java
class DHGEX256 (line 32) | public class DHGEX256 extends DHGEX {
method DHGEX256 (line 33) | DHGEX256(){
FILE: java/com/jcraft/jsch/ECDH.java
type ECDH (line 32) | public interface ECDH {
method init (line 33) | void init(int size) throws Exception;
method getSecret (line 34) | byte[] getSecret(byte[] r, byte[] s) throws Exception;
method getQ (line 35) | byte[] getQ() throws Exception;
method validate (line 36) | boolean validate(byte[] r, byte[] s) throws Exception;
FILE: java/com/jcraft/jsch/ForwardedTCPIPDaemon.java
type ForwardedTCPIPDaemon (line 33) | public interface ForwardedTCPIPDaemon extends Runnable{
method setChannel (line 34) | void setChannel(ChannelForwardedTCPIP channel, InputStream in, OutputS...
method setArg (line 35) | void setArg(Object[] arg);
FILE: java/com/jcraft/jsch/GSSContext.java
type GSSContext (line 32) | public interface GSSContext{
method create (line 33) | public void create(String user, String host) throws JSchException;
method isEstablished (line 34) | public boolean isEstablished();
method init (line 35) | public byte[] init(byte[] token, int s, int l) throws JSchException;
method getMIC (line 36) | public byte[] getMIC(byte[] message, int s, int l);
method dispose (line 37) | public void dispose();
FILE: java/com/jcraft/jsch/HASH.java
type HASH (line 32) | public interface HASH{
method init (line 33) | void init() throws Exception;
method getBlockSize (line 34) | int getBlockSize();
method update (line 35) | void update(byte[] foo, int start, int len) throws Exception;
method digest (line 36) | byte[] digest() throws Exception;
FILE: java/com/jcraft/jsch/HostKey.java
class HostKey (line 32) | public class HostKey{
method HostKey (line 56) | public HostKey(String host, byte[] key) throws JSchException {
method HostKey (line 60) | public HostKey(String host, int type, byte[] key) throws JSchException {
method HostKey (line 63) | public HostKey(String host, int type, byte[] key, String comment) thro...
method HostKey (line 66) | public HostKey(String marker, String host, int type, byte[] key, Strin...
method getHost (line 84) | public String getHost(){ return host; }
method getType (line 85) | public String getType(){
method name2type (line 95) | protected static int name2type(String name){
method getKey (line 103) | public String getKey(){
method getFingerPrint (line 106) | @SuppressWarnings({"static"}) public String getFingerPrint(JSch jsch){
method getComment (line 115) | public String getComment(){ return comment; }
method getMarker (line 116) | public String getMarker(){ return marker; }
method isMatched (line 118) | boolean isMatched(String _host){
method isIncluded (line 122) | private boolean isIncluded(String _host){
FILE: java/com/jcraft/jsch/HostKeyRepository.java
type HostKeyRepository (line 32) | public interface HostKeyRepository{
method check (line 45) | int check(String host, byte[] key);
method add (line 54) | void add(HostKey hostkey, UserInfo ui);
method remove (line 62) | void remove(String host, String type);
method remove (line 68) | void remove(String host, String type, byte[] key);
method getKnownHostsRepositoryID (line 75) | String getKnownHostsRepositoryID();
method getHostKey (line 82) | HostKey[] getHostKey();
method getHostKey (line 93) | HostKey[] getHostKey(String host, String type);
FILE: java/com/jcraft/jsch/IO.java
class IO (line 34) | public class IO{
method setOutputStream (line 43) | void setOutputStream(OutputStream out){ this.out=out; }
method setOutputStream (line 44) | void setOutputStream(OutputStream out, boolean dontclose){
method setExtOutputStream (line 48) | void setExtOutputStream(OutputStream out){ this.out_ext=out; }
method setExtOutputStream (line 49) | void setExtOutputStream(OutputStream out, boolean dontclose){
method setInputStream (line 53) | void setInputStream(InputStream in){ this.in=in; }
method setInputStream (line 54) | void setInputStream(InputStream in, boolean dontclose){
method put (line 59) | public void put(Packet p) throws IOException, java.net.SocketException {
method put (line 63) | void put(byte[] array, int begin, int length) throws IOException {
method put_ext (line 67) | void put_ext(byte[] array, int begin, int length) throws IOException {
method getByte (line 72) | int getByte() throws IOException {
method getByte (line 76) | void getByte(byte[] array) throws IOException {
method getByte (line 80) | void getByte(byte[] array, int begin, int length) throws IOException {
method out_close (line 92) | void out_close(){
method close (line 100) | public void close(){
FILE: java/com/jcraft/jsch/Identity.java
type Identity (line 32) | public interface Identity{
method setPassphrase (line 40) | public boolean setPassphrase(byte[] passphrase) throws JSchException;
method getPublicKeyBlob (line 46) | public byte[] getPublicKeyBlob();
method getSignature (line 53) | public byte[] getSignature(byte[] data);
method decrypt (line 59) | public boolean decrypt();
method getAlgName (line 65) | public String getAlgName();
method getName (line 71) | public String getName();
method isEncrypted (line 77) | public boolean isEncrypted();
method clear (line 82) | public void clear();
FILE: java/com/jcraft/jsch/IdentityFile.java
class IdentityFile (line 34) | class IdentityFile implements Identity{
method newInstance (line 39) | static IdentityFile newInstance(String prvfile, String pubfile, JSch j...
method newInstance (line 44) | static IdentityFile newInstance(String name, byte[] prvkey, byte[] pub...
method IdentityFile (line 50) | private IdentityFile(JSch jsch, String name, KeyPair kpair) throws JSc...
method setPassphrase (line 62) | public boolean setPassphrase(byte[] passphrase) throws JSchException{
method getPublicKeyBlob (line 70) | public byte[] getPublicKeyBlob(){
method getSignature (line 79) | public byte[] getSignature(byte[] data){
method decrypt (line 87) | public boolean decrypt(){
method getAlgName (line 95) | public String getAlgName(){
method getName (line 103) | public String getName(){
method isEncrypted (line 111) | public boolean isEncrypted(){
method clear (line 118) | public void clear(){
method getKeyPair (line 127) | public KeyPair getKeyPair(){
FILE: java/com/jcraft/jsch/IdentityRepository.java
type IdentityRepository (line 34) | public interface IdentityRepository {
method getName (line 38) | public String getName();
method getStatus (line 39) | public int getStatus();
method getIdentities (line 40) | public Vector getIdentities();
method add (line 41) | public boolean add(byte[] identity);
method remove (line 42) | public boolean remove(byte[] blob);
method removeAll (line 43) | public void removeAll();
class Wrapper (line 52) | static class Wrapper implements IdentityRepository {
method Wrapper (line 56) | Wrapper(IdentityRepository ir){
method Wrapper (line 59) | Wrapper(IdentityRepository ir, boolean keep_in_cache){
method getName (line 63) | public String getName() {
method getStatus (line 66) | public int getStatus() {
method add (line 69) | public boolean add(byte[] identity) {
method remove (line 72) | public boolean remove(byte[] blob) {
method removeAll (line 75) | public void removeAll() {
method getIdentities (line 79) | public Vector getIdentities() {
method add (line 91) | void add(Identity identity) {
method check (line 104) | void check() {
FILE: java/com/jcraft/jsch/JSch.java
class JSch (line 35) | public class JSch{
method setIdentityRepository (line 160) | public synchronized void setIdentityRepository(IdentityRepository iden...
method getIdentityRepository (line 169) | public synchronized IdentityRepository getIdentityRepository(){
method getConfigRepository (line 173) | public ConfigRepository getConfigRepository() {
method setConfigRepository (line 177) | public void setConfigRepository(ConfigRepository configRepository) {
method isEnabled (line 184) | public boolean isEnabled(int level){return false;}
method log (line 185) | public void log(int level, String message){}
method JSch (line 189) | public JSch(){
method getSession (line 224) | public Session getSession(String host)
method getSession (line 247) | public Session getSession(String username, String host)
method getSession (line 270) | public Session getSession(String username, String host, int port) thro...
method addSession (line 278) | protected void addSession(Session session){
method removeSession (line 284) | protected boolean removeSession(Session session){
method setHostKeyRepository (line 298) | public void setHostKeyRepository(HostKeyRepository hkrepo){
method setKnownHosts (line 313) | public void setKnownHosts(String filename) throws JSchException{
method setKnownHosts (line 333) | public void setKnownHosts(InputStream stream) throws JSchException{
method getHostKeyRepository (line 351) | public HostKeyRepository getHostKeyRepository(){
method addIdentity (line 366) | public void addIdentity(String prvkey) throws JSchException{
method addIdentity (line 383) | public void addIdentity(String prvkey, String passphrase) throws JSchE...
method addIdentity (line 406) | public void addIdentity(String prvkey, byte[] passphrase) throws JSchE...
method addIdentity (line 423) | public void addIdentity(String prvkey, String pubkey, byte[] passphras...
method addIdentity (line 441) | public void addIdentity(String name, byte[]prvkey, byte[]pubkey, byte[...
method addIdentity (line 457) | public void addIdentity(Identity identity, byte[] passphrase) throws J...
method removeIdentity (line 489) | public void removeIdentity(String name) throws JSchException{
method removeIdentity (line 510) | public void removeIdentity(Identity identity) throws JSchException{
method getIdentityNames (line 521) | public Vector getIdentityNames() throws JSchException{
method removeAllIdentity (line 536) | public void removeAllIdentity() throws JSchException{
method getConfig (line 546) | public static String getConfig(String key){
method setConfig (line 557) | public static void setConfig(java.util.Hashtable newconf){
method setConfig (line 572) | public static void setConfig(String key, String value){
method setLogger (line 583) | public static void setLogger(Logger logger){
method getLogger (line 588) | static Logger getLogger(){
FILE: java/com/jcraft/jsch/JSchAuthCancelException.java
class JSchAuthCancelException (line 32) | class JSchAuthCancelException extends JSchException{
method JSchAuthCancelException (line 35) | JSchAuthCancelException () {
method JSchAuthCancelException (line 38) | JSchAuthCancelException (String s) {
method getMethod (line 42) | public String getMethod(){
FILE: java/com/jcraft/jsch/JSchException.java
class JSchException (line 32) | public class JSchException extends Exception{
method JSchException (line 35) | public JSchException () {
method JSchException (line 38) | public JSchException (String s) {
method JSchException (line 41) | public JSchException (String s, Throwable e) {
method getCause (line 45) | public Throwable getCause(){
FILE: java/com/jcraft/jsch/JSchPartialAuthException.java
class JSchPartialAuthException (line 32) | class JSchPartialAuthException extends JSchException{
method JSchPartialAuthException (line 35) | public JSchPartialAuthException () {
method JSchPartialAuthException (line 38) | public JSchPartialAuthException (String s) {
method getMethods (line 42) | public String getMethods(){
FILE: java/com/jcraft/jsch/KeyExchange.java
class KeyExchange (line 32) | public abstract class KeyExchange{
method init (line 70) | public abstract void init(Session session,
method next (line 72) | public abstract boolean next(Buffer buf) throws Exception;
method getState (line 74) | public abstract int getState();
method getKeyType (line 82) | public String getKeyType() {
method getKeyAlgorithName (line 88) | public String getKeyAlgorithName() {
method guess (line 92) | protected static String[] guess(byte[]I_S, byte[]I_C){
method getFingerPrint (line 160) | public String getFingerPrint(){
method getK (line 169) | byte[] getK(){ return K; }
method getH (line 170) | byte[] getH(){ return H; }
method getHash (line 171) | HASH getHash(){ return sha; }
method getHostKey (line 172) | byte[] getHostKey(){ return K_S; }
method normalize (line 179) | protected byte[] normalize(byte[] secret) {
method verify (line 191) | protected boolean verify(String alg, byte[] K_S, int index,
FILE: java/com/jcraft/jsch/KeyPair.java
class KeyPair (line 37) | public abstract class KeyPair{
method genKeyPair (line 53) | public static KeyPair genKeyPair(JSch jsch, int type) throws JSchExcep...
method genKeyPair (line 56) | public static KeyPair genKeyPair(JSch jsch, int type, int key_size) th...
method generate (line 67) | abstract void generate(int key_size) throws JSchException;
method getBegin (line 69) | abstract byte[] getBegin();
method getEnd (line 70) | abstract byte[] getEnd();
method getKeySize (line 71) | abstract int getKeySize();
method getSignature (line 73) | public abstract byte[] getSignature(byte[] data);
method getVerifier (line 74) | public abstract Signature getVerifier();
method forSSHAgent (line 76) | public abstract byte[] forSSHAgent() throws JSchException;
method getPublicKeyComment (line 78) | public String getPublicKeyComment(){
method setPublicKeyComment (line 82) | public void setPublicKeyComment(String publicKeyComment){
method KeyPair (line 95) | public KeyPair(JSch jsch){
method getPrivateKey (line 102) | abstract byte[] getPrivateKey();
method writePrivateKey (line 109) | public void writePrivateKey(java.io.OutputStream out){
method writePrivateKey (line 118) | public void writePrivateKey(java.io.OutputStream out, byte[] passphrase){
method getKeyTypeName (line 163) | abstract byte[] getKeyTypeName();
method getKeyType (line 164) | public abstract int getKeyType();
method getPublicKeyBlob (line 170) | public byte[] getPublicKeyBlob() {
method writePublicKey (line 182) | public void writePublicKey(java.io.OutputStream out, String comment){
method writePublicKey (line 201) | public void writePublicKey(String name, String comment) throws java.io...
method writeSECSHPublicKey (line 213) | public void writeSECSHPublicKey(java.io.OutputStream out, String comme...
method writeSECSHPublicKey (line 239) | public void writeSECSHPublicKey(String name, String comment) throws ja...
method writePrivateKey (line 250) | public void writePrivateKey(String name) throws java.io.FileNotFoundEx...
method writePrivateKey (line 260) | public void writePrivateKey(String name, byte[] passphrase) throws jav...
method getFingerPrint (line 270) | public String getFingerPrint(){
method encrypt (line 277) | private byte[] encrypt(byte[] plain, byte[][] _iv, byte[] passphrase){
method parse (line 313) | abstract boolean parse(byte[] data);
method decrypt (line 315) | private byte[] decrypt(byte[] data, byte[] passphrase, byte[] iv){
method writeSEQUENCE (line 331) | int writeSEQUENCE(byte[] buf, int index, int len){
method writeINTEGER (line 336) | int writeINTEGER(byte[] buf, int index, byte[] data){
method writeOCTETSTRING (line 344) | int writeOCTETSTRING(byte[] buf, int index, byte[] data){
method writeDATA (line 352) | int writeDATA(byte[] buf, byte n, int index, byte[] data){
method countLength (line 360) | int countLength(int len){
method writeLength (line 370) | int writeLength(byte[] data, int index, int len){
method genRandom (line 386) | @SuppressWarnings({"static"}) private Random genRandom(){
method genHash (line 397) | @SuppressWarnings({"static"}) private HASH genHash(){
method genCipher (line 407) | @SuppressWarnings({"static"}) private Cipher genCipher(){
method genKey (line 424) | @SuppressWarnings({"static"}) synchronized byte[] genKey(byte[] passph...
method setPassphrase (line 478) | public void setPassphrase(String passphrase){
method setPassphrase (line 490) | public void setPassphrase(byte[] passphrase){
method isEncrypted (line 501) | public boolean isEncrypted(){ return encrypted; }
method decrypt (line 502) | public boolean decrypt(String _passphrase){
method decrypt (line 508) | public boolean decrypt(byte[] _passphrase){
method load (line 527) | public static KeyPair load(JSch jsch, String prvkey) throws JSchExcept...
method load (line 534) | public static KeyPair load(JSch jsch, String prvfile, String pubfile) ...
method load (line 568) | @SuppressWarnings({"static"}) public static KeyPair load(JSch jsch, by...
method a2b (line 956) | static private byte a2b(byte c){
method b2a (line 960) | static private byte b2a(byte c){
method dispose (line 965) | public void dispose(){
method finalize (line 969) | public void finalize (){
method loadPPK (line 988) | @SuppressWarnings({"static"}) static KeyPair loadPPK(JSch jsch, byte[]...
method parseLines (line 1092) | private static byte[] parseLines(Buffer buffer, int lines){
method parseHeader (line 1126) | private static boolean parseHeader(Buffer buffer, java.util.Hashtable v){
method copy (line 1169) | void copy(KeyPair kpair){
class ASN1Exception (line 1176) | class ASN1Exception extends Exception {
class ASN1 (line 1179) | class ASN1 {
method ASN1 (line 1183) | ASN1(byte[] buf) throws ASN1Exception {
method ASN1 (line 1186) | ASN1(byte[] buf, int start, int length) throws ASN1Exception {
method getType (line 1193) | int getType() {
method isSEQUENCE (line 1196) | boolean isSEQUENCE() {
method isINTEGER (line 1199) | boolean isINTEGER() {
method isOBJECT (line 1202) | boolean isOBJECT() {
method isOCTETSTRING (line 1205) | boolean isOCTETSTRING() {
method getLength (line 1208) | private int getLength(int[] indexp) {
method getContent (line 1218) | byte[] getContent() {
method getContents (line 1227) | ASN1[] getContents() throws ASN1Exception {
FILE: java/com/jcraft/jsch/KeyPairDSA.java
class KeyPairDSA (line 32) | public class KeyPairDSA extends KeyPair{
method KeyPairDSA (line 42) | public KeyPairDSA(JSch jsch){
method KeyPairDSA (line 46) | public KeyPairDSA(JSch jsch,
method generate (line 62) | @SuppressWarnings({"static"}) void generate(int key_size) throws JSchE...
method getBegin (line 87) | byte[] getBegin(){ return begin; }
method getEnd (line 88) | byte[] getEnd(){ return end; }
method getPrivateKey (line 90) | byte[] getPrivateKey(){
method parse (line 114) | boolean parse(byte[] plain){
method getPublicKeyBlob (line 228) | public byte[] getPublicKeyBlob(){
method getKeyTypeName (line 243) | byte[] getKeyTypeName(){return sshdss;}
method getKeyType (line 244) | public int getKeyType(){return DSA;}
method getKeySize (line 246) | public int getKeySize(){
method getSignature (line 250) | @SuppressWarnings({"static"}) public byte[] getSignature(byte[] data){
method getVerifier (line 270) | @SuppressWarnings({"static"}) public Signature getVerifier(){
method fromSSHAgent (line 294) | static KeyPair fromSSHAgent(JSch jsch, Buffer buf) throws JSchException {
method forSSHAgent (line 311) | public byte[] forSSHAgent() throws JSchException {
method dispose (line 328) | public void dispose(){
FILE: java/com/jcraft/jsch/KeyPairECDSA.java
class KeyPairECDSA (line 32) | public class KeyPairECDSA extends KeyPair{
method KeyPairECDSA (line 54) | public KeyPairECDSA(JSch jsch){
method KeyPairECDSA (line 58) | public KeyPairECDSA(JSch jsch,
method generate (line 74) | @SuppressWarnings({"static"}) void generate(int key_size) throws JSchE...
method getBegin (line 99) | byte[] getBegin(){ return begin; }
method getEnd (line 100) | byte[] getEnd(){ return end; }
method getPrivateKey (line 102) | byte[] getPrivateKey(){
method parse (line 146) | boolean parse(byte[] plain){
method getPublicKeyBlob (line 257) | public byte[] getPublicKeyBlob(){
method getKeyTypeName (line 275) | byte[] getKeyTypeName(){
method getKeyType (line 278) | public int getKeyType(){
method getKeySize (line 281) | public int getKeySize(){
method getSignature (line 285) | @SuppressWarnings({"static"}) public byte[] getSignature(byte[] data){
method getVerifier (line 306) | @SuppressWarnings({"static"}) public Signature getVerifier(){
method fromSSHAgent (line 329) | static KeyPair fromSSHAgent(JSch jsch, Buffer buf) throws JSchException {
method forSSHAgent (line 348) | public byte[] forSSHAgent() throws JSchException {
method toPoint (line 363) | static byte[] toPoint(byte[] r_array, byte[] s_array) {
method fromPoint (line 371) | static byte[][] fromPoint(byte[] point) {
method dispose (line 387) | public void dispose(){
FILE: java/com/jcraft/jsch/KeyPairGenDSA.java
type KeyPairGenDSA (line 32) | public interface KeyPairGenDSA{
method init (line 33) | void init(int key_size) throws Exception;
method getX (line 34) | byte[] getX();
method getY (line 35) | byte[] getY();
method getP (line 36) | byte[] getP();
method getQ (line 37) | byte[] getQ();
method getG (line 38) | byte[] getG();
FILE: java/com/jcraft/jsch/KeyPairGenECDSA.java
type KeyPairGenECDSA (line 32) | public interface KeyPairGenECDSA{
method init (line 33) | void init(int key_size) throws Exception;
method getD (line 34) | byte[] getD();
method getR (line 35) | byte[] getR();
method getS (line 36) | byte[] getS();
FILE: java/com/jcraft/jsch/KeyPairGenRSA.java
type KeyPairGenRSA (line 32) | public interface KeyPairGenRSA{
method init (line 33) | void init(int key_size) throws Exception;
method getD (line 34) | byte[] getD();
method getE (line 35) | byte[] getE();
method getN (line 36) | byte[] getN();
method getC (line 38) | byte[] getC();
method getEP (line 39) | byte[] getEP();
method getEQ (line 40) | byte[] getEQ();
method getP (line 41) | byte[] getP();
method getQ (line 42) | byte[] getQ();
FILE: java/com/jcraft/jsch/KeyPairPKCS8.java
class KeyPairPKCS8 (line 35) | public class KeyPairPKCS8 extends KeyPair {
method KeyPairPKCS8 (line 78) | public KeyPairPKCS8(JSch jsch){
method generate (line 82) | void generate(int key_size) throws JSchException{
method getBegin (line 88) | byte[] getBegin(){ return begin; }
method getEnd (line 89) | byte[] getEnd(){ return end; }
method getPrivateKey (line 91) | byte[] getPrivateKey(){
method parse (line 95) | boolean parse(byte[] plain){
method getPublicKeyBlob (line 198) | public byte[] getPublicKeyBlob(){
method getKeyTypeName (line 202) | byte[] getKeyTypeName(){ return kpair.getKeyTypeName();}
method getKeyType (line 203) | public int getKeyType(){return kpair.getKeyType();}
method getKeySize (line 205) | public int getKeySize(){
method getSignature (line 209) | public byte[] getSignature(byte[] data){
method getVerifier (line 213) | public Signature getVerifier(){
method forSSHAgent (line 217) | public byte[] forSSHAgent() throws JSchException {
method decrypt (line 221) | @SuppressWarnings({"static"}) public boolean decrypt(byte[] _passphrase){
method getCipher (line 333) | @SuppressWarnings({"static"}) Cipher getCipher(byte[] id){
FILE: java/com/jcraft/jsch/KeyPairRSA.java
class KeyPairRSA (line 34) | public class KeyPairRSA extends KeyPair{
method KeyPairRSA (line 47) | public KeyPairRSA(JSch jsch){
method KeyPairRSA (line 51) | public KeyPairRSA(JSch jsch,
method generate (line 64) | @SuppressWarnings({"static"}) void generate(int key_size) throws JSchE...
method getBegin (line 93) | byte[] getBegin(){ return begin; }
method getEnd (line 94) | byte[] getEnd(){ return end; }
method getPrivateKey (line 96) | byte[] getPrivateKey(){
method parse (line 126) | boolean parse(byte [] plain){
method getPublicKeyBlob (line 299) | public byte[] getPublicKeyBlob(){
method getKeyTypeName (line 312) | byte[] getKeyTypeName(){return sshrsa;}
method getKeyType (line 313) | public int getKeyType(){return RSA;}
method getKeySize (line 315) | public int getKeySize(){
method getSignature (line 319) | @SuppressWarnings({"static"}) public byte[] getSignature(byte[] data){
method getVerifier (line 338) | @SuppressWarnings({"static"}) public Signature getVerifier(){
method fromSSHAgent (line 359) | static KeyPair fromSSHAgent(JSch jsch, Buffer buf) throws JSchException {
method forSSHAgent (line 375) | public byte[] forSSHAgent() throws JSchException {
method getEPArray (line 393) | private byte[] getEPArray(){
method getEQArray (line 400) | private byte[] getEQArray(){
method getCArray (line 407) | private byte[] getCArray(){
method dispose (line 414) | public void dispose(){
FILE: java/com/jcraft/jsch/KnownHosts.java
class KnownHosts (line 34) | public
method KnownHosts (line 44) | KnownHosts(JSch jsch){
method setKnownHosts (line 50) | void setKnownHosts(String filename) throws JSchException{
method setKnownHosts (line 60) | void setKnownHosts(InputStream input) throws JSchException{
method addInvalidLine (line 241) | private void addInvalidLine(String line) throws JSchException {
method getKnownHostsFile (line 245) | String getKnownHostsFile(){ return known_hosts; }
method getKnownHostsRepositoryID (line 246) | public String getKnownHostsRepositoryID(){ return known_hosts; }
method check (line 248) | public int check(String host, byte[] key){
method add (line 286) | public void add(HostKey hostkey, UserInfo userinfo){
method getHostKey (line 352) | public HostKey[] getHostKey(){
method getHostKey (line 355) | public HostKey[] getHostKey(String host, String type){
method remove (line 384) | public void remove(String host, String type){
method remove (line 387) | public void remove(String host, String type, byte[] key){
method sync (line 414) | protected void sync() throws IOException {
method sync (line 418) | protected synchronized void sync(String foo) throws IOException {
method dump (line 427) | void dump(OutputStream out) throws IOException {
method deleteSubString (line 465) | private String deleteSubString(String hosts, String host){
method getHMACSHA1 (line 485) | @SuppressWarnings({"static"}) private synchronized MAC getHMACSHA1(){
method createHashedHostKey (line 498) | HostKey createHashedHostKey(String host, byte[]key) throws JSchExcepti...
class HashedHostKey (line 503) | class HashedHostKey extends HostKey{
method HashedHostKey (line 511) | HashedHostKey(String host, byte[] key) throws JSchException {
method HashedHostKey (line 514) | HashedHostKey(String host, int type, byte[] key) throws JSchException {
method HashedHostKey (line 517) | HashedHostKey(String marker, String host, int type, byte[] key, Stri...
method isMatched (line 536) | boolean isMatched(String _host){
method isHashed (line 557) | boolean isHashed(){
method hash (line 561) | void hash(){
FILE: java/com/jcraft/jsch/LocalIdentityRepository.java
class LocalIdentityRepository (line 34) | class LocalIdentityRepository implements IdentityRepository {
method LocalIdentityRepository (line 40) | LocalIdentityRepository(JSch jsch){
method getName (line 44) | public String getName(){
method getStatus (line 48) | public int getStatus(){
method getIdentities (line 52) | public synchronized Vector getIdentities() {
method add (line 61) | public synchronized void add(Identity identity) {
method add (line 84) | public synchronized boolean add(byte[] identity) {
method remove (line 96) | synchronized void remove(Identity identity) {
method remove (line 106) | public synchronized boolean remove(byte[] blob) {
method removeAll (line 120) | public synchronized void removeAll() {
method removeDupulicates (line 128) | private void removeDupulicates(){
FILE: java/com/jcraft/jsch/Logger.java
type Logger (line 32) | public interface Logger{
method isEnabled (line 40) | public boolean isEnabled(int level);
method log (line 42) | public void log(int level, String message);
FILE: java/com/jcraft/jsch/MAC.java
type MAC (line 32) | public interface MAC{
method getName (line 33) | String getName();
method getBlockSize (line 34) | int getBlockSize();
method init (line 35) | void init(byte[] key) throws Exception;
method update (line 36) | void update(byte[] foo, int start, int len);
method update (line 37) | void update(int foo);
method doFinal (line 38) | void doFinal(byte[] buf, int offset);
FILE: java/com/jcraft/jsch/OpenSSHConfig.java
class OpenSSHConfig (line 71) | public class OpenSSHConfig implements ConfigRepository {
method parse (line 79) | public static OpenSSHConfig parse(String conf) throws IOException {
method parseFile (line 95) | public static OpenSSHConfig parseFile(String file) throws IOException {
method OpenSSHConfig (line 105) | OpenSSHConfig(Reader r) throws IOException {
method _parse (line 112) | private void _parse(Reader r) throws IOException {
method getConfig (line 145) | public Config getConfig(String host) {
class MyConfig (line 163) | class MyConfig implements Config {
method MyConfig (line 168) | MyConfig(String host){
method find (line 197) | private String find(String key) {
method multiFind (line 218) | private String[] multiFind(String key) {
method getHostname (line 239) | public String getHostname(){ return find("Hostname"); }
method getUser (line 240) | public String getUser(){ return find("User"); }
method getPort (line 241) | public int getPort(){
method getValue (line 252) | public String getValue(String key){
method getValues (line 262) | public String[] getValues(String key){ return multiFind(key); }
FILE: java/com/jcraft/jsch/PBKDF.java
type PBKDF (line 32) | public interface PBKDF {
method getKey (line 33) | byte[] getKey(byte[] pass, byte[] salt, int iteration, int size);
FILE: java/com/jcraft/jsch/Packet.java
class Packet (line 32) | public class Packet{
method setRandom (line 35) | static void setRandom(Random foo){ random=foo;}
method Packet (line 39) | public Packet(Buffer buffer){
method reset (line 42) | public void reset(){
method padding (line 45) | void padding(int bsize){
method shift (line 71) | int shift(int len, int bsize, int mac){
method unshift (line 102) | void unshift(byte command, int recipient, int s, int len){
method getBuffer (line 112) | Buffer getBuffer(){
FILE: java/com/jcraft/jsch/PortWatcher.java
class PortWatcher (line 35) | class PortWatcher implements Runnable{
method getPortForwarding (line 59) | static String[] getPortForwarding(Session session){
method getPort (line 75) | static PortWatcher getPort(Session session, String address, int lport)...
method normalize (line 96) | private static String normalize(String address){
method addPort (line 105) | static PortWatcher addPort(Session session, String address, int lport,...
method delPort (line 114) | static void delPort(Session session, String address, int lport) throws...
method delPort (line 123) | static void delPort(Session session){
method PortWatcher (line 140) | PortWatcher(Session session,
method run (line 168) | public void run(){
method delete (line 196) | void delete(){
method setConnectTimeout (line 206) | void setConnectTimeout(int connectTimeout){
FILE: java/com/jcraft/jsch/Proxy.java
type Proxy (line 34) | public interface Proxy{
method connect (line 35) | void connect(SocketFactory socket_factory, String host, int port, int ...
method getInputStream (line 36) | InputStream getInputStream();
method getOutputStream (line 37) | OutputStream getOutputStream();
method getSocket (line 38) | Socket getSocket();
method close (line 39) | void close();
FILE: java/com/jcraft/jsch/ProxyHTTP.java
class ProxyHTTP (line 35) | public class ProxyHTTP implements Proxy{
method ProxyHTTP (line 46) | public ProxyHTTP(String proxy_host){
method ProxyHTTP (line 60) | public ProxyHTTP(String proxy_host, int proxy_port){
method setUserPasswd (line 64) | public void setUserPasswd(String user, String passwd){
method connect (line 68) | public void connect(SocketFactory socket_factory, String host, int por...
method getInputStream (line 162) | public InputStream getInputStream(){ return in; }
method getOutputStream (line 163) | public OutputStream getOutputStream(){ return out; }
method getSocket (line 164) | public Socket getSocket(){ return socket; }
method close (line 165) | public void close(){
method getDefaultPort (line 177) | public static int getDefaultPort(){
FILE: java/com/jcraft/jsch/ProxySOCKS4.java
class ProxySOCKS4 (line 41) | public class ProxySOCKS4 implements Proxy{
method ProxySOCKS4 (line 51) | public ProxySOCKS4(String proxy_host){
method ProxySOCKS4 (line 65) | public ProxySOCKS4(String proxy_host, int proxy_port){
method setUserPasswd (line 69) | public void setUserPasswd(String user, String passwd){
method connect (line 73) | public void connect(SocketFactory socket_factory, String host, int por...
method getInputStream (line 194) | public InputStream getInputStream(){ return in; }
method getOutputStream (line 195) | public OutputStream getOutputStream(){ return out; }
method getSocket (line 196) | public Socket getSocket(){ return socket; }
method close (line 197) | public void close(){
method getDefaultPort (line 209) | public static int getDefaultPort(){
FILE: java/com/jcraft/jsch/ProxySOCKS5.java
class ProxySOCKS5 (line 41) | public class ProxySOCKS5 implements Proxy{
method ProxySOCKS5 (line 51) | public ProxySOCKS5(String proxy_host){
method ProxySOCKS5 (line 65) | public ProxySOCKS5(String proxy_host, int proxy_port){
method setUserPasswd (line 69) | public void setUserPasswd(String user, String passwd){
method connect (line 73) | public void connect(SocketFactory socket_factory, String host, int por...
method getInputStream (line 321) | public InputStream getInputStream(){ return in; }
method getOutputStream (line 322) | public OutputStream getOutputStream(){ return out; }
method getSocket (line 323) | public Socket getSocket(){ return socket; }
method close (line 324) | public void close(){
method getDefaultPort (line 336) | public static int getDefaultPort(){
method fill (line 339) | private void fill(InputStream in, byte[] buf, int len) throws JSchExce...
FILE: java/com/jcraft/jsch/Random.java
type Random (line 32) | public interface Random{
method fill (line 33) | void fill(byte[] foo, int start, int len);
FILE: java/com/jcraft/jsch/Request.java
class Request (line 32) | abstract class Request{
method request (line 36) | void request(Session session, Channel channel) throws Exception{
method waitForReply (line 43) | boolean waitForReply(){ return reply; }
method setReply (line 44) | void setReply(boolean reply){ this.reply=reply; }
method write (line 45) | void write(Packet packet) throws Exception{
FILE: java/com/jcraft/jsch/RequestAgentForwarding.java
class RequestAgentForwarding (line 32) | class RequestAgentForwarding extends Request{
method request (line 33) | public void request(Session session, Channel channel) throws Exception{
FILE: java/com/jcraft/jsch/RequestEnv.java
class RequestEnv (line 32) | class RequestEnv extends Request{
method setEnv (line 35) | void setEnv(byte[] name, byte[] value){
method request (line 39) | public void request(Session session, Channel channel) throws Exception{
FILE: java/com/jcraft/jsch/RequestExec.java
class RequestExec (line 32) | class RequestExec extends Request{
method RequestExec (line 34) | RequestExec(byte[] command){
method request (line 37) | public void request(Session session, Channel channel) throws Exception{
FILE: java/com/jcraft/jsch/RequestPtyReq.java
class RequestPtyReq (line 32) | class RequestPtyReq extends Request{
method setCode (line 41) | void setCode(String cookie){
method setTType (line 44) | void setTType(String ttype){
method setTerminalMode (line 48) | void setTerminalMode(byte[] terminal_mode){
method setTSize (line 52) | void setTSize(int tcol, int trow, int twp, int thp){
method request (line 59) | public void request(Session session, Channel channel) throws Exception{
FILE: java/com/jcraft/jsch/RequestSftp.java
class RequestSftp (line 32) | public class RequestSftp extends Request{
method RequestSftp (line 33) | RequestSftp(){
method request (line 36) | public void request(Session session, Channel channel) throws Exception{
FILE: java/com/jcraft/jsch/RequestShell.java
class RequestShell (line 32) | class RequestShell extends Request{
method request (line 33) | public void request(Session session, Channel channel) throws Exception{
FILE: java/com/jcraft/jsch/RequestSignal.java
class RequestSignal (line 32) | class RequestSignal extends Request{
method setSignal (line 34) | public void setSignal(String foo){ signal=foo; }
method request (line 35) | public void request(Session session, Channel channel) throws Exception{
FILE: java/com/jcraft/jsch/RequestSubsystem.java
class RequestSubsystem (line 32) | public class RequestSubsystem extends Request{
method request (line 34) | public void request(Session session, Channel channel, String subsystem...
method request (line 39) | public void request(Session session, Channel channel) throws Exception{
FILE: java/com/jcraft/jsch/RequestWindowChange.java
class RequestWindowChange (line 32) | class RequestWindowChange extends Request{
method setSize (line 37) | void setSize(int col, int row, int wp, int hp){
method request (line 43) | public void request(Session session, Channel channel) throws Exception{
FILE: java/com/jcraft/jsch/RequestX11.java
class RequestX11 (line 32) | class RequestX11 extends Request{
method setCookie (line 33) | public void setCookie(String cookie){
method request (line 36) | public void request(Session session, Channel channel) throws Exception{
FILE: java/com/jcraft/jsch/ServerSocketFactory.java
type ServerSocketFactory (line 35) | public interface ServerSocketFactory{
method createServerSocket (line 36) | public ServerSocket createServerSocket(int port, int backlog, InetAddr...
FILE: java/com/jcraft/jsch/Session.java
class Session (line 36) | public class Session implements Runnable{
method Session (line 157) | Session(JSch jsch, String username, String host, int port) throws JSch...
method connect (line 182) | public void connect() throws JSchException{
method connect (line 186) | public void connect(int connectTimeout) throws JSchException{
method receive_kexinit (line 566) | private KeyExchange receive_kexinit(Buffer buf) throws Exception {
method rekey (line 606) | public void rekey() throws Exception {
method send_kexinit (line 609) | private void send_kexinit() throws Exception {
method send_newkeys (line 691) | private void send_newkeys() throws Exception {
method checkHost (line 703) | private void checkHost(String chost, int port, KeyExchange kex) throws...
method openChannel (line 851) | public Channel openChannel(String type) throws JSchException{
method encode (line 871) | public void encode(Packet packet) throws Exception{
method read (line 914) | public Buffer read(Buffer buf) throws Exception{
method start_discard (line 1054) | private void start_discard(Buffer buf, Cipher cipher, MAC mac,
method getSessionId (line 1085) | byte[] getSessionId(){
method receive_newkeys (line 1089) | private void receive_newkeys(Buffer buf, KeyExchange kex) throws Excep...
method updateKeys (line 1093) | private void updateKeys(KeyExchange kex) throws Exception{
method expandKey (line 1226) | private byte[] expandKey(Buffer buf, byte[] K, byte[] H, byte[] key,
method write (line 1245) | void write(Packet packet, Channel c, int length) throws Exception{
method write (line 1338) | public void write(Packet packet) throws Exception{
method _write (line 1364) | private void _write(Packet packet) throws Exception{
method run (line 1375) | public void run(){
method disconnect (line 1705) | public void disconnect(){
method setPortForwardingL (line 1780) | public int setPortForwardingL(int lport, String host, int rport) throw...
method setPortForwardingL (line 1797) | public int setPortForwardingL(String bind_address, int lport, String h...
method setPortForwardingL (line 1816) | public int setPortForwardingL(String bind_address, int lport, String h...
method setPortForwardingL (line 1835) | public int setPortForwardingL(String bind_address, int lport, String h...
method delPortForwardingL (line 1853) | public void delPortForwardingL(int lport) throws JSchException{
method delPortForwardingL (line 1864) | public void delPortForwardingL(String bind_address, int lport) throws ...
method getPortForwardingL (line 1873) | public String[] getPortForwardingL() throws JSchException{
method setPortForwardingR (line 1886) | public void setPortForwardingR(int rport, String host, int lport) thro...
method setPortForwardingR (line 1905) | public void setPortForwardingR(String bind_address, int rport, String ...
method setPortForwardingR (line 1919) | public void setPortForwardingR(int rport, String host, int lport, Sock...
method setPortForwardingR (line 1940) | public void setPortForwardingR(String bind_address, int rport, String ...
method setPortForwardingR (line 1958) | public void setPortForwardingR(int rport, String daemon) throws JSchEx...
method setPortForwardingR (line 1975) | public void setPortForwardingR(int rport, String daemon, Object[] arg)...
method setPortForwardingR (line 1998) | public void setPortForwardingR(String bind_address, int rport, String ...
method getPortForwardingR (line 2009) | public String[] getPortForwardingR() throws JSchException{
class Forwarding (line 2013) | private class Forwarding {
method parseForwarding (line 2025) | private Forwarding parseForwarding(String conf) throws JSchException {
method setPortForwardingL (line 2083) | public int setPortForwardingL(String conf) throws JSchException {
method setPortForwardingR (line 2103) | public int setPortForwardingR(String conf) throws JSchException {
method getStreamForwarder (line 2118) | public Channel getStreamForwarder(String host, int port) throws JSchEx...
class GlobalRequestReply (line 2127) | private class GlobalRequestReply{
method setThread (line 2131) | void setThread(Thread thread){
method getThread (line 2135) | Thread getThread(){ return thread; }
method setReply (line 2136) | void setReply(int reply){ this.reply=reply; }
method getReply (line 2137) | int getReply(){ return this.reply; }
method getPort (line 2138) | int getPort(){ return this.port; }
method setPort (line 2139) | void setPort(int port){ this.port=port; }
method _setPortForwardingR (line 2142) | private int _setPortForwardingR(String bind_address, int rport) throws...
method delPortForwardingR (line 2196) | public void delPortForwardingR(int rport) throws JSchException{
method delPortForwardingR (line 2208) | public void delPortForwardingR(String bind_address, int rport) throws ...
method initDeflater (line 2212) | private void initDeflater(String method) throws JSchException{
method initInflater (line 2239) | private void initInflater(String method) throws JSchException{
method addChannel (line 2261) | void addChannel(Channel channel){
method setProxy (line 2265) | public void setProxy(Proxy proxy){ this.proxy=proxy; }
method setHost (line 2266) | public void setHost(String host){ this.host=host; }
method setPort (line 2267) | public void setPort(int port){ this.port=port; }
method setUserName (line 2268) | void setUserName(String username){ this.username=username; }
method setUserInfo (line 2269) | public void setUserInfo(UserInfo userinfo){ this.userinfo=userinfo; }
method getUserInfo (line 2270) | public UserInfo getUserInfo(){ return userinfo; }
method setInputStream (line 2271) | public void setInputStream(InputStream in){ this.in=in; }
method setOutputStream (line 2272) | public void setOutputStream(OutputStream out){ this.out=out; }
method setX11Host (line 2273) | public void setX11Host(String host){ ChannelX11.setHost(host); }
method setX11Port (line 2274) | public void setX11Port(int port){ ChannelX11.setPort(port); }
method setX11Cookie (line 2275) | public void setX11Cookie(String cookie){ ChannelX11.setCookie(cookie); }
method setPassword (line 2276) | public void setPassword(String password){
method setPassword (line 2280) | public void setPassword(byte[] password){
method setConfig (line 2287) | public void setConfig(java.util.Properties newconf){
method setConfig (line 2291) | public void setConfig(java.util.Hashtable newconf){
method setConfig (line 2302) | public void setConfig(String key, String value){
method getConfig (line 2311) | @SuppressWarnings({"static"}) public String getConfig(String key){
method setSocketFactory (line 2322) | public void setSocketFactory(SocketFactory sfactory){
method isConnected (line 2325) | public boolean isConnected(){ return isConnected; }
method getTimeout (line 2326) | public int getTimeout(){ return timeout; }
method setTimeout (line 2327) | public void setTimeout(int timeout) throws JSchException {
method getServerVersion (line 2345) | public String getServerVersion(){
method getClientVersion (line 2348) | public String getClientVersion(){
method setClientVersion (line 2351) | public void setClientVersion(String cv){
method sendIgnore (line 2355) | public void sendIgnore() throws Exception{
method sendKeepAliveMsg (line 2364) | public void sendKeepAliveMsg() throws Exception{
method noMoreSessionChannels (line 2375) | public void noMoreSessionChannels() throws Exception{
method getHostKey (line 2386) | public HostKey getHostKey(){ return hostkey; }
method getHost (line 2387) | public String getHost(){return host;}
method getUserName (line 2388) | public String getUserName(){return username;}
method getPort (line 2389) | public int getPort(){return port;}
method setHostKeyAlias (line 2390) | public void setHostKeyAlias(String hostKeyAlias){
method getHostKeyAlias (line 2393) | public String getHostKeyAlias(){
method setServerAliveInterval (line 2405) | public void setServerAliveInterval(int interval) throws JSchException {
method getServerAliveInterval (line 2415) | public int getServerAliveInterval(){
method setServerAliveCountMax (line 2428) | public void setServerAliveCountMax(int count){
method getServerAliveCountMax (line 2437) | public int getServerAliveCountMax(){
method setDaemonThread (line 2441) | public void setDaemonThread(boolean enable){
method checkCiphers (line 2445) | private String[] checkCiphers(String ciphers){
method checkCipher (line 2482) | static boolean checkCipher(String cipher){
method checkKexes (line 2496) | private String[] checkKexes(String kexes){
method checkKex (line 2527) | static boolean checkKex(Session s, String kex){
method checkSignatures (line 2537) | @SuppressWarnings({"static"}) private String[] checkSignatures(String ...
method setIdentityRepository (line 2578) | public void setIdentityRepository(IdentityRepository identityRepository){
method getIdentityRepository (line 2589) | IdentityRepository getIdentityRepository(){
method setHostKeyRepository (line 2601) | public void setHostKeyRepository(HostKeyRepository hostkeyRepository){
method getHostKeyRepository (line 2612) | public HostKeyRepository getHostKeyRepository(){
method applyConfig (line 2658) | private void applyConfig() throws JSchException {
method applyConfigChannel (line 2772) | private void applyConfigChannel(ChannelSession channel) throws JSchExc...
method requestPortForwarding (line 2794) | private void requestPortForwarding() throws JSchException {
method checkConfig (line 2822) | private void checkConfig(ConfigRepository.Config config, String key){
FILE: java/com/jcraft/jsch/SftpATTRS.java
class SftpATTRS (line 49) | public class SftpATTRS {
method getPermissionsString (line 72) | public String getPermissionsString() {
method getAtimeString (line 110) | public String getAtimeString(){
method getMtimeString (line 115) | public String getMtimeString(){
method SftpATTRS (line 144) | private SftpATTRS(){
method getATTR (line 147) | static SftpATTRS getATTR(Buffer buf){
method length (line 176) | int length(){
method dump (line 196) | void dump(Buffer buf){
method setFLAGS (line 217) | void setFLAGS(int flags){
method setSIZE (line 220) | public void setSIZE(long size){
method setUIDGID (line 224) | public void setUIDGID(int uid, int gid){
method setACMODTIME (line 229) | public void setACMODTIME(int atime, int mtime){
method setPERMISSIONS (line 234) | public void setPERMISSIONS(int permissions){
method isType (line 240) | private boolean isType(int mask) {
method isReg (line 245) | public boolean isReg(){
method isDir (line 249) | public boolean isDir(){
method isChr (line 253) | public boolean isChr(){
method isBlk (line 257) | public boolean isBlk(){
method isFifo (line 261) | public boolean isFifo(){
method isLink (line 265) | public boolean isLink(){
method isSock (line 269) | public boolean isSock(){
method getFlags (line 273) | public int getFlags() { return flags; }
method getSize (line 274) | public long getSize() { return size; }
method getUId (line 275) | public int getUId() { return uid; }
method getGId (line 276) | public int getGId() { return gid; }
method getPermissions (line 277) | public int getPermissions() { return permissions; }
method getATime (line 278) | public int getATime() { return atime; }
method getMTime (line 279) | public int getMTime() { return mtime; }
method getExtended (line 280) | public String[] getExtended() { return extended; }
method toString (line 282) | public String toString() {
FILE: java/com/jcraft/jsch/SftpException.java
class SftpException (line 32) | public class SftpException extends Exception{
method SftpException (line 36) | public SftpException (int id, String message) {
method SftpException (line 40) | public SftpException (int id, String message, Throwable e) {
method toString (line 45) | public String toString(){
method getCause (line 48) | public Throwable getCause(){
FILE: java/com/jcraft/jsch/SftpProgressMonitor.java
type SftpProgressMonitor (line 32) | public interface SftpProgressMonitor{
method init (line 36) | void init(int op, String src, String dest, long max);
method count (line 37) | boolean count(long count);
method end (line 38) | void end();
FILE: java/com/jcraft/jsch/SftpStatVFS.java
class SftpStatVFS (line 35) | public class SftpStatVFS {
method SftpStatVFS (line 63) | private SftpStatVFS(){
method getStatVFS (line 66) | static SftpStatVFS getStatVFS(Buffer buf){
method getBlockSize (line 89) | public long getBlockSize() { return bsize; }
method getFragmentSize (line 90) | public long getFragmentSize() { return frsize; }
method getBlocks (line 91) | public long getBlocks() { return blocks; }
method getFreeBlocks (line 92) | public long getFreeBlocks() { return bfree; }
method getAvailBlocks (line 93) | public long getAvailBlocks() { return bavail; }
method getINodes (line 94) | public long getINodes() { return files; }
method getFreeINodes (line 95) | public long getFreeINodes() { return ffree; }
method getAvailINodes (line 96) | public long getAvailINodes() { return favail; }
method getFileSystemID (line 97) | public long getFileSystemID() { return fsid; }
method getMountFlag (line 98) | public long getMountFlag() { return flag; }
method getMaximumFilenameLength (line 99) | public long getMaximumFilenameLength() { return namemax; }
method getSize (line 101) | public long getSize(){
method getUsed (line 105) | public long getUsed(){
method getAvailForNonRoot (line 109) | public long getAvailForNonRoot(){
method getAvail (line 113) | public long getAvail(){
method getCapacity (line 117) | public int getCapacity(){
FILE: java/com/jcraft/jsch/Signature.java
type Signature (line 32) | public interface Signature{
method init (line 33) | void init() throws Exception;
method update (line 34) | void update(byte[] H) throws Exception;
method verify (line 35) | boolean verify(byte[] sig) throws Exception;
method sign (line 36) | byte[] sign() throws Exception;
FILE: java/com/jcraft/jsch/SignatureDSA.java
type SignatureDSA (line 32) | public interface SignatureDSA extends Signature {
method setPubKey (line 33) | void setPubKey(byte[] y, byte[] p, byte[] q, byte[] g) throws Exception;
method setPrvKey (line 34) | void setPrvKey(byte[] x, byte[] p, byte[] q, byte[] g) throws Exception;
FILE: java/com/jcraft/jsch/SignatureECDSA.java
type SignatureECDSA (line 32) | public interface SignatureECDSA extends Signature {
method setPubKey (line 33) | void setPubKey(byte[] r, byte[] s) throws Exception;
method setPrvKey (line 34) | void setPrvKey(byte[] s) throws Exception;
FILE: java/com/jcraft/jsch/SignatureRSA.java
type SignatureRSA (line 32) | public interface SignatureRSA extends Signature {
method setPubKey (line 33) | void setPubKey(byte[] e, byte[] n) throws Exception;
method setPrvKey (line 34) | void setPrvKey(byte[] d, byte[] n) throws Exception;
FILE: java/com/jcraft/jsch/SocketFactory.java
type SocketFactory (line 35) | public interface SocketFactory{
method createSocket (line 36) | public Socket createSocket(String host, int port)throws IOException,
method getInputStream (line 38) | public InputStream getInputStream(Socket socket)throws IOException;
method getOutputStream (line 39) | public OutputStream getOutputStream(Socket socket)throws IOException;
FILE: java/com/jcraft/jsch/UIKeyboardInteractive.java
type UIKeyboardInteractive (line 32) | public interface UIKeyboardInteractive{
method promptKeyboardInteractive (line 33) | String[] promptKeyboardInteractive(String destination,
FILE: java/com/jcraft/jsch/UserAuth.java
class UserAuth (line 32) | public abstract class UserAuth{
method start (line 46) | public boolean start(Session session) throws Exception{
FILE: java/com/jcraft/jsch/UserAuthGSSAPIWithMIC.java
class UserAuthGSSAPIWithMIC (line 32) | public class UserAuthGSSAPIWithMIC extends UserAuth {
method start (line 51) | public boolean start(Session session)throws Exception{
FILE: java/com/jcraft/jsch/UserAuthKeyboardInteractive.java
class UserAuthKeyboardInteractive (line 32) | class UserAuthKeyboardInteractive extends UserAuth{
method start (line 33) | public boolean start(Session session) throws Exception{
FILE: java/com/jcraft/jsch/UserAuthNone.java
class UserAuthNone (line 32) | class UserAuthNone extends UserAuth{
method start (line 36) | public boolean start(Session session) throws Exception{
method getMethods (line 126) | String getMethods(){
FILE: java/com/jcraft/jsch/UserAuthPassword.java
class UserAuthPassword (line 32) | class UserAuthPassword extends UserAuth{
method start (line 35) | public boolean start(Session session) throws Exception{
FILE: java/com/jcraft/jsch/UserAuthPublicKey.java
class UserAuthPublicKey (line 34) | class UserAuthPublicKey extends UserAuth{
method start (line 36) | public boolean start(Session session) throws Exception{
FILE: java/com/jcraft/jsch/UserInfo.java
type UserInfo (line 32) | public interface UserInfo{
method getPassphrase (line 33) | String getPassphrase();
method getPassword (line 34) | String getPassword();
method promptPassword (line 35) | boolean promptPassword(String message);
method promptPassphrase (line 36) | boolean promptPassphrase(String message);
method promptYesNo (line 37) | boolean promptYesNo(String message);
method showMessage (line 38) | void showMessage(String message);
FILE: java/com/jcraft/jsch/Util.java
class Util (line 36) | class Util{
method val (line 39) | private static byte val(byte foo){
method fromBase64 (line 46) | static byte[] fromBase64(byte[] buf, int start, int length) throws JSc...
method toBase64 (line 66) | static byte[] toBase64(byte[] buf, int start, int length){
method split (line 109) | static String[] split(String foo, String split){
method glob (line 132) | static boolean glob(byte[] pattern, byte[] name){
method glob0 (line 135) | static private boolean glob0(byte[] pattern, int pattern_index,
method glob (line 146) | static private boolean glob(byte[] pattern, int pattern_index,
method quote (line 260) | static String quote(String path){
method unquote (line 281) | static String unquote(String path){
method unquote (line 288) | static byte[] unquote(byte[] path){
method getFingerPrint (line 312) | static String getFingerPrint(HASH hash, byte[] data){
method array_equals (line 332) | static boolean array_equals(byte[] foo, byte bar[]){
method createSocket (line 339) | static Socket createSocket(String host, int port, int timeout) throws ...
method str2byte (line 399) | static byte[] str2byte(String str, String encoding){
method str2byte (line 408) | static byte[] str2byte(String str){
method byte2str (line 412) | static String byte2str(byte[] str, String encoding){
method byte2str (line 416) | static String byte2str(byte[] str, int s, int l, String encoding){
method byte2str (line 423) | static String byte2str(byte[] str){
method byte2str (line 427) | static String byte2str(byte[] str, int s, int l){
method toHex (line 431) | static String toHex(byte[] str){
method bzero (line 464) | static void bzero(byte[] foo){
method diffString (line 471) | static String diffString(String str, String[] not_available){
method checkTilde (line 487) | static String checkTilde(String str){
method skipUTF8Char (line 498) | private static int skipUTF8Char(byte b){
method fromFile (line 505) | static byte[] fromFile(String _file) throws IOException {
FILE: java/com/jcraft/jsch/jce/AES128CBC.java
class AES128CBC (line 35) | public class AES128CBC implements Cipher{
method getIVSize (line 39) | public int getIVSize(){return ivsize;}
method getBlockSize (line 40) | public int getBlockSize(){return bsize;}
method init (line 41) | public void init(int mode, byte[] key, byte[] iv) throws Exception{
method update (line 70) | public void update(byte[] foo, int s1, int len, byte[] bar, int s2) th...
method isCBC (line 74) | public boolean isCBC(){return true; }
FILE: java/com/jcraft/jsch/jce/AES128CTR.java
class AES128CTR (line 35) | public class AES128CTR implements Cipher{
method getIVSize (line 39) | public int getIVSize(){return ivsize;}
method getBlockSize (line 40) | public int getBlockSize(){return bsize;}
method init (line 41) | public void init(int mode, byte[] key, byte[] iv) throws Exception{
method update (line 70) | public void update(byte[] foo, int s1, int len, byte[] bar, int s2) th...
method isCBC (line 74) | public boolean isCBC(){return false; }
FILE: java/com/jcraft/jsch/jce/AES192CBC.java
class AES192CBC (line 35) | public class AES192CBC implements Cipher{
method getIVSize (line 39) | public int getIVSize(){return ivsize;}
method getBlockSize (line 40) | public int getBlockSize(){return bsize;}
method init (line 41) | public void init(int mode, byte[] key, byte[] iv) throws Exception{
method update (line 69) | public void update(byte[] foo, int s1, int len, byte[] bar, int s2) th...
method isCBC (line 72) | public boolean isCBC(){return true; }
FILE: java/com/jcraft/jsch/jce/AES192CTR.java
class AES192CTR (line 35) | public class AES192CTR implements Cipher{
method getIVSize (line 39) | public int getIVSize(){return ivsize;}
method getBlockSize (line 40) | public int getBlockSize(){return bsize;}
method init (line 41) | public void init(int mode, byte[] key, byte[] iv) throws Exception{
method update (line 69) | public void update(byte[] foo, int s1, int len, byte[] bar, int s2) th...
method isCBC (line 72) | public boolean isCBC(){return false; }
FILE: java/com/jcraft/jsch/jce/AES256CBC.java
class AES256CBC (line 35) | public class AES256CBC implements Cipher{
method getIVSize (line 39) | public int getIVSize(){return ivsize;}
method getBlockSize (line 40) | public int getBlockSize(){return bsize;}
method init (line 41) | public void init(int mode, byte[] key, byte[] iv) throws Exception{
method update (line 69) | public void update(byte[] foo, int s1, int len, byte[] bar, int s2) th...
method isCBC (line 72) | public boolean isCBC(){return true; }
FILE: java/com/jcraft/jsch/jce/AES256CTR.java
class AES256CTR (line 35) | public class AES256CTR implements Cipher{
method getIVSize (line 39) | public int getIVSize(){return ivsize;}
method getBlockSize (line 40) | public int getBlockSize(){return bsize;}
method init (line 41) | public void init(int mode, byte[] key, byte[] iv) throws Exception{
method update (line 69) | public void update(byte[] foo, int s1, int len, byte[] bar, int s2) th...
method isCBC (line 72) | public boolean isCBC(){return false; }
FILE: java/com/jcraft/jsch/jce/ARCFOUR.java
class ARCFOUR (line 36) | public class ARCFOUR implements Cipher{
method getIVSize (line 40) | public int getIVSize(){return ivsize;}
method getBlockSize (line 41) | public int getBlockSize(){return bsize;}
method init (line 42) | public void init(int mode, byte[] key, byte[] iv) throws Exception{
method update (line 66) | public void update(byte[] foo, int s1, int len, byte[] bar, int s2) th...
method isCBC (line 69) | public boolean isCBC(){return false; }
FILE: java/com/jcraft/jsch/jce/ARCFOUR128.java
class ARCFOUR128 (line 36) | public class ARCFOUR128 implements Cipher{
method getIVSize (line 41) | public int getIVSize(){return ivsize;}
method getBlockSize (line 42) | public int getBlockSize(){return bsize;}
method init (line 43) | public void init(int mode, byte[] key, byte[] iv) throws Exception{
method update (line 69) | public void update(byte[] foo, int s1, int len, byte[] bar, int s2) th...
method isCBC (line 72) | public boolean isCBC(){return false; }
FILE: java/com/jcraft/jsch/jce/ARCFOUR256.java
class ARCFOUR256 (line 36) | public class ARCFOUR256 implements Cipher{
method getIVSize (line 41) | public int getIVSize(){return ivsize;}
method getBlockSize (line 42) | public int getBlockSize(){return bsize;}
method init (line 43) | public void init(int mode, byte[] key, byte[] iv) throws Exception{
method update (line 69) | public void update(byte[] foo, int s1, int len, byte[] bar, int s2) th...
method isCBC (line 72) | public boolean isCBC(){return false; }
FILE: java/com/jcraft/jsch/jce/BlowfishCBC.java
class BlowfishCBC (line 35) | public class BlowfishCBC implements Cipher{
method getIVSize (line 39) | public int getIVSize(){return ivsize;}
method getBlockSize (line 40) | public int getBlockSize(){return bsize;}
method init (line 41) | public void init(int mode, byte[] key, byte[] iv) throws Exception{
method update (line 69) | public void update(byte[] foo, int s1, int len, byte[] bar, int s2) th...
method isCBC (line 72) | public boolean isCBC(){return true; }
FILE: java/com/jcraft/jsch/jce/DH.java
class DH (line 38) | public class DH implements com.jcraft.jsch.DH{
method init (line 49) | public void init() throws Exception{
method getE (line 53) | public byte[] getE() throws Exception{
method getK (line 64) | public byte[] getK() throws Exception{
method setP (line 77) | public void setP(byte[] p){ setP(new BigInteger(1, p)); }
method setG (line 78) | public void setG(byte[] g){ setG(new BigInteger(1, g)); }
method setF (line 79) | public void setF(byte[] f){ setF(new BigInteger(1, f)); }
method setP (line 80) | void setP(BigInteger p){this.p=p;}
method setG (line 81) | void setG(BigInteger g){this.g=g;}
method setF (line 82) | void setF(BigInteger f){this.f=f;}
method checkRange (line 85) | public void checkRange() throws Exception {
method checkRange (line 92) | private void checkRange(BigInteger tmp) throws Exception {
FILE: java/com/jcraft/jsch/jce/ECDH256.java
class ECDH256 (line 32) | public class ECDH256 extends ECDHN implements com.jcraft.jsch.ECDH {
method init (line 33) | public void init() throws Exception {
FILE: java/com/jcraft/jsch/jce/ECDH384.java
class ECDH384 (line 32) | public class ECDH384 extends ECDHN implements com.jcraft.jsch.ECDH {
method init (line 33) | public void init() throws Exception {
FILE: java/com/jcraft/jsch/jce/ECDH521.java
class ECDH521 (line 32) | public class ECDH521 extends ECDHN implements com.jcraft.jsch.ECDH {
method init (line 33) | public void init() throws Exception {
FILE: java/com/jcraft/jsch/jce/ECDHN.java
class ECDHN (line 38) | public class ECDHN implements com.jcraft.jsch.ECDH {
method init (line 43) | public void init(int size) throws Exception{
method getQ (line 54) | public byte[] getQ() throws Exception{
method getSecret (line 58) | public byte[] getSecret(byte[] r, byte[] s) throws Exception{
method validate (line 74) | public boolean validate(byte[] r, byte[] s) throws Exception{
method toPoint (line 122) | private byte[] toPoint(byte[] r_array, byte[] s_array) {
method insert0 (line 129) | private byte[] insert0(byte[] buf){
method chop0 (line 136) | private byte[] chop0(byte[] buf){
method bzero (line 143) | private void bzero(byte[] buf){
FILE: java/com/jcraft/jsch/jce/HMAC.java
class HMAC (line 36) | abstract class HMAC implements MAC {
method getBlockSize (line 42) | public int getBlockSize() {
method init (line 46) | public void init(byte[] key) throws Exception {
method update (line 58) | public void update(int i){
method update (line 66) | public void update(byte foo[], int s, int l){
method doFinal (line 70) | public void doFinal(byte[] buf, int offset){
method getName (line 79) | public String getName(){
FILE: java/com/jcraft/jsch/jce/HMACMD5.java
class HMACMD5 (line 36) | public class HMACMD5 extends HMAC {
method HMACMD5 (line 37) | public HMACMD5(){
FILE: java/com/jcraft/jsch/jce/HMACMD596.java
class HMACMD596 (line 32) | public class HMACMD596 extends HMACMD5 {
method HMACMD596 (line 33) | public HMACMD596(){
method getBlockSize (line 37) | public int getBlockSize(){
method doFinal (line 42) | public void doFinal(byte[] buf, int offset){
FILE: java/com/jcraft/jsch/jce/HMACSHA1.java
class HMACSHA1 (line 32) | public class HMACSHA1 extends HMAC {
method HMACSHA1 (line 33) | public HMACSHA1(){
FILE: java/com/jcraft/jsch/jce/HMACSHA196.java
class HMACSHA196 (line 32) | public class HMACSHA196 extends HMACSHA1 {
method HMACSHA196 (line 34) | public HMACSHA196(){
method getBlockSize (line 38) | public int getBlockSize(){
method doFinal (line 43) | public void doFinal(byte[] buf, int offset){
FILE: java/com/jcraft/jsch/jce/HMACSHA256.java
class HMACSHA256 (line 32) | public class HMACSHA256 extends HMAC {
method HMACSHA256 (line 33) | public HMACSHA256(){
FILE: java/com/jcraft/jsch/jce/HMACSHA512.java
class HMACSHA512 (line 32) | public class HMACSHA512 extends HMAC {
method HMACSHA512 (line 33) | public HMACSHA512(){
FILE: java/com/jcraft/jsch/jce/KeyPairGenDSA.java
class KeyPairGenDSA (line 35) | public class KeyPairGenDSA implements com.jcraft.jsch.KeyPairGenDSA{
method init (line 42) | public void init(int key_size) throws Exception{
method getX (line 57) | public byte[] getX(){return x;}
method getY (line 58) | public byte[] getY(){return y;}
method getP (line 59) | public byte[] getP(){return p;}
method getQ (line 60) | public byte[] getQ(){return q;}
method getG (line 61) | public byte[] getG(){return g;}
FILE: java/com/jcraft/jsch/jce/KeyPairGenECDSA.java
class KeyPairGenECDSA (line 37) | public class KeyPairGenECDSA implements com.jcraft.jsch.KeyPairGenECDSA {
method init (line 44) | public void init(int key_size) throws Exception {
method getD (line 73) | public byte[] getD(){return d;}
method getR (line 74) | public byte[] getR(){return r;}
method getS (line 75) | public byte[] getS(){return s;}
method getPublicKey (line 76) | ECPublicKey getPublicKey(){ return pubKey; }
method getPrivateKey (line 77) | ECPrivateKey getPrivateKey(){ return prvKey; }
method insert0 (line 79) | private byte[] insert0(byte[] buf){
method chop0 (line 86) | private byte[] chop0(byte[] buf){
method bzero (line 93) | private void bzero(byte[] buf){
FILE: java/com/jcraft/jsch/jce/KeyPairGenRSA.java
class KeyPairGenRSA (line 35) | public class KeyPairGenRSA implements com.jcraft.jsch.KeyPairGenRSA{
method init (line 46) | public void init(int key_size) throws Exception{
method getD (line 64) | public byte[] getD(){return d;}
method getE (line 65) | public byte[] getE(){return e;}
method getN (line 66) | public byte[] getN(){return n;}
method getC (line 67) | public byte[] getC(){return c;}
method getEP (line 68) | public byte[] getEP(){return ep;}
method getEQ (line 69) | public byte[] getEQ(){return eq;}
method getP (line 70) | public byte[] getP(){return p;}
method getQ (line 71) | public byte[] getQ(){return q;}
FILE: java/com/jcraft/jsch/jce/MD5.java
class MD5 (line 36) | public class MD5 implements HASH{
method getBlockSize (line 38) | public int getBlockSize(){return 16;}
method init (line 39) | public void init() throws Exception{
method update (line 45) | public void update(byte[] foo, int start, int len) throws Exception{
method digest (line 48) | public byte[] digest() throws Exception{
FILE: java/com/jcraft/jsch/jce/PBKDF.java
class PBKDF (line 39) | public class PBKDF implements com.jcraft.jsch.PBKDF{
method getKey (line 40) | public byte[] getKey(byte[] _pass, byte[] salt, int iterations, int si...
FILE: java/com/jcraft/jsch/jce/Random.java
class Random (line 34) | public class Random implements com.jcraft.jsch.Random{
method Random (line 37) | public Random(){
method fill (line 69) | public void fill(byte[] foo, int start, int len){
FILE: java/com/jcraft/jsch/jce/SHA1.java
class SHA1 (line 36) | public class SHA1 implements HASH{
method getBlockSize (line 38) | public int getBlockSize(){return 20;}
method init (line 39) | public void init() throws Exception{
method update (line 45) | public void update(byte[] foo, int start, int len) throws Exception{
method digest (line 48) | public byte[] digest() throws Exception{
FILE: java/com/jcraft/jsch/jce/SHA256.java
class SHA256 (line 36) | public class SHA256 implements HASH {
method getBlockSize (line 38) | public int getBlockSize(){return 32;}
method init (line 39) | public void init() throws Exception {
method update (line 45) | public void update(byte[] foo, int start, int len) throws Exception {
method digest (line 48) | public byte[] digest() throws Exception {
FILE: java/com/jcraft/jsch/jce/SHA384.java
class SHA384 (line 34) | public class SHA384 implements com.jcraft.jsch.HASH {
method getBlockSize (line 36) | public int getBlockSize(){return 48;}
method init (line 37) | public void init() throws Exception {
method update (line 43) | public void update(byte[] foo, int start, int len) throws Exception {
method digest (line 46) | public byte[] digest() throws Exception {
FILE: java/com/jcraft/jsch/jce/SHA512.java
class SHA512 (line 34) | public class SHA512 implements com.jcraft.jsch.HASH {
method getBlockSize (line 36) | public int getBlockSize(){return 64;}
method init (line 37) | public void init() throws Exception {
method update (line 43) | public void update(byte[] foo, int start, int len) throws Exception {
method digest (line 46) | public byte[] digest() throws Exception {
FILE: java/com/jcraft/jsch/jce/SignatureDSA.java
class SignatureDSA (line 36) | public class SignatureDSA implements com.jcraft.jsch.SignatureDSA{
method init (line 41) | public void init() throws Exception{
method setPubKey (line 45) | public void setPubKey(byte[] y, byte[] p, byte[] q, byte[] g) throws E...
method setPrvKey (line 54) | public void setPrvKey(byte[] x, byte[] p, byte[] q, byte[] g) throws E...
method sign (line 63) | public byte[] sign() throws Exception{
method update (line 102) | public void update(byte[] foo) throws Exception{
method verify (line 105) | public boolean verify(byte[] sig) throws Exception{
FILE: java/com/jcraft/jsch/jce/SignatureECDSA.java
class SignatureECDSA (line 37) | public class SignatureECDSA implements com.jcraft.jsch.SignatureECDSA {
method init (line 42) | public void init() throws Exception{
method setPubKey (line 47) | public void setPubKey(byte[] r, byte[] s) throws Exception{
method setPrvKey (line 67) | public void setPrvKey(byte[] d) throws Exception{
method sign (line 85) | public byte[] sign() throws Exception{
method update (line 117) | public void update(byte[] foo) throws Exception{
method verify (line 120) | public boolean verify(byte[] sig) throws Exception{
method insert0 (line 168) | private byte[] insert0(byte[] buf){
method chop0 (line 175) | private byte[] chop0(byte[] buf){
method bzero (line 183) | private void bzero(byte[] buf){
FILE: java/com/jcraft/jsch/jce/SignatureRSA.java
class SignatureRSA (line 36) | public class SignatureRSA implements com.jcraft.jsch.SignatureRSA{
method init (line 41) | public void init() throws Exception{
method setPubKey (line 45) | public void setPubKey(byte[] e, byte[] n) throws Exception{
method setPrvKey (line 52) | public void setPrvKey(byte[] d, byte[] n) throws Exception{
method sign (line 59) | public byte[] sign() throws Exception{
method update (line 63) | public void update(byte[] foo) throws Exception{
method verify (line 66) | public boolean verify(byte[] sig) throws Exception{
FILE: java/com/jcraft/jsch/jce/TripleDESCBC.java
class TripleDESCBC (line 36) | public class TripleDESCBC implements Cipher{
method getIVSize (line 40) | public int getIVSize(){return ivsize;}
method getBlockSize (line 41) | public int getBlockSize(){return bsize;}
method init (line 42) | public void init(int mode, byte[] key, byte[] iv) throws Exception{
method update (line 82) | public void update(byte[] foo, int s1, int len, byte[] bar, int s2) th...
method isCBC (line 85) | public boolean isCBC(){return true; }
FILE: java/com/jcraft/jsch/jce/TripleDESCTR.java
class TripleDESCTR (line 36) | public class TripleDESCTR implements Cipher{
method getIVSize (line 40) | public int getIVSize(){return ivsize;}
method getBlockSize (line 41) | public int getBlockSize(){return bsize;}
method init (line 42) | public void init(int mode, byte[] key, byte[] iv) throws Exception{
method update (line 82) | public void update(byte[] foo, int s1, int len, byte[] bar, int s2) th...
method isCBC (line 85) | public boolean isCBC(){return false; }
FILE: java/com/jcraft/jsch/jcraft/Compression.java
class Compression (line 34) | public class Compression implements com.jcraft.jsch.Compression {
method Compression (line 41) | public Compression(){
method init (line 45) | public void init(int type, int level){
method compress (line 59) | public byte[] compress(byte[] buf, int start, int[] len){
method uncompress (line 94) | public byte[] uncompress(byte[] buffer, int start, int[] length){
FILE: java/com/jcraft/jsch/jcraft/HMAC.java
class HMAC (line 34) | class HMAC{
method setH (line 54) | protected void setH(MessageDigest md){
method getBlockSize (line 59) | public int getBlockSize(){return bsize;}
method init (line 60) | public void init(byte[] key) throws Exception{
method update (line 89) | public void update(int i){
method update (line 97) | public void update(byte foo[], int s, int l){
method doFinal (line 101) | public void doFinal(byte[] buf, int offset){
FILE: java/com/jcraft/jsch/jcraft/HMACMD5.java
class HMACMD5 (line 35) | public class HMACMD5 extends HMAC implements MAC{
method HMACMD5 (line 38) | public HMACMD5(){
method getName (line 48) | public String getName(){
FILE: java/com/jcraft/jsch/jcraft/HMACMD596.java
class HMACMD596 (line 34) | public class HMACMD596 extends HMACMD5{
method getBlockSize (line 39) | public int getBlockSize(){return BSIZE;}
method doFinal (line 42) | public void doFinal(byte[] buf, int offset){
method getName (line 47) | public String getName(){
FILE: java/com/jcraft/jsch/jcraft/HMACSHA1.java
class HMACSHA1 (line 35) | public class HMACSHA1 extends HMAC implements MAC{
method HMACSHA1 (line 38) | public HMACSHA1(){
method getName (line 48) | public String getName(){
FILE: java/com/jcraft/jsch/jcraft/HMACSHA196.java
class HMACSHA196 (line 34) | public class HMACSHA196 extends HMACSHA1{
method getBlockSize (line 39) | public int getBlockSize(){return BSIZE;}
method doFinal (line 42) | public void doFinal(byte[] buf, int offset){
method getName (line 47) | public String getName(){
FILE: java/com/jcraft/jsch/jgss/GSSContextKrb5.java
class GSSContextKrb5 (line 44) | public class GSSContextKrb5 implements com.jcraft.jsch.GSSContext{
method create (line 52) | public void create(String user, String host) throws JSchException{
method isEstablished (line 114) | public boolean isEstablished(){
method init (line 118) | public byte[] init(byte[] token, int s, int l) throws JSchException {
method getMIC (line 145) | public byte[] getMIC(byte[] message, int s, int l){
method dispose (line 155) | public void dispose(){
method getSystemProperty (line 163) | private static String getSystemProperty(String key){
method setSystemProperty (line 171) | private static void setSystemProperty(String key, String value){
FILE: java/com/jcraft/jzlib/Adler32.java
class Adler32 (line 37) | final public class Adler32 implements Checksum {
method reset (line 47) | public void reset(long init){
method reset (line 52) | public void reset(){
method getValue (line 57) | public long getValue(){
method update (line 61) | public void update(byte[] buf, int index, int len){
method copy (line 91) | public Adler32 copy(){
method combine (line 99) | static long combine(long adler1, long adler2, long len2){
FILE: java/com/jcraft/jzlib/CRC32.java
class CRC32 (line 37) | final public class CRC32 implements Checksum {
method update (line 58) | public void update (byte[] buf, int index, int len) {
method reset (line 65) | public void reset(){
method reset (line 69) | public void reset(long vv){
method getValue (line 73) | public long getValue(){
method combine (line 79) | static long combine(long crc1, long crc2, long len2){
method gf2_matrix_times (line 129) | private static long gf2_matrix_times(long[] mat, long vec){
method gf2_matrix_square (line 141) | static final void gf2_matrix_square(long[] square, long[] mat) {
method copy (line 168) | public CRC32 copy(){
method getCRC32Table (line 174) | public static int[] getCRC32Table(){
FILE: java/com/jcraft/jzlib/Checksum.java
type Checksum (line 37) | interface Checksum {
method update (line 38) | void update(byte[] buf, int index, int len);
method reset (line 39) | void reset();
method reset (line 40) | void reset(long init);
method getValue (line 41) | long getValue();
method copy (line 42) | Checksum copy();
FILE: java/com/jcraft/jzlib/Deflate.java
class Deflate (line 37) | public
class Config (line 47) | static class Config{
method Config (line 53) | Config(int good_length, int max_lazy,
method Deflate (line 324) | Deflate(ZStream strm){
method lm_init (line 331) | void lm_init() {
method tr_init (line 354) | void tr_init(){
method init_block (line 373) | void init_block(){
method pqdownheap (line 388) | void pqdownheap(short[] tree, // the tree to restore
method smaller (line 410) | static boolean smaller(short[] tree, int n, int m, byte[] depth){
method scan_tree (line 419) | void scan_tree (short[] tree,// the tree to be scanned
method build_bl_tree (line 466) | int build_bl_tree(){
method send_all_trees (line 494) | void send_all_trees(int lcodes, int dcodes, int blcodes){
method send_tree (line 509) | void send_tree (short[] tree,// the tree to be sent
method put_byte (line 560) | final void put_byte(byte[] p, int start, int len){
method put_byte (line 565) | final void put_byte(byte c){
method put_short (line 568) | final void put_short(int w) {
method putShortMSB (line 572) | final void putShortMSB(int b){
method send_code (line 577) | final void send_code(int c, short[] tree){
method send_bits (line 582) | void send_bits(int value, int length){
method _tr_align (line 607) | void _tr_align(){
method _tr_tally (line 628) | boolean _tr_tally (int dist, // distance of matched string
method compress_block (line 669) | void compress_block(short[] ltree, short[] dtree){
method set_data_type (line 719) | void set_data_type(){
method bi_flush (line 730) | void bi_flush(){
method bi_windup (line 744) | void bi_windup(){
method copy_block (line 756) | void copy_block(int buf, // the input data
method flush_block_only (line 776) | void flush_block_only(boolean eof){
method deflate_stored (line 791) | int deflate_stored(int flush){
method _tr_stored_block (line 842) | void _tr_stored_block(int buf, // input block
method _tr_flush_block (line 852) | void _tr_flush_block(int buf, // input block, or NULL if too old
method fill_window (line 923) | void fill_window(){
method deflate_fast (line 1007) | int deflate_fast(int flush){
method deflate_slow (line 1112) | int deflate_slow(int flush){
method longest_match (line 1241) | int longest_match(int cur_match){
method deflateInit (line 1320) | int deflateInit(int level, int bits, int memlevel){
method deflateInit (line 1325) | int deflateInit(int level, int bits){
method deflateInit (line 1329) | int deflateInit(int level){
method deflateInit (line 1332) | private int deflateInit(int level, int method, int windowBits,
method deflateReset (line 1398) | int deflateReset(){
method deflateEnd (line 1419) | int deflateEnd(){
method deflateParams (line 1434) | int deflateParams(int _level, int _strategy){
method deflateSetDictionary (line 1462) | int deflateSetDictionary (byte[] dictionary, int dictLength){
method deflate (line 1495) | int deflate(int flush){
method deflateCopy (line 1662) | static int deflateCopy(ZStream dest, ZStream src){
method clone (line 1699) | public Object clone() throws CloneNotSupportedException {
method dup (line 1735) | private byte[] dup(byte[] buf){
method dup (line 1740) | private short[] dup(short[] buf){
method dup (line 1745) | private int[] dup(int[] buf){
method getGZIPHeader (line 1751) | synchronized GZIPHeader getGZIPHeader(){
FILE: java/com/jcraft/jzlib/Deflater.java
class Deflater (line 37) | final public class Deflater extends ZStream{
method Deflater (line 62) | public Deflater(){
method Deflater (line 66) | public Deflater(int level) throws GZIPException {
method Deflater (line 70) | public Deflater(int level, boolean nowrap) throws GZIPException {
method Deflater (line 74) | public Deflater(int level, int bits) throws GZIPException {
method Deflater (line 78) | public Deflater(int level, int bits, boolean nowrap) throws GZIPExcept...
method Deflater (line 85) | public Deflater(int level, int bits, int memlevel, JZlib.WrapperType w...
method Deflater (line 92) | public Deflater(int level, int bits, int memlevel) throws GZIPException {
method init (line 99) | public int init(int level){
method init (line 102) | public int init(int level, boolean nowrap){
method init (line 105) | public int init(int level, int bits){
method init (line 108) | public int init(int level, int bits, int memlevel, JZlib.WrapperType w...
method init (line 125) | public int init(int level, int bits, int memlevel){
method init (line 130) | public int init(int level, int bits, boolean nowrap){
method deflate (line 136) | public int deflate(int flush){
method end (line 145) | public int end(){
method params (line 153) | public int params(int level, int strategy){
method setDictionary (line 157) | public int setDictionary (byte[] dictionary, int dictLength){
method finished (line 163) | public boolean finished(){
method copy (line 167) | public int copy(Deflater src){
FILE: java/com/jcraft/jzlib/DeflaterOutputStream.java
class DeflaterOutputStream (line 33) | public class DeflaterOutputStream extends FilterOutputStream {
method DeflaterOutputStream (line 51) | public DeflaterOutputStream(OutputStream out) throws IOException {
method DeflaterOutputStream (line 58) | public DeflaterOutputStream(OutputStream out, Deflater def) throws IOE...
method DeflaterOutputStream (line 62) | public DeflaterOutputStream(OutputStream out,
method DeflaterOutputStream (line 67) | public DeflaterOutputStream(OutputStream out,
method write (line 83) | public void write(int b) throws IOException {
method write (line 88) | public void write(byte[] b, int off, int len) throws IOException {
method finish (line 109) | public void finish() throws IOException {
method close (line 115) | public void close() throws IOException {
method deflate (line 127) | protected int deflate(int flush) throws IOException {
method flush (line 149) | public void flush() throws IOException {
method getTotalIn (line 162) | public long getTotalIn() {
method getTotalOut (line 166) | public long getTotalOut() {
method setSyncFlush (line 170) | public void setSyncFlush(boolean syncFlush){
method getSyncFlush (line 174) | public boolean getSyncFlush(){
method getDeflater (line 178) | public Deflater getDeflater(){
FILE: java/com/jcraft/jzlib/GZIPException.java
class GZIPException (line 37) | public class GZIPException extends java.io.IOException {
method GZIPException (line 38) | public GZIPException() {
method GZIPException (line 41) | public GZIPException(String s) {
FILE: java/com/jcraft/jzlib/GZIPHeader.java
class GZIPHeader (line 42) | public class GZIPHeader implements Cloneable {
method setModifiedTime (line 73) | public void setModifiedTime(long mtime) {
method getModifiedTime (line 77) | public long getModifiedTime() {
method setOS (line 81) | public void setOS(int os) {
method getOS (line 88) | public int getOS(){
method setName (line 92) | public void setName(String name) {
method getName (line 101) | public String getName(){
method setComment (line 111) | public void setComment(String comment) {
method getComment (line 120) | public String getComment(){
method setCRC (line 130) | public void setCRC(long crc){
method getCRC (line 134) | public long getCRC(){
method put (line 138) | void put(Deflate d){
method clone (line 190) | @Override
FILE: java/com/jcraft/jzlib/GZIPInputStream.java
class GZIPInputStream (line 33) | public class GZIPInputStream extends InflaterInputStream {
method GZIPInputStream (line 35) | public GZIPInputStream(InputStream in) throws IOException {
method GZIPInputStream (line 39) | public GZIPInputStream(InputStream in,
method GZIPInputStream (line 46) | public GZIPInputStream(InputStream in,
method getModifiedtime (line 53) | public long getModifiedtime() {
method getOS (line 57) | public int getOS() {
method getName (line 61) | public String getName() {
method getComment (line 65) | public String getComment() {
method getCRC (line 69) | public long getCRC() throws GZIPException {
method readHeader (line 75) | public void readHeader() throws IOException {
method fill (line 127) | private int fill(byte[] buf) {
FILE: java/com/jcraft/jzlib/GZIPOutputStream.java
class GZIPOutputStream (line 33) | public class GZIPOutputStream extends DeflaterOutputStream {
method GZIPOutputStream (line 35) | public GZIPOutputStream(OutputStream out) throws IOException {
method GZIPOutputStream (line 39) | public GZIPOutputStream(OutputStream out, int size) throws IOException {
method GZIPOutputStream (line 43) | public GZIPOutputStream(OutputStream out,
method GZIPOutputStream (line 52) | public GZIPOutputStream(OutputStream out,
method check (line 60) | private void check() throws GZIPException {
method setModifiedTime (line 65) | public void setModifiedTime(long mtime) throws GZIPException {
method setOS (line 70) | public void setOS(int os) throws GZIPException {
method setName (line 75) | public void setName(String name) throws GZIPException {
method setComment (line 80) | public void setComment(String comment) throws GZIPException {
method getCRC (line 85) | public long getCRC() throws GZIPException {
FILE: java/com/jcraft/jzlib/InfBlocks.java
class InfBlocks (line 37) | final class InfBlocks{
method InfBlocks (line 110) | InfBlocks(ZStream z, int w){
method reset (line 121) | void reset(){
method proc (line 136) | int proc(int r){
method free (line 533) | void free(){
method set_dictionary (line 540) | void set_dictionary(byte[] d, int start, int n){
method sync_point (line 547) | int sync_point(){
method inflate_flush (line 552) | int inflate_flush(int r){
FILE: java/com/jcraft/jzlib/InfCodes.java
class InfCodes (line 37) | final class InfCodes{
method InfCodes (line 94) | InfCodes(ZStream z, InfBlocks s){
method init (line 99) | void init(int bl, int bd,
method proc (line 112) | int proc(int r){
method free (line 397) | void free(ZStream z){
method inflate_fast (line 406) | int inflate_fast(int bl, int bd,
FILE: java/com/jcraft/jzlib/InfTree.java
class InfTree (line 37) | final class InfTree{
method huft_build (line 229) | private int huft_build(int[] b, // code lengths in bits (all assumed <...
method inflate_trees_bits (line 419) | int inflate_trees_bits(int[] c, // 19 code lengths
method inflate_trees_dynamic (line 440) | int inflate_trees_dynamic(int nl, // number of literal/length codes
method inflate_trees_fixed (line 489) | static int inflate_trees_fixed(int[] bl, //literal desired/actual bit...
method initWorkArea (line 502) | private void initWorkArea(int vsize){
FILE: java/com/jcraft/jzlib/Inflate.java
class Inflate (line 37) | final class Inflate{
method inflateReset (line 122) | int inflateReset(){
method inflateEnd (line 133) | int inflateEnd(){
method Inflate (line 140) | Inflate(ZStream z){
method inflateInit (line 144) | int inflateInit(int w){
method inflate (line 189) | int inflate(int f){
method inflateSetDictionary (line 567) | int inflateSetDictionary(byte[] dictionary, int dictLength){
method inflateSync (line 597) | int inflateSync(){
method inflateSyncPoint (line 653) | int inflateSyncPoint(){
method readBytes (line 659) | private int readBytes(int n, int r, int f) throws Return{
class Return (line 680) | class Return extends Exception{
method Return (line 682) | Return(int r){this.r=r; }
method readString (line 686) | private int readString(int r, int f) throws Return{
method readBytes (line 702) | private int readBytes(int r, int f) throws Return{
method checksum (line 719) | private void checksum(int n, long v){
method getGZIPHeader (line 727) | public GZIPHeader getGZIPHeader(){
method inParsingHeader (line 731) | boolean inParsingHeader(){
FILE: java/com/jcraft/jzlib/Inflater.java
class Inflater (line 37) | final public class Inflater extends ZStream{
method Inflater (line 60) | public Inflater() {
method Inflater (line 65) | public Inflater(JZlib.WrapperType wrapperType) throws GZIPException {
method Inflater (line 69) | public Inflater(int w, JZlib.WrapperType wrapperType) throws GZIPExcep...
method Inflater (line 76) | public Inflater(int w) throws GZIPException {
method Inflater (line 80) | public Inflater(boolean nowrap) throws GZIPException {
method Inflater (line 84) | public Inflater(int w, boolean nowrap) throws GZIPException {
method init (line 93) | public int init(){
method init (line 97) | public int init(JZlib.WrapperType wrapperType){
method init (line 101) | public int init(int w, JZlib.WrapperType wrapperType) {
method init (line 117) | public int init(boolean nowrap){
method init (line 121) | public int init(int w){
method init (line 125) | public int init(int w, boolean nowrap){
method inflate (line 131) | public int inflate(int f){
method end (line 139) | public int end(){
method sync (line 147) | public int sync(){
method syncPoint (line 153) | public int syncPoint(){
method setDictionary (line 159) | public int setDictionary(byte[] dictionary, int dictLength){
method finished (line 165) | public boolean finished(){
FILE: java/com/jcraft/jzlib/InflaterInputStream.java
class InflaterInputStream (line 33) | public class InflaterInputStream extends FilterInputStream {
method InflaterInputStream (line 45) | public InflaterInputStream(InputStream in) throws IOException {
method InflaterInputStream (line 49) | public InflaterInputStream(InputStream in, boolean nowrap) throws IOEx...
method InflaterInputStream (line 54) | public InflaterInputStream(InputStream in, Inflater inflater) throws I...
method InflaterInputStream (line 58) | public InflaterInputStream(InputStream in,
method InflaterInputStream (line 63) | public InflaterInputStream(InputStream in,
method read (line 82) | public int read() throws IOException {
method read (line 87) | public int read(byte[] b, int off, int len) throws IOException {
method available (line 127) | public int available() throws IOException {
method skip (line 139) | public long skip(long n) throws IOException {
method close (line 163) | public void close() throws IOException {
method fill (line 173) | protected void fill() throws IOException {
method markSupported (line 192) | public boolean markSupported() {
method mark (line 196) | public synchronized void mark(int readlimit) {
method reset (line 199) | public synchronized void reset() throws IOException {
method getTotalIn (line 203) | public long getTotalIn() {
method getTotalOut (line 207) | public long getTotalOut() {
method getAvailIn (line 211) | public byte[] getAvailIn() {
method readHeader (line 220) | public void readHeader() throws IOException {
method getInflater (line 244) | public Inflater getInflater(){
FILE: java/com/jcraft/jzlib/JZlib.java
class JZlib (line 37) | final public class JZlib{
method version (line 39) | public static String version(){return version;}
type WrapperType (line 44) | public enum WrapperType {
method adler32_combine (line 85) | public static long adler32_combine(long adler1, long adler2, long len2){
method crc32_combine (line 89) | public static long crc32_combine(long crc1, long crc2, long len2){
FILE: java/com/jcraft/jzlib/StaticTree.java
class StaticTree (line 37) | final class StaticTree{
method StaticTree (line 137) | private StaticTree(short[] static_tree,
FILE: java/com/jcraft/jzlib/Tree.java
class Tree (line 37) | final class Tree{
method d_code (line 148) | static int d_code(int dist){
method gen_bitlen (line 164) | void gen_bitlen(Deflate s){
method build_tree (line 235) | void build_tree(Deflate s){
method gen_codes (line 320) | private final static void gen_codes(
method bi_reverse (line 353) | private final static int bi_reverse(
FILE: java/com/jcraft/jzlib/ZInputStream.java
class ZInputStream (line 38) | @Deprecated
method ZInputStream (line 48) | public ZInputStream(InputStream in) throws IOException {
method ZInputStream (line 51) | public ZInputStream(InputStream in, boolean nowrap) throws IOException {
method ZInputStream (line 57) | public ZInputStream(InputStream in, int level) throws IOException {
method read (line 66) | public int read() throws IOException {
method read (line 73) | public int read(byte[] b, int off, int len) throws IOException {
method skip (line 96) | public long skip(long n) throws IOException {
method getFlushMode (line 104) | public int getFlushMode() {
method setFlushMode (line 108) | public void setFlushMode(int flush) {
method getTotalIn (line 112) | public long getTotalIn() {
method getTotalOut (line 117) | public long getTotalOut() {
method close (line 122) | public void close() throws IOException{
FILE: java/com/jcraft/jzlib/ZOutputStream.java
class ZOutputStream (line 38) | @Deprecated
method ZOutputStream (line 52) | public ZOutputStream(OutputStream out) throws IOException {
method ZOutputStream (line 60) | public ZOutputStream(OutputStream out, int level) throws IOException {
method ZOutputStream (line 64) | public ZOutputStream(OutputStream out, int level, boolean nowrap) thro...
method write (line 73) | public void write(int b) throws IOException {
method write (line 78) | public void write(byte b[], int off, int len) throws IOException {
method getFlushMode (line 100) | public int getFlushMode() {
method setFlushMode (line 104) | public void setFlushMode(int flush) {
method finish (line 108) | public void finish() throws IOException {
method end (line 123) | public synchronized void end() {
method close (line 133) | public void close() throws IOException {
method getTotalIn (line 145) | public long getTotalIn() {
method getTotalOut (line 150) | public long getTotalOut() {
method flush (line 155) | public void flush() throws IOException {
FILE: java/com/jcraft/jzlib/ZStream.java
class ZStream (line 42) | @Deprecated
method ZStream (line 85) | public ZStream(){
method ZStream (line 89) | public ZStream(Checksum adler){
method inflateInit (line 93) | public int inflateInit(){
method inflateInit (line 96) | public int inflateInit(boolean nowrap){
method inflateInit (line 99) | public int inflateInit(int w){
method inflateInit (line 102) | public int inflateInit(JZlib.WrapperType wrapperType) {
method inflateInit (line 105) | public int inflateInit(int w, JZlib.WrapperType wrapperType) {
method inflateInit (line 120) | public int inflateInit(int w, boolean nowrap){
method inflate (line 125) | public int inflate(int f){
method inflateEnd (line 129) | public int inflateEnd(){
method inflateSync (line 135) | public int inflateSync(){
method inflateSyncPoint (line 140) | public int inflateSyncPoint(){
method inflateSetDictionary (line 145) | public int inflateSetDictionary(byte[] dictionary, int dictLength){
method inflateFinished (line 150) | public boolean inflateFinished(){
method deflateInit (line 154) | public int deflateInit(int level){
method deflateInit (line 157) | public int deflateInit(int level, boolean nowrap){
method deflateInit (line 160) | public int deflateInit(int level, int bits){
method deflateInit (line 163) | public int deflateInit(int level, int bits, int memlevel, JZlib.Wrappe...
method deflateInit (line 180) | public int deflateInit(int level, int bits, int memlevel){
method deflateInit (line 184) | public int deflateInit(int level, int bits, boolean nowrap){
method deflate (line 188) | public int deflate(int flush){
method deflateEnd (line 194) | public int deflateEnd(){
method deflateParams (line 200) | public int deflateParams(int level, int strategy){
method deflateSetDictionary (line 204) | public int deflateSetDictionary (byte[] dictionary, int dictLength){
method flush_pending (line 214) | void flush_pending(){
method read_buf (line 247) | int read_buf(byte[] buf, int start, int size) {
method getAdler (line 264) | public long getAdler(){
method free (line 268) | public void free(){
method setOutput (line 274) | public void setOutput(byte[] buf){
method setOutput (line 278) | public void setOutput(byte[] buf, int off, int len){
method setInput (line 284) | public void setInput(byte[] buf){
method setInput (line 288) | public void setInput(byte[] buf, boolean append){
method setInput (line 292) | public void setInput(byte[] buf, int off, int len, boolean append){
method getNextIn (line 310) | public byte[] getNextIn(){
method setNextIn (line 314) | public void setNextIn(byte[] next_in){
method getNextInIndex (line 318) | public int getNextInIndex(){
method setNextInIndex (line 322) | public void setNextInIndex(int next_in_index){
method getAvailIn (line 326) | public int getAvailIn(){
method setAvailIn (line 330) | public void setAvailIn(int avail_in){
method getNextOut (line 334) | public byte[] getNextOut(){
method setNextOut (line 338) | public void setNextOut(byte[] next_out){
method getNextOutIndex (line 342) | public int getNextOutIndex(){
method setNextOutIndex (line 346) | public void setNextOutIndex(int next_out_index){
method getAvailOut (line 350) | public int getAvailOut(){
method setAvailOut (line 355) | public void setAvailOut(int avail_out){
method getTotalOut (line 359) | public long getTotalOut(){
method getTotalIn (line 363) | public long getTotalIn(){
method getMessage (line 367) | public String getMessage(){
method end (line 375) | public int end(){ return Z_OK; }
method finished (line 376) | public boolean finished(){ return false; }
FILE: java/com/jcraft/jzlib/ZStreamException.java
class ZStreamException (line 37) | public class ZStreamException extends java.io.IOException {
method ZStreamException (line 38) | public ZStreamException() {
method ZStreamException (line 41) | public ZStreamException(String s) {
FILE: java/com/tigervnc/network/FileDescriptor.java
type FileDescriptor (line 24) | public interface FileDescriptor {
method read (line 26) | public int read(ByteBuffer buf, int length) throws Exception;
method write (line 27) | public int write(ByteBuffer buf, int length) throws Exception;
method select (line 28) | public int select(int interestOps, Integer timeout) throws Exception;
method close (line 29) | public void close() throws IOException;
FILE: java/com/tigervnc/network/SSLEngineManager.java
class SSLEngineManager (line 31) | public class SSLEngineManager {
method SSLEngineManager (line 42) | public SSLEngineManager(SSLEngine sslEngine, FdInStream is_,
method doHandshake (line 56) | public void doHandshake() throws Exception {
method executeTasks (line 122) | private void executeTasks() {
method read (line 129) | public int read(ByteBuffer data, int length) throws IOException {
method write (line 152) | public int write(ByteBuffer data, int length) throws IOException {
method getSession (line 180) | public SSLSession getSession() {
FILE: java/com/tigervnc/network/Socket.java
class Socket (line 31) | abstract public class Socket {
method Socket (line 33) | public Socket(FileDescriptor fd) {
method inStream (line 40) | public FdInStream inStream() {return instream;}
method outStream (line 41) | public FdOutStream outStream() {return outstream;}
method getFd (line 42) | public FileDescriptor getFd() {return outstream.getFd();}
method shutdown (line 45) | public void shutdown() {isShutdown_ = true;}
method close (line 46) | public void close() throws IOException {getFd().close();}
method isShutdown (line 47) | public final boolean isShutdown() {return isShutdown_;}
method getMyPort (line 50) | abstract public int getMyPort();
method getPeerAddress (line 53) | abstract public String getPeerAddress();
method getPeerName (line 54) | abstract public String getPeerName();
method getPeerPort (line 55) | abstract public int getPeerPort();
method getPeerEndpoint (line 56) | abstract public String getPeerEndpoint();
method sameMachine (line 59) | abstract public boolean sameMachine();
method setRequiresQuery (line 61) | public void setRequiresQuery() {queryConnection = true;}
method requiresQuery (line 62) | public final boolean requiresQuery() {return queryConnection;}
method Socket (line 64) | protected Socket() {
method Socket (line 69) | protected Socket(FdInStream i, FdOutStream o, boolean own) {
FILE: java/com/tigervnc/network/SocketDescriptor.java
class SocketDescriptor (line 32) | public class SocketDescriptor implements FileDescriptor {
method SocketDescriptor (line 34) | public SocketDescriptor() throws Exception {
method shutdown (line 52) | public void shutdown() throws IOException {
method close (line 61) | public void close() throws IOException {
method DefaultSelectorProvider (line 69) | private static SelectorProvider DefaultSelectorProvider() {
method select (line 77) | synchronized public int select(int interestOps, Integer timeout) throw...
method write (line 106) | public int write(ByteBuffer buf, int len) throws Exception {
method read (line 116) | public int read(ByteBuffer buf, int len) throws Exception {
method socket (line 126) | public java.net.Socket socket() {
method getRemoteAddress (line 130) | public SocketAddress getRemoteAddress() throws IOException {
method getLocalAddress (line 136) | public SocketAddress getLocalAddress() throws IOException {
method isConnectionPending (line 142) | public boolean isConnectionPending() {
method connect (line 146) | public boolean connect(SocketAddress remote) throws IOException {
method finishConnect (line 150) | public boolean finishConnect() throws IOException {
method isConnected (line 154) | public boolean isConnected() {
method setChannel (line 158) | protected void setChannel(SocketChannel channel_) {
FILE: java/com/tigervnc/network/SocketException.java
class SocketException (line 23) | public class SocketException extends SystemException {
method SocketException (line 24) | public SocketException(String s) {
FILE: java/com/tigervnc/network/SocketListener.java
class SocketListener (line 27) | abstract public class SocketListener {
method SocketListener (line 29) | public SocketListener() {}
method shutdown (line 32) | abstract public void shutdown() throws Exception;
method accept (line 37) | abstract public Socket accept();
method getFd (line 39) | public FileDescriptor getFd() {return fd;}
FILE: java/com/tigervnc/network/TcpListener.java
class TcpListener (line 33) | public class TcpListener extends SocketListener {
method TcpListener (line 37) | public TcpListener(String listenaddr, int port, boolean localhostOnly,
method TcpListener (line 83) | public TcpListener(String listenaddr, int port) throws Exception {
method finalize (line 87) | protected void finalize() throws Exception {
method shutdown (line 96) | public void shutdown() throws Exception {
method accept (line 104) | public TcpSocket accept() {
method getMyPort (line 147) | public int getMyPort() {
FILE: java/com/tigervnc/network/TcpSocket.java
class TcpSocket (line 38) | public class TcpSocket extends Socket {
method initSockets (line 42) | public static void initSockets() {
method TcpSocket (line 50) | public TcpSocket(SocketDescriptor sock, boolean close) {
method TcpSocket (line 55) | public TcpSocket(SocketDescriptor sock) {
method TcpSocket (line 59) | public TcpSocket(String host, int port) throws Exception {
method finalize (line 123) | protected void finalize() throws Exception {
method getMyPort (line 132) | public int getMyPort() {
method getPeerAddress (line 136) | public String getPeerAddress() {
method getPeerName (line 143) | public String getPeerName() {
method getPeerPort (line 150) | public int getPeerPort() {
method getPeerEndpoint (line 155) | public String getPeerEndpoint() {
method sameMachine (line 161) | public boolean sameMachine() throws Exception {
method shutdown (line 171) | public void shutdown() throws Exception {
method close (line 180) | public void close() throws IOException {
method enableNagles (line 184) | public static boolean enableNagles(SocketDescriptor sock, boolean enab...
method isSocket (line 194) | public static boolean isSocket(java.net.Socket sock) {
method isConnected (line 198) | public boolean isConnected() {
method getSockPort (line 202) | public int getSockPort() {
method findFreeTcpPort (line 207) | public static int findFreeTcpPort() {
FILE: java/com/tigervnc/rdr/AESEAXCipher.java
class AESEAXCipher (line 34) | public class AESEAXCipher {
method AESEAXCipher (line 42) | public AESEAXCipher(byte[] key)
method encryptCTR (line 72) | private void encryptCTR(byte[] input, int inputOffset, int inputLength,
method computeCMAC (line 83) | private byte[] computeCMAC(byte[] input, int offset,
method encrypt (line 111) | public void encrypt(byte[] input, int inputOffset, int inputLength,
method decrypt (line 128) | public void decrypt(byte[] input, int inputOffset, int inputLength,
FILE: java/com/tigervnc/rdr/AESInStream.java
class AESInStream (line 23) | public class AESInStream extends InStream {
method AESInStream (line 27) | public AESInStream(InStream _in, byte[] key)
method pos (line 44) | public final int pos()
method overrun (line 49) | protected final int overrun(int itemSize, int nItems, boolean wait)
method readMessage (line 76) | private int readMessage(byte[] buf, int bufPtr, int len, boolean wait)
method fillDecryptedMessageBuffer (line 96) | private boolean fillDecryptedMessageBuffer(boolean wait)
FILE: java/com/tigervnc/rdr/AESOutStream.java
class AESOutStream (line 23) | public class AESOutStream extends OutStream {
method AESOutStream (line 27) | public AESOutStream(OutStream _out, byte[] key)
method length (line 39) | public int length()
method flush (line 44) | public void flush()
method overrun (line 56) | protected int overrun(int itemSize, int nItems)
method writeMessage (line 71) | protected int writeMessage(byte[] data, int dataPtr, int length)
FILE: java/com/tigervnc/rdr/EndOfStream.java
class EndOfStream (line 21) | public class EndOfStream extends Exception {
method EndOfStream (line 22) | public EndOfStream() {
FILE: java/com/tigervnc/rdr/Exception.java
class Exception (line 22) | public class Exception extends RuntimeException {
method Exception (line 23) | public Exception(String s) {
class FrameException (line 28) | class FrameException extends Exception {
method FrameException (line 29) | public FrameException() {
FILE: java/com/tigervnc/rdr/FdInStream.java
class FdInStream (line 30) | public class FdInStream extends InStream {
method FdInStream (line 35) | public FdInStream(FileDescriptor fd_, int timeoutms_, int bufSize_,
method FdInStream (line 46) | public FdInStream(FileDescriptor fd_) { this(fd_, -1, 0, false); }
method FdInStream (line 48) | public FdInStream(FileDescriptor fd_, FdInStreamBlockCallback blockCal...
method FdInStream (line 58) | public FdInStream(FileDescriptor fd_,
method readBytes (line 63) | public final void readBytes(ByteBuffer data, int length) {
method setTimeout (line 87) | public void setTimeout(int timeoutms_) {
method setBlockCallback (line 91) | public void setBlockCallback(FdInStreamBlockCallback blockCallback_)
method pos (line 97) | public final int pos() { return offset + ptr; }
method startTiming (line 99) | public final void startTiming() {
method stopTiming (line 110) | public final void stopTiming() {
method kbitsPerSecond (line 116) | public final long kbitsPerSecond() {
method timeWaited (line 120) | public final long timeWaited() { return timeWaitedIn100us; }
method overrun (line 122) | protected int overrun(int itemSize, int nItems, boolean wait)
method readWithTimeoutOrCallback (line 160) | protected int readWithTimeoutOrCallback(ByteBuffer buf, int len, boole...
method readWithTimeoutOrCallback (line 221) | private int readWithTimeoutOrCallback(ByteBuffer buf, int len) {
method getFd (line 225) | public FileDescriptor getFd() {
method setFd (line 229) | public void setFd(FileDescriptor fd_) {
method getBufSize (line 233) | public int getBufSize() {
FILE: java/com/tigervnc/rdr/FdInStreamBlockCallback.java
type FdInStreamBlockCallback (line 21) | public interface FdInStreamBlockCallback {
method blockCallback (line 22) | abstract public void blockCallback();
FILE: java/com/tigervnc/rdr/FdOutStream.java
class FdOutStream (line 28) | public class FdOutStream extends OutStream {
method FdOutStream (line 33) | public FdOutStream(FileDescriptor fd_, boolean blocking_, int timeoutm...
method FdOutStream (line 45) | public FdOutStream(FileDescriptor fd_) { this(fd_, true, -1, 0); }
method setTimeout (line 47) | public void setTimeout(int timeoutms_) {
method setBlocking (line 51) | public void setBlocking(boolean blocking_) {
method length (line 55) | public int length()
method bufferUsage (line 60) | int bufferUsage()
method getIdleTime (line 65) | long getIdleTime()
method flush (line 70) | public void flush()
method overrun (line 95) | protected int overrun(int itemSize, int nItems)
method writeWithTimeout (line 132) | private int writeWithTimeout(byte[] data, int dataPtr, int length, int...
method getFd (line 167) | public FileDescriptor getFd() {
method setFd (line 171) | public void setFd(FileDescriptor fd_) {
method getBufSize (line 175) | public int getBufSize() {
FILE: java/com/tigervnc/rdr/InStream.java
class InStream (line 31) | abstract public class InStream {
method check (line 37) | public int check(int itemSize, int nItems, boolean wait) {
method check (line 50) | public int check(int itemSize, int nItems) { return check(itemSize, nI...
method check (line 51) | public int check(int itemSize) { return check(itemSize, 1); }
method checkNoWait (line 57) | public final boolean checkNoWait(int length) { return check(length, 1,...
method readS8 (line 61) | public final int readS8() { check(1); return b[ptr++]; }
method readS16 (line 62) | public final int readS16() { check(2); int b0 = b[ptr++];
method readS32 (line 64) | public final int readS32() { check(4); int b0 = b[ptr++];
method readU8 (line 70) | public final int readU8() { return readS8() & 0xff; }
method readU16 (line 71) | public final int readU16() { return readS16() & 0xffff; }
method readU32 (line 72) | public final int readU32() { return readS32() & 0xffffffff; }
method readString (line 76) | public final String readString() {
method skip (line 97) | public final void skip(int bytes) {
method readBytes (line 107) | public void readBytes(ByteBuffer data, int length) {
method readOpaque8 (line 119) | public final int readOpaque8() { return readU8(); }
method readOpaque16 (line 120) | public final int readOpaque16() { return readU16(); }
method readOpaque32 (line 121) | public final int readOpaque32() { return readU32(); }
method pos (line 125) | abstract public int pos();
method bytesAvailable (line 131) | public boolean bytesAvailable() { return end != ptr; }
method getbuf (line 137) | public final byte[] getbuf() { return b; }
method getptr (line 138) | public final int getptr() { return ptr; }
method getend (line 139) | public final int getend() { return end; }
method setptr (line 140) | public final void setptr(int p) { ptr = p; }
method overrun (line 147) | abstract protected int overrun(int itemSize, int nItems, boolean wait);
method overrun (line 148) | protected int overrun(int itemSize, int nItems) {
method InStream (line 152) | protected InStream() {}
FILE: java/com/tigervnc/rdr/MemInStream.java
class MemInStream (line 21) | public class MemInStream extends InStream {
method MemInStream (line 23) | public MemInStream(byte[] data, int offset, int len) {
method pos (line 30) | public int pos() { return ptr; }
method reposition (line 31) | public void reposition(int pos) { ptr = start + pos; }
method overrun (line 33) | protected int overrun(int itemSize, int nItems, boolean wait) {
FILE: java/com/tigervnc/rdr/MemOutStream.java
class MemOutStream (line 26) | public class MemOutStream extends OutStream {
method MemOutStream (line 28) | public MemOutStream(int len) {
method MemOutStream (line 33) | public MemOutStream() { this(1024); }
method length (line 35) | public int length() { return ptr; }
method clear (line 36) | public void clear() { ptr = 0; }
method reposition (line 37) | public void reposition(int pos) { ptr = pos; }
method data (line 41) | public final byte[] data() { return b; }
method overrun (line 46) | protected int overrun(int itemSize, int nItems) {
FILE: java/com/tigervnc/rdr/OutStream.java
class OutStream (line 31) | abstract public class OutStream {
method check (line 37) | public final int check(int itemSize, int nItems) {
method check (line 50) | public final void check(int itemSize) {
method writeU8 (line 57) | public final void writeU8( int u) { check(1); b[ptr++] = (byte)u; }
method writeU16 (line 58) | public final void writeU16(int u) { check(2); b[ptr++] = (byte)(u >> 8);
method writeU32 (line 60) | public final void writeU32(int u) { check(4); b[ptr++] = (byte)(u >> 24);
method writeS8 (line 65) | public final void writeS8( int s) { writeU8( s); }
method writeS16 (line 66) | public final void writeS16(int s) { writeU16(s); }
method writeS32 (line 67) | public final void writeS32(int s) { writeU32(s); }
method writeCompactLength (line 72) | public final void writeCompactLength(int len) {
method writeString (line 90) | public final void writeString(String str) {
method pad (line 101) | public final void pad(int bytes) {
method skip (line 105) | public final void skip(int bytes) {
method writeBytes (line 115) | public void writeBytes(byte[] data, int dataPtr, int length) {
method writeBytes (line 125) | public void writeBytes(ByteBuffer data, int length) {
method copyBytes (line 136) | public void copyBytes(InStream is, int length) {
method writeOpaque8 (line 148) | public final void writeOpaque8( int u) { writeU8( u); }
method writeOpaque16 (line 149) | public final void writeOpaque16(int u) { writeU16(u); }
method writeOpaque32 (line 150) | public final void writeOpaque32(int u) { writeU32(u); }
method writeOpaque24A (line 151) | public final void writeOpaque24A(int u) { check(3);
method writeOpaque24B (line 155) | public final void writeOpaque24B(int u) { check(3);
method length (line 162) | abstract public int length();
method flush (line 166) | public void flush() {}
method getbuf (line 172) | public final byte[] getbuf() { return b; }
method getptr (line 173) | public final int getptr() { return ptr; }
method getend (line 174) | public final int getend() { return end; }
method setptr (line 175) | public final void setptr(int p) { ptr = p; }
method overrun (line 182) | abstract protected int overrun(int itemSize, int nItems);
method OutStream (line 184) | protected OutStream() {}
FILE: java/com/tigervnc/rdr/SystemException.java
class SystemException (line 24) | public class SystemException extends Exception {
method SystemException (line 25) | public SystemException(String s) {
FILE: java/com/tigervnc/rdr/TLSException.java
class TLSException (line 24) | class TLSException extends Exception {
method TLSException (line 25) | public TLSException(String s, int n) {
FILE: java/com/tigervnc/rdr/TLSInStream.java
class TLSInStream (line 30) | public class TLSInStream extends InStream {
method TLSInStream (line 34) | public TLSInStream(InStream _in, SSLEngineManager _manager) {
method pos (line 44) | public final int pos() {
method startTiming (line 48) | public final void startTiming() {
method stopTiming (line 52) | public final void stopTiming() {
method kbitsPerSecond (line 56) | public final long kbitsPerSecond() {
method timeWaited (line 60) | public final long timeWaited() {
method overrun (line 64) | protected final int overrun(int itemSize, int nItems, boolean wait) {
method readTLS (line 90) | protected int readTLS(byte[] buf, int bufPtr, int len, boolean wait)
FILE: java/com/tigervnc/rdr/TLSOutStream.java
class TLSOutStream (line 30) | public class TLSOutStream extends OutStream {
method TLSOutStream (line 34) | public TLSOutStream(OutStream _out, SSLEngineManager _manager) {
method length (line 44) | public int length()
method flush (line 49) | public void flush()
method overrun (line 61) | protected int overrun(int itemSize, int nItems)
method writeTLS (line 76) | protected int writeTLS(byte[] data, int dataPtr, int length)
FILE: java/com/tigervnc/rdr/TimedOut.java
class TimedOut (line 22) | class TimedOut extends Exception {
method TimedOut (line 23) | public TimedOut() {
FILE: java/com/tigervnc/rdr/WarningException.java
class WarningException (line 26) | public class WarningException extends RuntimeException {
method WarningException (line 27) | public WarningException(String s) {
FILE: java/com/tigervnc/rdr/ZlibInStream.java
class ZlibInStream (line 27) | public class ZlibInStream extends InStream {
method ZlibInStream (line 31) | public ZlibInStream(int bufSize_)
method ZlibInStream (line 40) | public ZlibInStream() { this(defaultBufSize); }
method setUnderlying (line 42) | public void setUnderlying(InStream is, int bytesIn_)
method pos (line 49) | public int pos()
method flushUnderlying (line 54) | public void flushUnderlying()
method reset (line 66) | public void reset()
method init (line 72) | public void init()
method deinit (line 86) | public void deinit()
method overrun (line 94) | protected int overrun(int itemSize, int nItems, boolean wait)
method decompress (line 124) | private boolean decompress(boolean wait)
FILE: java/com/tigervnc/rfb/AliasParameter.java
class AliasParameter (line 23) | public class AliasParameter extends VoidParameter {
method AliasParameter (line 24) | public AliasParameter(String name_, String desc_, VoidParameter param_,
method AliasParameter (line 31) | public AliasParameter(String name_, String desc_, VoidParameter param_) {
method setParam (line 35) | public boolean setParam(String v) { return param.setParam(v); }
method setParam (line 36) | public boolean setParam() { return param.setParam(); }
method getDefaultStr (line 38) | public String getDefaultStr() { return param.getDefaultStr(); }
method getValueStr (line 39) | public String getValueStr() { return param.getValueStr(); }
method isBool (line 40) | public boolean isBool() { return param.isBool(); }
method setImmutable (line 42) | public void setImmutable() {
method setHasBeenSet (line 47) | public void setHasBeenSet() {
method hasBeenSet (line 51) | public boolean hasBeenSet() {
FILE: java/com/tigervnc/rfb/AuthFailureException.java
class AuthFailureException (line 22) | public class AuthFailureException extends Exception {
method AuthFailureException (line 23) | public AuthFailureException() { super("Authentication failure"); }
method AuthFailureException (line 24) | public AuthFailureException(String reason) {
FILE: java/com/tigervnc/rfb/BoolParameter.java
class BoolParameter (line 23) | public class BoolParameter extends VoidParameter {
method BoolParameter (line 24) | public BoolParameter(String name_, String desc_, boolean v,
method BoolParameter (line 32) | public BoolParameter(String name_, String desc_, boolean v) {
method setParam (line 36) | public boolean setParam(String v) {
method setParam (line 52) | public boolean setParam() { setParam(true); return true; }
method setParam (line 53) | public void setParam(boolean b) {
method getDefaultStr (line 58) | public String getDefaultStr() { return defValue ? "1" : "0"; }
method getValueStr (line 59) | public String getValueStr() { return value ? "1" : "0"; }
method isBool (line 60) | public boolean isBool() { return true; }
method getValue (line 62) | final public boolean getValue() { return value; }
FILE: java/com/tigervnc/rfb/CConnection.java
class CConnection (line 31) | abstract public class CConnection extends CMsgHandler {
method CConnection (line 38) | public CConnection()
method setServerName (line 61) | public void setServerName(String name_) { serverName = name_; }
method setServerPort (line 63) | public void setServerPort(int port_) { serverPort = port_; }
method setStreams (line 71) | public final void setStreams(InStream is_, OutStream os_)
method setShared (line 79) | public final void setShared(boolean s) { shared = s; }
method setFramebuffer (line 86) | public void setFramebuffer(ModifiablePixelBuffer fb)
method initialiseProtocol (line 133) | public final void initialiseProtocol()
method processMsg (line 140) | public void processMsg()
method processVersionMsg (line 157) | private void processVersionMsg()
method processSecurityTypesMsg (line 210) | private void processSecurityTypesMsg()
method processSecurityMsg (line 294) | private void processSecurityMsg() {
method processSecurityResultMsg (line 302) | private void processSecurityResultMsg() {
method processInitMsg (line 331) | private void processInitMsg() {
method throwConnFailedException (line 336) | private void throwConnFailedException() {
method securityCompleted (line 343) | private void securityCompleted() {
method setDesktopSize (line 356) | public void setDesktopSize(int w, int h) {
method setExtendedDesktopSize (line 372) | public void setExtendedDesktopSize(int reason,
method endOfContinuousUpdates (line 391) | public void endOfContinuousUpdates()
method serverInit (line 408) | public void serverInit(int width, int height,
method readAndDecodeRect (line 435) | public void readAndDecodeRect(Rect r, int encoding,
method framebufferUpdateStart (line 442) | public void framebufferUpdateStart()
method framebufferUpdateEnd (line 454) | public void framebufferUpdateEnd()
method dataRect (line 480) | public void dataRect(Rect r, int encoding)
method authSuccess (line 488) | public void authSuccess() { }
method initDone (line 496) | public void initDone() { }
method resizeFramebuffer (line 501) | public void resizeFramebuffer()
method refreshFramebuffer (line 508) | public void refreshFramebuffer()
method setPreferredEncoding (line 521) | public void setPreferredEncoding(int encoding)
method getPreferredEncoding (line 530) | public int getPreferredEncoding()
method setCompressLevel (line 537) | public void setCompressLevel(int level)
method setQualityLevel (line 546) | public void setQualityLevel(int level)
method setPF (line 558) | public void setPF(PixelFormat pf)
method reader (line 567) | public CMsgReader reader() { return reader_; }
method writer (line 568) | public CMsgWriter writer() { return writer_; }
method getInStream (line 570) | public InStream getInStream() { return is; }
method getOutStream (line 571) | public OutStream getOutStream() { return os; }
method getServerName (line 575) | public String getServerName() { return serverName; }
method getServerPort (line 576) | public int getServerPort() { return serverPort; }
method isSecure (line 578) | boolean isSecure() { return csecurity != null ? csecurity.isSecure() :...
type stateEnum (line 580) | public enum stateEnum {
method state (line 591) | public stateEnum state() { return state_; }
method setState (line 593) | protected void setState(stateEnum s) { state_ = s; }
method setReader (line 595) | protected void setReader(CMsgReader r) { reader_ = r; }
method setWriter (line 596) | protected void setWriter(CMsgWriter w) { writer_ = w; }
method getFramebuffer (line 598) | protected ModifiablePixelBuffer getFramebuffer() { return framebuffer; }
method fence (line 600) | public void fence(int flags, int len, byte[] data)
method requestNewUpdate (line 615) | private void requestNewUpdate()
method updateEncodings (line 662) | private void updateEncodings()
method throwAuthFailureException (line 706) | private void throwAuthFailureException() {
FILE: java/com/tigervnc/rfb/CMsgHandler.java
class CMsgHandler (line 28) | abstract public class CMsgHandler {
method CMsgHandler (line 32) | public CMsgHandler() {
method setDesktopSize (line 36) | public void setDesktopSize(int width, int height)
method setExtendedDesktopSize (line 41) | public void setExtendedDesktopSize(int reason, int result,
method setCursor (line 53) | abstract public void setCursor(int width, int height, Point hotspot,
method setPixelFormat (line 56) | public void setPixelFormat(PixelFormat pf)
method setName (line 61) | public void setName(String name)
method fence (line 66) | public void fence(int flags, int len, byte[] data)
method endOfContinuousUpdates (line 71) | public void endOfContinuousUpdates()
method clientRedirect (line 76) | abstract public void clientRedirect(int port, String host,
method serverInit (line 79) | public void serverInit(int width, int height,
method readAndDecodeRect (line 87) | abstract public void readAndDecodeRect(Rect r, int encoding,
method framebufferUpdateStart (line 90) | public void framebufferUpdateStart() {}
method framebufferUpdateEnd (line 91) | public void framebufferUpdateEnd() {}
method dataRect (line 92) | abstract public void dataRect(Rect r, int encoding);
method setColourMapEntries (line 94) | abstract public void setColourMapEntries(int firstColour, int nColours,
method bell (line 96) | abstract public void bell();
method serverCutText (line 97) | abstract public void serverCutText(String str, int len);
FILE: java/com/tigervnc/rfb/CMsgReader.java
class CMsgReader (line 35) | public class CMsgReader {
method CMsgReader (line 39) | protected CMsgReader(CMsgHandler handler_, InStream is_)
method readServerInit (line 49) | public void readServerInit()
method readMsg (line 59) | public void readMsg()
method readSetColourMapEntries (line 134) | protected void readSetColourMapEntries()
method readBell (line 145) | protected void readBell()
method readServerCutText (line 150) | protected void readServerCutText()
method readFence (line 168) | protected void readFence()
method readEndOfContinuousUpdates (line 190) | protected void readEndOfContinuousUpdates()
method readFramebufferUpdate (line 195) | protected void readFramebufferUpdate()
method readRect (line 202) | protected void readRect(Rect r, int encoding)
method readSetXCursor (line 217) | protected void readSetXCursor(int width, int height, Point hotspot)
method readSetCursor (line 274) | protected void readSetCursor(int width, int height, Point hotspot)
method readSetCursorWithAlpha (line 313) | protected void readSetCursorWithAlpha(int width, int height, Point hot...
method readSetVMwareCursor (line 355) | protected void readSetVMwareCursor(int width, int height, Point hotspot)
method readSetDesktopName (line 452) | protected void readSetDesktopName(int x, int y, int w, int h)
method readExtendedDesktopSize (line 464) | protected void readExtendedDesktopSize(int x, int y, int w, int h)
method readClientRedirect (line 488) | protected void readClientRedirect(int x, int y, int w, int h)
method getImageBuf (line 500) | public int[] getImageBuf(int required) { return getImageBuf(required, ...
method getImageBuf (line 502) | public int[] getImageBuf(int required, int requested, int nPixels)
method getInStream (line 521) | public InStream getInStream() { return is; }
FILE: java/com/tigervnc/rfb/CMsgWriter.java
class CMsgWriter (line 28) | public class CMsgWriter {
method CMsgWriter (line 30) | protected CMsgWriter(ServerParams server_, OutStream os_)
method writeClientInit (line 36) | synchronized public void writeClientInit(boolean shared) {
method writeSetPixelFormat (line 41) | synchronized public void writeSetPixelFormat(PixelFormat pf)
method writeSetEncodings (line 49) | synchronized public void writeSetEncodings(List<Integer> encodings)
method writeSetDesktopSize (line 59) | synchronized public void writeSetDesktopSize(int width, int height,
method writeFramebufferUpdateRequest (line 87) | synchronized public void writeFramebufferUpdateRequest(Rect r, boolean...
method writeEnableContinuousUpdates (line 98) | synchronized public void writeEnableContinuousUpdates(boolean enable,
method writeFence (line 116) | synchronized public void writeFence(int flags, int len, byte[] data)
method writeKeyEvent (line 136) | synchronized public void writeKeyEvent(int keysym, boolean down)
method writePointerEvent (line 145) | synchronized public void writePointerEvent(Point pos, int buttonMask)
method writeClientCutText (line 160) | synchronized public void writeClientCutText(String str, int len)
method startMsg (line 171) | synchronized protected void startMsg(int type) {
method endMsg (line 175) | synchronized protected void endMsg() {
FILE: java/com/tigervnc/rfb/CSecurity.java
class CSecurity (line 36) | abstract public class CSecurity {
method processMsg (line 37) | abstract public boolean processMsg(CConnection cc);
method getType (line 38) | abstract public int getType();
method description (line 39) | abstract public String description();
method isSecure (line 40) | public boolean isSecure() { return false; }
FILE: java/com/tigervnc/rfb/CSecurityIdent.java
class CSecurityIdent (line 24) | public class CSecurityIdent extends CSecurity {
method CSecurityIdent (line 26) | public CSecurityIdent() { }
method processMsg (line 28) | public boolean processMsg(CConnection cc) {
method getType (line 47) | public int getType() { return Security.secTypeIdent; }
method description (line 50) | public String description() { return "No Encryption"; }
Condensed preview — 897 files, each showing path, character count, and a content snippet. Download the .json file or copy for the full structured content (6,313K chars).
[
{
"path": ".github/ISSUE_TEMPLATE/bug_report.md",
"chars": 986,
"preview": "---\nname: Bug report\nabout: Create a report to help us improve\n\n---\n\n**Describe the bug**\nA clear and concise descriptio"
},
{
"path": ".github/ISSUE_TEMPLATE/config.yml",
"chars": 396,
"preview": "blank_issues_enabled: false\ncontact_links:\n - name: Usage question or discussion\n url: https://groups.google.com/for"
},
{
"path": ".github/ISSUE_TEMPLATE/feature_request.md",
"chars": 560,
"preview": "---\nname: Feature request\nabout: Suggest an idea for this project\n\n---\n\n**Is your feature request related to a problem? "
},
{
"path": ".github/containers/jammy/Dockerfile",
"chars": 258,
"preview": "FROM ubuntu:jammy\n\nARG DEBIAN_FRONTEND=noninteractive\n\nRUN apt-get update\nRUN apt-get -y install packaging-dev equivs\n\nR"
},
{
"path": ".github/containers/jammy/build.sh",
"chars": 1686,
"preview": "#!/bin/bash\n\nset -e\nset -x\n\n## Basic variables\n\nCURDIR=$(dirname $(readlink -f $0))\nTOPDIR=$(git rev-parse --show-toplev"
},
{
"path": ".github/containers/noble/Dockerfile",
"chars": 258,
"preview": "FROM ubuntu:noble\n\nARG DEBIAN_FRONTEND=noninteractive\n\nRUN apt-get update\nRUN apt-get -y install packaging-dev equivs\n\nR"
},
{
"path": ".github/containers/noble/build.sh",
"chars": 1686,
"preview": "#!/bin/bash\n\nset -e\nset -x\n\n## Basic variables\n\nCURDIR=$(dirname $(readlink -f $0))\nTOPDIR=$(git rev-parse --show-toplev"
},
{
"path": ".github/containers/rocky10/Dockerfile",
"chars": 330,
"preview": "FROM rockylinux/rockylinux:10\n\nRUN dnf -y group install 'Development Tools'\nRUN dnf -y install dnf-plugins-core sudo\nRUN"
},
{
"path": ".github/containers/rocky10/build.sh",
"chars": 1569,
"preview": "#!/bin/bash\n\nset -e\nset -x\n\n## Basic variables\n\nCURDIR=$(dirname $(readlink -f $0))\nTOPDIR=$(git rev-parse --show-toplev"
},
{
"path": ".github/containers/rocky8/Dockerfile",
"chars": 413,
"preview": "FROM rockylinux/rockylinux:8\n\nRUN dnf -y group install 'Development Tools'\nRUN dnf -y install sudo\nRUN dnf -y install dn"
},
{
"path": ".github/containers/rocky8/build.sh",
"chars": 1421,
"preview": "#!/bin/bash\n\nset -e\nset -x\n\n## Basic variables\n\nCURDIR=$(dirname $(readlink -f $0))\nTOPDIR=$(git rev-parse --show-toplev"
},
{
"path": ".github/containers/rocky9/Dockerfile",
"chars": 297,
"preview": "FROM rockylinux/rockylinux:9\n\nRUN dnf -y group install 'Development Tools'\nRUN dnf -y install dnf-plugins-core sudo\nRUN "
},
{
"path": ".github/containers/rocky9/build.sh",
"chars": 1421,
"preview": "#!/bin/bash\n\nset -e\nset -x\n\n## Basic variables\n\nCURDIR=$(dirname $(readlink -f $0))\nTOPDIR=$(git rev-parse --show-toplev"
},
{
"path": ".github/workflows/build.yml",
"chars": 5995,
"preview": "name: Build\n\non: [push, pull_request]\n\njobs:\n build-linux:\n runs-on: ubuntu-latest\n timeout-minutes: 10\n env:\n"
},
{
"path": ".github/workflows/test-report.yml",
"chars": 326,
"preview": "name: Test report\n\non:\n workflow_run:\n workflows: ['build']\n types:\n - completed\n\njobs:\n report:\n runs-o"
},
{
"path": ".gitignore",
"chars": 154,
"preview": "*.[ao]\n*.mo\n*.la\n*.lo\n.deps\n.libs\n\nCMakeFiles\nCMakeCache.txt\nMakefile\nMakefile.in\nconfig.h\ncmake_install.cmake\ncmake_uni"
},
{
"path": "BUILDING.txt",
"chars": 12311,
"preview": "*******************************************************************************\n** Building TigerVNC\n***************"
},
{
"path": "CMakeLists.txt",
"chars": 13639,
"preview": "#\n# Setup\n#\n\ncmake_minimum_required(VERSION 3.10.0)\n\n# Internal cmake modules\nset(CMAKE_MODULE_PATH ${CMAKE_SOURCE_DIR}/"
},
{
"path": "LICENCE.TXT",
"chars": 18000,
"preview": "\t\t GNU GENERAL PUBLIC LICENSE\n\t\t Version 2, June 1991\n\n\t Copyright (C) 1989, 1991 Free Software Foundation, In"
},
{
"path": "README.rst",
"chars": 6694,
"preview": "About TigerVNC\n==============\n\nVirtual Network Computing (VNC) is a remote display system which allows you to\nview and i"
},
{
"path": "cmake/Modules/CMakeMacroLibtoolFile.cmake",
"chars": 8510,
"preview": "# FIXME: Since we cannot require CMake 3.17, we cannot used deferred\n# functions, and hence we have to do somethi"
},
{
"path": "cmake/Modules/FindAVCodec.cmake",
"chars": 1104,
"preview": "#[=======================================================================[.rst:\nFindAVCodec\n-----------\n\nFind the FFmpeg"
},
{
"path": "cmake/Modules/FindAVUtil.cmake",
"chars": 1076,
"preview": "#[=======================================================================[.rst:\nFindAVUtil\n----------\n\nFind the FFmpeg a"
},
{
"path": "cmake/Modules/FindGLib.cmake",
"chars": 1230,
"preview": "#[=======================================================================[.rst:\nFindGLib\n----------\nFind the GLib librar"
},
{
"path": "cmake/Modules/FindGMP.cmake",
"chars": 978,
"preview": "#[=======================================================================[.rst:\nFindGMP\n-------\n\nFind the GNU MP bignum "
},
{
"path": "cmake/Modules/FindGio.cmake",
"chars": 1291,
"preview": "#[=======================================================================[.rst:\nFindGio\n----------\nFind the GIO library\n"
},
{
"path": "cmake/Modules/FindGobject.cmake",
"chars": 1131,
"preview": "#[=======================================================================[.rst:\nFindGobject\n----------\nFind the GObject "
},
{
"path": "cmake/Modules/FindNettle.cmake",
"chars": 1502,
"preview": "#[=======================================================================[.rst:\nFindNettle\n----------\n\nFind the Nettle a"
},
{
"path": "cmake/Modules/FindPAM.cmake",
"chars": 1025,
"preview": "#[=======================================================================[.rst:\nFindPAM\n-------\n\nFind the Pluggable Auth"
},
{
"path": "cmake/Modules/FindPWQuality.cmake",
"chars": 1131,
"preview": "#[=======================================================================[.rst:\nFindPWQuality\n-------------\n\nFind the pa"
},
{
"path": "cmake/Modules/FindPipeWire.cmake",
"chars": 1343,
"preview": "#[=======================================================================[.rst:\nFindPipeWire\n----------\nFind the PipeWir"
},
{
"path": "cmake/Modules/FindPixman.cmake",
"chars": 1079,
"preview": "#[=======================================================================[.rst:\nFindPixman\n----------\n\nFind the Pixman l"
},
{
"path": "cmake/Modules/FindSELinux.cmake",
"chars": 1094,
"preview": "#[=======================================================================[.rst:\nFindSELinux\n-----------\n\nFind the SELinu"
},
{
"path": "cmake/Modules/FindSWScale.cmake",
"chars": 1104,
"preview": "#[=======================================================================[.rst:\nFindSWScale\n-----------\n\nFind the FFmpeg"
},
{
"path": "cmake/Modules/FindSystemd.cmake",
"chars": 1098,
"preview": "#[=======================================================================[.rst:\nFindSystemd\n-----------\n\nFind the system"
},
{
"path": "cmake/Modules/FindUuid.cmake",
"chars": 1013,
"preview": "#[=======================================================================[.rst:\nFindUuid\n----------\nFind the UUID librar"
},
{
"path": "cmake/Modules/FindWaylandClient.cmake",
"chars": 1430,
"preview": "#[=======================================================================[.rst:\nFindWaylandClient\n-----------------\nFind"
},
{
"path": "cmake/Modules/FindXkbcommon.cmake",
"chars": 1144,
"preview": "#[=======================================================================[.rst:\nFindXkbcommon\n----------\nFind the Xkbcom"
},
{
"path": "cmake/StaticBuild.cmake",
"chars": 7053,
"preview": "#\n# Best-effort magic that tries to produce semi-static binaries\n# (i.e. only depends on \"safe\" libraries like libc and "
},
{
"path": "cmake/cmake_uninstall.cmake.in",
"chars": 1004,
"preview": "# This code is from the CMake FAQ\n\nif (NOT EXISTS \"@CMAKE_CURRENT_BINARY_DIR@/install_manifest.txt\")\n message(FATAL_ERR"
},
{
"path": "common/CMakeLists.txt",
"chars": 489,
"preview": "add_subdirectory(core)\nadd_subdirectory(rdr)\nadd_subdirectory(network)\nadd_subdirectory(rfb)\n\n# For any convenience libr"
},
{
"path": "common/core/CMakeLists.txt",
"chars": 620,
"preview": "add_library(core STATIC\n Configuration.cxx\n Exception.cxx\n Logger.cxx\n Logger_file.cxx\n Logger_stdio.cxx\n LogWrite"
},
{
"path": "common/core/Configuration.cxx",
"chars": 21094,
"preview": "/* Copyright (C) 2002-2005 RealVNC Ltd. All Rights Reserved.\n * Copyright 2004-2005 Cendio AB.\n * Copyright 2017 Peter "
},
{
"path": "common/core/Configuration.h",
"chars": 11762,
"preview": "/* Copyright (C) 2002-2005 RealVNC Ltd. All Rights Reserved.\n * Copyright 2011-2025 Pierre Ossman for Cendio AB\n * \n * "
},
{
"path": "common/core/Exception.cxx",
"chars": 3637,
"preview": "/* Copyright (C) 2002-2005 RealVNC Ltd. All Rights Reserved.\n * Copyright (C) 2004 Red Hat Inc.\n * Copyright (C) 2010 T"
},
{
"path": "common/core/Exception.h",
"chars": 2413,
"preview": "/* Copyright (C) 2002-2005 RealVNC Ltd. All Rights Reserved.\n * Copyright (C) 2004 Red Hat Inc.\n * Copyright (C) 2010 T"
},
{
"path": "common/core/LogWriter.cxx",
"chars": 3492,
"preview": "/* Copyright (C) 2002-2005 RealVNC Ltd. All Rights Reserved.\n * \n * This is free software; you can redistribute it and/"
},
{
"path": "common/core/LogWriter.h",
"chars": 3263,
"preview": "/* Copyright (C) 2002-2005 RealVNC Ltd. All Rights Reserved.\n * \n * This is free software; you can redistribute it and/"
},
{
"path": "common/core/Logger.cxx",
"chars": 2320,
"preview": "/* Copyright (C) 2002-2005 RealVNC Ltd. All Rights Reserved.\n * \n * This is free software; you can redistribute it and/"
},
{
"path": "common/core/Logger.h",
"chars": 1849,
"preview": "/* Copyright (C) 2002-2005 RealVNC Ltd. All Rights Reserved.\n * \n * This is free software; you can redistribute it and/"
},
{
"path": "common/core/Logger_file.cxx",
"chars": 2952,
"preview": "/* Copyright (C) 2002-2005 RealVNC Ltd. All Rights Reserved.\n * \n * This is free software; you can redistribute it and/"
},
{
"path": "common/core/Logger_file.h",
"chars": 1434,
"preview": "/* Copyright (C) 2002-2005 RealVNC Ltd. All Rights Reserved.\n * \n * This is free software; you can redistribute it and/"
},
{
"path": "common/core/Logger_stdio.cxx",
"chars": 1163,
"preview": "/* Copyright (C) 2002-2005 RealVNC Ltd. All Rights Reserved.\n * \n * This is free software; you can redistribute it and/"
},
{
"path": "common/core/Logger_stdio.h",
"chars": 1150,
"preview": "/* Copyright (C) 2002-2005 RealVNC Ltd. All Rights Reserved.\n * \n * This is free software; you can redistribute it and/"
},
{
"path": "common/core/Logger_syslog.cxx",
"chars": 1739,
"preview": "/* Copyright (C) 2015 TigerVNC\n *\n * This is free software; you can redistribute it and/or modify\n * it under the terms "
},
{
"path": "common/core/Logger_syslog.h",
"chars": 1165,
"preview": "/* Copyright (C) 2015 TigerVNC\n *\n * This is free software; you can redistribute it and/or modify\n * it under the terms "
},
{
"path": "common/core/Rect.h",
"chars": 4562,
"preview": "/* Copyright (C) 2002-2005 RealVNC Ltd. All Rights Reserved.\n * \n * This is free software; you can redistribute it and/"
},
{
"path": "common/core/Region.cxx",
"chars": 4457,
"preview": "/* Copyright (C) 2002-2005 RealVNC Ltd. All Rights Reserved.\n * Copyright 2016-2020 Pierre Ossman for Cendio AB\n * \n * "
},
{
"path": "common/core/Region.h",
"chars": 2357,
"preview": "/* Copyright (C) 2002-2005 RealVNC Ltd. All Rights Reserved.\n * Copyright 2016-2020 Pierre Ossman for Cendio AB\n * \n * "
},
{
"path": "common/core/Timer.cxx",
"chars": 3481,
"preview": "/* Copyright (C) 2002-2005 RealVNC Ltd. All Rights Reserved.\n * Copyright 2016-2024 Pierre Ossman for Cendio AB\n * \n * "
},
{
"path": "common/core/Timer.h",
"chars": 4304,
"preview": "/* Copyright (C) 2002-2005 RealVNC Ltd. All Rights Reserved.\n * Copyright 2018-2024 Pierre Ossman for Cendio AB\n * \n * "
},
{
"path": "common/core/string.cxx",
"chars": 14325,
"preview": "/* Copyright (C) 2002-2005 RealVNC Ltd. All Rights Reserved.\n * Copyright 2011-2023 Pierre Ossman for Cendio AB\n * \n * "
},
{
"path": "common/core/string.h",
"chars": 2996,
"preview": "/* Copyright (C) 2002-2005 RealVNC Ltd. All Rights Reserved.\n * Copyright 2011-2023 Pierre Ossman for Cendio AB\n * \n * "
},
{
"path": "common/core/time.cxx",
"chars": 2199,
"preview": "/* Copyright (C) 2002-2005 RealVNC Ltd. All Rights Reserved.\n * Copyright 2011-2019 Pierre Ossman for Cendio AB\n * \n * "
},
{
"path": "common/core/time.h",
"chars": 1910,
"preview": "/* Copyright (C) 2002-2005 RealVNC Ltd. All Rights Reserved.\n * Copyright 2011-2019 Pierre Ossman for Cendio AB\n * \n * "
},
{
"path": "common/core/winerrno.h",
"chars": 2321,
"preview": "\n/* Generated with:\ncat /usr/i686-pc-mingw32/sys-root/mingw/include/winerror.h \\\n | awk '/#define WSAE.*WSABASE/{gsub(\"W"
},
{
"path": "common/core/xdgdirs.cxx",
"chars": 3606,
"preview": "/* Copyright (C) 2010 TightVNC Team. All Rights Reserved.\n * Copyright 2021-2023 Pierre Ossman for Cendio AB\n *\n * This"
},
{
"path": "common/core/xdgdirs.h",
"chars": 2198,
"preview": "/* Copyright (C) 2010 TightVNC Team. All Rights Reserved.\n * Copyright 2021-2023 Pierre Ossman for Cendio AB\n *\n * This"
},
{
"path": "common/network/CMakeLists.txt",
"chars": 355,
"preview": "add_library(network STATIC\n Socket.cxx\n TcpSocket.cxx)\n\nif(NOT WIN32)\n target_sources(network PRIVATE UnixSocket.cxx)"
},
{
"path": "common/network/Socket.cxx",
"chars": 4952,
"preview": "/* Copyright (C) 2002-2005 RealVNC Ltd. All Rights Reserved.\n * \n * This is free software; you can redistribute it and/"
},
{
"path": "common/network/Socket.h",
"chars": 3010,
"preview": "/* Copyright (C) 2002-2005 RealVNC Ltd. All Rights Reserved.\n * \n * This is free software; you can redistribute it and/"
},
{
"path": "common/network/TcpSocket.cxx",
"chars": 21088,
"preview": "/* Copyright (C) 2002-2005 RealVNC Ltd. All Rights Reserved.\n * \n * This is free software; you can redistribute it and/"
},
{
"path": "common/network/TcpSocket.h",
"chars": 3432,
"preview": "/* Copyright (C) 2002-2005 RealVNC Ltd. All Rights Reserved.\n * \n * This is free software; you can redistribute it and/"
},
{
"path": "common/network/UnixSocket.cxx",
"chars": 4251,
"preview": "/* Copyright (C) 2002-2005 RealVNC Ltd. All Rights Reserved.\n * Copyright (c) 2012 University of Oslo. All Rights Rese"
},
{
"path": "common/network/UnixSocket.h",
"chars": 1847,
"preview": "/* Copyright (C) 2002-2005 RealVNC Ltd. All Rights Reserved.\n * Copyright (c) 2012 University of Oslo. All Rights Rese"
},
{
"path": "common/rdr/AESInStream.cxx",
"chars": 2705,
"preview": "/* Copyright (C) 2022 Dinglan Peng\n * \n * This is free software; you can redistribute it and/or modify\n * it under the t"
},
{
"path": "common/rdr/AESInStream.h",
"chars": 1323,
"preview": "/* Copyright (C) 2022 Dinglan Peng\n * \n * This is free software; you can redistribute it and/or modify\n * it under the t"
},
{
"path": "common/rdr/AESOutStream.cxx",
"chars": 2811,
"preview": "/* Copyright (C) 2022 Dinglan Peng\n * \n * This is free software; you can redistribute it and/or modify\n * it under the t"
},
{
"path": "common/rdr/AESOutStream.h",
"chars": 1477,
"preview": "/* Copyright (C) 2022 Dinglan Peng\n * \n * This is free software; you can redistribute it and/or modify\n * it under the t"
},
{
"path": "common/rdr/BufferedInStream.cxx",
"chars": 3499,
"preview": "/* Copyright (C) 2002-2005 RealVNC Ltd. All Rights Reserved.\n * Copyright 2020 Pierre Ossman for Cendio AB\n * \n * This "
},
{
"path": "common/rdr/BufferedInStream.h",
"chars": 1545,
"preview": "/* Copyright (C) 2002-2005 RealVNC Ltd. All Rights Reserved.\n * Copyright 2020 Pierre Ossman for Cendio AB\n * \n * This "
},
{
"path": "common/rdr/BufferedOutStream.cxx",
"chars": 4185,
"preview": "/* Copyright (C) 2002-2005 RealVNC Ltd. All Rights Reserved.\n * Copyright 2011-2020 Pierre Ossman for Cendio AB\n * Copy"
},
{
"path": "common/rdr/BufferedOutStream.h",
"chars": 1839,
"preview": "/* Copyright (C) 2002-2005 RealVNC Ltd. All Rights Reserved.\n * Copyright 2011-2020 Pierre Ossman for Cendio AB\n * \n * "
},
{
"path": "common/rdr/CMakeLists.txt",
"chars": 937,
"preview": "add_library(rdr STATIC\n AESInStream.cxx\n AESOutStream.cxx\n BufferedInStream.cxx\n BufferedOutStream.cxx\n FdInStream."
},
{
"path": "common/rdr/FdInStream.cxx",
"chars": 2676,
"preview": "/* Copyright (C) 2002-2005 RealVNC Ltd. All Rights Reserved.\n * \n * This is free software; you can redistribute it and/"
},
{
"path": "common/rdr/FdInStream.h",
"chars": 1285,
"preview": "/* Copyright (C) 2002-2005 RealVNC Ltd. All Rights Reserved.\n * \n * This is free software; you can redistribute it and/"
},
{
"path": "common/rdr/FdOutStream.cxx",
"chars": 3395,
"preview": "/* Copyright (C) 2002-2005 RealVNC Ltd. All Rights Reserved.\n * Copyright 2011 Pierre Ossman for Cendio AB\n * Copyright"
},
{
"path": "common/rdr/FdOutStream.h",
"chars": 1392,
"preview": "/* Copyright (C) 2002-2005 RealVNC Ltd. All Rights Reserved.\n * Copyright 2011 Pierre Ossman for Cendio AB\n * \n * This "
},
{
"path": "common/rdr/FileInStream.cxx",
"chars": 1557,
"preview": "/* Copyright (C) 2002-2005 RealVNC Ltd. All Rights Reserved.\n * Copyright (C) 2013 D. R. Commander. All Rights Reserve"
},
{
"path": "common/rdr/FileInStream.h",
"chars": 1200,
"preview": "/* Copyright (C) 2013 D. R. Commander. All Rights Reserved.\n * Copyright 2015 Pierre Ossman for Cendio AB\n *\n * This is"
},
{
"path": "common/rdr/HexInStream.cxx",
"chars": 1548,
"preview": "/* Copyright (C) 2002-2005 RealVNC Ltd. All Rights Reserved.\n * Copyright 2019-2022 Pierre Ossman for Cendio AB\n * \n * "
},
{
"path": "common/rdr/HexInStream.h",
"chars": 1139,
"preview": "/* Copyright (C) 2002-2005 RealVNC Ltd. All Rights Reserved.\n * \n * This is free software; you can redistribute it and/"
},
{
"path": "common/rdr/HexOutStream.cxx",
"chars": 1634,
"preview": "/* Copyright (C) 2002-2005 RealVNC Ltd. All Rights Reserved.\n * Copyright 2019-2022 Pierre Ossman for Cendio AB\n * \n * "
},
{
"path": "common/rdr/HexOutStream.h",
"chars": 1204,
"preview": "/* Copyright (C) 2002-2005 RealVNC Ltd. All Rights Reserved.\n * \n * This is free software; you can redistribute it and/"
},
{
"path": "common/rdr/InStream.h",
"chars": 6509,
"preview": "/* Copyright (C) 2002-2005 RealVNC Ltd. All Rights Reserved.\n * Copyright 2014-2020 Pierre Ossman for Cendio AB\n * \n * "
},
{
"path": "common/rdr/MemInStream.h",
"chars": 1977,
"preview": "/* Copyright (C) 2002-2005 RealVNC Ltd. All Rights Reserved.\n * \n * This is free software; you can redistribute it and/"
},
{
"path": "common/rdr/MemOutStream.h",
"chars": 2103,
"preview": "/* Copyright (C) 2002-2005 RealVNC Ltd. All Rights Reserved.\n * \n * This is free software; you can redistribute it and/"
},
{
"path": "common/rdr/OutStream.h",
"chars": 4868,
"preview": "/* Copyright (C) 2002-2003 RealVNC Ltd. All Rights Reserved.\n * \n * This is free software; you can redistribute it a"
},
{
"path": "common/rdr/RandomStream.cxx",
"chars": 2905,
"preview": "/* Copyright (C) 2002-2005 RealVNC Ltd. All Rights Reserved.\n * \n * This is free software; you can redistribute it and/"
},
{
"path": "common/rdr/RandomStream.h",
"chars": 1366,
"preview": "/* Copyright (C) 2002-2005 RealVNC Ltd. All Rights Reserved.\n * \n * This is free software; you can redistribute it and/"
},
{
"path": "common/rdr/TLSException.cxx",
"chars": 1662,
"preview": "/*\n * Copyright (C) 2004 Red Hat Inc.\n * Copyright (C) 2010 TigerVNC Team\n * \n * This is free software; you can redistri"
},
{
"path": "common/rdr/TLSException.h",
"chars": 1132,
"preview": "/* \n * Copyright (C) 2004 Red Hat Inc.\n * Copyright (C) 2010 TigerVNC Team\n * \n * This is free software; you can redistr"
},
{
"path": "common/rdr/TLSInStream.cxx",
"chars": 1315,
"preview": "/* Copyright (C) 2002-2005 RealVNC Ltd. All Rights Reserved.\n * Copyright (C) 2005 Martin Koegler\n * Copyright (C) 2010"
},
{
"path": "common/rdr/TLSInStream.h",
"chars": 1210,
"preview": "/* Copyright (C) 2005 Martin Koegler\n * Copyright (C) 2010 TigerVNC Team\n * Copyright 2012-2025 Pierre Ossman for Cendio"
},
{
"path": "common/rdr/TLSOutStream.cxx",
"chars": 1515,
"preview": "/* Copyright (C) 2002-2005 RealVNC Ltd. All Rights Reserved.\n * Copyright (C) 2005 Martin Koegler\n * Copyright (C) 2010"
},
{
"path": "common/rdr/TLSOutStream.h",
"chars": 1230,
"preview": "/* Copyright (C) 2005 Martin Koegler\n * Copyright (C) 2010 TigerVNC Team\n *\n * This is free software; you can redistribu"
},
{
"path": "common/rdr/TLSSocket.cxx",
"chars": 6156,
"preview": "/* Copyright (C) 2002-2005 RealVNC Ltd. All Rights Reserved.\n * Copyright (C) 2005 Martin Koegler\n * Copyright (C) 2010"
},
{
"path": "common/rdr/TLSSocket.h",
"chars": 1911,
"preview": "/* Copyright (C) 2005 Martin Koegler\n * Copyright (C) 2010 TigerVNC Team\n * Copyright 2012-2025 Pierre Ossman for Cendio"
},
{
"path": "common/rdr/ZlibInStream.cxx",
"chars": 2601,
"preview": "/* Copyright (C) 2002-2005 RealVNC Ltd. All Rights Reserved.\n * \n * This is free software; you can redistribute it and/"
},
{
"path": "common/rdr/ZlibInStream.h",
"chars": 1445,
"preview": "/* Copyright (C) 2002-2005 RealVNC Ltd. All Rights Reserved.\n * \n * This is free software; you can redistribute it and/"
},
{
"path": "common/rdr/ZlibOutStream.cxx",
"chars": 4434,
"preview": "/* Copyright (C) 2002-2005 RealVNC Ltd. All Rights Reserved.\n * Copyright (C) 2011 D. R. Commander. All Rights Reserve"
},
{
"path": "common/rdr/ZlibOutStream.h",
"chars": 1643,
"preview": "/* Copyright (C) 2002-2005 RealVNC Ltd. All Rights Reserved.\n * Copyright (C) 2011 D. R. Commander. All Rights Reserve"
},
{
"path": "common/rfb/AccessRights.cxx",
"chars": 1413,
"preview": "/* Copyright 2024 TigerVNC Team\n *\n * This is free software; you can redistribute it and/or modify\n * it under the terms"
},
{
"path": "common/rfb/AccessRights.h",
"chars": 1762,
"preview": "/* Copyright 2024 TigerVNC Team\n *\n * This is free software; you can redistribute it and/or modify\n * it under the terms"
},
{
"path": "common/rfb/Blacklist.cxx",
"chars": 3109,
"preview": "/* Copyright (C) 2002-2005 RealVNC Ltd. All Rights Reserved.\n * \n * This is free software; you can redistribute it and/"
},
{
"path": "common/rfb/Blacklist.h",
"chars": 2498,
"preview": "/* Copyright (C) 2002-2005 RealVNC Ltd. All Rights Reserved.\n * \n * This is free software; you can redistribute it and/"
},
{
"path": "common/rfb/CConnection.cxx",
"chars": 27900,
"preview": "/* Copyright (C) 2002-2005 RealVNC Ltd. All Rights Reserved.\n * Copyright 2011-2019 Pierre Ossman for Cendio AB\n * \n * "
},
{
"path": "common/rfb/CConnection.h",
"chars": 12457,
"preview": "/* Copyright (C) 2002-2005 RealVNC Ltd. All Rights Reserved.\n * Copyright 2011-2019 Pierre Ossman for Cendio AB\n * \n * "
},
{
"path": "common/rfb/CMakeLists.txt",
"chars": 2811,
"preview": "add_library(rfb STATIC\n AccessRights.cxx\n Blacklist.cxx\n Congestion.cxx\n CConnection.cxx\n CMsgReader.cxx\n CMsgWrit"
},
{
"path": "common/rfb/CMsgHandler.h",
"chars": 3334,
"preview": "/* Copyright (C) 2002-2005 RealVNC Ltd. All Rights Reserved.\n * Copyright 2009-2019 Pierre Ossman for Cendio AB\n * Copy"
},
{
"path": "common/rfb/CMsgReader.cxx",
"chars": 20054,
"preview": "/* Copyright (C) 2002-2005 RealVNC Ltd. All Rights Reserved.\n * Copyright 2009-2019 Pierre Ossman for Cendio AB\n * \n * "
},
{
"path": "common/rfb/CMsgReader.h",
"chars": 2733,
"preview": "/* Copyright (C) 2002-2005 RealVNC Ltd. All Rights Reserved.\n * Copyright 2009-2019 Pierre Ossman for Cendio AB\n * \n * "
},
{
"path": "common/rfb/CMsgWriter.cxx",
"chars": 8522,
"preview": "/* Copyright (C) 2002-2005 RealVNC Ltd. All Rights Reserved.\n * Copyright 2009-2019 Pierre Ossman for Cendio AB\n * \n * "
},
{
"path": "common/rfb/CMsgWriter.h",
"chars": 2458,
"preview": "/* Copyright (C) 2002-2005 RealVNC Ltd. All Rights Reserved.\n * Copyright 2009-2019 Pierre Ossman for Cendio AB\n * \n * "
},
{
"path": "common/rfb/CSecurity.h",
"chars": 2094,
"preview": "/* Copyright (C) 2002-2005 RealVNC Ltd. All Rights Reserved.\n * \n * This is free software; you can redistribute it and/"
},
{
"path": "common/rfb/CSecurityDH.cxx",
"chars": 4035,
"preview": "/* \n * Copyright (C) 2022 Dinglan Peng\n * \n * This is free software; you can redistribute it and/or modify\n * it unde"
},
{
"path": "common/rfb/CSecurityDH.h",
"chars": 1396,
"preview": "/* \n * Copyright (C) 2022 Dinglan Peng\n * \n * This is free software; you can redistribute it and/or modify\n * it unde"
},
{
"path": "common/rfb/CSecurityMSLogonII.cxx",
"chars": 3830,
"preview": "/* \n * Copyright (C) 2022 Dinglan Peng\n * \n * This is free software; you can redistribute it and/or modify\n * it unde"
},
{
"path": "common/rfb/CSecurityMSLogonII.h",
"chars": 1419,
"preview": "/* \n * Copyright (C) 2022 Dinglan Peng\n * \n * This is free software; you can redistribute it and/or modify\n * it unde"
},
{
"path": "common/rfb/CSecurityNone.h",
"chars": 1164,
"preview": "/* Copyright (C) 2002-2005 RealVNC Ltd. All Rights Reserved.\n * \n * This is free software; you can redistribute it and/"
},
{
"path": "common/rfb/CSecurityPlain.cxx",
"chars": 1420,
"preview": "/* Copyright (C) 2005 Martin Koegler\n * Copyright (C) 2010 TigerVNC Team\n * \n * This is free software; you can redistrib"
},
{
"path": "common/rfb/CSecurityPlain.h",
"chars": 1148,
"preview": "/* Copyright (C) 2005 Martin Koegler\n * Copyright (C) 2010 TigerVNC Team\n * \n * This is free software; you can redistrib"
},
{
"path": "common/rfb/CSecurityRSAAES.cxx",
"chars": 13751,
"preview": "/* \n * Copyright (C) 2022 Dinglan Peng\n * \n * This is free software; you can redistribute it and/or modify\n * it unde"
},
{
"path": "common/rfb/CSecurityRSAAES.h",
"chars": 2430,
"preview": "/* \n * Copyright (C) 2022 Dinglan Peng\n * \n * This is free software; you can redistribute it and/or modify\n * it unde"
},
{
"path": "common/rfb/CSecurityStack.cxx",
"chars": 1662,
"preview": "/* Copyright (C) 2005 Martin Koegler\n * Copyright (C) 2010 TigerVNC Team\n * \n * This is free software; you can redistrib"
},
{
"path": "common/rfb/CSecurityStack.h",
"chars": 1368,
"preview": "/* Copyright (C) 2005 Martin Koegler\n * Copyright (C) 2006 OCCAM Financial Technology\n * Copyright (C) 2010 TigerVNC Tea"
},
{
"path": "common/rfb/CSecurityTLS.cxx",
"chars": 21507,
"preview": "/*\n * Copyright (C) 2004 Red Hat Inc.\n * Copyright (C) 2005 Martin Koegler\n * Copyright (C) 2010 TigerVNC Team\n * Copyri"
},
{
"path": "common/rfb/CSecurityTLS.h",
"chars": 1987,
"preview": "/* \n * Copyright (C) 2004 Red Hat Inc.\n * Copyright (C) 2005 Martin Koegler\n * Copyright (C) 2010 TigerVNC Team\n * Copyr"
},
{
"path": "common/rfb/CSecurityVeNCrypt.cxx",
"chars": 5538,
"preview": "/* \n * Copyright (C) 2006 OCCAM Financial Technology\n * Copyright (C) 2005-2006 Martin Koegler\n * Copyright (C) 2010 Tig"
},
{
"path": "common/rfb/CSecurityVeNCrypt.h",
"chars": 1708,
"preview": "/*\n * Copyright (C) 2005-2006 Martin Koegler\n * Copyright (C) 2006 OCCAM Financial Technology\n * Copyright (C) 2010 Tige"
},
{
"path": "common/rfb/CSecurityVncAuth.cxx",
"chars": 1997,
"preview": "/* Copyright (C) 2002-2005 RealVNC Ltd. All Rights Reserved.\n * \n * This is free software; you can redistribute it and/"
},
{
"path": "common/rfb/CSecurityVncAuth.h",
"chars": 1181,
"preview": "/* Copyright (C) 2002-2005 RealVNC Ltd. All Rights Reserved.\n * \n * This is free software; you can redistribute it and/"
},
{
"path": "common/rfb/ClientParams.cxx",
"chars": 6452,
"preview": "/* Copyright (C) 2002-2005 RealVNC Ltd. All Rights Reserved.\n * Copyright (C) 2011 D. R. Commander. All Rights Reserve"
},
{
"path": "common/rfb/ClientParams.h",
"chars": 3760,
"preview": "/* Copyright (C) 2002-2005 RealVNC Ltd. All Rights Reserved.\n * Copyright 2014-2019 Pierre Ossman for Cendio AB\n * \n * "
},
{
"path": "common/rfb/ComparingUpdateTracker.cxx",
"chars": 8411,
"preview": "/* Copyright (C) 2002-2005 RealVNC Ltd. All Rights Reserved.\n * \n * This is free software; you can redistribute it and/"
},
{
"path": "common/rfb/ComparingUpdateTracker.h",
"chars": 1831,
"preview": "/* Copyright (C) 2002-2005 RealVNC Ltd. All Rights Reserved.\n * \n * This is free software; you can redistribute it and/"
},
{
"path": "common/rfb/Congestion.cxx",
"chars": 13622,
"preview": "/* Copyright 2009-2018 Pierre Ossman for Cendio AB\n * \n * This is free software; you can redistribute it and/or modify\n "
},
{
"path": "common/rfb/Congestion.h",
"chars": 2674,
"preview": "/* Copyright 2009-2018 Pierre Ossman for Cendio AB\n * \n * This is free software; you can redistribute it and/or modify\n "
},
{
"path": "common/rfb/CopyRectDecoder.cxx",
"chars": 2436,
"preview": "/* Copyright 2014 Pierre Ossman <ossman@cendio.se> for Cendio AB\n * \n * This is free software; you can redistribute it a"
},
{
"path": "common/rfb/CopyRectDecoder.h",
"chars": 1560,
"preview": "/* Copyright 2014 Pierre Ossman <ossman@cendio.se> for Cendio AB\n * \n * This is free software; you can redistribute it a"
},
{
"path": "common/rfb/Cursor.cxx",
"chars": 9150,
"preview": "/* Copyright (C) 2002-2005 RealVNC Ltd. All Rights Reserved.\n * Copyright 2014-2023 Pierre Ossman for Cendio AB\n * \n * "
},
{
"path": "common/rfb/Cursor.h",
"chars": 2285,
"preview": "/* Copyright (C) 2002-2005 RealVNC Ltd. All Rights Reserved.\n * Copyright 2014-2023 Pierre Ossman for Cendio AB\n * \n * "
},
{
"path": "common/rfb/DecodeManager.cxx",
"chars": 10668,
"preview": "/* Copyright 2015 Pierre Ossman for Cendio AB\n * \n * This is free software; you can redistribute it and/or modify\n * it "
},
{
"path": "common/rfb/DecodeManager.h",
"chars": 2688,
"preview": "/* Copyright 2015 Pierre Ossman for Cendio AB\n * \n * This is free software; you can redistribute it and/or modify\n * it "
},
{
"path": "common/rfb/Decoder.cxx",
"chars": 2945,
"preview": "/* Copyright (C) 2002-2005 RealVNC Ltd. All Rights Reserved.\n * Copyright 2014 Pierre Ossman for Cendio AB\n * \n * This "
},
{
"path": "common/rfb/Decoder.h",
"chars": 3814,
"preview": "/* Copyright (C) 2002-2005 RealVNC Ltd. All Rights Reserved.\n * Copyright 2014 Pierre Ossman for Cendio AB\n * \n * This "
},
{
"path": "common/rfb/EncodeManager.cxx",
"chars": 34320,
"preview": "/* Copyright (C) 2000-2003 Constantin Kaplinsky. All Rights Reserved.\n * Copyright (C) 2011 D. R. Commander. All Right"
},
{
"path": "common/rfb/EncodeManager.h",
"chars": 5409,
"preview": "/* Copyright (C) 2000-2003 Constantin Kaplinsky. All Rights Reserved.\n * Copyright (C) 2011 D. R. Commander. All Right"
},
{
"path": "common/rfb/Encoder.cxx",
"chars": 2310,
"preview": "/* Copyright (C) 2002-2005 RealVNC Ltd. All Rights Reserved.\n * Copyright 2014 Pierre Ossman for Cendio AB\n * \n * This "
},
{
"path": "common/rfb/Encoder.h",
"chars": 4024,
"preview": "/* Copyright (C) 2002-2005 RealVNC Ltd. All Rights Reserved.\n * Copyright (C) 2011 D. R. Commander. All Rights Reserve"
},
{
"path": "common/rfb/Exception.h",
"chars": 1557,
"preview": "/* Copyright (C) 2002-2005 RealVNC Ltd. All Rights Reserved.\n * Copyright 2014-2024 Pierre Ossman for Cendio AB\n * \n * "
},
{
"path": "common/rfb/H264Decoder.cxx",
"chars": 3243,
"preview": "/* Copyright (C) 2021 Vladimir Sukhonosov <xornet@xornet.org>\n * Copyright (C) 2021 Martins Mozeiko <martins.mozeiko@gma"
},
{
"path": "common/rfb/H264Decoder.h",
"chars": 1613,
"preview": "/* Copyright (C) 2021 Vladimir Sukhonosov <xornet@xornet.org>\n * Copyright (C) 2021 Martins Mozeiko <martins.mozeiko@gma"
},
{
"path": "common/rfb/H264DecoderContext.cxx",
"chars": 1378,
"preview": "/* Copyright (C) 2021 Vladimir Sukhonosov <xornet@xornet.org>\n * Copyright (C) 2021 Martins Mozeiko <martins.mozeiko@gma"
},
{
"path": "common/rfb/H264DecoderContext.h",
"chars": 1554,
"preview": "/* Copyright (C) 2021 Vladimir Sukhonosov <xornet@xornet.org>\n * Copyright (C) 2021 Martins Mozeiko <martins.mozeiko@gma"
},
{
"path": "common/rfb/H264LibavDecoderContext.cxx",
"chars": 6815,
"preview": "/* Copyright (C) 2021 Vladimir Sukhonosov <xornet@xornet.org>\n * Copyright (C) 2021 Martins Mozeiko <martins.mozeiko@gma"
},
{
"path": "common/rfb/H264LibavDecoderContext.h",
"chars": 1670,
"preview": "/* Copyright (C) 2021 Vladimir Sukhonosov <xornet@xornet.org>\n * Copyright (C) 2021 Martins Mozeiko <martins.mozeiko@gma"
},
{
"path": "common/rfb/H264WinDecoderContext.cxx",
"chars": 16464,
"preview": "/* Copyright (C) 2021 Vladimir Sukhonosov <xornet@xornet.org>\n * Copyright (C) 2021 Martins Mozeiko <martins.mozeiko@gma"
},
{
"path": "common/rfb/H264WinDecoderContext.h",
"chars": 1973,
"preview": "/* Copyright (C) 2021 Vladimir Sukhonosov <xornet@xornet.org>\n * Copyright (C) 2021 Martins Mozeiko <martins.mozeiko@gma"
},
{
"path": "common/rfb/HextileDecoder.cxx",
"chars": 5977,
"preview": "/* Copyright (C) 2002-2005 RealVNC Ltd. All Rights Reserved.\n * Copyright 2014-2022 Pierre Ossman for Cendio AB\n * \n * "
},
{
"path": "common/rfb/HextileDecoder.h",
"chars": 1718,
"preview": "/* Copyright (C) 2002-2005 RealVNC Ltd. All Rights Reserved.\n * Copyright 2014-2022 Pierre Ossman for Cendio AB\n * \n * "
},
{
"path": "common/rfb/HextileEncoder.cxx",
"chars": 14880,
"preview": "/* Copyright (C) 2002-2005 RealVNC Ltd. All Rights Reserved.\n * Copyright (C) 2005 Constantin Kaplinsky. All Rights Re"
},
{
"path": "common/rfb/HextileEncoder.h",
"chars": 1829,
"preview": "/* Copyright (C) 2002-2005 RealVNC Ltd. All Rights Reserved.\n * Copyright 2014-2022 Pierre Ossman for Cendio AB\n * \n * "
},
{
"path": "common/rfb/JPEGDecoder.cxx",
"chars": 5593,
"preview": "/* Copyright (C) 2000-2003 Constantin Kaplinsky. All Rights Reserved.\n * Copyright 2004-2005 Cendio AB.\n * Copyright 20"
},
{
"path": "common/rfb/JPEGDecoder.h",
"chars": 1872,
"preview": "/* Copyright (C) 2000-2003 Constantin Kaplinsky. All Rights Reserved.\n * Copyright (C) 2011 D. R. Commander. All Right"
},
{
"path": "common/rfb/JPEGEncoder.cxx",
"chars": 5220,
"preview": "/* Copyright (C) 2000-2003 Constantin Kaplinsky. All Rights Reserved.\n * Copyright (C) 2011 D. R. Commander. All Right"
},
{
"path": "common/rfb/JPEGEncoder.h",
"chars": 1697,
"preview": "/* Copyright (C) 2000-2003 Constantin Kaplinsky. All Rights Reserved.\n * Copyright (C) 2011 D. R. Commander\n * Copyrigh"
},
{
"path": "common/rfb/JpegCompressor.cxx",
"chars": 9109,
"preview": "/* Copyright (C) 2002-2005 RealVNC Ltd. All Rights Reserved.\n * Copyright (C) 2011 D. R. Commander. All Rights Reserve"
},
{
"path": "common/rfb/JpegCompressor.h",
"chars": 1845,
"preview": "/* Copyright (C) 2002-2005 RealVNC Ltd. All Rights Reserved.\n * Copyright (C) 2011 D. R. Commander. All Rights Reserve"
},
{
"path": "common/rfb/JpegDecompressor.cxx",
"chars": 6370,
"preview": "/* Copyright (C) 2000-2003 Constantin Kaplinsky. All Rights Reserved.\n * Copyright (C) 2004-2005 Cendio AB. All rights "
},
{
"path": "common/rfb/JpegDecompressor.h",
"chars": 1630,
"preview": "/* Copyright (C) 2000-2003 Constantin Kaplinsky. All Rights Reserved.\n * Copyright (C) 2004-2005 Cendio AB. All rights "
},
{
"path": "common/rfb/KeyRemapper.cxx",
"chars": 2571,
"preview": "/* Copyright (C) 2002-2005 RealVNC Ltd. All Rights Reserved.\n * \n * This is free software; you can redistribute it and/"
},
{
"path": "common/rfb/KeyRemapper.h",
"chars": 1203,
"preview": "/* Copyright (C) 2002-2005 RealVNC Ltd. All Rights Reserved.\n * \n * This is free software; you can redistribute it and/"
},
{
"path": "common/rfb/KeysymStr.c",
"chars": 2931,
"preview": "\n/*\n\nCopyright 1990, 1998 The Open Group\n\nPermission to use, copy, modify, distribute, and sell this software and its\nd"
},
{
"path": "common/rfb/KeysymStr.h",
"chars": 944,
"preview": "/* Copyright 2021 Pierre Ossman for Cendio AB\n * \n * This is free software; you can redistribute it and/or modify\n * it "
},
{
"path": "common/rfb/Palette.h",
"chars": 4579,
"preview": "/* Copyright (C) 2000-2005 Constantin Kaplinsky. All Rights Reserved.\n * Copyright (C) 2011 D. R. Commander. All Right"
},
{
"path": "common/rfb/PixelBuffer.cxx",
"chars": 12239,
"preview": "/* Copyright (C) 2002-2005 RealVNC Ltd. All Rights Reserved.\n * Copyright 2014 Pierre Ossman for Cendio AB\n * \n * This "
},
{
"path": "common/rfb/PixelBuffer.h",
"chars": 6536,
"preview": "/* Copyright (C) 2002-2005 RealVNC Ltd. All Rights Reserved.\n * Copyright 2014 Pierre Ossman for Cendio AB\n * \n * This "
},
{
"path": "common/rfb/PixelFormat.cxx",
"chars": 20755,
"preview": "/* Copyright (C) 2002-2005 RealVNC Ltd. All Rights Reserved.\n * Copyright (C) 2011 D. R. Commander. All Rights Reserve"
},
{
"path": "common/rfb/PixelFormat.h",
"chars": 5181,
"preview": "/* Copyright (C) 2002-2005 RealVNC Ltd. All Rights Reserved.\n * Copyright (C) 2011 D. R. Commander. All Rights Reserve"
},
{
"path": "common/rfb/PixelFormat.inl",
"chars": 3325,
"preview": "/* Copyright 2009-2014 Pierre Ossman for Cendio AB\n * \n * This is free software; you can redistribute it and/or modify\n "
},
{
"path": "common/rfb/RREDecoder.cxx",
"chars": 3028,
"preview": "/* Copyright (C) 2002-2005 RealVNC Ltd. All Rights Reserved.\n * Copyright 2014-2022 Pierre Ossman for Cendio AB\n * \n * "
},
{
"path": "common/rfb/RREDecoder.h",
"chars": 1629,
"preview": "/* Copyright (C) 2002-2005 RealVNC Ltd. All Rights Reserved.\n * Copyright 2014-2022 Pierre Ossman for Cendio AB\n * \n * "
},
{
"path": "common/rfb/RREEncoder.cxx",
"chars": 4764,
"preview": "/* Copyright (C) 2002-2005 RealVNC Ltd. All Rights Reserved.\n * Copyright 2014-2022 Pierre Ossman for Cendio AB\n * \n * "
},
{
"path": "common/rfb/RREEncoder.h",
"chars": 1628,
"preview": "/* Copyright (C) 2002-2005 RealVNC Ltd. All Rights Reserved.\n * Copyright 2014-2022 Pierre Ossman for Cendio AB\n * \n * "
},
{
"path": "common/rfb/RawDecoder.cxx",
"chars": 1663,
"preview": "/* Copyright (C) 2002-2005 RealVNC Ltd. All Rights Reserved.\n * \n * This is free software; you can redistribute it and/"
},
{
"path": "common/rfb/RawDecoder.h",
"chars": 1328,
"preview": "/* Copyright (C) 2002-2005 RealVNC Ltd. All Rights Reserved.\n * \n * This is free software; you can redistribute it and/"
},
{
"path": "common/rfb/RawEncoder.cxx",
"chars": 2092,
"preview": "/* Copyright (C) 2002-2005 RealVNC Ltd. All Rights Reserved.\n * Copyright 2014 Pierre Ossman for Cendio AB\n * \n * This "
},
{
"path": "common/rfb/RawEncoder.h",
"chars": 1311,
"preview": "/* Copyright (C) 2002-2005 RealVNC Ltd. All Rights Reserved.\n * Copyright 2014 Pierre Ossman for Cendio AB\n * \n * This "
},
{
"path": "common/rfb/SConnection.cxx",
"chars": 19857,
"preview": "/* Copyright (C) 2002-2005 RealVNC Ltd. All Rights Reserved.\n * Copyright 2011-2019 Pierre Ossman for Cendio AB\n * \n * "
}
]
// ... and 697 more files (download for full content)
About this extraction
This page contains the full source code of the TigerVNC/tigervnc GitHub repository, extracted and formatted as plain text for AI agents and large language models (LLMs). The extraction includes 897 files (5.7 MB), approximately 1.5M tokens, and a symbol index with 4077 extracted functions, classes, methods, constants, and types. Use this with OpenClaw, Claude, ChatGPT, Cursor, Windsurf, or any other AI tool that accepts text input. You can copy the full output to your clipboard or download it as a .txt file.
Extracted by GitExtract — free GitHub repo to text converter for AI. Built by Nikandr Surkov.