001 /* 002 * Licensed to the Apache Software Foundation (ASF) under one or more 003 * contributor license agreements. See the NOTICE file distributed with 004 * this work for additional information regarding copyright ownership. 005 * The ASF licenses this file to You under the Apache License, Version 2.0 006 * (the "License"); you may not use this file except in compliance with 007 * the License. You may obtain a copy of the License at 008 * 009 * http://www.apache.org/licenses/LICENSE-2.0 010 * 011 * Unless required by applicable law or agreed to in writing, software 012 * distributed under the License is distributed on an "AS IS" BASIS, 013 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 014 * See the License for the specific language governing permissions and 015 * limitations under the License. 016 */ 017 018 package examples; 019 020 import java.io.IOException; 021 import java.net.InetAddress; 022 import java.net.UnknownHostException; 023 024 import org.apache.commons.net.finger.FingerClient; 025 026 /*** 027 * This is an example of how you would implement the finger command 028 * in Java using NetComponents. The Java version is much shorter. 029 * But keep in mind that the Unix finger command reads all sorts of 030 * local files to output local finger information. This program only 031 * queries the finger daemon. 032 * <p> 033 * The -l flag is used to request long output from the server. 034 * <p> 035 ***/ 036 public final class finger 037 { 038 039 public static final void main(String[] args) 040 { 041 boolean longOutput = false; 042 int arg = 0, index; 043 String handle, host; 044 FingerClient finger; 045 InetAddress address = null; 046 047 // Get flags. If an invalid flag is present, exit with usage message. 048 while (arg < args.length && args[arg].startsWith("-")) 049 { 050 if (args[arg].equals("-l")) 051 longOutput = true; 052 else 053 { 054 System.err.println("usage: finger [-l] [[[handle][@<server>]] ...]"); 055 System.exit(1); 056 } 057 ++arg; 058 } 059 060 061 finger = new FingerClient(); 062 // We want to timeout if a response takes longer than 60 seconds 063 finger.setDefaultTimeout(60000); 064 065 if (arg >= args.length) 066 { 067 // Finger local host 068 069 try 070 { 071 address = InetAddress.getLocalHost(); 072 } 073 catch (UnknownHostException e) 074 { 075 System.err.println("Error unknown host: " + e.getMessage()); 076 System.exit(1); 077 } 078 079 try 080 { 081 finger.connect(address); 082 System.out.print(finger.query(longOutput)); 083 finger.disconnect(); 084 } 085 catch (IOException e) 086 { 087 System.err.println("Error I/O exception: " + e.getMessage()); 088 System.exit(1); 089 } 090 091 return ; 092 } 093 094 // Finger each argument 095 while (arg < args.length) 096 { 097 098 index = args[arg].lastIndexOf("@"); 099 100 if (index == -1) 101 { 102 handle = args[arg]; 103 try 104 { 105 address = InetAddress.getLocalHost(); 106 } 107 catch (UnknownHostException e) 108 { 109 System.err.println("Error unknown host: " + e.getMessage()); 110 System.exit(1); 111 } 112 } 113 else 114 { 115 handle = args[arg].substring(0, index); 116 host = args[arg].substring(index + 1); 117 118 try 119 { 120 address = InetAddress.getByName(host); 121 } 122 catch (UnknownHostException e) 123 { 124 System.err.println("Error unknown host: " + e.getMessage()); 125 System.exit(1); 126 } 127 } 128 129 System.out.println("[" + address.getHostName() + "]"); 130 131 try 132 { 133 finger.connect(address); 134 System.out.print(finger.query(longOutput, handle)); 135 finger.disconnect(); 136 } 137 catch (IOException e) 138 { 139 System.err.println("Error I/O exception: " + e.getMessage()); 140 System.exit(1); 141 } 142 143 ++arg; 144 if (arg != args.length) 145 System.out.print("\n"); 146 } 147 } 148 } 149