// Constructor.
	internal BaseVsaEngine(String language, String version, bool supportDebug)
			{
				applicationPath = String.Empty;
				assemblyVersion = version;
				compiledRootNamespace = null;
				engineMoniker = String.Empty;
				engineName = String.Empty;
				engineSite = null;
				errorLocale = CultureInfo.CurrentCulture.LCID;
				executionEvidence = null;
				failedCompilation = false;
				genDebugInfo = false;
				haveCompiledState = false;
				isClosed = false;
				isDebugInfoSupported = supportDebug;
				isEngineCompiled = false;
				isEngineDirty = false;
				isEngineInitialized = false;
				isEngineRunning = false;
				loadedAssembly = null;
				rootNamespace = String.Empty;
				scriptLanguage = language;
				startupClass = null;
				startupInstance = null;
				vsaItems = null;
			}
Beispiel #2
0
        // === Constructor ===

        public BaseVsaEngine(string language, string version, bool supportDebug)
        {
            // Set default property values and initial state
            this.applicationPath       = "";
            this.compiledRootNamespace = null;
            this.genDebugInfo          = false;
            this.haveCompiledState     = false;
            this.failedCompilation     = false;
            this.isClosed            = false;
            this.isEngineCompiled    = false;
            this.isEngineDirty       = false;
            this.isEngineInitialized = false;
            this.isEngineRunning     = false;
            this.vsaItems            = null;
            this.engineSite          = null;
            this.errorLocale         = CultureInfo.CurrentCulture.LCID;
            this.engineName          = "";
            this.rootNamespace       = "";
            this.engineMoniker       = "";

            // Set implementation-dependent values
            this.scriptLanguage       = language;
            this.assemblyVersion      = version;
            this.isDebugInfoSupported = supportDebug;
            this.executionEvidence    = null;
        }
Beispiel #3
0
    // === Constructor ===

    public BaseVsaEngine(string language, string version, bool supportDebug){
      // Set default property values and initial state
      this.applicationPath = "";
      this.compiledRootNamespace = null;
      this.genDebugInfo = false;
      this.haveCompiledState = false;
      this.failedCompilation = false;
      this.isClosed = false;
      this.isEngineCompiled = false;
      this.isEngineDirty = false;
      this.isEngineInitialized = false;
      this.isEngineRunning = false;
      this.vsaItems = null;
      this.engineSite = null;
      this.errorLocale = CultureInfo.CurrentCulture.LCID;
      this.engineName = "";
      this.rootNamespace = "";
      this.engineMoniker = "";

      // Set implementation-dependent values
      this.scriptLanguage = language;
      this.assemblyVersion = version;
      this.isDebugInfoSupported = supportDebug;
      this.executionEvidence = null;
    }
Beispiel #4
0
        public BaseVsaEngine(string language, string version, bool supportDebug)
        {
            this.language = language;

            // FIXME: I think we must ensure that version it's
            // compliant with versionformat Major.Minor.Build.Revision.
            // Not sure about what Exception throw.
            this.version = version;

            this.supportDebug = supportDebug;
            this.site         = null;
            this.rootMoniker  = "";
            this.running      = false;
            this.evidence     = null;
            this.compiled     = false;
            this.dirty        = false;

            this.lcid = Thread.CurrentThread.CurrentCulture.LCID;
            this.name = "";

            this.rootNamespace   = "";
            this.namespaceNotSet = true;

            this.initNewCalled     = false;
            this.generateDebugInfo = false;
            this.closed            = false;
            this.items             = null;
            this.siteAlreadySet    = false;
        }
Beispiel #5
0
 // Constructor.
 internal BaseVsaEngine(String language, String version, bool supportDebug)
 {
     applicationPath       = String.Empty;
     assemblyVersion       = version;
     compiledRootNamespace = null;
     engineMoniker         = String.Empty;
     engineName            = String.Empty;
     engineSite            = null;
     errorLocale           = CultureInfo.CurrentCulture.LCID;
     executionEvidence     = null;
     failedCompilation     = false;
     genDebugInfo          = false;
     haveCompiledState     = false;
     isClosed             = false;
     isDebugInfoSupported = supportDebug;
     isEngineCompiled     = false;
     isEngineDirty        = false;
     isEngineInitialized  = false;
     isEngineRunning      = false;
     loadedAssembly       = null;
     rootNamespace        = String.Empty;
     scriptLanguage       = language;
     startupClass         = null;
     startupInstance      = null;
     vsaItems             = null;
 }
        /// <summary>
        /// This method loads the import dlls that a script needs to run.
        /// </summary>
        /// <param name="IVsaItems">Reference items added to the .NET script engine.</param>
        public override void LoadAssemblies(IVsaItems items)
        {
            string assemblyName;

            // system.dll
            assemblyName = "system.dll";
            IVsaReferenceItem refItem = (IVsaReferenceItem)items.CreateItem(assemblyName, VsaItemType.Reference, VsaItemFlag.None);

            refItem.AssemblyName = assemblyName;

            // mscorlib.dll
            assemblyName         = "mscorlib.dll";
            refItem              = (IVsaReferenceItem)items.CreateItem(assemblyName, VsaItemType.Reference, VsaItemFlag.None);
            refItem.AssemblyName = assemblyName;

            // system.windows.forms.dll
            assemblyName         = "system.windows.forms.dll";
            refItem              = (IVsaReferenceItem)items.CreateItem(assemblyName, VsaItemType.Reference, VsaItemFlag.None);
            refItem.AssemblyName = assemblyName;
        }
