/// <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 ()); } }
public _Thread_170(Org.Apache.Hadoop.Minikdc.MiniKdc miniKdc) { this.miniKdc = miniKdc; }