reids 域名添加 添加时间映射

This commit is contained in:
huangzhenpc
2025-03-01 11:11:44 +08:00
parent 6d9293cb9d
commit c5d8533fad
2 changed files with 34 additions and 12 deletions

View File

@@ -118,15 +118,15 @@ sudo systemctl start email-system
}
```
- **获取当前允许的域名列表**:
- **获取当前允许的域名及其创建时间**:
- **请求方法**: `GET`
- **请求路径**: `/allowed_domains/list`
- **成功响应**:
```json
[
"nosqli.com",
"email.nosqli.com"
]
{
"email.nosqli.com": "2025-02-26T19:03:53.838745",
"tw.nosqli.com": "2025-02-26T19:05:00.123456"
}
```
## 日志记录

View File

@@ -260,10 +260,13 @@ def extract_code_from_body(body):
def add_allowed_domain(domain):
"""添加允许的域名"""
"""添加允许的域名并记录创建时间"""
try:
redis_client.sadd('allowed_domains', domain)
logger.info(f'Added allowed domain: {domain}')
timestamp = datetime.now().isoformat()
redis_client.rpush('allowed_domains_list', domain) # 添加到列表
redis_client.hset(f'domain:{domain}', 'created_at', timestamp) # 记录创建时间
redis_client.hset(f'domain_time:{domain}', 'timestamp', timestamp) # 记录时间
logger.info(f'Added allowed domain: {domain} with timestamp: {timestamp}')
except Exception as e:
logger.error(f'Error adding allowed domain: {e}')
@@ -272,16 +275,35 @@ def remove_allowed_domain(domain):
"""删除允许的域名"""
try:
redis_client.srem('allowed_domains', domain)
redis_client.delete(f'domain_time:{domain}') # 删除时间记录
logger.info(f'Removed allowed domain: {domain}')
except Exception as e:
logger.error(f'Error removing allowed domain: {e}')
def get_allowed_domains():
"""获取当前允许的域名列表"""
"""获取当前允许的域名"""
try:
domains = redis_client.smembers('allowed_domains')
return [domain.decode() for domain in domains]
domains = redis_client.lrange('allowed_domains_list', 0, -1)
domain_list = []
for domain in domains:
domain_list.append(domain.decode())
return domain_list
except Exception as e:
logger.error(f'Error fetching allowed domains: {e}')
return []
def get_allowed_domains_for_time():
"""获取当前允许的域名及其创建时间,按时间排序"""
try:
domains = redis_client.lrange('allowed_domains_list', 0, -1)
domain_info = {}
for domain in domains:
domain = domain.decode()
created_at = redis_client.hget(f'domain_time:{domain}', 'timestamp')
domain_info[domain] = created_at.decode() if created_at else None
return domain_info
except Exception as e:
logger.error(f'Error fetching allowed domains: {e}')
return {}