This repository has been archived on 2022-02-23. You can view files and clone it, but cannot push or open issues or pull requests.
lets/helpers/config.py

149 lines
4.2 KiB
Python

import os
import configparser
class config:
"""
config.ini object
config -- list with ini data
default -- if true, we have generated a default config.ini
"""
config = configparser.ConfigParser()
fileName = "" # config filename
default = True
# Check if config.ini exists and load/generate it
def __init__(self, __file):
"""
Initialize a config object
__file -- filename
"""
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 if this config has the required keys
return -- True if valid, False if not
"""
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","host")
self.config.get("server","port")
self.config.get("server", "debug")
self.config.get("server", "beatmapcacheexpire")
self.config.get("server", "serverurl")
self.config.get("server", "banchourl")
self.config.get("server", "threads")
self.config.get("server", "apikey")
self.config.get("sentry","enable")
self.config.get("sentry","dsn")
self.config.get("datadog", "enable")
self.config.get("datadog", "apikey")
self.config.get("datadog", "appkey")
self.config.get("osuapi","enable")
self.config.get("osuapi","apiurl")
self.config.get("osuapi","apikey")
self.config.get("cheesegull", "apiurl")
self.config.get("discord","enable")
self.config.get("discord","boturl")
self.config.get("discord", "devgroup")
self.config.get("discord", "secretwebhook")
self.config.get("cono", "enable")
return True
except:
return False
# Generate a default config.ini
def generateDefaultConfig(self):
"""Open and set default keys for that config file"""
# 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", "16")
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", "host", "0.0.0.0")
self.config.set("server", "port", "5002")
self.config.set("server", "debug", "False")
self.config.set("server", "beatmapcacheexpire", "86400")
self.config.set("server", "serverurl", "http://127.0.0.1:5002")
self.config.set("server", "banchourl", "http://127.0.0.1:5001")
self.config.set("server", "threads", "16")
self.config.set("server", "apikey", "changeme")
self.config.add_section("sentry")
self.config.set("sentry", "enable", "False")
self.config.set("sentry", "dsn", "")
self.config.add_section("datadog")
self.config.set("datadog", "enable", "False")
self.config.set("datadog", "apikey", "")
self.config.set("datadog", "appkey", "")
self.config.add_section("osuapi")
self.config.set("osuapi", "enable", "True")
self.config.set("osuapi", "apiurl", "https://osu.ppy.sh")
self.config.set("osuapi", "apikey", "YOUR_OSU_API_KEY_HERE")
self.config.add_section("cheesegull")
self.config.set("cheesegull", "apiurl", "http://cheesegu.ll/api")
self.config.add_section("discord")
self.config.set("discord", "enable", "False")
self.config.set("discord", "boturl", "")
self.config.set("discord", "devgroup", "")
self.config.set("discord", "secretwebhook", "")
self.config.add_section("cono")
self.config.set("cono", "enable", "False")
# Write ini to file and close
self.config.write(f)
f.close()