Exemplo n.º 1
0
    def render_POST(self, request, conn):
        if conn.account.trust == TRUST.MASTER:
            message = ["Non è possibile modificare le opzioni di config da parte di Amministratori con trust %s" % conn.account.trust]
            return json.dumps(message, separators=(',',':'))

        write_config = False
        if "write_config" in request.args and request.args["write_config"][0] == "1":
            write_config = True

        # Si copia gli attributi del config attuale, cosicché se quelli nuovi
        # sono stati impostati erroneamente dal client verranno sostituiti
        # da questi qui
        original_config_attrs = copy.copy(config.__dict__)

        # Impostata tutte le opzioni di config come le ha scelte il client
        for option in CONFIG_OPTIONS:
            if option.getter in ("get", "getemail"):
                if option.name not in request.args:
                    log.bug("opzione %s non inviata al server." % option.name)
                    continue
                setattr(config, option.name, request.args[option.name][0])
            elif option.getter in ("getint", "getfloat"):
                if option.name not in request.args:
                    log.bug("opzione %s non inviata al server." % option.name)
                    continue
                try:
                    if option.getter == "getint":
                        value = int(request.args[option.name][0])
                    else:
                        value = float(request.args[option.name][0])
                except ValueError:
                    log.bug("opzione %s con un valore non numerico: %s" % (option.name, request.args[option.name]))
                    continue
                setattr(config, option.name, value)
            elif option.getter == "getboolean":
                if option.name in request.args:
                    setattr(config, option.name, True)
                else:
                    setattr(config, option.name, False)
            else:
                log.bug("getter non definito per l'opzione %s: %s" % (option.name, option.getter))
                continue

        # Finalizza il file di config e se vi sono degli errori li invia
        #ritornando allo stadio iniziale
        config.finalize()
        errors = list(config.iter_all_error_messages())
        if errors:
            config.__dict__ = original_config_attrs
            return json.dumps(errors, separators=(',',':'))

        if write_config:
            config.save()
            log.save("Salvataggio del file di configurazione %s effettuato dall'apposita pagina web." % config.filename)

        return json.dumps("[]", separators=(',',':'))
Exemplo n.º 2
0
    def OnClose(self, event):
        """Program exit event handler"""

        # If changes have taken place save of old grid

        if self.main_window.changed_since_save:
            save_choice = self.interfaces.get_save_request_from_user()

            if save_choice is None:
                # Cancelled close operation
                return

            elif save_choice:
                # User wants to save content
                post_command_event(self.main_window, self.main_window.SaveMsg)

        # Save the AUI state

        config["window_layout"] = repr(self.main_window._mgr.SavePerspective())

        # Uninit the AUI stuff

        self.main_window._mgr.UnInit()

        # Save config
        config.save()

        # Close main_window

        self.main_window.Destroy()

        # Set file mode to 600 to protect GPG passwd a bit
        sp = wx.StandardPaths.Get()
        pyspreadrc_path = sp.GetUserConfigDir() + "/." + config.config_filename
        try:
            os.chmod(pyspreadrc_path, 0600)
        except OSError:
            dummyfile = open(pyspreadrc_path, "w")
            dummyfile.close()
            os.chmod(pyspreadrc_path, 0600)
Exemplo n.º 3
0
    def OnClose(self, event):
        """Program exit event handler"""

        # If changes have taken place save of old grid

        if self.main_window.changed_since_save:
            save_choice = self.interfaces.get_save_request_from_user()

            if save_choice is None:
                # Cancelled close operation
                return

            elif save_choice:
                # User wants to save content
                post_command_event(self.main_window, self.main_window.SaveMsg)

        # Save the AUI state

        config["window_layout"] = repr(self.main_window._mgr.SavePerspective())

        # Uninit the AUI stuff

        self.main_window._mgr.UnInit()

        # Save config
        config.save()

        # Close main_window

        self.main_window.Destroy()

        # Set file mode to 600 to protect GPG passwd a bit
        sp = wx.StandardPaths.Get()
        pyspreadrc_path = sp.GetUserConfigDir() + "/." + config.config_filename
        try:
            os.chmod(pyspreadrc_path, 0600)
        except OSError:
            dummyfile = open(pyspreadrc_path, "w")
            dummyfile.close()
            os.chmod(pyspreadrc_path, 0600)
