12 Ağustos 2010 Perşembe

Pardus 2010 Yaz Stajı 9. Gün

Misafir kullanıcı çalışmaları son hızda devam ederken öbür yandan da pam_python'un PiSi paketini oluşturdum. Kurarken karşılaştığım bir sorun olan libpython2.6.so.1'in bulunamaması için de bir yama yaptım.

Bu yama kaynak koddaki src/setup.py dosyasında libpython2.6.so.1 yerine libpython2.6.so.1.0 yapıyor. (aslında versiyonu sistemden alıyor)

Bu paket üzerinden kurulduğu zaman herhangi bir sorun olmadan pam_python'u kullanabiliyorsunuz.

Paketi oluşturduktan sonra yapılacak işlerden olan hata çözümleme modu yaratmakla başladım. Bunun için argv değişkeninin içerisinde debug var ise debugging değişkenini True yapmak en mantıklısı olacak diye düşünüp bu şekilde uyguladım.

Kod içerisinde de if(debugging) ile kontrol ederek eğer doğru ise hazırlamış olduğum log fonksiyonuna bir çıktı gönderiyor.

log fonksiyonu ise bu şekilde

def log(text):
sys.stdout.write(text)
sys.stdout.flush()

burda sys.stdout.write şeklinde yazmak en mantıklısı olacak çünkü eğer X açıkken yapılacak olursa bu işlemler print ya da başka fonksiyonlar işe yaramayabilir. Stdout ise her durumda işimize yarayacak bir şey. Tabi bu işlemler için de sys modülünü kullandığım için yukarıda import sys yapıyorum.

İçeride de loglama şu şekilde:

if(debugging):
log("Yazı")

kodda aşama aşama ilerlemeler bu şekilde yapılıyor.

Debugging işlemini hallettikten sonra da bir sonraki iş olarak os.system yerine subprocess.popen ile yapabileceklerimi belirleyip onları değiştirdim.

Bir de girilecek kullanıcı adı, ev dizini boyutu ve girebilecek en fazla kullanıcı sayısını tutmak için bir yapılandırma dosyası oluşturdum. Bunu da /etc/security/ nin içerisine koydum.

Dosya adı guestlogin.conf. Üzerinden değişkenleri almak için ConfigParser modülünü kullanıyorum. Kod ise aşağıdaki şekilde:

try:
config = ConfigParser.ConfigParser()
config.read('/etc/security/guestlogin.conf')
guest_name = config.get('guest', 'guestname')
guest_limit = config.getint('guest', 'guestlimit')
guest_home_dir_size = config.getint('guest', 'homedirsize')

except:
return pamh.PAM_AUTHINFO_UNAVAIL
guestlogin.conf dosyası ise aşağıdaki gibi:

[guest]
guestname = guest
guestlimit = 50
homedirsize = 100

Bu şekilde biraz daha esneklik kazandırmış olduk.

Şimdilik aklıma gelenler bunlar fakat projeye eklemeler yapılacak.

Hiç yorum yok: