Commit Graph

879 Commits

Author SHA1 Message Date
Jay Sorg cf67dd56bf chansrv: no logic change, fix typo 2019-07-10 11:18:07 -07:00
Jay Sorg 417bb71abf chansrv: env var to disable rdpsnd record 2019-07-08 22:45:58 -07:00
Jay Sorg 933394c6be chansrv: remove excessive logging 2019-07-08 22:40:31 -07:00
Jay Sorg 8aedd31762 chansrv: use rdpsnd record if supported, else try AUDIO_INPUT(MS-RDPEAI) 2019-07-08 22:03:27 -07:00
Jay Sorg c5798df0bd chansrv: hook up audin 2019-07-08 18:25:59 -07:00
Jay Sorg ae40ff27c8 chansrv: audin close should chose channel 2019-07-07 22:05:46 -07:00
Jay Sorg a9a823b0da chansrv: audio in partial working 2019-07-04 23:52:18 -07:00
Jay Sorg 3c9241022a chansrv: add audin.c/h 2019-07-03 21:31:52 -07:00
Jay Sorg e14ea4ff2e chansrv: drop g_sent_flag, not very useful and some clients skip acks 2019-06-23 20:52:55 -07:00
Jay Sorg 4ad9e48ff5 chansrv: don't let audio fall behind 2019-06-22 23:01:13 -07:00
Koichiro IWAO ae2cbbb2e0
Fix build after #1327
Fixes #1335.

In file included from ./irp.h:27:
./chansrv_fuse.h:39:5: error: unknown type name 'time_t'
    time_t          atime;             /* Time of last access.              */
    ^
./chansrv_fuse.h:40:5: error: unknown type name 'time_t'
    time_t          mtime;             /* Time of last modification.        */
    ^
./chansrv_fuse.h:41:5: error: unknown type name 'time_t'
    time_t          ctime;             /* Time of last status change.       */
    ^
3 errors generated.
*** Error code 1
2019-04-18 14:25:46 +09:00
matt335672 fe97b983f5 Remove unnecessary reference from sesman/config.c
Following commit 81703c426f, there are
no longer any references to g_cfg from within this file, and so the
external reference can be removed.
2019-04-11 11:28:33 +01:00
metalefty 006721fea8
Merge pull request #1327 from matt335672/implement-separate-lookup
XFuse file overwrite and lookup improvements
2019-04-11 15:56:24 +09:00
matt335672 6a6442e32f Fix sing symbol link error when --disable-fuse is set 2019-04-02 13:08:47 +01:00
matt335672 d154df5059 Add remote drive lookup functionality to fuse
- Replace xfuse_cb_enum_dir() directory callback for adding files with
  more general xfuse_devredir_add_file_or_dir() to be called from a
  directory or a lookup operation.
- Moved XRDP_INODE out of public interface for chansrv_fuse, and replaced
  with simpler struct file_attr to pass to
  xfuse_devredir_add_file_or_dir()
- Allow a struct file_attr to be placed in an IRP for assembly of file
  attributes over multiple IRP_MJ_QUERY_INFORMATION requats.
- Add dev_redir_lookup_entry() to public interface for devredir.c
- Add xfuse_devredir_cb_lookup_entry() callback to public interface for
  chansrv-fuse.c
2019-04-01 14:15:12 +01:00
matt335672 ef9013b4d9 Implement O_WRONLY option for open file
Allows files to be overwritten on Linux without EIO
Logging improved on failed write
2019-04-01 14:14:46 +01:00
matt335672 c43c9cd551 Code tidyups
- Remove unused 'is_synced' member from struct xrdp_inode
- Move prototype for xfuse_devredir_cb_write_file() to correct file
- Add const correctness to dev_redir_strings_ends_with() function
- Add const correctness to fuse_reverse_pathname() function
- Moved devredir_proc_cid_* functions out of devredir.h and made static
- Added XFUSE_DUMP_ADDED_ENTRIES maro for debugging
- Removed duplicate code path in xfuse_remove_dir_or_file()
- Removed duplicate code path in xfuse_cb_rename()
- Removed duplicate code path in xfuse_create_dir_or_file()
- Removed duplicate code path in xfuse_cb_open()
- Removed duplicate code path in xfuse_proc_opendir_req()
2019-04-01 14:14:22 +01:00
matt335672 c31b3b0dc2 chansrv_fuse.c tidyups
- Remove unused USE_SYNC_FLAG macro
- Remove unused members invoke_fuse, off, dirbuf1 from XFUSE_INFO
- Clear f_fifo_opendir entries on deinit
- Added some comments and fixed some others
2019-04-01 14:13:57 +01:00
Koichiro IWAO 81703c426f
sesman: Fix default_wm and reconnect_sh refer wrong path after SIGHUP
Changes in #1147 had a bug. Fixes #1315.

