예제 #1
0
 public TunAdapter()
 {
     InterfaceIndex   = RouteHelper.ConvertLuidToIndex(tun2socks.tun_luid());
     NetworkInterface = NetworkInterfaceUtils.Get((int)InterfaceIndex);
     Gateway          = IPAddress.Parse(Global.Settings.TUNTAP.Gateway);
     Global.Logger.Info($"WinTUN 适配器:{NetworkInterface.Name} {NetworkInterface.Id} {NetworkInterface.Description}, index: {InterfaceIndex}");
 }
예제 #2
0
    public async Task StartAsync(Socks5Server server, Mode mode)
    {
        if (mode is not ShareMode shareMode)
        {
            throw new InvalidOperationException();
        }

        _server = server;
        _mode   = shareMode;

        var outboundNetworkInterface = NetworkInterfaceUtils.GetBest();

        var arguments = new List <object?>
        {
            "--interface", $@"\Device\NPF_{outboundNetworkInterface.Id}",
            "--destination", $"{await _server.AutoResolveHostnameAsync()}:{_server.Port}",
            _mode.Argument, SpecialArgument.Flag
        };

        if (_server.Auth())
        {
            arguments.AddRange(new[]
            {
                "--username", server.Username,
                "--password", server.Password
            });
        }

        await StartGuardAsync(Arguments.Format(arguments));
    }
        private bool ExecuteWebService(string name, Func <HeContext, bool> method, bool isUnattended)
        {
            if (HttpContext.Current == null)
            {
                GeneralLog.StaticWrite(DateTime.Now, "", 0, 0, 0, name + " Called (Context is null)", GeneralLogType.WARNING.ToString(), "", "");
            }
            else
            {
                HeContext heContext = Global.App.OsContext;

                int timeout = 0;
                if (isUnattended)
                {
                    timeout = SchedulerAutomaticActivitiesTimeout;
                }
                else
                {
                    timeout = SchedulerActivitiesTimeout;
                }



                SetWebserviceTimeout(heContext, timeout);

                // Check if the request is from a valid IP
                if (!NetworkInterfaceUtils.IsLoopbackAddress(HttpContext.Current.Request.UserHostAddress))
                {
                    ErrorLog.StaticWrite(DateTime.Now, heContext.Session.SessionID,
                                         (heContext.AppInfo != null ? heContext.AppInfo.eSpaceId: 0),
                                         (heContext.AppInfo != null && heContext.AppInfo.Tenant != null ? heContext.AppInfo.Tenant.Id: 0),
                                         heContext.Session.UserId,
                                         "Access to ActivityActionsHandler with invalid IP: " + HttpContext.Current.Request.UserHostAddress,
                                         "The activity actions handler can only be accessed by the 127.0.0.1 IP", "BPM");
                    return(false);
                }

                bool processedOk = false;
                try {
                    processedOk = method(heContext);
                    return(processedOk);
                } catch (Exception e) {
                    if (e.InnerException != null && (e is TypeInitializationException))
                    {
                        throw e.InnerException;
                    }
                    else
                    {
                        throw;
                    }
                } finally {
                    DatabaseAccess.FreeupResources(processedOk);
                }
            }
            return(false);
        }
        public static Uri ReplaceLoopbackAddressByModuleZone(string moduleResourceUrl)
        {
            var uri = CreateUri(moduleResourceUrl);

            if (uri != null && NetworkInterfaceUtils.IsLoopbackAddress(uri.Host))
            {
                return(ReplaceUrlHostByModuleZone(uri));
            }
            else
            {
                return(uri);
            }
        }
