Od soboty do úterý probíhá v Hamburku konference 39C3 (Chaos Communication Congress) věnovaná také počítačové bezpečnosti nebo hardwaru. Program (jiná verze) slibuje řadu zajímavých přednášek. Streamy a záznamy budou k dispozici na media.ccc.de.
Byl představen nový Xserver Phoenix, kompletně od nuly vyvíjený v programovacím jazyce Zig. Projekt Phoenix si klade za cíl být moderní alternativou k X.Org serveru.
XLibre Xserver byl 21. prosince vydán ve verzi 25.1.0, 'winter solstice release'. Od založení tohoto forku X.Org serveru se jedná o vůbec první novou minor verzi (inkrementovalo se to druhé číslo v číselném kódu verze).
Wayback byl vydán ve verzi 0.3. Wayback je "tak akorát Waylandu, aby fungoval Xwayland". Jedná se o kompatibilní vrstvu umožňující běh plnohodnotných X11 desktopových prostředí s využitím komponent z Waylandu. Cílem je nakonec nahradit klasický server X.Org, a tím snížit zátěž údržby aplikací X11.
Byla vydána verze 4.0.0 programovacího jazyka Ruby (Wikipedie). S Ruby Box a ZJIT. Ruby lze vyzkoušet na webové stránce TryRuby. U příležitosti 30. narozenin, první veřejná verze Ruby 0.95 byla oznámena 21. prosince 1995, proběhl redesign webových stránek.
Všem čtenářkám a čtenářům AbcLinuxu krásné Vánoce.
Byla vydána nová verze 7.0 linuxové distribuce Parrot OS (Wikipedie). S kódovým názvem Echo. Jedná se o linuxovou distribuci založenou na Debianu a zaměřenou na penetrační testování, digitální forenzní analýzu, reverzní inženýrství, hacking, anonymitu nebo kryptografii. Přehled novinek v příspěvku na blogu.
Vývojáři postmarketOS vydali verzi 25.12 tohoto před osmi lety představeného operačního systému pro chytré telefony vycházejícího z optimalizovaného a nakonfigurovaného Alpine Linuxu s vlastními balíčky. Přehled novinek v příspěvku na blogu. Na výběr jsou 4 uživatelská rozhraní: GNOME Shell on Mobile, KDE Plasma Mobile, Phosh a Sxmo.
Byla vydána nová verze 0.41.0 multimediálního přehrávače mpv (Wikipedie) vycházejícího z přehrávačů MPlayer a mplayer2. Přehled novinek, změn a oprav na GitHubu. Požadován je FFmpeg 6.1 nebo novější a také libplacebo 6.338.2 nebo novější.
Byla vydána nová verze 5.5 (novinky) skriptovacího jazyka Lua (Wikipedie). Po pěti a půl letech od vydání verze 5.4.
cat binc_ldapauth/src/binc_ldapauth.py
#!/usr/bin/python
'''
Created on Feb 12, 2010
@author: bartmann
'''
import os;
import string;
import sys;
import ldap;
import ldap.sasl;
class binc_ldapauth:
def __init__(self):
self.gssapi_auth=True;
def get_creds(self):
fd=os.fdopen(3,"r");
ncreds=os.read(3, 128);
creds=ncreds;
while(ncreds!=""):
ncreds=os.read(3, 128);
creds+=ncreds;
creds=creds.split("\0");
self.username=creds[0];
self.password=creds[1];
def auth(self):
ds = ldap.initialize("ldap://joomladev.dyndns.org");
ds.protocol_version=3;
if self.gssapi_auth==False:
try:
ds.simple_bind_s("uid="+self.username+",ou=people,dc=joomladev.dyndns,dc=org",self.password);
dn=string.replace(ds.whoami_s(),"dn:","");
except ldap.INVALID_CREDENTIALS:
return 1;
else:
try:
auth=ldap.sasl.gssapi();
ds.sasl_interactive_bind_s("",auth);
dn=string.replace(ds.whoami_s(),"dn:","");
if(ds.compare_s(dn,'uid',self.username)):
pass;
else:
return 1;
except ldap.INVALID_CREDENTIALS:
return 1;
os.environ["USER"]=self.username;
home=ds.search_s(dn,ldap.SCOPE_BASE,'(objectclass=person)',['homeDirectory']);
os.environ["HOME"]=home[0][1]["homeDirectory"][0];
shell=home=ds.search_s(dn,ldap.SCOPE_BASE,'(objectclass=person)',['loginShell']);
os.environ["SHELL"]=shell[0][1]["loginShell"][0];
gid=home=ds.search_s(dn,ldap.SCOPE_BASE,'(objectclass=person)',['gidNumber']);
os.setgid(int(gid[0][1]["gidNumber"][0]));
uid=home=ds.search_s(dn,ldap.SCOPE_BASE,'(objectclass=person)',['uidNumber']);
os.setuid(int(uid[0][1]["uidNumber"][0]));
os.chdir(os.environ["HOME"]);
os.execlp(sys.argv[1],sys.argv[1]);
if __name__ == '__main__':
lauth=binc_ldapauth();
lauth.get_creds();
lauth.auth();
a ten druhý autentifikuje přes PAM - k jeho funkci je nutné mít nainstalovaný PyPAM:
cat binc_pamauth/src/binc_pamauth.py
#!/usr/bin/python
'''
Created on Feb 12, 2010
@author: bartmann
'''
import os;
import sys;
import PAM;
import pwd;
class binc_pamauth:
def __init__(self):
self.gssapi_auth=True;
def get_creds(self):
fd=os.fdopen(3,"r");
ncreds=os.read(3, 128);
creds=ncreds;
while(ncreds!=""):
ncreds=os.read(3, 128);
creds+=ncreds;
creds=creds.split("\0");
self.username=creds[0];
self.password=creds[1];
def pam_conv(self,auth, query_list):
resp=[];
for (q, qtype) in query_list:
if qtype==PAM.PAM_PROMPT_ECHO_OFF :
resp.append((self.password,0));
else:
resp.append(('',0));
return resp;
def auth(self):
pam_auth = PAM.pam();
pam_auth.start("imap");
pam_auth.set_item(PAM.PAM_USER,self.username);
pam_auth.set_item(PAM.PAM_CONV,self.pam_conv);
try:
pam_auth.authenticate();
pam_auth.acct_mgmt();
except PAM.error:
return 1;
pw=pwd.getpwnam(self.username);
os.environ["USER"]=self.username;
os.environ["HOME"]=pw[5];
os.environ["SHELL"]=pw[6];
os.setgid(int(pw[3]));
os.setuid(int(pw[2]));
os.chdir(os.environ["HOME"]);
os.execlp(sys.argv[1],sys.argv[1]);
if __name__ == '__main__':
pauth=binc_pamauth();
pauth.get_creds();
pauth.auth();
Tiskni
Sdílej: