abclinuxu.cz AbcLinuxu.cz itbiz.cz ITBiz.cz HDmag.cz HDmag.cz abcprace.cz AbcPráce.cz
AbcLinuxu hledá autory!
Inzerujte na AbcPráce.cz od 950 Kč
Rozšířené hledání
×
    včera 14:22 | Bezpečnostní upozornění

    V přihlašovací obrazovce LightDM KDE (lightdm-kde-greeter) byla nalezena a již opravena eskalace práv (CVE-2025-62876). Detaily v příspěvku na blogu SUSE Security.

    Ladislav Hagara | Komentářů: 5
    včera 13:22 | Nová verze

    Byla vydána nová verze 7.2 živé linuxové distribuce Tails (The Amnesic Incognito Live System), jež klade důraz na ochranu soukromí uživatelů a anonymitu. Tor Browser byl povýšen na verzi 15.0.1. Další novinky v příslušném seznamu.

    Ladislav Hagara | Komentářů: 0
    včera 10:33 | IT novinky

    Česká národní banka (ČNB) nakoupila digitální aktiva založená na blockchainu za milion dolarů (20,9 milionu korun). Na vytvořeném testovacím portfoliu, jehož součástí jsou bitcoin, stablecoiny navázané na dolar a tokenizované depozitum, chce získat praktickou zkušenost s držením digitálních aktiv. Portfolio nebude součástí devizových rezerv, uvedla dnes ČNB v tiskové zprávě.

    Ladislav Hagara | Komentářů: 40
    včera 03:22 | IT novinky

    Apple představil iPhone Pocket pro stylové přenášení iPhonu. iPhone Pocket vzešel ze spolupráce značky ISSEY MIYAKE a Applu a jeho tělo tvoří jednolitý 3D úplet, který uschová všechny modely iPhonu. iPhone Pocket s krátkým popruhem se prodává za 149,95 dolarů (USA) a s dlouhým popruhem za 229,95 dolarů (USA).

    Ladislav Hagara | Komentářů: 16
    včera 02:33 | Nová verze

    Byla vydána nová stabilní verze 7.7 webového prohlížeče Vivaldi (Wikipedie). Postavena je na Chromiu 142. Přehled novinek i s náhledy v příspěvku na blogu.

    Ladislav Hagara | Komentářů: 0
    13.11. 22:11 | Nová verze

    Společnost Epic Games vydala verzi 5.7 svého proprietárního multiplatformního herního enginu Unreal Engine (Wikipedie). Podrobný přehled novinek v poznámkách k vydání.

    Ladislav Hagara | Komentářů: 2
    13.11. 16:22 | Bezpečnostní upozornění

    Intel vydal 30 upozornění na bezpečnostní chyby ve svých produktech. Současně vydal verzi 20251111 mikrokódů pro své procesory.

    Ladislav Hagara | Komentářů: 0
    13.11. 15:33 | Nová verze

    Byla vydána říjnová aktualizace aneb nová verze 1.106 editoru zdrojových kódů Visual Studio Code (Wikipedie). Přehled novinek i s náhledy a videi v poznámkách k vydání. Ve verzi 1.106 vyjde také VSCodium, tj. komunitní sestavení Visual Studia Code bez telemetrie a licenčních podmínek Microsoftu.

    Ladislav Hagara | Komentářů: 1
    13.11. 12:11 | Komunita

    Canonical pro své zákazníky, předplatitele Ubuntu Pro, prodloužil podporu Ubuntu LTS z 12 let na 15 let (Legacy add-on). Týká se verzí od 14.04 (Trusty Tahr).

    Ladislav Hagara | Komentářů: 2
    13.11. 05:11 | Nová verze

    Homebrew (Wikipedie), správce balíčků pro macOS a od verze 2.0.0 také pro Linux, byl vydán ve verzi 5.0.0. Nově je oficiálně podporován Linux ARM64/AArch64. Na stránce Homebrew Formulae lze procházet seznamem balíčků. K dispozici jsou také různé statistiky.

    Ladislav Hagara | Komentářů: 6
    Jaké řešení používáte k vývoji / práci?
     (35%)
     (47%)
     (18%)
     (18%)
     (23%)
     (15%)
     (22%)
     (15%)
     (16%)
    Celkem 353 hlasů
     Komentářů: 16, poslední 12.11. 18:21
    Rozcestník

    Dva autentikátory pro BincIMap a QMail

    14.2.2010 15:22 | Přečteno: 902× | Programování | Výběrový blog | poslední úprava: 14.2.2010 15:23

    Jelikož jsem v domácí síti přešel na ldap+kerberos autentifikaci, tak jsem potřeboval změnit autentifikátor pro IMAP server, který používám. Výsledkem jsou dva checkpassword kompatibilní autentifikátory. První je pro LDAP autentifikaci - potřebuje balíček python-ldap.
     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();
    
           

    Hodnocení: 100 %

            špatnédobré        

    Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

    Komentáře

    Vložit další komentář

    ISSN 1214-1267   www.czech-server.cz
    © 1999-2015 Nitemedia s. r. o. Všechna práva vyhrazena.