/* 1*/ package PFSaver; /* 2*/ /* 3*/ import java.io.BufferedReader; /* 4*/ import java.io.File; /* 5*/ import java.io.IOException; /* 6*/ import java.io.InputStreamReader; /* 7*/ import java.net.InetAddress; /* 8*/ import java.net.UnknownHostException; /* 9*/ import java.util.StringTokenizer; /* 10*/ /* 11*/ import WinPacketFiltering.PacketFiltering; /* 12*/ import WinPacketFiltering.PacketFilteringException; /* 13*/ /* 14*/ public class PFSaver_CUI /* 15*/ { /* 16*/ private PFSaver saver = new PFSaver(); /* 17*/ private static final String fFolder = "FILTERS"; // フィルタファイル保存用ディレクトリ /* 18*/ private static final String hFolder = "HANDLES"; // ハンドルファイル保存用 /* 19*/ private static final String lFolder = "RECORD"; // 終了時一時ファイル保存用 /* 20*/ private BufferedReader systemIn = new BufferedReader(new InputStreamReader(System.in)); /* 21*/ /* 22*/ // コンストラクタ(フィルタ、ハンドルの保存用ディレクトリを作る) /* 23*/ public PFSaver_CUI() throws Exception /* 24*/ { /* 25*/ File fFldr = new File(fFolder); /* 26*/ if(!fFldr.exists()) /* 27*/ { /* 28*/ fFldr.mkdir(); /* 29*/ } /* 30*/ else /* 31*/ { /* 32*/ if(fFldr.isFile()) /* 33*/ throw new Exception("Delete \""+fFolder+ /* 34*/ "\" File Before Starting This Application"); /* 35*/ } /* 36*/ /* 37*/ File hFldr = new File(hFolder); /* 38*/ if(!hFldr.exists()) /* 39*/ { /* 40*/ hFldr.mkdir(); /* 41*/ } /* 42*/ else /* 43*/ { /* 44*/ if(hFldr.isFile()) /* 45*/ throw new Exception("Delete \""+hFolder+ /* 46*/ "\" File Before Starting This Application"); /* 47*/ } /* 48*/ /* 49*/ File lFldr = new File(lFolder); /* 50*/ if(!lFldr.exists()) /* 51*/ { /* 52*/ lFldr.mkdir(); /* 53*/ } /* 54*/ else /* 55*/ { /* 56*/ if(lFldr.isFile()) /* 57*/ throw new Exception("Delete \""+lFolder+ /* 58*/ "\" File Before Starting This Application"); /* 59*/ } /* 60*/ /* 61*/ // 前回終了時ファイルを読み込み /* 62*/ saver.restoreList(lFolder); /* 63*/ } // PFSaver_CUI END /* 64*/ /* 65*/ // メインメニューを表示する /* 66*/ private void showMainMenu() /* 67*/ throws PacketFilteringException, IOException, Exception /* 68*/ { /* 69*/ while(true) /* 70*/ { /* 71*/ boolean isFinished = false; /* 72*/ /* 73*/ try /* 74*/ { /* 75*/ System.out.println("1. Start Filtering"); /* 76*/ System.out.println("2. Stop Filtering"); /* 77*/ System.out.println("3. Operate Interface"); /* 78*/ System.out.println("4. Operate Filter"); /* 79*/ System.out.println("9. Finish"); /* 80*/ /* 81*/ System.out.print("> "); /* 82*/ String input = systemIn.readLine(); /* 83*/ System.out.println(); /* 84*/ /* 85*/ try /* 86*/ { /* 87*/ int inNum = Integer.parseInt(input); /* 88*/ switch(inNum) /* 89*/ { /* 90*/ case 1: startFiltering(); break; /* 91*/ case 2: stopFiltering(); break; /* 92*/ case 3: showHandleMenu(); break; /* 93*/ case 4: showFilterMenu(); break; /* 94*/ case 9: isFinished=true; break; /* 95*/ default: System.out.println("No Such Command!\n"); /* 96*/ } /* 97*/ } /* 98*/ catch(NumberFormatException nfe) /* 99*/ { /* 100*/ System.out.println("Incorrect Input!\n"); /* 101*/ } /* 102*/ } /* 103*/ catch(Exception e) /* 104*/ { /* 105*/ System.out.println("Unexpected Error Occurred!"); /* 106*/ e.printStackTrace(); /* 107*/ System.exit(1); /* 108*/ } /* 109*/ /* 110*/ if(isFinished) break; /* 111*/ } /* 112*/ /* 113*/ finisher(); /* 114*/ } // showMainMenu END /* 115*/ /* 116*/ // フィルタリングを開始する /* 117*/ private void startFiltering() throws IOException, PacketFilteringException /* 118*/ { /* 119*/ if(saver.isWorking()) /* 120*/ { /* 121*/ System.out.println("Filtering has Worked Already!\n"); /* 122*/ return; /* 123*/ } /* 124*/ /* 125*/ if(saver.getHandleNum()==0) /* 126*/ { /* 127*/ System.out.println("No Handle Has Been Made Yet!\n"); /* 128*/ return; /* 129*/ } /* 130*/ /* 131*/ try /* 132*/ { /* 133*/ InetAddress adrs = InetAddressInputter("Bound IPAddress"); /* 134*/ /* 135*/ System.out.println(); /* 136*/ showAllHandle(); /* 137*/ System.out.println(); /* 138*/ System.out.println("Inbound Interface Handle Number"); /* 139*/ System.out.print("> "); /* 140*/ int inbound = Integer.parseInt(systemIn.readLine())-1; /* 141*/ System.out.println("Outbound Interface Handle Number"); /* 142*/ System.out.print("> "); /* 143*/ int outbound = Integer.parseInt(systemIn.readLine())-1; /* 144*/ System.out.println(); /* 145*/ /* 146*/ saver.startFiltering(adrs, inbound, outbound); /* 147*/ } /* 148*/ catch(NumberFormatException nfe) /* 149*/ { /* 150*/ System.out.println("Incorrect Input!\n"); /* 151*/ } /* 152*/ } // startFiltering END /* 153*/ /* 154*/ // フィルタリングを停止する /* 155*/ private void stopFiltering() throws PacketFilteringException /* 156*/ { /* 157*/ if(!saver.isWorking()) /* 158*/ { /* 159*/ System.out.println("Filtering isn't Working Now!\n"); /* 160*/ return; /* 161*/ } /* 162*/ saver.stopFiltering(); /* 163*/ } // stopFiltering END /* 164*/ /* 165*/ // 終了処理 /* 166*/ private void finisher() throws PacketFilteringException, IOException, Exception /* 167*/ { /* 168*/ if(saver.isWorking()) /* 169*/ { /* 170*/ stopFiltering(); /* 171*/ } /* 172*/ /* 173*/ saver.recordList(lFolder); /* 174*/ } // finisher END /* 175*/ /* 176*/ /* 177*/ /* 178*/ // インタフェースハンドル関連のメニューを表示する /* 179*/ private void showHandleMenu() /* 180*/ throws IOException, ClassNotFoundException /* 181*/ { /* 182*/ while(true) /* 183*/ { /* 184*/ boolean isFinished = false; /* 185*/ /* 186*/ System.out.println("1. Show All Interface Handle"); /* 187*/ System.out.println("2. Make New Interface Handle"); /* 188*/ System.out.println("3. Delete Interface Handle"); /* 189*/ System.out.println("4. Edit Interface Handle"); /* 190*/ System.out.println("5. Load Interface Handle File"); /* 191*/ System.out.println("6. Save Interface Handle File"); /* 192*/ System.out.println("7. Delete Interface Handle File"); /* 193*/ System.out.println("9. Return"); /* 194*/ /* 195*/ try /* 196*/ { /* 197*/ System.out.print("> "); /* 198*/ String input = systemIn.readLine(); /* 199*/ System.out.println(); /* 200*/ /* 201*/ int inNum = Integer.parseInt(input); /* 202*/ switch(inNum) /* 203*/ { /* 204*/ case 1: showAllHandle(); /* 205*/ systemIn.readLine(); break; /* 206*/ case 2: makeNewHandle(); break; /* 207*/ case 3: deleteHandle(); break; /* 208*/ case 4: showEditHandleMenu(); break; /* 209*/ case 5: loadHandle(); break; /* 210*/ case 6: saveHandle(); break; /* 211*/ case 7: deleteHandleFile(); break; /* 212*/ case 9: isFinished=true; break; /* 213*/ default: System.out.println("No Such Command!\n"); /* 214*/ } /* 215*/ } /* 216*/ catch(NumberFormatException nfe) /* 217*/ { /* 218*/ System.out.println("Incorrect Input!\n"); /* 219*/ } /* 220*/ /* 221*/ if(isFinished) break; /* 222*/ } /* 223*/ } // showHandleMenu END /* 224*/ /* 225*/ // 全てのインタフェースハンドルを表示する /* 226*/ private void showAllHandle() /* 227*/ { /* 228*/ if(saver.getHandleNum()==0) /* 229*/ { /* 230*/ System.out.println("No Interface Handle Has Been Made Yet!\n"); /* 231*/ return; /* 232*/ } /* 233*/ /* 234*/ for(int i=0;i<saver.getHandleNum();i++) /* 235*/ { /* 236*/ System.out.println((i+1)+" : "+saver.getHandleString(i)); /* 237*/ } /* 238*/ } // showAllHandle END /* 239*/ /* 240*/ // 新しいインタフェースハンドルを作成する /* 241*/ private void makeNewHandle() throws IOException /* 242*/ { /* 243*/ System.out.println("1. Black List Interface Handle"); /* 244*/ System.out.println("2. White List Interface Handle"); /* 245*/ /* 246*/ try /* 247*/ { /* 248*/ System.out.print("> "); /* 249*/ String input = systemIn.readLine(); /* 250*/ /* 251*/ int inNum = Integer.parseInt(input); /* 252*/ System.out.println(); /* 253*/ /* 254*/ switch(inNum) /* 255*/ { /* 256*/ case 1: saver.addBlackListHandle(); break; /* 257*/ case 2: saver.addWhiteListHandle(); break; /* 258*/ default: System.out.println("No Such Command!\n"); /* 259*/ } /* 260*/ } /* 261*/ catch(NumberFormatException nfe) /* 262*/ { /* 263*/ System.out.println("Incorrect Input!\n"); /* 264*/ } /* 265*/ } // makeNewHandle END /* 266*/ /* 267*/ // インタフェースハンドルを削除する /* 268*/ private void deleteHandle() throws IOException /* 269*/ { /* 270*/ if(saver.getHandleNum()==0) /* 271*/ { /* 272*/ System.out.println("No Interface Handle Has Been Made Yet!\n"); /* 273*/ return; /* 274*/ } /* 275*/ /* 276*/ showAllHandle(); /* 277*/ /* 278*/ try /* 279*/ { /* 280*/ System.out.println("Interface Handle Number"); /* 281*/ System.out.print("> "); /* 282*/ String input = systemIn.readLine(); /* 283*/ System.out.println(); /* 284*/ /* 285*/ if(input.equalsIgnoreCase("all")) /* 286*/ { /* 287*/ saver.clearHandle(); /* 288*/ } /* 289*/ else /* 290*/ { /* 291*/ int index = Integer.parseInt(input)-1; /* 292*/ try /* 293*/ { /* 294*/ saver.removeHandle(index); /* 295*/ } /* 296*/ catch(IndexOutOfBoundsException ioobe) /* 297*/ { /* 298*/ System.out.println("Incorrect Input!\n"); /* 299*/ } /* 300*/ } /* 301*/ } /* 302*/ catch(NumberFormatException nfe) /* 303*/ { /* 304*/ System.out.println("Incorrect Input!\n"); /* 305*/ } /* 306*/ } // deleteHandle END /* 307*/ /* 308*/ // インタフェースハンドルファイルをロードする /* 309*/ private void loadHandle() throws IOException, ClassNotFoundException /* 310*/ { /* 311*/ // インタフェースハンドルファイル一覧の取得 /* 312*/ String[] hlist = PFSaver.searchHandle(hFolder); /* 313*/ /* 314*/ if(hlist.length==0) /* 315*/ { /* 316*/ System.out.println("Found No Interface Handle File\n"); /* 317*/ return; /* 318*/ } /* 319*/ /* 320*/ for(int i=0;i<hlist.length;i++) /* 321*/ { /* 322*/ System.out.println((i+1)+" : "+hlist[i]); /* 323*/ } /* 324*/ /* 325*/ try /* 326*/ { /* 327*/ System.out.println("Interface Handle Number"); /* 328*/ System.out.print("> "); /* 329*/ int input = Integer.parseInt(systemIn.readLine())-1; /* 330*/ System.out.println(); /* 331*/ /* 332*/ saver.readInterfaceHandle(hFolder+"\\"+hlist[input]); /* 333*/ } /* 334*/ catch(NumberFormatException nfe) /* 335*/ { /* 336*/ System.out.println("Incorrect Input!\n"); /* 337*/ } /* 338*/ catch(IndexOutOfBoundsException ioobe) /* 339*/ { /* 340*/ System.out.println("Incorrect Input!\n"); /* 341*/ } /* 342*/ catch(IOException ioe) /* 343*/ { /* 344*/ throw ioe; /* 345*/ } /* 346*/ catch(ClassNotFoundException cnfe) /* 347*/ { /* 348*/ throw cnfe; /* 349*/ } /* 350*/ catch(Exception e) /* 351*/ { /* 352*/ System.out.println("Can't This Handle!\n"); /* 353*/ } /* 354*/ } // loadHandle END /* 355*/ /* 356*/ // インタフェースハンドルを保存する /* 357*/ private void saveHandle() throws IOException /* 358*/ { /* 359*/ if(saver.getHandleNum()==0) /* 360*/ { /* 361*/ System.out.println("No Handle Has Been Made Yet!\n"); /* 362*/ return; /* 363*/ } /* 364*/ /* 365*/ showAllHandle(); /* 366*/ /* 367*/ try /* 368*/ { /* 369*/ System.out.println("Interface Handle Number"); /* 370*/ System.out.print("> "); /* 371*/ int index = Integer.parseInt(systemIn.readLine())-1; /* 372*/ /* 373*/ System.out.println("Interface Handle File Name"); /* 374*/ System.out.print("> "); /* 375*/ String filename = systemIn.readLine(); /* 376*/ /* 377*/ // 上書き /* 378*/ if(PFSaver.existHandle(hFolder+"\\"+filename)) /* 379*/ { /* 380*/ System.out.println("Overwrite? Y/N"); /* 381*/ while(true) /* 382*/ { /* 383*/ System.out.print("> "); /* 384*/ String input = systemIn.readLine(); /* 385*/ if(input.equalsIgnoreCase("Y")) /* 386*/ { /* 387*/ try /* 388*/ { /* 389*/ saver.writeInterfaceHandle(hFolder+"\\"+filename, index); /* 390*/ } /* 391*/ catch(IndexOutOfBoundsException ioobe) /* 392*/ { /* 393*/ System.out.println("Incorrect Input!\n"); /* 394*/ continue; /* 395*/ } /* 396*/ /* 397*/ break; /* 398*/ } /* 399*/ else if(input.equalsIgnoreCase("N")) /* 400*/ { /* 401*/ break; /* 402*/ } /* 403*/ else /* 404*/ { /* 405*/ System.out.println("Incorrect Input!\n"); /* 406*/ } /* 407*/ } /* 408*/ System.out.println(); /* 409*/ } /* 410*/ else /* 411*/ { /* 412*/ try /* 413*/ { /* 414*/ System.out.println(); /* 415*/ saver.writeInterfaceHandle(hFolder+"\\"+filename, index); /* 416*/ } /* 417*/ catch(IndexOutOfBoundsException ioobe) /* 418*/ { /* 419*/ System.out.println("Incorrect Input!\n"); /* 420*/ } /* 421*/ } /* 422*/ } /* 423*/ catch(NumberFormatException nfe) /* 424*/ { /* 425*/ System.out.println("Incorrect Input!\n"); /* 426*/ } /* 427*/ } // saveHandle END /* 428*/ /* 429*/ // インタフェースハンドルファイルを削除する /* 430*/ private void deleteHandleFile() throws IOException /* 431*/ { /* 432*/ // インタフェースハンドルファイル一覧の取得 /* 433*/ String[] hlist = PFSaver.searchHandle(hFolder); /* 434*/ /* 435*/ if(hlist.length==0) /* 436*/ { /* 437*/ System.out.println("Found No Interface Handle File\n"); /* 438*/ return; /* 439*/ } /* 440*/ /* 441*/ for(int i=0;i<hlist.length;i++) /* 442*/ { /* 443*/ System.out.println((i+1)+" : "+hlist[i]); /* 444*/ } /* 445*/ /* 446*/ try /* 447*/ { /* 448*/ System.out.println("Interface Handle Number"); /* 449*/ System.out.print("> "); /* 450*/ int input = Integer.parseInt(systemIn.readLine())-1; /* 451*/ System.out.println(); /* 452*/ /* 453*/ try /* 454*/ { /* 455*/ PFSaver.deleteHandle(hFolder+"\\"+hlist[input]); /* 456*/ } /* 457*/ catch(IndexOutOfBoundsException ioobe) /* 458*/ { /* 459*/ System.out.println("Incorrect Input!\n"); /* 460*/ } /* 461*/ catch(Exception e) /* 462*/ { /* 463*/ System.out.println("Can't Delete This File!\n"); /* 464*/ } /* 465*/ } /* 466*/ catch(NumberFormatException nfe) /* 467*/ { /* 468*/ System.out.println("Incorrect Input!\n"); /* 469*/ } /* 470*/ } // deleteHandleFile END /* 471*/ /* 472*/ /* 473*/ /* 474*/ // インタフェースハンドル編集メニューを表示する /* 475*/ private void showEditHandleMenu() throws IOException /* 476*/ { /* 477*/ if(saver.getHandleNum()==0) /* 478*/ { /* 479*/ System.out.println("No Handle Has Been Made Yet!\n"); /* 480*/ return; /* 481*/ } /* 482*/ /* 483*/ while(true) /* 484*/ { /* 485*/ boolean isFinished = false; /* 486*/ /* 487*/ System.out.println("1. Show Filters in Interface Handle"); /* 488*/ System.out.println("2. Add Filter to Interface Handle"); /* 489*/ System.out.println("3. Remove Filter from Interface Handle"); /* 490*/ System.out.println("9. Return"); /* 491*/ /* 492*/ System.out.print("> "); /* 493*/ String input = systemIn.readLine(); /* 494*/ System.out.println(); /* 495*/ /* 496*/ try /* 497*/ { /* 498*/ int inNum = Integer.parseInt(input); /* 499*/ switch(inNum) /* 500*/ { /* 501*/ case 1: showFiltersInHandle(); /* 502*/ systemIn.readLine(); break; /* 503*/ case 2: addFilterToHandle(); break; /* 504*/ case 3: removeFilterFromHandle(); break; /* 505*/ case 9: isFinished=true; break; /* 506*/ default: System.out.println("No Such Command!\n"); /* 507*/ } /* 508*/ } /* 509*/ catch(NumberFormatException nfe) /* 510*/ { /* 511*/ System.out.println("Incorrect Input!\n"); /* 512*/ } /* 513*/ /* 514*/ if(isFinished) break; /* 515*/ } /* 516*/ } // showEditHandleMenu END /* 517*/ /* 518*/ // インタフェースハンドル内の全てのフィルタを表示する /* 519*/ private void showFiltersInHandle() throws IOException /* 520*/ { /* 521*/ showAllHandle(); /* 522*/ /* 523*/ try /* 524*/ { /* 525*/ System.out.println("Interface Handle Number"); /* 526*/ System.out.print("> "); /* 527*/ int input = Integer.parseInt(systemIn.readLine())-1; /* 528*/ System.out.println(); /* 529*/ /* 530*/ String[] list = saver.toStringFiltersInHandle(input); /* 531*/ /* 532*/ if(list.length==0) /* 533*/ { /* 534*/ System.out.println("No Filter is Added in!"); /* 535*/ return; /* 536*/ } /* 537*/ /* 538*/ for(int i=0;i<list.length;i++) /* 539*/ { /* 540*/ System.out.println(list[i]); /* 541*/ } /* 542*/ } /* 543*/ catch(NumberFormatException nfe) /* 544*/ { /* 545*/ System.out.println("Incorrect Input!\n"); /* 546*/ } /* 547*/ catch(IndexOutOfBoundsException ioobe) /* 548*/ { /* 549*/ System.out.println("Incorrect Input!\n"); /* 550*/ } /* 551*/ } // showFiltersInHandle END /* 552*/ /* 553*/ // フィルタをインタフェースハンドルに加える /* 554*/ private void addFilterToHandle() throws IOException /* 555*/ { /* 556*/ try /* 557*/ { /* 558*/ showAllHandle(); /* 559*/ System.out.println("Interface Handle Number"); /* 560*/ System.out.print("> "); /* 561*/ int hnum = Integer.parseInt(systemIn.readLine())-1; /* 562*/ System.out.println(); /* 563*/ /* 564*/ if(hnum > saver.getHandleNum()-1 || hnum < 0) /* 565*/ throw new IndexOutOfBoundsException("Index: "+Integer.toString(hnum)); /* 566*/ /* 567*/ if(saver.getFilterNum()==0) /* 568*/ { /* 569*/ System.out.println("No Filter Has Been Made Yet!\n"); /* 570*/ return; /* 571*/ } /* 572*/ /* 573*/ showAllFilter(); /* 574*/ System.out.println("Filter Number"); /* 575*/ System.out.print("> "); /* 576*/ int fnum = Integer.parseInt(systemIn.readLine())-1; /* 577*/ System.out.println(); /* 578*/ /* 579*/ saver.setFilterToHandle(hnum,fnum); /* 580*/ } /* 581*/ catch(NumberFormatException nfe) /* 582*/ { /* 583*/ System.out.println("Incorrect Input!\n"); /* 584*/ } /* 585*/ catch(IndexOutOfBoundsException ioobe) /* 586*/ { /* 587*/ System.out.println("Incorrect Input!\n"); /* 588*/ } /* 589*/ } // addFilterToHandle END /* 590*/ /* 591*/ // インタフェースハンドルからフィルタを取り除く /* 592*/ private void removeFilterFromHandle() throws IOException /* 593*/ { /* 594*/ showAllHandle(); /* 595*/ /* 596*/ try /* 597*/ { /* 598*/ System.out.println("Interface Handle Number"); /* 599*/ System.out.print("> "); /* 600*/ int hIndex = Integer.parseInt(systemIn.readLine())-1; /* 601*/ System.out.println(); /* 602*/ /* 603*/ String[] list = saver.toStringFiltersInHandle(hIndex); /* 604*/ /* 605*/ if(list.length==0) /* 606*/ { /* 607*/ System.out.println("No Filter is Added in!\n"); /* 608*/ return; /* 609*/ } /* 610*/ /* 611*/ for(int i=0;i<list.length;i++) /* 612*/ { /* 613*/ System.out.println((i+1)+" : "+list[i]); /* 614*/ } /* 615*/ System.out.println("Filter Number"); /* 616*/ System.out.print("> "); /* 617*/ int fIndex = Integer.parseInt(systemIn.readLine())-1; /* 618*/ System.out.println(); /* 619*/ /* 620*/ saver.removeFilterFromHandle(hIndex, fIndex); /* 621*/ } /* 622*/ catch(NumberFormatException nfe) /* 623*/ { /* 624*/ System.out.println("Incorrect Input!\n"); /* 625*/ } /* 626*/ catch(IndexOutOfBoundsException ioobe) /* 627*/ { /* 628*/ System.out.println("Incorrect Input!\n"); /* 629*/ } /* 630*/ } // removeFilterFromHandle END /* 631*/ /* 632*/ /* 633*/ /* 634*/ // フィルタ関連のメニューを表示する /* 635*/ private void showFilterMenu() /* 636*/ throws IOException, PacketFilteringException, ClassNotFoundException /* 637*/ { /* 638*/ while(true) /* 639*/ { /* 640*/ boolean isFinished = false; /* 641*/ /* 642*/ System.out.println("1. Show All Filter"); /* 643*/ System.out.println("2. Make new Filter"); /* 644*/ System.out.println("3. Delete Filter"); /* 645*/ System.out.println("4. Edit Filter"); /* 646*/ System.out.println("5. Load Filter File"); /* 647*/ System.out.println("6. Save Filter File"); /* 648*/ System.out.println("7. Delete Filter File"); /* 649*/ System.out.println("9. Return"); /* 650*/ /* 651*/ try /* 652*/ { /* 653*/ System.out.print("> "); /* 654*/ String input = systemIn.readLine(); /* 655*/ System.out.println(); /* 656*/ /* 657*/ int inNum = Integer.parseInt(input); /* 658*/ switch(inNum) /* 659*/ { /* 660*/ case 1: showAllFilter(); /* 661*/ systemIn.readLine(); break; /* 662*/ case 2: makeNewFilter(); break; /* 663*/ case 3: deleteFilter(); break; /* 664*/ case 4: editFilter(); break; /* 665*/ case 5: loadFilter(); break; /* 666*/ case 6: saveFilter(); break; /* 667*/ case 7: deleteFilterFile(); break; /* 668*/ case 9: isFinished=true; break; /* 669*/ default: System.out.println("No Such Command!\n"); /* 670*/ } /* 671*/ } /* 672*/ catch(NumberFormatException nfe) /* 673*/ { /* 674*/ System.out.println("Incorrect Input!\n"); /* 675*/ } /* 676*/ /* 677*/ if(isFinished) break; /* 678*/ } /* 679*/ } // showFilterMenu END /* 680*/ /* 681*/ // 全てのフィルタを表示する /* 682*/ private void showAllFilter() /* 683*/ { /* 684*/ if(saver.getFilterNum()==0) /* 685*/ { /* 686*/ System.out.println("No Filter Has Been Made Yet!\n"); /* 687*/ return; /* 688*/ } /* 689*/ /* 690*/ for(int i=0;i<saver.getFilterNum();i++) /* 691*/ { /* 692*/ System.out.println((i+1)+" : "+saver.getFilterString(i)); /* 693*/ } /* 694*/ } // showAllFilter END /* 695*/ /* 696*/ // フィルタを削除する /* 697*/ private void deleteFilter() throws IOException /* 698*/ { /* 699*/ if(saver.getFilterNum()==0) /* 700*/ { /* 701*/ System.out.println("No Filter Has Been Made Yet!\n"); /* 702*/ return; /* 703*/ } /* 704*/ /* 705*/ showAllFilter(); /* 706*/ /* 707*/ try /* 708*/ { /* 709*/ System.out.println("Filter Number"); /* 710*/ System.out.print("> "); /* 711*/ String input = systemIn.readLine(); /* 712*/ System.out.println(); /* 713*/ /* 714*/ if(input.equalsIgnoreCase("all")) /* 715*/ { /* 716*/ saver.clearFilter(); /* 717*/ } /* 718*/ else /* 719*/ { /* 720*/ int index = Integer.parseInt(input)-1; /* 721*/ saver.removeFilter(index); /* 722*/ } /* 723*/ } /* 724*/ catch(NumberFormatException nfe) /* 725*/ { /* 726*/ System.out.println("Incorrect Input!\n"); /* 727*/ } /* 728*/ catch(IndexOutOfBoundsException ioobe) /* 729*/ { /* 730*/ System.out.println("Incorrect Input!\n"); /* 731*/ } /* 732*/ } // deleteFilter END /* 733*/ /* 734*/ // フィルタファイルをロードする /* 735*/ private void loadFilter() throws IOException, ClassNotFoundException /* 736*/ { /* 737*/ // フィルタディスクリプタファイル一覧の取得 /* 738*/ String[] list = PFSaver.searchFilter(fFolder); /* 739*/ /* 740*/ if(list.length==0) /* 741*/ { /* 742*/ System.out.println("Found No Filter File\n"); /* 743*/ return; /* 744*/ } /* 745*/ /* 746*/ for(int i=0;i<list.length;i++) /* 747*/ { /* 748*/ System.out.println((i+1)+" : "+list[i]); /* 749*/ } /* 750*/ /* 751*/ try /* 752*/ { /* 753*/ System.out.print("> "); /* 754*/ int input = Integer.parseInt(systemIn.readLine())-1; /* 755*/ System.out.println(); /* 756*/ /* 757*/ try /* 758*/ { /* 759*/ saver.readFilterDescriptor(fFolder+"\\"+list[input]); /* 760*/ } /* 761*/ catch(IndexOutOfBoundsException ioobe) /* 762*/ { /* 763*/ System.out.println("Incorrect Input!\n"); /* 764*/ } /* 765*/ } /* 766*/ catch(NumberFormatException nfe) /* 767*/ { /* 768*/ System.out.println("Incorrect Input!\n"); /* 769*/ } /* 770*/ } // loadFilter END /* 771*/ /* 772*/ // フィルタをファイルに保存する /* 773*/ private void saveFilter() throws IOException /* 774*/ { /* 775*/ if(saver.getFilterNum()==0) /* 776*/ { /* 777*/ System.out.println("No Filter Has Been Made Yet!\n"); /* 778*/ return; /* 779*/ } /* 780*/ /* 781*/ showAllFilter(); /* 782*/ /* 783*/ try /* 784*/ { /* 785*/ System.out.println("Filter Number"); /* 786*/ System.out.print("> "); /* 787*/ int index = Integer.parseInt(systemIn.readLine())-1; /* 788*/ /* 789*/ System.out.println("Filter File Name"); /* 790*/ String filename = systemIn.readLine(); /* 791*/ /* 792*/ if(PFSaver.existFilter(fFolder+"\\"+filename)) /* 793*/ { /* 794*/ System.out.println("Overwrite? Y/N"); /* 795*/ while(true) /* 796*/ { /* 797*/ System.out.print("> "); /* 798*/ String input = systemIn.readLine(); /* 799*/ if(input.equalsIgnoreCase("Y")) /* 800*/ { /* 801*/ try /* 802*/ { /* 803*/ saver.writeFilterDescriptor(fFolder+"\\"+filename, index); /* 804*/ } /* 805*/ catch(IndexOutOfBoundsException ioobe) /* 806*/ { /* 807*/ System.out.println("Incorrect Input!"); /* 808*/ continue; /* 809*/ } /* 810*/ /* 811*/ break; /* 812*/ } /* 813*/ else if(input.equalsIgnoreCase("N")) /* 814*/ { /* 815*/ break; /* 816*/ } /* 817*/ else /* 818*/ { /* 819*/ System.out.println("Incorrect Input!"); /* 820*/ } /* 821*/ } /* 822*/ } /* 823*/ else /* 824*/ { /* 825*/ try /* 826*/ { /* 827*/ saver.writeFilterDescriptor(fFolder+"\\"+filename, index); /* 828*/ } /* 829*/ catch(IndexOutOfBoundsException ioobe) /* 830*/ { /* 831*/ System.out.println("Incorrect Input!"); /* 832*/ } /* 833*/ } /* 834*/ System.out.println(); /* 835*/ } /* 836*/ catch(NumberFormatException nfe) /* 837*/ { /* 838*/ System.out.println("Incorrect Input!\n"); /* 839*/ } /* 840*/ } // saveFilter END /* 841*/ /* 842*/ // フィルタファイルを削除する /* 843*/ private void deleteFilterFile() throws IOException /* 844*/ { /* 845*/ // フィルタディスクリプタファイル一覧の取得 /* 846*/ String[] list = PFSaver.searchFilter(fFolder); /* 847*/ /* 848*/ if(list.length==0) /* 849*/ { /* 850*/ System.out.println("Found No Filter File\n"); /* 851*/ return; /* 852*/ } /* 853*/ /* 854*/ for(int i=0;i<list.length;i++) /* 855*/ { /* 856*/ System.out.println((i+1)+" : "+list[i]); /* 857*/ } /* 858*/ /* 859*/ try /* 860*/ { /* 861*/ System.out.println("Filter File Number"); /* 862*/ System.out.print("> "); /* 863*/ int index = Integer.parseInt(systemIn.readLine())-1; /* 864*/ System.out.println(); /* 865*/ /* 866*/ saver.deleteFilter(fFolder+"\\"+list[index]); /* 867*/ } /* 868*/ catch(NumberFormatException nfe) /* 869*/ { /* 870*/ System.out.println("Incorrect Input!\n"); /* 871*/ } /* 872*/ catch(IndexOutOfBoundsException ioobe) /* 873*/ { /* 874*/ System.out.println("Incorrect Input!\n"); /* 875*/ } /* 876*/ } // deleteFilterFile END /* 877*/ /* 878*/ /* 879*/ /* 880*/ // 新しいフィルタを作成する /* 881*/ private void makeNewFilter() throws IOException /* 882*/ { /* 883*/ System.out.println("1. IP Filter"); /* 884*/ System.out.println("2. ICMP Filter"); /* 885*/ System.out.println("3. TCP Filter"); /* 886*/ System.out.println("4. UDP Filter"); /* 887*/ System.out.println("9. Return"); /* 888*/ System.out.print("> "); /* 889*/ /* 890*/ try /* 891*/ { /* 892*/ String input = systemIn.readLine(); /* 893*/ System.out.println(); /* 894*/ /* 895*/ int inNum = Integer.parseInt(input); /* 896*/ switch(inNum) /* 897*/ { /* 898*/ case 1: makeNewIPFilter(); break; /* 899*/ case 2: makeNewICMPFilter(); break; /* 900*/ case 3: makeNewTCPFilter(); break; /* 901*/ case 4: makeNewUDPFilter(); break; /* 902*/ default: System.out.println("No Such Command!\n"); /* 903*/ } /* 904*/ System.out.println(); /* 905*/ } /* 906*/ catch(NumberFormatException nfe) /* 907*/ { /* 908*/ System.out.println("Incorrect Input!\n"); /* 909*/ } /* 910*/ catch(IllegalArgumentException iae) /* 911*/ { /* 912*/ System.out.println("Incorrect Input!\n"); /* 913*/ } /* 914*/ } // makeNewFilter END /* 915*/ /* 916*/ // 新しいIPフィルタを作成する /* 917*/ private void makeNewIPFilter() throws IOException /* 918*/ { /* 919*/ InetAddress[] inetadrs = get4IPelements(); /* 920*/ /* 921*/ saver.addIPfilter(inetadrs[0], inetadrs[1], inetadrs[2], inetadrs[3]); /* 922*/ } // makeNewIPFilter END /* 923*/ /* 924*/ // 新しいICMPフィルタを作成する /* 925*/ private void makeNewICMPFilter() throws IOException /* 926*/ { /* 927*/ InetAddress[] inetadrs = get4IPelements(); /* 928*/ /* 929*/ saver.addICMPfilter(inetadrs[0], inetadrs[1], inetadrs[2], inetadrs[3]); /* 930*/ } // makeNewICMPFilter END /* 931*/ /* 932*/ // 新しいTCPフィルタを作成する /* 933*/ private void makeNewTCPFilter() throws IOException /* 934*/ { /* 935*/ InetAddress[] inetadrs = get4IPelements(); /* 936*/ /* 937*/ int[] ports = get4port(); /* 938*/ /* 939*/ saver.addTCPfilter(inetadrs[0], inetadrs[1], inetadrs[2], inetadrs[3], /* 940*/ ports[0], ports[1], ports[2], ports[3]); /* 941*/ } // makeNewTCPFilter END /* 942*/ /* 943*/ // 新しいUDPフィルタを作成する /* 944*/ private void makeNewUDPFilter() throws IOException /* 945*/ { /* 946*/ InetAddress[] inetadrs = get4IPelements(); /* 947*/ /* 948*/ int[] ports = get4port(); /* 949*/ /* 950*/ saver.addUDPfilter(inetadrs[0], inetadrs[1], inetadrs[2], inetadrs[3], /* 951*/ ports[0], ports[1], ports[2], ports[3]); /* 952*/ } // makeNewTCPFilter END /* 953*/ /* 954*/ /* 955*/ /* 956*/ // フィルタを編集する /* 957*/ private void editFilter() throws IOException /* 958*/ { /* 959*/ if(saver.getFilterNum()==0) /* 960*/ { /* 961*/ System.out.println("No Filter Has Been Made Yet!\n"); /* 962*/ return; /* 963*/ } /* 964*/ /* 965*/ showAllFilter(); /* 966*/ /* 967*/ try /* 968*/ { /* 969*/ System.out.println("Filter Number"); /* 970*/ System.out.print("> "); /* 971*/ int input = Integer.parseInt(systemIn.readLine())-1; /* 972*/ System.out.println(); /* 973*/ int protocol = saver.getFilterProtocol(input); /* 974*/ switch(protocol) /* 975*/ { /* 976*/ case PacketFiltering.ANY_PROTOCOL: editIPFilter(input); break; /* 977*/ case PacketFiltering.ICMP: editICMPFilter(input); break; /* 978*/ case PacketFiltering.TCP: editTCPFilter(input); break; /* 979*/ case PacketFiltering.UDP: editUDPFilter(input); break; /* 980*/ } /* 981*/ System.out.println(); /* 982*/ } /* 983*/ catch(NumberFormatException nfe) /* 984*/ { /* 985*/ System.out.println("Incorrect Input!\n"); /* 986*/ } /* 987*/ catch(IndexOutOfBoundsException ioobe) /* 988*/ { /* 989*/ System.out.println("Incorrect Input!\n"); /* 990*/ } /* 991*/ catch(IllegalArgumentException iae) /* 992*/ { /* 993*/ System.out.println("Incorrect Input!\n"); /* 994*/ } /* 995*/ } // editFilter END /* 996*/ /* 997*/ // IPフィルタを編集する /* 998*/ private void editIPFilter(int index) throws IOException /* 999*/ { /*1000*/ InetAddress[] inetadrs = get4IPelementsE(); /*1001*/ /*1002*/ try /*1003*/ { /*1004*/ saver.editIPFilter(index, inetadrs[0], inetadrs[1], /*1005*/ inetadrs[2], inetadrs[3]); /*1006*/ } /*1007*/ catch(IndexOutOfBoundsException ioobe) /*1008*/ { /*1009*/ System.out.println("Incorrect Input!\n"); /*1010*/ } /*1011*/ } // editIPFilter END /*1012*/ /*1013*/ // ICMPフィルタを編集する /*1014*/ private void editICMPFilter(int index) throws IOException /*1015*/ { /*1016*/ InetAddress[] inetadrs = get4IPelementsE(); /*1017*/ /*1018*/ try /*1019*/ { /*1020*/ saver.editICMPFilter(index, inetadrs[0], inetadrs[1], /*1021*/ inetadrs[2], inetadrs[3]); /*1022*/ } /*1023*/ catch(IndexOutOfBoundsException ioobe) /*1024*/ { /*1025*/ System.out.println("Incorrect Input!\n"); /*1026*/ } /*1027*/ } // editICMPFilter END /*1028*/ /*1029*/ // TCPフィルタを編集する /*1030*/ private void editTCPFilter(int index) throws IOException /*1031*/ { /*1032*/ InetAddress[] inetadrs = get4IPelementsE(); /*1033*/ /*1034*/ int[] ports = get4portE(); /*1035*/ /*1036*/ try /*1037*/ { /*1038*/ saver.editTCPFilter(index, inetadrs[0], inetadrs[1], inetadrs[2], /*1039*/ inetadrs[3], ports[0], ports[1], ports[2], ports[3]); /*1040*/ } /*1041*/ catch(IndexOutOfBoundsException ioobe) /*1042*/ { /*1043*/ System.out.println("Incorrect Input!\n"); /*1044*/ } /*1045*/ } // editTCPFilter END /*1046*/ /*1047*/ // UDPフィルタを編集する /*1048*/ private void editUDPFilter(int index) throws IOException /*1049*/ { /*1050*/ InetAddress[] inetadrs = get4IPelementsE(); /*1051*/ /*1052*/ int[] ports = get4portE(); /*1053*/ /*1054*/ try /*1055*/ { /*1056*/ saver.editUDPFilter(index, inetadrs[0], inetadrs[1], inetadrs[2], /*1057*/ inetadrs[3], ports[0], ports[1], ports[2], ports[3]); /*1058*/ } /*1059*/ catch(IndexOutOfBoundsException ioobe) /*1060*/ { /*1061*/ System.out.println("Incorrect Input!\n"); /*1062*/ } /*1063*/ } // editUDPFilter END /*1064*/ /*1065*/ /*1066*/ /*1067*/ /*1068*/ // 送信元、送信先のポート番号と(X〜Y)を求める /*1069*/ private int[] get4port() throws IOException /*1070*/ { /*1071*/ int[] ports = new int[4]; /*1072*/ /*1073*/ ports[0] = portInputter("Source Port"); /*1074*/ ports[2] = portInputter("Ceiling Source Port"); /*1075*/ ports[1] = portInputter("Destinatiopn Port"); /*1076*/ ports[3] = portInputter("Ceiling Destinatiopn Port"); /*1077*/ /*1078*/ return ports; /*1079*/ } // get4port END /*1080*/ /*1081*/ // 送信元、送信先のポート番号と(X〜Y)を求める /*1082*/ private int[] get4portE() throws IOException /*1083*/ { /*1084*/ int[] ports = new int[4]; /*1085*/ /*1086*/ ports[0] = portInputterE("Source Port"); /*1087*/ ports[2] = portInputterE("Ceiling Source Port"); /*1088*/ ports[1] = portInputterE("Destinatiopn Port"); /*1089*/ ports[3] = portInputterE("Ceiling Destinatiopn Port"); /*1090*/ /*1091*/ return ports; /*1092*/ } // get4portE END /*1093*/ /*1094*/ // InetAddressを求める /*1095*/ private InetAddress InetAddressInputterE(String s) throws IOException /*1096*/ { /*1097*/ InetAddress adrs; /*1098*/ String input; /*1099*/ /*1100*/ while(true) /*1101*/ { /*1102*/ try /*1103*/ { /*1104*/ System.out.println(s); /*1105*/ System.out.print("> "); /*1106*/ input = systemIn.readLine(); /*1107*/ if(input.equalsIgnoreCase("localhost")) /*1108*/ { /*1109*/ adrs = InetAddress.getLocalHost(); /*1110*/ } /*1111*/ else if(input.equalsIgnoreCase("nomask")) /*1112*/ { /*1113*/ adrs = PacketFiltering.NO_MASKv4; /*1114*/ } /*1115*/ else if(input.equalsIgnoreCase("nomaskv6")) /*1116*/ { /*1117*/ adrs = PacketFiltering.NO_MASKv6; /*1118*/ } /*1119*/ else if(input.equalsIgnoreCase("all")) /*1120*/ { /*1121*/ adrs = PacketFiltering.ALL_IPv4; /*1122*/ } /*1123*/ else if(input.equalsIgnoreCase("allv6")) /*1124*/ { /*1125*/ adrs = PacketFiltering.ALL_IPv6; /*1126*/ } /*1127*/ else if(input.equalsIgnoreCase("noedit")) /*1128*/ { /*1129*/ adrs = null; /*1130*/ } /*1131*/ else /*1132*/ { /*1133*/ adrs = getByAddress(input); /*1134*/ } /*1135*/ break; /*1136*/ } /*1137*/ catch(UnknownHostException uhe) /*1138*/ { /*1139*/ System.out.println("Incorrect Input!\n"); /*1140*/ } /*1141*/ catch(NumberFormatException nfe) /*1142*/ { /*1143*/ System.out.println("Incorrect Input!\n"); /*1144*/ } /*1145*/ } /*1146*/ /*1147*/ return adrs; /*1148*/ } // InetAddressInputterE END /*1149*/ /*1150*/ // InetAddressを求める /*1151*/ private InetAddress InetAddressInputter(String s) throws IOException /*1152*/ { /*1153*/ InetAddress adrs; /*1154*/ String input; /*1155*/ /*1156*/ while(true) /*1157*/ { /*1158*/ try /*1159*/ { /*1160*/ System.out.println(s); /*1161*/ System.out.print("> "); /*1162*/ input = systemIn.readLine(); /*1163*/ if(input.equalsIgnoreCase("localhost")) /*1164*/ { /*1165*/ adrs = InetAddress.getLocalHost(); /*1166*/ } /*1167*/ else if(input.equalsIgnoreCase("nomask")) /*1168*/ { /*1169*/ adrs = PacketFiltering.NO_MASKv4; /*1170*/ } /*1171*/ else if(input.equalsIgnoreCase("nomaskv6")) /*1172*/ { /*1173*/ adrs = PacketFiltering.NO_MASKv6; /*1174*/ } /*1175*/ else if(input.equalsIgnoreCase("all")) /*1176*/ { /*1177*/ adrs = PacketFiltering.ALL_IPv4; /*1178*/ } /*1179*/ else if(input.equalsIgnoreCase("allv6")) /*1180*/ { /*1181*/ adrs = PacketFiltering.ALL_IPv6; /*1182*/ } /*1183*/ else /*1184*/ { /*1185*/ adrs = getByAddress(input); /*1186*/ } /*1187*/ break; /*1188*/ } /*1189*/ catch(UnknownHostException uhe) /*1190*/ { /*1191*/ System.out.println("Incorrect Input!\n"); /*1192*/ } /*1193*/ catch(NumberFormatException nfe) /*1194*/ { /*1195*/ System.out.println("Incorrect Input!\n"); /*1196*/ } /*1197*/ } /*1198*/ /*1199*/ return adrs; /*1200*/ } // InetAddressInputter END /*1201*/ /*1202*/ // 送信元、送信先のIPアドレスとサブネットマスクを入力させる /*1203*/ private InetAddress[] get4IPelementsE() throws IOException /*1204*/ { /*1205*/ InetAddress[] inetadrs = new InetAddress[4]; /*1206*/ /*1207*/ inetadrs[0] = InetAddressInputterE("Source IPAddress"); /*1208*/ inetadrs[1] = InetAddressInputterE("Source Subnet Mask"); /*1209*/ inetadrs[2] = InetAddressInputterE("Destinatiopn IPAddress"); /*1210*/ inetadrs[3] = InetAddressInputterE("Destinatiopn Subnet Mask"); /*1211*/ /*1212*/ return inetadrs; /*1213*/ } // get4IPelements END /*1214*/ /*1215*/ // 送信元、送信先のIPアドレスとサブネットマスクを入力させる /*1216*/ private InetAddress[] get4IPelements() throws IOException /*1217*/ { /*1218*/ InetAddress[] inetadrs = new InetAddress[4]; /*1219*/ /*1220*/ inetadrs[0] = InetAddressInputter("Source IPAddress"); /*1221*/ inetadrs[1] = InetAddressInputter("Source Subnet Mask"); /*1222*/ inetadrs[2] = InetAddressInputter("Destinatiopn IPAddress"); /*1223*/ inetadrs[3] = InetAddressInputter("Destinatiopn Subnet Mask"); /*1224*/ /*1225*/ return inetadrs; /*1226*/ } // get4IPelements END /*1227*/ /*1228*/ // ポート番号を求める /*1229*/ private int portInputter(String s) throws IOException /*1230*/ { /*1231*/ int port; /*1232*/ String input; /*1233*/ /*1234*/ while(true) /*1235*/ { /*1236*/ try /*1237*/ { /*1238*/ System.out.println(s); /*1239*/ System.out.print("> "); /*1240*/ input = systemIn.readLine(); /*1241*/ if(input.equalsIgnoreCase("anyport")) /*1242*/ { /*1243*/ port = PacketFiltering.ANY_PORT; /*1244*/ } /*1245*/ else if(input.equalsIgnoreCase("noset")) /*1246*/ { /*1247*/ port = PacketFiltering.ONLY_1_PORT; /*1248*/ } /*1249*/ else /*1250*/ { /*1251*/ port = Integer.parseInt(input); /*1252*/ } /*1253*/ break; /*1254*/ } /*1255*/ catch(NumberFormatException nfe) /*1256*/ { /*1257*/ System.out.println("Incorrect Input!\n"); /*1258*/ } /*1259*/ } /*1260*/ /*1261*/ return port; /*1262*/ } // InetAddress END /*1263*/ /*1264*/ // ポート番号を求める /*1265*/ private int portInputterE(String s) throws IOException /*1266*/ { /*1267*/ int port; /*1268*/ String input; /*1269*/ /*1270*/ while(true) /*1271*/ { /*1272*/ try /*1273*/ { /*1274*/ System.out.println(s); /*1275*/ System.out.print("> "); /*1276*/ input = systemIn.readLine(); /*1277*/ if(input.equalsIgnoreCase("anyport")) /*1278*/ { /*1279*/ port = PacketFiltering.ANY_PORT; /*1280*/ } /*1281*/ else if(input.equalsIgnoreCase("noset")) /*1282*/ { /*1283*/ port = PacketFiltering.ONLY_1_PORT; /*1284*/ } /*1285*/ else if(input.equalsIgnoreCase("noedit")) /*1286*/ { /*1287*/ port = PacketFiltering.NO_SET; /*1288*/ } /*1289*/ else /*1290*/ { /*1291*/ port = Integer.parseInt(input); /*1292*/ } /*1293*/ break; /*1294*/ } /*1295*/ catch(NumberFormatException nfe) /*1296*/ { /*1297*/ System.out.println("Incorrect Input!\n"); /*1298*/ } /*1299*/ } /*1300*/ /*1301*/ return port; /*1302*/ } // InetAddress END /*1303*/ /*1304*/ // String形式アドレスからInetAddressを得る /*1305*/ private static InetAddress getByAddress(String ipadrs) /*1306*/ throws NumberFormatException, UnknownHostException /*1307*/ { /*1308*/ StringTokenizer tok = new StringTokenizer(ipadrs ,"."); /*1309*/ byte[] adrspart = new byte[tok.countTokens()]; /*1310*/ /*1311*/ for(int i=0;tok.hasMoreTokens();i++) /*1312*/ { /*1313*/ String input = tok.nextToken(); /*1314*/ adrspart[i] = (byte)(Integer.parseInt(input)); /*1315*/ } /*1316*/ /*1317*/ return InetAddress.getByAddress(adrspart); /*1318*/ } //InetAddress END /*1319*/ /*1320*/ /*1321*/ /*1322*/ public static void main(String[] args) /*1323*/ { /*1324*/ try /*1325*/ { /*1326*/ PFSaver_CUI app = new PFSaver_CUI(); /*1327*/ app.showMainMenu(); /*1328*/ } /*1329*/ catch(Exception e) /*1330*/ { /*1331*/ e.printStackTrace(); /*1332*/ } /*1333*/ } /*1334*/ }