{ "version": 3, "sources": ["src/app/enums/nfs-security-provider.enum.ts", "src/app/helptext/sharing/iscsi/iscsi.ts", "src/app/helptext/sharing/nfs/nfs.ts", "src/app/helptext/sharing/smb/smb.ts", "src/app/helptext/sharing/index.ts", "src/app/modules/forms/ix-forms/classes/group-combobox-provider.ts", "src/app/pages/sharing/nfs/nfs-form/nfs-form.component.ts", "src/app/pages/sharing/nfs/nfs-form/nfs-form.component.html", "src/app/pages/sharing/smb/smb-form/restart-smb-dialog/restart-smb-dialog.component.ts", "src/app/pages/sharing/smb/smb-form/restart-smb-dialog/restart-smb-dialog.component.html", "src/app/pages/sharing/smb/smb-form/smb-form.component.ts", "src/app/pages/sharing/smb/smb-form/smb-form.component.html", "src/app/interfaces/smb-share.interface.ts", "src/app/pages/sharing/smb/smb-form/smb-validator.service.ts", "src/app/enums/nfs-acl.enum.ts"], "sourcesContent": ["export enum NfsSecurityProvider {\n Sys = 'SYS',\n Krb5 = 'KRB5',\n Krb5i = 'KRB5I',\n Krb5p = 'KRB5P',\n}\n", "import { Validators } from '@angular/forms';\nimport { marker as T } from '@biesbjerg/ngx-translate-extract-marker';\n\nexport const helptextSharingIscsi = {\n fieldset_target_basic: T('Basic Info'),\n fieldset_target_group: T('iSCSI Group'),\n\n target_form_placeholder_name: T('Target Name'),\n target_form_tooltip_name: T(\n 'The base name is automatically prepended if the target\\\n name does not start with iqn. Lowercase alphanumeric\\\n characters plus dot (.), dash (-), and colon (:) are allowed.\\\n See the Constructing iSCSI names using the iqn.format\\\n section of RFC3721.',\n ),\n\n target_form_placeholder_alias: T('Target Alias'),\n target_form_tooltip_alias: T('Optional user-friendly name.'),\n\n target_form_placeholder_mode: T('Target Mode'),\n target_form_tooltip_mode: T('Define the target as *iSCSI*,\\\n *Fibre Channel*, or *Both*.'),\n target_form_enum_mode: [{\n label: 'iSCSI',\n value: 'ISCSI',\n }, {\n label: 'Fibre Channel',\n value: 'FC',\n }, {\n label: 'Both',\n value: 'BOTH',\n }],\n\n target_form_placeholder_portal: T('Portal Group ID'),\n target_form_tooltip_portal: T(\n 'Leave empty or select number of existing portal to use.',\n ),\n\n target_form_placeholder_initiator: T('Initiator Group ID'),\n target_form_tooltip_initiator: T(\n 'Select which existing initiator group\\\n has access to the target.',\n ),\n\n target_form_placeholder_authmethod: T('Authentication Method'),\n target_form_tooltip_authmethod: T(\n 'Choices are None, Auto, CHAP, or Mutual CHAP.',\n ),\n target_form_enum_authmethod: [{\n label: 'None',\n value: 'NONE',\n }, {\n label: 'CHAP',\n value: 'CHAP',\n }, {\n label: 'Mutual CHAP',\n value: 'CHAP_MUTUAL',\n }],\n\n target_form_placeholder_auth: T('Authentication Group Number'),\n target_form_tooltip_auth: T(\n 'Select None or an integer. This value\\\n represents the number of existing authorized accesses.',\n ),\n\n target_form_placeholder_delete: T('Delete'),\n\n portal_form_placeholder_comment: T('Description'),\n portal_form_tooltip_comment: T(\n 'Optional description. Portals are automatically assigned a numeric\\\n group.',\n ),\n\n portal_form_placeholder_discovery_authmethod: T('Discovery Authentication Method'),\n portal_form_tooltip_discovery_authmethod: T('iSCSI supports multiple \\\n authentication methods that are used by the target to discover valid \\\n devices. None allows anonymous discovery while CHAP and \\\n Mutual CHAP require authentication.'),\n\n portal_form_placeholder_discovery_authgroup: T('Discovery Authentication Group'),\n portal_form_tooltip_discovery_authgroup: T('Group ID created in \\\n Authorized Access. Required when the Discovery Authentication Method is set to \\\n CHAP or Mutual CHAP.'),\n\n portal_form_placeholder_ip: T('IP Address'),\n portal_form_tooltip_ip: T('Select the IP addresses to be listened on \\\n by the portal. Click ADD to add IP addresses with a different network \\\n port. The address 0.0.0.0 can be selected to listen on all IPv4 \\\n addresses, or :: to listen on all IPv6 addresses.'),\n\n portal_form_placeholder_port: T('Port'),\n portal_form_tooltip_port: T(\n 'TCP port used to access the iSCSI target.\\\n Default is 3260.',\n ),\n\n initiator_form_tooltip_connected_initiators: T(\n 'Initiators currently connected to the system. Shown in IQN\\\n format with an IP address. Set initiators and click an ->\\\n (arrow) to add the initiators to either the Allowed Initiators\\\n or Authorized Networks lists. Clicking Refresh updates\\\n the Connected Initiators list.',\n ),\n\n all_placeholder_initiators: T('Allow All Initiators'),\n\n initiator_form_placeholder_initiators: T('Add Allowed Initiators (IQN)'),\n initiator_form_tooltip_initiators: T(\n 'Initiators allowed access to this system. Enter an\\\n iSCSI Qualified Name (IQN) and click + to\\\n add it to the list. Example:\\\n iqn.1994-09.org.freebsd:freenas.local',\n ),\n\n initiator_form_placeholder_auth_network: T('Authorized Networks'),\n initiator_form_tooltip_auth_network: T(\n 'Network addresses allowed use this initiator. Each address can\\\n include an optional\\\n CIDR netmask. Click + to add the network\\\n address to the list. Example: 192.168.2.0/24.',\n ),\n\n initiator_form_placeholder_comment: T('Description'),\n initiator_form_tooltip_comment: T('Any notes about initiators.'),\n\n globalconf_tooltip_basename: T(\n 'Lowercase alphanumeric characters plus dot (.), dash (-),\\\n and colon (:) are allowed. See the\\\n Constructing iSCSI names using the iqn.format\\\n section of RFC3721.',\n ),\n\n globalconf_tooltip_isns_servers: T('Hostnames or IP addresses of the \\\n ISNS servers to be registered with the iSCSI targets and portals of \\\n the system. Separate entries by pressing Enter.'),\n\n globalconf_tooltip_pool_avail_threshold: T('Generate an alert when the \\\n pool has this percent space remaining. This is typically \\\n configured at the pool level when using zvols or at the extent level \\\n for both file and device based extents.'),\n\n globalconf_tooltip_alua: T('Do not enable ALUA on TrueNAS unless it is also supported \\\n by and enabled on the client computers. ALUA only works when enabled \\\n on both the client and server.'),\n\n fieldset_extent_basic: T('Basic Info'),\n fieldset_extent_type: T('Type'),\n fieldset_extent_options: T('Compatibility'),\n\n extent_placeholder_name: T('Name'),\n extent_tooltip_name: T(\n 'Name of the extent. If the Extent size is not 0,\\\n it cannot be an existing file within the pool or dataset.',\n ),\n extent_validators_name: [Validators.required],\n\n extent_placeholder_type: T('Extent Type'),\n extent_tooltip_type: T('Device provides virtual storage access to zvols, zvol snapshots, or physical devices.\\\n File provides virtual storage access to a single file.'),\n\n extent_placeholder_disk: T('Device'),\n extent_tooltip_disk: T(\n 'Only appears if Device is selected. Select the\\\n unused zvol or zvol snapshot.',\n ),\n\n extent_placeholder_serial: T('Serial'),\n extent_tooltip_serial: T(\n 'Unique LUN ID. The default is generated from\\\n the MAC address of the system.',\n ),\n\n extent_placeholder_path: T('Path to the Extent'),\n extent_tooltip_path: T('Browse to an existing file. Create a new file by browsing to a\\\n dataset and appending /(filename.ext) to the path.'),\n\n extent_placeholder_filesize: T('Filesize'),\n extent_tooltip_filesize: T('Entering 0 uses the actual file size and requires that the\\\n file already exists. Otherwise, specify the file size for the new file.'),\n\n extent_placeholder_blocksize: T('Logical Block Size'),\n extent_tooltip_blocksize: T(\n 'Leave at the default of 512 unless the initiator\\\n requires a different block size.',\n ),\n\n extent_placeholder_pblocksize: T('Disable Physical Block Size Reporting'),\n extent_tooltip_pblocksize: T(\n 'Set if the initiator does not support physical block size values\\\n over 4K (MS SQL).',\n ),\n\n extent_placeholder_avail_threshold: T('Available Space Threshold (%)'),\n extent_tooltip_avail_threshold: T('Only appears if a File or \\\n zvol is selected. When the specified percentage of free space is reached,\\\n the system issues an alert.'),\n\n extent_placeholder_comment: T('Description'),\n extent_tooltip_comment: T('Notes about this extent.'),\n\n extent_placeholder_insecure_tpc: T('Enable TPC'),\n extent_tooltip_insecure_tpc: T(\n 'Set to allow an initiator to bypass normal access\\\n control and access any scannable target. This allows\\\n xcopy operations which are\\\n otherwise blocked by access control.',\n ),\n\n extent_placeholder_xen: T('Xen initiator compat mode'),\n extent_tooltip_xen: T('Set when using Xen as the iSCSI initiator.'),\n\n extent_placeholder_rpm: T('LUN RPM'),\n extent_tooltip_rpm: T(\n 'Do NOT change this setting when using Windows\\\n as the initiator. Only needs to be changed in large\\\n environments where the number of systems using a\\\n specific RPM is needed for accurate reporting\\\n statistics.',\n ),\n\n extent_placeholder_ro: T('Read-only'),\n extent_tooltip_ro: T(\n 'Set to prevent the initiator from initializing this\\\n LUN.',\n ),\n\n extent_placeholder_enabled: T('Enabled'),\n extent_tooltip_enabled: T('Set to enable the iSCSI extent.'),\n\n extent_form_enum_rpm: [\n { label: 'UNKNOWN', value: 'UNKNOWN' },\n { label: 'SSD', value: 'SSD' },\n { label: '5400', value: '5400' },\n { label: '7200', value: '7200' },\n { label: '10000', value: '10000' },\n { label: '15000', value: '15000' },\n ],\n\n extent_form_enum_type: [\n { label: T('Device'), value: 'DISK' },\n { label: T('File'), value: 'FILE' },\n ],\n\n extent_form_enum_blocksize: [\n { label: '512', value: 512 },\n { label: '1024', value: 1024 },\n { label: '2048', value: 2048 },\n { label: '4096', value: 4096 },\n ],\n\n authaccess_placeholder_tag: T('Group ID'),\n authaccess_tooltip_tag: T(\n 'Allow different groups to be configured\\\n with different authentication profiles.\\\n Example: all users with a group ID of\\\n 1 will inherit the authentication profile\\\n associated with Group 1.',\n ),\n\n authaccess_placeholder_user: T('User'),\n authaccess_tooltip_user: T(\n 'User account to create for CHAP authentication with the user on the\\\n remote system. Many initiators use the initiator name as the user name.',\n ),\n\n authaccess_placeholder_secret: T('Secret'),\n authaccess_tooltip_secret: T(\n 'User password. Must be at least 12 and no more than 16 characters\\\n long.',\n ),\n\n authaccess_placeholder_secret_confirm: T('Secret (Confirm)'),\n\n authaccess_tooltip_peeruser: T(\n 'Only entered when configuring mutual CHAP. Usually the same value\\\n as User.',\n ),\n authaccess_tooltip_peersecret: T(\n 'Mutual secret password. Required when Peer User is set. Must be\\\n different than the Secret.',\n ),\n\n associated_target_tooltip_target: T('Select an existing target.'),\n associated_target_tooltip_lunid: T(\n 'Select the value or enter a value between\\\n 0 and 1023. Some initiators\\\n expect a value below 256. Leave\\\n this field blank to automatically assign\\\n the next available ID.',\n ),\n\n associated_target_tooltip_extent: T('Select an existing extent.'),\n\n fc_mode_placeholder: T('Mode'),\n fc_mode_tooltip: T(''),\n\n fc_target_placeholder: T('Targets'),\n fc_target_tooltip: T(''),\n\n fc_initiators_placeholder: T('Connected Initiators'),\n fc_initiators_tooltip: T(''),\n\n // wizard\n step1_label: T('Create or Choose Block Device'),\n\n name_placeholder: T('Name'),\n name_tooltip: T('Keep the name short and only lowercase. Using a name longer than 63 characters can prevent accessing the block device. Allowed characters: letters, numbers, period (.), dash (-), and colon (:).'),\n\n disk_placeholder: T('Device'),\n disk_tooltip: T('Select the unused zvol or zvol snapshot. Select\\\n Create New to create a new zvol.'),\n\n dataset_placeholder: T('Pool/Dataset'),\n dataset_tooltip: T('Browse to an existing pool or dataset to store the new zvol.'),\n\n volsize_placeholder: T('Size'),\n volsize_tooltip: T('Specify the size of the new zvol.'),\n\n volblocksize_placeholder: T('Block Size'),\n volblocksize_tooltip: T('Only override the default if the initiator requires a different block size.'),\n\n usefor_placeholder: T('Sharing Platform'),\n usefor_tooltip: T('Choose the platform that will use this share. The associated options are applied to this share.'),\n\n target_placeholder: T('Target'),\n target_tooltip: T('Create a new Target or choose an existing target for this share.'),\n\n step2_label: T('Portal'),\n\n portal_placeholder: T('Portal'),\n portal_tooltip: T('Select an existing portal or choose Create New to configure a new portal.'),\n\n step3_label: T('Initiator'),\n\n initiators_placeholder: T('Initiators'),\n initiators_tooltip: T('Leave blank to allow all or enter a list of initiator hostnames. \\\n Separate entries by pressing Enter.'),\n\n auth_network: {\n placeholder: T('Authorized Networks'),\n tooltip: T('Network addresses allowed to use this initiator. Leave blank to allow all \\\n networks or list network addresses with a CIDR mask. Separate entries by pressing \\\n Enter.'),\n error: T('Invalid network address list. Check for typos or missing CIDR netmasks and \\\n separate addresses by pressing Enter.'),\n },\n};\n", "import { marker as T } from '@biesbjerg/ngx-translate-extract-marker';\n\nexport const helptextSharingNfs = {\n root_level_warning: T(\n 'Configuring NFS exports of root-level datasets\\\n may lead to storage reconfiguration issues.\\\n Consider creating a dataset instead.',\n ),\n\n // NFSFormComponent\n tooltip_path: T('Full path to the pool, dataset or directory to share. \\\n The path must reside within a pool. Mandatory.'),\n error_alias: T('The Alias field can either be left empty or \\\n have an alias defined for each path in the share.'),\n tooltip_comment: T(\n 'Provide helpful notations related to the share, e.g. ‘Shared to everybody’. \\\n Maximum length is 120 characters.',\n ),\n tooltip_alldirs: T(\n 'Set to allow the client to mount any\\\n subdirectory within the Path.',\n ),\n tooltip_ro: T('Set to prohibit writing to the share.'),\n tooltip_quiet: T(\n 'Set to inhibit some syslog diagnostics\\\n to avoid error messages. See\\\n exports(5) for examples.',\n ),\n tooltip_enabled: T('Enable this NFS share. Unset to disable this NFS share \\\n without deleting it.'),\n tooltip_networks_wrapper: T(\n 'Click \"Add\" to specify NFS client network ranges for this share.\\\n If both networks and hosts are empty the share will be exported to everyone.',\n ),\n tooltip_network: T(\n 'Allowed network in network/mask CIDR notation (example 1.2.3.4/24).\\\n One entry per field. Leave empty to allow everybody.',\n ),\n tooltip_hosts: T(\n 'Allowed IP address or hostname. One entry per field. Leave empty to allow everybody.',\n ),\n tooltip_hosts_wrapper: T(\n 'Click \"Add\" to specify NFS client hosts for this share.\\\n If both networks and hosts are empty the share will be exported to everyone.',\n ),\n tooltip_maproot_user: T(\n 'When a user is selected, the root user is\\\n limited to the permissions of that user.',\n ),\n tooltip_maproot_group: T(\n 'When a group is selected, the root user is also\\\n limited to the permissions of that group.',\n ),\n tooltip_mapall_user: T(\n 'The specified permissions of that user are used\\\n by all clients.',\n ),\n tooltip_mapall_group: T(\n 'The specified permissions of that group are used\\\n by all clients.',\n ),\n tooltip_security: T(\n 'Specifies level of authentication and cryptographic protection.\\\n SYS or none should be used if no KDC is available. If a KDC is available, e.g. Active Directory, KRB5 is recommended.\\\n If desired KRB5I (integrity protection) and/or KRB5P (privacy protection) may be included with KRB5.',\n ),\n};\n", "import { marker as T } from '@biesbjerg/ngx-translate-extract-marker';\n\nexport const helptextSharingSmb = {\n root_level_warning: T(\n 'Configuring SMB exports of root-level datasets\\\n may lead to storage reconfiguration issues.\\\n Consider creating a dataset instead.',\n ),\n\n shareAclDescription: T('The SMB share ACL defines access rights for users of this SMB share up to, but not beyond, the access granted by filesystem ACLs.'),\n\n placeholder_path: T('Path'),\n tooltip_path: T('Select pool, dataset, or directory to share.'),\n errormsg_name: T(\n 'global is a reserved name that cannot be used as a share\\\n name. Please enter a different share name.',\n ),\n\n placeholder_name: T('Name'),\n tooltip_name: T('Enter a name for the share.'),\n\n placeholder_comment: T('Description'),\n tooltip_comment: T('Description of the share or notes on how it is used.'),\n\n placeholder_enabled: T('Enabled'),\n tooltip_enabled: T(\n 'Enable this SMB share. Unset to disable this SMB share without deleting it.',\n ),\n tooltip_enabled_audit_log: T(\n 'Controls whether audit messages will be generated for the share. \\\n

Note: Auditing may not be enabled if SMB1 support is enabled for the server.',\n ),\n tooltip_watch_list: T(\n 'List of groups for which to generate audit messages. Keep this list empty to Watch All.',\n ),\n tooltip_ignore_list: T(\n 'List of groups to ignore when auditing. If conflict arises between Watch List and Ignore List \\\n (based on user group membership), then Watch List will take precedence and ops will be audited.',\n ),\n\n placeholder_home: T('Use as Home Share'),\n tooltip_home: T(\n 'Legacy feature.

Allows the share to host user home \\\n directories. Each user is given a personal home directory when \\\n connecting to the share which is not accessible by other users. This \\\n allows for a personal, dynamic share. Only one share can be used \\\n as the home share.',\n ),\n\n placeholder_purpose: T('Purpose'),\n tooltip_purpose: T(\n 'Select a preset configuration for the share. This\\\n applies predetermined values and disables changing some share options.',\n ),\n\n placeholder_timemachine: T('Time Machine'),\n tooltip_timemachine: T('Enable Time Machine backups on this share.'),\n\n placeholder_timemachine_quota: T('Time Machine Quota'),\n tooltip_timemachine_quota: T('Number of bytes'),\n\n placeholder_afp: T('Legacy AFP Compatibility'),\n tooltip_afp: T(\n 'This controls how the SMB share reads and writes data. Leave unset for the share to behave like a normal SMB share and set for the share to behave like the deprecated Apple Filing Protocol (AFP). This should only be set when this share originated as an AFP sharing configuration. This is not required for pure SMB shares or MacOS SMB clients.',\n ),\n afpDialog_title: T('Warning'),\n afpDialog_message: T(\n 'This option controls how metadata and alternate data streams read write to disks. Only enable this when the share configuration was migrated from the deprecated Apple Filing Protocol (AFP). Do not attempt to force a previous AFP share to behave like a pure SMB share or file corruption can occur.',\n ),\n afpDialog_button: T('I understand'),\n\n placeholder_acl: T('Enable ACL'),\n tooltip_acl: T('Enable ACL support for the SMB share.'),\n\n placeholder_ro: T('Export Read Only'),\n tooltip_ro: T('Prohibits writes to this share.'),\n\n placeholder_browsable: T('Browsable to Network Clients'),\n tooltip_browsable: T(\n 'Determine whether this share name is included\\\n when browsing shares. Home shares are only visible to the owner\\\n regardless of this setting.',\n ),\n\n placeholder_recyclebin: T('Export Recycle Bin'),\n tooltip_recyclebin: T('Select to enable. Deleted files from the same \\\n dataset move to a Recycle Bin in that dataset and do not take any \\\n additional space. Recycle bin is for access over SMB protocol only.\\\n The files are renamed to a per-user subdirectory within \\\n .recycle directory at either (1) root of SMB share \\\n (if path is same dataset as SMB share) or (2) at root of current \\\n dataset if we have nested datasets. Because of (2) there is no \\\n automatic deletion based on file size.'),\n\n placeholder_guestok: T('Allow Guest Access'),\n tooltip_guestok: T(\n 'Legacy feature.

Privileges are the same as the guest account. \\\n Guest access is disabled by default in Windows 10 version 1709 and \\\n Windows Server version 1903. Additional client-side configuration is \\\n required to provide guest access to these clients.

\\\n MacOS clients: Attempting to connect as a user that does not \\\n exist in TrueNAS does not automatically connect as the guest \\\n account. The Connect As: Guest option must be \\\n specifically chosen in MacOS to log in as the guest account. See the \\\n Apple documentation \\\n for more details.',\n ),\n\n placeholder_abe: T('Access Based Share Enumeration'),\n tooltip_abe: T(\n 'Restrict share visibility to users with read or write access\\\n to the share. See the smb.conf manual page.',\n ),\n\n placeholder_hostsallow: T('Hosts Allow'),\n\n placeholder_hostsdeny: T('Hosts Deny'),\n tooltip_hostsdeny: T(\n 'Enter a list of denied hostnames or IP addresses.\\\n Separate entries by pressing Enter. \\\n If neither *Hosts Allow* or *Hosts Deny* contains \\\n an entry, then SMB share access is allowed for any host.

\\\n If there is a *Hosts Allow* list but no *Hosts Deny* list, then only allow \\\n hosts on the *Hosts Allow* list.

\\\n If there is a *Hosts Deny* list but no *Hosts Allow* list, then allow all \\\n hosts that are not on the *Hosts Deny* list.

\\\n If there is both a *Hosts Allow* and *Hosts Deny* list, then allow all hosts \\\n that are on the *Hosts Allow* list.

\\\n If there is a host not on the *Hosts Allow* and not on the *Hosts Deny* list, \\\n then allow it.',\n ),\n\n placeholder_shadowcopy: T('Enable Shadow Copies'),\n tooltip_shadowcopy: T(\n 'Export ZFS snapshots as\\\n Shadow Copies for VSS clients.',\n ),\n\n placeholder_aapl_name_mangling: T('Use Apple-style Character Encoding'),\n tooltip_aapl_name_mangling: T(\n 'By default, Samba uses a hashing algorithm for NTFS illegal \\\n characters. Enabling this option translates NTFS illegal characters to the Unicode private range.',\n ),\n\n placeholder_streams: T('Enable Alternate Data Streams'),\n tooltip_streams: T(\n 'Allows multiple \\\n NTFS data streams. \\\n Disabling this option causes MacOS to write streams to files on the filesystem.',\n ),\n\n placeholder_durablehandle: T('Enable SMB2/3 Durable Handles'),\n tooltip_durablehandle: T(\n 'Allow using open file handles that can withstand short disconnections. \\\n Support for POSIX byte-range locks in Samba is also disabled. This option is not recommended when \\\n configuring multi-protocol or local access to files.',\n ),\n\n placeholder_fsrvp: T('Enable FSRVP'),\n tooltip_fsrvp: T(\n 'Enable support for the File Server Remote VSS Protocol \\\n (FSVRP). \\\n This protocol allows RPC clients to manage snapshots for a specific SMB share. \\\n The share path must be a dataset mountpoint. Snapshots have the prefix \\\n fss- followed by a snapshot creation timestamp. A snapshot must have \\\n this prefix for an RPC user to delete it.',\n ),\n\n placeholder_path_suffix: T('Path Suffix'),\n tooltip_path_suffix: T(\n 'Appends a suffix to the share connection path. \\\n This is used to provide unique shares on a per-user, per-computer, or per-IP address basis. \\\n Suffixes can contain a macro. See the \\\n smb.conf manual page for \\\n a list of supported macros. The connectpath **must** be preset before a client connects.',\n ),\n\n placeholder_auxsmbconf: T('Additional Parameters String'),\n tooltip_auxsmbconf: T('String of additional smb4.conf parameters not covered by the system\\'s API.'),\n\n actions_basic_mode: T('Basic Mode'),\n actions_advanced_mode: T('Advanced Mode'),\n\n action_share_acl: T('Edit Share ACL'),\n action_edit_acl: T('Edit Filesystem ACL'),\n action_edit_acl_dialog: {\n title: T('Error'),\n },\n\n dialog_warning: T('Warning'),\n dialog_warning_message: T(\n 'Setting default permissions will reset the permissions of this share and any others within its path.',\n ),\n\n dialog_edit_acl_title: T('Configure ACL'),\n dialog_edit_acl_message: T(\n \"Configure permissions for this share's dataset now?\",\n ),\n dialog_edit_acl_button: T('Configure now'),\n\n restart_smb_dialog: {\n title: T('Restart SMB Service?'),\n message_time_machine: T(\n 'Enabling Time Machine on an SMB share requires restarting the SMB service.',\n ),\n message_allow_deny: T(\n 'Changes to Hosts Allow or Hosts Deny take effect when the \\\n SMB service restarts.',\n ),\n action_btn: T('Save and Restart SMB Now'),\n cancel_btn: T('Save Without Restarting'),\n },\n restarted_smb_dialog: {\n title: T('SMB Service'),\n message: T('The SMB service has been restarted.'),\n },\n\n // share acl\n ae_who_sid_tooltip: T(\n 'Who this ACL entry applies to, shown as a\\\n Windows\\\n Security Identifier. Either a SID or a Domain and Name is required for this ACL.',\n ),\n ae_who_name_domain_tooltip: T('The domain for local users is the NetBIOS name of the TrueNAS server.'),\n ae_who_name_name_tooltip: T(\n 'Who this ACL entry applies to, shown as a user name. Requires adding the user Domain.',\n ),\n ae_perm_tooltip: T(\n 'Predefined permission combinations:
Read:\\\n Read access and Execute permission on the object (RX).
Change: Read\\\n access, Execute permission, Write access, and Delete object (RXWD).
Full:\\\n Read access, Execute permission, Write access, Delete object, change Permissions, and take Ownership (RXWDPO).

\\\n For more details, see smbacls(1).',\n ),\n ae_type_tooltip: T(\n 'How permissions are applied to the share.\\\n Allowed denies all permissions by default except those that are manually defined.\\\n Denied allows all permissions by default except those that are manually defined.',\n ),\n\n formTitleAdd: T('Add SMB'),\n formTitleEdit: T('Edit SMB'),\n\n stripACLDialog: {\n title: T('Warning'),\n message: T(\n 'An ACL is detected on the selected path but Enable ACL is not selected for this share. \\\n ACLs must be stripped from the dataset prior to creating an SMB share.',\n ),\n button: T('Close'),\n },\n\n manglingDialog: {\n title: T('Warning'),\n message: T(\n 'The Use Apple-style character encoding value has changed. \\\n This parameter affects how file names are read from and written to storage. Changes to \\\n this parameter after data is written can prevent accessing or deleting files containing \\\n mangled characters.',\n ),\n action: T('I Understand'),\n },\n\n restartPt1: T(\n 'The following changes to this SMB Share require the SMB Service to be restarted before they can take effect.',\n ),\n restartPt2: T('Would you like to restart the SMB Service?'),\n};\n", "import { marker as T } from '@biesbjerg/ngx-translate-extract-marker';\n\nexport * from './iscsi/iscsi';\nexport * from './nfs/nfs';\nexport * from './smb/smb';\n\nexport const shared = {\n delete_share_message: T('The sharing configuration will be removed.\\\n Data in the share dataset will not be affected.'),\n\n dialog_title: T('Enable service'),\n dialog_message: T('Enable this service to start automatically.'),\n dialog_button: T('Enable Service'),\n};\n", "import { Observable } from 'rxjs';\nimport { map } from 'rxjs/operators';\nimport { Group } from 'app/interfaces/group.interface';\nimport { Option } from 'app/interfaces/option.interface';\nimport { IxComboboxProvider } from 'app/modules/forms/ix-forms/components/ix-combobox/ix-combobox-provider';\nimport { UserService } from 'app/services/user.service';\n\nexport class GroupComboboxProvider implements IxComboboxProvider {\n protected page = 1;\n readonly pageSize = 50;\n\n fetch(filterValue: string): Observable {\n this.page = 0;\n const offset = this.page * this.pageSize;\n\n return this.userService.groupQueryDsCache(filterValue, false, offset)\n .pipe(\n map((groups) => this.groupQueryResToOptions(groups)),\n map((options) => [...this.initialOptions, ...this.excludeInitialOptions(options)]),\n );\n }\n\n excludeInitialOptions(options: Option[]): Option[] {\n return options.filter((option) => {\n return !this.initialOptions.find((initialOption) => initialOption.value === option.value);\n });\n }\n\n groupQueryResToOptions(groups: Group[]): Option[] {\n return groups.map((group) => {\n return { label: group.group, value: group[this.optionsValueField] };\n });\n }\n\n nextPage(filterValue: string): Observable {\n this.page++;\n const offset = this.page * this.pageSize;\n return this.userService.groupQueryDsCache(filterValue, false, offset)\n .pipe(\n map((groups) => this.groupQueryResToOptions(groups)),\n map((groups) => this.excludeInitialOptions(groups)),\n );\n }\n\n constructor(\n protected userService: UserService,\n private optionsValueField: 'group' | 'gid' | 'id' = 'group',\n protected initialOptions: Option[] = [],\n ) {}\n}\n", "import {\n ChangeDetectionStrategy, ChangeDetectorRef, Component, Inject, OnInit,\n} from '@angular/core';\nimport { Validators } from '@angular/forms';\nimport { FormBuilder } from '@ngneat/reactive-forms';\nimport { UntilDestroy, untilDestroyed } from '@ngneat/until-destroy';\nimport { Store } from '@ngrx/store';\nimport { TranslateService } from '@ngx-translate/core';\nimport {\n Observable, filter, of, switchMap, tap,\n} from 'rxjs';\nimport { DatasetPreset } from 'app/enums/dataset.enum';\nimport { NfsProtocol } from 'app/enums/nfs-protocol.enum';\nimport { NfsSecurityProvider } from 'app/enums/nfs-security-provider.enum';\nimport { Role } from 'app/enums/role.enum';\nimport { ServiceName } from 'app/enums/service-name.enum';\nimport { helptextSharingNfs } from 'app/helptext/sharing';\nimport { DatasetCreate } from 'app/interfaces/dataset.interface';\nimport { NfsShare } from 'app/interfaces/nfs-share.interface';\nimport { GroupComboboxProvider } from 'app/modules/forms/ix-forms/classes/group-combobox-provider';\nimport { UserComboboxProvider } from 'app/modules/forms/ix-forms/classes/user-combobox-provider';\nimport { IxSlideInRef } from 'app/modules/forms/ix-forms/components/ix-slide-in/ix-slide-in-ref';\nimport { SLIDE_IN_DATA } from 'app/modules/forms/ix-forms/components/ix-slide-in/ix-slide-in.token';\nimport { FormErrorHandlerService } from 'app/modules/forms/ix-forms/services/form-error-handler.service';\nimport { ipv4or6cidrValidator } from 'app/modules/forms/ix-forms/validators/ip-validation';\nimport { SnackbarService } from 'app/modules/snackbar/services/snackbar.service';\nimport { DatasetService } from 'app/services/dataset-service/dataset.service';\nimport { FilesystemService } from 'app/services/filesystem.service';\nimport { UserService } from 'app/services/user.service';\nimport { WebSocketService } from 'app/services/ws.service';\nimport { checkIfServiceIsEnabled } from 'app/store/services/services.actions';\nimport { ServicesState } from 'app/store/services/services.reducer';\n\n@UntilDestroy()\n@Component({\n selector: 'ix-nfs-form',\n templateUrl: './nfs-form.component.html',\n styleUrls: ['./nfs-form.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class NfsFormComponent implements OnInit {\n existingNfsShare: NfsShare;\n defaultNfsShare: NfsShare;\n\n isLoading = false;\n isAdvancedMode = false;\n hasNfsSecurityField = false;\n createDatasetProps: Omit = {\n share_type: DatasetPreset.Multiprotocol,\n };\n\n form = this.formBuilder.group({\n path: ['', Validators.required],\n comment: [''],\n enabled: [true],\n ro: [false],\n maproot_user: [''],\n maproot_group: [''],\n mapall_user: [''],\n mapall_group: [''],\n security: [[] as NfsSecurityProvider[]],\n networks: this.formBuilder.array([]),\n hosts: this.formBuilder.array([]),\n });\n\n get isNew(): boolean {\n return !this.existingNfsShare;\n }\n\n get title(): string {\n return this.isNew\n ? this.translate.instant('Add NFS Share')\n : this.translate.instant('Edit NFS Share');\n }\n\n readonly requiredRoles = [Role.SharingNfsWrite, Role.SharingWrite];\n readonly helptext = helptextSharingNfs;\n readonly userProvider = new UserComboboxProvider(this.userService);\n readonly groupProvider = new GroupComboboxProvider(this.userService);\n readonly treeNodeProvider = this.filesystemService.getFilesystemNodeProvider({ directoriesOnly: true });\n\n readonly securityOptions$ = of([\n {\n label: 'SYS',\n value: NfsSecurityProvider.Sys,\n },\n {\n label: 'KRB5',\n value: NfsSecurityProvider.Krb5,\n },\n {\n label: 'KRB5I',\n value: NfsSecurityProvider.Krb5i,\n },\n {\n label: 'KRB5P',\n value: NfsSecurityProvider.Krb5p,\n },\n ]);\n\n constructor(\n private ws: WebSocketService,\n private formBuilder: FormBuilder,\n private userService: UserService,\n private translate: TranslateService,\n private filesystemService: FilesystemService,\n private formErrorHandler: FormErrorHandlerService,\n private cdr: ChangeDetectorRef,\n private snackbar: SnackbarService,\n private datasetService: DatasetService,\n private slideInRef: IxSlideInRef,\n private store$: Store,\n @Inject(SLIDE_IN_DATA) private data: { existingNfsShare?: NfsShare; defaultNfsShare?: NfsShare },\n ) {\n this.existingNfsShare = this.data?.existingNfsShare;\n this.defaultNfsShare = this.data?.defaultNfsShare;\n }\n\n setNfsShareForEdit(): void {\n this.existingNfsShare.networks.forEach(() => this.addNetworkControl());\n this.existingNfsShare.hosts.forEach(() => this.addHostControl());\n this.form.patchValue(this.existingNfsShare);\n }\n\n ngOnInit(): void {\n this.checkForNfsSecurityField();\n\n if (this.defaultNfsShare) {\n this.form.patchValue(this.defaultNfsShare);\n }\n\n if (this.existingNfsShare) {\n this.setNfsShareForEdit();\n }\n }\n\n addNetworkControl(): void {\n this.form.controls.networks.push(this.formBuilder.control('', [Validators.required, ipv4or6cidrValidator()]));\n }\n\n removeNetworkControl(index: number): void {\n this.form.controls.networks.removeAt(index);\n }\n\n addHostControl(): void {\n this.form.controls.hosts.push(this.formBuilder.control('', Validators.required));\n }\n\n removeHostControl(index: number): void {\n this.form.controls.hosts.removeAt(index);\n }\n\n toggleAdvancedMode(): void {\n this.isAdvancedMode = !this.isAdvancedMode;\n }\n\n onSubmit(): void {\n const nfsShare = this.form.value;\n let request$: Observable;\n if (this.isNew) {\n request$ = this.ws.call('sharing.nfs.create', [nfsShare]);\n } else {\n request$ = this.ws.call('sharing.nfs.update', [this.existingNfsShare.id, nfsShare]);\n }\n\n this.datasetService.rootLevelDatasetWarning(\n nfsShare.path,\n this.translate.instant(helptextSharingNfs.root_level_warning),\n !this.form.controls.path.dirty,\n )\n .pipe(\n filter(Boolean),\n tap(() => {\n this.isLoading = true;\n this.cdr.markForCheck();\n }),\n switchMap(() => request$),\n untilDestroyed(this),\n ).subscribe({\n next: () => {\n if (this.isNew) {\n this.snackbar.success(this.translate.instant('NFS share created'));\n } else {\n this.snackbar.success(this.translate.instant('NFS share updated'));\n }\n this.store$.dispatch(checkIfServiceIsEnabled({ serviceName: ServiceName.Nfs }));\n this.isLoading = false;\n this.cdr.markForCheck();\n this.slideInRef.close(true);\n },\n error: (error: unknown) => {\n this.isLoading = false;\n this.formErrorHandler.handleWsFormError(error, this.form);\n this.cdr.markForCheck();\n },\n });\n }\n\n private checkForNfsSecurityField(): void {\n this.ws.call('nfs.config')\n .pipe(untilDestroyed(this))\n .subscribe((nfsConfig) => {\n this.hasNfsSecurityField = nfsConfig.protocols?.includes(NfsProtocol.V4);\n });\n }\n}\n", "\n\n\n \n
\n \n \n \n\n \n \n\n \n \n\n @if (isAdvancedMode) {\n \n \n\n \n\n \n\n \n\n \n\n \n \n }\n\n \n \n @for (network of form.controls.networks.controls; track network; let i = $index) {\n \n \n \n }\n \n\n \n @for (network of form.controls.hosts.controls; track network; let i = $index) {\n \n \n \n }\n \n \n\n \n \n {{ 'Save' | translate }}\n \n\n \n \n
\n
\n
\n", "import { ChangeDetectionStrategy, Component, Inject } from '@angular/core';\nimport { MAT_DIALOG_DATA } from '@angular/material/dialog';\nimport { TranslateService } from '@ngx-translate/core';\nimport { Role } from 'app/enums/role.enum';\nimport { helptextSharingSmb } from 'app/helptext/sharing';\n\ninterface RestartDialogData {\n homeshare: boolean;\n timemachine: boolean;\n hosts: boolean;\n path: boolean;\n isNew: boolean;\n}\n\n@Component({\n selector: 'ix-restart-smb-dialog',\n templateUrl: './restart-smb-dialog.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class RestartSmbDialogComponent {\n readonly requiredRoles = [Role.SharingSmbWrite, Role.SharingWrite];\n\n readonly helptext = helptextSharingSmb;\n constructor(\n private translate: TranslateService,\n @Inject(MAT_DIALOG_DATA) public data: RestartDialogData,\n ) {}\n\n get homeShareMessage(): string {\n return this.data.isNew\n ? this.translate.instant('Enabled \\'Use as Home Share\\'')\n : this.translate.instant('Updated \\'Use as Home Share\\'');\n }\n\n get timemachineMessage(): string {\n return this.data.isNew\n ? this.translate.instant('Enabled \\'Time Machine\\'')\n : this.translate.instant('Update \\'Time Machine\\'');\n }\n\n get pathMessage(): string {\n return this.translate.instant('Share Path updated');\n }\n\n get hostsMessage(): string {\n return this.data.isNew\n ? this.translate.instant('\\'Hosts Allow\\' or \\'Hosts Deny\\' has been set')\n : this.translate.instant('\\'Hosts Allow\\' or \\'Hosts Deny\\' has been updated');\n }\n}\n", "\n

{{ 'Restart SMB Service' | translate }}

\n
\n

{{ helptext.restartPt1 | translate }}

\n
    \n @if (data.homeshare) {\n
  • {{ homeShareMessage | translate }}
  • \n }\n @if (data.timemachine) {\n
  • {{ timemachineMessage | translate }}
  • \n }\n @if (data.hosts) {\n
  • {{ hostsMessage | translate }}
  • \n }\n @if (data.path) {\n
  • {{ pathMessage | translate }}
  • \n }\n
\n\n

{{ helptext.restartPt2 }}

\n
\n
\n\n \n {{ 'Restart Service' | translate }}\n\n", "import {\n AfterViewInit,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n Inject,\n OnInit,\n} from '@angular/core';\nimport { Validators, FormBuilder } from '@angular/forms';\nimport { MatDialog } from '@angular/material/dialog';\nimport { Router } from '@angular/router';\nimport { UntilDestroy, untilDestroyed } from '@ngneat/until-destroy';\nimport { Store } from '@ngrx/store';\nimport { TranslateService } from '@ngx-translate/core';\nimport _ from 'lodash';\nimport { noop, Observable, of } from 'rxjs';\nimport {\n debounceTime,\n filter,\n map,\n switchMap,\n take,\n tap,\n} from 'rxjs/operators';\nimport { DatasetPreset } from 'app/enums/dataset.enum';\nimport { Role } from 'app/enums/role.enum';\nimport { ServiceName } from 'app/enums/service-name.enum';\nimport { ServiceStatus } from 'app/enums/service-status.enum';\nimport { helptextSharingSmb } from 'app/helptext/sharing';\nimport { DatasetCreate } from 'app/interfaces/dataset.interface';\nimport { Option } from 'app/interfaces/option.interface';\nimport {\n SmbPresets,\n SmbPresetType,\n SmbShare,\n} from 'app/interfaces/smb-share.interface';\nimport { WebSocketError } from 'app/interfaces/websocket-error.interface';\nimport { DialogService } from 'app/modules/dialog/dialog.service';\nimport { ChipsProvider } from 'app/modules/forms/ix-forms/components/ix-chips/chips-provider';\nimport { IxSlideInRef } from 'app/modules/forms/ix-forms/components/ix-slide-in/ix-slide-in-ref';\nimport { SLIDE_IN_DATA } from 'app/modules/forms/ix-forms/components/ix-slide-in/ix-slide-in.token';\nimport { FormErrorHandlerService } from 'app/modules/forms/ix-forms/services/form-error-handler.service';\nimport { IxFormatterService } from 'app/modules/forms/ix-forms/services/ix-formatter.service';\nimport { AppLoaderService } from 'app/modules/loader/app-loader.service';\nimport { SnackbarService } from 'app/modules/snackbar/services/snackbar.service';\nimport { RestartSmbDialogComponent } from 'app/pages/sharing/smb/smb-form/restart-smb-dialog/restart-smb-dialog.component';\nimport { SmbValidationService } from 'app/pages/sharing/smb/smb-form/smb-validator.service';\nimport { DatasetService } from 'app/services/dataset-service/dataset.service';\nimport { FilesystemService } from 'app/services/filesystem.service';\nimport { UserService } from 'app/services/user.service';\nimport { WebSocketService } from 'app/services/ws.service';\nimport { checkIfServiceIsEnabled } from 'app/store/services/services.actions';\nimport { ServicesState } from 'app/store/services/services.reducer';\nimport { selectService } from 'app/store/services/services.selectors';\n\n@UntilDestroy()\n@Component({\n selector: 'ix-smb-form',\n templateUrl: './smb-form.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class SmbFormComponent implements OnInit, AfterViewInit {\n existingSmbShare: SmbShare;\n defaultSmbShare: SmbShare;\n\n isLoading = false;\n isAdvancedMode = false;\n namesInUse: string[] = [];\n readonly helptextSharingSmb = helptextSharingSmb;\n readonly requiredRoles = [Role.SharingSmbWrite, Role.SharingWrite];\n private wasStripAclWarningShown = false;\n\n groupProvider: ChipsProvider = (query) => {\n return this.userService.groupQueryDsCache(query).pipe(\n map((groups) => groups.map((group) => group.group)),\n );\n };\n\n title: string = helptextSharingSmb.formTitleAdd;\n\n createDatasetProps: Omit = {\n share_type: DatasetPreset.Smb,\n };\n\n get isNew(): boolean {\n return !this.existingSmbShare;\n }\n\n get isAsyncValidatorPending(): boolean {\n return this.form.controls.name.status === 'PENDING' && this.form.controls.name.touched;\n }\n\n readonly treeNodeProvider = this.filesystemService.getFilesystemNodeProvider({\n directoriesOnly: true,\n includeSnapshots: false,\n });\n\n presets: SmbPresets;\n protected presetFields: (keyof SmbShare)[] = [];\n\n purposeOptions$: Observable;\n\n get hasAddedAllowDenyHosts(): boolean {\n const hostsallow = this.form.controls.hostsallow.value;\n const hostsdeny = this.form.controls.hostsdeny.value;\n return (\n (this.isNew && hostsallow && hostsallow.length > 0)\n || (this.isNew && hostsdeny && hostsdeny.length > 0)\n || this.hasHostAllowDenyChanged(hostsallow, hostsdeny)\n );\n }\n\n hasHostAllowDenyChanged(hostsallow: string[], hostsdeny: string[]): boolean {\n return (\n !_.isEqual(this.existingSmbShare?.hostsallow, hostsallow)\n || !_.isEqual(this.existingSmbShare?.hostsdeny, hostsdeny)\n );\n }\n\n get isRestartRequired(): boolean {\n return (\n this.isNewTimemachineShare\n || this.isNewHomeShare\n || this.wasPathChanged\n || this.hasAddedAllowDenyHosts\n );\n }\n\n get isNewTimemachineShare(): boolean {\n const timemachine = this.form.controls.timemachine.value;\n return (\n (this.isNew && timemachine)\n || timemachine !== this.existingSmbShare?.timemachine\n );\n }\n\n get isNewHomeShare(): boolean {\n const homeShare = this.form.controls.home.value;\n return (\n (this.isNew && homeShare) || homeShare !== this.existingSmbShare?.home\n );\n }\n\n get wasPathChanged(): boolean {\n return (\n !this.isNew && this.form.controls.path.value !== this.existingSmbShare?.path\n );\n }\n hostsAllowTooltip = this.translate.instant('Enter a list of allowed hostnames or IP addresses.\\\n Separate entries by pressing Enter. A more detailed description \\\n with examples can be found \\\n here.

\\\n If neither *Hosts Allow* or *Hosts Deny* contains \\\n an entry, then SMB share access is allowed for any host.

\\\n If there is a *Hosts Allow* list but no *Hosts Deny* list, then only allow \\\n hosts on the *Hosts Allow* list.

\\\n If there is a *Hosts Deny* list but no *Hosts Allow* list, then allow all \\\n hosts that are not on the *Hosts Deny* list.

\\\n If there is both a *Hosts Allow* and *Hosts Deny* list, then allow all hosts \\\n that are on the *Hosts Allow* list.

\\\n If there is a host not on the *Hosts Allow* and not on the *Hosts Deny* list, \\\n then allow it.', { url: 'https://wiki.samba.org/index.php/1.4_Samba_Security' });\n\n form = this.formBuilder.group({\n path: ['', Validators.required],\n name: ['', Validators.required],\n purpose: [null as SmbPresetType],\n comment: [''],\n enabled: [true],\n acl: [false],\n ro: [false],\n browsable: [true],\n guestok: [false],\n abe: [false],\n hostsallow: [[] as string[]],\n hostsdeny: [[] as string[]],\n home: [false],\n timemachine: [false],\n timemachine_quota: [null as number],\n afp: [false],\n shadowcopy: [false],\n recyclebin: [false],\n aapl_name_mangling: [false],\n streams: [false],\n durablehandle: [false],\n fsrvp: [false],\n path_suffix: [''],\n auxsmbconf: [''],\n audit: this.formBuilder.group({\n enable: [false],\n watch_list: [[] as string[]],\n ignore_list: [[] as string[]],\n }),\n });\n\n constructor(\n public formatter: IxFormatterService,\n private cdr: ChangeDetectorRef,\n private formBuilder: FormBuilder,\n private ws: WebSocketService,\n private matDialog: MatDialog,\n private dialogService: DialogService,\n private datasetService: DatasetService,\n private translate: TranslateService,\n private router: Router,\n private userService: UserService,\n protected loader: AppLoaderService,\n private formErrorHandler: FormErrorHandlerService,\n private filesystemService: FilesystemService,\n private snackbar: SnackbarService,\n private slideInRef: IxSlideInRef,\n private store$: Store,\n private smbValidationService: SmbValidationService,\n @Inject(SLIDE_IN_DATA) private data: { existingSmbShare?: SmbShare; defaultSmbShare?: SmbShare },\n ) {\n this.existingSmbShare = this.data?.existingSmbShare;\n this.defaultSmbShare = this.data?.defaultSmbShare;\n }\n\n ngOnInit(): void {\n this.setupPurposeControl();\n\n this.setupAndApplyPurposePresets()\n .pipe(\n tap(() => {\n this.setupAfpWarning();\n this.setupMangleWarning();\n this.setupPathControl();\n this.setupAclControl();\n }),\n untilDestroyed(this),\n )\n .subscribe(noop);\n\n if (this.defaultSmbShare) {\n this.form.patchValue(this.defaultSmbShare);\n this.setNameFromPath();\n }\n\n if (this.existingSmbShare) {\n this.setSmbShareForEdit();\n }\n }\n\n ngAfterViewInit(): void {\n this.form.controls.name.addAsyncValidators([\n this.smbValidationService.validate(this.existingSmbShare?.name),\n ]);\n }\n\n setupAclControl(): void {\n this.form.controls.acl\n .valueChanges.pipe(debounceTime(100), untilDestroyed(this))\n .subscribe((acl) => {\n this.checkAndShowStripAclWarning(this.form.controls.path.value, acl);\n });\n }\n\n setupMangleWarning(): void {\n this.form.controls.aapl_name_mangling.valueChanges.pipe(\n filter(\n (value) => value !== this.existingSmbShare?.aapl_name_mangling && !this.isNew,\n ),\n take(1),\n switchMap(() => this.dialogService.confirm({\n title: helptextSharingSmb.manglingDialog.title,\n message: helptextSharingSmb.manglingDialog.message,\n hideCheckbox: true,\n buttonText: helptextSharingSmb.manglingDialog.action,\n hideCancel: true,\n })),\n untilDestroyed(this),\n )\n .subscribe();\n }\n\n setupPathControl(): void {\n this.form.controls.path.valueChanges.pipe(\n debounceTime(50),\n tap(() => this.setNameFromPath()),\n untilDestroyed(this),\n )\n .subscribe((path) => {\n this.checkAndShowStripAclWarning(path, this.form.controls.acl.value);\n });\n }\n\n setupAfpWarning(): void {\n this.form.controls.afp.valueChanges.pipe(untilDestroyed(this))\n .subscribe((value: boolean) => {\n this.afpConfirmEnable(value);\n });\n }\n\n setupPurposeControl(): void {\n this.form.controls.purpose.valueChanges.pipe(untilDestroyed(this))\n .subscribe((value: string) => {\n this.clearPresets();\n this.setValuesFromPreset(value);\n });\n }\n\n setNameFromPath(): void {\n const pathControl = this.form.controls.path;\n if (!pathControl.value) {\n return;\n }\n const nameControl = this.form.controls.name;\n if (pathControl.value && (!nameControl.value || !nameControl.dirty)) {\n const name = pathControl.value.split('/').pop();\n nameControl.setValue(name);\n nameControl.markAsTouched();\n }\n this.cdr.markForCheck();\n }\n\n checkAndShowStripAclWarning(path: string, aclValue: boolean): void {\n if (this.wasStripAclWarningShown || !path || aclValue) {\n return;\n }\n this.ws\n .call('filesystem.acl_is_trivial', [path])\n .pipe(untilDestroyed(this))\n .subscribe((aclIsTrivial) => {\n if (!aclIsTrivial) {\n this.wasStripAclWarningShown = true;\n this.showStripAclWarning();\n }\n });\n }\n\n setValuesFromPreset(preset: string): void {\n if (!this.presets?.[preset]) {\n return;\n }\n Object.keys(this.presets[preset].params).forEach((param) => {\n this.presetFields.push(param as keyof SmbShare);\n // eslint-disable-next-line no-restricted-syntax\n const ctrl = this.form.get(param);\n if (ctrl) {\n ctrl.setValue(this.presets[preset].params[param as keyof SmbShare]);\n ctrl.disable();\n }\n });\n }\n\n /**\n * @returns Observable to allow setting warnings for values changes once default or previous preset is applied\n */\n setupAndApplyPurposePresets(): Observable {\n return this.ws.call('sharing.smb.presets').pipe(\n switchMap((presets) => {\n const nonClusterPresets = Object.entries(presets).reduce(\n (acc, [presetName, preset]) => {\n if (!preset.cluster) {\n acc[presetName] = preset;\n }\n return acc;\n },\n {} as SmbPresets,\n );\n this.presets = nonClusterPresets;\n const options = Object.entries(nonClusterPresets).map(([presetName, preset]) => ({\n label: preset.verbose_name,\n value: presetName,\n }));\n this.purposeOptions$ = of(options);\n this.form.controls.purpose.setValue(\n this.isNew\n ? SmbPresetType.DefaultShareParameters\n : this.existingSmbShare?.purpose,\n );\n this.cdr.markForCheck();\n return of(null);\n }),\n );\n }\n\n showStripAclWarning(): void {\n this.dialogService\n .confirm({\n title: helptextSharingSmb.stripACLDialog.title,\n message: helptextSharingSmb.stripACLDialog.message,\n hideCheckbox: true,\n buttonText: helptextSharingSmb.stripACLDialog.button,\n hideCancel: true,\n })\n .pipe(untilDestroyed(this))\n .subscribe();\n }\n\n clearPresets(): void {\n for (const item of this.presetFields) {\n // eslint-disable-next-line no-restricted-syntax\n this.form.get(item).enable();\n }\n this.presetFields = [];\n }\n\n setSmbShareForEdit(): void {\n this.title = helptextSharingSmb.formTitleEdit;\n const index = this.namesInUse.findIndex((name) => name === this.existingSmbShare.name);\n if (index >= 0) {\n this.namesInUse.splice(index, 1);\n }\n this.form.patchValue(this.existingSmbShare);\n }\n\n afpConfirmEnable(value: boolean): void {\n if (!value) {\n return;\n }\n const afpControl = this.form.controls.afp;\n this.dialogService\n .confirm({\n title: helptextSharingSmb.afpDialog_title,\n message: helptextSharingSmb.afpDialog_message,\n hideCheckbox: false,\n buttonText: helptextSharingSmb.afpDialog_button,\n hideCancel: false,\n })\n .pipe(untilDestroyed(this))\n .subscribe((dialogResult: boolean) => {\n if (!dialogResult) {\n afpControl.setValue(!value);\n }\n });\n }\n\n submit(): void {\n const smbShare = this.form.value;\n\n if (!smbShare.timemachine_quota || !smbShare.timemachine) {\n smbShare.timemachine_quota = 0;\n }\n\n let request$: Observable;\n\n if (this.isNew) {\n request$ = this.ws.call('sharing.smb.create', [smbShare]);\n } else {\n request$ = this.ws.call('sharing.smb.update', [this.existingSmbShare.id, smbShare]);\n }\n\n this.datasetService.rootLevelDatasetWarning(\n smbShare.path,\n this.translate.instant(helptextSharingSmb.root_level_warning),\n !this.form.controls.path.dirty,\n ).pipe(\n filter(Boolean),\n tap(() => {\n this.isLoading = true;\n this.cdr.markForCheck();\n }),\n switchMap(() => request$),\n switchMap((smbShareResponse) => this.restartCifsServiceIfNecessary().pipe(\n map(() => smbShareResponse),\n )),\n switchMap((smbShareResponse) => this.shouldRedirectToAclEdit().pipe(\n map((shouldRedirect) => ({ smbShareResponse, shouldRedirect })),\n )),\n untilDestroyed(this),\n ).subscribe({\n next: ({ smbShareResponse, shouldRedirect }) => {\n this.isLoading = false;\n this.cdr.markForCheck();\n if (shouldRedirect) {\n this.dialogService.confirm({\n title: this.translate.instant('Configure ACL'),\n message: this.translate.instant('Do you want to configure the ACL?'),\n buttonText: this.translate.instant('Configure'),\n cancelText: this.translate.instant('No'),\n hideCheckbox: true,\n }).pipe(untilDestroyed(this)).subscribe((isConfigure) => {\n if (isConfigure) {\n const homeShare = this.form.controls.home.value;\n this.router.navigate(\n ['/', 'datasets', 'acl', 'edit'],\n { queryParams: { homeShare, path: smbShareResponse.path_local } },\n );\n }\n this.store$.dispatch(checkIfServiceIsEnabled({ serviceName: ServiceName.Cifs }));\n this.slideInRef.close(true);\n });\n } else {\n this.store$.dispatch(checkIfServiceIsEnabled({ serviceName: ServiceName.Cifs }));\n this.slideInRef.close(true);\n }\n },\n error: (error: WebSocketError) => {\n if (error?.reason?.includes('[ENOENT]') || error?.reason?.includes('[EXDEV]')) {\n this.dialogService.closeAllDialogs();\n }\n this.isLoading = false;\n this.cdr.markForCheck();\n this.formErrorHandler.handleWsFormError(error, this.form, {}, 'smb-form-toggle-advanced-options');\n },\n });\n }\n\n restartCifsServiceIfNecessary(): Observable {\n return this.promptIfRestartRequired().pipe(\n switchMap((shouldRestart) => {\n if (shouldRestart) {\n return this.restartCifsService();\n }\n return of(false);\n }),\n );\n }\n\n promptIfRestartRequired(): Observable {\n return this.store$.select(selectService(ServiceName.Cifs)).pipe(\n map((service) => service.state === ServiceStatus.Running),\n switchMap((isRunning) => {\n if (isRunning && this.isRestartRequired) {\n return this.matDialog.open(RestartSmbDialogComponent, {\n data: {\n timemachine: this.isNewTimemachineShare,\n homeshare: this.isNewHomeShare,\n path: this.wasPathChanged,\n hosts: this.hasAddedAllowDenyHosts,\n isNew: this.isNew,\n },\n }).afterClosed();\n }\n return of(false);\n }),\n take(1),\n );\n }\n\n restartCifsService = (): Observable => {\n this.loader.open();\n return this.ws.call('service.restart', [ServiceName.Cifs]).pipe(\n tap(() => {\n this.loader.close();\n this.snackbar.success(\n this.translate.instant(\n helptextSharingSmb.restarted_smb_dialog.message,\n ),\n );\n }),\n );\n };\n\n shouldRedirectToAclEdit(): Observable {\n const sharePath: string = this.form.controls.path.value;\n const datasetId = sharePath.replace('/mnt/', '');\n return this.ws.call('filesystem.stat', [sharePath]).pipe(\n switchMap((stat) => {\n return of(\n stat.acl !== this.form.controls.acl.value && datasetId.includes('/'),\n );\n }),\n );\n }\n}\n", "\n\n\n \n
\n \n \n\n \n\n \n\n \n\n \n \n\n @if (isAdvancedMode) {\n \n \n\n \n\n \n\n \n\n \n\n \n\n \n \n\n \n \n\n \n\n \n \n\n \n \n\n \n\n
\n \n
\n\n \n\n \n\n \n\n \n\n \n\n \n\n \n\n \n\n \n
\n }\n\n \n \n {{ 'Save' | translate }}\n \n\n \n {{ isAdvancedMode ? ('Basic Options' | translate) : ('Advanced Options' | translate) }}\n \n \n
\n
\n
\n", "import { NfsAclTag } from 'app/enums/nfs-acl.enum';\nimport { SmbSharesecPermission, SmbSharesecType } from 'app/enums/smb-sharesec.enum';\n\nexport interface SmbShare {\n aapl_name_mangling: boolean;\n abe: boolean;\n acl: boolean;\n browsable: boolean;\n cluster_volname: string;\n comment: string;\n durablehandle: boolean;\n enabled: boolean;\n fsrvp: boolean;\n guestok: boolean;\n home: boolean;\n hostsallow: string[];\n hostsdeny: string[];\n id: number;\n locked: boolean;\n name: string;\n path: string;\n path_suffix: string;\n auxsmbconf: string;\n purpose: SmbPresetType;\n recyclebin: boolean;\n ro: boolean;\n shadowcopy: boolean;\n streams: boolean;\n timemachine: boolean;\n vuid: string;\n path_local: string;\n audit: {\n enable?: boolean;\n watch_list?: string[];\n ignore_list?: string[];\n };\n}\n\nexport enum SmbPresetType {\n NoPresets = 'NO_PRESET',\n DefaultShareParameters = 'DEFAULT_SHARE',\n MultiUserTimeMachine = 'ENHANCED_TIMEMACHINE',\n MultiProtocolShares = 'MULTI_PROTOCOL_NFS',\n PrivateSmbDatasets = 'PRIVATE_DATASETS',\n SmbWorm = 'WORM_DROPBOX',\n}\n\nexport interface SmbPreset {\n cluster: boolean;\n verbose_name: string;\n params: Partial;\n}\n\nexport type SmbPresets = Record;\n\nexport interface SmbSharesec {\n id: number;\n share_acl: SmbSharesecAce[];\n share_name: string;\n}\n\nexport interface SmbSharesecAce {\n ae_perm: SmbSharesecPermission;\n ae_type: SmbSharesecType;\n ae_who_id: {\n id_type: NfsAclTag.Everyone | NfsAclTag.UserGroup | NfsAclTag.User | NfsAclTag.Both | null;\n id: number;\n };\n ae_who_sid?: string;\n ae_who_str?: NfsAclTag.Everyone | number | null;\n}\n\nexport type SmbShareUpdate = {\n timemachine_quota?: number;\n} & Partial>;\n", "import { Injectable } from '@angular/core';\nimport {\n AbstractControl, ValidationErrors,\n} from '@angular/forms';\nimport { UntilDestroy, untilDestroyed } from '@ngneat/until-destroy';\nimport { TranslateService } from '@ngx-translate/core';\nimport {\n Observable, catchError, debounceTime, distinctUntilChanged, of, switchMap, take,\n} from 'rxjs';\nimport { DialogService } from 'app/modules/dialog/dialog.service';\nimport { WebSocketService } from 'app/services/ws.service';\n\n@UntilDestroy()\n@Injectable({\n providedIn: 'root',\n})\nexport class SmbValidationService {\n private noSmbUsersError = this.translate.instant('TrueNAS server must be joined to Active Directory or have at least one local SMB user before creating an SMB share');\n private nameExistsError = this.translate.instant('Share with this name already exists');\n private wasNoSmbUsersWarningShown = false;\n\n constructor(\n private ws: WebSocketService,\n private dialogService: DialogService,\n private translate: TranslateService,\n ) { }\n\n validate = (originalName?: string): (control: AbstractControl) => Observable => {\n this.wasNoSmbUsersWarningShown = false;\n return (control: AbstractControl): Observable => {\n return control.valueChanges.pipe(\n debounceTime(300),\n distinctUntilChanged(),\n take(1),\n switchMap((value: string) => {\n if (originalName === value) {\n return of(null);\n }\n\n return this.ws.call('sharing.smb.share_precheck', [{ name: value }]).pipe(\n switchMap((response) => this.handleError(response)),\n catchError((error: { reason: string }) => this.handleError(error)),\n );\n }),\n );\n };\n };\n\n private handleError(error: { reason: string }): Observable {\n if (error === null) {\n return of(null);\n }\n\n const errorText = this.extractError(error.reason);\n\n if (errorText === this.noSmbUsersError) {\n this.showNoSmbUsersWarning();\n return of(null);\n }\n\n return of({\n customValidator: {\n message: errorText,\n },\n preCheckFailed: true,\n });\n }\n\n private showNoSmbUsersWarning(): void {\n if (this.wasNoSmbUsersWarningShown) {\n return;\n }\n this.wasNoSmbUsersWarningShown = true;\n this.dialogService\n .confirm({\n title: this.translate.instant('Warning'),\n message: this.noSmbUsersError,\n hideCheckbox: true,\n buttonText: this.translate.instant('Close'),\n hideCancel: true,\n })\n .pipe(untilDestroyed(this))\n .subscribe();\n }\n\n private extractError(error: string): string {\n if (error.includes(this.noSmbUsersError)) {\n return this.translate.instant(this.noSmbUsersError);\n }\n if (error.includes(this.nameExistsError)) {\n return this.translate.instant(this.nameExistsError);\n }\n return error;\n }\n}\n", "import { marker as T } from '@biesbjerg/ngx-translate-extract-marker';\n\nexport enum NfsAclTag {\n Owner = 'owner@',\n Group = 'group@',\n Everyone = 'everyone@',\n User = 'USER',\n UserGroup = 'GROUP',\n Both = 'BOTH', // middleware returns `ID_TYPE_BOTH` when it is not possible to determine whether an AD entity is a user or a group\n}\n\nexport const nfsAclTagLabels = new Map([\n [NfsAclTag.User, T('User')],\n [NfsAclTag.UserGroup, T('Group')],\n [NfsAclTag.Owner, T('owner@')],\n [NfsAclTag.Group, T('group@')],\n [NfsAclTag.Everyone, T('everyone@')],\n]);\n\nexport const smbAclTagLabels = new Map([\n [NfsAclTag.User, T('User')],\n [NfsAclTag.UserGroup, T('Group')],\n [NfsAclTag.Both, T('Unknown')],\n [NfsAclTag.Everyone, T('everyone@')],\n]);\n\nexport enum NfsAclType {\n Allow = 'ALLOW',\n Deny = 'DENY',\n}\n\nexport const nfsAclTypeLabels = new Map([\n [NfsAclType.Allow, T('Allow')],\n [NfsAclType.Deny, T('Deny')],\n]);\n\nexport enum NfsBasicPermission {\n FullControl = 'FULL_CONTROL',\n Modify = 'MODIFY',\n Read = 'READ',\n Traverse = 'TRAVERSE',\n}\n\nexport const nfsBasicPermissionLabels = new Map([\n [NfsBasicPermission.Read, T('Read')],\n [NfsBasicPermission.Modify, T('Modify')],\n [NfsBasicPermission.Traverse, T('Traverse')],\n [NfsBasicPermission.FullControl, T('Full Control')],\n]);\n\nexport enum NfsAdvancedPermission {\n ReadData = 'READ_DATA',\n WriteData = 'WRITE_DATA',\n AppendData = 'APPEND_DATA',\n ReadNamedAttrs = 'READ_NAMED_ATTRS',\n WriteNamedAttrs = 'WRITE_NAMED_ATTRS',\n Execute = 'EXECUTE',\n DeleteChild = 'DELETE_CHILD',\n ReadAttributes = 'READ_ATTRIBUTES',\n WriteAttributes = 'WRITE_ATTRIBUTES',\n Delete = 'DELETE',\n ReadAcl = 'READ_ACL',\n WriteAcl = 'WRITE_ACL',\n WriteOwner = 'WRITE_OWNER',\n Synchronize = 'SYNCHRONIZE',\n}\n\nexport const nfsAdvancedPermissionLabels = new Map([\n [NfsAdvancedPermission.ReadData, T('Read Data')],\n [NfsAdvancedPermission.WriteData, T('Write Data')],\n [NfsAdvancedPermission.AppendData, T('Append Data')],\n [NfsAdvancedPermission.ReadNamedAttrs, T('Read Named Attributes')],\n [NfsAdvancedPermission.WriteNamedAttrs, T('Write Named Attributes')],\n [NfsAdvancedPermission.Execute, T('Execute')],\n [NfsAdvancedPermission.DeleteChild, T('Delete Children')],\n [NfsAdvancedPermission.ReadAttributes, T('Read Attributes')],\n [NfsAdvancedPermission.WriteAttributes, T('Write Attributes')],\n [NfsAdvancedPermission.Delete, T('Delete')],\n [NfsAdvancedPermission.ReadAcl, T('Read ACL')],\n [NfsAdvancedPermission.WriteAcl, T('Write ACL')],\n [NfsAdvancedPermission.WriteOwner, T('Write Owner')],\n [NfsAdvancedPermission.Synchronize, T('Synchronize')],\n]);\n\nexport enum NfsBasicFlag {\n Inherit = 'INHERIT',\n NoInherit = 'NOINHERIT',\n}\n\nexport const nfsBasicFlagLabels = new Map([\n [NfsBasicFlag.Inherit, T('Inherit')],\n [NfsBasicFlag.NoInherit, T('No Inherit')],\n]);\n\nexport enum NfsAdvancedFlag {\n FileInherit = 'FILE_INHERIT',\n DirectoryInherit = 'DIRECTORY_INHERIT',\n NoPropagateInherit = 'NO_PROPAGATE_INHERIT',\n InheritOnly = 'INHERIT_ONLY',\n Inherited = 'INHERITED',\n}\n\nexport const nfsAdvancedFlagLabels = new Map([\n [NfsAdvancedFlag.FileInherit, T('File Inherit')],\n [NfsAdvancedFlag.DirectoryInherit, T('Directory Inherit')],\n [NfsAdvancedFlag.NoPropagateInherit, T('No Propagate Inherit')],\n [NfsAdvancedFlag.InheritOnly, T('Inherit Only')],\n [NfsAdvancedFlag.Inherited, T('Inherited')],\n]);\n"], "mappings": "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", "names": ["NfsSecurityProvider", "helptextSharingIscsi", "fieldset_target_basic", "fieldset_target_group", "target_form_placeholder_name", "target_form_tooltip_name", "target_form_placeholder_alias", "target_form_tooltip_alias", "target_form_placeholder_mode", "target_form_tooltip_mode", "target_form_enum_mode", "label", "value", "target_form_placeholder_portal", "target_form_tooltip_portal", "target_form_placeholder_initiator", "target_form_tooltip_initiator", "target_form_placeholder_authmethod", "target_form_tooltip_authmethod", "target_form_enum_authmethod", "target_form_placeholder_auth", "target_form_tooltip_auth", "target_form_placeholder_delete", "portal_form_placeholder_comment", "portal_form_tooltip_comment", "portal_form_placeholder_discovery_authmethod", "portal_form_tooltip_discovery_authmethod", "portal_form_placeholder_discovery_authgroup", "portal_form_tooltip_discovery_authgroup", "portal_form_placeholder_ip", "portal_form_tooltip_ip", "portal_form_placeholder_port", "portal_form_tooltip_port", "initiator_form_tooltip_connected_initiators", "all_placeholder_initiators", "initiator_form_placeholder_initiators", "initiator_form_tooltip_initiators", "initiator_form_placeholder_auth_network", "initiator_form_tooltip_auth_network", "initiator_form_placeholder_comment", "initiator_form_tooltip_comment", "globalconf_tooltip_basename", "globalconf_tooltip_isns_servers", "globalconf_tooltip_pool_avail_threshold", "globalconf_tooltip_alua", "fieldset_extent_basic", "fieldset_extent_type", "fieldset_extent_options", "extent_placeholder_name", "extent_tooltip_name", "extent_validators_name", "Validators", "required", "extent_placeholder_type", "extent_tooltip_type", "extent_placeholder_disk", "extent_tooltip_disk", "extent_placeholder_serial", "extent_tooltip_serial", "extent_placeholder_path", "extent_tooltip_path", "extent_placeholder_filesize", "extent_tooltip_filesize", "extent_placeholder_blocksize", "extent_tooltip_blocksize", "extent_placeholder_pblocksize", "extent_tooltip_pblocksize", "extent_placeholder_avail_threshold", "extent_tooltip_avail_threshold", "extent_placeholder_comment", "extent_tooltip_comment", "extent_placeholder_insecure_tpc", "extent_tooltip_insecure_tpc", "extent_placeholder_xen", "extent_tooltip_xen", "extent_placeholder_rpm", "extent_tooltip_rpm", "extent_placeholder_ro", "extent_tooltip_ro", "extent_placeholder_enabled", "extent_tooltip_enabled", "extent_form_enum_rpm", "extent_form_enum_type", "extent_form_enum_blocksize", "authaccess_placeholder_tag", "authaccess_tooltip_tag", "authaccess_placeholder_user", "authaccess_tooltip_user", "authaccess_placeholder_secret", "authaccess_tooltip_secret", "authaccess_placeholder_secret_confirm", "authaccess_tooltip_peeruser", "authaccess_tooltip_peersecret", "associated_target_tooltip_target", "associated_target_tooltip_lunid", "associated_target_tooltip_extent", "fc_mode_placeholder", "fc_mode_tooltip", "fc_target_placeholder", "fc_target_tooltip", "fc_initiators_placeholder", "fc_initiators_tooltip", "step1_label", "name_placeholder", "name_tooltip", "disk_placeholder", "disk_tooltip", "dataset_placeholder", "dataset_tooltip", "volsize_placeholder", "volsize_tooltip", "volblocksize_placeholder", "volblocksize_tooltip", "usefor_placeholder", "usefor_tooltip", "target_placeholder", "target_tooltip", "step2_label", "portal_placeholder", "portal_tooltip", "step3_label", "initiators_placeholder", "initiators_tooltip", "auth_network", "placeholder", "tooltip", "error", "helptextSharingNfs", "root_level_warning", "tooltip_path", "error_alias", "tooltip_comment", "tooltip_alldirs", "tooltip_ro", "tooltip_quiet", "tooltip_enabled", "tooltip_networks_wrapper", "tooltip_network", "tooltip_hosts", "tooltip_hosts_wrapper", "tooltip_maproot_user", "tooltip_maproot_group", "tooltip_mapall_user", "tooltip_mapall_group", "tooltip_security", "helptextSharingSmb", "root_level_warning", "shareAclDescription", "placeholder_path", "tooltip_path", "errormsg_name", "placeholder_name", "tooltip_name", "placeholder_comment", "tooltip_comment", "placeholder_enabled", "tooltip_enabled", "tooltip_enabled_audit_log", "tooltip_watch_list", "tooltip_ignore_list", "placeholder_home", "tooltip_home", "placeholder_purpose", "tooltip_purpose", "placeholder_timemachine", "tooltip_timemachine", "placeholder_timemachine_quota", "tooltip_timemachine_quota", "placeholder_afp", "tooltip_afp", "afpDialog_title", "afpDialog_message", "afpDialog_button", "placeholder_acl", "tooltip_acl", "placeholder_ro", "tooltip_ro", "placeholder_browsable", "tooltip_browsable", "placeholder_recyclebin", "tooltip_recyclebin", "placeholder_guestok", "tooltip_guestok", "placeholder_abe", "tooltip_abe", "placeholder_hostsallow", "placeholder_hostsdeny", "tooltip_hostsdeny", "placeholder_shadowcopy", "tooltip_shadowcopy", "placeholder_aapl_name_mangling", "tooltip_aapl_name_mangling", "placeholder_streams", "tooltip_streams", "placeholder_durablehandle", "tooltip_durablehandle", "placeholder_fsrvp", "tooltip_fsrvp", "placeholder_path_suffix", "tooltip_path_suffix", "placeholder_auxsmbconf", "tooltip_auxsmbconf", "actions_basic_mode", "actions_advanced_mode", "action_share_acl", "action_edit_acl", "action_edit_acl_dialog", "title", "dialog_warning", "dialog_warning_message", "dialog_edit_acl_title", "dialog_edit_acl_message", "dialog_edit_acl_button", "restart_smb_dialog", "message_time_machine", "message_allow_deny", "action_btn", "cancel_btn", "restarted_smb_dialog", "message", "ae_who_sid_tooltip", "ae_who_name_domain_tooltip", "ae_who_name_name_tooltip", "ae_perm_tooltip", "ae_type_tooltip", "formTitleAdd", "formTitleEdit", "stripACLDialog", "button", "manglingDialog", "action", "restartPt1", "restartPt2", "shared", "delete_share_message", "dialog_title", "dialog_message", "dialog_button", "GroupComboboxProvider", "fetch", "filterValue", "page", "offset", "pageSize", "userService", "groupQueryDsCache", "pipe", "map", "groups", "groupQueryResToOptions", "options", "initialOptions", "excludeInitialOptions", "filter", "option", "find", "initialOption", "value", "group", "label", "optionsValueField", "nextPage", "constructor", "\u0275\u0275elementStart", "\u0275\u0275element", "\u0275\u0275elementEnd", "\u0275\u0275property", "\u0275\u0275pipeBind1", "\u0275\u0275advance", "ctx_r0", "helptext", "tooltip_ro", "tooltip_maproot_user", "userProvider", "tooltip_maproot_group", "groupProvider", "tooltip_mapall_user", "tooltip_mapall_group", "securityOptions$", "tooltip_security", "\u0275\u0275listener", "\u0275$index_61_r3", "\u0275\u0275restoreView", "_r2", "$index", "\u0275\u0275nextContext", "\u0275\u0275resetView", "removeNetworkControl", "tooltip_network", "\u0275$index_73_r5", "_r4", "removeHostControl", "tooltip_hosts", "\u0275\u0275text", "form", "invalid", "isLoading", "\u0275\u0275textInterpolate1", "NfsFormComponent", "_a", "isNew", "existingNfsShare", "title", "translate", "instant", "constructor", "ws", "formBuilder", "userService", "filesystemService", "formErrorHandler", "cdr", "snackbar", "datasetService", "slideInRef", "store$", "data", "isAdvancedMode", "hasNfsSecurityField", "createDatasetProps", "share_type", "DatasetPreset", "Multiprotocol", "group", "path", "Validators", "required", "comment", "enabled", "ro", "maproot_user", "maproot_group", "mapall_user", "mapall_group", "security", "networks", "array", "hosts", "requiredRoles", "Role", "SharingNfsWrite", "SharingWrite", "helptextSharingNfs", "UserComboboxProvider", "GroupComboboxProvider", "treeNodeProvider", "getFilesystemNodeProvider", "directoriesOnly", "of", "label", "value", "NfsSecurityProvider", "Sys", "Krb5", "Krb5i", "Krb5p", "defaultNfsShare", "_b", "setNfsShareForEdit", "forEach", "addNetworkControl", "addHostControl", "patchValue", "ngOnInit", "checkForNfsSecurityField", "controls", "push", "control", "ipv4or6cidrValidator", "index", "removeAt", "toggleAdvancedMode", "onSubmit", "nfsShare", "request$", "call", "id", "rootLevelDatasetWarning", "root_level_warning", "dirty", "pipe", "filter", "Boolean", "tap", "markForCheck", "switchMap", "untilDestroyed", "subscribe", "next", "success", "dispatch", "checkIfServiceIsEnabled", "serviceName", "ServiceName", "Nfs", "close", "error", "handleWsFormError", "nfsConfig", "protocols", "includes", "NfsProtocol", "V4", "\u0275\u0275directiveInject", "WebSocketService", "FormBuilder", "UserService", "TranslateService", "FilesystemService", "FormErrorHandlerService", "ChangeDetectorRef", "SnackbarService", "DatasetService", "IxSlideInRef", "Store", "SLIDE_IN_DATA", "selectors", "decls", "vars", "consts", "template", "rf", "ctx", "\u0275\u0275template", "NfsFormComponent_Conditional_17_Template", "\u0275\u0275repeaterCreate", "NfsFormComponent_For_23_Template", "\u0275\u0275repeaterTrackByIdentity", "NfsFormComponent_For_28_Template", "NfsFormComponent_button_30_Template", "tooltip_path", "tooltip_comment", "tooltip_enabled", "\u0275\u0275conditional", "length", "get", "tooltip_networks_wrapper", "\u0275\u0275repeater", "tooltip_hosts_wrapper", "__decorate", "UntilDestroy", "\u0275\u0275elementStart", "\u0275\u0275text", "\u0275\u0275elementEnd", "\u0275\u0275advance", "\u0275\u0275textInterpolate", "\u0275\u0275pipeBind1", "ctx_r0", "homeShareMessage", "timemachineMessage", "hostsMessage", "pathMessage", "\u0275\u0275property", "RestartSmbDialogComponent", "constructor", "translate", "data", "requiredRoles", "Role", "SharingSmbWrite", "SharingWrite", "helptext", "helptextSharingSmb", "isNew", "instant", "\u0275\u0275directiveInject", "TranslateService", "MAT_DIALOG_DATA", "selectors", "decls", "vars", "consts", "template", "rf", "ctx", "\u0275\u0275template", "RestartSmbDialogComponent_Conditional_9_Template", "RestartSmbDialogComponent_Conditional_10_Template", "RestartSmbDialogComponent_Conditional_11_Template", "RestartSmbDialogComponent_Conditional_12_Template", "RestartSmbDialogComponent_button_20_Template", "restartPt1", "\u0275\u0275conditional", "homeshare", "timemachine", "hosts", "path", "restartPt2", "_RestartSmbDialogComponent", "import_lodash", "SmbPresetType", "SmbValidationService", "_a", "constructor", "ws", "dialogService", "translate", "noSmbUsersError", "instant", "nameExistsError", "wasNoSmbUsersWarningShown", "validate", "originalName", "control", "valueChanges", "pipe", "debounceTime", "distinctUntilChanged", "take", "switchMap", "value", "of", "call", "name", "response", "handleError", "catchError", "error", "errorText", "extractError", "reason", "showNoSmbUsersWarning", "customValidator", "message", "preCheckFailed", "confirm", "title", "hideCheckbox", "buttonText", "hideCancel", "untilDestroyed", "subscribe", "includes", "\u0275\u0275inject", "WebSocketService", "DialogService", "TranslateService", "factory", "\u0275fac", "providedIn", "__decorate", "UntilDestroy", "\u0275\u0275elementStart", "\u0275\u0275element", "\u0275\u0275elementEnd", "\u0275\u0275property", "\u0275\u0275pipeBind1", "\u0275\u0275advance", "ctx_r0", "helptextSharingSmb", "placeholder_acl", "tooltip_acl", "placeholder_ro", "tooltip_ro", "placeholder_browsable", "tooltip_browsable", "placeholder_guestok", "tooltip_guestok", "placeholder_abe", "tooltip_abe", "placeholder_hostsallow", "hostsAllowTooltip", "placeholder_hostsdeny", "tooltip_hostsdeny", "placeholder_enabled", "tooltip_enabled_audit_log", "tooltip_watch_list", "groupProvider", "tooltip_ignore_list", "placeholder_home", "tooltip_home", "placeholder_timemachine", "tooltip_timemachine", "form", "get", "value", "placeholder_timemachine_quota", "tooltip_timemachine_quota", "formatter", "memorySizeFormatting", "memorySizeParsing", "placeholder_afp", "tooltip_afp", "placeholder_shadowcopy", "tooltip_shadowcopy", "placeholder_recyclebin", "tooltip_recyclebin", "placeholder_aapl_name_mangling", "tooltip_aapl_name_mangling", "placeholder_streams", "tooltip_streams", "placeholder_durablehandle", "tooltip_durablehandle", "placeholder_fsrvp", "tooltip_fsrvp", "placeholder_path_suffix", "tooltip_path_suffix", "placeholder_auxsmbconf", "tooltip_auxsmbconf", "\u0275\u0275text", "invalid", "isLoading", "isAsyncValidatorPending", "\u0275\u0275textInterpolate1", "SmbFormComponent", "_a", "isNew", "existingSmbShare", "controls", "name", "status", "touched", "hasAddedAllowDenyHosts", "hostsallow", "hostsdeny", "length", "hasHostAllowDenyChanged", "_", "isEqual", "_b", "isRestartRequired", "isNewTimemachineShare", "isNewHomeShare", "wasPathChanged", "timemachine", "homeShare", "home", "path", "constructor", "cdr", "formBuilder", "ws", "matDialog", "dialogService", "datasetService", "translate", "router", "userService", "loader", "formErrorHandler", "filesystemService", "snackbar", "slideInRef", "store$", "smbValidationService", "data", "isAdvancedMode", "namesInUse", "requiredRoles", "Role", "SharingSmbWrite", "SharingWrite", "wasStripAclWarningShown", "query", "groupQueryDsCache", "pipe", "map", "groups", "group", "title", "formTitleAdd", "createDatasetProps", "share_type", "DatasetPreset", "Smb", "treeNodeProvider", "getFilesystemNodeProvider", "directoriesOnly", "includeSnapshots", "presetFields", "instant", "url", "Validators", "required", "purpose", "comment", "enabled", "acl", "ro", "browsable", "guestok", "abe", "timemachine_quota", "afp", "shadowcopy", "recyclebin", "aapl_name_mangling", "streams", "durablehandle", "fsrvp", "path_suffix", "auxsmbconf", "audit", "enable", "watch_list", "ignore_list", "restartCifsService", "open", "call", "ServiceName", "Cifs", "tap", "close", "success", "restarted_smb_dialog", "message", "defaultSmbShare", "ngOnInit", "setupPurposeControl", "setupAndApplyPurposePresets", "setupAfpWarning", "setupMangleWarning", "setupPathControl", "setupAclControl", "untilDestroyed", "subscribe", "noop", "patchValue", "setNameFromPath", "setSmbShareForEdit", "ngAfterViewInit", "addAsyncValidators", "validate", "valueChanges", "debounceTime", "checkAndShowStripAclWarning", "filter", "take", "switchMap", "confirm", "manglingDialog", "hideCheckbox", "buttonText", "action", "hideCancel", "afpConfirmEnable", "clearPresets", "setValuesFromPreset", "pathControl", "nameControl", "dirty", "split", "pop", "setValue", "markAsTouched", "markForCheck", "aclValue", "aclIsTrivial", "showStripAclWarning", "preset", "presets", "Object", "keys", "params", "forEach", "param", "push", "ctrl", "disable", "nonClusterPresets", "entries", "reduce", "acc", "presetName", "cluster", "options", "label", "verbose_name", "purposeOptions$", "of", "SmbPresetType", "DefaultShareParameters", "stripACLDialog", "button", "item", "formTitleEdit", "index", "findIndex", "splice", "afpControl", "afpDialog_title", "afpDialog_message", "afpDialog_button", "dialogResult", "submit", "smbShare", "request$", "id", "rootLevelDatasetWarning", "root_level_warning", "Boolean", "smbShareResponse", "restartCifsServiceIfNecessary", "shouldRedirectToAclEdit", "shouldRedirect", "next", "cancelText", "isConfigure", "navigate", "queryParams", "path_local", "dispatch", "checkIfServiceIsEnabled", "serviceName", "error", "reason", "includes", "closeAllDialogs", "handleWsFormError", "promptIfRestartRequired", "shouldRestart", "select", "selectService", "service", "state", "ServiceStatus", "Running", "isRunning", "RestartSmbDialogComponent", "homeshare", "hosts", "afterClosed", "sharePath", "datasetId", "replace", "stat", "\u0275\u0275directiveInject", "IxFormatterService", "ChangeDetectorRef", "FormBuilder", "WebSocketService", "MatDialog", "DialogService", "DatasetService", "TranslateService", "Router", "UserService", "AppLoaderService", "FormErrorHandlerService", "FilesystemService", "SnackbarService", "IxSlideInRef", "Store", "SmbValidationService", "SLIDE_IN_DATA", "selectors", "decls", "vars", "consts", "template", "rf", "ctx", "\u0275\u0275listener", "\u0275\u0275template", "SmbFormComponent_Conditional_21_Template", "SmbFormComponent_button_23_Template", "tooltip_path", "placeholder_path", "placeholder_name", "tooltip_name", "placeholder_purpose", "tooltip_purpose", "placeholder_comment", "tooltip_comment", "tooltip_enabled", "\u0275\u0275conditional", "__decorate", "UntilDestroy", "NfsAclTag", "nfsAclTagLabels", "Map", "User", "UserGroup", "Owner", "Group", "Everyone", "smbAclTagLabels", "Both", "NfsAclType", "nfsAclTypeLabels", "Allow", "Deny", "NfsBasicPermission", "nfsBasicPermissionLabels", "Read", "Modify", "Traverse", "FullControl", "NfsAdvancedPermission", "nfsAdvancedPermissionLabels", "ReadData", "WriteData", "AppendData", "ReadNamedAttrs", "WriteNamedAttrs", "Execute", "DeleteChild", "ReadAttributes", "WriteAttributes", "Delete", "ReadAcl", "WriteAcl", "WriteOwner", "Synchronize", "NfsBasicFlag", "nfsBasicFlagLabels", "Inherit", "NoInherit", "NfsAdvancedFlag", "nfsAdvancedFlagLabels", "FileInherit", "DirectoryInherit", "NoPropagateInherit", "InheritOnly", "Inherited"] }