From 262ff2d731b1bfc4acd91153088b8fcde7ae92b8 Mon Sep 17 00:00:00 2001 From: Rob Crittenden Date: Thu, 5 Feb 2009 15:03:08 -0500 Subject: Rename ipa-python directory to ipapython so it is a real python library We used to install it as ipa, now installing it as ipapython. The rpm is still ipa-python. --- ipapython/ipavalidate.py | 137 +++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 137 insertions(+) create mode 100644 ipapython/ipavalidate.py (limited to 'ipapython/ipavalidate.py') diff --git a/ipapython/ipavalidate.py b/ipapython/ipavalidate.py new file mode 100644 index 000000000..63e0a7614 --- /dev/null +++ b/ipapython/ipavalidate.py @@ -0,0 +1,137 @@ +# Authors: Rob Crittenden +# +# Copyright (C) 2007 Red Hat +# see file 'COPYING' for use and warranty information +# +# This program is free software; you can redistribute it and/or +# modify it under the terms of the GNU General Public License as +# published by the Free Software Foundation; version 2 only +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +# + +import re + +def Email(mail, notEmpty=True): + """Do some basic validation of an e-mail address. + Return True if ok + Return False if not + + If notEmpty is True the this will return an error if the field + is "" or None. + """ + usernameRE = re.compile(r"^[^ \t\n\r@<>()]+$", re.I) + domainRE = re.compile(r"^[a-z0-9][a-z0-9\.\-_]*\.[a-z]+$", re.I) + + if not mail or mail is None: + if notEmpty is True: + return False + else: + return True + + mail = mail.strip() + s = mail.split('@', 1) + try: + username, domain=s + except ValueError: + return False + if not usernameRE.search(username): + return False + if not domainRE.search(domain): + return False + + return True + +def Plain(text, notEmpty=False, allowSpaces=True): + """Do some basic validation of a plain text field + Return True if ok + Return False if not + + If notEmpty is True the this will return an error if the field + is "" or None. + """ + if (text is None) or (not text.strip()): + if notEmpty is True: + return False + else: + return True + + if allowSpaces: + textRE = re.compile(r"^[a-zA-Z_\-0-9\'\ ]*$") + else: + textRE = re.compile(r"^[a-zA-Z_\-0-9\']*$") + if not textRE.search(text): + return False + + return True + +def String(text, notEmpty=False): + """A string type. This is much looser in what it allows than plain""" + + if text is None or not text.strip(): + if notEmpty is True: + return False + else: + return True + + return True + +def Path(text, notEmpty=False): + """Do some basic validation of a path + Return True if ok + Return False if not + + If notEmpty is True the this will return an error if the field + is "" or None. + """ + textRE = re.compile(r"^[a-zA-Z_\-0-9\\ \.\/\\:]*$") + + if not text and notEmpty is True: + return False + + if text is None: + if notEmpty is True: + return False + else: + return True + + if not textRE.search(text): + return False + + return True + +def GoodName(text, notEmpty=False): + """From shadow-utils: + + User/group names must match gnu e-regex: + [a-zA-Z0-9_.][a-zA-Z0-9_.-]{0,30}[a-zA-Z0-9_.$-]? + + as a non-POSIX, extension, allow "$" as the last char for + sake of Samba 3.x "add machine script" + + Return True if ok + Return False if not + """ + textRE = re.compile(r"^[a-zA-Z0-9_.][a-zA-Z0-9_.-]{0,30}[a-zA-Z0-9_.$-]?$") + + if not text and notEmpty is True: + return False + + if text is None: + if notEmpty is True: + return False + else: + return True + + m = textRE.match(text) + if not m or text != m.group(0): + return False + + return True -- cgit