예제 #1
0
        public override void Execute(string src, Uri uri, HttpListenerContext p, WebConfig wc, StreamWriter sw)
        {
            var bcp = new CSharpCodeProvider();
            var ass = AssemblyInitializer.Init(bcp, src, sw, ini);

            var page = AssemblyPageResolver.Resolve(ass);

            page.Response = sw;

            uri = new Uri("http://localhost/" + Path.GetFileName(uri.LocalPath));

            page.Info        = new HttpInfo(Get.Create(uri), uri, wc.DataDir, p);
            page.IncludePage = new Action <string>(f =>
            {
                new Language().Execute(File.ReadAllText(wc.DataDir + f), uri, p, wc, sw);
            });
            page.Redirect = new Action <string>(f =>
            {
                p.Response.Redirect(f);
            });
            page.Isset = new Predicate <object>(b => {
                return(StandardScriptApi.isset(b));
            });

            page.Get = page.Info.Get;

            page.OnLoad();
        }
        private static IAssemblyLoader CreateAssemblyLoader(IServiceProvider p)
        {
            var assemblyLoader = ActivatorUtilities.CreateInstance <AssemblyLoader>(p);

            assemblyLoader.SubscribeOnAssemblyLoad(a => AssemblyInitializer.ConfigureAssembly(a, p));

            return(assemblyLoader);
        }
예제 #3
0
        static void Main()
        {
            Application.EnableVisualStyles();
            Application.SetCompatibleTextRenderingDefault(false);

            //статическая инициализация
            AssemblyInitializer.UseCurrentDomain();

            Settings.Default.SettingsSaving += AssemblyConfigurationHelper.SettingsSaveHandler;

            Application.Run(new MainForm());
        }
예제 #4
0
        public override void Execute(string src, HttpListenerContext p, WebConfig wc)
        {
            var bcp  = new Microsoft.VisualC.VSCodeProvider();
            var ass  = AssemblyInitializer.Init(bcp, src, new StreamWriter(p.Response.OutputStream));
            var page = AssemblyPageResolver.Resolve(ass);

            page.Response    = new StreamWriter(p.Response.OutputStream);
            page.Info        = new HttpInfo(Get.Create(p), p.Request.Url, wc.DataDir);
            page.IncludePage = new Action <string>(f =>
            {
                new Language().Execute(File.ReadAllText(wc.DataDir + f), p, wc);
            });

            page.OnLoad();
        }
예제 #5
0
        public override dynamic Evaluate(string src, string classname, HttpListenerContext p, WebConfig wc)
        {
            var bcp     = new CSharpCodeProvider();
            var options = new CompilerParameters();

            var ass = AssemblyInitializer.Init(bcp, src, new StreamWriter(p.Response.OutputStream), ini);

            foreach (var a in ass.GetTypes())
            {
                if (a.BaseType.Name == classname)
                {
                    return(ass.CreateInstance(a.FullName));
                }
            }

            return(null);
        }
예제 #6
0
 /// <summary>
 /// 加载资源中的程序集
 /// </summary>
 /// <param name="assembly">调用者程序集</param>
 /// <param name="assemblyName">程序集名称</param>
 /// <returns></returns>
 public static Assembly LoadResourceAssembly(Assembly assembly, string assemblyName)
 => AssemblyInitializer.LoadResourceAssembly(assembly, assemblyName);
예제 #7
0
 /// <summary>
 /// 程序集加载事件
 /// </summary>
 /// <param name="sender"></param>
 /// <param name="args"></param>
 private static void AssemblyLoad(object sender, AssemblyLoadEventArgs args) =>
 AssemblyInitializer.InitAssembly(args.LoadedAssembly, silentMode: true);
