!C99Shell v. 1.0 pre-release build #16!

Software: Apache/2.0.54 (Fedora). PHP/5.0.4 

uname -a: Linux mina-info.me 2.6.17-1.2142_FC4smp #1 SMP Tue Jul 11 22:57:02 EDT 2006 i686 

uid=48(apache) gid=48(apache) groups=48(apache)
context=system_u:system_r:httpd_sys_script_t
 

Safe-mode: OFF (not secure)

/usr/share/system-config-samba/   drwxr-xr-x
Free 3.9 GB of 27.03 GB (14.42%)
Home    Back    Forward    UPDIR    Refresh    Search    Buffer    Encoder    Tools    Proc.    FTP brute    Sec.    SQL    PHP-code    Update    Feedback    Self remove    Logout    


Viewing file:     sambaUserData.py (7.23 KB)      -rwxr-xr-x
Select action/file-type:
(+) | (+) | (+) | Code (+) | Session (+) | (+) | SDB (+) | (+) | (+) | (+) | (+) | (+) |
## sambaUserData.py - contains code to handle samba users
## Copyright (C) 2002, 2003 Red Hat, Inc.
## Copyright (C) 2002, 2003 Brent Fox <bfox@redhat.com>

## 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; 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., 675 Mass Ave, Cambridge, MA 02139, USA.

import string
import os
import gtk
import mainWindow

##
## I18N
##
from rhpl.translate import _, N_
import rhpl.translate as translate
domain = 'system-config-samba'
translate.textdomain (domain)
gtk.glade.bindtextdomain(domain)

