Welcome to mirror list, hosted at ThFree Co, Russian Federation.

check_paths.py « common « src - dev.gajim.org/gajim/gajim.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
blob: acf6c22cf8d0cd37342e843304fd5f413552ea87 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
## Contributors for this file:
## - Yann Le Boulanger <asterix@lagaule.org>
## - Nikos Kouremenos <kourem@gmail.com>
## - Travis Shirk <travis@pobox.com>
##
##	Copyright (C) 2003-2005 Gajim Team
##
## This program is free software; you can redistribute it and/or modify
## it under the terms of the GNU General Public License as published
## by the Free Software Foundation; version 2 only.
##
## 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 for more details.
##

import os
import sys
import stat

from common import gajim
import logger
import i18n

_ = i18n._
Q_ = i18n.Q_

from pysqlite2 import dbapi2 as sqlite # DO NOT MOVE ABOVE OF import gajim

def create_log_db():
	print _('creating logs database')
	con = sqlite.connect(logger.LOG_DB_PATH) 
	os.chmod(logger.LOG_DB_PATH, 0600) # rw only for us
	cur = con.cursor()
	# create the tables
	# kind can be
	# status, gcstatus, gc_msg, (we only recv for those 3),
	# single_msg_recv, chat_msg_recv, chat_msg_sent, single_msg_sent
	# to meet all our needs
	# logs.jid_id --> jids.jid_id but Sqlite doesn't do FK etc so it's done in python code
	# jids.jid text column will be JID if TC-related, room_jid if GC-related,
	# ROOM_JID/nick if pm-related.
	cur.executescript(
		'''
		CREATE TABLE jids(
			jid_id INTEGER PRIMARY KEY AUTOINCREMENT UNIQUE,
			jid TEXT UNIQUE,
			type INTEGER
		);
		
		CREATE TABLE logs(
			log_line_id INTEGER PRIMARY KEY AUTOINCREMENT UNIQUE,
			jid_id INTEGER,
			contact_name TEXT,
			time INTEGER,
			kind INTEGER,
			show INTEGER,
			message TEXT,
			subject TEXT
		);
		'''
		)

	con.commit()

def check_and_possibly_create_paths():
	LOG_DB_PATH = logger.LOG_DB_PATH
	VCARDPATH = gajim.VCARDPATH
	dot_gajim = os.path.dirname(VCARDPATH)
	if os.path.isfile(dot_gajim):
		print _('%s is file but it should be a directory') % dot_gajim
		print _('Gajim will now exit')
		sys.exit()
	elif os.path.isdir(dot_gajim):
		s = os.stat(dot_gajim)
		if s.st_mode & stat.S_IROTH: # others have read permission!
			os.chmod(dot_gajim, 0700) # rwx------

		if not os.path.exists(VCARDPATH):
			print _('creating %s directory') % VCARDPATH
			os.mkdir(VCARDPATH, 0700)
		elif os.path.isfile(VCARDPATH):
			print _('%s is file but it should be a directory') % VCARDPATH
			print _('Gajim will now exit')
			sys.exit()
		
		if not os.path.exists(LOG_DB_PATH):
			create_log_db()
		elif os.path.isdir(LOG_DB_PATH):
			print _('%s is directory but should be file') % LOG_DB_PATH
			print _('Gajim will now exit')
			sys.exit()
			
	else: # dot_gajim doesn't exist
		if dot_gajim: # is '' on win9x so avoid that
			print _('creating %s directory') % dot_gajim
			os.mkdir(dot_gajim, 0700)
		if not os.path.isdir(VCARDPATH):
			print _('creating %s directory') % VCARDPATH
			os.mkdir(VCARDPATH, 0700)
		if not os.path.isfile(LOG_DB_PATH):
			create_log_db()