Beispiel #7
0
        private bool _LoadScript(string sScriptFilename)
        {
            if (!CONFIG.bLoadScript)
            {
                return(false);
            }
            if (string.IsNullOrEmpty(sScriptFilename))
            {
                return(false);
            }
            if (!File.Exists(sScriptFilename))
            {
                return(false);
            }
            _scriptCount++;
            if (this._BeforeRulesCompile != null)
            {
                this._BeforeRulesCompile(sScriptFilename);
            }
            foreach (object obj2 in htMenuScripts.Keys)
            {
                ((MenuItem)obj2).Parent.MenuItems.RemoveAt(((MenuItem)obj2).Index);
            }
            htMenuScripts.Clear();
            foreach (PreferenceBag.PrefWatcher watcher in this.listWeaklyHeldWatchers)
            {
                FiddlerApplication.Prefs.RemoveWatcher(watcher);
            }
            this.listWeaklyHeldWatchers.Clear();
            StreamReader reader = new StreamReader(new FileStream(sScriptFilename, FileMode.Open, FileAccess.Read, FileShare.ReadWrite), Encoding.UTF8, true);
            string       str    = reader.ReadToEnd();

            reader.Close();
            try
            {
                this._engine             = new VsaEngine();
                this._engine.RootMoniker = "fiddler://script/" + _scriptCount;
                this._engine.Site        = this.objVSASite;
                this._engine.InitNew();
                this._engine.RootNamespace     = "Fiddler.ScriptNamespace";
                this._engine.GenerateDebugInfo = false;
            }
            catch (EntryPointNotFoundException)
            {
                FiddlerApplication.DoNotifyUser("Unable to initialize FiddlerScript. This typically indicates that you are attempting to run Fiddler on .NET Framework v4.\n\nYour machine may have the unsupported OnlyUseLatestCLR registry key set.", "Unsupported configuration", MessageBoxIcon.Hand);
                this.Ready = false;
                return(false);
            }
            IVsaItems items = this._engine.Items;

            foreach (string str2 in CONFIG.sScriptReferences.Split(new char[] { ';' }))
            {
                if (str2.Trim().Length > 0)
                {
                    IVsaReferenceItem item = (IVsaReferenceItem)items.CreateItem(str2, VsaItemType.Reference, VsaItemFlag.None);
                    item.AssemblyName = str2;
                }
            }
            IVsaGlobalItem item2 = (IVsaGlobalItem)items.CreateItem("FiddlerObject", VsaItemType.AppGlobal, VsaItemFlag.None);

            item2.TypeString = "Fiddler.FiddlerScript";
            item2            = (IVsaGlobalItem)items.CreateItem("FiddlerScript", VsaItemType.AppGlobal, VsaItemFlag.None);
            item2.TypeString = "Fiddler.FiddlerScript";
            IVsaCodeItem item3 = (IVsaCodeItem)items.CreateItem("Handlers", VsaItemType.Code, VsaItemFlag.None);

            item3.SourceText = str;
            if (!this._engine.Compile())
            {
                this.Ready = false;
                return(false);
            }
            this._engine.Run();
            this.Ready = true;
            this._typeScriptHandlers = this._engine.Assembly.GetType("Fiddler.ScriptNamespace.Handlers");
            if (this._typeScriptHandlers == null)
            {
                this._ClearCachedMethodPointers();
            }
            else
            {
                this._ExtractMethodPointersFromScript();
                foreach (FieldInfo info in this._typeScriptHandlers.GetFields(BindingFlags.Public | BindingFlags.Static))
                {
                    if (info.FieldType == typeof(bool))
                    {
                        RulesOption customAttribute = (RulesOption)Attribute.GetCustomAttribute(info, typeof(RulesOption));
                        if (customAttribute != null)
                        {
                            this.CreateRulesMenuItem(info, customAttribute);
                        }
                    }
                    else if (info.FieldType == typeof(string))
                    {
                        RulesString oRule = (RulesString)Attribute.GetCustomAttribute(info, typeof(RulesString));
                        if (oRule != null)
                        {
                            RulesStringValue[] customAttributes = (RulesStringValue[])Attribute.GetCustomAttributes(info, typeof(RulesStringValue));
                            if ((customAttributes != null) && (customAttributes.Length > 0))
                            {
                                Array.Sort <RulesStringValue>(customAttributes);
                                this.CreateRulesMenuForStrings(info, oRule, customAttributes);
                            }
                        }
                    }
                }
                bool flag = true;
                foreach (MethodInfo info2 in this._typeScriptHandlers.GetMethods())
                {
                    MenuItem    item4;
                    ToolsAction action = (ToolsAction)Attribute.GetCustomAttribute(info2, typeof(ToolsAction));
                    if (action != null)
                    {
                        item4 = new MenuItem(action.Name);
                        htMenuScripts.Add(item4, info2);
                        item4.Click += new EventHandler(this.HandleScriptToolsClick);
                        FiddlerApplication._frmMain.mnuTools.MenuItems.Add(item4);
                    }
                    ContextAction action2 = (ContextAction)Attribute.GetCustomAttribute(info2, typeof(ContextAction));
                    if (action2 != null)
                    {
                        if (flag)
                        {
                            item4 = new MenuItem("-");
                            htMenuScripts.Add(item4, null);
                            FiddlerApplication._frmMain.mnuSessionContext.MenuItems.Add(0, item4);
                            flag = false;
                        }
                        item4 = new MenuItem(action2.Name);
                        htMenuScripts.Add(item4, info2);
                        item4.Click += new EventHandler(this.HandleScriptToolsClick);
                        FiddlerApplication._frmMain.mnuSessionContext.MenuItems.Add(0, item4);
                    }
                    BindUIColumn column = (BindUIColumn)Attribute.GetCustomAttribute(info2, typeof(BindUIColumn));
                    if (column != null)
                    {
                        getColumnStringDelegate delFn = (getColumnStringDelegate)Delegate.CreateDelegate(typeof(getColumnStringDelegate), info2);
                        FiddlerApplication._frmMain.lvSessions.AddBoundColumn(column._colName, column._iColWidth, delFn);
                    }
                    QuickLinkMenu menu = (QuickLinkMenu)Attribute.GetCustomAttribute(info2, typeof(QuickLinkMenu));
                    if (menu != null)
                    {
                        QuickLinkItem[] array = (QuickLinkItem[])Attribute.GetCustomAttributes(info2, typeof(QuickLinkItem));
                        if ((array != null) && (array.Length > 0))
                        {
                            Array.Sort <QuickLinkItem>(array);
                            this.CreateQuickLinkMenu(menu.Name, info2, menu.Name, array);
                        }
                    }
                }
                MenuExt.ReadRegistry(FiddlerApplication._frmMain.mnuTools, htMenuScripts);
                try
                {
                    MethodInfo method = this._typeScriptHandlers.GetMethod("Main");
                    if (method != null)
                    {
                        method.Invoke(null, null);
                    }
                }
                catch (Exception exception)
                {
                    FiddlerApplication.DoNotifyUser(string.Concat(new object[] { "There was a problem with your FiddlerScript.\n\n", exception.Message, "\n", exception.StackTrace, "\n\n", exception.InnerException }), "JScript main() failed.");
                }
            }
            if (this._AfterRulesCompile != null)
            {
                this._AfterRulesCompile();
            }
            return(true);
        }
Beispiel #8
0
		public BaseVsaEngine (string language, string version, bool supportDebug)
		{
			this.language = language;

			// FIXME: I think we must ensure that version it's 
			// compliant with versionformat Major.Minor.Build.Revision. 
			// Not sure about what Exception throw.
			this.version = version;

			this.supportDebug = supportDebug;
			this.site = null;
			this.rootMoniker = "";
			this.running = false;
			this.evidence = null;
			this.compiled = false;
			this.dirty = false;

			this.lcid = Thread.CurrentThread.CurrentCulture.LCID;
			this.name = "";
			
			this.rootNamespace = "";
			this.namespaceNotSet = true;	

			this.initNewCalled = false;
			this.generateDebugInfo = false;
			this.closed = false;
			this.items = null;
			this.siteAlreadySet = false;
		}