Archive for September, 2008

Not Al Programı

Sunday, September 28th, 2008

Genelde yapılacak işleri kategorilendirmeden Google Not Defterine ya da bir not defterine yazar, işleri tamamladıkça üzerini çizerim. Yalnız bu işlem sonucunda geriye işe yaramayan kağıtlar kalır ve internet bağlantısı kesildiğinde Google Not Defterine erişememe gibi bir durum ortaya çıkar.

Bu ihtiyacımı gidermek için ufak, yapılacak işlerin listelendiği, bu işler yapıldığında kolayca silebileceğim bir uygulama geliştirdim. Bu uygulamaya http://notal.googlecode.com/ adresinden erişebilirsiniz. Kullanımı ile ilgilide bir video oluşturdum. Onuda buradan ya da aşağıdan izleyebilirsiniz.

Proje sitesine ilerleyen zamanlarda Pardus, Ubuntu ve Windows için kurulum ile ilgili paketleri ekleyeceğim. Şimdilik ya svn ile ya da tar.gz li paket ile programı çalıştırabilir ve kullanabilirsiniz.

Ayrıca listedeki herhangi bir nota iki defa tıklamanız halinde notun silindiğini belirtmemde fayda var :) .

Patron, Gedit İçin Proje Yöneticisi

Sunday, September 21st, 2008


Gedit Patron Eklentisi

Bir süredir Geany kullanıyordum. Proje yöneticisi çok yetersiz olduğundan(o kadar yetersiz ki kullanmaya bile tenezzül etmedim.) dosya karmaşası yaşanıyordu bazen. Yaklaşık iki haftadır Gedit ile ilgilenmeye başladım. Geçen gün eklentiler sayfasında kendime, projelerim üzerinde rahatça çalışmamı sağlayacak bir eklenti buldum. Yalnız eklenti çalışmadı. Eklenti klasörü içerisindeki dosyalara baktığımda, eklentinin Python ile yazılmış olduğunu gördüm. Ardındanda şu sayfa ile karşılaştım. Bende kullanışlı bir proje yöneticisi yazmak için işe koyuldum. Eklentiyede Patron adını verdim.

(more...)

Python İle Dosya Karakter Setini Öğrenme

Saturday, September 20th, 2008

Gedit için bir proje yöneticisi geliştiriyorum. Dosyaların açılması sırasında utf-8 harici karakter setli dosyalarda hata çıkıyordu. Gedit içerisinde(python eklentisi oluşturma için sunulan özelliklerde) sanırım otomatik olarak karakter setini tanıma gibi bir özellik yok. Araştırmalarım neticesinde chardet ile karşılaştım. Bir dosya ile kullanımına dair örneğe şu adresten erişebilirsiniz.

Şöyle bir yöntemde işe yarayabiliyor bazen.

 
import os
dosya = "/home/omer/test.py"
print os.popen("file %s" %(dosya)).read().replace("\n","").split(" ")[1].lower()
 

Düzeltme:
Gedit için python eklentisi yazarsanız aşağıdaki şekilde dosya açmanız işleri epey kolaylaştırıyor. Yukarıdaki modüle gerek kalmadan hallettim. Karakter farklılığını göz ardı ediyor, kendisi otomatik olarak tanıyıp dosyayı açıyor.

 
gedit.commands.load_uri(self._window,"file://%s" %(dosya))
 

Courier E-Posta Sunucusu İçin Hesap Ekleme Yardımcısı

Wednesday, September 3rd, 2008

Courier kullanıyorsanız, alan adı ve bu alan adı altına e-posta hesabı eklemek için konsolla epey uğraşmanız gerekiyor. Bu süreyi kısaltmak için Python ile yazılan aşağıdaki kodları kullanabilirsiniz. Gerçi web üzerinde courier bu tür işlemler için bir yardımcı araç sunmakta ancak pek uğraşmak istemedim. Bu şekilde daha basit ve en azından geri planda ne yapıldığını biliyorum. Şimdilik sadece ekleme işlemi yapılıyor.

 
#-*- coding: utf-8 -*-
 
import os
import sys
import glob
 
courier_global_home 	= "/home/postahesaplari"
courier_global_uid 	= 1004
courier_global_gid 	= 1004
courier_global_uid_name = "postahesaplari"
courier_global_gid_name = "postahesaplari"
courier_global_quota	= 10485760
 
def courier_add_domain(domain):
	print "Courier : %s ekleniyor..." %(domain)
	os.system("echo %s >> /etc/courier/hosteddomains/webadmin"
		%(domain))
	os.system("echo %s >> /etc/courier/esmtpacceptmailfor.dir/webadmin"
		%(domain))
	os.system("makehosteddomains")
	os.system("makesmtpaccess")
	os.system("mkdir %s/%s"
		%(courier_global_home,domain))
	courier_add_account(domain,"postmaster")
	print "Courier : %s eklendi." %(domain)
 