Reported by:    Daniel Hoffend
2019-03-28 11:42:32 +09:00
metalefty ec05d4208d
Merge pull request #1298 from jaroslaw-osmanski/restrict-outbound-clipboard
Restrict outbound clipboard
2019-03-20 10:37:40 +09:00
Jaroslaw Osmanski 56fe961349 Fixed style and format issues. 2019-03-08 08:42:18 +01:00
Jaroslaw Osmanski 7d7e8184ae Use CHANSRV_RESTRICT_OUTBOUND_CLIPBOARD env between sesman -> chansrv 2019-03-02 16:53:15 +01:00
Jaroslaw Osmanski 1b6bfa682c Log when outbound copy was rejected because RestrictOutboundClipboard was set 2019-03-01 14:49:57 +01:00
matt335672 d49f405130 Add implementation of xfuse_deinit_xrdp_fs() 2019-02-26 13:22:30 +00:00
Jaroslaw Osmanski 46c33ddaf4 Read sesman config in clipboard 2019-02-26 11:36:32 +01:00
Krzysztof Adamski 751cd97018 reapply outboud-resitrcted clipboard 2019-02-26 07:40:17 +01:00
Jaroslaw Osmanski 0d8a49ab13 astyle formatting for sesman config.h and chansrv clipboard 2019-02-26 07:40:10 +01:00
4680414@qq.com e655fe6a1b libscp v1 server set height twice,and not set width. so fix it. 2019-02-15 09:18:37 +08:00
Koichiro IWAO 88f0d3114d
Fix build with FDK AAC v2
Original fix provided by takefu. See also:
https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=233556
2018-11-28 01:31:14 +09:00
Koichiro IWAO a4b0aa9355
Remove x11rdp from config
as it is already deprecated. x11rdp is complicated to build and very few
people using it actually. However, some people still select "X11rdp"
session and get stuck despite not installing x11rdp.

https://github.com/neutrinolabs/xrdp/issues/962#issuecomment-430545526

People who really want to use x11rdp should revert this commit.
2018-10-18 11:19:38 +09:00
metalefty c2ade7a1f7
Merge pull request #1225 from savisko/devel
Fix crash of xrdp-chansrv process, issue #1202.
2018-10-18 10:49:09 +09:00
metalefty a83400060b
Merge pull request #1227 from metalefty/idle-disc
Ressurect IdleTimeLimit
2018-10-18 10:40:12 +09:00
Koichiro IWAO 5ea403430a
Sort & reword description of IdleTimeLimit 2018-10-16 16:53:33 +09:00
jsorg71 ae1514c167
dynamic virtual channel improvements
remove not used chansrv <-> xrdp messages
move static channel disable control into libxrdp
remove some blocking read, write chansrv calls
add drdynvc calls to libxrdp
add drdynvc calls to chansrv
channel cleanup
2018-10-11 22:09:20 -07:00
Michael Savisko 47d8e03d3a Fixed compilation warning in previous commit. 2018-10-11 13:51:59 +03:00
Michael Savisko ba93badf73 Fix crash of xrdp-chansrv process, issue #1202.
In xfuse_create_file_in_xrdp_fs insure that xfuse_fs is properly initialized.
2018-10-11 13:11:24 +03:00
Koichiro IWAO f84f3de478
docs: ressurect IdleTimeLimit
This reverts commit 513f767996.
2018-10-10 17:47:12 +09:00
Koichiro IWAO 2a85a65d08
show more helpful message if xrdp-dis failed 2018-09-11 11:58:44 +09:00
Koichiro IWAO d6992cf62d
sesman: add XRDP_ prefix to xrdp related environment variable
and remove CHANSRV, use the shorter name
2018-09-04 16:01:40 +09:00
Koichiro IWAO 59f3a79fe4
sesman: pass pulse socket name via environment variable 2018-09-04 16:01:40 +09:00
Idan Freiberg 5d2c5b1410 chansrv: remove pulseaudio modules from xrdp source tree
its actually an independent code which is not part of xrdp
moved to its own repoistory: https://github.com/neutrinolabs/pulseaudio-modules