예제 #8
0
        static void Main()
        {
            Application.EnableVisualStyles();
            Application.SetCompatibleTextRenderingDefault(false);

            //uint v = EgateAPI.egGetVersion();
            //string d = EgateAPI.egGetVersionDescription().GetString();
            //MessageBox.Show(String.Format("v{0} {1}", v, d));
            //return;

            //string s1 = "00600215,600008,032,0001,548999******5026,1512,1000,0,1000,2706,1645,400,MC-сети-ГПБ,643,0,0,314804,002504314804,,140150148,,270614,164523,000,OK,,,,\x80\x80\x80,,,1,,";
            //string s2 = ",,032,0001,,0000,,0,1000,0000,0000,399,Mastercard,643,0,0,,,,000000,,,,000,OK,,,,\x80\x80\x80,,,5,,";
            //AuthResponse a1 = AuthResponse.Parse(s1);
            //AuthResponse a2 = AuthResponse.Parse(s2);
            //return;

            //string s = @"30 30 36 30 30 32 31 35 2C 36 30 30 30 30 38 2C 30 33 32 2C 30 30 30 30 2C 35 34 38 39 39 39 2A 2A 2A 2A 2A 2A 35 30 32 36 2C 31 35 31 32 2C 31 30 30 30 30 2C 30 2C 31 30 30 30 30 2C 31 34 30 37 2C 31 32 33 33 2C 34 33 32 2C 4D 43 2D 3F 3F 3F 3F 2D 3F 3F 3F 2C 36 34 33 2C 30 2C 30 2C 33 37 36 30 38 32 2C 30 30 32 35 30 34 33 37 36 30 38 32 2C 2C 31 34 30 31 35 30 31 34 38 2C 2C 31 34 30 37 31 34 2C 31 32 33 33 32 35 2C 30 30 30 2C 4F 4B 2C 2C 2C 2C 5C 78 38 30 5C 78 38 30 5C 78 38 30 2C 2C 2C 31 2C 2C";
            //string s = "1F,26,0B,4D,43,20,F1,E5,F2,E8,20,C3,CF,C1";
            //string s = "30 30 36 30 30 32 31 35 2C 36 30 30 30 30 38 2C 30 33 32 2C 30 30 30 30 2C 35 34 38 39 39 39 2A 2A 2A 2A 2A 2A 30 30 31 33 2C 31 35 31 32 2C 31 30 30 30 30 2C 30 2C 31 30 30 30 30 2C 31 37 30 37 2C 31 33 30 35 2C 34 37 32 2C 4D 61 73 74 65 72 63 61 72 64 2C 36 34 33 2C 30 2C 30 2C 33 38 35 32 39 31 2C 30 30 32 35 30 34 33 38 35 32 39 31 2C 61 30 30 30 30 30 30 30 30 34 31 30 31 30 2C 31 34 30 31 35 38 31 32 38 2C 4D 61 73 74 65 72 43 61 72 64 2C 31 37 30 37 31 34 2C 31 33 30 36 34 30 2C 30 30 30 2C 4F 4B 2C 2C 2C 2C 5C 78 38 30 5C 78 38 30 5C 78 38 31 2C 2C 2C 31 2C 2C";
            //string[] sa = s.Split(' ');
            //byte[] ba = sa.Select(x => { long l; x.FromHex(out l); return (byte)(l & 0xFF); }).ToArray();
            //s = Encoding.GetEncoding(1251).GetString(ba);
            //return;

            //проверка повторного запуска
            if (!ApplicationFormServices.EnsureNotRunning())
            {
                return;
            }

            //обработчик исключений
            LoggedExceptionHandler xh = new LoggedExceptionHandler();

            //статическая инициализация
            AssemblyInitializer.UseCurrentDomain();

            //создаём контейнер и регистрируем классы
            using (IServiceContainer container = new ServiceContainer())
            {
                //получаем агрументы
                GenericArguments args = new GenericArguments();

                //получаем настройки
                Settings settings = Settings.Default;
                settings.SettingsSaving += AssemblyConfigurationHelper.SettingsSaveHandler;

                //менеджер путей
                GazpromPathManager pathManager = new GazpromPathManager();
                container.RegisterInstance <PathManager>(pathManager);

                //логгер
                ILogger logger = container.RegisterLogger(settings.LogLevel, pathManager.LogPath);
                //if (!args.IsNoTrace && ((settings.Mode & GazpromMode.NoTrace) == 0))
                //{
                //  container.RegisterTraceLogWriter(TraceHelper.GazpromTraceName, LogCategoryMap.Load(CommonHelper.GetCategoryMapFileName(pathManager, GazpromHelper.LogFileName)), GazpromHelper.GazpromTraceMessageFilter);
                //  container.RegisterTraceLogWriter(TraceHelper.GazpromPollingTraceName, LogCategoryMap.Load(CommonHelper.GetCategoryMapFileName(pathManager, GazpromHelper.LogFileNamePolling)), GazpromHelper.PollingTraceMessageFilter);
                //}
                container.Rebuild <ILogger>();

                //BankingDevice d = new BankingDevice(32);
                //d.Message += (s, e) => { logger.Write(e ? LogLevel.Error : LogLevel.Verbose, s); };
                //d.StateChanged += (s, i) => { logger.Write(LogLevel.Debug, String.Format("{0}\r\n{1}", s, i)); };
                //d.TransactionCompleted += (r, z) => { logger.Write(LogLevel.Information, String.Format("{0}\r\n{1}", r, z)); };
                //try
                //{
                //  if (d.Start())
                //  {
                //    int r = 1;
                //    int a = 1000;
                //    while (true)
                //    {
                //      if (d.BeginTransaction(r++, a))
                //      {
                //        while (d.State != EquipmentState.CardTaken)
                //          System.Threading.Thread.Sleep(500);

                //        d.EndTransaction();
                //        a += 100;
                //      }

                //      if (MessageBox.Show("Следующий платеж?", "Debug", MessageBoxButtons.YesNo, MessageBoxIcon.Question) != DialogResult.Yes)
                //        break;
                //    }
                //  }
                //}
                //catch (Exception e)
                //{
                //  logger.Write(e);
                //}
                //finally
                //{
                //  d.Stop();
                //}

                //return;

                //создаём список предупреждений для записи в лог после запуска
                List <ILogMessage> warnings = new List <ILogMessage>();

                //обработчик исключений и окно отображения ошибок (до создания любого окна)
                container.RegisterInstance <IApplicationReportProvider>(new ApplicationReportProvider(true));
                container.RegisterErrorServices(xh);
                container.RegisterErrorWindow();

                //значок панели задач
                container.RegisterInstance <TrayService>(new GazpromTray());

                //заставка (она же окно "О программе")
                container.RegisterAboutWindow(!args.IsNoSplash, new GazpromAboutForm());

                //сеть
                container.RegisterInstance <INetworkProtocol>(new SerialPortProtocol());

                //сервер
                container.RegisterInstance <IApplication>(new Gazprom(settings.Mode));
                container.RegisterInstance <Form>(new MainForm());

                //инъектируем зависимости
                container.Rebuild();

                //write warnings
                foreach (LogMessage m in warnings)
                {
                    logger.Write(m);
                }

                //запускаем приложение с помощью зарегистрированных в контейнере классов
                container.Run(false);
            }
        }
