From 6094fc115623d207f86a380ab2553cd1eba49088 Mon Sep 17 00:00:00 2001 From: Aitzol Date: Wed, 5 Apr 2023 13:23:26 +0200 Subject: [PATCH] ipa eta gailua --- .app.py.swo | Bin 0 -> 57344 bytes .app.py.swp | Bin 0 -> 57344 bytes .edit_email.tpl.swp | Bin 0 -> 12288 bytes .index.tpl.swp | Bin 0 -> 12288 bytes .user.tpl.swp | Bin 0 -> 12288 bytes app.py | 31 ++++++++++++++----- data/invite-codes.db | Bin 8192 -> 8192 bytes libs/__pycache__/flist.cpython-39.pyc | Bin 21988 -> 21988 bytes libs/__pycache__/helper.cpython-39.pyc | Bin 1659 -> 1659 bytes libs/__pycache__/localization.cpython-39.pyc | Bin 3585 -> 3585 bytes libs/__pycache__/slist.cpython-39.pyc | Bin 8243 -> 8243 bytes 11 files changed, 24 insertions(+), 7 deletions(-) create mode 100644 .app.py.swo create mode 100644 .app.py.swp create mode 100644 .edit_email.tpl.swp create mode 100644 .index.tpl.swp create mode 100644 .user.tpl.swp diff --git a/.app.py.swo b/.app.py.swo new file mode 100644 index 0000000000000000000000000000000000000000..97a4be9add1e59a57fd0a4f1774bd12aac10e534 GIT binary patch literal 57344 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 F`F~i&Ll*!5 literal 0 HcmV?d00001 diff --git a/.edit_email.tpl.swp b/.edit_email.tpl.swp new file mode 100644 index 0000000000000000000000000000000000000000..df42877b75cd4c7d947f5169d65a39672c994304 GIT binary patch literal 12288 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 WrC#y7h`0afQ%k4Lo;=2j^S=Ph_r75O literal 0 HcmV?d00001 diff --git a/app.py b/app.py index 23055ae..b524e1d 100644 --- a/app.py +++ b/app.py @@ -390,10 +390,16 @@ def login_user_ldap(conf, username, password): #with connect_ldap(conf) as c: with connect_ldap(conf, user=superUser.readonly_dn, password=superUser.readonly_pwd) as c: user_dn = find_user_dn(conf, c, username) - + cur_dev = get_dev() + known_device = find_device(conf, c, cur_dev) + print('KNOWN DEVICE:',known_device) + print(request.environ.get('HTTP_X_REAL_IP', request.remote_addr)) # Note: raises LDAPUserNameIsMandatoryError when user_dn is None. with connect_ldap(conf, authentication=SIMPLE, user=user_dn, password=password) as c: c.bind() + #IP helbidea sartu db-an + ip = {'ip':request.environ.get('HTTP_X_REAL_IP', request.remote_addr)} + c.add(attributes=ip) newSession().set(get_user_data(user_dn, c)) LOG.debug("%s logged in to %s" % (username, conf['base'])) @@ -510,7 +516,8 @@ def register(conf, username, firstname, surname, password, email, isFake, device directory = 'home/user/'+to_ascii(username) OBJECT_CLASS = ['top', 'inetOrgPerson', 'posixAccount', 'accountsManagement'] attributes = {'gidNumber': '501', 'uidNumber': uidNumber, 'homeDirectory': directory, 'givenName': - firstname, 'sn': surname, 'uid' : username, 'mail': email, 'active': False, 'fakeCn': isFake, 'device':device} + firstname, 'sn': surname, 'uid' : username, 'mail': email, 'active': False, 'fakeCn': isFake, + 'devices':device} new_user_dn = "cn="+firstname+" "+surname+" - "+username+",cn=users,"+conf['base'] c.add(dn=new_user_dn,object_class=OBJECT_CLASS, attributes=attributes) #create/change user password @@ -760,6 +767,17 @@ def find_email(conf, conn, email): return False +#find devices +def find_device(conf, conn, device): + search_filter = '(uid=*)' + if conn.search(conf['base'], search_filter, attributes=['devices']): + for i in conn.response: + for j in i['attributes']['devices']: + if(j == device): + return True + + return False + #find highest uidNumber def find_uid_number(conf, conn): search_filter = '(uid=*)' @@ -786,7 +804,7 @@ def get_user_email_array(user_dn, conn, old_email, new_email): def get_user_data(user_dn, conn): search_filter = '(objectClass=*)' - conn.search(user_dn, search_filter, attributes=['active','fakeCn','givenName','sn','uid','mail','device']) + conn.search(user_dn, search_filter, attributes=['active','fakeCn','givenName','sn','uid','mail','devices']) data = [] data.append(conn.entries[0].active.values[0]) data.append(conn.entries[0].fakeCn.values[0]) @@ -794,7 +812,7 @@ def get_user_data(user_dn, conn): data.append(conn.entries[0].sn.values[0]) data.append(conn.entries[0].uid.values[0]) data.append(conn.entries[0].mail.values[0]) - data.append(conn.entries[0].device.values) + data.append(conn.entries[0].devices.values) return(data) def read_config(): @@ -825,7 +843,6 @@ def get_dev(): user_agent = parse(ua_string) return str(user_agent) - class Error(Exception): pass @@ -863,7 +880,7 @@ def newSession(): self.surname = data[3] self.username = data[4] self.mail = data[5] - self.device = data[6] + self.devices = data[6] self.data['active'] = self.active self.data['fakeCn'] = self.fakeCn @@ -871,7 +888,7 @@ def newSession(): self.data['surname'] = self.surname self.data['username'] = self.username self.data['mail'] = self.mail - self.data['device'] = self.device + self.data['devices'] = self.devices def close(self): self.data.pop('username') diff --git a/data/invite-codes.db b/data/invite-codes.db index eec80d49981f0b208616877b230f759a34d739f0..fdfb63c47cdb75b40bca1256db41828a5ab4d9d1 100644 GIT binary patch delta 35 mcmZp0XmFSy&1f-E#+lJ#W5RVgMvloA@)|%g5lnW;mjM8_mkF)_ delta 35 mcmZp0XmFSy&1gDN#+lJ{W5RVgM$X9=@)|%g5lnW;mjM8_9|@}f diff --git a/libs/__pycache__/flist.cpython-39.pyc b/libs/__pycache__/flist.cpython-39.pyc index 0ea818d032c2e73f4415c5562b9b7dfd4c54476a..b39e905c8b7b1b265ff8eb50afc63f588b145447 100644 GIT binary patch delta 22 ccmaE|n(@hMM(#vjUM>b8;N{ZY$bB;u08M5E-v9sr delta 22 ccmaE|n(@hMM(#vjUM>b8cw(iqk^5#S090ZI1^aKU;_Xd delta 20 acmZpaX_Vnko0Ivcsa@d5xWvINus diff --git a/libs/__pycache__/slist.cpython-39.pyc b/libs/__pycache__/slist.cpython-39.pyc index a4cf09974e4db257c31f3e12d0d69846800ced44..a9cacd833728ba423f01cb33c4deb474565a7342 100644 GIT binary patch delta 20 acmdn&u-Sn-k(ZZ?0SI`xbT@KqC;$L3sRO?N delta 20 acmdn&u-Sn-k(ZZ?0SKO0>1^cIPyhfor3A$Q