Template
forked from CEN-RA/Plugin_QGIS
Mise à jour de sécurité
This commit is contained in:
@@ -13,12 +13,16 @@ import qgis
|
||||
|
||||
#include <QSettings>
|
||||
|
||||
import socket
|
||||
import os
|
||||
from .tools.resources import (
|
||||
plugin_path,
|
||||
pyperclip,
|
||||
resources_path,
|
||||
maj_verif,
|
||||
)
|
||||
pyperclip()
|
||||
|
||||
from .postgis_editor import Postgis_Editor
|
||||
from .postgis_creator import Postgis_Creator
|
||||
from .postgis_rename import Postgis_Rename
|
||||
@@ -26,6 +30,8 @@ from .about_form import AboutDialog
|
||||
|
||||
from PyQt5.QtCore import *
|
||||
|
||||
IPAddr=socket.gethostbyname(socket.gethostname())
|
||||
|
||||
class PgPostgis:
|
||||
def __init__(self):
|
||||
""" Constructor. """
|
||||
@@ -72,12 +78,30 @@ class PgPostgis:
|
||||
self.postgis_creator = QAction(icon, 'dossier_creator',None)
|
||||
self.toolBar.addAction(self.postgis_creator)
|
||||
self.postgis_creator.triggered.connect(self.open_creator)
|
||||
|
||||
self.postgis_creator.setEnabled(False)
|
||||
if IPAddr[0:11] == "100.100.100":
|
||||
self.postgis_creator.setEnabled(True)
|
||||
elif IPAddr[0:9] == "192.168.0":
|
||||
self.postgis_creator.setEnabled(True)
|
||||
elif IPAddr[0:9] == "192.168.1":
|
||||
self.postgis_creator.setEnabled(True)
|
||||
|
||||
if not self.action_editor:
|
||||
self.action_editor = Postgis_Editor()
|
||||
|
||||
self.postgis_editor = QAction(icon2, 'dossier_editor',None)
|
||||
self.toolBar.addAction(self.postgis_editor)
|
||||
self.postgis_editor.triggered.connect(self.open_editor)
|
||||
|
||||
self.postgis_editor.setEnabled(False)
|
||||
if IPAddr[0:11] == "100.100.100":
|
||||
self.postgis_editor.setEnabled(True)
|
||||
elif IPAddr[0:9] == "192.168.0":
|
||||
self.postgis_editor.setEnabled(True)
|
||||
elif IPAddr[0:9] == "192.168.1":
|
||||
self.postgis_editor.setEnabled(True)
|
||||
|
||||
if not self.action_rename:
|
||||
self.action_rename = Postgis_Rename()
|
||||
|
||||
@@ -85,14 +109,22 @@ class PgPostgis:
|
||||
self.toolBar.addAction(self.postgis_rename)
|
||||
self.postgis_rename.triggered.connect(self.open_rename)
|
||||
|
||||
if os.environ['USERNAME'] == 'tlaveille' or os.environ['USERNAME'] == 'lpoulin' or os.environ['USERNAME'] == 'rclement':
|
||||
self.action_rename.setEnabled(True)
|
||||
self.postgis_rename.setEnabled(True)
|
||||
self.postgis_rename.setVisible(1)
|
||||
else:
|
||||
self.action_rename.setEnabled(False)
|
||||
if os.environ['USERNAME'] == 'tlaveille' or os.environ['USERNAME'] == 'lpoulin' or os.environ['USERNAME'] == 'rclement':
|
||||
self.action_rename.setEnabled(True)
|
||||
self.postgis_rename.setEnabled(True)
|
||||
self.postgis_rename.setVisible(1)
|
||||
else:
|
||||
self.action_rename.setEnabled(False)
|
||||
self.postgis_rename.setEnabled(False)
|
||||
self.postgis_rename.setVisible(0)
|
||||
|
||||
self.postgis_rename.setEnabled(False)
|
||||
self.postgis_rename.setVisible(0)
|
||||
if IPAddr[0:11] == "100.100.100":
|
||||
self.postgis_rename.setEnabled(True)
|
||||
elif IPAddr[0:9] == "192.168.0":
|
||||
self.postgis_rename.setEnabled(True)
|
||||
elif IPAddr[0:9] == "192.168.1":
|
||||
self.postgis_rename.setEnabled(True)
|
||||
|
||||
def open_about_dialog(self):
|
||||
"""
|
||||
|
||||
@@ -12,7 +12,7 @@
|
||||
name=CenRa_POSTGIS
|
||||
qgisMinimumVersion=3.0
|
||||
description=Permet de crée un dossier dans la base PostGis
|
||||
version=2.6
|
||||
version=2.7
|
||||
author=Conservatoire d'Espaces Naturels de Rhône-Alpes
|
||||
email=si_besoin@cen-rhonealpes.fr
|
||||
|
||||
@@ -21,7 +21,7 @@ email=si_besoin@cen-rhonealpes.fr
|
||||
# Optional items:
|
||||
|
||||
# Uncomment the following line and add your changelog entries:
|
||||
changelog=<h2>CenRa_POSTGIS:</h2></br><p><h3>12/02/2025 - Version 2.6: </h3> - InDev:renomé les schema et table.</p></br><p><h3>04/02/2025 - Version 2.5: </h3> - Correctif bug création de couche.</p></br><p><h3>23/01/2025 - Version 2.4: </h3> - Correctif sur les pkey.</p></br><p><h3>22/01/2025 - Version 2.3: </h3> - Correctif sur la creation de projet.</p></br><p><h3>21/01/2025 - Version 2.2: </h3> - Correctif sur la longeur des nom.</p></br><p><h3>07/01/2025 - Version 2.1: </h3> - ByPass du certif ssl ci erreur.</p></br><p><h3>22/10/2024 - Version 2.0:</h3>- Refont du code.</p>
|
||||
changelog=<h2>CenRa_POSTGIS:</h2></br><p><h3>03/04/2025 - Version 2.7: </h3> - Mise a jour de securite.</p></br><p><h3>12/02/2025 - Version 2.6: </h3> - InDev:renomé les schema et table.</p></br><p><h3>04/02/2025 - Version 2.5: </h3> - Correctif bug création de couche.</p></br><p><h3>23/01/2025 - Version 2.4: </h3> - Correctif sur les pkey.</p></br><p><h3>22/01/2025 - Version 2.3: </h3> - Correctif sur la creation de projet.</p></br><p><h3>21/01/2025 - Version 2.2: </h3> - Correctif sur la longeur des nom.</p></br><p><h3>07/01/2025 - Version 2.1: </h3> - ByPass du certif ssl ci erreur.</p></br><p><h3>22/10/2024 - Version 2.0:</h3>- Refont du code.</p>
|
||||
|
||||
# tags are comma separated with spaces allowed
|
||||
tags=cenra, postgis, database
|
||||
|
||||
@@ -15,7 +15,7 @@ from PyQt5 import QtGui
|
||||
from qgis.core import *
|
||||
from qgis.core import QgsDataSourceUri
|
||||
|
||||
from .tools.PythonSQL import *
|
||||
from .tools.PythonSQL import login_base
|
||||
from .tools.SQLRequet import *
|
||||
|
||||
from .tools.resources import (
|
||||
@@ -76,15 +76,14 @@ class Postgis_Creator(QDialog, EDITOR_CLASS):
|
||||
if self.nom.text().find(car) != -1 :
|
||||
QMessageBox.warning(None, "Oups :", u"Le nom de dossier ne doit pas comporter de caractères spéciaux, ni d'espaces !\n\n\t" + self.nom.text().lower() )
|
||||
return
|
||||
first_conn = psycopg2.connect("host=" + host + " port=" + port + " dbname="+dbname+" user=first_cnx password=" + password)
|
||||
first_cur = first_conn.cursor(cursor_factory = psycopg2.extras.DictCursor)
|
||||
first_cur.execute("SELECT mdp_w, login_w FROM pg_catalog.pg_user t1, admin_sig.vm_users_sig t2 WHERE t2.oid = t1.usesysid AND (login_w = '" + os_user + "' OR login_w = '" + os_user + "')")
|
||||
res_ident = first_cur.fetchone()
|
||||
mdp = base64.b64decode(str(res_ident[0])).decode('utf-8')
|
||||
user = res_ident[1]
|
||||
con = psycopg2.connect("host=" + host + " port=" + port + " dbname="+dbname+" user=" + user + " password=" + mdp)
|
||||
cur = con.cursor(cursor_factory = psycopg2.extras.DictCursor)
|
||||
first_conn.close()
|
||||
account = login_base("account")
|
||||
user = account[0]
|
||||
mdp = account[1]
|
||||
host = account[2]
|
||||
port = account[3]
|
||||
dbname = account[4]
|
||||
cur = account[7]
|
||||
con = account[8]
|
||||
|
||||
SQL_schema = "CREATE SCHEMA " + schema + ";"
|
||||
SQL_GRANT_SCHEMA="GRANT CREATE, USAGE ON SCHEMA "+schema+" TO grp_qgis; GRANT CREATE, USAGE ON SCHEMA "+schema+" TO grp_sig;"
|
||||
|
||||
@@ -15,7 +15,7 @@ from PyQt5 import QtGui
|
||||
from qgis.core import *
|
||||
from qgis.core import QgsDataSourceUri
|
||||
|
||||
from .tools.PythonSQL import *
|
||||
from .tools.PythonSQL import login_base
|
||||
from .tools.SQLRequet import *
|
||||
|
||||
from .tools.resources import (
|
||||
@@ -52,16 +52,14 @@ class Postgis_Editor(QDialog, EDITOR_CLASS):
|
||||
### Outil Ajout de nouvelles couche a un dossier
|
||||
def raise_(self):
|
||||
self.activateWindow()
|
||||
first_conn = psycopg2.connect("host=" + host + " port=" + port + " dbname="+dbname+" user=first_cnx password=" + password)
|
||||
first_cur = first_conn.cursor(cursor_factory = psycopg2.extras.DictCursor)
|
||||
first_cur.execute("SELECT mdp_w, login_w FROM pg_catalog.pg_user t1, admin_sig.vm_users_sig t2 WHERE t2.oid = t1.usesysid AND (login_w = '" + os_user + "' OR login_w = '" + os_user + "')")
|
||||
res_ident = first_cur.fetchone()
|
||||
mdp = base64.b64decode(str(res_ident[0])).decode('utf-8')
|
||||
user = res_ident[1]
|
||||
|
||||
con = psycopg2.connect("host=" + host + " port=" + port + " dbname="+dbname+" user=" + user + " password=" + mdp)
|
||||
cur = con.cursor(cursor_factory = psycopg2.extras.DictCursor)
|
||||
first_conn.close()
|
||||
account = login_base("account")
|
||||
user = account[0]
|
||||
mdp = account[1]
|
||||
host = account[2]
|
||||
port = account[3]
|
||||
dbname = account[4]
|
||||
cur = account[7]
|
||||
con = account[8]
|
||||
# Creation de la liste des schemas de la base de donnees
|
||||
SQL = """WITH list_schema AS (
|
||||
select schemaname,'sig' as group from pg_catalog.pg_tables
|
||||
@@ -92,15 +90,14 @@ class Postgis_Editor(QDialog, EDITOR_CLASS):
|
||||
# See if OK was pressed
|
||||
if result == 1:
|
||||
#******************************debut script*********************************
|
||||
first_conn = psycopg2.connect("host=" + host + " port=" + port + " dbname="+dbname+" user=first_cnx password=" + password)
|
||||
first_cur = first_conn.cursor(cursor_factory = psycopg2.extras.DictCursor)
|
||||
first_cur.execute("SELECT mdp_w, login_w FROM pg_catalog.pg_user t1, admin_sig.vm_users_sig t2 WHERE t2.oid = t1.usesysid AND (login_w = '" + os_user + "' OR login_w = '" + os_user + "')")
|
||||
res_ident = first_cur.fetchone()
|
||||
mdp = base64.b64decode(str(res_ident[0])).decode('utf-8')
|
||||
user = res_ident[1]
|
||||
con = psycopg2.connect("host=" + host + " port=" + port + " dbname="+dbname+" user=" + user + " password=" + mdp)
|
||||
cur = con.cursor(cursor_factory = psycopg2.extras.DictCursor)
|
||||
first_conn.close()
|
||||
account = login_base("account")
|
||||
user = account[0]
|
||||
mdp = account[1]
|
||||
host = account[2]
|
||||
port = account[3]
|
||||
dbname = account[4]
|
||||
cur = account[7]
|
||||
con = account[8]
|
||||
|
||||
if self.schema.currentIndex() == -1 :
|
||||
QMessageBox.warning(None, "Oups :", "Veuillez choisir un nom de dossier.")
|
||||
|
||||
@@ -15,7 +15,7 @@ from PyQt5 import QtGui
|
||||
from qgis.core import *
|
||||
from qgis.core import QgsDataSourceUri
|
||||
|
||||
from .tools.PythonSQL import *
|
||||
from .tools.PythonSQL import login_base
|
||||
from .tools.SQLRequet import *
|
||||
|
||||
from .tools.resources import (
|
||||
@@ -39,15 +39,14 @@ from qgis.utils import iface
|
||||
EDITOR_CLASS = load_ui('CenRa_PostgisRename_base.ui')
|
||||
ch = [u"à", u"À", u"â", u"Â", u"ä", u"Ä", u"å", u"Å", u"ç", u"Ç", u"é", u"É", u"è", u"È", u"ê", u"Ê", u"ë", u"Ë", u"î", u"Î", u"ï", u"Ï", u"ô", u"Ô", u"ö", u"Ö", u"ù", u"Ù", u"û", u"Û", u"ü", u"Ü", u"ÿ", u"Ÿ", u"'", u"-", u" "]
|
||||
try:
|
||||
first_conn = psycopg2.connect("host=" + host + " port=" + port + " dbname="+dbname+" user=first_cnx password=" + password)
|
||||
first_cur = first_conn.cursor(cursor_factory = psycopg2.extras.DictCursor)
|
||||
first_cur.execute("SELECT mdp_w, login_w FROM pg_catalog.pg_user t1, admin_sig.vm_users_sig t2 WHERE t2.oid = t1.usesysid AND (login_w = '" + os_user + "' OR login_w = '" + os_user + "')")
|
||||
res_ident = first_cur.fetchone()
|
||||
mdp = base64.b64decode(str(res_ident[0])).decode('utf-8')
|
||||
user = res_ident[1]
|
||||
first_conn.close()
|
||||
con = psycopg2.connect("host=" + host + " port=" + port + " dbname="+dbname+" user=" + user + " password=" + mdp)
|
||||
cur = con.cursor(cursor_factory = psycopg2.extras.DictCursor)
|
||||
account = login_base("account")
|
||||
user = account[0]
|
||||
mdp = account[1]
|
||||
host = account[2]
|
||||
port = account[3]
|
||||
dbname = account[4]
|
||||
cur = account[7]
|
||||
con = account[8]
|
||||
except:
|
||||
print('')
|
||||
class Postgis_Rename(QDialog, EDITOR_CLASS):
|
||||
|
||||
@@ -1,33 +0,0 @@
|
||||
import sys
|
||||
import socket
|
||||
import os
|
||||
IPAddr=socket.gethostbyname(socket.gethostname())
|
||||
if IPAddr[0:11] == "100.100.100": #4269
|
||||
host = "100.100.100.11"
|
||||
port = "5432"
|
||||
dbname = "sig4269"
|
||||
sigdb="sig4269"
|
||||
refdb="ref_geo4269"
|
||||
password = "McVities"
|
||||
if IPAddr[0:9] == "192.168.0": #01
|
||||
host = "192.168.0.201"
|
||||
port = "5432"
|
||||
dbname = "sig01"
|
||||
sigdb="sig01"
|
||||
refdb="ref_geo01"
|
||||
password = "McVities"
|
||||
if IPAddr[0:9] == "192.168.1": #0726
|
||||
host = "192.168.1.201"
|
||||
port = "5432"
|
||||
dbname = "sig0726"
|
||||
sigdb="sig0726"
|
||||
refdb="ref_geo0726"
|
||||
password = "McVities"
|
||||
if sys.platform == 'linux':
|
||||
os_user = os.environ['USER']
|
||||
else:
|
||||
os_user = os.environ['USERNAME']
|
||||
if os_user == 'STAGE':
|
||||
os_user='stage'
|
||||
if os_user == 'Administrateur':
|
||||
os_user='stage'
|
||||
@@ -6,10 +6,10 @@ import tempfile
|
||||
import base64
|
||||
import psycopg2
|
||||
import psycopg2.extras
|
||||
import socket
|
||||
from os.path import abspath, join, pardir, dirname
|
||||
from qgis.core import QgsDataSourceUri
|
||||
from .PythonSQL import *
|
||||
|
||||
from .SQLRequet import *
|
||||
from qgis.PyQt import uic
|
||||
|
||||
__copyright__ = "Copyright 2019, 3Liz"
|
||||
@@ -108,26 +108,21 @@ def load_ui(*args):
|
||||
ui_class, _ = uic.loadUiType(resources_path("ui", *args))
|
||||
|
||||
return ui_class
|
||||
'''
|
||||
def login_base(take=None):
|
||||
from .PythonSQL import host,port,dbname,password,os_user
|
||||
first_conn = psycopg2.connect("host=" + host + " port=" + port + " dbname="+dbname+" user=first_cnx password=" + password)
|
||||
first_cur = first_conn.cursor(cursor_factory = psycopg2.extras.DictCursor)
|
||||
first_cur.execute("SELECT mdp_w, login_w FROM pg_catalog.pg_user t1, admin_sig.vm_users_sig t2 WHERE t2.oid = t1.usesysid AND (login_w = '" + os_user + "' OR login_w = '" + os_user + "')")
|
||||
res_ident = first_cur.fetchone()
|
||||
mdp = base64.b64decode(str(res_ident[0])).decode('utf-8')
|
||||
user = res_ident[1]
|
||||
|
||||
con = psycopg2.connect("host=" + host + " port=" + port + " dbname="+dbname+" user=" + user + " password=" + mdp)
|
||||
def pyperclip():
|
||||
IPAddr=socket.gethostbyname(socket.gethostname())
|
||||
dst = abspath(abspath(join(plugin_path(), "CenRa_POSTGIS\\tools\\")))
|
||||
if IPAddr[0:11] == "100.100.100": #4269
|
||||
src = '\\\\100.100.100.100\\nuage\\SI_Systeme d information\\Z_QGIS\\PLUGIN\\PythonSQL.py'
|
||||
if IPAddr[0:9] == "192.168.0": #01
|
||||
src = '\\\\100.100.100.100\\nuage\\SI_Systeme d information\\Z_QGIS\\PLUGIN\\PythonSQL.py'
|
||||
if IPAddr[0:9] == "192.168.1": #0726
|
||||
src = '\\\\100.100.100.100\\nuage\\SI_Systeme d information\\Z_QGIS\\PLUGIN\\PythonSQL.py'
|
||||
try:
|
||||
shutil.copy(src, dst)
|
||||
except:
|
||||
print('404')
|
||||
|
||||
cur = con.cursor(cursor_factory = psycopg2.extras.DictCursor)
|
||||
first_conn.close()
|
||||
|
||||
if take:
|
||||
return cur,con
|
||||
else:
|
||||
return cur
|
||||
'''
|
||||
def send_issues(url,titre,body,labels):
|
||||
import requests
|
||||
import json
|
||||
@@ -234,7 +229,7 @@ def create_contour(self,schema,cur,con,host ,port ,dbname ,user ,mdp):
|
||||
uri.setDataSource(schema, tablename, geom)
|
||||
|
||||
layer = self.iface.addVectorLayer(uri.uri(), tablename_qgis, "postgres")
|
||||
def create_travaux(self,schema,cur,con,host ,port ,dbname ,user ,mdp):
|
||||
def create_travaux(self,schema,cur,con,host,port,dbname,user,mdp):
|
||||
### Creation de la table travaux prevus
|
||||
if self.couche_travaux_prevus.isChecked():
|
||||
#**********Poly
|
||||
|
||||
Reference in New Issue
Block a user