[ Avaa Bypassed ]




Upload:

Command:

hmhc3928@3.149.231.194: ~ $
#
# shvfile.py
#
# Implementation of non-destructively reading/writing files containing
# only shell variable declarations and full-line comments.
#
# Copyright 1999 - 2005 Red Hat, Inc.
#
# This 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; either version 2 of the License, or
# (at your option) any later version.
#
# 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.
#
# You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software Foundation,
# Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
#

import os

def read(filename):
	shv = SHVFile()
	shv.open(filename, "r")
	shv.parse()
	return shv

def rcreate(filename):
	shv = SHVFile()
	shv.open(filename, "r+")
	shv.parse()
	return shv

# remove escaped characters in place
def unescape(s):
	if not s:
		return s
	slen = len(s)
	if (s[0] == "\"" or s[0] == "'") and s[0] == s[slen-1]:
		s = s[1:slen-1]
	i = 0
	while True:
		i = s.find("\\", i)
		if i < 0:
			break
		if i+1 >= len(s):
			s = s[0:i]
			break
		s = s[0:i] + s[i+1:]
		i += 1
	return s

# create a new string with all necessary characters escaped.
def escape(s):
	s = s.replace("\\", "\\\\")
	s = s.replace("\"", "\\\"")
	s = s.replace("'", "\\\'")
	s = s.replace("$", "\\\$")
	s = s.replace("~", "\\\~")
	s = s.replace("`", "\\\`")
	if s.find(" ") > 0 or s.find("\t") > 0:
		s = "\"" + s + "\""
	return s

class SHVFile:
	def __init__(self):
		self.filename = ""
		self.f = None
		self.variables = {}
	
	def open(self, filename, mode):
		self.filename = filename
		if mode == "r":
			self.f = open(filename, mode)
		else:
			try:
				self.f = open(filename, mode)
			except IOError:
				pass
		return

	def parse(self):
		if not self.f:
			return
		for line in self.f:
			vs = line.rstrip().split("=",1)
			if len(vs) < 2:
				continue
			self.variables[vs[0]] = unescape(vs[1])

	def write(self, perms):
		if not self.f:
			try:
				fd = os.open(self.filename, os.O_RDWR | os.O_CREAT, perms)
			except OSError:
				return
			try:
				self.f = os.fdopen(fd, "w")
			except IOError:
				os.close(fd)
				return
		try:
			self.f.seek(0)
			self.f.truncate()
			ordereditems = self.variables.items()
			ordereditems.sort(lambda x, y: cmp(x[0], y[0]))
			for name, value in ordereditems:
				self.f.write(name + "=" + escape(value) + "\n")
			self.f.flush()
			os.fsync(self.f.fileno())
		except IOError:
			# we cannot do much in case of error anyway
			pass

	def close(self):
		if self.f:
			try:
				self.f.close()
			except IOError:
				# we cannot do much in case of error anyway
				pass
			self.f = None			

	def getValue(self, name):
		try:
			return self.variables[name]
		except KeyError:
			return ""

	def getBoolValue(self, name):
		# return True if <key> resolves to any truth value (e.g. "yes", "y", "true")
		# return False if <key> resolves to any non-truth value (e.g. "no", "n", "false")
		# raise ValueError otherwise
		try:
			val = self.variables[name].lower()
		except KeyError:
			raise ValueError
		if val == "yes" or val == "true" or val == "t" or val == "y":
			return True
		if val == "no" or val == "false" or val == "f" or val == "n":
			return False
		raise ValueError

	def setValue(self, name, value):
		if not value:
			if name in self.variables:
				del self.variables[name]
		else:
			self.variables[name] = value

	def setBoolValue(self, name, value):
		if value:
			self.variables[name] = "yes"
		else:
			self.variables[name] = "no"

Filemanager

Name Type Size Permission Actions
.authconfig-tui.pyo.40009 File 39.98 KB 0644
.authconfig.pyo.40009 File 39.83 KB 0644
.authinfo.pyo.40009 File 109.54 KB 0644
.dnsclient.pyo.40009 File 11.38 KB 0644
.msgarea.pyo.40009 File 9.73 KB 0644
.shvfile.pyo.40009 File 4.45 KB 0644
authconfig-tui.py File 43.49 KB 0755
authconfig-tui.pyc File 39.98 KB 0644
authconfig-tui.pyo File 39.98 KB 0644
authconfig.py File 43.49 KB 0755
authconfig.pyc File 39.83 KB 0644
authconfig.pyo File 39.83 KB 0644
authinfo.py File 136.44 KB 0644
authinfo.pyc File 109.54 KB 0644
authinfo.pyo File 109.54 KB 0644
dnsclient.py File 10.14 KB 0644
dnsclient.pyc File 11.38 KB 0644
dnsclient.pyo File 11.38 KB 0644
msgarea.py File 10.4 KB 0644
msgarea.pyc File 9.73 KB 0644
msgarea.pyo File 9.73 KB 0644
shvfile.py File 3.69 KB 0644
shvfile.pyc File 4.45 KB 0644
shvfile.pyo File 4.45 KB 0644