selamlar Python ile yazdığım uygulamaya key sistemi getirmek istiyorum. yani benim belirlediğim keyler ile giriş yapılabilicek. ama bu keyleri istediğim zaman iptal edebilmem lazım. ücretli yada ücretsiz destek olursanız sevinirim.
Aşağıya yazıyorum:
Anahtarların saklanacağı bir veritabanına ihtiyacın var ben burada sqlite veritabanını kullanacağım anahtarlar tablosu şöyle olabilir:
sql
CREATE TABLE keys (id INTEGER PRIMARY KEY AUTOINCREMENT, key TEXT, is_active INTEGER DEFAULT 1);
"key" sütunu anahtarları "is_active" sütunu ise anahtarın aktif olup olmadığını (1: aktif, 0: pasif) tutacaktır
python kodu ise şöyle olabilir:
import sqlite3
import hashlib
# SQLite veritabanı bağlantısı
conn = sqlite3.connect('keys.db')
c = conn.cursor()
# Anahtar tablosunu oluşturma
c.execute('''CREATE TABLE IF NOT EXISTS keys (id INTEGER PRIMARY KEY AUTOINCREMENT, key TEXT, is_active INTEGER DEFAULT 1)''')
# Anahtar ekleme
def add_key(key):
hashed_key = hashlib.sha256(key.encode()).hexdigest()
c.execute("INSERT INTO keys (key) VALUES (?)", (hashed_key,))
conn.commit()
# Anahtar silme
def delete_key(key):
hashed_key = hashlib.sha256(key.encode()).hexdigest()
c.execute("UPDATE keys SET is_active=0 WHERE key=?", (hashed_key,))
conn.commit()
# Anahtar doğrulama
def verify_key(key):
hashed_key = hashlib.sha256(key.encode()).hexdigest()
c.execute("SELECT * FROM keys WHERE key=? AND is_active=1", (hashed_key,))
result = c.fetchone()
if result:
return True
else:
return False
Anahtarları pasif hale getirmek için zaten delete_key fonksiyonunu kullanabilirsiniz ama anahtarların geçerlilik süresini kontrol etmek istersen keys tablosuna bir expiration_date sütunu ekleyebilirsin bu sütun anahtarın son kullanma tarihini tutacaktır daha sonra verify_key fonksiyonunda geçerlilik süresi dolan anahtarları doğrulamazsın
Burada geçerlilik süresini kontrol edebilir ve istediğin zaman pasifleştirebilirsin.:
import sqlite3
import hashlib
import datetime
# SQLite veritabanı bağlantısı
conn = sqlite3.connect('keys.db')
c = conn.cursor()
# Anahtar tablosunu oluşturma
c.execute('''CREATE TABLE IF NOT EXISTS keys (id INTEGER PRIMARY KEY AUTOINCREMENT, key TEXT, is_active INTEGER DEFAULT 1, expiration_date DATE)''')
# Anahtar ekleme
def add_key(key, expiration_date=None):
hashed_key = hashlib.sha256(key.encode()).hexdigest()
c.execute("INSERT INTO keys (key, expiration_date) VALUES (?, ?)", (hashed_key, expiration_date))
conn.commit()
# Anahtar silme
def delete_key(key):
hashed_key = hashlib.sha256(key.encode()).hexdigest()
c.execute("UPDATE keys SET is_active=0 WHERE key=?", (hashed_key,))
conn.commit()
# Anahtar doğrulama
def verify_key(key):
hashed_key = hashlib.sha256(key.encode()).hexdigest()
c.execute("SELECT * FROM keys WHERE key=? AND is_active=1 AND (expiration_date IS NULL OR expiration_date >= ?)", (hashed_key, datetime.date.today()))
result = c.fetchone()
if result:
return True
else:
return False