Esempio n. 1
0
def AddUser(conf,inputs,outputs):
	if is_connected(conf):
		c = auth.getCon(conf)
		prefix=auth.getPrefix(conf)
		if c.is_admin(conf["senv"]["login"]):
			try:
				user = json.loads(inputs["user"]["value"])
                	except Exception,e:
				print >> sys.stderr,inputs["user"]["value"]
                        	print >> sys.stderr,e
                        	conf["lenv"]["message"] = zoo._("invalid user parameter: ")+inputs["user"]["value"]
                        	return 4
			for (i,j) in user.items():
				if not manage_users.check_user_params(i,j):
					conf["lenv"]["message"] = 'Parametre %s incorrect'%(i)
					return 4
			if c.add_user(user):
				outputs["Result"]["value"] = inputs["user"]["value"]
				if inputs.has_key("group"):
					if inputs["group"].has_key("length"):
						for i in range(0,len(inputs["group"]["value"])):
							linkGroupToUser(c,prefix,inputs["group"]["value"],inputs["login"]["value"])
					else:
						linkGroupToUser(c,prefix,inputs["group"]["value"],user["login"])
				return 3
			else:
				conf["lenv"]["message"] = zoo._("SQL Error")
				return 4
		else:
			conf["lenv"]["message"]= zoo._("Action not permited")
			return 4
Esempio n. 2
0
def SecureAccess(conf,inputs,outputs):
    global myCookies
    mapfile=conf["main"]["dataPath"]+"/public_maps/project_"+inputs["server"]["value"]+".map"
    try:
    	myMap=mapscript.mapObj(mapfile)
    except:
        conf["lenv"]["message"]=zoo._("Unable to find any project with this name!")
	return zoo.SERVICE_FAILED
    c = auth.getCon(conf)
    prefix=auth.getPrefix(conf)
    if not(validToken(c,prefix,inputs["token"]["value"])):
        conf["lenv"]["message"]=zoo._("Unable to validate your token!")
        return zoo.SERVICE_FAILED
    if not(validIp(conf,c,prefix,inputs["ip"]["value"],0,[inputs["server"]["value"]])):
        conf["lenv"]["message"]=zoo._("You are not allowed to access the ressource using this ip address!")
        return zoo.SERVICE_FAILED
    q=None
    if inputs["Query"]["mimeType"]=="application/json":
        import json
        q=json.loads(inputs["Query"]["value"])
    myAutorizedGroups=myMap.web.metadata.get('mm_access_groups').split(',')
    if myAutorizedGroups.count('public')==0 and not(q is None or q["request"].upper()=="GETCAPABILITIES" or q["request"].upper()=="GETLEGENDGRAPHIC") and not(tryIdentifyUser(conf,inputs["user"]["value"],inputs["password"]["value"])):
        conf["lenv"]["message"]=zoo._("You are not allowed to access the ressource using this user / password!")
        conf["lenv"]["status_code"]="401 Unauthorized"
        print >> sys.stderr,conf["lenv"]
        return zoo.SERVICE_FAILED
    if conf.keys().count("senv")==0:
        conf["senv"]={"group": getGroupFromToken(c,prefix,inputs["token"]["value"])}
    else:
        print >> sys.stderr,conf["senv"]
    try:
    	myCurrentGroups=conf["senv"]["group"].split(',')
    except Exception,e:
    	myCurrentGroups=[]
Esempio n. 3
0
	def connect (self,conf=None):
		print >> sys.stderr,self.db
		if conf is not None:
			self.conf=conf
		try:
			self.db.index(".db")
                	self.conn = sqlite3.connect(self.db)
                        self.cur = self.conn.cursor()
			self.conn.execute("PRAGMA foreign_keys = ON")
			self.dbtype="sqlite"
			self.now="datetime('now')"
			self.desc="PRAGMA table_info(users)"
			return True
                except Exception,e:
			try:
				self.conn = psycopg2.connect(self.db)
				self.cur = self.conn.cursor()
				self.dbtype="PG"
				self.now="now()"
				import authenticate.service as auth
				import datastores.postgis.pgConnection as pg
				self.prefix=auth.getPrefix(conf)
				print >> sys.stderr,self.prefix
				self.desc=pg.getDesc(self.cur,self.prefix+"users")
				return True
			except Exception,e:
				print >> sys.stderr,e
				return False
Esempio n. 4
0
 def connect(self, conf=None):
     if conf is not None:
         self.conf = conf
     try:
         self.db.index(".db")
         self.paramstyle = sqlite3.paramstyle
         self.conn = sqlite3.connect(self.db)
         self.cur = self.conn.cursor()
         self.conn.execute("PRAGMA foreign_keys = ON")
         self.dbtype = "sqlite"
         self.now = "datetime('now')"
         self.desc = "PRAGMA table_info(users)"
         return True
     except Exception, e:
         try:
             self.conn = psycopg2.connect(self.db)
             self.paramstyle = psycopg2.paramstyle
             self.cur = self.conn.cursor()
             self.dbtype = "PG"
             self.now = "now()"
             import authenticate.service as auth
             import datastores.postgis.pgConnection as pg
             self.prefix = auth.getPrefix(conf)
             self.desc = pg.getDesc(self.cur, self.prefix + "users")
             return True
         except Exception, e:
             print >> sys.stderr, e
             return False