Signed-off-by: Idan Freiberg <speidy@gmail.com>
2018-08-03 06:12:53 +03:00
Koichiro IWAO ff85cb4530
Merge branch 'wfix-pulsechansrv-makefile' into devel 2018-08-03 10:05:46 +09:00
Brandon Wooldridge 8427c3601b Corrected spacing between arguments to `cc` for Pulseaudio chanserv Makefile 2018-08-02 15:24:46 -07:00
matt335672 c467ba6b04 Add handler for fatal X server conditions
Unless X server failures are caught, these can cause a premature
exit of chansrv, giving it no chance to clean up. This is currently a
particular problem for fuser mounts.
2018-07-19 08:16:29 +01:00
Koichiro IWAO eda1842825
sesman: add comments, no logic change 2018-06-19 12:57:30 +09:00
Koichiro IWAO 6e16b38ecc
sesman: fix potential buffer over flow 2018-06-16 16:44:37 +09:00
Koichiro IWAO 9192e95c96
sesman: fix logging after default_wm change 2018-06-16 16:44:37 +09:00
Koichiro IWAO 6fb18cd5fa
docs: document configurable reconnect script path 2018-06-16 16:44:37 +09:00
Koichiro IWAO a39b413746
sesman: make the path of reconnect script configurable 2018-06-16 16:44:37 +09:00
Koichiro IWAO e82f212f34
sesman: accept full path for DefaultWindowManager
Solves: #1143

Also, this idea is inspired by Fedora's patch [1]. Some distro wants to
put all scripts in libexec directory due to SELinux. This enables
distros to put such scripts anywhere.

[1] https://src.fedoraproject.org/cgit/rpms/xrdp.git/tree/xrdp-0.9.6-scripts-libexec.patch?id=02f845c1b8cea781313cf3e9efcd6d7d50341824
2018-06-16 16:44:37 +09:00
Idan Freiberg 036c292120
Merge pull request #1146 from metalefty/sesman-leak
sesman: fix leak in struct config_sesman
2018-06-14 12:43:02 +03:00
metalefty f83d967f46
Merge pull request #1120 from matt335672/set-env-on-reconnect
Copy the PAM session environment for the reconnect script
2018-06-14 11:04:43 +09:00
Koichiro IWAO 037d4eeece
sesman: fix leak in struct config_sesman 2018-06-13 17:20:03 +09:00
Koichiro IWAO 2262f1361f
sesman: close stdout/stderr earlier
not to spit on the console
2018-06-05 00:19:36 +09:00
Koichiro IWAO 6ae3052a0f
sesman: don't spit on the console when starting
As the Debian patch[1] expresses, spitting messages on the console when
a process starts in background is a bad idea. Everything should be
written to log file and daemon should start silently. This is a first
step to shut up daemons.

Got some idea from Debian Remote Maintainers and Thorsten Glaser,
thanks!

[1] 2751ad4d62/debian/patches/shutup-daemon.diff
2018-06-05 00:19:36 +09:00
Koichiro IWAO 19fa26a27e
sesman: don't print config in reader function
reader function should just read. Add config_dump function to print read
config.
2018-06-05 00:19:35 +09:00
Koichiro IWAO de33a7832e
sesman: s/XOrg/Xorg/g, no logic change
X.Org is usually spelled X.Org or Xorg.
2018-06-05 00:19:35 +09:00
Koichiro IWAO e4857b13fa
sesman: config_read_logging function no longer exists 2018-06-05 00:19:33 +09:00
matt335672 cde5b09129 Copy the PAM session environment for the reconnect script
This provides access to variables set at login which may be
required by the script (e.g. KRB5CCNAME)
2018-05-31 10:54:38 +01:00
metalefty 39b664fc27
Merge pull request #1108 from aiden0z/devel
sesrun support start other session based on session_code argument
2018-04-22 13:45:18 +09:00
Aiden Luo 7864f9d692 sesrun support start other session based on session_code argument 2018-04-20 18:11:27 +08:00
Koichiro IWAO 819c506d26
sesman: Update Xorg help comment for Arch Linux
As reported in #1106, Arch Linux looks to me like using Xorg wrapper now.
2018-04-19 01:21:54 +09:00
Koichiro IWAO a63c411772
sesman: rename vnc password file, just a cosmetic change 2018-03-23 19:16:10 +09:00
Jay Sorg e40f0dc7e2 sesman: add hostname to vnc password file 2018-03-23 15:48:25 +09:00
Koichiro IWAO 780ba744f6
Revert "devredir: fix xinode leak"
This reverts commit 5daa09171e.

