Example #1
0
        public static void Save(SambaConfigurationModel model)
        {
            var text = JsonConvert.SerializeObject(model, Formatting.Indented);

            if (File.Exists(CfgFile))
            {
                File.Copy(CfgFile, CfgFileBackup, true);
            }
            FileWithAcl.WriteAllText(CfgFile, text, "644", "root", "wheel");
            ConsoleLogger.Log("[samba] configuration saved");
        }
Example #2
0
        public void Save(SambaConfigurationModel model)
        {
            var text = JsonConvert.SerializeObject(model, Formatting.Indented);

            if (File.Exists(_cfgFile))
            {
                File.Copy(_cfgFile, _cfgFileBackup, true);
            }
            File.WriteAllText(_cfgFile, text);
            ConsoleLogger.Log("[samba] configuration saved");
        }
Example #3
0
 public SambaConfiguration()
 {
     IoDir.CreateDirectory(Parameter.AntdCfgServices);
     if (!File.Exists(_cfgFile))
     {
         _serviceModel = new SambaConfigurationModel();
     }
     else
     {
         try {
             var text = File.ReadAllText(_cfgFile);
             var obj  = JsonConvert.DeserializeObject <SambaConfigurationModel>(text);
             _serviceModel = obj;
         }
         catch (Exception) {
             _serviceModel = new SambaConfigurationModel();
         }
     }
 }
