|
From: <di...@us...> - 2007-01-30 19:31:45
|
Revision: 340
http://safekeep.svn.sourceforge.net/safekeep/?rev=340&view=rev
Author: dimi
Date: 2007-01-30 11:31:43 -0800 (Tue, 30 Jan 2007)
Log Message:
-----------
Use the regular logging functions to complain about ignored files
Modified Paths:
--------------
safekeep/trunk/safekeep
Modified: safekeep/trunk/safekeep
===================================================================
--- safekeep/trunk/safekeep 2007-01-30 19:21:11 UTC (rev 339)
+++ safekeep/trunk/safekeep 2007-01-30 19:31:43 UTC (rev 340)
@@ -227,7 +227,7 @@
if os.path.isdir(cfg):
for ent in os.listdir(cfg):
if not ent.endswith(config_ext):
- print >> sys.stderr, 'Ignoring file %s not ending in %s' % (os.path.join(cfg, ent), config_ext)
+ warn('Ignoring file %s not ending in %s' % (os.path.join(cfg, ent), config_ext))
continue
filepath = os.path.join(cfg, ent)
if not os.path.isfile(filepath):
@@ -236,7 +236,7 @@
elif os.path.isfile(cfg):
cfgfiles.append(cfg)
else:
- print >> sys.stderr, 'Inaccessible configuration, ignoring:', cfg
+ warn('Inaccessible configuration, ignoring: %s' % cfg)
cfgs = {}
for filepath in cfgfiles:
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <di...@us...> - 2007-02-02 00:39:28
|
Revision: 357
http://safekeep.svn.sourceforge.net/safekeep/?rev=357&view=rev
Author: dimi
Date: 2007-02-01 16:39:25 -0800 (Thu, 01 Feb 2007)
Log Message:
-----------
Bump version to 0.9.0
Modified Paths:
--------------
safekeep/trunk/safekeep
Modified: safekeep/trunk/safekeep
===================================================================
--- safekeep/trunk/safekeep 2007-02-02 00:36:52 UTC (rev 356)
+++ safekeep/trunk/safekeep 2007-02-02 00:39:25 UTC (rev 357)
@@ -12,7 +12,7 @@
verbosity_level = 1
PROTOCOL = "1.0"
-VERSION = "0.2.0"
+VERSION = "0.9.0"
VEBOSITY_BY_CLASS = {'DBG': 3, 'INFO': 2, 'WARN': 1, 'ERR': 0}
######################################################################
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <di...@us...> - 2007-02-05 22:15:54
|
Revision: 396
http://safekeep.svn.sourceforge.net/safekeep/?rev=396&view=rev
Author: dimi
Date: 2007-02-05 14:15:51 -0800 (Mon, 05 Feb 2007)
Log Message:
-----------
Try to automatically create the data store dir if it doesn't exist.
Modified Paths:
--------------
safekeep/trunk/safekeep
Modified: safekeep/trunk/safekeep
===================================================================
--- safekeep/trunk/safekeep 2007-02-05 21:01:00 UTC (rev 395)
+++ safekeep/trunk/safekeep 2007-02-05 22:15:51 UTC (rev 396)
@@ -537,7 +537,15 @@
warn('Client %(id)s missing data key %(id)s, skipping' % cfg)
continue
- rdiff_logdir = os.path.join(cfg['dir'], 'rdiff-backup-data')
+ datadir = os.path.join(os.getcwd(), cfg['dir'])
+ if not os.path.isdir(datadir):
+ try:
+ os.makedirs(datadir)
+ except EnvironmentError, ex:
+ error('Can not create data store dir: %s' % datadir)
+ return
+
+ rdiff_logdir = os.path.join(datadir, 'rdiff-backup-data')
if cfg['retention'] and os.path.isdir(rdiff_logdir):
do_server_data_cleanup(cfg)
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <di...@us...> - 2007-02-05 22:35:08
|
Revision: 395
http://safekeep.svn.sourceforge.net/safekeep/?rev=395&view=rev
Author: dimi
Date: 2007-02-05 13:01:00 -0800 (Mon, 05 Feb 2007)
Log Message:
-----------
When adding lines to authorized_keys, always end the last line with a NL
Modified Paths:
--------------
safekeep/trunk/safekeep
Modified: safekeep/trunk/safekeep
===================================================================
--- safekeep/trunk/safekeep 2007-02-05 18:28:58 UTC (rev 394)
+++ safekeep/trunk/safekeep 2007-02-05 21:01:00 UTC (rev 395)
@@ -670,7 +670,7 @@
cmd = 'ssh %s@%s "umask 077; test -d .ssh || mkdir .ssh; cat >> .ssh/authorized_keys"' % (cfg['user'], cfg['host'])
debug(cmd)
pipe = os.popen(cmd, 'w')
- pipe.write('\n'.join([key[4] for key in new_keys]))
+ pipe.write('%s\n' % '\n'.join([key[4] for key in new_keys]))
if pipe.close():
error('Failed to deliver the keys to the client')
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <di...@us...> - 2007-02-12 05:28:19
|
Revision: 419
http://safekeep.svn.sourceforge.net/safekeep/?rev=419&view=rev
Author: dimi
Date: 2007-02-11 21:28:18 -0800 (Sun, 11 Feb 2007)
Log Message:
-----------
Up the version to 0.9.1
Modified Paths:
--------------
safekeep/trunk/safekeep
Modified: safekeep/trunk/safekeep
===================================================================
--- safekeep/trunk/safekeep 2007-02-12 05:27:30 UTC (rev 418)
+++ safekeep/trunk/safekeep 2007-02-12 05:28:18 UTC (rev 419)
@@ -12,7 +12,7 @@
verbosity_level = 1
PROTOCOL = "1.0"
-VERSION = "0.9.0"
+VERSION = "0.9.1"
VEBOSITY_BY_CLASS = {'DBG': 3, 'INFO': 2, 'WARN': 1, 'ERR': 0}
######################################################################
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <st...@us...> - 2007-02-23 22:23:16
|
Revision: 425
http://safekeep.svn.sourceforge.net/safekeep/?rev=425&view=rev
Author: stelian
Date: 2007-02-23 14:23:12 -0800 (Fri, 23 Feb 2007)
Log Message:
-----------
Do not stop if a single client fails.
Separate the client outputs to ease log reading.
Modified Paths:
--------------
safekeep/trunk/safekeep
Modified: safekeep/trunk/safekeep
===================================================================
--- safekeep/trunk/safekeep 2007-02-12 06:29:20 UTC (rev 424)
+++ safekeep/trunk/safekeep 2007-02-23 22:23:12 UTC (rev 425)
@@ -527,80 +527,84 @@
for cfg in cfgs.itervalues():
id = cfg['id']
if ids and id not in ids: continue
+ info('------------------------------------------------------------------')
info('Server backup starting for client: %s' % id)
- if cfg['host']:
- if not os.path.isfile(cfg['key_ctrl']):
- warn('Client %(id)s missing ctrl key %(key_ctrl)s, skipping' % cfg)
- continue
- if not os.path.isfile(cfg['key_data']):
- warn('Client %(id)s missing data key %(id)s, skipping' % cfg)
- continue
+ try:
+ if cfg['host']:
+ if not os.path.isfile(cfg['key_ctrl']):
+ raise Exception('Client %(id)s missing ctrl key %(key_ctrl)s' % cfg)
+ if not os.path.isfile(cfg['key_data']):
+ raise Exception('Client %(id)s missing data key %(id)s' % cfg)
- datadir = os.path.join(os.getcwd(), cfg['dir'])
- if not os.path.isdir(datadir):
- try:
- os.makedirs(datadir)
- except EnvironmentError, ex:
- error('Can not create data store dir: %s' % datadir)
- return
+ datadir = os.path.join(os.getcwd(), cfg['dir'])
+ if not os.path.isdir(datadir):
+ try:
+ os.makedirs(datadir)
+ except EnvironmentError, ex:
+ raise Exception('Can not create data store dir: %s' % datadir)
- rdiff_logdir = os.path.join(datadir, 'rdiff-backup-data')
- if cfg['retention'] and os.path.isdir(rdiff_logdir):
- do_server_data_cleanup(cfg)
+ rdiff_logdir = os.path.join(datadir, 'rdiff-backup-data')
+ if cfg['retention'] and os.path.isdir(rdiff_logdir):
+ do_server_data_cleanup(cfg)
- if cfg['host']:
- cmd = 'ssh -T -i %(key_ctrl)s -l %(user)s %(host)s safekeep --client' % cfg
- else:
- cmd = 'safekeep --client'
- debug('Run [' + cmd + ']')
- (cin, cout) = os.popen4(cmd)
+ if cfg['host']:
+ cmd = 'ssh -T -i %(key_ctrl)s -l %(user)s %(host)s safekeep --client' % cfg
+ else:
+ cmd = 'safekeep --client'
+ debug('Run [' + cmd + ']')
+ (cin, cout) = os.popen4(cmd)
- cin.write('ALOHA: %s, %s\n' % (PROTOCOL, VERSION))
- cin.flush()
- client_versions = do_server_getanswer(cout)
- do_server_compat(client_versions)
+ cin.write('ALOHA: %s, %s\n' % (PROTOCOL, VERSION))
+ cin.flush()
+ client_versions = do_server_getanswer(cout)
+ do_server_compat(client_versions)
- cin.write('CONFIG: %d: %s\n' % (len(cfg['text'].splitlines()), id))
- cin.write(cfg['text'] + '\n')
- cin.flush()
- do_server_getanswer(cout)
+ cin.write('CONFIG: %d: %s\n' % (len(cfg['text'].splitlines()), id))
+ cin.write(cfg['text'] + '\n')
+ cin.flush()
+ do_server_getanswer(cout)
- cin.write('SETUP\n')
- cin.flush()
- bdir = do_server_getanswer(cout)
+ cin.write('SETUP\n')
+ cin.flush()
+ bdir = do_server_getanswer(cout)
- if os.path.isdir(rdiff_logdir):
- rdiff_logpre = os.listdir(rdiff_logdir)
- else:
- rdiff_logpre = []
+ if os.path.isdir(rdiff_logdir):
+ rdiff_logpre = os.listdir(rdiff_logdir)
+ else:
+ rdiff_logpre = []
- backup_log = os.path.join(rdiff_logdir, 'backup.log')
- if os.path.isfile(backup_log):
- backup_marker = '=== Backup session on %s ===' % time.asctime()
- fbm = open(backup_log, 'a')
- fbm.write(backup_marker + '\n')
- fbm.close()
- else:
- backup_marker = None
+ backup_log = os.path.join(rdiff_logdir, 'backup.log')
+ if os.path.isfile(backup_log):
+ backup_marker = '=== Backup session on %s ===' % time.asctime()
+ fbm = open(backup_log, 'a')
+ fbm.write(backup_marker + '\n')
+ fbm.close()
+ else:
+ backup_marker = None
- do_server_rdiff(cfg, bdir)
+ do_server_rdiff(cfg, bdir)
- if os.path.isdir(rdiff_logdir):
- info_file(backup_log, backup_marker)
- rdiff_logpost = os.listdir(rdiff_logdir)
- for lfn in rdiff_logpost:
- if lfn.startswith('session_statistics.') and lfn.endswith('.data') and lfn not in rdiff_logpre:
- info_file(os.path.join(rdiff_logdir, lfn))
- else:
- warn('Log dir does not exist.')
+ if os.path.isdir(rdiff_logdir):
+ info_file(backup_log, backup_marker)
+ rdiff_logpost = os.listdir(rdiff_logdir)
+ for lfn in rdiff_logpost:
+ if lfn.startswith('session_statistics.') and lfn.endswith('.data') and lfn not in rdiff_logpre:
+ info_file(os.path.join(rdiff_logdir, lfn))
+ else:
+ warn('Log dir does not exist.')
- cin.write('CLEANUP %s\n' % bdir)
- cin.flush()
- do_server_getanswer(cout)
+ cin.write('CLEANUP %s\n' % bdir)
+ cin.flush()
+ do_server_getanswer(cout)
- debug('Server backup done for client: %s' % id)
+ debug('Server backup done for client: %s' % id)
+ except Exception, e:
+ error(e)
+ error('Skipping backup for client: %s' % id)
+
+ info('------------------------------------------------------------------')
debug('Server backup done')
def do_keys(cfgs, ids, status, dump, deploy):
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <di...@us...> - 2007-03-06 04:11:29
|
Revision: 430
http://safekeep.svn.sourceforge.net/safekeep/?rev=430&view=rev
Author: dimi
Date: 2007-03-05 20:11:28 -0800 (Mon, 05 Mar 2007)
Log Message:
-----------
Add (partial) support for a global configuration file:
/etc/safekeep/safekeep.conf
Allow the -c/--conf switch to take both global conf
file and client conf files as parameters.
Modified Paths:
--------------
safekeep/trunk/safekeep
Modified: safekeep/trunk/safekeep
===================================================================
--- safekeep/trunk/safekeep 2007-03-04 20:15:32 UTC (rev 429)
+++ safekeep/trunk/safekeep 2007-03-06 04:11:28 UTC (rev 430)
@@ -5,7 +5,7 @@
import xml.dom.minidom
import socket, smtplib
-config_dir = '/etc/safekeep/clients.d'
+config_dir = '/etc/safekeep'
config_ext = '.backup'
logbuf = []
is_client = False
@@ -784,6 +784,7 @@
mode = None
email = []
smtp = ''
+ cfgfile = None
cfglocs = []
verbosity = 0
clientid = None
@@ -792,7 +793,13 @@
keys_deploy = None
for o, a in opts:
if o in ('-c', '--conf'):
- cfglocs.append(a)
+ if os.path.isdir(a) or a.endswith(config_ext):
+ cfglocs.append(a)
+ elif cfgfile is None:
+ cfgfile = a
+ else:
+ error('A main configuration file can be specified only once!')
+ sys.exit(2)
elif o in ('-e', '--email'):
email.append(a)
elif o in ('-h', '--help'):
@@ -834,9 +841,14 @@
if mode is 'client' and cfglocs:
usage(2)
- if mode is not 'client' and len(cfglocs) == 0:
- cfglocs.append(config_dir)
- cfgs = parse_locs(cfglocs)
+ if mode is not 'client':
+ if cfgfile is None:
+ cfgfile = os.path.join(config_dir, 'safekeep.conf')
+ # FIXME: parse config file
+ if len(cfglocs) == 0:
+ locs = os.path.join(config_dir, 'clients.d')
+ cfglocs.append(locs)
+ cfgs = parse_locs(cfglocs)
if mode is 'client':
if len(args) > 0: usage(2)
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <di...@us...> - 2007-03-06 04:52:19
|
Revision: 431
http://safekeep.svn.sourceforge.net/safekeep/?rev=431&view=rev
Author: dimi
Date: 2007-03-05 20:52:16 -0800 (Mon, 05 Mar 2007)
Log Message:
-----------
Add simple Java-like properties parser
Modified Paths:
--------------
safekeep/trunk/safekeep
Modified: safekeep/trunk/safekeep
===================================================================
--- safekeep/trunk/safekeep 2007-03-06 04:11:28 UTC (rev 430)
+++ safekeep/trunk/safekeep 2007-03-06 04:52:16 UTC (rev 431)
@@ -108,6 +108,21 @@
if path.startswith('/'): return root + path
return os.path.join(root, path)
+def parse_prop_file(file):
+ props = {}
+ fin = open(file)
+ lines = fin.readlines()
+ fin.close()
+ for line in lines:
+ line = line.strip()
+ if len(line) is 0 or line[0] is '#': continue
+ if '=' in line:
+ key, value = line.split('=', 1)
+ props[key.strip()] = value.strip()
+ else:
+ props[line] = None
+ return props
+
######################################################################
# Configuration file parser
######################################################################
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <di...@us...> - 2007-03-06 21:07:26
|
Revision: 432
http://safekeep.svn.sourceforge.net/safekeep/?rev=432&view=rev
Author: dimi
Date: 2007-03-06 13:07:23 -0800 (Tue, 06 Mar 2007)
Log Message:
-----------
Read the email properties from the global config file
Modified Paths:
--------------
safekeep/trunk/safekeep
Modified: safekeep/trunk/safekeep
===================================================================
--- safekeep/trunk/safekeep 2007-03-06 04:52:16 UTC (rev 431)
+++ safekeep/trunk/safekeep 2007-03-06 21:07:23 UTC (rev 432)
@@ -798,7 +798,7 @@
mode = None
email = []
- smtp = ''
+ smtp = None
cfgfile = None
cfglocs = []
verbosity = 0
@@ -859,7 +859,11 @@
if mode is not 'client':
if cfgfile is None:
cfgfile = os.path.join(config_dir, 'safekeep.conf')
- # FIXME: parse config file
+ props = parse_prop_file(cfgfile)
+ if 'email.smtp.server' in props:
+ smtp = props['email.smtp.server']
+ if 'email.to' in props:
+ email = props['email.to'].split(',')
if len(cfglocs) == 0:
locs = os.path.join(config_dir, 'clients.d')
cfglocs.append(locs)
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <di...@us...> - 2007-03-07 19:07:41
|
Revision: 438
http://safekeep.svn.sourceforge.net/safekeep/?rev=438&view=rev
Author: dimi
Date: 2007-03-07 11:07:40 -0800 (Wed, 07 Mar 2007)
Log Message:
-----------
Look at the default configuration files only if they exist
Modified Paths:
--------------
safekeep/trunk/safekeep
Modified: safekeep/trunk/safekeep
===================================================================
--- safekeep/trunk/safekeep 2007-03-07 16:54:47 UTC (rev 437)
+++ safekeep/trunk/safekeep 2007-03-07 19:07:40 UTC (rev 438)
@@ -858,15 +858,17 @@
if mode is not 'client':
if cfgfile is None:
- cfgfile = os.path.join(config_dir, 'safekeep.conf')
- props = parse_prop_file(cfgfile)
+ propfile = os.path.join(config_dir, 'safekeep.conf')
+ if os.path.isfile(propfile): cfgfile = propfile
+ if cfgfile:
+ props = parse_prop_file(cfgfile)
if 'email.smtp.server' in props:
smtp = props['email.smtp.server']
if 'email.to' in props:
email = props['email.to'].split(',')
if len(cfglocs) == 0:
locs = os.path.join(config_dir, 'clients.d')
- cfglocs.append(locs)
+ if os.path.isdir(locs): cfglocs.append(locs)
cfgs = parse_locs(cfglocs)
if mode is 'client':
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <di...@us...> - 2007-03-07 19:13:28
|
Revision: 439
http://safekeep.svn.sourceforge.net/safekeep/?rev=439&view=rev
Author: dimi
Date: 2007-03-07 11:13:27 -0800 (Wed, 07 Mar 2007)
Log Message:
-----------
We always need a props dict
Modified Paths:
--------------
safekeep/trunk/safekeep
Modified: safekeep/trunk/safekeep
===================================================================
--- safekeep/trunk/safekeep 2007-03-07 19:07:40 UTC (rev 438)
+++ safekeep/trunk/safekeep 2007-03-07 19:13:27 UTC (rev 439)
@@ -862,6 +862,8 @@
if os.path.isfile(propfile): cfgfile = propfile
if cfgfile:
props = parse_prop_file(cfgfile)
+ else:
+ props = {}
if 'email.smtp.server' in props:
smtp = props['email.smtp.server']
if 'email.to' in props:
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <di...@us...> - 2007-03-08 20:53:36
|
Revision: 446
http://safekeep.svn.sourceforge.net/safekeep/?rev=446&view=rev
Author: dimi
Date: 2007-03-08 12:53:35 -0800 (Thu, 08 Mar 2007)
Log Message:
-----------
Look for the client .backup files in the clients.d
directory that is present in the same directory as
the safekeep.conf file.
Modified Paths:
--------------
safekeep/trunk/safekeep
Modified: safekeep/trunk/safekeep
===================================================================
--- safekeep/trunk/safekeep 2007-03-08 20:35:44 UTC (rev 445)
+++ safekeep/trunk/safekeep 2007-03-08 20:53:35 UTC (rev 446)
@@ -5,7 +5,7 @@
import getpass, pwd, xml.dom.minidom
import socket, smtplib
-config_dir = '/etc/safekeep'
+config_file = '/etc/safekeep/safekeep.conf'
config_ext = '.backup'
logbuf = []
is_client = False
@@ -872,12 +872,15 @@
usage(2)
if mode is not 'client':
- if cfgfile is None:
- propfile = os.path.join(config_dir, 'safekeep.conf')
- if os.path.isfile(propfile): cfgfile = propfile
- if cfgfile:
+ if cfgfile is None and os.path.isfile(config_file):
+ cfgfile = config_file
+ if cfgfile and os.path.isfile(cfgfile):
props = parse_prop_file(cfgfile)
else:
+ if cfgfile:
+ warn('Configuration file does not exist, skipping: %s' % cfgfile)
+ else:
+ cfgfile = config_file
props = {}
if 'backup.user' in props:
backup_user = props['backup.user']
@@ -888,7 +891,7 @@
if 'email.to' in props:
email = props['email.to'].split(',')
if len(cfglocs) == 0:
- locs = os.path.join(config_dir, 'clients.d')
+ locs = os.path.join(os.path.dirname(cfgfile), 'clients.d')
if os.path.isdir(locs): cfglocs.append(locs)
if backup_user and backup_user != work_user:
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <di...@us...> - 2007-03-09 01:04:12
|
Revision: 453
http://safekeep.svn.sourceforge.net/safekeep/?rev=453&view=rev
Author: dimi
Date: 2007-03-08 17:04:10 -0800 (Thu, 08 Mar 2007)
Log Message:
-----------
Fix typo
Modified Paths:
--------------
safekeep/trunk/safekeep
Modified: safekeep/trunk/safekeep
===================================================================
--- safekeep/trunk/safekeep 2007-03-09 01:03:28 UTC (rev 452)
+++ safekeep/trunk/safekeep 2007-03-09 01:04:10 UTC (rev 453)
@@ -899,7 +899,7 @@
if mode is not 'keys':
os.setregid(gid, gid)
os.setreuid(uid, uid)
- os.env['HOME'] = home_dir
+ os.environ['HOME'] = home_dir
else:
backup_user = work_user
home_dir = os.getenv('HOME', '/')
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <di...@us...> - 2007-03-09 02:35:11
|
Revision: 455
http://safekeep.svn.sourceforge.net/safekeep/?rev=455&view=rev
Author: dimi
Date: 2007-03-08 18:35:07 -0800 (Thu, 08 Mar 2007)
Log Message:
-----------
More tracing
Modified Paths:
--------------
safekeep/trunk/safekeep
Modified: safekeep/trunk/safekeep
===================================================================
--- safekeep/trunk/safekeep 2007-03-09 02:21:36 UTC (rev 454)
+++ safekeep/trunk/safekeep 2007-03-09 02:35:07 UTC (rev 455)
@@ -84,6 +84,7 @@
cout.close()
def send_notification(email, smtp):
+ info('Sending email to %s via %s' % (','.join(email), smtp)
global logbuf
hostname = socket.gethostname()
msg = 'From: SafeKeep@' + hostname + \
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <di...@us...> - 2007-03-13 05:20:36
|
Revision: 460
http://safekeep.svn.sourceforge.net/safekeep/?rev=460&view=rev
Author: dimi
Date: 2007-03-12 22:20:24 -0700 (Mon, 12 Mar 2007)
Log Message:
-----------
Fix typo
Modified Paths:
--------------
safekeep/trunk/safekeep
Modified: safekeep/trunk/safekeep
===================================================================
--- safekeep/trunk/safekeep 2007-03-09 17:48:55 UTC (rev 459)
+++ safekeep/trunk/safekeep 2007-03-13 05:20:24 UTC (rev 460)
@@ -84,7 +84,7 @@
cout.close()
def send_notification(email, smtp):
- info('Sending email to %s via %s' % (','.join(email), smtp)
+ info('Sending email to %s via %s' % (','.join(email), smtp))
global logbuf
hostname = socket.gethostname()
msg = 'From: SafeKeep@' + hostname + \
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <di...@us...> - 2007-03-13 05:25:30
|
Revision: 462
http://safekeep.svn.sourceforge.net/safekeep/?rev=462&view=rev
Author: dimi
Date: 2007-03-12 22:25:19 -0700 (Mon, 12 Mar 2007)
Log Message:
-----------
Bind / in /mnt/ instead of /tmp/ to avoid unpleasant situations with
cleanup scripts.
Modified Paths:
--------------
safekeep/trunk/safekeep
Modified: safekeep/trunk/safekeep
===================================================================
--- safekeep/trunk/safekeep 2007-03-13 05:22:34 UTC (rev 461)
+++ safekeep/trunk/safekeep 2007-03-13 05:25:19 UTC (rev 462)
@@ -417,7 +417,7 @@
do_client_dbdump(cfg)
if len(cfg['snaps']) > 0:
- bdir = tempfile.mkdtemp("-rbind", "safekeep-")
+ bdir = tempfile.mkdtemp("-rbind", "safekeep-", "/mnt")
ret = spawn(['mount', '--rbind', '/', bdir])
if ret:
warn('mount --rbind failed with %d, snapshotting will be disabled' % ret)
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <di...@us...> - 2007-03-13 05:52:50
|
Revision: 463
http://safekeep.svn.sourceforge.net/safekeep/?rev=463&view=rev
Author: dimi
Date: 2007-03-12 22:52:48 -0700 (Mon, 12 Mar 2007)
Log Message:
-----------
Make sure the paths to the SSH keys are absolute
Modified Paths:
--------------
safekeep/trunk/safekeep
Modified: safekeep/trunk/safekeep
===================================================================
--- safekeep/trunk/safekeep 2007-03-13 05:25:19 UTC (rev 462)
+++ safekeep/trunk/safekeep 2007-03-13 05:52:48 UTC (rev 463)
@@ -192,9 +192,13 @@
if host and not user:
user = 'root'
if host and not key_ctrl:
- key_ctrl = os.path.join(home_dir, '.ssh', 'safekeep-server-ctrl-key')
+ key_ctrl = os.path.join('.ssh', 'safekeep-server-ctrl-key')
if host and not key_data:
- key_data = os.path.join(home_dir, '.ssh', 'safekeep-server-data-key')
+ key_data = os.path.join('.ssh', 'safekeep-server-data-key')
+ if not os.path.isabs(key_ctrl):
+ key_ctrl = os.path.join(home_dir, key_ctrl)
+ if not os.path.isabs(key_data):
+ key_data = os.path.join(home_dir, key_data)
repo_el = backup_el.getElementsByTagName('repo')
dir = None
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <di...@us...> - 2007-03-13 18:42:05
|
Revision: 467
http://safekeep.svn.sourceforge.net/safekeep/?rev=467&view=rev
Author: dimi
Date: 2007-03-13 11:41:56 -0700 (Tue, 13 Mar 2007)
Log Message:
-----------
Make paths absolute only if they exist
Modified Paths:
--------------
safekeep/trunk/safekeep
Modified: safekeep/trunk/safekeep
===================================================================
--- safekeep/trunk/safekeep 2007-03-13 18:36:41 UTC (rev 466)
+++ safekeep/trunk/safekeep 2007-03-13 18:41:56 UTC (rev 467)
@@ -195,9 +195,9 @@
key_ctrl = os.path.join('.ssh', 'safekeep-server-ctrl-key')
if host and not key_data:
key_data = os.path.join('.ssh', 'safekeep-server-data-key')
- if not os.path.isabs(key_ctrl):
+ if key_ctrl and not os.path.isabs(key_ctrl):
key_ctrl = os.path.join(home_dir, key_ctrl)
- if not os.path.isabs(key_data):
+ if key_data and not os.path.isabs(key_data):
key_data = os.path.join(home_dir, key_data)
repo_el = backup_el.getElementsByTagName('repo')
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <di...@us...> - 2007-03-13 18:51:36
|
Revision: 468
http://safekeep.svn.sourceforge.net/safekeep/?rev=468&view=rev
Author: dimi
Date: 2007-03-13 11:51:21 -0700 (Tue, 13 Mar 2007)
Log Message:
-----------
Bump the version to 0.9.2
Modified Paths:
--------------
safekeep/trunk/safekeep
Modified: safekeep/trunk/safekeep
===================================================================
--- safekeep/trunk/safekeep 2007-03-13 18:41:56 UTC (rev 467)
+++ safekeep/trunk/safekeep 2007-03-13 18:51:21 UTC (rev 468)
@@ -16,7 +16,7 @@
base_dir = None
PROTOCOL = "1.0"
-VERSION = "0.9.1"
+VERSION = "0.9.2"
VEBOSITY_BY_CLASS = {'DBG': 3, 'INFO': 2, 'WARN': 1, 'ERR': 0}
######################################################################
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <di...@us...> - 2007-03-20 21:39:23
|
Revision: 479
http://safekeep.svn.sourceforge.net/safekeep/?rev=479&view=rev
Author: dimi
Date: 2007-03-20 13:40:48 -0700 (Tue, 20 Mar 2007)
Log Message:
-----------
Force data cleanup in case there have been multiple backups since the last invocation
Modified Paths:
--------------
safekeep/trunk/safekeep
Modified: safekeep/trunk/safekeep
===================================================================
--- safekeep/trunk/safekeep 2007-03-16 11:55:31 UTC (rev 478)
+++ safekeep/trunk/safekeep 2007-03-20 20:40:48 UTC (rev 479)
@@ -534,7 +534,7 @@
raise Exception('rdiff-backup returned %d' % ret)
def do_server_data_cleanup(cfg):
- args = ['rdiff-backup', '--remove-older-than', cfg['retention'], cfg['dir']]
+ args = ['rdiff-backup', '--force', '--remove-older-than', cfg['retention'], cfg['dir']]
ret = spawn(args)
if ret:
warn('Failed to cleanup old data, please fix the problem manually')
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <st...@us...> - 2007-04-23 21:01:39
|
Revision: 482
http://safekeep.svn.sourceforge.net/safekeep/?rev=482&view=rev
Author: stelian
Date: 2007-04-23 14:01:38 -0700 (Mon, 23 Apr 2007)
Log Message:
-----------
Fix the 'one letter per line' email problem.
Modified Paths:
--------------
safekeep/trunk/safekeep
Modified: safekeep/trunk/safekeep
===================================================================
--- safekeep/trunk/safekeep 2007-04-21 15:19:50 UTC (rev 481)
+++ safekeep/trunk/safekeep 2007-04-23 21:01:38 UTC (rev 482)
@@ -43,7 +43,7 @@
cutoff = VEBOSITY_BY_CLASS.get(cls.upper())
if cutoff is None: cutoff = 3
if is_client or verbosity_level >= cutoff:
- logbuf += msg
+ logbuf.append(msg)
if is_client:
print msg
sys.stdout.flush()
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <st...@us...> - 2007-04-25 07:51:18
|
Revision: 484
http://safekeep.svn.sourceforge.net/safekeep/?rev=484&view=rev
Author: stelian
Date: 2007-04-25 00:51:16 -0700 (Wed, 25 Apr 2007)
Log Message:
-----------
F i x d e b u g p r i n t o u t l i k e t h i s .
Modified Paths:
--------------
safekeep/trunk/safekeep
Modified: safekeep/trunk/safekeep
===================================================================
--- safekeep/trunk/safekeep 2007-04-24 13:27:45 UTC (rev 483)
+++ safekeep/trunk/safekeep 2007-04-25 07:51:16 UTC (rev 484)
@@ -76,7 +76,10 @@
log(msg, 'ERR')
def spawn(args):
- debug('Run [' + ' '.join(args) + ']')
+ if isinstance(args, str) or isinstance(args, unicode):
+ debug('Run [' + args + ']')
+ else:
+ debug('Run [' + ' '.join(args) + ']')
(cout, cin) = popen2.popen4(args)
cin.close()
for line in cout:
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <di...@us...> - 2007-04-27 05:05:06
|
Revision: 489
http://safekeep.svn.sourceforge.net/safekeep/?rev=489&view=rev
Author: dimi
Date: 2007-04-26 22:05:05 -0700 (Thu, 26 Apr 2007)
Log Message:
-----------
Release 0.9.3 is almost ready...
Modified Paths:
--------------
safekeep/trunk/safekeep
Modified: safekeep/trunk/safekeep
===================================================================
--- safekeep/trunk/safekeep 2007-04-27 05:04:03 UTC (rev 488)
+++ safekeep/trunk/safekeep 2007-04-27 05:05:05 UTC (rev 489)
@@ -16,7 +16,7 @@
base_dir = None
PROTOCOL = "1.0"
-VERSION = "0.9.2"
+VERSION = "0.9.3"
VEBOSITY_BY_CLASS = {'DBG': 3, 'INFO': 2, 'WARN': 1, 'ERR': 0}
######################################################################
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <di...@us...> - 2007-05-16 14:09:02
|
Revision: 498
http://safekeep.svn.sourceforge.net/safekeep/?rev=498&view=rev
Author: dimi
Date: 2007-05-16 07:09:01 -0700 (Wed, 16 May 2007)
Log Message:
-----------
Now we're 1.0
Modified Paths:
--------------
safekeep/trunk/safekeep
Modified: safekeep/trunk/safekeep
===================================================================
--- safekeep/trunk/safekeep 2007-05-16 14:07:52 UTC (rev 497)
+++ safekeep/trunk/safekeep 2007-05-16 14:09:01 UTC (rev 498)
@@ -16,7 +16,7 @@
base_dir = None
PROTOCOL = "1.0"
-VERSION = "0.9.3"
+VERSION = "1.0.0"
VEBOSITY_BY_CLASS = {'DBG': 3, 'INFO': 2, 'WARN': 1, 'ERR': 0}
######################################################################
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <di...@us...> - 2007-05-28 15:40:03
|
Revision: 512
http://safekeep.svn.sourceforge.net/safekeep/?rev=512&view=rev
Author: dimi
Date: 2007-05-28 08:39:57 -0700 (Mon, 28 May 2007)
Log Message:
-----------
Explicitely specify the shell to be used for running
the command, in case the default shell is not usable.
Suggested by Jeff Spaleta in order to avoid having
a valid shell for the safekeep account.
Modified Paths:
--------------
safekeep/trunk/safekeep
Modified: safekeep/trunk/safekeep
===================================================================
--- safekeep/trunk/safekeep 2007-05-27 14:53:12 UTC (rev 511)
+++ safekeep/trunk/safekeep 2007-05-28 15:39:57 UTC (rev 512)
@@ -662,7 +662,7 @@
info('%s: Key do not exist, generating it now: %s' % (id, privatekeyfile))
gencmd = 'ssh-keygen -q -b 1024 -t dsa -N "" -C "SafeKeep auto generated key at %s@%s" -f %s' % (backup_user, os.uname()[1], privatekeyfile)
if backup_user is not work_user:
- gencmd = 'su -c %s - %s' % (commands.mkarg(gencmd), backup_user)
+ gencmd = 'su -s /bin/sh -c %s - %s' % (commands.mkarg(gencmd), backup_user)
debug(gencmd)
if os.system(gencmd):
error('%s: Failed to generate key %s. Skipping client.' % (id, privatekeyfile))
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|