rfbCheckPasswordByList()는 계정-패스워드 쌍으로 되어있는 값을 이용하여 로그인을 구현하는 기본 함수이다.
희망(?)을 가졌던 newClientHook 이벤트는 시도때도 없이 발생했고(원래 기대했던 것은 로그인 시 1회)
로그인 별로 어떤 계정이 로그인 성공,실패 했는지는 함수를 확장해서 만들어야 할 듯..
newClientHook 에서도 cl->viewOnly가 설정되지 않는 걸 보면, vnc client 측의 설정과는 별개 인 듯
/* for this method, authPasswdData is really a pointer to an array of char*'s, where the last pointer is 0. */ rfbBool rfbCheckPasswordByList(rfbClientPtr cl,const char* response,int len) { char **passwds; int i=0; for(passwds=(char**)cl->screen->authPasswdData;*passwds;passwds++,i++) { uint8_t auth_tmp[CHALLENGESIZE]; memcpy((char *)auth_tmp, (char *)cl->authChallenge, CHALLENGESIZE); rfbEncryptBytes(auth_tmp, *passwds); if (memcmp(auth_tmp, response, len) == 0) { if(i>=cl->screen->authPasswdFirstViewOnly) cl->viewOnly=TRUE; return(TRUE); } } rfbErr("authProcessClientMessage: authentication failed from %s\n", cl->host); return(FALSE); } |
[링크 : https://libvnc.github.io/doc/html/main_8c_source.html#l00786]
'프로그램 사용 > VNC' 카테고리의 다른 글
libvncserver 기본 인자 (0) | 2022.11.04 |
---|---|
libvncserver 종료 절차 (0) | 2022.11.01 |
libvncserver 접속 끊어짐 문제 (0) | 2022.08.16 |
libvncserver websocket example (0) | 2022.08.12 |
libvncserver 마우스 이벤트 (0) | 2022.02.25 |