The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]

"Samba наконец-то умеет "понимайт по рюсски"!" (samba rus howto)


<< Предыдущая ИНДЕКС Поиск в статьях src Установить закладку Перейти на закладку Следующая >>
Ключевые слова: samba, rus, howto,  (найти похожие документы)
_ RU.UNIX (2:5077/15.22) _____________________________________________ RU.UNIX _ From : zoltar.tlt.ru!sowhat@zoltar.tlt.ru Wed 24 Sep 97 09:18 Subj : "Samba наконец-то умеет "понимайт по рюсски"!" ________________________________________________________________________________ Большое человеческое спасибо за это Александру Глазунову! С его разрешения отсылаю его письмо с патчем и smb.conf: vvvv -x-x-x-x-x-x-x-x-x-x-x-x-x-x-x-x-x-x-x-x-x-x-x-x-x-x-x-x-x-x-x-x-x-x-- ... После того, как мой директор поставил под сомнение существование Linux-сервера в виду отсутствия поддержки русских букв Самбой пришлось форсировать решение этой проблемы. Долгие поиски в Интернете и Usenet'е ничего хорошего не дали. Осталось только вспомнить Си и лезть в исходники. Выяснилось, что задуманный параметр в файле конфигурации "valid chars" для интернационализации Самбы обрабатывается ни фига не правильно. Да ещё пару ляпусов нашлось по ходу. Пришлось отхачить файл charset.c. После чего всё встало на свои места. Долгого тестирования не было, но за всё время работы нашего сервера bug'ов пока не обнаружил. Сижу довольный. И все вокруг довольны. А теперь к делу: Версия Самбы: брал последнюю - samba-1.9.17p1, насколько понимаю, ранние версии немного не так устроены, поэтому желательно сначала поиметь эту версию Самбы. Можно у меня на ftp://alba.august.ru/pub/Linux/samba там же лежит patch и пример smb.conf со строкой "valid chars=..." патч привожу ниже patch.samba-1.9.17p1 -------------------------------- diff -u -N -r samba-1.9.17p1/source/charset.old samba-1.9.17p1/source/charset.c -$- samba-1.9.17p1/source/charset.old Fri Sep 5 16:53:47 1997 +++ samba-1.9.17p1/source/charset.c Mon Sep 22 13:29:26 1997 @@ -190,8 +190,15 @@ DEBUG(6,("Adding chars 0x%x 0x%x (l->u = %s) (u->l = %s)\n",lower,upper, map_lower_to_upper ? "True" : "False", map_upper_to_lower ? "True" : "False")); - if (lower) dos_char_map[lower] = 1; - if (upper) dos_char_map[upper] = 1; + if (lower) { + dos_char_map[lower] = 1; + lower_char_map[lower] = (char)lower; + upper_char_map[lower] = (char)lower; + } + if (upper) { + dos_char_map[upper] = 1; + upper_char_map[upper] = (char)upper; + } if (lower && upper) { if(map_upper_to_lower) lower_char_map[upper] = (char)lower; @@ -213,7 +220,9 @@ setlocale(LC_ALL,"C"); #endif - for (i= 0;i<=255;i++) { + for (i=0;i<=255;i++) { + char c = (char)i; + upper_char_map[i] = lower_char_map[i] = c; dos_char_map[i] = 0; } @@ -222,12 +231,10 @@ add_dos_char(i,False,0,False); } - for (i=0; i<=255; i++) { - char c = (char)i; - upper_char_map[i] = lower_char_map[i] = c; - if (isupper(c)) lower_char_map[i] = tolower(c); - if (islower(c)) upper_char_map[i] = toupper(c); + for (i=0x41;i<=0x5a;i++) { + add_dos_char(i+0x20,True,i,True); } + } /************************************************************************** ** @@ -301,10 +308,18 @@ int i1=0,i2=0; if (isdigit((unsigned char)*t) || (*t)=='-') { sscanf(t,"%i:%i",&i1,&i2); - add_dos_char(i1,True,i2,True); } else { sscanf(t,"%c:%c",&c1,&c2); - add_dos_char((unsigned char)c1,True,(unsigned char)c2, True); + i1=(unsigned char)c1; + i2=(unsigned char)c2; + } + if( i1 && i2 ) { + add_dos_char(i1,True,i2,True); + } else { + if( i1 ) + add_dos_char(i1,False,0,False); + else + add_dos_char(i2,False,0,False); } } -------------------------------- smb.conf: пример конфигурационного файла - возьми из него строку "valid chars". Предупреждаю, я сознательно её разделил на несколько строк - всё должно быть в ОДHОЙ строке: valid chars = ... smb.conf ------------- ; The global setting for a RedHat default install [global] workgroup = WORKGROUP log file = /var/log/samba lock directory = /var/lock/samba share modes = yes auto services = public read prediction = True root directory = / preserve case = yes short preserve case = yes case sensitive = no default case = lower client code page = 437 valid chars = 0xa0:0x80 0xa1:0x81 0xa2:0x82 0xa3:0x83 0xa4:0x84 0xa5:0x85 0xa6:0x86 0xa7:0x87 0xa8:0x88 0xa9:0x89 0xaa:0x8a 0xab:0x8b 0xac:0x8c 0xad:0x8d 0xae:0x8e 0xaf:0x8f 0xe0:0x90 0xe1:0x91 0xe2:0x92 0xe3:0x93 0xe4:0x94 0xe5:0x95 0xe6:0x96 0xe7:0x97 0xe8:0x98 0xe9:0x99 0xea:0x9a 0xeb:0x9b 0xec:0x9c 0xed:0x9d 0xee:0x9e 0xef:0x9f 0xf1:0xf0 ; A publicly accessible directory, but read only, except for people in ; the staff group [public] guest account = nobody comment = Public Stuff path = /home/public public = yes writable = yes browseable = yes available = yes ------------------------------------------------ Вот, в принципе и всё. Желаю удачи! Hу и как обычно, по всем вопросам и пожеланиям обращаться: E-mail: can@alba.august.ru ftp://alba.august.ru http://alba.august.ru --- * Origin: IsTel Company (2:50/128.0@fidonet) _ RU.UNIX (2:5077/15.22) _____________________________________________ RU.UNIX _ From : Lapinsky Alexander <avl@kiam1.rssi.ru> Wed 24 Sep 97 16:06 Subj : Re: "Samba наконец-то умеет "понимайт по рюсски"!" ________________________________________________________________________________ X-RealName: Lapinsky Alexander RFC-In-reply-to: 's message of 24 Sep 1997 09:18:02 GMT > Большое человеческое спасибо за это Александру Глазунову! > С его разрешения отсылаю его письмо с патчем и smb.conf: vvvv > > -x-x-x-x-x-x-x-x-x-x-x-x-x-x-x-x-x-x-x-x-x-x-x-x-x-x-x-x-x-x-x-x-x-x-- > > ... > > После того, как мой директор поставил под сомнение существование > Linux-сервера в виду отсутствия поддержки русских букв Самбой пришлось > форсировать решение этой проблемы. > Долгие поиски в Интернете и Usenet'е ничего хорошего не дали. Естественно, так как эти правки делались на прошлой неделе :) Остальная часть письма опущена, а вместо него предлагается альтернативное решение: - скачать исправленные исходники samba-1.9.17p1 ftp://ftp.kiam1.rssi.ru/pub/unix/sources/samba-1.9.17p1-RUS.tar.gz или http://ftp.kiam1.rssi.ru/pub/unix/sources/samba-1.9.17p1-RUS.tar.gz - скомпилировать ее и установить - прочитать man smb.conf - сделать исправления в smb.conf : а. убрать строку ``valid chars = ...'' б. добавить строку ``client code page = 866'' в. добавить строку ``character set = koi8-r'' ( для UNIX'ов с KOI8-R ), или ``character set = iso8859-5'' ( для UNIX'ов с ISO8859-5 ), или ничего не добавлять ( для UNIX'ов с CP866 ). - перезапустить все демона SAMB'ы - послать письмо со словами благодарности по адресу mailto:<avl@kiam1.rssi.ru> :) Последний пункт можно опустить, но если возникли сложности и/или есть замечания, то письмо надо выслать ОБЯЗАТЕЛЬHО. Hемного погодя будет выложена версия, прозволяющая задавать комментарии к ресурсам и к имени сервера по-русски. При этом процесс browse'ния будет правильным как со стороны MS-клиентов, так и со стороны smbclient'а. А.Лапинский P.S. Hеужели так мало владельцев систем с ISO8859-5 ? Hи одного сообщения от них. Пожалуйста, хотя бы положительные, а то я не знаю, правильно ли сделана перекодировка ? P.P.S. Обращаю внимание тех администраторов, у которых SAMBA работала с использованием ``valid chars = ...''. После применения указанных выше правок, файлы с русскими буквами, лежащие на сервере, могут перестать быть видными. Однако, если после этого дать им эти самые русские имена уже в UNIX'е, то они снова станут видимыми (во всяком случае так ДОЛЖHО быть). --- * Origin: Keldysh Institute of Applied Math. (2:50/128.0@fidonet)

