1*4882a593SmuzhiyunFrom b0d75fcb9d543f06bbbf67530f5e631459bf9c98 Mon Sep 17 00:00:00 2001
2*4882a593SmuzhiyunFrom: Jeffy Chen <jeffy.chen@rock-chips.com>
3*4882a593SmuzhiyunDate: Thu, 8 Dec 2022 10:26:26 +0800
4*4882a593SmuzhiyunSubject: [PATCH 92/93] HACK: vnc: Make pam optional
5*4882a593Smuzhiyun
6*4882a593SmuzhiyunSigned-off-by: Jeffy Chen <jeffy.chen@rock-chips.com>
7*4882a593Smuzhiyun---
8*4882a593Smuzhiyun libweston/backend-vnc/vnc.c | 10 ++++++++++
9*4882a593Smuzhiyun libweston/meson.build       |  9 +++++----
10*4882a593Smuzhiyun 2 files changed, 15 insertions(+), 4 deletions(-)
11*4882a593Smuzhiyun
12*4882a593Smuzhiyundiff --git a/libweston/backend-vnc/vnc.c b/libweston/backend-vnc/vnc.c
13*4882a593Smuzhiyunindex 4861521..ed68f45 100644
14*4882a593Smuzhiyun--- a/libweston/backend-vnc/vnc.c
15*4882a593Smuzhiyun+++ b/libweston/backend-vnc/vnc.c
16*4882a593Smuzhiyun@@ -423,7 +423,10 @@ vnc_handle_auth(const char *username, const char *password, void *userdata)
17*4882a593Smuzhiyun 		return false;
18*4882a593Smuzhiyun 	}
19*4882a593Smuzhiyun
20*4882a593Smuzhiyun+#ifdef HAVE_PAM
21*4882a593Smuzhiyun 	return weston_authenticate_user(username, password);
22*4882a593Smuzhiyun+#endif
23*4882a593Smuzhiyun+	return true;
24*4882a593Smuzhiyun }
25*4882a593Smuzhiyun
26*4882a593Smuzhiyun static void
27*4882a593Smuzhiyun@@ -1008,14 +1011,20 @@ vnc_backend_create(struct weston_compositor *compositor,
28*4882a593Smuzhiyun 	nvnc_set_userdata(backend->server, backend, NULL);
29*4882a593Smuzhiyun 	nvnc_set_name(backend->server, "Weston VNC backend");
30*4882a593Smuzhiyun
31*4882a593Smuzhiyun+#ifdef HAVE_PAM
32*4882a593Smuzhiyun 	if (!nvnc_has_auth()) {
33*4882a593Smuzhiyun 		weston_log("Neat VNC built without TLS support\n");
34*4882a593Smuzhiyun 		goto err_output;
35*4882a593Smuzhiyun 	}
36*4882a593Smuzhiyun+#endif
37*4882a593Smuzhiyun+
38*4882a593Smuzhiyun 	if (!config->server_cert && !config->server_key) {
39*4882a593Smuzhiyun 		weston_log("The VNC backend requires a key and a certificate for TLS security"
40*4882a593Smuzhiyun 			   " (--vnc-tls-cert/--vnc-tls-key)\n");
41*4882a593Smuzhiyun+#ifdef HAVE_PAM
42*4882a593Smuzhiyun 		goto err_output;
43*4882a593Smuzhiyun+#endif
44*4882a593Smuzhiyun+		goto no_tls;
45*4882a593Smuzhiyun 	}
46*4882a593Smuzhiyun 	if (!config->server_cert) {
47*4882a593Smuzhiyun 		weston_log("Missing TLS certificate (--vnc-tls-cert)\n");
48*4882a593Smuzhiyun@@ -1036,6 +1045,7 @@ vnc_backend_create(struct weston_compositor *compositor,
49*4882a593Smuzhiyun
50*4882a593Smuzhiyun 	weston_log("TLS support activated\n");
51*4882a593Smuzhiyun
52*4882a593Smuzhiyun+no_tls:
53*4882a593Smuzhiyun 	ret = weston_plugin_api_register(compositor, WESTON_VNC_OUTPUT_API_NAME,
54*4882a593Smuzhiyun 					 &api, sizeof(api));
55*4882a593Smuzhiyun 	if (ret < 0) {
56*4882a593Smuzhiyundiff --git a/libweston/meson.build b/libweston/meson.build
57*4882a593Smuzhiyunindex 6f0b624..037a240 100644
58*4882a593Smuzhiyun--- a/libweston/meson.build
59*4882a593Smuzhiyun+++ b/libweston/meson.build
60*4882a593Smuzhiyun@@ -83,13 +83,14 @@ endif
61*4882a593Smuzhiyun if get_option('backend-vnc')
62*4882a593Smuzhiyun 	dep_pam = dependency('pam', required: false)
63*4882a593Smuzhiyun 	if not dep_pam.found()
64*4882a593Smuzhiyun-		dep_pam = cc.find_library('pam')
65*4882a593Smuzhiyun+		dep_pam = cc.find_library('pam', required: false)
66*4882a593Smuzhiyun 	endif
67*4882a593Smuzhiyun 	if not dep_pam.found()
68*4882a593Smuzhiyun-		error('VNC backend requires libpam which was not found. Or, you can use \'-Dbackend-vnc=false\'.')
69*4882a593Smuzhiyun+		warning('VNC backend suggests libpam which was not found. Or, you can use \'-Dbackend-vnc=false\'.')
70*4882a593Smuzhiyun+	else
71*4882a593Smuzhiyun+		config_h.set('HAVE_PAM', '1')
72*4882a593Smuzhiyun+		deps_libweston += dep_pam
73*4882a593Smuzhiyun 	endif
74*4882a593Smuzhiyun-	config_h.set('HAVE_PAM', '1')
75*4882a593Smuzhiyun-	deps_libweston += dep_pam
76*4882a593Smuzhiyun endif
77*4882a593Smuzhiyun
78*4882a593Smuzhiyun lib_weston = shared_library(
79*4882a593Smuzhiyun--
80*4882a593Smuzhiyun2.20.1
81*4882a593Smuzhiyun
82