class SambaUserData:
    def __init__(self, parent):
        self.ParentClass = parent

        self.samba_passwd_file = []
        self.samba_users_file = []

        self.readSmbPasswdFile()
        self.readSmbUsersFile()      

    def readSmbPasswdFile(self):
        #Let's check to see if smbpasswd exists
        path = '/etc/samba/smbpasswd'
        list = []

        if os.access(path, os.F_OK) == 1:
            #The file exists.  Now check to see if we can read it or not
            if os.access(path, os.R_OK) == 1:
                fd = open(path, 'r')
                for line in fd.readlines():
                    if string.strip(line)[0] != "#":
                        list.append(line)
                fd.close()

                self.samba_passwd_file = list
            else:
                raise RuntimeError, (_("You do not have permission to read %s." % path))


    def readSmbUsersFile(self):
        path = '/etc/samba/smbusers'

        if os.access(path, os.F_OK) == 1:
            #The file exists.  Now check to see if we can read it or not

            if os.access(path, os.R_OK) == 1:
                fd = open('/etc/samba/smbusers', 'r')
                lines = fd.readlines()
                fd.close()
                self.samba_users_file = lines
            else:
                raise RuntimeError, (_("Cannot read %s.  Program will now exit." % path))

    def getPasswdFile(self):
        return self.samba_passwd_file

    def getUsersFile(self):
        return self.samba_users_file

    def getUserDict(self):
        user_dict = {}
        for line in self.samba_users_file:
            tmp_line = string.strip(line)
            if tmp_line and tmp_line[0] != '#':
                tokens = string.split(tmp_line, '=')
                user_dict[string.strip(tokens[0])] = line
        return user_dict

    def writeSmbPasswdFile(self):
        path = '/etc/samba/smbpasswd'
        if os.access(path, os.W_OK) == 1:
            fd = open(path, 'w')
        elif os.access(path, os.F_OK) == 0:
            fd = open(path, 'w')
        else:
            dlg = gtk.MessageDialog(self.ParentClass.main_window, 0, gtk.MESSAGE_WARNING, gtk.BUTTONS_OK,
                                    (_("Cannot write to %s.  Program will now exit." % path)))
            dlg.set_position(gtk.WIN_POS_CENTER)
            dlg.set_modal(True)
            dlg.set_icon(mainWindow.iconPixbuf)
            dlg.run()
            dlg.destroy()
            if gtk.__dict__.has_key ("main_quit"):
               gtk.main_quit ()
            else:
                gtk.mainquit()
            raise RuntimeError, (_("You do not have permission to write to %s.  Program will now exit." % path))

        for line in self.samba_passwd_file:
            fd.write(line)

        fd.close()

    def writeSmbUsersFile(self):
        path = '/etc/samba/smbusers'
        if os.access(path, os.W_OK) == 1:
           fd = open(path, 'w')
        elif os.access(path, os.F_OK) == 0:
            fd = open(path, 'w')
        else:
            dlg = gtk.MessageDialog(self.ParentClass.main_window, 0, gtk.MESSAGE_WARNING, gtk.BUTTONS_OK,
                                    (_("Cannot write to %s.  Program will now exit." % path)))
            dlg.set_position(gtk.WIN_POS_CENTER)
            dlg.set_modal(True)
            dlg.set_icon(mainWindow.iconPixbuf)
            dlg.run()
            dlg.destroy()
            if gtk.__dict__.has_key ("main_quit"):
                gtk.main_quit ()
            else:
                gtk.mainquit()
            raise RuntimeError, (_("You do not have permission to write to %s.  Program will now exit." % path))
            
        for line in self.samba_users_file:
            fd.write(line)

        fd.close()
            
    def addUser(self, unix_name, windows_name, password):
        line = unix_name + " = " + windows_name + '\n'
        self.samba_users_file.append(line)
        self.writeSmbUsersFile()

        pipe = os.popen ('/usr/bin/smbpasswd -a -s "%s"' % (unix_name), "w")
        for i in (1, 2):
            pipe.write ("%s\n" % (password))
        pipe.close ()
        
        self.readSmbPasswdFile()
        self.readSmbUsersFile()

    def changePassword(self, unix_name, password):
        pipe = os.popen('/usr/bin/smbpasswd -s "%s"' % (unix_name), "w")
        for i in (1, 2):
            pipe.write ("%s\n" % (password))
        pipe.close ()

    def changeWindowsUserName(self, unix_name, windows_name):
        userDict = self.getUserDict()

        found = 0
        for line in self.samba_users_file:
            try:
                if line == userDict[unix_name]:
                    new_line = unix_name + " = " + windows_name + '\n'
                    self.samba_users_file[self.samba_users_file.index(line)] = new_line
                    found = 1
            except:
                pass

        if not found:
            #There's no current entry in smbusers
            line = unix_name + " = " + windows_name + '\n'
            if unix_name != windows_name:
                self.samba_users_file.append(line)
                self.writeSmbUsersFile()
                self.readSmbPasswdFile()
                self.readSmbUsersFile()

        self.writeSmbUsersFile()
        self.readSmbUsersFile()

    def deleteUser(self, name, line):
        #Remove the user's line from the smbpasswd file
        self.samba_passwd_file.remove(line)

        #Get a dict of the smbusers file
        user_dict = self.getUserDict()
        user_keys = user_dict.keys()

        #If this user had an entry in smbusers, remove that line
        if name in user_keys:
            self.samba_users_file.remove(user_dict[name])

        self.writeSmbUsersFile()
        self.writeSmbPasswdFile()
        self.readSmbUsersFile()
        self.readSmbPasswdFile()
        

    def getWindowsName(self, line):
        tokens = string.split(line, '=')
        windows_name = string.strip(tokens[1])
        return windows_name

    def userAlreadyExists(self, user):
        #Check to see if the user is already in the smbusers file
        self.readSmbPasswdFile()
        for line in self.samba_users_file:
            tokens = string.split(line)
            if tokens and user == tokens[0]:
                return 1

        return None

:: Command execute ::

Enter:
 
Select:
 

:: Search ::
  - regexp 

:: Upload ::
 
[ Read-Only ]

:: Make Dir ::
 
[ Read-Only ]
:: Make File ::
 
[ Read-Only ]

:: Go Dir ::
 
:: Go File ::
 

--[ c99shell v. 1.0 pre-release build #16 powered by Captain Crunch Security Team | http://ccteam.ru | Generation time: 0.0036 ]--