コード例 #1
0
ファイル: RouteCollection.cs プロジェクト: dioptre/nkd
        /// <summary>
        /// Creates and adds new route to route collection.
        /// </summary>
        /// <param name="description">Route description text.</param>
        /// <param name="pattern">Route pattern.</param>
        /// <param name="enabled">Specifies if route is enabled.</param>
        /// <param name="action">Route action.</param>
        /// <returns></returns>
        public Route Add(string description,string pattern,bool enabled,RouteActionBase action)
        {
            /* AddRoute <virtualServerID> "<routeID>" <cost> "<description>" "<pattern>" <enabled> <actionType> "<actionData>:base64"
                  Responses:
                    +OK                     
                    -ERR <errorText>
            */
            
            string id   = Guid.NewGuid().ToString();
            long   cost = DateTime.Now.Ticks;

            // Call TCP AddRoute
            m_pVirtualServer.Server.TcpClient.TcpStream.WriteLine("AddRoute " + 
                m_pVirtualServer.VirtualServerID + " " + 
                TextUtils.QuoteString(id) + " " + 
                cost + " " +
                TextUtils.QuoteString(description) + " " + 
                TextUtils.QuoteString(pattern) + " " + 
                enabled + " " +
                (int)action.ActionType + " " +
                Convert.ToBase64String(action.Serialize())
            );
                        
            string response = m_pVirtualServer.Server.ReadLine();
            if(!response.ToUpper().StartsWith("+OK")){
                throw new Exception(response);
            }
            
            Route route = new Route(this,id,cost,description,pattern,enabled,action);
            m_pRoutes.Add(route);
            return route;
        }
コード例 #2
0
        /// <summary>
        /// Creates and adds new route to route collection.
        /// </summary>
        /// <param name="description">Route description text.</param>
        /// <param name="pattern">Route pattern.</param>
        /// <param name="enabled">Specifies if route is enabled.</param>
        /// <param name="action">Route action.</param>
        /// <returns></returns>
        public Route Add(string description, string pattern, bool enabled, RouteActionBase action)
        {
            /* AddRoute <virtualServerID> "<routeID>" <cost> "<description>" "<pattern>" <enabled> <actionType> "<actionData>:base64"
             *    Responses:
             +OK
             *      -ERR <errorText>
             */

            string id   = Guid.NewGuid().ToString();
            long   cost = DateTime.Now.Ticks;

            // Call TCP AddRoute
            m_pVirtualServer.Server.TcpClient.TcpStream.WriteLine("AddRoute " +
                                                                  m_pVirtualServer.VirtualServerID + " " +
                                                                  TextUtils.QuoteString(id) + " " +
                                                                  cost + " " +
                                                                  TextUtils.QuoteString(description) + " " +
                                                                  TextUtils.QuoteString(pattern) + " " +
                                                                  enabled + " " +
                                                                  (int)action.ActionType + " " +
                                                                  Convert.ToBase64String(action.Serialize())
                                                                  );

            string response = m_pVirtualServer.Server.ReadLine();

            if (!response.ToUpper().StartsWith("+OK"))
            {
                throw new Exception(response);
            }

            Route route = new Route(this, id, cost, description, pattern, enabled, action);

            m_pRoutes.Add(route);
            return(route);
        }
コード例 #3
0
        /// <summary>
        /// Gets server groups and binds them to this.
        /// </summary>
        private void Bind()
        {
            /* GetRoutes <virtualServerID>
             *    Responses:
             +OK <sizeOfData>
             *      <data>
             *
             *      -ERR <errorText>
             */

            lock (m_pVirtualServer.Server.LockSynchronizer){
                // Call TCP GetRoutes
                m_pVirtualServer.Server.TcpClient.TcpStream.WriteLine("GetRoutes " + m_pVirtualServer.VirtualServerID);

                string response = m_pVirtualServer.Server.ReadLine();
                if (!response.ToUpper().StartsWith("+OK"))
                {
                    throw new Exception(response);
                }

                int          sizeOfData = Convert.ToInt32(response.Split(new char[] { ' ' }, 2)[1]);
                MemoryStream ms         = new MemoryStream();
                m_pVirtualServer.Server.TcpClient.TcpStream.ReadFixedCount(ms, sizeOfData);

                // Decompress dataset
                DataSet ds = Utils.DecompressDataSet(ms);

                if (ds.Tables.Contains("Routing"))
                {
                    foreach (DataRow dr in ds.Tables["Routing"].Rows)
                    {
                        RouteAction_enum actionType = (RouteAction_enum)Convert.ToInt32(dr["Action"]);
                        RouteActionBase  action     = null;
                        if (actionType == RouteAction_enum.RouteToEmail)
                        {
                            action = new RouteAction_RouteToEmail(Convert.FromBase64String(dr["ActionData"].ToString()));
                        }
                        else if (actionType == RouteAction_enum.RouteToHost)
                        {
                            action = new RouteAction_RouteToHost(Convert.FromBase64String(dr["ActionData"].ToString()));
                        }
                        else if (actionType == RouteAction_enum.RouteToMailbox)
                        {
                            action = new RouteAction_RouteToMailbox(Convert.FromBase64String(dr["ActionData"].ToString()));
                        }

                        m_pRoutes.Add(new Route(
                                          this,
                                          dr["RouteID"].ToString(),
                                          Convert.ToInt64(dr["Cost"]),
                                          dr["Description"].ToString(),
                                          dr["Pattern"].ToString(),
                                          Convert.ToBoolean(dr["Enabled"].ToString()),
                                          action
                                          ));
                    }
                }
            }
        }
コード例 #4
0
 /// <summary>
 /// Default constructor.
 /// </summary>
 /// <param name="owner">Owner RouteCollection collection that owns this route.</param>
 /// <param name="id">Route ID.</param>
 /// <param name="cost">Rule cost.</param>
 /// <param name="descritpion">Route description text.</param>
 /// <param name="pattern">Routing pattern.</param>
 /// <param name="enabled">Specifies if route is enabled.</param>
 /// <param name="action">Route action.</param>
 internal Route(RouteCollection owner,string id,long cost,string descritpion,string pattern,bool enabled,RouteActionBase action)
 {
     m_pOwner      = owner;
     m_ID          = id;
     m_Cost        = cost;
     m_Description = descritpion;
     m_Pattern     = pattern;
     m_Enabled     = enabled;
     m_pAction     = action;
 }
コード例 #5
0
ファイル: Route.cs プロジェクト: genesissupsup/nkd
 /// <summary>
 /// Default constructor.
 /// </summary>
 /// <param name="owner">Owner RouteCollection collection that owns this route.</param>
 /// <param name="id">Route ID.</param>
 /// <param name="cost">Rule cost.</param>
 /// <param name="descritpion">Route description text.</param>
 /// <param name="pattern">Routing pattern.</param>
 /// <param name="enabled">Specifies if route is enabled.</param>
 /// <param name="action">Route action.</param>
 internal Route(RouteCollection owner, string id, long cost, string descritpion, string pattern, bool enabled, RouteActionBase action)
 {
     m_pOwner      = owner;
     m_ID          = id;
     m_Cost        = cost;
     m_Description = descritpion;
     m_Pattern     = pattern;
     m_Enabled     = enabled;
     m_pAction     = action;
 }