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