2012-06-12 5 views
3

Я написал службу Windows, которую мне нужно переместить в Mono, чтобы ее можно было использовать на платформах Mac/Linux.Портирование приложения C# в Mono, необходимо использовать FirewallAPI. Есть ли эквивалент Mono?

Он использует FirewallAPI.dll (я думаю, что это настоящее имя ...). Другие имена - NetFwTypeLb, NATUPNPLib и NETCONLib.

Я был Googling, пытаясь найти способ реализовать это на платформах Mac/Linux, но я не могу найти, что я мог бы использовать для этого.

Возможно ли это? Объединив еще один вопрос с этим вопросом: позволяют ли платформы Mac/Linux разрешать услуги (которые, как мне кажется, называются «демонами»), легко запускаются?

Спасибо, Мэдлин

Только за нотой, это текущий код, я использую, я получил его от другого StackOverflow вопрос:

public class Firewall 
{ 
    public static INetFwMgr WinFirewallManager() 
    { 
     Type type = Type.GetTypeFromCLSID(
      new Guid("{304CE942-6E39-40D8-943A-B913C40C9CD4}")); 
     return Activator.CreateInstance(type) as INetFwMgr; 
    } 
    public bool AuthorizeProgram(string title, string path, 
     NET_FW_SCOPE_ scope, NET_FW_IP_VERSION_ ipver) 
    { 
     Type type = Type.GetTypeFromProgID("HNetCfg.FwAuthorizedApplication"); 
     INetFwAuthorizedApplication authapp = Activator.CreateInstance(type) 
      as INetFwAuthorizedApplication; 

     authapp.Name = title; 
     authapp.ProcessImageFileName = path; 
     authapp.Scope = scope; 
     authapp.IpVersion = ipver; 
     authapp.Enabled = true; 

     EventLog.WriteEntry("MachineVerification", authapp.Name + " " + authapp.Scope + " " + authapp.IpVersion); 

     INetFwMgr mgr = WinFirewallManager(); 
     try 
     { 
      mgr.LocalPolicy.CurrentProfile.AuthorizedApplications.Add(authapp); 

      EventLog.WriteEntry("MachineVerification", authapp.Name + " " + authapp.Scope + " " + authapp.IpVersion); 
     } 
     catch (Exception ex) 
     { 
      EventLog.WriteEntry("MachineVerification", "MROW!" + ex.Message); 
      return false; 
     } 
     return true; 
    } 
} 
+0

Для демонов отметьте «моно-сервис» (который построен с помощью Mono) –

ответ

0

Я забыл ответить на этот вопрос, когда я понял это все вон!

В OS X нет необходимости создавать исключение брандмауэра. OS X попросит пользователя предоставить вашему приложению разрешение на доступ в Интернет.

Я не уверен в Linux, хотя, но моно-покрытие намного выше в Linux, поэтому я уверен, что кто-то ответил на этот вопрос для Linux раньше.

 Смежные вопросы

  • Нет связанных вопросов^_^