public DeltaConnection(int router_port, long router_key, byte system_version_major, byte system_version_minor, DeltaCoreNetServerType server_type)
        {
            //Set vars
            this.http = new HttpClient();
            this.system_version_major = system_version_major;
            this.system_version_minor = system_version_minor;
            this.server_type          = server_type;

            //Open network if it isn't disabled
            if (router_port != -1)
            {
                net = new RouterConnection(new IPEndPoint(IPAddress.Loopback, router_port), router_key, this);
            }
        }
        public List <ManagerInstance> GetConnectedInstancesByType(DeltaCoreNetServerType type)
        {
            List <ManagerInstance> found = new List <ManagerInstance>();

            foreach (var i in instances)
            {
                if (i.linkedSession == null)
                {
                    continue;
                }
                if (i.linkedSession.authenticatedType == type)
                {
                    found.Add(i);
                }
            }
            return(found);
        }
        /// <summary>
        /// Creates a managed app. StartupArgs are from the args used to start the application. Works with args passed by this bring run by a proccess manager. Connects too
        /// </summary>
        /// <param name="startupArgs"></param>
        /// <param name="system_version_major"></param>
        /// <param name="system_version_minor"></param>
        /// <param name="network"></param>
        /// <returns></returns>
        public static DeltaConnection InitDeltaManagedApp(string[] startupArgs, DeltaCoreNetServerType server_type, byte system_version_major, byte system_version_minor)
        {
            //Validate
            if (startupArgs.Length != 2)
            {
                throw new Exception("The startup args are not valid. This program is supposed to be run from a Delta Process Manager.");
            }

            //Log
            Console.ForegroundColor = ConsoleColor.Cyan;
            Console.WriteLine($"Starting Delta managed app on version {system_version_major}.{system_version_minor} (lib version {LIB_VERSION_MAJOR}.{LIB_VERSION_MINOR})...");
            Console.ForegroundColor = ConsoleColor.White;

            //Create
            var d = new DeltaConnection(int.Parse(startupArgs[0]), long.Parse(startupArgs[1]), system_version_major, system_version_minor, server_type);

            d.serverId = long.Parse(startupArgs[1]);

            //Connect
            d.InitNetworked().GetAwaiter().GetResult();

            return(d);
        }
Exemple #4
0
        private void HandleLoginCommand(RouterSession session, RouterMessage msg)
        {
            //Get details
            DeltaCoreNetServerType type = (DeltaCoreNetServerType)BitConverter.ToInt32(msg.payload, 0);
            long loginKey = BitConverter.ToInt64(msg.payload, 4);

            //Find the linked instance
            ManagerInstance instance = null;

            lock (this.session.instances)
            {
                foreach (var s in this.session.instances)
                {
                    if (loginKey == s.id)
                    {
                        instance = s;
                    }
                }
            }

            //If this failed, abort
            if (instance == null)
            {
                logger.Log("HandleLoginCommand", $"Logging in client {session.GetDebugName()} with key {loginKey} FAILED. Dropping client...", DeltaLogLevel.Medium);
                io.DropClient(session);
                return;
            }

            //Set properties on session
            session.authenticatedType = type;
            instance.linkedSession    = session;
            session.linkedInstance    = instance;
            session.authenticated     = true;

            //Log
            logger.Log("HandleLoginCommand", $"Logged in client {session.GetDebugName()} as {type.ToString().ToUpper()} as {instance.id} (v {instance.version_id}).", DeltaLogLevel.Low);
        }
 public RouterSession(IServerRouterIO server, Socket sock) : base(server, sock)
 {
     authenticated     = false;
     authenticatedType = (DeltaCoreNetServerType)(-1);
 }