Esempio n. 5
0
def requestGroup(conf,inputs,outputs):
	prefix=auth.getPrefix(conf)
	if inputs.has_key("id"):
		clause="id="+inputs["id"]["value"]
	if inputs["type"]["value"]=="delete":
		req="DELETE from "+prefix+"groups WHERE "+clause
		inputs["type"]["value"]="delet"
	else:
		if inputs["type"]["value"]=="update":
			if inputs.has_key("is_admin") and inputs["is_admin"]["value"]=="true":				
				req="UPDATE "+prefix+"groups set name='"+inputs["name"]["value"]+"', description='"+inputs["desc"]["value"]+"', adm=1 WHERE "+clause
			else:
				req="UPDATE "+prefix+"groups set name='"+inputs["name"]["value"]+"', description='"+inputs["desc"]["value"]+"', adm=0 WHERE "+clause
		else:
			if inputs.has_key("is_admin") and inputs["is_admin"]["value"]=="true":
				req="INSERT INTO "+prefix+"groups (name,description,adm) VALUES('"+inputs["name"]["value"]+"','"+inputs["desc"]["value"]+"',1)"
			else:
				req="INSERT INTO "+prefix+"groups (name,description,adm) VALUES('"+inputs["name"]["value"]+"','"+inputs["desc"]["value"]+"',0)"
	if inputs["type"]["value"]!="insert" and inputs.has_key("user"):
		print >> sys.stderr,inputs["user"]
	
	c = auth.getCon(conf)
	print >> sys.stderr,req
	c.cur.execute(req)
	c.conn.commit()
	c.close()
	print >> sys.stderr,dir(c)

	outputs["Result"]["value"]=zoo._("Group succcessfully "+inputs["type"]["value"]+"ed")
	return zoo.SERVICE_SUCCEEDED
Esempio n. 6
0
def AddUser(conf,inputs,outputs):
    if is_connected(conf):
        c = auth.getCon(conf)
        prefix=auth.getPrefix(conf)
        if c.is_admin(conf["senv"]["login"]):
            try:
                user = json.loads(inputs["user"]["value"])
            except Exception,e:
                print >> sys.stderr,inputs["user"]["value"]
                print >> sys.stderr,e
                conf["lenv"]["message"] = zoo._("invalid user parameter: ")+inputs["user"]["value"]
                return 4
            for (i,j) in user.items():
                if i!="phone" and not manage_users.check_user_params(i,j):
                    conf["lenv"]["message"] = 'Parametre %s incorrect'%(i)
                    return 4
            if c.add_user(user):
                outputs["Result"]["value"] = zoo._("User successfully inserted")
                #outputs["Result"]["value"] = inputs["user"]["value"]
                if inputs.has_key("group"):
                    if inputs["group"].has_key("length"):
                        for i in range(0,len(inputs["group"]["value"])):
                            linkGroupToUser(conf,c,prefix,inputs["group"]["value"][i],user["login"])
                    else:
                        linkGroupToUser(conf,c,prefix,inputs["group"]["value"],user["login"])
                return 3
            else:
                conf["lenv"]["message"] = zoo._("SQL Error")
                return 4
        else:
            conf["lenv"]["message"]= zoo._("Action not permited")
            return 4
Esempio n. 7
0
def requestGroup(conf,inputs,outputs):
	prefix=auth.getPrefix(conf)
	if inputs.has_key("id"):
		clause="id="+inputs["id"]["value"]
	if inputs["type"]["value"]=="delete":
		req="DELETE from "+prefix+"groups WHERE "+clause
		inputs["type"]["value"]="delet"
	else:
		if inputs["type"]["value"]=="update":
			if inputs.has_key("is_admin") and inputs["is_admin"]["value"]=="true":				
				req="UPDATE "+prefix+"groups set name='"+inputs["name"]["value"]+"', description='"+inputs["desc"]["value"]+"', adm=1 WHERE "+clause
			else:
				req="UPDATE "+prefix+"groups set name='"+inputs["name"]["value"]+"', description='"+inputs["desc"]["value"]+"', adm=0 WHERE "+clause
		else:
			if inputs.has_key("is_admin") and inputs["is_admin"]["value"]=="true":
				req="INSERT INTO "+prefix+"groups (name,description,adm) VALUES('"+inputs["name"]["value"]+"','"+inputs["desc"]["value"]+"',1)"
			else:
				req="INSERT INTO "+prefix+"groups (name,description,adm) VALUES('"+inputs["name"]["value"]+"','"+inputs["desc"]["value"]+"',0)"
	if inputs["type"]["value"]!="insert" and inputs.has_key("user"):
		print >> sys.stderr,inputs["user"]
	
	c = auth.getCon(conf)
	print >> sys.stderr,req
	c.cur.execute(req)
	c.conn.commit()
	c.close()
	outputs["Result"]["value"]=zoo._("Group succcessfully updated")
    #outputs["Result"]["value"]=zoo._("Group succcessfully updated")
	return zoo.SERVICE_SUCCEEDED
