From d9214f99ce1c01a4390c9bcbdf7e725e10cf85e7 Mon Sep 17 00:00:00 2001
From: dscho <dscho>
Date: Mon, 19 Nov 2001 12:40:51 +0000
Subject: cmdline arg -passwd added

---
 cargs.c | 9 +++++++++
 main.c  | 5 +++--
 rfb.h   | 3 +++
 3 files changed, 15 insertions(+), 2 deletions(-)

diff --git a/cargs.c b/cargs.c
index 134c356..e94ed52 100644
--- a/cargs.c
+++ b/cargs.c
@@ -21,6 +21,8 @@ rfbUsage(void)
     fprintf(stderr, "-rfbwait time          max time in ms to wait for RFB client\n");
     fprintf(stderr, "-rfbauth passwd-file   use authentication on RFB protocol\n"
                     "                       (use 'storepasswd' to create a password file)\n");
+    fprintf(stderr, "-passwd plain-password use authentication \n"
+                    "                       (use plain-password as password, USE AT YOUR RISK)\n");
     fprintf(stderr, "-deferupdate time      time in ms to defer updates "
                                                              "(default 40)\n");
     fprintf(stderr, "-desktop name          VNC desktop name (default \"LibVNCServer\")\n");
@@ -51,6 +53,13 @@ rfbProcessArguments(rfbScreenInfoPtr rfbScreen,int* argc, char *argv[])
         } else if (strcmp(argv[i], "-rfbauth") == 0) {  /* -rfbauth passwd-file */
             if (i + 1 >= *argc) rfbUsage();
             rfbScreen->rfbAuthPasswdData = argv[++i];
+	} else if (strcmp(argv[i], "-passwd") == 0) {  /* -passwd password */
+	    char **passwds = malloc(sizeof(char**)*2);
+	    if (i + 1 >= *argc) rfbUsage();
+	    passwds[0] = argv[++i];
+	    passwds[1] = 0;
+	    rfbScreen->rfbAuthPasswdData = passwds;
+	    rfbScreen->passwordCheck = rfbCheckPasswordByList;
         } else if (strcmp(argv[i], "-deferupdate") == 0) {  /* -desktop desktop-name */
             if (i + 1 >= *argc) rfbUsage();
             rfbScreen->rfbDeferUpdateTime = atoi(argv[++i]);
diff --git a/main.c b/main.c
index 9f697d7..f87181c 100644
--- a/main.c
+++ b/main.c
@@ -401,7 +401,7 @@ Bool defaultPasswordCheck(rfbClientPtr cl,char* response,int len)
 
 /* for this method, rfbAuthPasswdData is really a pointer to an array
    of char*'s, where the last pointer is 0. */
-Bool checkPasswordByList(rfbClientPtr cl,char* response,int len)
+Bool rfbCheckPasswordByList(rfbClientPtr cl,char* response,int len)
 {
   char **passwds;
 
@@ -465,6 +465,8 @@ rfbScreenInfoPtr rfbGetScreen(int* argc,char** argv,
    rfbScreen->height = height;
    rfbScreen->bitsPerPixel = rfbScreen->depth = 8*bytesPerPixel;
 
+   rfbScreen->passwordCheck = defaultPasswordCheck;
+
    rfbProcessArguments(rfbScreen,argc,argv);
 
 #ifdef WIN32
@@ -532,7 +534,6 @@ rfbScreenInfoPtr rfbGetScreen(int* argc,char** argv,
    rfbScreen->setXCutText = defaultSetXCutText;
    rfbScreen->getCursorPtr = defaultGetCursorPtr;
    rfbScreen->setTranslateFunction = rfbSetTranslateFunction;
-   rfbScreen->passwordCheck = defaultPasswordCheck;
    rfbScreen->newClientHook = doNothingWithClient;
    rfbScreen->displayHook = 0;
 
diff --git a/rfb.h b/rfb.h
index 358d26e..fc7610a 100644
--- a/rfb.h
+++ b/rfb.h
@@ -748,6 +748,9 @@ void rfbMarkRectAsModified(rfbScreenInfoPtr rfbScreen,int x1,int y1,int x2,int y
 void rfbMarkRegionAsModified(rfbScreenInfoPtr rfbScreen,sraRegionPtr modRegion);
 void doNothingWithClient(rfbClientPtr cl);
 
+/* to check against plain passwords */
+Bool rfbCheckPasswordByList(rfbClientPtr cl,char* response,int len);
+
 /* functions to make a vnc server */
 extern rfbScreenInfoPtr rfbGetScreen(int* argc,char** argv,
  int width,int height,int bitsPerSample,int samplesPerPixel,
-- 
cgit v1.2.3

