Dne Sat, 13 Feb 2010 02:36:48 +0100 (CET) Jan Fuchs <[email protected]> napsal(a):
> Zdravím, > myslíš následující dokumentaci a program checkpassword? > > http://cr.yp.to/checkpwd/interface.html > > Pokud ano, tak tohle je začátek programu checkpassword: > > int main(int argc,char* argv[]) { > char buf[513]; > char* last; > int len; > char *login,*passwd,*ptr; > struct passwd *pw; > struct spwd *spw; > > if (!argv[1]) return 2; > for (len=0; len<512; ) { > int tmp; > tmp=read(3,buf+len,512-len); > if (tmp==-1) return 111; > if (tmp==0) break; > len+=tmp; > } > close(3); > > Ve svém programu tedy nejprve musíš připravit fd 3 pro checkpassword. > Takže rešení může být např.: > > import os > > r_fd, w_fd = os.pipe() > os.write(w_fd, "username\0password\0") > > retcode = os.fork() > > if (retcode == 0): > os.close(w_fd) > os.execlp("checkpassword", "checkpassword", "/bin/date") > else: > os.close(r_fd) > os.close(w_fd) > > Jelikoz jsou na zacatku otevreny pouze deskriptory 0, 1, 2 tj. stdin, > stdout, stderr, tak fce pipe() vrati pro cteci fd 3, takze neni treba > resit prirazeni pomoci dup(), dup2(). Dulezite je uzavrit zapisovaci > cast roury, jinak zustane checkpassword "viset" ve fci read(). > > S pozdravem Jan Fuchs > > > Snažím se napsat si autentikační plugin pro BINCimap. V dokumentaci > > je napsáno, že jméno a heslo je odesíláno na deskriptor 3. > > -- > /************************************************************** > * _ Žádný program není bezchybný, dokonalý ani nejlepší, * > * °v° to samé platí i o lidech a nejen o nich. * > * /(_)\ -- Jan Fuchs -- * > * ^ ^ * > * http://www.fuky.org Jabber: [email protected] * > **************************************************************/ Jo, přesně to myslím, jenomže jestli jsem to pochopil správně, tak je třeba to username a password z toho deskriptoru přečíst a ne ho tam zapisovat. Standartní checkpasswd provádí autentifikaci přes /etc/passwd a já potřebuju autentifikaci přes ldap, takže si musím napsat náhradu toho checkpasswd - tedy implementovat jeho interface(tzn. přečíst z deskriptoru 3 to username\0passwd\0timestamp\0. Filip Bartmann _______________________________________________ Python mailing list [email protected] http://www.py.cz/mailman/listinfo/python