Esempio n. 8
0
def CreateToken(conf,inputs,outputs):
    import time
    import shortInteger
    newNameId=str(time.time()).split('.')[0]
    name=shortInteger.shortURL(int(newNameId))
    prefix=auth.getPrefix(conf)
    req="INSERT INTO "+prefix+"tokens (id_group,value) VALUES ((SELECT id from "+prefix+"groups WHERE name='"+inputs["group"]["value"]+"'),'"+name+"')"
    c = auth.getCon(conf)
    res=c.cur.execute(req)
    c.conn.commit()
    outputs["Result"]["value"]=name
    return zoo.SERVICE_SUCCEEDED
Esempio n. 9
0
	def update_user_by_login(self,d_user,login):
		if self.conf is not None:
			import authenticate.service as auth
			prefix=auth.getPrefix(self.conf)
		else:
			prefix=""
		if d_user.has_key('id'):# or d_user.has_key('login'):
                        return False
		if d_user.has_key('passwd'):
                        d_user['passwd'] = mm_md5(d_user['passwd'])
		u = ",".join(["%s=\'%s\'" % (k, v) for k, v in d_user.items()])
		req = 'update '+prefix+'users set %s where login=\'%s\''%(u,login)	
		return self.execute_req(req)
Esempio n. 10
0
def loadContext(conf,inputs,outputs):
    con=auth.getCon(conf)
    prefix=auth.getPrefix(conf)
    con.connect()
    conn = con.conn
    cur = con.conn.cursor()
    name=inputs["name"]["value"]
    req="SELECT ext,layers from "+prefix+"contexts where name = [_name_]"
    con.pexecute_req([req,{"name":{"value":name,"format":"s"}}])
    con.conn.commit()
    res=con.cur.fetchall()
    outputs["Result"]["value"]=json.dumps({"ext": res[0][0],"layers": res[0][1].split(',')})
    return zoo.SERVICE_SUCCEEDED
Esempio n. 11
0
def loadContext(conf,inputs,outputs):
    con=auth.getCon(conf)
    prefix=auth.getPrefix(conf)
    con.connect()
    conn = con.conn
    cur = con.conn.cursor()
    name=inputs["name"]["value"]
    req="SELECT ext,layers from "+prefix+"contexts where name = '"+name+"'"
    cur.execute(req)
    con.conn.commit()
    res=cur.fetchall()
    outputs["Result"]["value"]=json.dumps({"ext": res[0][0],"layers": res[0][1].split(',')})
    return zoo.SERVICE_SUCCEEDED
Esempio n. 12
0
 def update_user_by_login(self, d_user, login):
     if self.conf is not None:
         import authenticate.service as auth
         prefix = auth.getPrefix(self.conf)
     else:
         prefix = ""
     if d_user.has_key('id'):  # or d_user.has_key('login'):
         return False
     if d_user.has_key('passwd'):
         d_user['passwd'] = mm_md5(d_user['passwd'])
     u = ",".join(["%s=\'%s\'" % (k, v) for k, v in d_user.items()])
     req = 'update ' + prefix + 'users set %s where login=\'%s\'' % (u,
                                                                     login)
     return self.execute_req(req)
Esempio n. 13
0
def unShortURL(conf,c):
    con=auth.getCon(conf)
    prefix=auth.getPrefix(conf)
    con=con.conn
    cur=con.cursor()
    try:
        import sys
        cur.execute("SELECT * from "+prefix+"savedpath where trace='"+c+"'")
        res=cur.fetchall()
        if len(res)==0:
            raise
    except Exception, e:
        print >> sys.stderr,str(e)
        raise
Esempio n. 14
0
def unShortURL(conf, c):
    con = auth.getCon(conf)
    prefix = auth.getPrefix(conf)
    con = con.conn
    cur = con.cursor()
    try:
        import sys
        cur.execute("SELECT * from " + prefix + "savedpath where trace='" + c +
                    "'")
        res = cur.fetchall()
        if len(res) == 0:
            raise
    except Exception, e:
        print >> sys.stderr, str(e)
        raise
