Python projeye guncelleme gonderme ve kaynak kod şifreleme

Öncelikle herkese selamlar arkadaşlar. Python ile bir proje geliştiriyorum ve bu projeyi django ile oluşturduğum backend ile lisanslama sistemi yaparak kullanıcılara satışını gerçekleştireceğim. Uygulamanın bir de gui tarafı var tkinter ile oluşturduğum. Buraya kadar bir problem yok ve uygulama neredeyse bitme aşamasında ama son aşamalara geldikçe kafamda bazı soru işaretleri oluşmaya başladı. Ben uygulamayı kullanıcıya verdiğim zaman gerek bugları fixlemek gerek de yenilikler eklemek için otomatik güncelleştirme sistemi eklemek istiyorum. Dolayısıyla program her başlatıldığında fonksiyon github’ta bulunan private repoya gidip versiyon.txt adlı dosyadaki versiyonla uygulamanın mevcut versiyonunu karşılaştırıp ona göre indirme işlemlerini yapıp dosyaların değiştirilmesini sağlamak gibi bir düşünce var kafamda. Fakat ben uygulamayı pyinstaller ile tek bir .exe dosyasına dönüştürüp o şekilde kullanıcıya indirtmek istiyorum. Bununla birlikte pyarmour ile kaynak kodların en azından belli bir güvenlik seviyesine gelmesini sağlamak için de obfuscate işlemi gerçekleştirmek istiyorum.

Şu an kafamda birden fazla soru işareti oluştu bunlara cevap alabilmek ve istediğimi uygulayabilmek adına bilirkişilerin yardımına ihtiyacım var.

  Açıklamada da bahsettiğim gibi repodaki " versiyon.txt " ile uygulamanın mevcut versiyonunu karşılaştırıp güncelleme varsa bunu indirmek istediğimde benim repoya direkt olarak obfuscate edilip exeye dönüştürülmüş dosyayı mı koymak gerek ?

Bu konuda bana bir yol gösterebilirseniz sevinirim. Herkese iyi forumlar iyi çalışmalar diliyorum.

Proje yapısı şu şekilde;
image

proje “gui.py” ile başlatılıyor.

Merhaba.

Uygulama private bir repo’ya erişebiliyorsa uygulamaya sahip olan veya uygulamanın çalışacağı donanım üzerinde yetkiye sahip olan kişiler de bu repo’ya erişebilir. Bu noktada repo’nun private olması yanlış bir seçim gibi duruyor.

Anlattıklarınıza bakılırsa açık bir şekilde bunu yapmayı planlıyorsunuz zaten, “bunu mu yapmalıyım?” diye sormanızın sebebini anlamadım:

  • Peki bu durumda ne yapılmasını önerirsiniz? nasıl bir yol izlemeliyim (repo ile ilgili yorumunuz)?
  • Doğru bir yöntem mi değil mi diye fikir almak istiyorum. Bir şeyi doğrusunun ne olduğunu bilerek ve efektif bir şekilde yapmaya çalışıyorum.
1 Beğeni

Repo’yu public yapabilirsiniz. Repo’nun private olmamasında bir sakınca var mı?

Reponun private olup olmaması önemli değil aslında, reponun private olmasını bir güvenlik önlemi olarak görmemeniz lazım sadece. Herhangi birinin bilmesinin sorun oluşturacağı bilgilerin repo’da bulunmaması lazım.

(Burada daha çok “private” kavramı üzerine teorik olarak konuştum ama Github API’nın repository’e özel okuma izni verme gibi bir özelliği olmadığını düşününce repo’ya erişme şeklinize bağlı olarak repo’nun private olup olmaması oldukça önemli olabilir.)

Repo’nun private olması dışında gözüme batan bir şey olmadı. Lisanslama sisteminin ayrıntılarını da bilmediğim için yorum yapamıyorum.

1 Beğeni

Ya burada aslına bakarsanız kodun gizlenmesi vs. gibi olaylar çok önemli değil benim için ben bir proje geliştiriyorum ve bu noktada baştan sonra kafamda oluşturduğum yapıyı tamamlamaya çalışıyorum. İlk defa projeyi de yayınlayacağım için bunları da öğrenip uygulamak istiyorum. Bu noktada ise kafamda oturtamadığım veyahut doğru yöntem olup olmadığının kararını veremediğim düşüncelerime cevap aramaya çalışıp kendimi geliştirmeye çalışıyorum. Lisans konusunda ise django ile bir backend oluşturup django-rest-framework paketi ve django’nun custom user modeli ile birlikte satın alımının gerçekleştirildiği ip adres üzerine üyeliği tanımlıyorum. Üyelik seçimleri haftalık ve aylık olmak üzere iki farklı şekilde olabiliyor. Yalnızca o ip üzerinden uygulamaya erişim yapılabilecek. Fakat modem kapanıp açılması sonrasında ip adres değişikliği yaşanıyor bundan dolayı ip adresi yerine farklı bir adres seçmeliyim bu konuda araştırma yapıp o değişikliği sağlayacağım.

Yorumlarınız için de tekrar teşekkür ederim. Anladığım kadarıyla ham kodları private repository de tutabilir, kullanıcıya güncelleşttireceğim .exe dosyasını ve versiyon kontrolünü yapacağım versiyon.txt yi private repoya koymamın pek bir mantığı yok.

Adres işine hiç girmeden kullanıcılara bir profil açtırmanız daha kolay olmaz mı? Üyeliği kullanıcı ismi ve şifre üzerine tanımlarsınız, şifrenin unutulması durumu için eposta adresi de eklenebilir.

Evet.

2 Beğeni

Satın alan kişinin sadece kendi bilgisayarında kendisi uygulamayı kullanabilsin istiyorum. Diğer türlü aynı hesabı birden fazla kişi kullanabilir ki bu da istediğim bir şey değil.

Birden fazla kişi mi, aynı anda birden fazla kişi mi? İkincisini engellemek çoğu durumda mümkün. İlkini engellemek pek mümkün değil, o yüzden engellemeye çalışmanızı tavsiye etmem.

İkincisi için acaba önereceğiniz kaynak vs. var mıdır ? Ya da o yöntemi nasıl uygulayabilirim fikir verebilir misiniz ?

Kullanıcı giriş yaptığında tabloda bir key olusturabilir çıkış yaptığında ise keyi silebilirim. fakat oturum düzgün kapatılmadığı zamanda bu silme islemi gerceklesmezse eğer nasıl bir yol izlemem gerekir?

Burada IP üzerinden yapılmış bir kaç örnek var:

Bu biraz size kalmış. Düzgün kapatılmadığı sürece oturumların açık kaldığını varsayarsanız aynı anda iki kişinin kullanmasını daha başarılı bir şekilde engellersiniz ama kullanıcı için sorun oluşturabilir. Öbür türlü kullanıcı için daha rahat olabilir ama bu sefer bir online bir de offline kullanıcı aynı hesabı kullanabilir. Gerçi uygulamanız genel işlevi gereği offline kullanılamıyorsa bu problem ortadan kalkar.

1 Beğeni

İlginiz için teşekkür ederim.