예제 #9
0
        static void Main()
        {
            Application.EnableVisualStyles();
            Application.SetCompatibleTextRenderingDefault(false);

            //проверка повторного запуска
            if (!ApplicationFormServices.EnsureNotRunning())
            {
                return;
            }

            //обработчик исключений
            LoggedExceptionHandler xh = new LoggedExceptionHandler();

            //статическая инициализация
            AssemblyInitializer.UseCurrentDomain();

            //создаём контейнер и регистрируем классы
            using (IServiceContainer container = new ServiceContainer())
            {
                //получаем агрументы
                GenericArguments args = new GenericArguments();

                //получаем настройки
                Settings settings = Settings.Default;
                settings.SettingsSaving += AssemblyConfigurationHelper.SettingsSaveHandler;

                //менеджер путей
                SberBankPathManager pathManager = new SberBankPathManager();
                container.RegisterInstance <PathManager>(pathManager);

                //логгер
                ILogger logger = container.RegisterLogger(settings.LogLevel, pathManager.LogPath);

                container.Rebuild <ILogger>();



                //создаём список предупреждений для записи в лог после запуска
                var warnings = new List <ILogMessage>();

                //обработчик исключений и окно отображения ошибок (до создания любого окна)
                container.RegisterInstance <IApplicationReportProvider>(new ApplicationReportProvider(true));
                container.RegisterErrorServices(xh);
                container.RegisterErrorWindow();

                //значок панели задач
                container.RegisterInstance <TrayService>(new SberBankTray());

                //заставка (она же окно "О программе")
                container.RegisterAboutWindow(!args.IsNoSplash, new SberBankAboutForm());

                //сеть
                container.RegisterInstance <INetworkProtocol>(new SerialPortProtocol());

                //сервер
                container.RegisterInstance <IApplication>(new SberBank(settings.Mode));
                container.RegisterInstance <Form>(new MainForm());

                //инъектируем зависимости
                container.Rebuild();

                //write warnings
                foreach (LogMessage m in warnings)
                {
                    logger.Write(m);
                }

                //запускаем приложение с помощью зарегистрированных в контейнере классов
                container.Run(false);
            }
        }
 private static FamilyTreeContext GetFamilyTreeContext()
 {
     return(new FamilyTreeContext(AssemblyInitializer.GetFamilyTreeContextInMemoryOptions()));
 }