Exemplo n.º 4
0
    def render_POST(self, request, conn):
        if conn.account.trust == TRUST.MASTER:
            message = [
                "Non è possibile modificare le opzioni di config da parte di Amministratori con trust %s"
                % conn.account.trust
            ]
            return json.dumps(message, separators=(',', ':'))

        write_config = False
        if "write_config" in request.args and request.args["write_config"][
                0] == "1":
            write_config = True

        # Si copia gli attributi del config attuale, cosicché se quelli nuovi
        # sono stati impostati erroneamente dal client verranno sostituiti
        # da questi qui
        original_config_attrs = copy.copy(config.__dict__)

        # Impostata tutte le opzioni di config come le ha scelte il client
        for option in CONFIG_OPTIONS:
            if option.getter in ("get", "getemail"):
                if option.name not in request.args:
                    log.bug("opzione %s non inviata al server." % option.name)
                    continue
                setattr(config, option.name, request.args[option.name][0])
            elif option.getter in ("getint", "getfloat"):
                if option.name not in request.args:
                    log.bug("opzione %s non inviata al server." % option.name)
                    continue
                try:
                    if option.getter == "getint":
                        value = int(request.args[option.name][0])
                    else:
                        value = float(request.args[option.name][0])
                except ValueError:
                    log.bug("opzione %s con un valore non numerico: %s" %
                            (option.name, request.args[option.name]))
                    continue
                setattr(config, option.name, value)
            elif option.getter == "getboolean":
                if option.name in request.args:
                    setattr(config, option.name, True)
                else:
                    setattr(config, option.name, False)
            else:
                log.bug("getter non definito per l'opzione %s: %s" %
                        (option.name, option.getter))
                continue

        # Finalizza il file di config e se vi sono degli errori li invia
        #ritornando allo stadio iniziale
        config.finalize()
        errors = list(config.iter_all_error_messages())
        if errors:
            config.__dict__ = original_config_attrs
            return json.dumps(errors, separators=(',', ':'))

        if write_config:
            config.save()
            log.save(
                "Salvataggio del file di configurazione %s effettuato dall'apposita pagina web."
                % config.filename)

        return json.dumps("[]", separators=(',', ':'))
Exemplo n.º 5
0
    def stop(self):
        """
        Esegue lo shutdown del gioco.
        """
        from src.log import log

        self.shutdown_time = time.time()
        self.shutdown = True

        from src.config import config
        log.shutdown("Salva tutte le opzioni di configurazione del file %s." % config.filename)
        config.save()

        from src.calendar import calendar
        log.shutdown("Salva la data gdr del gioco.")
        calendar.save()

        log.shutdown("Chiude le connessioni e scollega dal gioco tutti i giocatori.")
        from src.connection import close_all_connections
        close_all_connections()

        from src.game             import game_loop
        from src.maintenance      import maintenance_loop
        from src.behaviour        import room_behaviour_loop
        from src.fight            import fight_loop
        from src.entitypes.corpse import decomposer_loop
        from src.loops.aggressiveness import aggressiveness_loop
        from src.loops.blob           import blob_loop
        from src.loops.digestion      import digestion_loop
        log.shutdown("Ferma tutti i loop.")
        game_loop.stop()
        maintenance_loop.stop()
        room_behaviour_loop.stop()
        fight_loop.stop()
        aggressiveness_loop.stop()
        blob_loop.stop()
        digestion_loop.stop()
        decomposer_loop.stop()

        from src.reset import stop_all_reset_events
        log.shutdown("Mette in pausa i reset di tutte le aree.")
        stop_all_reset_events()

        from src.gamescript import triggering_on_shutdown
        log.shutdown("Attivazione dei trigger on_shutdown")
        triggering_on_shutdown()

        from src.reset import stop_all_repops
        log.shutdown("Ferma tutti i repop in corso")
        stop_all_repops()

        if not self.test_inputs_mode:
            from src.database import database
            log.shutdown("Esegue il backup del contenuto della cartella dei dati")
            database.backup("shutdown_before_save")

            if config.save_persistence:
                log.shutdown("Salva il Database:")
                database.save()

        from src.forum_db import forum_db
        log.shutdown("Salva il Forum")
        forum_db.save()

        if config.track_behaviours:
            from src.behaviour import write_behaviour_tracker
            log.shutdown("Salva le esecuzioni dei behaviour su un file di log")
            write_behaviour_tracker()

        if config.track_triggers:
            from src.gamescript import write_trigger_tracker
            log.shutdown("Salva le esecuzioni dei gamescript su un file di log")
            write_trigger_tracker()

        log.shutdown("Cancella tutti i file compilati per una maggiore pulizia")
        remove_compiled_files()

        log.shutdown("Esecuzione dello shutdown in %d secondi" % (time.time() - self.shutdown_time))
