ViewVC Help
View File | Revision Log | Show Annotations | Download File | View Changeset | Root Listing
root/repos/CCSFinger/CCSFinger.cs
(Generate patch)

Comparing CCSFinger/CCSFinger.cs (file contents):
Revision 720 by douglas, 2006-03-30T04:25:10-08:00 vs.
Revision 721 by douglas, 2006-03-30T06:19:41-08:00

# Line 89 | Line 89 | public class CCSFinger : ServiceBase
89  
90                  private StringWriter writer = new StringWriter();
91                  private SortedDictionary<string, List<Login>> logins = new SortedDictionary<string, List<Login>>();
92 +                private bool forward = false;
93                  private List<string> nots = new List<string>();
94  
95                  private void Full()
96                  {
97 +                        if (forward)
98 +                                writer.Write("finger: forwarding service denied\r\n");
99 +
100                          foreach (string not in nots)
101                                  writer.Write("finger: {0}: no such user\r\n", not);
102  
# Line 208 | Line 212 | public class CCSFinger : ServiceBase
212                          Sessions(logins_);
213  
214                          foreach (string name in names)
215 <                        {
216 <                                bool not = true;
215 >                                if (name.Contains("@"))
216 >                                        forward = true;
217 >                                else
218 >                                {
219 >                                        bool not = true;
220  
221 <                                for (uint index = 0; index != count; ++index)
222 <                                        if (users[index].usri1_name.IndexOf(name, StringComparison.OrdinalIgnoreCase) != -1 || users[index].usri1_full_name.IndexOf(name, StringComparison.OrdinalIgnoreCase) != -1 && !logins.ContainsKey(users[index].usri1_name))
223 <                                        {
224 <                                                logins.Add(users[index].usri1_name, new List<Login>());
221 >                                        for (uint index = 0; index != count; ++index)
222 >                                                if (users[index].usri1_name.IndexOf(name, StringComparison.OrdinalIgnoreCase) != -1 || users[index].usri1_full_name.IndexOf(name, StringComparison.OrdinalIgnoreCase) != -1 && !logins.ContainsKey(users[index].usri1_name))
223 >                                                {
224 >                                                        logins.Add(users[index].usri1_name, new List<Login>());
225  
226 <                                                logins[users[index].usri1_name].Add(new Login(users[index].usri1_name));
226 >                                                        logins[users[index].usri1_name].Add(new Login(users[index].usri1_name));
227  
228 <                                                if (logins_.ContainsKey(users[index].usri1_name))
229 <                                                        logins[users[index].usri1_name].AddRange(logins_[users[index].usri1_name]);
228 >                                                        if (logins_.ContainsKey(users[index].usri1_name))
229 >                                                                logins[users[index].usri1_name].AddRange(logins_[users[index].usri1_name]);
230  
231 <                                                not = false;
232 <                                        }
231 >                                                        not = false;
232 >                                                }
233  
234 <                                if (not)
235 <                                        nots.Add(name);
236 <                        }
234 >                                        if (not)
235 >                                                nots.Add(name);
236 >                                }
237  
238                          Full();
239                  }
# Line 250 | Line 257 | public class CCSFinger : ServiceBase
257                          while (true)
258                          {
259                                  TcpClient client = listener.AcceptTcpClient();
260 +
261 +                                Console.WriteLine(client.Client.RemoteEndPoint);
262 +
263 +                                client.SendTimeout = 6000;
264 +                                client.LingerState = new LingerOption(true, 60);
265 +
266                                  Thread thread = new Thread(new ParameterizedThreadStart(Do));
267  
268                                  thread.Start(client);
# Line 274 | Line 287 | public class CCSFinger : ServiceBase
287                  while (size != buffer.Length && (byte_ = stream.ReadByte()) != '\r' && byte_ != '\n' && byte_ != -1)
288                          buffer[size++] = (byte)byte_;
289  
290 <                string line = Encoding.ASCII.GetString(buffer, 0, size)/*Console.ReadLine()*/;
290 >                string line = Encoding.ASCII.GetString(buffer, 0, size);
291                  List<string> names = new List<string>();
292                  bool full = false;
293  
# Line 288 | Line 301 | public class CCSFinger : ServiceBase
301  
302                  StreamWriter writer = new StreamWriter(stream, new UTF8Encoding(false));
303  
304 <                writer/*Console*/.Write(names.Count > 0 ? new Finger(names) : new Finger(full));
304 >                writer.Write(names.Count > 0 ? new Finger(names) : new Finger(full));
305                  writer.Close();
306 <                //stream.Close();
294 <                //((TcpClient)client).Close();
306 >                ((TcpClient)client).Close();
307          }
308  
309          public static int Main(string[] args)
310          {
311 <                Do(/*null*/);
311 >                Do();
312  
313                  return 0;
314          }

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines