Changeset 2184

Show
Ignore:
Timestamp:
05/23/08 16:24:39 (6 months ago)
Author:
apatel
Message:

Implemented test logic that creates in memory data structure of the Network feature and then generates fnet file from it.

Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • trunk/framework-plugin/src/com/tresys/framework/compiler/Compiler.java

    r2179 r2184  
    3030import com.tresys.framework.compiler.dictionary.DictionaryValidator; 
    3131import com.tresys.framework.compiler.linkage.Linkage; 
     32import com.tresys.framework.compiler.linkage.net.Endpoint; 
    3233import com.tresys.framework.compiler.linkage.net.FNETParser; 
     34import com.tresys.framework.compiler.linkage.net.NetConnection; 
     35import com.tresys.framework.compiler.linkage.net.NetResource; 
     36import com.tresys.framework.compiler.linkage.net.NetSystem; 
    3337import com.tresys.framework.compiler.linkage.net.NetworkConfig; 
     38import com.tresys.framework.compiler.linkage.net.Token; 
    3439import com.tresys.framework.compiler.mls.MLSInitializationException; 
    3540import com.tresys.framework.compiler.mls.MLSSupport; 
     
    3742import com.tresys.framework.compiler.policy.PolicyValidator; 
    3843import com.tresys.framework.compiler.policy.SystemResourceValidator; 
     44import com.tresys.framework.compiler.systemResources.NetworkInfo; 
    3945import com.tresys.framework.compiler.systemResources.SystemResources; 
    4046import com.tresys.framework.compiler.translator.NetworkIPSec; 
     
    7884        // verbose output and warning default values 
    7985        static boolean debug = false; 
     86         
     87        static boolean generate_fnet_file = false; 
    8088 
    8189        // an interface file name that holds customization 
     
    8896        static String netConfigFilename = null; 
    8997         
     98        static String fNetFileName = null; 
     99         
     100         
    90101        private static void getOpt (String[] args) 
    91102        { 
     
    304315                                } 
    305316                        } 
     317                        else if (args[x].equals ("-fnetgeneration")) 
     318                        { 
     319                                x++; 
     320                                if (x < args.length) 
     321                                { 
     322                                        generate_fnet_file = true; 
     323                                        fNetFileName = args[x];  
     324                                } 
     325                                else 
     326                                { 
     327                                        printUsage (); 
     328                                        System.exit (1); 
     329                                } 
     330                        } 
    306331                        else 
    307332                        { 
     
    310335                        } 
    311336                } 
    312  
     337                 
    313338                // always require policy.conf 
    314339                if (flaskPath == null) 
     
    434459                getOpt (args); 
    435460 
     461                if( generate_fnet_file ) 
     462                { 
     463                        FnetGenerationTest (); 
     464                        return; 
     465                } 
     466                 
    436467                // load libselinuxjava.so 
    437468                if (debug) 
     
    443474                Utility.SetProjectErrorHandler (new CLIProjectErrorHandler ()); 
    444475 
     476                 
    445477                MLSSupport mlsSupport = null; 
    446478                try 
     
    848880                System.exit (1); 
    849881        } 
    850  
     882         
     883        /** 
     884         * Generate a fnet file from in memory data structure. 
     885         */ 
     886        public static void FnetGenerationTest() 
     887        { 
     888                NetworkConfig net_config = new NetworkConfig(); 
     889                 
     890                // system one 
     891                Token tok = new Token("highside", null); 
     892                NetSystem sys_one = new NetSystem(tok); 
     893                net_config.Add (sys_one); 
     894                 
     895                // system two 
     896                tok = new Token("lowside", null); 
     897                NetSystem sys_two = new NetSystem(tok); 
     898                net_config.Add (sys_two); 
     899                 
     900                 
     901                // net resource { secmark } 
     902                tok = new Token("guard_in", null); 
     903                NetResource net_resource = new NetResource (tok, null); 
     904                net_resource = new NetResource (tok, null); 
     905                net_resource.put (NetResource.KEY_TYPE, "secmark"); 
     906                 
     907                net_config.Add (net_resource); 
     908 
     909 
     910                // net resource { ipsec } 
     911                tok = new Token("guard_out", null); 
     912                net_resource = new NetResource (tok, null); 
     913                net_resource.put (NetResource.KEY_TYPE, "ipsec"); 
     914                net_resource.generateNewAuth (NetResource.AUTH_KEY_TYPE_MD5); 
     915                net_resource.generateNewKey (NetResource.ENC_KEY_TYPE_CBC); 
     916 
     917                net_config.Add (net_resource); 
     918                 
     919                // domain one 
     920                Token dom_token = new Token("server_domain", null); 
     921                NetworkInfo source_info = new NetworkInfo("eth0", "192.168.0.1", "255.255.255.0", new int []{80}); 
     922                 
     923                // source end point 
     924                Endpoint source = new Endpoint(sys_one, dom_token, source_info ); 
     925                 
     926                // domain two 
     927                Token dom_token_two = new Token("client_domain", null); 
     928                NetworkInfo target_info = new NetworkInfo("eth5", "192.168.0.100", "255.255.255.0", new int []{255}); 
     929                 
     930                // target end point 
     931                Endpoint target = new Endpoint(sys_two, dom_token_two, target_info ); 
     932                 
     933                // connection one 
     934                NetConnection net_con = new NetConnection(source, target, net_resource, 90); 
     935                 
     936                net_config.Add (net_con); 
     937                 
     938                // connection two 
     939                net_con = new NetConnection(target, source, net_resource, 95); 
     940                 
     941                net_config.Add (net_con); 
     942                 
     943                 
     944                // in memory setup is done 
     945                // parse the structure and generate fnet file 
     946                FNetGenerator fnet_generator = new FNetGenerator(); 
     947                net_config.Accept (fnet_generator); 
     948                 
     949                File fnetFile = new File (fNetFileName); 
     950                try 
     951                { 
     952                        PrintStream secmarkStream = new PrintStream (new FileOutputStream (fnetFile)); 
     953                        secmarkStream.print (fnet_generator.toString ()); 
     954                        secmarkStream.flush (); 
     955                        secmarkStream.close (); 
     956                } 
     957                catch(FileNotFoundException fne) 
     958                { 
     959                        ErrorExit (fne.getMessage ()); 
     960                } 
     961        } 
    851962}