summaryrefslogtreecommitdiffstats
path: root/sesman/scp_v0.c
diff options
context:
space:
mode:
authorLawrenceK <github@lklyne.co.uk>2012-12-04 10:27:21 +0000
committerLawrenceK <github@lklyne.co.uk>2012-12-04 10:27:21 +0000
commitb86a80aca61a9d3bea4f05e77f4d338f8a4eb156 (patch)
tree5b4d3041e6f027b7cc216d840529276470e37c03 /sesman/scp_v0.c
parent9530caa4ffec46bdc7d24c873272d2ba4e85e32b (diff)
parent60322a3a42217954aa066728fcbbea8db90539af (diff)
downloadxrdp-proprietary-b86a80aca61a9d3bea4f05e77f4d338f8a4eb156.tar.gz
xrdp-proprietary-b86a80aca61a9d3bea4f05e77f4d338f8a4eb156.zip
Merge branch 'master' of git://github.com/FreeRDP/xrdp
Diffstat (limited to 'sesman/scp_v0.c')
-rw-r--r--sesman/scp_v0.c230
1 files changed, 118 insertions, 112 deletions
diff --git a/sesman/scp_v0.c b/sesman/scp_v0.c
index dac04ad3..da6ab919 100644
--- a/sesman/scp_v0.c
+++ b/sesman/scp_v0.c
@@ -1,21 +1,20 @@
-/*
- 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., 675 Mass Ave, Cambridge, MA 02139, USA.
-
- xrdp: A Remote Desktop Protocol server.
- Copyright (C) Jay Sorg 2005-2008
-*/
+/**
+ * xrdp: A Remote Desktop Protocol server.
+ *
+ * Copyright (C) Jay Sorg 2004-2012
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
/**
*
@@ -27,121 +26,128 @@
#include "sesman.h"
-extern struct config_sesman* g_cfg; /* in sesman.c */
+extern struct config_sesman *g_cfg; /* in sesman.c */
/******************************************************************************/
void DEFAULT_CC
-scp_v0_process(struct SCP_CONNECTION* c, struct SCP_SESSION* s)
+scp_v0_process(struct SCP_CONNECTION *c, struct SCP_SESSION *s)
{
- int display = 0;
- tbus data;
- struct session_item* s_item;
+ int display = 0;
+ tbus data;
+ struct session_item *s_item;
- data = auth_userpass(s->username, s->password);
- if (s->type == SCP_GW_AUTHENTICATION)
- {
- /* this is just authentication in a gateway situation */
- /* g_writeln("SCP_GW_AUTHENTICATION message received"); */
- if (data)
- {
- if (1 == access_login_allowed(s->username))
- {
- /* the user is member of the correct groups. */
- scp_v0s_replyauthentication(c, 0);
- log_message(LOG_LEVEL_INFO, "Access permitted for user: %s",
- s->username);
- /* g_writeln("Connection allowed"); */
- }
- else
- {
- scp_v0s_replyauthentication(c,3);
- log_message(LOG_LEVEL_INFO, "Username okey but group problem for "
- "user: %s", s->username);
- /* g_writeln("user password ok, but group problem"); */
- }
- }
- else
- {
- /* g_writeln("username or password error"); */
- log_message(LOG_LEVEL_INFO, "Username or password error for user: %s",
- s->username);
- scp_v0s_replyauthentication(c, 2);
- }
- auth_end(data);
- }
- else if (data)
- {
- s_item = session_get_bydata(s->username, s->width, s->height,
- s->bpp, s->type);
- if (s_item != 0)
+ data = auth_userpass(s->username, s->password);
+
+ if (s->type == SCP_GW_AUTHENTICATION)
{
- display = s_item->display;
- if (0 != s->client_ip)
- {
- log_message( LOG_LEVEL_INFO, "++ reconnected session: username %s, "
- "display :%d.0, session_pid %d, ip %s",
- s->username, display, s_item->pid, s->client_ip);
- }
- else
- {
- log_message(LOG_LEVEL_INFO, "++ reconnected session: username %s, "
- "display :%d.0, session_pid %d", s->username, display,
- s_item->pid);
- }
- session_reconnect(display, s->username);
- auth_end(data);
- /* don't set data to null here */
+ /* this is just authentication in a gateway situation */
+ /* g_writeln("SCP_GW_AUTHENTICATION message received"); */
+ if (data)
+ {
+ if (1 == access_login_allowed(s->username))
+ {
+ /* the user is member of the correct groups. */
+ scp_v0s_replyauthentication(c, 0);
+ log_message(LOG_LEVEL_INFO, "Access permitted for user: %s",
+ s->username);
+ /* g_writeln("Connection allowed"); */
+ }
+ else
+ {
+ scp_v0s_replyauthentication(c, 3);
+ log_message(LOG_LEVEL_INFO, "Username okey but group problem for "
+ "user: %s", s->username);
+ /* g_writeln("user password ok, but group problem"); */
+ }
+ }
+ else
+ {
+ /* g_writeln("username or password error"); */
+ log_message(LOG_LEVEL_INFO, "Username or password error for user: %s",
+ s->username);
+ scp_v0s_replyauthentication(c, 2);
+ }
+
+ auth_end(data);
}
- else
+ else if (data)
{
- LOG_DBG("pre auth");
- if (1 == access_login_allowed(s->username))
- {
- if (0 != s->client_ip)
+ s_item = session_get_bydata(s->username, s->width, s->height,
+ s->bpp, s->type);
+
+ if (s_item != 0)
{
- log_message(LOG_LEVEL_INFO, "++ created session (access granted): "
- "username %s, ip %s", s->username, s->client_ip);
+ display = s_item->display;
+
+ if (0 != s->client_ip)
+ {
+ log_message( LOG_LEVEL_INFO, "++ reconnected session: username %s, "
+ "display :%d.0, session_pid %d, ip %s",
+ s->username, display, s_item->pid, s->client_ip);
+ }
+ else
+ {
+ log_message(LOG_LEVEL_INFO, "++ reconnected session: username %s, "
+ "display :%d.0, session_pid %d", s->username, display,
+ s_item->pid);
+ }
+
+ session_reconnect(display, s->username);
+ auth_end(data);
+ /* don't set data to null here */
}
else
{
- log_message(LOG_LEVEL_INFO, "++ created session (access granted): "
- "username %s", s->username);
+ LOG_DBG("pre auth");
+
+ if (1 == access_login_allowed(s->username))
+ {
+ if (0 != s->client_ip)
+ {
+ log_message(LOG_LEVEL_INFO, "++ created session (access granted): "
+ "username %s, ip %s", s->username, s->client_ip);
+ }
+ else
+ {
+ log_message(LOG_LEVEL_INFO, "++ created session (access granted): "
+ "username %s", s->username);
+ }
+
+ if (SCP_SESSION_TYPE_XVNC == s->type)
+ {
+ log_message( LOG_LEVEL_INFO, "starting Xvnc session...");
+ display = session_start(s->width, s->height, s->bpp, s->username,
+ s->password, data, SESMAN_SESSION_TYPE_XVNC,
+ s->domain, s->program, s->directory,
+ s->client_ip);
+ }
+ else
+ {
+ log_message(LOG_LEVEL_INFO, "starting X11rdp session...");
+ display = session_start(s->width, s->height, s->bpp, s->username,
+ s->password, data, SESMAN_SESSION_TYPE_XRDP,
+ s->domain, s->program, s->directory,
+ s->client_ip);
+ }
+ }
+ else
+ {
+ display = 0;
+ }
}
- if (SCP_SESSION_TYPE_XVNC == s->type)
+ if (display == 0)
{
- log_message( LOG_LEVEL_INFO, "starting Xvnc session...");
- display = session_start(s->width, s->height, s->bpp, s->username,
- s->password, data, SESMAN_SESSION_TYPE_XVNC,
- s->domain, s->program, s->directory,
- s->client_ip);
+ auth_end(data);
+ scp_v0s_deny_connection(c);
}
else
{
- log_message(LOG_LEVEL_INFO, "starting X11rdp session...");
- display = session_start(s->width, s->height, s->bpp, s->username,
- s->password, data, SESMAN_SESSION_TYPE_XRDP,
- s->domain, s->program, s->directory,
- s->client_ip);
+ scp_v0s_allow_connection(c, display);
}
- }
- else
- {
- display = 0;
- }
- }
- if (display == 0)
- {
- auth_end(data);
- scp_v0s_deny_connection(c);
}
else
{
- scp_v0s_allow_connection(c, display);
+ scp_v0s_deny_connection(c);
}
- }
- else
- {
- scp_v0s_deny_connection(c);
- }
}