Causes "double free". Fix #990 was not correct.

```
[1271363627]: DEV_REDIR  dev_redir_proc_device_iocompletion: 738 : entered: IoStatus=0x0 CompletionId=1
[1271363627]: DEV_REDIR  dev_redir_proc_device_iocompletion: 839 : got CID_DIRECTORY_CONTROL
[1271363627]: DEV_REDIR  dev_redir_proc_query_dir_response: 933 : processing FILE_DIRECTORY_INFORMATION structs
[1271363627]: DEV_REDIR  dev_redir_proc_query_dir_response: 968 : FileName:          .
[1271363627]: DEV_REDIR  devredir_fuse_data_peek: 1335 : returning 0x7f2a9c013410
*** Error in `/usr/sbin/xrdp-chansrv': double free or corruption (out): 0x00007f2a9c13a330 ***
```

Closes: #1025
2018-03-23 11:40:52 +09:00
Koichiro IWAO 97c21bc972 sesman: default startwm.sh should use bash
as it sources bash_profile. And add comments.
Closes #1009.
2018-03-09 14:24:17 +09:00
Vraiment fd37805ac0 Make sesman.ini dynamic for the location of the configuration file 2018-02-19 11:41:55 +09:00
Koichiro IWAO c50015122c
FreeBSD: rework setsid code
Pull request #650 is not valid to avoid run session twice.
It certainly stops running session twice but causes #1016.

In FreeBSD, sesman process will run like this. The intermediate
sesman is needed to detect session termination correctly.

xrdp-sesman (daemon)
    |
    +- xrdp-sesman (FreeBSD specific intermediate sesman)
        |
        +- xrdp-sesman (bsd sesion leader & each session)
             |
             +- Xorg
             +- startwm.sh
             +- xrdp-chansrv

To stop runninng session twice correctly, just exit before the
intermediate sesman executes Xorg, WM and chansrv.
2018-02-06 16:03:10 +09:00
Koichiro IWAO e16029cbc2
fix leak of SCP_DISCONNECTED_SESSION
Pointed out by: #919
2018-01-23 11:16:26 +09:00
Koichiro IWAO 5daa09171e
devredir: fix xinode leak
Pointed out by: #919
2018-01-12 09:24:03 +09:00
Koichiro IWAO 08f847d74b
sesman: refactor, change variable names
session_variables1 -> env_names
session_variables2 -> env_values

Use the name used in callee function env_set_user(). The former names
are not clear.
2018-01-11 10:57:47 +09:00
Koichiro IWAO dcf64e43ca
remove trailing space 2018-01-11 10:57:43 +09:00
Koichiro IWAO f2db57afb0
fix indent 2018-01-09 14:09:13 +09:00
matt335672 3f2a017c97 Make listen check before daemon fork 2017-12-27 15:00:18 +00:00
Dominik George 53eccc93a2 Simplify pulseaudio module build instructions 2017-12-26 19:06:36 +09:00
Koichiro IWAO 93481365d1 pulse: replace old pulse notes with bran-new README 2017-12-26 09:26:51 +09:00
Dominik George 3244cb59d5 Fix memory corruption introduced by CVE-2017-16927 fix. 2017-12-21 14:07:51 +09:00
Koichiro IWAO d8bb32541a sesman: bring Xorg at the top in sesman.ini
as Xorg prefered recommended backend now. Add more comments.
2017-12-16 00:27:06 +09:00
Koichiro IWAO 64a0deb9cf sesman: comment on non-suid Xorg in sesman.ini
Pointed out by: #923
2017-12-16 00:27:06 +09:00
speidy d958d1f018 sesman: scpv0, accept variable length data fields 2017-11-28 09:04:25 +09:00
Koichiro IWAO 929a7c359d chansrv: add LOG_LEVEL_TRACE here, too 2017-11-12 22:27:46 +09:00
Koichiro IWAO 3d29b6ec76 sound: g_bbuf_size should be determined after codec is determined
Fixes #910, if both client and server support more than one codecs,
g_bbuf_size might be set to wrong value.
2017-11-08 08:57:52 +09:00
Koichiro IWAO 26394870e5 sesman: delete socket files when session exits 2017-09-13 09:04:58 +09:00
Jay Sorg d9b929c185 chansrv: sound, fdk-aac, avoid 1 item array items 2017-08-04 17:24:57 -07:00
Jay Sorg 152318ad7c use pkg-config to configure with fdk-aac 2017-08-04 17:24:57 -07:00
Jay Sorg 4f91a52109 chansrv: sound, remove a do not know and a comment 2017-08-04 17:24:57 -07:00
Jay Sorg 021a78f4c6 chansrv: sound, use WAVE_FORMAT_AAC not WAVE_FORMAT_AAC_MS 2017-08-04 17:24:57 -07:00
Jay Sorg bf0d56c314 chansrv: sound, add aac 2017-08-04 17:24:57 -07:00
Jay Sorg 8ac35d7ed1 chansrv: sound, handle skips in audio acks 2017-08-04 17:24:57 -07:00
matt335672 4023aa7f1c xfuse_create_share() called before xfuse_init()
* Initialise inode table in `xfuse_create_share()` if necessary
* Add guard to `xfuse_init_xrdp_fs()` to prevent double initialisation of the inode table
2017-08-03 11:50:31 +09:00
Koichiro IWAO 05ef6d104e sesman: search pam files also in ${sysconfdir}/pam.d
as some operating system such as FreeBSD searches not only `/etc/pam.d`
but also `/usr/local/etc/pam.d` [1].

[1] https://www.freebsd.org/cgi/man.cgi?query=pam.d&sektion=5
2017-07-26 11:34:01 +09:00
Koichiro IWAO e990dd4263 chansrv: remove trailing space 2017-07-25 11:40:04 +09:00
Koichiro IWAO ca24572fd5 chansrv: use switch-case to support more codecs 2017-07-25 11:40:04 +09:00
Koichiro IWAO dbaf23e93b chansrv: constify wFormatTag 2017-07-25 11:40:04 +09:00
Ian Geiser 4b87548b71 Use g_create_path instead of g_create_dir
Rename g_mk_temp_dir to g_mk_socket_path
2017-07-14 20:52:38 +09:00
Koichiro IWAO 858e6149f0 fix typo 2017-07-13 13:41:26 +09:00
Koichiro IWAO 6f8eacd72b sesman: make sure socket directory present
before try to create a domain socket.
Originally proposed by Ian Geiser (geiseri).
2017-07-13 13:41:26 +09:00
Jay Sorg b6bd8acef1 sesman: move auth_start_session, auth_stop_session, and auth_end to child process 2017-07-12 17:58:36 +09:00
Ben Cohen c7d08bd9e7 xrdp-sesadmin: fix error when there are no sessions
Test case:  On a system running xrdp with no sessions running run:

  xrdp-sesadmin -u=<user> -p=<password> -c=list

Expected result: "No sessions." (ignoring debug output)
Observed result: "Error getting session list."

In the SCP_SERVER_STATE_MNG_LISTREQ case in scp_v1_mng_process() if
there are no sessions it ends the scp session, which causes an error in
the client.  In commit 0017081d the client was changed to report errors,
giving the result above.

Fix by calling scp_v1s_mng_list_sessions() from scp_v1_mng_process()
even when there are no sessions, and if so sending a packet with a count
of zero so that the client gets what it expects.
2017-07-06 13:40:25 +09:00
Koichiro IWAO 9065964bd9 chansrv: include display number in chansrv log filename
since xrdp-chansrv may be run multiple instances per user. For example,
Xvnc backend creates one session per screen geometry.
2017-07-06 12:36:47 +09:00