diff --git a/bin/LAUNCH.sh b/bin/LAUNCH.sh index e082b7f0..3e8814c0 100755 --- a/bin/LAUNCH.sh +++ b/bin/LAUNCH.sh @@ -183,7 +183,7 @@ islogged=`screen -ls | awk '/\.Logging\t/ {print strtonum($1)}'` isqueued=`screen -ls | awk '/\.Queue\t/ {print strtonum($1)}'` isscripted=`screen -ls | awk '/\.Script\t/ {print strtonum($1)}'` -options=("Redis" "LevelDB" "Logs" "Queues" "Scripts" "Killall" "Shutdown") +options=("Redis" "LevelDB" "Logs" "Queues" "Scripts" "Killall" "Shutdown" "Update-config") menu() { echo "What do you want to Launch?:" @@ -252,6 +252,9 @@ for i in ${!options[@]}; do Shutdown) bash -c "./Shutdown.py" ;; + Update-config) + bash -c "./Update-conf.py" + ;; esac fi done diff --git a/bin/Update-conf.py b/bin/Update-conf.py new file mode 100755 index 00000000..2b234db1 --- /dev/null +++ b/bin/Update-conf.py @@ -0,0 +1,79 @@ +#!/usr/bin/env python2 +# -*-coding:UTF-8 -* + +import ConfigParser +from ConfigParser import RawConfigParser +import os + + +def main(): + + configfile = os.path.join(os.environ['AIL_BIN'], 'packages/config.cfg') + if not os.path.exists(configfile): + raise Exception('Unable to find the configuration file. \ + Did you set environment variables? \ + Or activate the virtualenv.') + configfileSample = os.path.join(os.environ['AIL_BIN'], 'packages/config.cfg.sample') + + cfg = ConfigParser.ConfigParser() + cfg.read(configfile) + cfgSample = ConfigParser.ConfigParser() + cfgSample.read(configfileSample) + + sections = RawConfigParser.sections(cfg) + sectionsSample = RawConfigParser.sections(cfgSample) + + missingSection = [] + dicoMissingSection = {} + missingItem = [] + dicoMissingItem = {} + + for sec in sectionsSample: + if sec not in sections: + missingSection += [sec] + dicoMissingSection[sec] = RawConfigParser.items(cfgSample, sec) + else: + setSample = set(RawConfigParser.options(cfgSample, sec)) + setNormal = set(RawConfigParser.options(cfg, sec)) + if setSample != setNormal: + missing_items = list(setSample.difference(setNormal)) + missingItem += [sec] + list_items = [] + for i in missing_items: + list_items.append( (i, cfgSample.get(sec, i)) ) + dicoMissingItem[sec] = list_items + + if len(missingSection) == 0 and len(missingItem) == 0: + print("Configuration up-to-date") + return + print("/!\\ Configuration not complete. Missing following configuration: /!\\") + print("+--------------------------------------------------------------------+") + for section in missingSection: + print("["+section+"]") + for item in dicoMissingSection[section]: + print(" - "+item[0]) + for section in missingItem: + print("["+section+"]") + for item in dicoMissingItem[section]: + print(" - "+item[0]) + print("+--------------------------------------------------------------------+") + resp = raw_input("Do you want to auto fix it? [y/n] ") + + if resp != 'y': + return + else: + for section in missingSection: + cfg.add_section(section) + for item, value in dicoMissingSection[section]: + cfg.set(section, item, value) + for section in missingItem: + for item, value in dicoMissingItem[section]: + cfg.set(section, item, value) + + with open(configfile, 'w') as f: + cfg.write(f) + + +if __name__ == "__main__": + main() + diff --git a/bin/packages/config.cfg.sample b/bin/packages/config.cfg.sample index a634e4f1..0e91a993 100644 --- a/bin/packages/config.cfg.sample +++ b/bin/packages/config.cfg.sample @@ -123,6 +123,7 @@ cc_tld = r'\.de$' [Indexer] type = whoosh path = indexdir +register = indexdir/all_index.txt #size in Mb index_max_size = 2000