Example #4
0
        public AntdSambaModule()
        {
            Get["/samba"] = x => {
                var sambaIsActive = SambaConfiguration.IsActive();
                var model         = new PageSambaModel {
                    SambaIsActive  = sambaIsActive,
                    SambaOptions   = SambaConfiguration.Get() ?? new SambaConfigurationModel(),
                    SambaResources = SambaConfiguration.Get()?.Resources
                };
                return(JsonConvert.SerializeObject(model));
            };

            Post["/samba/set"] = x => {
                SambaConfiguration.Set();
                return(HttpStatusCode.OK);
            };

            Post["/samba/restart"] = x => {
                SambaConfiguration.Start();
                return(HttpStatusCode.OK);
            };

            Post["/samba/stop"] = x => {
                SambaConfiguration.Stop();
                return(HttpStatusCode.OK);
            };

            Post["/samba/enable"] = x => {
                SambaConfiguration.Enable();
                SambaConfiguration.Start();
                return(HttpStatusCode.OK);
            };

            Post["/samba/disable"] = x => {
                SambaConfiguration.Disable();
                SambaConfiguration.Stop();
                return(HttpStatusCode.OK);
            };

            Post["/samba/options"] = x => {
                string dosCharset              = Request.Form.DosCharset;
                string workgroup               = Request.Form.Workgroup;
                string serverString            = Request.Form.ServerString;
                string mapToGuest              = Request.Form.MapToGuest;
                string obeyPamRestrictions     = Request.Form.ObeyPamRestrictions;
                string guestAccount            = Request.Form.GuestAccount;
                string pamPasswordChange       = Request.Form.PamPasswordChange;
                string passwdProgram           = Request.Form.PasswdProgram;
                string unixPasswordSync        = Request.Form.UnixPasswordSync;
                string resetOnZeroVc           = Request.Form.ResetOnZeroVc;
                string hostnameLookups         = Request.Form.HostnameLookups;
                string loadPrinters            = Request.Form.LoadPrinters;
                string printcapName            = Request.Form.PrintcapName;
                string disableSpoolss          = Request.Form.DisableSpoolss;
                string templateShell           = Request.Form.TemplateShell;
                string winbindEnumUsers        = Request.Form.WinbindEnumUsers;
                string winbindEnumGroups       = Request.Form.WinbindEnumGroups;
                string winbindUseDefaultDomain = Request.Form.WinbindUseDefaultDomain;
                string winbindNssInfo          = Request.Form.WinbindNssInfo;
                string winbindRefreshTickets   = Request.Form.WinbindRefreshTickets;
                string winbindNormalizeNames   = Request.Form.WinbindNormalizeNames;
                string recycleTouch            = Request.Form.RecycleTouch;
                string recycleKeeptree         = Request.Form.RecycleKeeptree;
                string recycleRepository       = Request.Form.RecycleRepository;
                string nfs4Chown               = Request.Form.Nfs4Chown;
                string nfs4Acedup              = Request.Form.Nfs4Acedup;
                string nfs4Mode               = Request.Form.Nfs4Mode;
                string shadowFormat           = Request.Form.ShadowFormat;
                string shadowLocaltime        = Request.Form.ShadowLocaltime;
                string shadowSort             = Request.Form.ShadowSort;
                string shadowSnapdir          = Request.Form.ShadowSnapdir;
                string rpcServerDefault       = Request.Form.RpcServerDefault;
                string rpcServerSvcctl        = Request.Form.RpcServerSvcctl;
                string rpcServerSrvsvc        = Request.Form.RpcServerSrvsvc;
                string rpcServerEventlog      = Request.Form.RpcServerEventlog;
                string rpcServerNtsvcs        = Request.Form.RpcServerNtsvcs;
                string rpcServerWinreg        = Request.Form.RpcServerWinreg;
                string rpcServerSpoolss       = Request.Form.RpcServerSpoolss;
                string rpcDaemonSpoolssd      = Request.Form.RpcDaemonSpoolssd;
                string rpcServerTcpip         = Request.Form.RpcServerTcpip;
                string idmapConfigBackend     = Request.Form.IdmapConfigBackend;
                string readOnly               = Request.Form.ReadOnly;
                string guestOk                = Request.Form.GuestOk;
                string aioReadSize            = Request.Form.AioReadSize;
                string aioWriteSize           = Request.Form.AioWriteSize;
                string eaSupport              = Request.Form.EaSupport;
                string directoryNameCacheSize = Request.Form.DirectoryNameCacheSize;
                string caseSensitive          = Request.Form.CaseSensitive;
                string mapReadonly            = Request.Form.MapReadonly;
                string storeDosAttributes     = Request.Form.StoreDosAttributes;
                string wideLinks              = Request.Form.WideLinks;
                string dosFiletimeResolution  = Request.Form.DosFiletimeResolution;
                string vfsObjects             = Request.Form.VfsObjects;
                var    model = new SambaConfigurationModel {
                    DosCharset              = dosCharset,
                    Workgroup               = workgroup,
                    ServerString            = serverString,
                    MapToGuest              = mapToGuest,
                    ObeyPamRestrictions     = obeyPamRestrictions,
                    GuestAccount            = guestAccount,
                    PamPasswordChange       = pamPasswordChange,
                    PasswdProgram           = passwdProgram,
                    UnixPasswordSync        = unixPasswordSync,
                    ResetOnZeroVc           = resetOnZeroVc,
                    HostnameLookups         = hostnameLookups,
                    LoadPrinters            = loadPrinters,
                    PrintcapName            = printcapName,
                    DisableSpoolss          = disableSpoolss,
                    TemplateShell           = templateShell,
                    WinbindEnumUsers        = winbindEnumUsers,
                    WinbindEnumGroups       = winbindEnumGroups,
                    WinbindUseDefaultDomain = winbindUseDefaultDomain,
                    WinbindNssInfo          = winbindNssInfo,
                    WinbindRefreshTickets   = winbindRefreshTickets,
                    WinbindNormalizeNames   = winbindNormalizeNames,
                    RecycleTouch            = recycleTouch,
                    RecycleKeeptree         = recycleKeeptree,
                    RecycleRepository       = recycleRepository,
                    Nfs4Chown               = nfs4Chown,
                    Nfs4Acedup              = nfs4Acedup,
                    Nfs4Mode               = nfs4Mode,
                    ShadowFormat           = shadowFormat,
                    ShadowLocaltime        = shadowLocaltime,
                    ShadowSort             = shadowSort,
                    ShadowSnapdir          = shadowSnapdir,
                    RpcServerDefault       = rpcServerDefault,
                    RpcServerSvcctl        = rpcServerSvcctl,
                    RpcServerSrvsvc        = rpcServerSrvsvc,
                    RpcServerEventlog      = rpcServerEventlog,
                    RpcServerNtsvcs        = rpcServerNtsvcs,
                    RpcServerWinreg        = rpcServerWinreg,
                    RpcServerSpoolss       = rpcServerSpoolss,
                    RpcDaemonSpoolssd      = rpcDaemonSpoolssd,
                    RpcServerTcpip         = rpcServerTcpip,
                    IdmapConfigBackend     = idmapConfigBackend,
                    ReadOnly               = readOnly,
                    GuestOk                = guestOk,
                    AioReadSize            = aioReadSize,
                    AioWriteSize           = aioWriteSize,
                    EaSupport              = eaSupport,
                    DirectoryNameCacheSize = directoryNameCacheSize,
                    CaseSensitive          = caseSensitive,
                    MapReadonly            = mapReadonly,
                    StoreDosAttributes     = storeDosAttributes,
                    WideLinks              = wideLinks,
                    DosFiletimeResolution  = dosFiletimeResolution,
                    VfsObjects             = vfsObjects
                };
                SambaConfiguration.Save(model);
                return(HttpStatusCode.OK);
            };

            Post["/samba/resource"] = x => {
                string name    = Request.Form.Name;
                string path    = Request.Form.Path;
                string comment = Request.Form.Comment;
                var    model   = new SambaConfigurationResourceModel {
                    Name    = name,
                    Comment = comment,
                    Path    = path
                };
                SambaConfiguration.AddResource(model);
                return(HttpStatusCode.OK);
            };

            Post["/samba/resource/del"] = x => {
                string guid = Request.Form.Guid;
                SambaConfiguration.RemoveResource(guid);
                return(HttpStatusCode.OK);
            };
        }