コード例 #1
0
ファイル: MiniKdc.cs プロジェクト: orf53975/hadoop.net
        /// <exception cref="System.Exception"/>
        public static void Main(string[] args)
        {
            if (args.Length < 4)
            {
                System.Console.Out.WriteLine("Arguments: <WORKDIR> <MINIKDCPROPERTIES> " + "<KEYTABFILE> [<PRINCIPALS>]+"
                                             );
                System.Environment.Exit(1);
            }
            FilePath workDir = new FilePath(args[0]);

            if (!workDir.Exists())
            {
                throw new RuntimeException("Specified work directory does not exists: " + workDir
                                           .GetAbsolutePath());
            }
            Properties conf = CreateConf();
            FilePath   file = new FilePath(args[1]);

            if (!file.Exists())
            {
                throw new RuntimeException("Specified configuration does not exists: " + file.GetAbsolutePath
                                               ());
            }
            Properties        userConf = new Properties();
            InputStreamReader r        = null;

            try
            {
                r = new InputStreamReader(new FileInputStream(file), Charsets.Utf8);
                userConf.Load(r);
            }
            finally
            {
                if (r != null)
                {
                    r.Close();
                }
            }
            foreach (KeyValuePair <object, object> entry in userConf)
            {
                conf[entry.Key] = entry.Value;
            }
            Org.Apache.Hadoop.Minikdc.MiniKdc miniKdc = new Org.Apache.Hadoop.Minikdc.MiniKdc
                                                            (conf, workDir);
            miniKdc.Start();
            FilePath krb5conf = new FilePath(workDir, "krb5.conf");

            if (miniKdc.GetKrb5conf().RenameTo(krb5conf))
            {
                FilePath keytabFile = new FilePath(args[2]).GetAbsoluteFile();
                string[] principals = new string[args.Length - 3];
                System.Array.Copy(args, 3, principals, 0, args.Length - 3);
                miniKdc.CreatePrincipal(keytabFile, principals);
                System.Console.Out.WriteLine();
                System.Console.Out.WriteLine("Standalone MiniKdc Running");
                System.Console.Out.WriteLine("---------------------------------------------------"
                                             );
                System.Console.Out.WriteLine("  Realm           : " + miniKdc.GetRealm());
                System.Console.Out.WriteLine("  Running at      : " + miniKdc.GetHost() + ":" + miniKdc
                                             .GetHost());
                System.Console.Out.WriteLine("  krb5conf        : " + krb5conf);
                System.Console.Out.WriteLine();
                System.Console.Out.WriteLine("  created keytab  : " + keytabFile);
                System.Console.Out.WriteLine("  with principals : " + Arrays.AsList(principals));
                System.Console.Out.WriteLine();
                System.Console.Out.WriteLine(" Do <CTRL-C> or kill <PID> to stop it");
                System.Console.Out.WriteLine("---------------------------------------------------"
                                             );
                System.Console.Out.WriteLine();
                Runtime.GetRuntime().AddShutdownHook(new _Thread_170(miniKdc));
            }
            else
            {
                throw new RuntimeException("Cannot rename KDC's krb5conf to " + krb5conf.GetAbsolutePath
                                               ());
            }
        }
コード例 #2
0
ファイル: MiniKdc.cs プロジェクト: orf53975/hadoop.net
 public _Thread_170(Org.Apache.Hadoop.Minikdc.MiniKdc miniKdc)
 {
     this.miniKdc = miniKdc;
 }