Gajim now answer to jabber:iq:version. Thanks nk for you get_os_info function
This commit is contained in:
parent
bac6ec88dd
commit
2640cac0f6
64
Core/core.py
64
Core/core.py
|
@ -33,12 +33,63 @@ from tempfile import *
|
||||||
from common import i18n
|
from common import i18n
|
||||||
_ = i18n._
|
_ = i18n._
|
||||||
|
|
||||||
|
VERSION = '0.6.1'
|
||||||
|
|
||||||
log = logging.getLogger('core.core')
|
log = logging.getLogger('core.core')
|
||||||
log.setLevel(logging.DEBUG)
|
log.setLevel(logging.DEBUG)
|
||||||
|
|
||||||
CONFPATH = "~/.gajim/config"
|
CONFPATH = "~/.gajim/config"
|
||||||
LOGPATH = os.path.expanduser("~/.gajim/logs/")
|
LOGPATH = os.path.expanduser("~/.gajim/logs/")
|
||||||
|
|
||||||
|
distro_info = {
|
||||||
|
'Arch Linux': '/etc/arch-release',\
|
||||||
|
'Aurox Linux': '/etc/aurox-release',\
|
||||||
|
'Conectiva Linux': '/etc/conectiva-release',\
|
||||||
|
'Debian GNU/Linux': '/etc/debian_release',\
|
||||||
|
'Debian GNU/Linux': '/etc/debian_version',\
|
||||||
|
'Fedora Linux': '/etc/fedora-release',\
|
||||||
|
'Gentoo Linux': '/etc/gentoo-release',\
|
||||||
|
'Mandrake Linux': '/etc/mandrake-release',\
|
||||||
|
'Slackware Linux': '/etc/slackware-release',\
|
||||||
|
'Slackware Linux': '/etc/slackware-version',\
|
||||||
|
'Solaris/Sparc': '/etc/release',\
|
||||||
|
'Sun JDS': '/etc/sun-release',\
|
||||||
|
'Novell SUSE Linux': '/etc/SuSE-release',\
|
||||||
|
'PLD Linux': '/etc/pld-release',\
|
||||||
|
'SUSE Linux': '/etc/SuSE-release',\
|
||||||
|
'Yellow Dog Linux': '/etc/yellowdog-release',\
|
||||||
|
# many distros use the /etc/redhat-release for compatibility
|
||||||
|
# so Redhat is the last
|
||||||
|
'Redhat Linux': '/etc/redhat-release'\
|
||||||
|
}
|
||||||
|
|
||||||
|
def get_os_info():
|
||||||
|
if os.name =='nt':
|
||||||
|
return 'windows'
|
||||||
|
elif os.name =='posix':
|
||||||
|
executable = 'lsb_release'
|
||||||
|
params = ' --id --codename --release --short'
|
||||||
|
for path in os.environ['PATH'].split(':'):
|
||||||
|
full_path_to_executable = os.path.join(path, executable)
|
||||||
|
if os.path.exists(full_path_to_executable):
|
||||||
|
command = executable + params
|
||||||
|
child_stdin, child_stdout = os.popen2(command)
|
||||||
|
output = child_stdout.readline().strip()
|
||||||
|
child_stdout.close()
|
||||||
|
child_stdin.close()
|
||||||
|
return output
|
||||||
|
# lsb_release executable not available, so parse files
|
||||||
|
for distro in distro_info:
|
||||||
|
path_to_file = distro_info[distro]
|
||||||
|
if os.path.exists(path_to_file):
|
||||||
|
fd = open(path_to_file)
|
||||||
|
text = fd.read().strip()
|
||||||
|
fd.close()
|
||||||
|
if path_to_file.endswith('version'):
|
||||||
|
text = distro + ' ' + text
|
||||||
|
return text
|
||||||
|
return ''
|
||||||
|
|
||||||
def XMLescape(txt):
|
def XMLescape(txt):
|
||||||
"Escape XML entities"
|
"Escape XML entities"
|
||||||
txt = txt.replace("&", "&")
|
txt = txt.replace("&", "&")
|
||||||
|
@ -574,6 +625,17 @@ class GajimCore:
|
||||||
(jid, identities, features))
|
(jid, identities, features))
|
||||||
con.discoverItems(jid)
|
con.discoverItems(jid)
|
||||||
|
|
||||||
|
def VersionCB(self, con, iq_obj):
|
||||||
|
f = iq_obj.getFrom()
|
||||||
|
iq_obj.setFrom(iq_obj.getTo())
|
||||||
|
iq_obj.setTo(f)
|
||||||
|
iq_obj.setType('result')
|
||||||
|
qp = iq_obj.getTag('query')
|
||||||
|
qp.insertTag('name').insertData('Gajim')
|
||||||
|
qp.insertTag('version').insertData(VERSION)
|
||||||
|
qp.insertTag('os').insertData(get_os_info())
|
||||||
|
con.send(iq_obj)
|
||||||
|
|
||||||
def connect(self, account):
|
def connect(self, account):
|
||||||
"""Connect and authentificate to the Jabber server"""
|
"""Connect and authentificate to the Jabber server"""
|
||||||
hostname = self.cfgParser.tab[account]['hostname']
|
hostname = self.cfgParser.tab[account]['hostname']
|
||||||
|
@ -623,6 +685,8 @@ class GajimCore:
|
||||||
common.jabber.NS_P_DISC_INFO)
|
common.jabber.NS_P_DISC_INFO)
|
||||||
con.registerHandler('iq',self.DiscoverInfoErrorCB,'error', \
|
con.registerHandler('iq',self.DiscoverInfoErrorCB,'error', \
|
||||||
common.jabber.NS_P_DISC_INFO)
|
common.jabber.NS_P_DISC_INFO)
|
||||||
|
con.registerHandler('iq',self.VersionCB,'get', \
|
||||||
|
common.jabber.NS_VERSION)
|
||||||
try:
|
try:
|
||||||
con.connect()
|
con.connect()
|
||||||
except IOError, e:
|
except IOError, e:
|
||||||
|
|
Loading…
Reference in New Issue