def courier_delete_domain(domain):
	print "Courier : %s siliniyor..." %(domain)
 
	domains = ""
	for i in open("/etc/courier/hosteddomains/webadmin","r"):
		if not i.replace("\n","")==domain:
			domains = "%s%s\n" %(domains,i.replace("\n",""))
	open("/etc/courier/hosteddomains/webadmin","w").write(domains)
	domains = ""
	for i in open("/etc/courier/esmtpacceptmailfor.dir/webadmin","r"):
		if not i.replace("\n","")==domain:
			domains = "%s%s\n" %(domains,i.replace("\n",""))
	open("/etc/courier/esmtpacceptmailfor.dir/webadmin","w").write(domains)
	os.system("makehosteddomains")
	os.system("makesmtpaccess")
 
	for i in glob.glob("%s/%s/*" %(courier_global_home,domain)):
		courier_delete_account(domain,i.split("/")[len(i.split("/"))-1])
	os.system("rm -Rf %s/%s" %(courier_global_home,domain))
 
	print "Courier : %s silindi." %(domain)
 
def courier_add_account(domain,account,name="",quota=-1):
	print "Courier : %s@%s ekleniyor..." %(account,domain)
	if quota==-1:
		quota = courier_global_quota
	os.system("userdb \"%s@%s\" set home=%s/%s/%s uid=%s gid=%s name=\"%s\" quota=%s"
		%(account,domain,courier_global_home,domain,account,courier_global_uid,courier_global_gid,name,quota))
	print "Courier : %s@%s parolasini giriniz." %(account,domain)
	os.system("userdbpw | userdb \"%s@%s\" set systempw"
		%(account,domain))
	os.system("makeuserdb")
	os.system("mkdir %s/%s/%s"
		%(courier_global_home,domain,account))
	os.system("maildirmake %s/%s/%s/Maildir"
		%(courier_global_home,domain,account))
	os.system("chown -R %s:%s %s/%s/%s"
		%(courier_global_uid_name,courier_global_gid_name,courier_global_home,domain,account))
	print "Courier : %s@%s eklendi." %(account,domain)
 
def courier_delete_account(domain,account):
	print "Courier : %s@%s siliniyor..." %(account,domain)
	os.system("userdb \"%s@%s\" del"
		%(account,domain))
	os.system("rm -Rf %s/%s/%s"
		%(courier_global_home,domain,account))
	os.system("makeuserdb")
	print "Courier : %s@%s silindi." %(account,domain)
 
if __name__=="__main__":
	mod 	= None
	domain 	= None
	account	= None
	name	= ""
	quota	= -1
 
	if "--mod" in sys.argv:
		mod 	= sys.argv[sys.argv.index("--mod")+1]
	if "--domain" in sys.argv:
		domain 	= sys.argv[sys.argv.index("--domain")+1]
	if "--account" in sys.argv:
		account = sys.argv[sys.argv.index("--account")+1]
	if "--name" in sys.argv:
		name	= sys.argv[sys.argv.index("--name")+1]
	if "--quota" in sys.argv:
		quota	= sys.argv[sys.argv.index("--quota")+1]
 
	if mod=="add_domain":
		courier_add_domain(domain)
 
	elif mod=="add_account":
		courier_add_account(domain,account,name,quota)
 
	elif mod=="delete_domain":
		courier_delete_domain(domain)
 
	elif mod=="delete_account":
		courier_delete_account(domain,account)
 

Alan adı ekleme işlemi:

 
# python courier.py --mod add_domain --domain alanadi.com
 

E-Posta hesabı ekleme işlemi:

 
# python courier.py --mod add_account --domain alanadi.com --account info
 

Alan adi silme işlemi:

 
# python courier.py --mod delete_domain --domain alanadi.com
 

E-Posta hesabı silme işlemi:

 
# python courier.py --mod delete_account --domain alanadi.com --account info
 

Plesk Üzerindeki E-Posta Hesaplarının Şifrelerinin Alınması

Tuesday, September 2nd, 2008

Eğer sunucunuzda plesk kullanıyorsanız aşağıdaki sql kodları ile e-posta hesaplarının şifrelerine ulaşabilirsiniz. Sitelerin taşınması sırasında epey işe yarıyor.

 
mysql > use psa;
mysql > SELECT accounts.id, concat(mail.mail_name,"@",domains.name), accounts.password,
mysql > domains.name FROM domains LEFT JOIN mail ON domains.id = mail.dom_id LEFT JOIN
mysql > accounts ON mail.account_id = accounts.id order by domains.name asc, mail.mail_name asc;