예제 #11
0
        static void Main(string[] args)
        {
            string devToken = ConfigurationManager.AppSettings["applicationIdentifier"];
            var    resolver = Assembly.LoadWithPartialName("Sage.Peachtree.API.Resolver");
            var    api      = Assembly.LoadWithPartialName("Sage.Peachtree.API");

            Console.WriteLine("Sage 50 ShipGear write-back performance test");

            Console.WriteLine("Enter server name:");
            string serverName = Console.ReadLine();

            AssemblyInitializer.Initialize();

            var session = new PeachtreeSession();

            try
            {
                try
                {
                    session.Begin(devToken);
                }
                catch (InvalidApplicationIdentifierException e)
                {
                    Message("Put a valid application identifier into the app configuration file.");
                }

                var companyList = session.CompanyList();
                foreach (var item in companyList)
                {
                    Console.WriteLine(string.Format("{0} {1}", item.CompanyName, item.Path));
                }

                Console.WriteLine("Enter company name. The first will be selected if more than one with the same name.");
                string companyName = Console.ReadLine();

                CompanyIdentifier company = null;
                foreach (var item in companyList)
                {
                    if (item.CompanyName == companyName)
                    {
                        company = item;
                        break;
                    }
                }

                if (company == null)
                {
                    Message("No company was selected - quit.");
                }

                var authResult = session.RequestAccess(company);
                if (authResult == AuthorizationResult.Granted)
                {
                    Company comp = null;
                    try
                    {
                        comp = session.Open(company);
                    }
                    catch (Sage.Peachtree.API.Exceptions.AuthorizationException e)
                    {
                        Message("Reopen the company in Sage 50 to enable access to this application.");
                    }

                    try
                    {
                        SalesInvoiceList list = comp.Factories.SalesInvoiceFactory.List();

                        Console.WriteLine("Enter invoice number:");
                        string           documentKey = Console.ReadLine();
                        FilterExpression filter      = FilterExpression.Equal(FilterExpression.Property("SalesInvoice.ReferenceNumber"), FilterExpression.Constant(documentKey));
                        var modifiers = LoadModifiers.Create();
                        modifiers.Filters = filter;

                        list.Load(modifiers);
                        Console.WriteLine("Invoices selected: {0}", list.Count());

                        var enumerator = list.GetEnumerator();
                        if (enumerator == null)
                        {
                            Message("GetEnumerator returned NULL");
                        }

                        Console.WriteLine("Moving to the next record");
                        enumerator.MoveNext();

                        enumerator.Current.CustomerNote = "Test Customer Note";
                        enumerator.Current.InternalNote = "Test Internal Note";

                        Console.WriteLine("Editing the freight (Y[y]/N[n], Y if empty)?");
                        string strFreightEdit = Console.ReadLine();
                        if (string.IsNullOrWhiteSpace(strFreightEdit))
                        {
                            strFreightEdit = "Y";
                        }
                        bool freightEdit = string.Equals(strFreightEdit, "Y", StringComparison.CurrentCultureIgnoreCase);

                        Console.WriteLine("Editing freight: {0}", freightEdit.ToString());
                        if (freightEdit)
                        {
                            enumerator.Current.FreightAmount = 199.99M;
                        }

                        Stopwatch w = Stopwatch.StartNew();
                        Console.WriteLine("Starting performance counter");
                        enumerator.Current.Save();
                        w.Stop();
                        Message(string.Format("Elapsed msec: {0}", w.Elapsed.TotalMilliseconds), ConsoleColor.Green, false);
                        Message("Completed", ConsoleColor.Green, true);
                    }
                    finally
                    {
                        comp.Close();
                    }
                }
                else if (authResult == AuthorizationResult.Pending)
                {
                    Message("Authorization result: Pending - cannot continue. Reopen the company in Sage 50 to enable access to this application.");
                }
                else
                {
                    Message(string.Format("Authorization result: {0} - cannot continue", authResult.ToString()));
                }
            }
            finally
            {
                session.End();
            }
        }