void CFirewallOpener::UnInit(){
	if (!m_bInited)
		return;
	
	for (int i = 0; i != m_liAddedRules.GetCount(); i++){
		if (m_liAddedRules[i].m_bRemoveOnExit)
			RemoveRule(m_liAddedRules[i]);
	}
	m_liAddedRules.RemoveAll();

	m_bInited = false;
	if (m_pINetSM != NULL){
		m_pINetSM->Release();
		m_pINetSM = NULL;
	}
	else
		ASSERT ( false );
	CoUninitialize();
}
示例#2
0
// ==> Improved ICS-Firewall support [MoNKi] - Max
void CFirewallOpener::ClearOld() {
    bool deleteFile = true;
    bool ret = false;

    //Clears old mappings
    CFile fICFdat;
    if(fICFdat.Open(GetICFdatFileName(), CFile::modeRead | CFile::typeBinary)) {
        CICSRuleInfo oldmapping;

        while(ReadFromICFdat(fICFdat, oldmapping)) {
            ret = RemoveRule(oldmapping);
            deleteFile = deleteFile && ret;
        }

        fICFdat.Close();

        if(deleteFile)
            CFile::Remove(GetICFdatFileName());
    }
}
示例#3
0
void CFirewallOpener::UnInit() {
    if (!m_bInited)
        return;

    for (int i = 0; i != m_liAddedRules.GetCount(); i++) {
        // ==> Improved ICS-Firewall support [MoNKi] - Max
        /*
        if (m_liAddedRules[i].m_bRemoveOnExit)
        */
        if (m_liAddedRules[i].m_bRemoveOnExit || m_bClearMappings)
            // <== Improved ICS-Firewall support [MoNKi] - Max
            RemoveRule(m_liAddedRules[i]);
    }
    m_liAddedRules.RemoveAll();

    m_bInited = false;
    if (m_pINetSM != NULL) {
        m_pINetSM->Release();
        m_pINetSM = NULL;
    }
    else
        ASSERT ( false );
    CoUninitialize();
}
示例#4
0
void
PrefsWindow::MessageReceived(BMessage *msg)
{
	switch(msg->what)
	{
		case M_SHOW_ADD_WINDOW:
		{
			BRect frame(Frame());
			frame.right = frame.left + 400;
			frame.bottom = frame.top + 300;
			frame.OffsetBy(20,20);
			
			RuleEditWindow *rulewin = new RuleEditWindow(frame,NULL);
			rulewin->Show();
			break;
		}
		case M_SHOW_EDIT_WINDOW:
		{
			BRect frame(Frame());
			frame.right = frame.left + 400;
			frame.bottom = frame.top + 300;
			frame.OffsetBy(20,20);
			
			FilerRule *rule = fRuleList->ItemAt(fRuleItemList->CurrentSelection());
				
			RuleEditWindow *rulewin = new RuleEditWindow(frame,rule);
			rulewin->Show();
			break;
		}
		case M_ADD_RULE:
		{
			fChanges = true;
			FilerRule *item;
			if (msg->FindPointer("item",(void**)&item) == B_OK)
				AddRule(item);
			break;
		}
		case M_REMOVE_RULE:
		{
			fChanges = true;
			if (fRuleItemList->CurrentSelection() >= 0)
				RemoveRule((RuleItem*)fRuleItemList->ItemAt(fRuleItemList->CurrentSelection()));
			break;
		}
		case M_UPDATE_RULE:
		{
			fChanges = true;
			FilerRule *rule;
			if (msg->FindPointer("item",(void**)&rule) == B_OK)
			{
				int64 id;
				if (msg->FindInt64("id",&id) != B_OK)
					debugger("Couldn't find update ID");
				
				for (int32 i = 0; i < fRuleList->CountItems(); i++)
				{
					FilerRule *oldrule = fRuleList->ItemAt(i);
					if (oldrule->GetID() == id)
					{
						*oldrule = *rule;
						RuleItem *item = (RuleItem*)fRuleItemList->ItemAt(i);
						item->SetText(rule->GetDescription());
						break;
					}
				}
				
				delete rule;
			}
			break;
		}
		case M_REVERT:
		{
			while (fRuleItemList->CountItems() > 0)
				RemoveRule((RuleItem*)fRuleItemList->ItemAt(0L));
			fRuleList->MakeEmpty();
			fEditButton->SetEnabled(false);
			fRemoveButton->SetEnabled(false);
			LoadRules("/boot/home/config/settings/FilerRules",fRuleList);
			break;
		}
		case M_RULE_SELECTED:
		{
			bool value = (fRuleItemList->CurrentSelection() >= 0);
			
			fEditButton->SetEnabled(value);
			fRemoveButton->SetEnabled(value);
			
			if (fRuleItemList->CountItems() > 1)
			{
				fMoveUpButton->SetEnabled(value);
				fMoveDownButton->SetEnabled(value);
			}
			break;
		}
		case M_MOVE_RULE_UP:
		{
			fChanges = true;
			int32 selection = fRuleItemList->CurrentSelection();
			if (selection < 1)
				break;
			
			fRuleItemList->SwapItems(selection, selection - 1);
			fRuleList->SwapItems(selection, selection - 1);
			break;
		}
		case M_MOVE_RULE_DOWN:
		{
			fChanges = true;
			int32 selection = fRuleItemList->CurrentSelection();
			if (selection > fRuleItemList->CountItems() - 1)
				break;
			
			fRuleItemList->SwapItems(selection, selection + 1);
			fRuleList->SwapItems(selection, selection + 1);
			break;
		}
		default:
			BWindow::MessageReceived(msg);
			break;
	}
}