Changeset 102
- Timestamp:
- 01/20/08 14:32:03 (10 months ago)
- Files:
-
- branches/0_9_1/changelog.txt (modified) (1 diff)
- branches/0_9_1/qcontrol/cocoaControlEditPC.m (modified) (16 diffs)
Legend:
- Unmodified
- Added
- Removed
- Modified
- Copied
- Moved
branches/0_9_1/changelog.txt
r101 r102 1 Q-0.9.1d102 2 [fix] firewall not accepting new tcp|udp only redirects (#25) 3 1 4 Q-0.9.1d101 2 5 [fix] include network cards bios in .app (#74) branches/0_9_1/qcontrol/cocoaControlEditPC.m
r93 r102 1117 1117 [self saveFirewallPortList]; 1118 1118 [[thisPC objectForKey:@"Arguments"] appendFormat:@"%@",[self constructFirewallArguments]]; 1119 1119 1120 1120 1121 /* qemu arguments */ 1121 1122 if ([[textFieldArguments stringValue] length] > 0) … … 1203 1204 - (void)initFirewallSettings 1204 1205 { 1206 //NSLog(@"cocoaControlEditPC: initFirewallSettings"); 1205 1207 firewallPortTableEnabled = YES; 1206 1208 if(firewallPortList == nil) { … … 1255 1257 - (IBAction) startShowNewPort:(id)sender 1256 1258 { 1259 //NSLog(@"cocoaControlEditPC: startShowNewPort"); 1260 1257 1261 [self startEditPort:YES]; 1258 1262 } 1259 1263 - (IBAction) startShowEditPort:(id)sender 1260 1264 { 1265 //NSLog(@"cocoaControlEditPC: startShowEditPort"); 1266 1261 1267 int restrictedPort = 0; 1262 1268 NSArray * additionalPorts = [NSArray arrayWithContentsOfFile:[[NSBundle mainBundle] pathForResource:@"fw-additionals" ofType:@"plist"]]; … … 1299 1305 - (void) startEditPort:(BOOL)newPort 1300 1306 { 1307 //NSLog(@"cocoaControlEditPC: startEditPort"); 1308 1301 1309 /*[firewallPortPanel setFrame:NSMakeRect( 1302 1310 [firewallPortPanel frame].origin.x, … … 1351 1359 - (IBAction) deletePort:(id)sender 1352 1360 { 1361 //NSLog(@"cocoaControlEditPC: deletePort"); 1362 1353 1363 // check if port is a default port 1354 1364 if([firewallPortTable selectedRow] >= 0 && [firewallPortTable selectedRow] < [[NSArray arrayWithContentsOfFile:[[NSBundle mainBundle] pathForResource:@"fw-defaults" ofType:@"plist"]] count]) { … … 1369 1379 - (IBAction) setAdditionalPort:(id)sender 1370 1380 { 1381 //NSLog(@"cocoaControlEditPC: setAdditionalPort"); 1382 1371 1383 // load data from fw-additionals.plist 1372 1384 if ([popUpButtonFirewallAdditionalPorts indexOfSelectedItem] <= ([popUpButtonFirewallAdditionalPorts numberOfItems] - 3)) { … … 1413 1425 - (IBAction) saveNewPort:(id)sender 1414 1426 { 1427 //NSLog(@"cocoaControlEditPC: saveNewPort"); 1428 1415 1429 if([self checkPort:YES] == YES) { 1416 1430 NSMutableDictionary * portDict; … … 1427 1441 [portDict setObject:[textFieldFirewallPortHostPorts stringValue] forKey:@"TCP-Ports-Host"]; 1428 1442 [portDict setObject:[textFieldFirewallPortGuestPorts stringValue] forKey:@"TCP-Ports-Guest"]; 1443 [portDict setObject: @"" forKey:@"UDP-Ports-Host"]; 1444 [portDict setObject: @"" forKey:@"UDP-Ports-Guest"]; 1429 1445 } else if([popUpButtonFirewallServiceType indexOfSelectedItem] == 1) { 1430 1446 // udp only 1447 [portDict setObject: @"" forKey:@"TCP-Ports-Host"]; 1448 [portDict setObject:[textFieldFirewallPortGuestPorts stringValue] forKey:@"TCP-Ports-Guest"]; 1449 [portDict setObject: @"" forKey:@"UDP-Ports-Host"]; 1450 [portDict setObject:[textFieldFirewallPortGuestPorts stringValue] forKey:@"UDP-Ports-Guest"]; 1451 } else if([popUpButtonFirewallServiceType indexOfSelectedItem] == 2) { 1452 // tcp and udp 1453 [portDict setObject:[textFieldFirewallPortHostPorts stringValue] forKey:@"TCP-Ports-Host"]; 1454 [portDict setObject:[textFieldFirewallPortGuestPorts stringValue] forKey:@"TCP-Ports-Guest"]; 1455 [portDict setObject:[textFieldFirewallPortHostPorts stringValue] forKey:@"UDP-Ports-Host"]; 1456 [portDict setObject:[textFieldFirewallPortGuestPorts stringValue] forKey:@"UDP-Ports-Guest"]; 1457 } 1458 } // end predefined/custom check 1459 // set enabled key 1460 [portDict setObject:[NSNumber numberWithBool:YES] forKey:@"Enabled"]; 1461 // add to list 1462 [firewallPortList addObject:portDict]; 1463 [self endEditPort:self]; 1464 } 1465 } 1466 1467 - (IBAction) saveEditPort:(id)sender 1468 { 1469 //NSLog(@"cocoaControlEditPC: saveEditPort"); 1470 1471 if([self checkPort:NO] == YES) { 1472 // save to edited port 1473 int selectedPort = [firewallPortTable selectedRow]; 1474 1475 NSMutableDictionary * portDict = [NSMutableDictionary dictionaryWithCapacity:5]; 1476 [portDict setObject:[textFieldFirewallPortName stringValue] forKey:@"Name"]; 1477 if([popUpButtonFirewallServiceType indexOfSelectedItem] == 0) { 1478 // tcp only 1479 [portDict setObject:[textFieldFirewallPortHostPorts stringValue] forKey:@"TCP-Ports-Host"]; 1480 [portDict setObject:[textFieldFirewallPortGuestPorts stringValue] forKey:@"TCP-Ports-Guest"]; 1481 [portDict setObject: @"" forKey:@"UDP-Ports-Host"]; 1482 [portDict setObject: @"" forKey:@"UDP-Ports-Guest"]; 1483 } else if([popUpButtonFirewallServiceType indexOfSelectedItem] == 1) { 1484 // udp only 1485 [portDict setObject: @"" forKey:@"TCP-Ports-Host"]; 1486 [portDict setObject: @"" forKey:@"TCP-Ports-Guest"]; 1431 1487 [portDict setObject:[textFieldFirewallPortHostPorts stringValue] forKey:@"UDP-Ports-Host"]; 1432 1488 [portDict setObject:[textFieldFirewallPortGuestPorts stringValue] forKey:@"UDP-Ports-Guest"]; … … 1438 1494 [portDict setObject:[textFieldFirewallPortGuestPorts stringValue] forKey:@"UDP-Ports-Guest"]; 1439 1495 } 1440 } // end predefined/custom check1441 // set enabled key1442 [portDict setObject:[NSNumber numberWithBool:YES] forKey:@"Enabled"];1443 // add to list1444 [firewallPortList addObject:portDict];1445 [self endEditPort:self];1446 }1447 }1448 1449 - (IBAction) saveEditPort:(id)sender1450 {1451 if([self checkPort:NO] == YES) {1452 // save to edited port1453 int selectedPort = [firewallPortTable selectedRow];1454 1455 NSMutableDictionary * portDict = [NSMutableDictionary dictionaryWithCapacity:5];1456 [portDict setObject:[textFieldFirewallPortName stringValue] forKey:@"Name"];1457 if([popUpButtonFirewallServiceType indexOfSelectedItem] == 0) {1458 // tcp only1459 [portDict setObject:[textFieldFirewallPortHostPorts stringValue] forKey:@"TCP-Ports-Host"];1460 [portDict setObject:[textFieldFirewallPortGuestPorts stringValue] forKey:@"TCP-Ports-Guest"];1461 } else if([popUpButtonFirewallServiceType indexOfSelectedItem] == 1) {1462 // udp only1463 [portDict setObject:[textFieldFirewallPortHostPorts stringValue] forKey:@"UDP-Ports-Host"];1464 [portDict setObject:[textFieldFirewallPortGuestPorts stringValue] forKey:@"UDP-Ports-Guest"];1465 } else if([popUpButtonFirewallServiceType indexOfSelectedItem] == 2) {1466 // tcp and udp1467 [portDict setObject:[textFieldFirewallPortHostPorts stringValue] forKey:@"TCP-Ports-Host"];1468 [portDict setObject:[textFieldFirewallPortGuestPorts stringValue] forKey:@"TCP-Ports-Guest"];1469 [portDict setObject:[textFieldFirewallPortHostPorts stringValue] forKey:@"UDP-Ports-Host"];1470 [portDict setObject:[textFieldFirewallPortGuestPorts stringValue] forKey:@"UDP-Ports-Guest"];1471 }1472 1496 // set enabled/disabled key 1473 1497 [portDict setObject:[[firewallPortList objectAtIndex:selectedPort] objectForKey:@"Enabled"] forKey:@"Enabled"]; … … 1480 1504 - (BOOL) checkPort:(BOOL)newPort 1481 1505 { 1506 //NSLog(@"cocoaControlEditPC: checkPort"); 1507 1482 1508 if([[textFieldFirewallPortName stringValue] isEqualToString:@""]) { 1483 1509 // name empty … … 1562 1588 - (IBAction) endEditPort:(id)sender 1563 1589 { 1590 //NSLog(@"cocoaControlEditPC: endEditPort"); 1591 1564 1592 // reset 1565 1593 [textFieldFirewallPortName setStringValue:@""]; … … 1583 1611 - (void) saveFirewallPortList 1584 1612 { 1613 //NSLog(@"cocoaControlEditPC: saveFirewallPortList"); 1614 1585 1615 // save the ports in configuration.plist 1586 1616 // enumerate through entries and check for defaults, when enabled => save 1587 1617 NSArray * firewallDefaults = [NSArray arrayWithContentsOfFile:[[NSBundle mainBundle] pathForResource:@"fw-defaults" ofType:@"plist"]]; 1588 NSMutableArray * customPorts = [ NSMutableArray arrayWithCapacity:10];1618 NSMutableArray * customPorts = [[NSMutableArray arrayWithCapacity:10] retain]; 1589 1619 int i; 1590 1620 int ii; … … 1603 1633 if(found == 0) { 1604 1634 // port is not default port, save to conf.plist regardless of Enabled 1605 [customPorts addObject:[firewallPortList objectAtIndex:i]]; 1635 if ([firewallPortList count] > i) 1636 [customPorts addObject:[firewallPortList objectAtIndex:i]]; 1637 else 1638 NSLog(@"Index overflow: %d out of bounds (%d)", i, [firewallPortList count]); 1606 1639 } 1607 1640 found = 0; 1608 1641 } 1609 [thisPC setObject:[NSDictionary dictionaryWithObject:customPorts forKey:@"Redirect"] forKey:@"Network"]; 1642 if([customPorts count] > 0) 1643 [thisPC setObject: [NSDictionary dictionaryWithObject: customPorts forKey:@"Redirect"] forKey:@"Network"]; 1644 else 1645 NSLog(@"Index overflow: out of bounds (%d)", [customPorts count]); 1610 1646 } 1611 1647 1612 1648 - (NSString *) constructFirewallArguments 1613 1649 { 1650 //NSLog(@"cocoaControlEditPC: constructFirewallArguments"); 1651 1614 1652 NSArray * portlist = [[thisPC objectForKey:@"Network"] objectForKey:@"Redirect"]; 1615 1653 NSMutableString * arguments = [NSMutableString stringWithCapacity:10]; … … 1634 1672 for(ii=0; ii<[seperatedA count]; ii++) { 1635 1673 // tcp/udp 1674 1636 1675 id tp = [typeA objectAtIndex:ii]; 1637 id hc = [[seperatedA objectAtIndex:ii] objectAtIndex:0]; 1638 id hh = [[seperatedA objectAtIndex:ii] objectAtIndex:1]; 1639 id gc = [[seperatedA objectAtIndex:ii] objectAtIndex:2]; 1640 id gh = [[seperatedA objectAtIndex:ii] objectAtIndex:3]; 1641 1642 1676 id hc = ([[seperatedA objectAtIndex:ii] objectAtIndex:0] != nil) ? [[seperatedA objectAtIndex:ii] objectAtIndex:0] : [NSArray array]; 1677 id hh = ([[seperatedA objectAtIndex:ii] objectAtIndex:1] != nil) ? [[seperatedA objectAtIndex:ii] objectAtIndex:1] : [NSArray array]; 1678 id gc = ([[seperatedA objectAtIndex:ii] objectAtIndex:2] != nil) ? [[seperatedA objectAtIndex:ii] objectAtIndex:2] : [NSArray array]; 1679 id gh = ([[seperatedA objectAtIndex:ii] objectAtIndex:3] != nil) ? [[seperatedA objectAtIndex:ii] objectAtIndex:3] : [NSArray array]; 1680 1643 1681 /* comma code */ 1644 1682 if([hc count] > 1 && [gc count] > 1) { … … 1672 1710 } 1673 1711 } 1674 1712 1675 1713 /* haifin code */ 1676 1714 if([hh count] > 1 && [gh count] > 1) { … … 1701 1739 } 1702 1740 } 1703 1741 1704 1742 /* only one=>one port code */ 1705 1743 // check also for empty port ranges, because componentsSeperatedByString: returns count 1 even from an empty string