예제 #1
0
파일: Server.cs 프로젝트: jonocodes/mybox
        /*
         * public static HashSet<Type> GetBackends() {
         *
         * HashSet<Type> result = new HashSet<Type>();
         *
         * var types = Assembly.GetExecutingAssembly().GetTypes().Where(m => m.IsClass && m.GetInterfaces().Contains(typeof(IServerDB)));
         *
         * foreach (var type in types)
         *  result.Add(type);
         *
         * return result;
         * }
         */
        /// <summary>
        /// Set member variables from config file
        /// </summary>
        /// <param name="configFile"></param>
        public static IServerDB LoadConfig(String configFile)
        {
            IServerDB serverDB = null;

            try {
                IniParser iniParser = new IniParser(configFile);

                Port = int.Parse(iniParser.GetSetting("settings", CONFIG_PORT)); // returns NULL when not found ?
                String baseDataDir = iniParser.GetSetting("settings", CONFIG_DIR);
                String serverDbConnectionString = iniParser.GetSetting("settings", CONFIG_DBSTRING);
                Type   dbType = Type.GetType(iniParser.GetSetting("settings", CONFIG_BACKEND));

                serverDB = (IServerDB)Activator.CreateInstance(dbType);
                serverDB.Connect(serverDbConnectionString, baseDataDir);
            } catch (FileNotFoundException e) {
                Console.WriteLine(e.Message);
                Common.ExitError();
            }

            return(serverDB);
        }
예제 #2
0
        private void gatherInput()
        {
            String    input    = null;
            IServerDB serverDB = null;

            do
            {
                Console.Write("Port [" + port + "]: ");
                input = Console.ReadLine();
                if (input != String.Empty)
                {
                    port = int.Parse(input);
                }

                Console.WriteLine("Backend [" + backend.Name + "]: " + backend.Name);
                serverDB = (IServerDB)Activator.CreateInstance(backend /*, new Object[]{null}*/);

                baseDataDir = serverDB.BaseDataDir;
                serverDbConnectionString = serverDB.DefaultConnectionString;

                Console.Write("DB connection string: [{0}]: ", serverDbConnectionString);
                input = Console.ReadLine();
                if (input != String.Empty)
                {
                    serverDbConnectionString = input;
                }

                Console.Write("Base data directory: [{0}]: ", baseDataDir);
                input = Console.ReadLine();
                if (input != String.Empty)
                {
                    baseDataDir = input;
                }

                try {
                    serverDB.Connect(serverDbConnectionString, baseDataDir);
                    break;
                } catch (Exception e) {
                    Console.WriteLine(e.Message);
                    continue;
                }
            } while (true);


            int accounts = serverDB.UsersCount();

            Console.WriteLine("  The database currently contains " + accounts + " accounts");

            if (accounts == 0)
            {
                Console.WriteLine("You will not be able to to use Mybox unless user are created on the server.");
            }


            Console.Write("Config file to create [" + configFile + "]: ");
            input = Console.ReadLine();
            if (input != String.Empty)
            {
                configFile = input;
            }
        }