Esempio n. 15
0
def UpdateGroup(conf,inputs,outputs):
    psycopg2.extensions.register_type(psycopg2.extensions.UNICODE)    
    if is_connected(conf):
        prefix=auth.getPrefix(conf)
        c = auth.getCon(conf)
        clause=""
        if inputs.keys().count("clause")>0:
            clause=inputs["clause"]["value"]
        try:
			group = json.loads(inputs["set"]["value"])
        except Exception,e:
            try:
                group = json.loads(inputs["group"]["value"])
            except Exception,e1:
                conf["lenv"]["message"] = zoo._("Invalid set parameter: ")+inputs["set"]["value"]+"\n"+str(e)+"\n"+str(e1)
                return zoo.SERVICE_FAILED
Esempio n. 16
0
def UpdateGroup(conf,inputs,outputs):
    psycopg2.extensions.register_type(psycopg2.extensions.UNICODE)    
    if is_connected(conf):
        prefix=auth.getPrefix(conf)
        c = auth.getCon(conf)
        clause=""
        if inputs.keys().count("clause")>0:
            clause=inputs["clause"]["value"]
        try:
			group = json.loads(inputs["set"]["value"])
        except Exception,e:
            try:
                group = json.loads(inputs["group"]["value"])
            except Exception,e1:
                conf["lenv"]["message"] = zoo._("Invalid set parameter: ")+inputs["set"]["value"]+"\n"+str(e)+"\n"+str(e1)
                return zoo.SERVICE_FAILED
Esempio n. 17
0
def loadContext(conf, inputs, outputs):
    con = auth.getCon(conf)
    prefix = auth.getPrefix(conf)
    con.connect()
    conn = con.conn
    cur = con.conn.cursor()
    name = inputs["name"]["value"]
    req = "SELECT ext,layers from " + prefix + "contexts where name = [_name_]"
    con.pexecute_req([req, {"name": {"value": name, "format": "s"}}])
    con.conn.commit()
    res = con.cur.fetchall()
    outputs["Result"]["value"] = json.dumps({
        "ext": res[0][0],
        "layers": res[0][1].split(',')
    })
    return zoo.SERVICE_SUCCEEDED
Esempio n. 18
0
def BasicRewrite(conf,inputs,outputs):
    if inputs["Query"].keys().count("fmimeType")==0 and inputs["Query"].keys().count("mimeType")>0:
        inputs["Query"]["fmimeType"]=inputs["Query"]["mimeType"]
    if inputs["Query"].keys().count("fmimeType")>0 and inputs["Query"]["fmimeType"].count("text/")==0:
        outputs["Result"]["value"]=inputs["Query"]["value"]
        outputs["Result"]["mimeType"]=inputs["Query"]["fmimeType"]
        res=outputs["Result"].pop("encoding")
    else:
        outputs["Result"]["mimeType"]="text/xml"
        c = auth.getCon(conf)
        prefix=auth.getPrefix(conf)
        sUrl=getUrl(conf,c,prefix,inputs["server"]["value"])
        #outputs["Result"]["value"]=inputs["Query"]["value"].replace(sUrl,conf["main"]["owsSecurityUrl"]+"?server="+inputs["server"]["value"]+"&token="+inputs["token"]["value"])
        outputs["Result"]["value"]=inputs["Query"]["value"].replace(sUrl,conf["main"]["owsSecurityUrl"]+inputs["token"]["value"]+"/"+inputs["server"]["value"]+"/").replace('<AccessConstraints>none</AccessConstraints>','<wms:AccessConstraints xmlns:wms="http://www.opengis.net/wms" xmlns:ows_security="http://www.opengis.net/security/1.0" xmlns:ows="http://www.opengis.net/ows/1.1">https://www.opengis.net/def/security/1.0/cc/wms130</wms:AccessConstraints>')
        print >> sys.stderr,'<wms:AccessConstraints xmlns:wms="http://www.opengis.net/wms" xmlns:ows_security="http://www.opengis.net/security/1.0" xmlns:ows="http://www.opengis.net/ows/1.1">https://www.opengis.net/def/security/1.0/cc/wms130</wms:AccessConstraints>'
        outputs["Result"]["mimeType"]=inputs["Query"]["fmimeType"]
    return zoo.SERVICE_SUCCEEDED