예제 #5
0
        public async Task StartAsync(Server server, Mode mode)
        {
            _server = server;
            _mode   = mode;

            var outboundNetworkInterface = NetworkInterfaceUtils.GetBest();

            var argument = new StringBuilder($@"-i \Device\NPF_{outboundNetworkInterface.Id}");

            if (_server is Socks5 socks5 && !socks5.Auth())
            {
                argument.Append($" --destination  {await socks5.AutoResolveHostnameAsync()}:{socks5.Port}");
            }
예제 #6
0
        public void handleRequest(HeContext heContext)
        {
            SmsNode currentNode;

            if (!NetworkInterfaceUtils.IsLoopbackAddress(Request.UserHostAddress))
            {
                ErrorLog.LogApplicationError("Access denied from " + Request.UserHostAddress,
                                             "I is only possible to access the smshandler from 127.0.0.1", heContext, "SmsHandler");
                return;
            }
            currentNode = getState();
            Response.Write("<html><head><meta HTTP-EQUIV=\"Pragma\" CONTENT=\"no-cache\"><title>SMS Message</title></head><body>");
            // Response.Write ("<p>Message: ("+heContext.MOMsg.Message+")</p>");
            if (heContext.MOMsg != null)
            {
                SmsNode res;
                bool    matched;
                // Response.Write ("<p>Current State: "+currentNode.Key+"</p><hr/>");
                res     = currentNode.Match(heContext);
                matched = (res != null);
                if (!matched && heContext.AppInfo.IsApplicationEnabled)
                {
                    res = GetSmsEntry(heContext);
                    if (res != null && res.Key != currentNode.Key)
                    {
                        res     = res.Match(heContext);
                        matched = (res != null);
                    }
                }
                setState(res);
                Response.AddHeader("Matched", matched.ToString());
                if (res != null)
                {
                    // Response.Write ("<hr/><p>Next State: "+res.Key+"</p>");
                    if (res.ExpectedPatterns != "")
                    {
                        Response.AddHeader("ExpectedPatterns", res.ExpectedPatterns);
                    }
                }
                else
                {
                    // Response.Write ("<hr/><p>Next State is null</p>");
                }
            }
            // Response.Write ("<form name=\"form1\" method=\"get\"><input type=\"text\" name=\"message\"/><br/><input type=\"submit\" value=\"Send\"/></form>");
            // Response.Write ("<script type=\"text/javascript\"> document.form1.message.focus(); </script>");
        }
예제 #7
0
        public OutboundAdapter()
        {
            // 寻找出口适配器
            if (IpHlpApi.GetBestRoute(BitConverter.ToUInt32(IPAddress.Parse("114.114.114.114").GetAddressBytes(), 0), 0, out var pRoute) != 0)
            {
                throw new MessageException("GetBestRoute 搜索失败");
            }

            NetworkInterface = NetworkInterfaceUtils.Get((int)pRoute.dwForwardIfIndex);

            Address        = new IPAddress(pRoute.dwForwardNextHop.S_addr);
            InterfaceIndex = pRoute.dwForwardIfIndex;
            Gateway        = new IPAddress(pRoute.dwForwardNextHop.S_un_b);

            Global.Logger.Info($"出口 网关 地址:{Gateway}");
            Global.Logger.Info($"出口适配器:{NetworkInterface.Name} {NetworkInterface.Id} {NetworkInterface.Description}, index: {InterfaceIndex}");
        }
        public int ExecuteTimer(string ssKey, int timeout, int tenantId)
        {
            ObjectKey timerKey = ObjectKey.Parse(ssKey);

            if (HttpContext.Current == null)
            {
                GeneralLog.StaticWrite(DateTime.Now, "", 0, 0, 0, "ExecuteTimer Called (Context is null)", GeneralLogType.WARNING.ToString(), "", "");
            }
            else
            {
                HeContext context = Global.App.OsContext;

                // Check if the request is from a valid IP
                if (!NetworkInterfaceUtils.IsLoopbackAddress(HttpContext.Current.Request.UserHostAddress))
                {
                    ErrorLog.LogApplicationError("Access to timerhandler with invalid IP: " + HttpContext.Current.Request.UserHostAddress,
                                                 "The timer handler can only be accessed by the 127.0.0.1 IP", context, "ExecuteTimer");
                    return(0);
                }
                if (tenantId > 0)
                {
                    context.Session.TenantId = tenantId;
                }
                bool processedOk = false;
                try {
                    if (timerKey == TimerBootstrap.TimerKey)
                    {
                        TimerBootstrap.Execute(context, timeout);
                    }
                    else
                    {
                        GeneralLog.StaticWrite(DateTime.Now, context.Session.SessionID, Global.eSpaceId,
                                               context.AppInfo.Tenant.Id,
                                               context.Session.UserId, "Timer " + ssKey + " isn't mapped",
                                               GeneralLogType.INFO.ToString(), "", "");
                    }
                    processedOk = true;
                } finally {
                    DatabaseAccess.FreeupResources(processedOk);
                }
            }
            return(1);
        }
 public int SendSms(SmsNode node, string largeAccount, string msisdn)
 {
     OutSystems.ObjectKeys.ObjectKey nodeKey = OutSystems.ObjectKeys.ObjectKey.Parse(node.Key);
     if (HttpContext.Current == null)
     {
         GeneralLog log = new GeneralLog();
         log.Write(DateTime.Now, "", 0, 0, 0, "SendSms Called (Context is null)", GeneralLogType.WARNING.ToString(), "", "");
     }
     else if (HttpContext.Current.Session == null)
     {
         GeneralLog log = new GeneralLog();
         log.Write(DateTime.Now, "", 0, 0, 0, "SendSms Called (Session is null)", GeneralLogType.WARNING.ToString(), "", "");
     }
     else
     {
         HeContext context = Global.App.OsContext;
         if (!NetworkInterfaceUtils.IsLoopbackAddress(HttpContext.Current.Request.UserHostAddress))
         {
             ErrorLog.LogApplicationError("Access to iSmsHandler with invalid IP: " + HttpContext.Current.Request.UserHostAddress,
                                          "The iSmsHandler can only be accessed by the 127.0.0.1 IP", context, "ExecuteTimer");
             return(0);
         }
         GeneralLog log = new GeneralLog();
         log.Write(DateTime.Now, context.Session.SessionID, context.AppInfo.eSpaceId,
                   context.AppInfo.Tenant.Id, context.Session.UserId,
                   "SendSms Called, The node received has type " + node.GetType().ToString() + ", Large Account: " + largeAccount + " MSISDN: " + msisdn,
                   GeneralLogType.INFO.ToString(), "", "");
         node.MTMsg.LargeAccount   = largeAccount;
         node.MTMsg.MSISDN         = msisdn;
         context.Session["MSISDN"] = node.MTMsg.MSISDN;
         bool ok = false;
         try {
             node.Execute(context);
             ok = true;
         } finally {
             DatabaseAccess.FreeupResources(ok);
         }
     }
     return(1);
 }
예제 #10
0
        private void ValidateToken(HeContext heContext, int userId, int tenantId, string eSpaceKey)
        {
            if (!HttpContext.Current.Request.Headers.AllKeys.Contains("Authorization"))
            {
                // check if in compatibility mode with pre-O11 versions
                if (RuntimePlatformSettings.Authentication.ReferencesAllowLegacyAuth.GetValue())
                {
                    // Check if the request is from a valid IP
                    if (!NetworkInterfaceUtils.IsLoopbackAddress(HttpContext.Current.Request.UserHostAddress))
                    {
                        ErrorLog.StaticWrite(DateTime.Now,
                                             heContext.Session.SessionID,
                                             heContext.AppInfo != null ? heContext.AppInfo.eSpaceId: 0,
                                             heContext.AppInfo != null ? heContext.AppInfo.Tenant.Id: 0,
                                             heContext.Session.UserId,
                                             "Access to ActivityActionsHandler with invalid IP: " + HttpContext.Current.Request.UserHostAddress,
                                             "The activity actions handler can only be accessed by the 127.0.0.1 IP", "BPM");

                        throw new Exception("The activity actions handler can only be accessed by the 127.0.0.1 IP");
                    }
                    else
                    {
                        // Request is valid in compatibility mode
                        return;
                    }
                }
                else
                {
                    throw new Exception("Token validation failed");
                }
            }

            SecurityTokenManager.ValidateAuthorizationHeader(
                RuntimeSettingsProvider.Instance,
                HttpContext.Current.Request.Headers["Authorization"],
                userId,
                tenantId,
                eSpaceKey);
        }
        private void Page_Load(object sender, System.EventArgs e)
        {
            HeContext heContext = Global.App.OsContext;

            if (!NetworkInterfaceUtils.IsLoopbackAddress(Request.UserHostAddress))
            {
                ErrorLog.LogApplicationError("Access denied from " + Request.UserHostAddress,
                                             "It is only possible to access the smshandler from 127.0.0.1", heContext, "SmsHandler");
                Response.StatusCode = 403;
                Response.Write("IP address " + Request.UserHostAddress + " is not allowed for this service");
                DatabaseAccess.FreeupResources(true);
                Response.End();
                return;
            }

            bool ok = false;

            try {
                string ssMSISDN             = "";
                string ssLargeAccount       = "";
                int    ssCustomId           = 0;
                string ssScreen             = "";
                string ssMessageId          = "";
                string ssResult             = "";
                int    ssResultCode         = 0;
                string ssExtendedErrorCode  = "";
                string ssConnection         = "";
                string ssOperatorCode       = "";
                string ssBillingDescription = "";
                string ssBillingCode        = "";
                string ssCustom1            = "";
                string ssCustom2            = "";
                string ssCustom3            = "";

                if (Request.QueryString["msisdn"] != null)
                {
                    ssMSISDN = Request.QueryString["msisdn"];
                }
                if (Request.QueryString["la"] != null)
                {
                    ssLargeAccount = Request.QueryString["la"];
                }
                if (Request.QueryString["customid"] != null)
                {
                    ssCustomId = System.Convert.ToInt32(Request.QueryString["customid"]);
                }
                if (Request.QueryString["screen"] != null)
                {
                    ssScreen = Request.QueryString["screen"];
                }
                if (Request.QueryString["msgid"] != null)
                {
                    ssMessageId = Request.QueryString["msgid"];
                }
                if (Request.QueryString["res"] != null)
                {
                    ssResult = Request.QueryString["res"];
                }
                if (Request.QueryString["rescode"] != null)
                {
                    ssResultCode = System.Convert.ToInt32(Request.QueryString["rescode"]);
                }
                if (Request.QueryString["exerrcode"] != null)
                {
                    ssExtendedErrorCode = Request.QueryString["exerrcode"];
                }
                if (Request.QueryString["conn"] != null)
                {
                    ssConnection = Request.QueryString["conn"];
                }
                if (Request.QueryString["opcode"] != null)
                {
                    ssOperatorCode = Request.QueryString["opcode"];
                }
                if (Request.QueryString["billdesc"] != null)
                {
                    ssBillingDescription = Request.QueryString["billdesc"];
                }
                if (Request.QueryString["billcode"] != null)
                {
                    ssBillingCode = Request.QueryString["billcode"];
                }
                if (Request.QueryString["custom1"] != null)
                {
                    ssCustom1 = Request.QueryString["custom1"];
                }
                if (Request.QueryString["custom2"] != null)
                {
                    ssCustom2 = Request.QueryString["custom2"];
                }
                if (Request.QueryString["custom3"] != null)
                {
                    ssCustom3 = Request.QueryString["custom3"];
                }


                ok = true;
            } catch (Exception exc) {
                ErrorLog.LogApplicationError(exc, heContext, "DeliveryHandler");
            } finally {
                DatabaseAccess.FreeupResources(ok);
            }
            Response.End();
        }