2015-05-27 20:10:06 +00:00
|
|
|
# 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 version 3 for
|
|
|
|
# more details.
|
|
|
|
#
|
|
|
|
# You should have received a copy of the GNU General Public License version 3
|
|
|
|
# along with this program; if not, write to the Free Software Foundation, Inc., 51
|
|
|
|
# Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
|
|
|
|
#
|
|
|
|
# (c) 2015 Valentin Samir
|
2015-05-27 19:56:39 +00:00
|
|
|
"""Some util function for the app"""
|
2015-05-28 13:08:57 +00:00
|
|
|
from . import default_settings
|
|
|
|
|
|
|
|
from django.conf import settings
|
|
|
|
|
2015-05-16 21:43:46 +00:00
|
|
|
import urlparse
|
|
|
|
import urllib
|
2015-05-28 13:08:57 +00:00
|
|
|
import random
|
|
|
|
import string
|
2015-05-16 21:43:46 +00:00
|
|
|
|
|
|
|
def update_url(url, params):
|
2015-05-27 19:56:39 +00:00
|
|
|
"""update params in the `url` query string"""
|
2015-05-16 21:48:04 +00:00
|
|
|
url_parts = list(urlparse.urlparse(url))
|
2015-05-16 21:43:46 +00:00
|
|
|
query = dict(urlparse.parse_qsl(url_parts[4]))
|
|
|
|
query.update(params)
|
|
|
|
url_parts[4] = urllib.urlencode(query)
|
|
|
|
return urlparse.urlunparse(url_parts)
|
2015-05-28 13:08:57 +00:00
|
|
|
|
|
|
|
def unpack_nested_exception(error):
|
|
|
|
"""If exception are stacked, return the first one"""
|
|
|
|
i = 0
|
|
|
|
while True:
|
|
|
|
if error.args[i:]:
|
|
|
|
if isinstance(error.args[i], Exception):
|
|
|
|
error = error.args[i]
|
|
|
|
i = 0
|
|
|
|
else:
|
|
|
|
i += 1
|
|
|
|
else:
|
|
|
|
break
|
|
|
|
return error
|
|
|
|
|
|
|
|
|
|
|
|
def _gen_ticket(prefix):
|
|
|
|
"""Generate a ticket with prefix `prefix`"""
|
|
|
|
return '%s-%s' % (
|
|
|
|
prefix,
|
|
|
|
''.join(
|
|
|
|
random.choice(
|
|
|
|
string.ascii_letters + string.digits
|
|
|
|
) for _ in range(settings.CAS_ST_LEN)
|
|
|
|
)
|
|
|
|
)
|
|
|
|
|
|
|
|
def gen_st():
|
|
|
|
"""Generate a Service Ticket"""
|
|
|
|
return _gen_ticket('ST')
|
|
|
|
|
|
|
|
def gen_pt():
|
|
|
|
"""Generate a Proxy Ticket"""
|
|
|
|
return _gen_ticket('PT')
|
|
|
|
|
|
|
|
def gen_pgt():
|
|
|
|
"""Generate a Proxy Granting Ticket"""
|
|
|
|
return _gen_ticket('PGT')
|
|
|
|
|
|
|
|
def gen_pgtiou():
|
|
|
|
"""Generate a Proxy Granting Ticket IOU"""
|
|
|
|
return _gen_ticket('PGTIOU')
|
|
|
|
|