Esempio n. 19
0
def SecureResponse(conf,inputs,outputs):
    c = auth.getCon(conf)
    prefix=auth.getPrefix(conf)
    sUrl=getUrl(conf,c,prefix,inputs["server"]["value"])
    #print >> sys.stderr," ** "
    #print >> sys.stderr,inputs
    #print >> sys.stderr," ** "

    if sUrl is None:
        conf["lenv"]["message"]=zoo._("No server found.")
        return zoo.SERVICE_FAILED
    if inputs["Query"].keys().count("fmimeType")==0 and inputs["Query"].keys().count("mimeType")>0:
        inputs["Query"]["fmimeType"]=inputs["Query"]["mimeType"]
        outputs["Result"]["mimeType"]=inputs["Query"]["fmimeType"]
        if inputs["Query"]["fmimeType"]!="text/xml":
            outputs["Result"]["value"]=inputs["Query"]["value"]
            outputs["Result"]["mimeType"]=inputs["Query"]["fmimeType"]
            return zoo.SERVICE_SUCCEEDED
    vals=getEntities(c,prefix,inputs["service"]["value"],"GetCapabilities")
    if vals is not None:
        context = etree.iterparse(StringIO(inputs["Query"]["value"].replace('<?xml version="1.0" encoding="utf-8"?>\n','')), events=('end',), tag='{*}'+vals[0])
    else:
        context=[]
    lName="Name"
    toRemove=[]
    for event, elem in context:
        try:
            if inputs["service"]["value"]=="WPS":
                context0 = etree.iterparse(StringIO(etree.tostring(elem)), events=('end',), tag='{*}Identifier')
                lName="Identifier"
            else:
                context0 = etree.iterparse(StringIO(etree.tostring(elem)), events=('end',), tag='{*}Name')
            for event, elem in context0:
                print >> sys.stderr,elem.text.encode('utf-8')
                if not(checkEntityPriv(conf,c,prefix,inputs["server"]["value"],inputs["service"]["value"],elem.text.encode('utf-8'),"r",inputs["token"]["value"])):
                    toRemove+=[elem.text.encode('utf-8')]
        except Exception,e:
            print >> sys.stderr, e
            print >> sys.stderr, '%s <=> %s' % (elem.tag, elem.text)
        elem.clear()
        while elem.getprevious() is not None:
            del elem.getparent()[0]
Esempio n. 20
0
def UpdateUser(conf,inputs,outputs):
	if is_connected(conf):
		prefix=auth.getPrefix(conf)
		c = auth.getCon(conf)
		
		try:
			user = json.loads(inputs["set"]["value"])
               	except Exception,e:
			user={}
			print >> sys.stderr,inputs["set"]["value"]
                       	print >> sys.stderr,e
                       	conf["lenv"]["message"] = zoo._("invalid set parameter :")+inputs["set"]["value"]
                       	#return 4

		if inputs['id']["value"] == "NULL":
			userl=conf["senv"]["login"]
			if not(inputs.has_key("type")) or inputs["type"]["value"]!="delete":
				for (i,j) in user.items():
					if not manage_users.check_user_params(i,j):
						conf["lenv"]["message"] = 'Parametre %s incorrect'%(i)
						return 4
					if i=="login":
						userl=j
			if inputs.has_key("login"):
				userl=inputs["login"]["value"]
			if inputs.has_key("type") and inputs["type"]["value"]=="delete":
				try:
					c.cur.execute("DELETE FROM "+prefix+"user_group WHERE id_user=(select id from "+prefix+"users where login='******')")
				except Exception,e:
					print >> sys.stderr,e
					pass
				try:
					c.cur.execute("DELETE FROM indicateurs_favoris WHERE u_id=(select id from "+prefix+"users where login='******')")
				except Exception,e:
					print >> sys.stderr,e
					pass
				try:
					c.cur.execute("DELETE FROM "+prefix+"favoris WHERE u_id=(select id from "+prefix+"users where login='******')")
				except Exception,e:
					print >> sys.stderr,e
					pass
Esempio n. 21
0
def saveContext(conf,inputs,outputs):
    print >> sys.stderr,"DEBUG 0000"
    #conn = sqlite3.connect(conf['main']['dblink'])
    con=auth.getCon(conf)
    prefix=auth.getPrefix(conf)
    con.connect()
    cur = con.conn.cursor()
    newNameId=str(time.time()).split('.')[0]
    name=shortInteger.shortURL(int(newNameId))
    layers=""
    if inputs["layers"].has_key('length'):
        for i in inputs["layers"]["value"]:
            if layers!='':
                layers+=","
            layers+=i
    else:
            layers+=inputs["layers"]["value"]
    req="INSERT INTO "+prefix+"contexts (name,layers,ext) VALUES ([_name_],[_layers_],[_extent_])"
    con.pexecute_req([req,{"name":{"value":name,"format":"s"},"layers":{"value":layers,"format":"s"},"extent":{"value":inputs["extent"]["value"],"format":"s"}}])
    con.conn.commit()
    outputs["Result"]["value"]=conf["main"]["applicationAddress"]+"public/"+conf["senv"]["last_map"]+";c="+name
    return zoo.SERVICE_SUCCEEDED
