]> jfr.im git - irc/evilnet/x3.git/commitdiff
Merge branch 'master' of github.com:evilnet/x3
authorRubin <redacted>
Sun, 7 Aug 2016 21:25:07 +0000 (14:25 -0700)
committerRubin <redacted>
Sun, 7 Aug 2016 21:25:07 +0000 (14:25 -0700)
src/chanserv.c
src/hash.c
src/mod-python.c

index c0529b8409721799eccbb41313039a959cfdefd3..ae5f28dfa6ebb1f0c31bd7b38c606685a43fcd31 100644 (file)
@@ -8027,7 +8027,7 @@ void eightball(char *outcome, int method, unsigned int seed)
    char ballcolors[50][50] = {
         "blue", "red", "green", "yellow",
         "white", "black", "grey", "brown",
-        "yellow", "pink", "purple", "orange", "teal", "burgandy",
+        "yellow", "pink", "purple", "orange", "teal", "burgundy",
         "fuchsia","turquoise","magenta", "cyan"};
 #define NUMOFLOCATIONS 50
    char balllocations[50][55] = { 
index 492599dcdd3e5dfd1513888caada727833f95b7d..9775cfedeb05f4356f1b411af20fbb63a734e83f 100644 (file)
@@ -731,7 +731,6 @@ AddChannelUser(struct userNode *user, struct chanNode* channel)
             && !(channel->modes & MODE_REGISTERED)
             && !(channel->modes & MODE_APASS)) {
             mNode->modes |= MODE_CHANOP;
-            log_module(MAIN_LOG, LOG_DEBUG, "setting op");
         }
 
         if (IsLocal(user)) {
index 94365dc3e23cf177e8670ec734ee4f813d9e8aa4..b35db073c5e7a9e61868be82faa731cd49052a84 100644 (file)
  * - modpython.py calls for everything you can reg_ a handler for in x3
  * - Some kind of system for getting needed binds bound automagicaly to make it easier
  *   to run peoples' scripts and mod-python in general.
+ *   - Create a (python side) command registry that plugins register into
+ *   - In modcmd.c check that list first, before the usual (c based) command search
+ *   - If python version returns 0, go on with the built-in search, otherwise just quit (allows plugins to override)
+ *   - OR 
+ *   - Mechanism for python plugins to register themselves like x3 plugins? (*module.____) ??
+ *   - Then, same problem as other x3 modules, pain to set up commands 1st time etc, maybe solve that for all modules?
  * - An interface to reading/writing data to x3.db. Maybe generic, or attached to account or channel reg records?
 
  * basic startup for now:
  * configure --enable-modules=python
+ * Make install will copy modpython.py and plugins/ directory to start out with hangman example/test
+ *
+ * x3.conf: in the "moduleS" section add:
+ *   "python" {
+ *       "scripts_dir" "/home/you/x3rundirectory";
+ *       "main_module" "modpython";
+ *   };
+
  * /msg o3 bind o3 py\ run *python.run
  * /msg o3 bind o3 py\ reload *python.reload
  * /msg o3 bind o3 py\ command *python.command
@@ -58,7 +72,7 @@
  * /msg o3 bind x3 hangman *modcmd.joiner
  * /msg o3 bind x3 hangman\ start *python.command hangman start
  * /msg o3 bind x3 hangman\ end *python.command hangman end
- * /msg o3 bind x3 hangman\ guess *python.command hangman guess
+ * /msg o3 bind x3 hangman\ guess *python.command hangman guess $1
  */
 
 static const struct message_entry msgtab[] = {
@@ -1874,6 +1888,7 @@ int python_load() {
         free(env);
     }
 
+    log_module(PY_LOG, LOG_DEBUG, "Starting Python Init from python_load");
     Py_Initialize();
     Py_InitModule("_svc", EmbMethods);
     pName = PyString_FromString(modpython_conf.main_module);
@@ -1892,6 +1907,7 @@ int python_load() {
         else {
             /* error handler class not found */
             log_module(PY_LOG, LOG_WARNING, "Failed to create handler object");
+            exit(1);
             return 0;
         }
     }
@@ -1899,6 +1915,7 @@ int python_load() {
         //PyErr_Print();
         python_log_module();
         log_module(PY_LOG, LOG_WARNING, "Failed to load modpython.py");
+        exit(1);
         return 0;
     }
     return 0;
@@ -2017,8 +2034,11 @@ static MODCMD_FUNC(cmd_command) {
     else {
         msg = "";
     }
-    char *args[] = {plugin, command, msg};
+    char *args[] = {strdup(plugin), strdup(command), strdup(msg)};
     python_call_handler("cmd_command", args, numstrargs(args), cmd->parent->bot->nick, user?user->nick:"", channel?channel->name:"");
+    free(args[0]);
+    free(args[1]);
+    free(args[2]);
     return 1;
 }
 
@@ -2043,7 +2063,7 @@ int python_init(void) {
        do all our setup tasks and bindings 
     */
 
-    //PY_LOG = log_register_type("Python", "file:python.log");
+    PY_LOG = log_register_type("Python", "file:python.log");
     python_module = module_register("python", PY_LOG, "mod-python.help", NULL);
     conf_register_reload(modpython_conf_read);
 
@@ -2060,7 +2080,7 @@ int python_init(void) {
 */
     modcmd_register(python_module, "reload",  cmd_reload,  1,  MODCMD_REQUIRE_AUTHED, "flags", "+oper", NULL);
     modcmd_register(python_module, "run",  cmd_run,  2,  MODCMD_REQUIRE_AUTHED, "flags", "+oper", NULL);
-//    modcmd_register(python_module, "command", cmd_command, 3, MODCMD_REQUIRE_AUTHED, "flags", "+oper", NULL);
+    modcmd_register(python_module, "command", cmd_command, 3, MODCMD_REQUIRE_AUTHED, "flags", "+oper", NULL);
 
 //  Please help us by implementing any of the callbacks listed as TODO below. They already exist
 //  in x3, they just need handle_ bridges implemented. (see python_handle_join for an example)