Exemplo n.º 1
0
        public override void Process(IConnection connection, string msg)
        {
            string[] args = msg.Split(' ');

            switch (args[0])
            {
            case "run":
                string          dir     = Directory.GetCurrentDirectory() + @"\scripts\" + args[1] + ".cs";
                var             script  = new Tera.AdminEngine.Script();
                CompilerResults results =
                    new CSharpCodeProvider(new Dictionary <string, string> {
                    { "CompilerVersion", "v4.0" }
                }).
                    CompileAssemblyFromSource(new CompilerParameters(
                                                  Array.ConvertAll(AppDomain.CurrentDomain.GetAssemblies(),
                                                                   x => x.Location))
                {
                    GenerateInMemory = true
                },
                                              File.ReadAllText(dir));
                try
                {
                    script = (Tera.AdminEngine.Script)Activator.CreateInstanceFrom(Assembly.GetEntryAssembly().CodeBase,
                                                                                   "Tera.AdminEngine." + args[1].Replace(".cs", ""))
                             .Unwrap();
                }
                catch
                {
                    if (results.Errors.Count > 0)
                    {
                        foreach (CompilerError err in results.Errors)
                        {
                            Logger.WriteLine(LogState.Error, "Script compile {0} error: {1}", args[1].Replace(".cs", ""), err.ErrorText);
                        }

                        Logger.WriteLine(LogState.Info, "Script {0} not exists!", args[1].Replace(".cs", ""));
                    }
                    else
                    {
                        script =
                            results.CompiledAssembly.CreateInstance("Tera.AdminEngine." + args[1].Replace(".cs", ""))
                            as
                            Tera.AdminEngine.Script;
                    }
                }

                if (script != null)
                {
                    script.Connection = connection;
                    script.Run(args[1]);
                }

                break;
            }
        }
Exemplo n.º 2
0
        public override void Process(IConnection connection, string msg)
        {
            string[] args = msg.Split(' ');

            switch (args[0])
            {
                case "run":
                    string dir = Directory.GetCurrentDirectory() + @"\scripts\" + args[1] + ".cs";
                    var script = new Tera.AdminEngine.Script();
                    CompilerResults results =
                        new CSharpCodeProvider(new Dictionary<string, string> {{"CompilerVersion", "v4.0"}}).
                            CompileAssemblyFromSource(new CompilerParameters(
                                                          Array.ConvertAll(AppDomain.CurrentDomain.GetAssemblies(),
                                                                           x => x.Location)) {GenerateInMemory = true},
                                                      File.ReadAllText(dir));
                    try
                    {
                        script = (Tera.AdminEngine.Script)Activator.CreateInstanceFrom(Assembly.GetEntryAssembly().CodeBase,
                                                                       "Tera.AdminEngine." + args[1].Replace(".cs", ""))
                                              .Unwrap();
                    }
                    catch
                    {
                        if (results.Errors.Count > 0)
                        {
                            foreach (CompilerError err in results.Errors)
                                Logger.WriteLine(LogState.Error,"Script compile {0} error: {1}", args[1].Replace(".cs", ""), err.ErrorText);

                            Logger.WriteLine(LogState.Info,"Script {0} not exists!", args[1].Replace(".cs", ""));
                        }
                        else
                        {
                            script =
                                results.CompiledAssembly.CreateInstance("Tera.AdminEngine." + args[1].Replace(".cs", ""))
                                as
                                Tera.AdminEngine.Script;
                        }
                    }

                    if (script != null)
                    {
                        script.Connection = connection;
                        script.Run(args[1]);
                    }

                    break;
            }
        }