Na čem aktuálně pracují vývojáři GNOME a KDE Plasma? Pravidelný přehled novinek v Týden v GNOME a Týden v KDE Plasma. Vypíchnout lze, že v Plasmě byl implementován 22letý požadavek. Historie schránky nově umožňuje ohvězdičkovat vybrané položky a mít k ním trvalý a snadný přístup.
Wayfire, kompozitní správce oken běžící nad Waylandem a využívající wlroots, byl vydán ve verzi 0.10.0. Zdrojové kódy jsou k dispozici na GitHubu. Videoukázky na YouTube.
Před necelými čtyřmi měsíci byl Steven Deobald jmenován novým výkonným ředitelem GNOME Foundation. Včera skončil, protože "nebyl pro tuto roli v tento čas ten pravý".
Nové číslo časopisu Raspberry Pi zdarma ke čtení: Raspberry Pi Official Magazine 156 (pdf).
Armbian, tj. linuxová distribuce založená na Debianu a Ubuntu optimalizovaná pro jednodeskové počítače na platformě ARM a RISC-V, ke stažení ale také pro Intel a AMD, byl vydán ve verzi 25.8.1. Přehled novinek v Changelogu.
Včera večer měl na YouTube premiéru dokumentární film Python: The Documentary | An origin story.
Společnost comma.ai po třech letech od vydání verze 0.9 vydala novou verzi 0.10 open source pokročilého asistenčního systému pro řidiče openpilot (Wikipedie). Zdrojové kódy jsou k dispozici na GitHubu.
Ubuntu nově pro testování nových verzí vydává měsíční snapshoty. Dnes vyšel 4. snapshot Ubuntu 25.10 (Questing Quokka).
Řada vestavěných počítačových desek a vývojových platforem NVIDIA Jetson se rozrostla o NVIDIA Jetson Thor. Ve srovnání se svým předchůdcem NVIDIA Jetson Orin nabízí 7,5krát vyšší výpočetní výkon umělé inteligence a 3,5krát vyšší energetickou účinnost. Softwarový stack NVIDIA JetPack 7 je založen na Ubuntu 24.04 LTS.
Národní úřad pro kybernetickou a informační bezpečnost (NÚKIB) spolu s NSA a dalšími americkými úřady upozorňuje (en) na čínského aktéra Salt Typhoon, který kompromituje sítě po celém světě.
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: