Remove maintenance support.

(Doesn't work in most cases)
This commit is contained in:
2026-06-01 23:43:44 +08:00
parent ce21869440
commit 93016b9a42
+64 -64
View File
@@ -32,8 +32,8 @@ cf_config = {
"allowedBroadcastServer": [ "allowedBroadcastServer": [
], ],
"ddnsBroadcastCode": "code-here", "ddnsBroadcastCode": "code-here",
"maintenancePageDNS": "", # "maintenancePageDNS": "",
"maintenancePageURL": "" # "maintenancePageURL": ""
} }
@@ -57,7 +57,7 @@ class CloudflareHelper(Helper):
self.ip = None self.ip = None
# maintenance mode # maintenance mode
self.is_maintenance = False # self.is_maintenance = False
self.config = cf_config self.config = cf_config
self.allowed_broadcast_channels = {} self.allowed_broadcast_channels = {}
@@ -94,36 +94,36 @@ class CloudflareHelper(Helper):
) )
await message.channel.send(result) await message.channel.send(result)
@self.dc.handle_command("/cf:maintenance", help="Toggle maintenance mode") # @self.dc.handle_command("/cf:maintenance", help="Toggle maintenance mode")
async def enable_maintenance(client, message): # async def enable_maintenance(client, message):
guild = getattr(message, "guild", None) # guild = getattr(message, "guild", None)
if guild is None: # if guild is None:
await message.channel.send("This command can only be used in server channels.") # await message.channel.send("This command can only be used in server channels.")
return # return
#
if self.is_allowed_broadcast_server(guild.name): # if self.is_allowed_broadcast_server(guild.name):
if not self.is_maintenance: # if not self.is_maintenance:
self.is_maintenance = True # self.is_maintenance = True
self.update_ddns() # self.update_ddns()
await message.channel.send(f"Maintenance mode is enabled. Updating DDNS...") # await message.channel.send(f"Maintenance mode is enabled. Updating DDNS...")
else: # else:
self.is_maintenance = False # self.is_maintenance = False
self.update_ddns() # self.update_ddns()
await message.channel.send(f"Maintenance mode is disabled. Updating DDNS...") # await message.channel.send(f"Maintenance mode is disabled. Updating DDNS...")
else: # else:
await message.channel.send(f"Unsupported server: {guild.name}") # await message.channel.send(f"Unsupported server: {guild.name}")
#
@self.dc.handle_command("/cf:status-maintenance", help="Check status of maintenance mode") # @self.dc.handle_command("/cf:status-maintenance", help="Check status of maintenance mode")
async def check_maintenance(client, message): # async def check_maintenance(client, message):
guild = getattr(message, "guild", None) # guild = getattr(message, "guild", None)
if guild is None: # if guild is None:
await message.channel.send("This command can only be used in server channels.") # await message.channel.send("This command can only be used in server channels.")
return # return
#
if self.is_allowed_broadcast_server(guild.name): # if self.is_allowed_broadcast_server(guild.name):
await message.channel.send("Maintenance mode is on" if self.is_maintenance else "Maintenance mode is off") # await message.channel.send("Maintenance mode is on" if self.is_maintenance else "Maintenance mode is off")
else: # else:
await message.channel.send(f"Unsupported server: {guild.name}") # await message.channel.send(f"Unsupported server: {guild.name}")
class DCStream: class DCStream:
def __init__(self, helper): def __init__(self, helper):
@@ -233,20 +233,20 @@ class CloudflareHelper(Helper):
self.logger.error("An error occurred while getting DNS records: {}".format(e)) self.logger.error("An error occurred while getting DNS records: {}".format(e))
return return
maintenance_dns = self.get_maintenance_page_dns() # maintenance_dns = self.get_maintenance_page_dns()
start_maintenance = False # start_maintenance = False
#
if self.is_maintenance and maintenance_dns: # if self.is_maintenance and maintenance_dns:
self.logger.info("Maintenance mode is on. Redirecting support dns records to maintenance page...") # self.logger.info("Maintenance mode is on. Redirecting support dns records to maintenance page...")
start_maintenance = True # start_maintenance = True
elif self.is_maintenance: # elif self.is_maintenance:
self.logger.warning("Maintenance mode is on but maintenancePageDNS is not set yet. Ignoring...") # self.logger.warning("Maintenance mode is on but maintenancePageDNS is not set yet. Ignoring...")
for item in domains: for item in domains:
domain = item.get("name", None) domain = item.get("name", None)
proxied = item.get("proxied", False) proxied = item.get("proxied", False)
domain_type = item.get("type", "A") domain_type = item.get("type", "A")
allow_maintenance = item.get("allowMaintenance", False) # allow_maintenance = item.get("allowMaintenance", False)
if domain is None: if domain is None:
continue continue
@@ -255,23 +255,23 @@ class CloudflareHelper(Helper):
for record in dns_records: for record in dns_records:
name = record.get("name", None) name = record.get("name", None)
# record_type = record.get("type", None) record_type = record.get("type", None)
# if name == domain and record_type == domain_type: if name == domain and record_type == domain_type:
# record_id = record.get("id", None)
if name == domain:
record_id = record.get("id", None) record_id = record.get("id", None)
# if name == domain:
# record_id = record.get("id", None)
if record_id is None: if record_id is None:
self.logger.warning( self.logger.warning(
f"The domain {domain} ({domain_type}) does not in CF zone {self.config.get('zone', None)}") f"The domain {domain} ({domain_type}) does not in CF zone {self.config.get('zone', None)}")
continue continue
request_data = { request_data = {
"type": domain_type if not start_maintenance or not allow_maintenance else "CNAME", "type": domain_type,
"name": domain, "name": domain,
"content": self.ip if not start_maintenance or not allow_maintenance else maintenance_dns, "content": self.ip,
"ttl": 120, "ttl": 120,
"proxied": proxied "proxied": proxied
} }
@@ -295,21 +295,21 @@ class CloudflareHelper(Helper):
self.logger.error(f"Unable to update dns record for domain name {domain}: {e}") self.logger.error(f"Unable to update dns record for domain name {domain}: {e}")
continue continue
def get_maintenance_page_dns(self): # def get_maintenance_page_dns(self):
value = self.config.get("maintenancePageDNS") or self.config.get("maintenancePageURL") # value = self.config.get("maintenancePageDNS") or self.config.get("maintenancePageURL")
#
if value is None: # if value is None:
return None # return None
#
value = str(value).strip() # value = str(value).strip()
if value == "": # if value == "":
return None # return None
#
parsed = urlparse(value) # parsed = urlparse(value)
if parsed.hostname: # if parsed.hostname:
return parsed.hostname # return parsed.hostname
#
return value.rstrip("/") # return value.rstrip("/")
def parse_allowed_broadcast_channels(self): def parse_allowed_broadcast_channels(self):
raw = self.config.get("allowedBroadcastServer", []) raw = self.config.get("allowedBroadcastServer", [])