Exemplo n.º 6
0
    def stop(self):
        """
        Esegue lo shutdown del gioco.
        """
        from src.log import log

        self.shutdown_time = time.time()
        self.shutdown = True

        from src.config import config
        log.shutdown("Salva tutte le opzioni di configurazione del file %s." %
                     config.filename)
        config.save()

        from src.calendar import calendar
        log.shutdown("Salva la data gdr del gioco.")
        calendar.save()

        log.shutdown(
            "Chiude le connessioni e scollega dal gioco tutti i giocatori.")
        from src.connection import close_all_connections
        close_all_connections()

        from src.game import game_loop
        from src.maintenance import maintenance_loop
        from src.behaviour import room_behaviour_loop
        from src.fight import fight_loop
        from src.entitypes.corpse import decomposer_loop
        from src.loops.aggressiveness import aggressiveness_loop
        from src.loops.blob import blob_loop
        from src.loops.digestion import digestion_loop
        log.shutdown("Ferma tutti i loop.")
        game_loop.stop()
        maintenance_loop.stop()
        room_behaviour_loop.stop()
        fight_loop.stop()
        aggressiveness_loop.stop()
        blob_loop.stop()
        digestion_loop.stop()
        decomposer_loop.stop()

        from src.reset import stop_all_reset_events
        log.shutdown("Mette in pausa i reset di tutte le aree.")
        stop_all_reset_events()

        from src.gamescript import triggering_on_shutdown
        log.shutdown("Attivazione dei trigger on_shutdown")
        triggering_on_shutdown()

        from src.reset import stop_all_repops
        log.shutdown("Ferma tutti i repop in corso")
        stop_all_repops()

        if not self.test_inputs_mode:
            from src.database import database
            log.shutdown(
                "Esegue il backup del contenuto della cartella dei dati")
            database.backup("shutdown_before_save")

            if config.save_persistence:
                log.shutdown("Salva il Database:")
                database.save()

        from src.forum_db import forum_db
        log.shutdown("Salva il Forum")
        forum_db.save()

        if config.track_behaviours:
            from src.behaviour import write_behaviour_tracker
            log.shutdown("Salva le esecuzioni dei behaviour su un file di log")
            write_behaviour_tracker()

        if config.track_triggers:
            from src.gamescript import write_trigger_tracker
            log.shutdown(
                "Salva le esecuzioni dei gamescript su un file di log")
            write_trigger_tracker()

        log.shutdown(
            "Cancella tutti i file compilati per una maggiore pulizia")
        remove_compiled_files()

        log.shutdown("Esecuzione dello shutdown in %d secondi" %
                     (time.time() - self.shutdown_time))