MentlerGy

Radius config gen

May 11th, 2015
337
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 8.83 KB | None | 0 0
  1. package confgen;
  2.  
  3. import java.io.FileInputStream;
  4. import java.io.PrintWriter;
  5. import java.util.HashMap;
  6. import java.util.Map;
  7. import java.util.regex.Pattern;
  8.  
  9.  
  10. /*Excell olvasásához kell*/
  11. import org.apache.poi.hssf.usermodel.*;
  12. import org.apache.poi.poifs.filesystem.*;
  13. import org.apache.commons.validator.routines.InetAddressValidator;
  14.  
  15.  
  16. /**
  17.  * @author gyula
  18.  *
  19.  */
  20.  
  21. enum DebugLevelType { OFF, LOW, MEDIUM, HIGH, DEBUG };
  22.  
  23. public class confgen {
  24.     private static final DebugLevelType debugLevel = DebugLevelType.MEDIUM;
  25.    
  26.     private static void log(DebugLevelType eventLevel, String message){
  27.         if (debugLevel.ordinal()>=eventLevel.ordinal()) System.out.println(message);
  28.     } //
  29.    
  30.    
  31.     /*
  32.     private static void printCell(HSSFCell cell, int r, int c) {
  33.         switch (cell.getCellType()) {
  34.             case HSSFCell.CELL_TYPE_STRING:
  35.                 System.out.println("Cella (str)(" + r + "," + c + ") " + cell.getStringCellValue());
  36.                 break;
  37.             case HSSFCell.CELL_TYPE_NUMERIC:
  38.                 System.out.println("Cella (num)(" + r + "," + c + ") " + cell.getNumericCellValue());
  39.                 break;
  40.             case HSSFCell.CELL_TYPE_FORMULA:
  41.                 System.out.println("Cella (formula)(" + r + "," + c + ") " + cell.getCellFormula());
  42.                 break;
  43.         }
  44.     } //printCell
  45.     */
  46.    
  47.     private static String getCellAsString(HSSFCell cell) {
  48.         if (cell != null) {
  49.             switch (cell.getCellType()) {
  50.                 case HSSFCell.CELL_TYPE_STRING:
  51.                     return cell.getStringCellValue();
  52.                 case HSSFCell.CELL_TYPE_NUMERIC:
  53.                     return Double.toString(cell.getNumericCellValue());
  54.                 case HSSFCell.CELL_TYPE_FORMULA:
  55.                     return cell.getCellFormula().toString();
  56.             }
  57.         }
  58.         return "";
  59.     } //getCellAsString
  60.    
  61.    
  62.     private static boolean validateMac(String mac) {
  63.         final String macValidatorPattern = "^([0-9a-fA-F]{2}[:-])" + "{5}([0-9a-fA-F]{2})$";
  64.         return Pattern.matches(macValidatorPattern, mac);
  65.     }//validateMac
  66.    
  67.     private static String standardizeMac(String mac) {
  68.                 return mac.replaceAll("[-.]", ":").toUpperCase();
  69.     } //standardizeMac
  70.    
  71.        
  72.     private static final String excelFileName = "c:\\outdir\\mac_dns_uj.xls";
  73.     private static final String dhcpFileName = "c:\\outdir\\wifi_dhcp.conf";
  74.     private static final String dnsZoneFileName = "c:\\outdir\\wifiZone.include";
  75.     private static final String reverseZoneFileName = "c:\\outdir\\wifiReverseZone.include";
  76.     private static final String radiusUserFileName = "c:\\outdir\\wifi.users";
  77.    
  78.     private static final InetAddressValidator IpValidator = new InetAddressValidator();
  79.        
  80.         public static void main(String[] args) {
  81.        
  82.         //Excell
  83.         try (   PrintWriter dhcpWriter = new PrintWriter(dhcpFileName, "UTF-8");
  84.                 PrintWriter dnsWriter = new PrintWriter(dnsZoneFileName, "UTF-8");
  85.                 PrintWriter reverseWriter = new PrintWriter(reverseZoneFileName, "UTF-8");
  86.                 PrintWriter radiusWriter = new PrintWriter(radiusUserFileName, "UTF-8")) {
  87.             dhcpWriter.println("#dhcp statikus excelbol generalva");
  88.             dnsWriter.println(";intranet zona file excel-bol generalva");
  89.             reverseWriter.println(";intranet reverse zona file excel-bol generalva");  
  90.             radiusWriter.println("#radius users file excel-bol generalva");
  91.            
  92.             POIFSFileSystem fs = new POIFSFileSystem(new FileInputStream(excelFileName));
  93.             HSSFWorkbook wb = new HSSFWorkbook(fs);
  94.             HSSFSheet sheet = wb.getSheetAt(0);
  95.             HSSFRow row;
  96.             //HSSFCell cell;
  97.             int rows; // No of rows
  98.             rows = sheet.getPhysicalNumberOfRows();
  99.  
  100.             Map<String, String> netObject = new HashMap<String, String>();
  101.             for (int rowIndex=1;rowIndex<rows;rowIndex++) {
  102.                 row = sheet.getRow(rowIndex);
  103.                 String MAC = getCellAsString(row.getCell(0));
  104.                 if (MAC.length()>0 && validateMac(MAC)){
  105.                     netObject.put("MAC",standardizeMac(MAC));
  106.                     if (IpValidator.isValidInet4Address(getCellAsString(row.getCell(1)))) {
  107.                             netObject.put("ipAddress",getCellAsString(row.getCell(1)));
  108.                         }
  109.                     else {
  110.                         netObject.put("ipAddress","");
  111.                         log(DebugLevelType.MEDIUM,"Érvénytelen IP cím a "+ rowIndex +". sorban.");
  112.                     }
  113.                     if (IpValidator.isValidInet4Address(getCellAsString(row.getCell(2)))) {
  114.                             netObject.put("net",getCellAsString(row.getCell(2)));
  115.                         }
  116.                     else {
  117.                         netObject.put("net","");
  118.                         log(DebugLevelType.MEDIUM,"Érvénytelen hálózati cím a "+ rowIndex +". sorban.");
  119.                     }
  120.                     netObject.put("dhcpGroup",getCellAsString(row.getCell(3)));
  121.                     netObject.put("interfaceType",getCellAsString(row.getCell(4)));
  122.                     netObject.put("wifiUser",getCellAsString(row.getCell(5)));
  123.                     netObject.put("wifiPass",getCellAsString(row.getCell(6)));
  124.                     netObject.put("dnsName",getCellAsString(row.getCell(7)));
  125.                     netObject.put("pcName",getCellAsString(row.getCell(8)));
  126.                     netObject.put("user",getCellAsString(row.getCell(9)));
  127.                     netObject.put("category",getCellAsString(row.getCell(10)));
  128.                     netObject.put("location",getCellAsString(row.getCell(11)));
  129.                     netObject.put("modell",getCellAsString(row.getCell(12)));
  130.                     netObject.put("opSys",getCellAsString(row.getCell(13)));
  131.                     netObject.put("serialNumber",getCellAsString(row.getCell(14)));
  132.                     netObject.put("comment",getCellAsString(row.getCell(15)));
  133.                     log(DebugLevelType.HIGH,netObject.toString());
  134.                                        
  135.                     // RADIUS
  136.                     if (netObject.get("wifiUser") != null && netObject.get("wifiUser").trim().length()>0
  137.                         && netObject.get("wifiPass") != null && netObject.get("wifiPass").trim().length()>0){
  138.                         radiusWriter.println(netObject.get("wifiUser")+
  139.                             "\tCleartext-Password := \""+netObject.get("wifiPass")+
  140.                             "\" , Calling-Station-Id := \""+netObject.get("MAC")+"\"");
  141.                         radiusWriter.println("\tReply-Message = \"" + netObject.get("wifiUser")+" "+netObject.get("category")+" logged in.\"");
  142.                     }//if
  143.                     else {
  144.                         log(DebugLevelType.MEDIUM,"Nincs radius adat "+ rowIndex +". sorban.");
  145.                     }
  146.                    
  147.                     //DHCP
  148.                     if (netObject.get("ipAddress") != null && netObject.get("ipAddress").trim().length()>0
  149.                         && netObject.get("dnsName") != null && netObject.get("dnsName").trim().length()>0){
  150.                         dhcpWriter.println("# "+netObject.get("user")+" "+netObject.get("category")+" "+netObject.get("modell")+" hely:"+netObject.get("location"));
  151.                         dhcpWriter.println("host  "+netObject.get("dnsName")+" {");
  152.                         dhcpWriter.println("\t\thardware ethernet "+netObject.get("MAC")+";");
  153.                         dhcpWriter.println("\t\tfixed-address "+ netObject.get("ipAddress")+";");
  154.                         dhcpWriter.println("\t\t}");
  155.                     }//if
  156.                     else {
  157.                         log(DebugLevelType.MEDIUM,"Nincs DHCP adat "+ rowIndex +". sorban.");
  158.                     }
  159.                     //DNS
  160.                     if (netObject.get("ipAddress") !=null && netObject.get("ipAddress").trim().length()>0
  161.                         && netObject.get("dnsName") != null && netObject.get("dnsName").trim().length()>0) {
  162.                         //DNS
  163.                         dnsWriter.println(netObject.get("dnsName")+"\t\tIN\tA\t"+netObject.get("ipAddress")+"\t;"
  164.                                 +netObject.get("user")+" -- "+netObject.get("category")+" -- "+netObject.get("location"));
  165.                         //Reverse DNS
  166.                        
  167.                         String[] splitedAddress=netObject.get("ipAddress").split("[.]");
  168.                         reverseWriter.println(splitedAddress[3]+"."+splitedAddress[2]+"."+splitedAddress[1]+"."+splitedAddress[0]+
  169.                                             ".in-addr.arpa.\tIN\tPTR\t"+netObject.get("dnsName")+".intranet.");
  170.                     }//if
  171.                     else {
  172.                         log(DebugLevelType.MEDIUM,"Nincs DNS adat "+ rowIndex +". sorban.");
  173.                     }
  174.                    
  175.                 } //if (MAC.length()>0 && validateMac)
  176.                 else {
  177.                     if (MAC.length()==0) log(DebugLevelType.LOW, "Nincs MAC megadva a "+ rowIndex +"sorban.");
  178.                     else log(DebugLevelType.LOW, "Hibás a MAC a "+ rowIndex +". sorban.");
  179.                 }//else (MAC.length()>0 && validateMac)
  180.                    
  181.             } //for
  182.            
  183.             dhcpWriter.close();
  184.             dnsWriter.close();
  185.             reverseWriter.close();
  186.             radiusWriter.close();
  187.            
  188.         } catch (Exception ioe) {
  189.             ioe.printStackTrace();
  190.         } // catch
  191.  
  192.     }
  193.  
  194. }
Advertisement
Add Comment
Please, Sign In to add comment