Esempio n. 22
0
def saveContext(conf, inputs, outputs):
    print >> sys.stderr, "DEBUG 0000"
    #conn = sqlite3.connect(conf['main']['dblink'])
    con = auth.getCon(conf)
    prefix = auth.getPrefix(conf)
    con.connect()
    cur = con.conn.cursor()
    newNameId = str(time.time()).split('.')[0]
    name = shortInteger.shortURL(int(newNameId))
    layers = ""
    if inputs["layers"].has_key('length'):
        for i in inputs["layers"]["value"]:
            if layers != '':
                layers += ","
            layers += i
    else:
        layers += inputs["layers"]["value"]
    req = "INSERT INTO " + prefix + "contexts (name,layers,ext) VALUES ([_name_],[_layers_],[_extent_])"
    con.pexecute_req([
        req, {
            "name": {
                "value": name,
                "format": "s"
            },
            "layers": {
                "value": layers,
                "format": "s"
            },
            "extent": {
                "value": inputs["extent"]["value"],
                "format": "s"
            }
        }
    ])
    con.conn.commit()
    outputs["Result"][
        "value"] = conf["main"]["applicationAddress"] + "public/" + conf[
            "senv"]["last_map"] + ";c=" + name
    return zoo.SERVICE_SUCCEEDED
Esempio n. 23
0
def UpdateUser(conf, inputs, outputs):
    if is_connected(conf):
        prefix = auth.getPrefix(conf)
        c = auth.getCon(conf)

        try:
            user = json.loads(inputs["set"]["value"])
        except Exception, e:
            user = {}
            print >> sys.stderr, inputs["set"]["value"]
            print >> sys.stderr, e
            conf["lenv"]["message"] = zoo._(
                "invalid set parameter :") + inputs["set"]["value"]
            return 4

        if inputs['id']["value"] == "NULL":
            userl = conf["senv"]["login"]
            if not (inputs.has_key("type")
                    ) or inputs["type"]["value"] != "delete":
                for (i, j) in user.items():
                    if not manage_users.check_user_params(i, j):
                        conf["lenv"]["message"] = 'Parametre %s incorrect' % (
                            i)
                        return 4
                    if i == "login":
                        userl = j
            if inputs.has_key("login"):
                userl = inputs["login"]["value"].decode("utf-8")
            if inputs.has_key("type") and inputs["type"]["value"] == "delete":
                try:
                    c.cur.execute("DELETE FROM " + prefix +
                                  "users WHERE login='******'")
                except Exception, e:
                    print >> sys.stderr, e
                    pass
                c.conn.commit()
                tmpStr = zoo._('User succcessfully %s')
                tmpStr = tmpStr % (inputs["type"]["value"] + 'd')
                outputs["Result"]["value"] = tmpStr

                #outputs["Result"]["value"] = inputs["set"]["value"]
                return 3

            if c.update_user_by_login(user, userl):
                #outputs["Result"]["value"] = inputs["set"]["value"]
                tmpStr = zoo._('User succcessfully %s')
                tmpStr = tmpStr % (inputs["type"]["value"] + 'd')
                outputs["Result"]["value"] = tmpStr
                print >> sys.stderr, inputs["group"]["value"]
                if inputs.has_key(
                        "group") and inputs["group"]["value"] != "NULL":
                    print >> sys.stderr, inputs["group"]
                    try:
                        c.cur.execute(
                            "DELETE FROM " + prefix +
                            "user_group where id_user=(select id from " +
                            prefix + "users where login='******')")
                        c.con.commit()
                    except:
                        pass
                    if inputs["group"].has_key("length"):
                        for i in range(0, len(inputs["group"]["value"])):
                            linkGroupToUser(conf, c, prefix,
                                            inputs["group"]["value"][i],
                                            inputs["login"]["value"])
                    else:
                        linkGroupToUser(conf, c, prefix,
                                        inputs["group"]["value"],
                                        inputs["login"]["value"])
                return 3
            else:
                conf["lenv"]["message"] = zoo._("Update failed")
                return 4
