Самба и забранени герои
Samba (samba) под Linux. Този удивителен софтуер даде възможност на потребителите на Linux да се свържат със света на Windows. Спомням си онова прекрасно чувство, когато първият ми самба сървър се появи в локалната мрежа. Ех, имаше едно време!
Но публикацията не е за това. Знам от първа ръка, че мнозина се дразнят от ограничената поддръжка на специални символи в Windows. Но това не е причина да им отказваме, нали?

Подробности за моите злополуки и (почти) щастлив край под разфасовката. Да започваме!
Обичам да колекционирам филми. В началото се събираха на един диск и беше лесно. Тогава имаше повече дискове, парчета хартия и Excel помогна. Но всички хубави неща имат своя край и трябваше да помисля за създаването на пълноценна база данни. Една от последиците от това развитие бяха виртуалните папки/списъци с филми.
Позволете ми едно лирично отклонение. Samba има една страхотна функция - работа със символни връзки. И ако тези символни връзки не водят до наличен ресурс, тогава те не се виждат. Това ви позволява да имате директория (и повече от една), в която всяка позиция е символна връзка към конкретно хранилище. Ако дискът е свързан, тогава символната връзка се показва като налична директория. Ако не, тогава директорията изобщо не се показва. Поради тази причина (както и за други, които не са свързани с темата), samba и подобни папки се използват от много години (видими както в плейъри, Windows, така и в Linux клиенти).
Тази идилия обаче се разрушава от факта, че наличието на, например, двоеточие, се превръща в красива папка във формата (тук нарочно вмъкнах двоеточие, по-късно ще обясня защо беше избран точно този филм):2008 - Babylon N.E. - Вавилон: A.D.към това:2NIQRO
Какво да правя?
Първоначално погрешно погледнах към опцията за монтиране на mapchars. Но тя наистина не реши нищо и можеше допълнителноводят до странни имена на файлове.
Разбрах, че трябва да търся нещо, което може да замени имената на файловете в движение. Така че имате нужда от автоматично заместване. Но нямаше такива модули или те не работеха, както бихме искали. По време на търсенето третата версия на samba стана стабилна. И т.нар. Подреждаеми VFS модули, т.е. модули на виртуална файлова система. Това беше това, което търсех!
Модулът, който ми трябваше обаче го нямаше. Версия 3 на samba премина от версия 4 на версия 4 и бях близо до опит да напиша модула сам (въпреки че съм само отдалечено запознат със системното програмиране). Но продължаващото търсене ме доведе до модула vfs_catia, който беше създаден за решаване на проблеми с Catia CAD, който също създава имена със забранени знаци, но направи точно това, което се изискваше. Пълната му функционалност се разкрива от samba версия 3.5.0 нататък. Тествах на версии 4.1.x от доста време.
Това, което последва, беше въпрос на техника. Системата, която използвам - Debian - вече има пакет samba-vfs-modules, който съдържа този плъгин. Беше инсталиран и конфигуриран да заменя нелегалните символи с техните двойници (конфигурационен файл: /etc/samba/smb.conf, секция [global]):
щастлив край
След като добавим кода, претоварваме самба демона и магията в действие:2015 – Terminator÷ Genesis – Terminator Genisys
Заслужава да се отбележи, че заместванията работят и в двете посоки, т.е. работата със същия файл протича прозрачно и без увреждане на оригиналното име в системата. Въпреки че, ако опитате, можете, като промените символа на един от обичайните. Но в моя пример това не е така.
Сега нека ви напомня защо избрах филма Babylon N.E. като първи пример ... Факт е, че точката в края на името на файла или директорията във файлаWindows системата е невалидна. Ето защо2008 - Babylon N.E. - Babylon A.D.все още се показва като2XJW59
H Това е същата муха в мехлема, в голяма бъчва с мед. Засега не знам как да заменя точката в края, а не всички точки подред и ще бъда благодарен на всеки, който се отзове и помогне да затворим последния елемент от мозайката.
Благодаря ви за вниманието и нека Силата бъде с вас!
Hardcore conf в C++. Каним само професионалисти.