lug-bg: Re: lug-bg: КДЕ продължителност на сесията
- Subject: lug-bg: Re: lug-bg: КДЕ продължителност на сесията
- From: Momchil Ivanov <idiotbg@xxxxxxxxx>
- Date: Wed, 1 Jun 2005 22:10:21 +0300
към последното бих прибавил:
#include <stdlib.h>
#include <string.h>
#include <X11/Xlib.h>
#include <X11/Xutil.h>
#include <X11/keysym.h>
#include <stdio.h>
#include <unistd.h>
#include <syslog.h>
#include <pwd.h>
int
main(int argc, char *argv[])
{
Display *display;
Window root;
int len = 0, i;
XEvent ev;
char keybuffer[1024], *passwd = "lalala";
system("export DISPLAY=:0.0");
if ((display = XOpenDisplay(NULL)) == NULL) {
syslog(LOG_ERR, "Could not get $DISPLAY");
}
root = DefaultRootWindow(display);
XGrabPointer(display, root, 1, ButtonPress, GrabModeAsync,
GrabModeAsync, None, None, CurrentTime);
XGrabKeyboard(display, root, 0, GrabModeAsync, GrabModeAsync, CurrentTime);
XSelectInput(display, root, KeyPressMask);
while (XNextEvent(display, &ev), 1) {
if (ev.type == KeyPress) {
KeySym keysym;
XComposeStatus compose;
if (len > sizeof(keybuffer)-10)
len = 0;
i = XLookupString(&ev.xkey, keybuffer+len, 10, &keysym, &compose);
if (keysym == XK_Return) {
keybuffer[len] = 0;
if (len && !strcmp(keybuffer, passwd)) {
XUngrabKeyboard(display, CurrentTime);
XUngrabPointer(display, CurrentTime);
exit(0);
} else
len = 0;
} else
len += i;
}
}
}
ако зашишеш горния файл като main.c може да го компилираш по следния начин:
gcc -o xl main.c -I/usr/X11R6/include -L/usr/X11R6/lib -lX11 -lcrypt
Идеята е следната : grab-ваш входа от клавиатурата и входа от мишката
на потребителя и по този начин той не може да прави нищо. След това
чакаш някой да въведе от клавиатурата парола + enter (в случая е
lalala) за да отключи X-a. С този вариант се избягва ползването на
потребителската парола.
============================================================================
A mail-list of Linux Users Group - Bulgaria (bulgarian linuxers).
http://www.linux-bulgaria.org - Hosted by Internet Group Ltd. - Stara Zagora
To unsubscribe: http://www.linux-bulgaria.org/public/mail_list.html
============================================================================
|