151 lines
4.2 KiB
Python
151 lines
4.2 KiB
Python
import os
|
|
import configparser
|
|
|
|
class config:
|
|
# Check if config.ini exists and load/generate it
|
|
def __init__(self, file):
|
|
"""
|
|
Initialize a config file object
|
|
|
|
:param file: file name
|
|
"""
|
|
self.config = configparser.ConfigParser()
|
|
self.default = True
|
|
self.fileName = file
|
|
if os.path.isfile(self.fileName):
|
|
# config.ini found, load it
|
|
self.config.read(self.fileName)
|
|
self.default = False
|
|
else:
|
|
# config.ini not found, generate a default one
|
|
self.generateDefaultConfig()
|
|
self.default = True
|
|
|
|
|
|
# Check if config.ini has all needed the keys
|
|
def checkConfig(self):
|
|
"""
|
|
Check is the config file has all required keys
|
|
|
|
:return: True if valid, False if not valid
|
|
"""
|
|
try:
|
|
# Try to get all the required keys
|
|
self.config.get("db","host")
|
|
self.config.get("db","username")
|
|
self.config.get("db","password")
|
|
self.config.get("db","database")
|
|
self.config.get("db","workers")
|
|
|
|
self.config.get("redis","host")
|
|
self.config.get("redis","port")
|
|
self.config.get("redis","database")
|
|
self.config.get("redis","password")
|
|
|
|
self.config.get("server","port")
|
|
self.config.get("server","threads")
|
|
self.config.get("server","gzip")
|
|
self.config.get("server","gziplevel")
|
|
self.config.get("server","cikey")
|
|
|
|
self.config.get("cheesegull", "apiurl")
|
|
self.config.get("cheesegull", "apikey")
|
|
|
|
self.config.get("debug","enable")
|
|
self.config.get("debug","packets")
|
|
self.config.get("debug","time")
|
|
|
|
self.config.get("sentry","enable")
|
|
self.config.get("sentry","banchodsn")
|
|
self.config.get("sentry","ircdsn")
|
|
|
|
self.config.get("discord","enable")
|
|
self.config.get("discord","boturl")
|
|
self.config.get("discord","devgroup")
|
|
|
|
self.config.get("datadog", "enable")
|
|
self.config.get("datadog", "apikey")
|
|
self.config.get("datadog", "appkey")
|
|
|
|
self.config.get("irc","enable")
|
|
self.config.get("irc","port")
|
|
self.config.get("irc","hostname")
|
|
|
|
self.config.get("localize","enable")
|
|
self.config.get("localize","ipapiurl")
|
|
|
|
self.config.get("custom", "config")
|
|
return True
|
|
except configparser.Error:
|
|
return False
|
|
|
|
def generateDefaultConfig(self):
|
|
"""
|
|
Write a default config file to disk
|
|
|
|
:return:
|
|
"""
|
|
# Open config.ini in write mode
|
|
f = open(self.fileName, "w")
|
|
|
|
# Set keys to config object
|
|
self.config.add_section("db")
|
|
self.config.set("db", "host", "localhost")
|
|
self.config.set("db", "username", "root")
|
|
self.config.set("db", "password", "")
|
|
self.config.set("db", "database", "ripple")
|
|
self.config.set("db", "workers", "4")
|
|
|
|
self.config.add_section("redis")
|
|
self.config.set("redis", "host", "localhost")
|
|
self.config.set("redis", "port", "6379")
|
|
self.config.set("redis", "database", "0")
|
|
self.config.set("redis", "password", "")
|
|
|
|
self.config.add_section("server")
|
|
self.config.set("server", "port", "5001")
|
|
self.config.set("server", "threads", "16")
|
|
self.config.set("server", "gzip", "1")
|
|
self.config.set("server", "gziplevel", "6")
|
|
self.config.set("server", "cikey", "changeme")
|
|
|
|
self.config.add_section("cheesegull")
|
|
self.config.set("cheesegull", "apiurl", "http://cheesegu.ll/api")
|
|
self.config.set("cheesegull", "apikey", "")
|
|
|
|
self.config.add_section("debug")
|
|
self.config.set("debug", "enable", "0")
|
|
self.config.set("debug", "packets", "0")
|
|
self.config.set("debug", "time", "0")
|
|
|
|
self.config.add_section("sentry")
|
|
self.config.set("sentry", "enable", "0")
|
|
self.config.set("sentry", "banchodsn", "")
|
|
self.config.set("sentry", "ircdsn", "")
|
|
|
|
self.config.add_section("discord")
|
|
self.config.set("discord", "enable", "0")
|
|
self.config.set("discord", "boturl", "")
|
|
self.config.set("discord", "devgroup", "")
|
|
|
|
self.config.add_section("datadog")
|
|
self.config.set("datadog", "enable", "0")
|
|
self.config.set("datadog", "apikey", "")
|
|
self.config.set("datadog", "appkey", "")
|
|
|
|
self.config.add_section("irc")
|
|
self.config.set("irc", "enable", "1")
|
|
self.config.set("irc", "port", "6667")
|
|
self.config.set("irc", "hostname", "ripple")
|
|
|
|
self.config.add_section("localize")
|
|
self.config.set("localize", "enable", "1")
|
|
self.config.set("localize", "ipapiurl", "http://ip.zxq.co")
|
|
|
|
self.config.add_section("custom")
|
|
self.config.set("custom", "config", "common/config.json")
|
|
|
|
# Write ini to file and close
|
|
self.config.write(f)
|
|
f.close()
|