Esempio n. 24
0
def getTableFeatures(conf, inputs, outputs):
    c = auth.getCon(conf)
    prefix = auth.getPrefix(conf)
    if c.dbtype != "PG":
        req = "PRAGMA table_info(" + inputs["table"]["value"] + ")"
    else:
        import datastores.postgis.pgConnection as pg
        req = pg.getDesc(c.cur,
                         auth.getPrefix(conf) + inputs["table"]["value"])
    res1 = c.cur.execute(req)
    res = c.cur.fetchall()
    fields = []
    pkey = 0
    pfield = "id"
    vfields = None
    if inputs.has_key("cols") and inputs["cols"]["value"] != "NULL":
        vfields = inputs["cols"]["value"].split(",")
    if vfields is None:
        for i in range(0, len(res)):
            fields += [{
                "name": res[i][1],
                "type": res[i][2],
                "pkey": res[i][4]
            }]
            if res[i][4] == 1:
                pkey = i
    else:
        for j in range(0, len(vfields)):
            for i in range(0, len(res)):
                if res[i][1] == vfields[j]:
                    fields += [{
                        "name": res[i][1],
                        "type": res[i][2],
                        "pkey": res[i][4]
                    }]
                if res[i][4] == 1 or res[i][3] == 'PRI':
                    pkey = i
                    pfield = res[i][1]
    req = "select count(*) from " + prefix + inputs["table"]["value"]
    req1 = "SELECT " + pfield + " from " + prefix + inputs["table"]["value"]
    res1 = c.cur.execute(req)
    res = c.cur.fetchall()
    if res != False:
        total = res[0][0]
    req = "select "
    if inputs.has_key("fields") and inputs["fields"]["value"] != "NULL":
        req += inputs["fields"]["value"]
    else:
        req += "*"
    req += " from " + prefix + inputs["table"]["value"]
    if inputs.has_key("clause") and inputs["clause"]["value"] != "NULL":
        req += " WHERE " + inputs["clause"]["value"]
        req1 += " WHERE " + inputs["clause"]["value"]
    if inputs.has_key("search") and inputs["search"][
            "value"] != "asc" and inputs["search"]["value"] != "desc":
        req += " WHERE "
        req1 += " WHERE "
        mfields = inputs["fields"]["value"].split(',')
        for i in range(0, len(mfields)):
            req+=mfields[i]+" LIKE '%"+inputs["search"]["value"]+"%' OR "+ \
              mfields[i]+" LIKE '"+inputs["search"]["value"]+"%' OR " +\
              mfields[i]+" LIKE '%"+inputs["search"]["value"]+"' "
            if i + 1 < len(mfields):
                req += " OR "
            req1+=mfields[i]+" LIKE '%"+inputs["search"]["value"]+"%' OR "+ \
              mfields[i]+" LIKE '"+inputs["search"]["value"]+"%' OR " +\
              mfields[i]+" LIKE '%"+inputs["search"]["value"]+"' "
            if i + 1 < len(mfields):
                req1 += " OR "
    if inputs.has_key(
            "sortname") and inputs["sortname"]["value"] != "NULL" and inputs[
                "sortname"]["value"] != "undefined" and inputs["sortorder"][
                    "value"] != "undefined":
        req += " ORDER BY " + inputs["sortname"]["value"] + " " + inputs[
            "sortorder"]["value"]
        req1 += " ORDER BY " + inputs["sortname"]["value"] + " " + inputs[
            "sortorder"]["value"]
    if inputs.has_key("limit") and inputs["limit"]["value"] != "NULL":
        req += " LIMIT " + inputs["limit"]["value"]
        req1 += " LIMIT " + inputs["limit"]["value"]
        if inputs.has_key("offset") and inputs["offset"]["value"] != "":
            req += " OFFSET " + inputs["offset"]["value"]
            req1 += " OFFSET " + inputs["offset"]["value"]
    else:
        req += " LIMIT 10"
        req1 += " LIMIT 10"
    res1 = c.cur.execute(req)
    res = c.cur.fetchall()
    resId1 = c.cur.execute(req1)
    resId = c.cur.fetchall()
    if res != False:
        rows = []
        for i in range(0, len(res)):
            res0 = []
            for k in range(0, len(res[i])):
                if res[i][k] is not None and fields[k]["type"].count(
                        "char") > 0:
                    try:
                        res0 += [res[i][k].encode("utf-8")]
                    except:
                        res0 += [res[i][k]]
                else:
                    res0 += [str(res[i][k])]
            rows += [{
                "id": resId[i][0],
                "group": c.get_groups_user_by_id(int(resId[i][0])),
                "cell": res0
            }]
        outputs["Count"]["value"] = str(total)
        outputs["Result"]["value"] = json.dumps({"total": total, "rows": rows})
        return zoo.SERVICE_SUCCEEDED
    else:
        print >> sys.stderr, "unable to run request"
        return zoo.SERVICE_FAILED
