Przeglądaj źródła

Merge pull request #45 from anandpdoshi/master

Generate an escape character replace function for special chars in passwords and db_name
version-14
Nabin Hait 14 lat temu
rodzic
commit
f32c871945
3 zmienionych plików z 12 dodań i 5 usunięć
  1. +4
    -1
      py/webnotes/model/db_schema.py
  2. +5
    -1
      py/webnotes/utils/__init__.py
  3. +3
    -3
      py/webnotes/utils/backups.py

+ 4
- 1
py/webnotes/model/db_schema.py Wyświetl plik

@@ -357,8 +357,11 @@ class DbManager:
mysql_path = getattr(webnotes.defs, 'mysql_path', None) mysql_path = getattr(webnotes.defs, 'mysql_path', None)
mysql = mysql_path and os.path.join(mysql_path, 'mysql') or 'mysql' mysql = mysql_path and os.path.join(mysql_path, 'mysql') or 'mysql'
from webnotes.utils import make_esc
esc = make_esc('$ ')
try: try:
ret = os.system("%s -u root -p%s %s < %s"%(mysql, root_password.replace(" ", "\ "), target.replace("$", "\$"), source))
ret = os.system("%s -u root -p%s %s < %s"%(mysql, esc(root_password), esc(target), source))
except Exception,e: except Exception,e:
raise e raise e




+ 5
- 1
py/webnotes/utils/__init__.py Wyświetl plik

@@ -636,6 +636,10 @@ def get_file_timestamp(fn):
else: else:
return None return None



def make_esc(esc_chars):
"""
Function generator for Escaping special characters
"""
return lambda s: ''.join(['\\' + c if c in esc_chars else c for c in s])



+ 3
- 3
py/webnotes/utils/backups.py Wyświetl plik

@@ -24,11 +24,11 @@ class BackupGenerator:
If specifying db_file_name, also append ".sql.gz" If specifying db_file_name, also append ".sql.gz"
""" """
def __init__(self, db_name, user, password, db_file_name=None): def __init__(self, db_name, user, password, db_file_name=None):
self.db_name = db_name
self.db_name = db_name.replace('$', '\$')
self.user = user self.user = user
self.password = password self.password = password
self.db_file_name = db_file_name and db_file_name \ self.db_file_name = db_file_name and db_file_name \
or (os.path.join(backup_path, db_name + ".sql.gz"))
or (os.path.join(backup_path, self.db_name + ".sql.gz"))


def take_dump(self): def take_dump(self):
""" """
@@ -88,7 +88,7 @@ class BackupGenerator:
Also, a new backup will be available for download (if requested)\ Also, a new backup will be available for download (if requested)\
only after 24 hours.""" % {"file_url":file_url} only after 24 hours.""" % {"file_url":file_url}
datetime_str = datetime.fromtimestamp(os.stat(self.db_file_name).st_ctime)
datetime_str = datetime.fromtimestamp(os.stat(self.db_file_name.replace('\$', '$')).st_ctime)
subject = datetime_str.strftime("%d/%m/%Y %H:%M:%S") + """ - Backup ready to be downloaded""" subject = datetime_str.strftime("%d/%m/%Y %H:%M:%S") + """ - Backup ready to be downloaded"""
sendmail(recipients=recipient_list, msg=msg, subject=subject) sendmail(recipients=recipient_list, msg=msg, subject=subject)


Ładowanie…
Anuluj
Zapisz