aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/ExportBot/Program.cs
blob: 705cf90b1a8f14c1af92290c4c108d8d6378a2bc (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
using System;
using System.Collections.Generic;
using System.IO;
using CommandLine.Utility;

namespace libsecondlife.TestClient
{
    public class Program
    {
        private static void Usage()
        {
            Console.WriteLine("Usage: " + Environment.NewLine +
                    "TestClient.exe --first firstname --last lastname --pass password --contact \"youremail\" [--startpos \"sim/x/y/z\"] [--master \"master name\"] [--masterkey \"master uuid\"]" +
                    Environment.NewLine + "TestClient.exe --file filename --contact \"youremail\" [--master \"master name\"] [--masterkey \"master uuid\"]");
        }

        static void Main(string[] args)
        {
            Arguments arguments = new Arguments(args);

            ClientManager manager;
            List<LoginDetails> accounts = new List<LoginDetails>();
            LoginDetails account;
            string masterName = String.Empty;
            LLUUID masterKey = LLUUID.Zero;
            string file = String.Empty;
			string contact = String.Empty;

            if (arguments["masterkey"] != null)
            {
                masterKey = LLUUID.Parse(arguments["masterkey"]);
            }
            if (arguments["master"] != null)
            {
                masterName = arguments["master"];
            }

			if (arguments["contact"] != null)
			{
				contact = arguments["contact"];
				if (arguments["file"] != null)
				{
					file = arguments["file"];

					// Loading names from a file
					try
					{
						using (StreamReader reader = new StreamReader(file))
						{
							string line;
							int lineNumber = 0;

							while ((line = reader.ReadLine()) != null)
							{
								lineNumber++;
								string[] tokens = line.Trim().Split(new char[] { ' ', ',' });

								if (tokens.Length >= 3)
								{
									account = new LoginDetails();
									account.FirstName = tokens[0];
									account.LastName = tokens[1];
									account.Password = tokens[2];

									accounts.Add(account);

									// Leaving this out until we have per-account masters (if that
									// is desirable). For now the command-line option can 
									// specify the single master that TestClient supports
									
									//if (tokens.Length == 5)
									//{
									//    master = tokens[3] + " " + tokens[4];
									//}
								}
								else
								{
									Console.WriteLine("Invalid data on line " + lineNumber +
										", must be in the format of: FirstName LastName Password");
								}
							}
						}
					}
					catch (Exception e)
					{
						Console.WriteLine("Error reading from " + args[1]);
						Console.WriteLine(e.ToString());
						return;
					}
				}
				else
				{
					if (arguments["first"] != null && arguments["last"] != null && arguments["pass"] != null)
					{
						// Taking a single login off the command-line
						account = new LoginDetails();
						account.FirstName = arguments["first"];
						account.LastName = arguments["last"];
						account.Password = arguments["pass"];

						accounts.Add(account);
					}
				}
				}
                else
                {
                    Usage();
                    return;
                }

                foreach (LoginDetails a in accounts)
                {
                    a.MasterName = masterName;
                    a.MasterKey = masterKey;
                }

            // Login the accounts and run the input loop
			if ( arguments["start"] != null ) {
				manager = new ClientManager(accounts, contact, arguments["start"]);
			} else { 
				manager = new ClientManager(accounts, contact);
			}
			manager.Run();
				
        }
    }
}