Esempio n. 25
0
def getTableContent(conf,inputs,outputs):
	c = auth.getCon(conf)
	prefix=auth.getPrefix(conf)
	if c.dbtype!="PG":
		req="PRAGMA table_info("+inputs["table"]["value"]+")"
	else:
		import datastores.postgis.pgConnection as pg
		req=pg.getDesc(c.cur,auth.getPrefix(conf)+inputs["table"]["value"])
	res1=c.cur.execute(req)
	res=c.cur.fetchall()
	print >> sys.stderr,res
	fields=[]
	pkey=0
	pfield="id"
	vfields=None
	if inputs.has_key("cols") and inputs["cols"]["value"]!="NULL":
                vfields=inputs["cols"]["value"].split(",")
	if vfields is None:
		for i in range(0,len(res)):
			fields+=[{"name": res[i][1],"type": res[i][2],"pkey": res[i][4]}]
			if res[i][4]==1:
				pkey=i
	else:
		for j in range(0,len(vfields)):
			for i in range(0,len(res)):
				if res[i][1]==vfields[j]:
					fields+=[{"name": res[i][1],"type": res[i][2],"pkey": res[i][4]}]
				if res[i][4]==1 or res[i][3]=='PRI':
					pkey=i
					pfield=res[i][1]
	req="select count(*) from "+prefix+inputs["table"]["value"]
	res1=c.cur.execute(req)
	res=c.cur.fetchall()
	if res!=False:
                total=res[0][0]
	req="select "
	if inputs.has_key("cols") and inputs["cols"]["value"]!="NULL":
                req+=inputs["cols"]["value"]
	else:
                req+="*"
	req+=" from "+prefix+inputs["table"]["value"]
	if inputs.has_key("clause") and inputs["clause"]["value"]!="NULL":
                req+=" WHERE "+inputs["clause"]["value"]
	if inputs.has_key("sortname") and inputs["sortname"]["value"]!="NULL" and inputs["sortname"]["value"]!="undefined" and inputs["sortorder"]["value"]!="undefined":
                req+=" ORDER BY "+inputs["sortname"]["value"]+" "+inputs["sortorder"]["value"]
	if inputs.has_key("limit") and inputs["limit"]["value"]!="NULL":
		req+=" LIMIT "+inputs["limit"]["value"]
                if inputs.has_key("page") and inputs["page"]["value"]!="":
			req+=" OFFSET "+str((int(inputs["page"]["value"])-1)*int(inputs["limit"]["value"]))
			page=inputs["page"]["value"]
	else:
                page=1
                req+=" LIMIT 10"
	res1=c.cur.execute(req)
	res=c.cur.fetchall()
	resId1=c.cur.execute("SELECT "+pfield+" from "+prefix+inputs["table"]["value"])
	resId=c.cur.fetchall()
	if res!=False:
                rows=[]
                for i in range(0,len(res)):
			res0=[]
			for k in range(0,len(res[i])):
				if res[i][k] is not None and fields[k]["type"].count("char")>0:
					try:
						res0+=[res[i][k].encode("utf-8")]
					except:
						res0+=[res[i][k]]
				else:
					res0+=[str(res[i][k])]
			rows+=[{"id": resId[i][0],"cell": res0}]
		outputs["Result"]["value"]=json.dumps({"page": page, "total": total,"rows": rows})
		return zoo.SERVICE_SUCCEEDED
	else:
                print >> sys.stderr,"unable to run request"
                return zoo.SERVICE_FAILED
Esempio n. 26
0
def UpdateUser(conf,inputs,outputs):
    if is_connected(conf):
        prefix=auth.getPrefix(conf)
        c = auth.getCon(conf)
		
        try:
            user = json.loads(inputs["set"]["value"])
        except Exception,e:
            user={}
            print >> sys.stderr,inputs["set"]["value"]
            print >> sys.stderr,e
            conf["lenv"]["message"] = zoo._("invalid set parameter :")+inputs["set"]["value"]
            return 4

        if inputs['id']["value"] == "NULL":
            userl=conf["senv"]["login"]
            if not(inputs.has_key("type")) or inputs["type"]["value"]!="delete":
                for (i,j) in user.items():
                    if not manage_users.check_user_params(i,j):
                        conf["lenv"]["message"] = 'Parametre %s incorrect'%(i)
                        return 4
                    if i=="login":
                        userl=j
            if inputs.has_key("login"):
                userl=inputs["login"]["value"].decode("utf-8")
            if inputs.has_key("type") and inputs["type"]["value"]=="delete":
                try:
                    c.cur.execute("DELETE FROM "+prefix+"users WHERE login='******'")
                except Exception,e:
                    print >> sys.stderr,e
                    pass
                c.conn.commit()
                tmpStr=zoo._('Group succcessfully %s')
                tmpStr=tmpStr % (inputs["type"]["value"]+'d')
                outputs["Result"]["value"]=tmpStr

                #outputs["Result"]["value"] = inputs["set"]["value"]
                return 3
				
            if c.update_user_by_login(user,userl):
                #outputs["Result"]["value"] = inputs["set"]["value"]
                tmpStr=zoo._('User succcessfully %s')
                tmpStr=tmpStr % (inputs["type"]["value"]+'d')
                outputs["Result"]["value"]=tmpStr
                print >> sys.stderr,inputs["group"]["value"]
                if inputs.has_key("group") and inputs["group"]["value"]!="NULL":
                    print >> sys.stderr,inputs["group"]
                    try:
                        c.cur.execute("DELETE FROM "+prefix+"user_group where id_user=(select id from "+prefix+"users where login='******')")
                        c.con.commit()
                    except:
                        pass
                    if inputs["group"].has_key("length"):
                        for i in range(0,len(inputs["group"]["value"])):
                            linkGroupToUser(conf,c,prefix,inputs["group"]["value"][i],inputs["login"]["value"])
                    else:
                        linkGroupToUser(conf,c,prefix,inputs["group"]["value"],inputs["login"]["value"])
                return 3
            else:
                conf["lenv"]["message"] = zoo._("Update failed")
                return 4