<< Предыдущая ИНДЕКС Поиск в статьях src Установить закладку Перейти на закладку Следующая >>

Обсуждение [ RSS ]
  • 1, MARS (?), 17:53, 13/11/2002 [ответить]  
  • +/
    Можете ли вы мне помочь? у меня стоит ASP 7.3 и я немогу настроить самбу чтобы на виндовой машине видно было руские имена в нормальной кодировке. если можете както помочь помогите! PLZ.
     
  • 2, Klaus (?), 17:51, 20/10/2004 [ответить]  
  • +/
    Прочитал и хотел бы задать вопрос по этому поводу. Сам я дизайнер работаю в Mac OS X 10.3.5 у нас в офисе стоит сервер под Linux'ом, проблема в том, что OS X на сервере отображает русские имена коробозяками, дал прочесть статью нашему сисадмину он говорит, что у нас это и стоит:
    а. убрать строку ''valid chars = ...''
    б. добавить строку ''client code page = 866''
    в. добавить строку ''character set = koi8-r''

    а так: (или ничего не добавлять ( для UNIX'ов с CP866 )) сделать не может потому, что тогда не увидят Винды 98 (под ними сидят все менеджеры)

     

     Добавить комментарий
    Имя:
    E-Mail:
    Заголовок:
    Текст:




    Партнёры:
    PostgresPro
    Inferno Solutions
    Hosting by Hoster.ru
    Хостинг:

    Закладки на сайте
    Проследить за страницей
    Created 1996-2024 by Maxim Chirkov
    Добавить, Поддержать, Вебмастеру