Cikakken aiki tare na manyan fayilolin da aka raba, lambobin sadarwa, kalanda tsakanin sabar Kerio Connect da aka rarraba

Barka da rana, Habr!

Manufar

Ƙungiyata tana amfani da sabar wasiƙa akan dandalin Kerio Connect; ana shigar da sabar saƙo a garuruwa daban-daban don hidima ga masu amfani da su. Da farko babu wani tsari da aka rarraba, tun da yankuna sun bambanta a mataki na uku, yana nuna birnin wurin. Komai ya yi aiki kuma kowa ya yi farin ciki. Wata rana mai kyau, gudanarwa ta saita ɗawainiya, kalanda gama gari na ayyuka tsakanin duk rukunin yanar gizo!

prehistory

Da farko, ra'ayin shine haɓaka yankin Kerio Rarraba Wasiku kuma zai yi komai da kansa. Ba da jimawa ba, an ƙirƙiri wani yanki da aka rarraba, amma ba haka lamarin yake ba, uwar garken tana shirye don daidaita kalanda, manyan fayiloli, lambobin sadarwa - tsakanin wuraren da ke kan uwar garken guda ɗaya, amma kwata-kwata ba zai daidaita bayanai tsakanin da yawa ba. sabobin.

Tabbas, ban yi tsammanin irin wannan kama ba kuma na dogon lokaci na kasa yarda cewa aikin da nake buƙata ya ɓace. Daga baya na sami shaidun shaida na wannan gaskiyar. Na yi matukar mamaki da takaici da wannan.

Aiki a hankali ya juya ya zama matsala.

Menene zaɓuɓɓukan?

  • Ƙirƙiri abokan ciniki biyu akan sabar daban-daban waɗanda ke musanya mahimman bayanai tare da wasu software na ɓangare na uku. Ya zama dole a nemo wannan software na ɓangare na uku wanda zai aiwatar da wannan aikin - Ba na son irin wannan rake, amma da alama wannan ita ce kawai mafita mai sauri.
  • Rubuta rubutun kanku don aiki tare da bayanai tsakanin sabobin. Gaskiyar ita ce, Kerio yana adana kowane abu a matsayin fayil ɗin daban, don haka ya zama dole don haɓaka rubutun don aiki tare da fayiloli, amma bisa la'akari da isassun maɓuɓɓuka, aikin ya zama kamar ɗan rikitarwa, musamman tunda ya zama dole don yin aiki da yawa. yana bincika daidaiton bayanan, idan wani ya ƙirƙiri aiki a cikin lokaci ɗaya, da sauransu, da sauransu.

Duba gaba, zan ce duk da cewa Kerio yana adana wani abu azaman fayil daban, ba wauta ba ce don tambayar yadda tsarin fayil ɗin ke aiki a duk lokacin da kuka shiga abun.

Bayan da na kwashe lokaci mai yawa da tunani, na zana guntun takarda tare da tsare-tsare na "karɓar yankin abokan gaba," da ƙarfe 6 na rana na yanke shawara guda biyu masu kyau:

  • Mataki na farko shi ne ka yi abinka ba neman komai daga waje ba.
  • Magani na biyu shine a yi barci.

Tuni da safe na farka da tunani guda ɗaya kuma na gaskiya, wanda aka rage zuwa wasu haruffa - DFS

yanke shawara

Maganin kanta yayi kamar haka

  • kawo duk sabar da za su shiga aiki tare zuwa OS Windows. (Sashe na shi yana kan Linux. Ana buƙatar ƙaura bayanan wasiƙa zuwa wani OS)
  • Ƙayyade tsarin kundayen adireshi waɗanda zasu shiga cikin aiki tare - dole ne su kasance iri ɗaya.
  • Ƙayyade duk sabar saƙon a ƙarƙashin yanki ɗaya tare da sararin DFS guda ɗaya.
  • Ƙirƙirar yankin Kerio mai rarraba da aka ambata a sama, tunda a yanayina ana buƙatar daidaita bayanai, ba kawai tsakanin sabobin ba har ma tsakanin yanki; na biyu uwar garken Kerio na iya sarrafa kansa. (ba kamar na farko ba)
  • Saita kundayen adireshi masu aiki tare zuwa sararin DFS.
  • Ku zo da wani nau'i na tsummoki (bayan haka, ba za ku iya rayuwa ba tare da kullun ba)

Aiwatarwa

Misali akan sabar saƙo guda biyu (wataƙila ƙari)

1. Kerio Rarraba yanki

Cikakken aiki tare na manyan fayilolin da aka raba, lambobin sadarwa, kalanda tsakanin sabar Kerio Connect da aka rarraba

Jagora baya shiga aiki tare, amma wannan ba buƙatu bane.

Ba zan bayyana yadda ake haɓaka yankin da aka rarraba Kerio ba, babu wani abu mai rikitarwa game da shi, zaku iya nazarin jami'in. manul

A ƙarshe, ya kamata ku ga hoto mai zuwa a cikin na'ura mai ba da hanya tsakanin hanyoyin sadarwa:

Cikakken aiki tare na manyan fayilolin da aka raba, lambobin sadarwa, kalanda tsakanin sabar Kerio Connect da aka rarraba

Cikakken aiki tare na manyan fayilolin da aka raba, lambobin sadarwa, kalanda tsakanin sabar Kerio Connect da aka rarraba

Na gaba ina sha'awar manyan fayilolin da aka raba; a kan uwar garken Jagora za ku iya ƙayyade zaɓuɓɓuka masu zuwa:

Cikakken aiki tare na manyan fayilolin da aka raba, lambobin sadarwa, kalanda tsakanin sabar Kerio Connect da aka rarraba

Cikakken aiki tare na manyan fayilolin da aka raba, lambobin sadarwa, kalanda tsakanin sabar Kerio Connect da aka rarraba

Musamman ga kowane yanki - uwar garken ba zai daidaita manyan fayilolin jama'a tsakanin yanki ba

Na kowa ga duk yankuna - duk sabobin za su watsar da manyan fayilolin jama'a a cikin kowane yanki kuma su ƙirƙiri sabbin manyan fayiloli guda ɗaya don duk yankuna akan kowane sabar wasiƙa.

Tsanaki Ko da yake wannan zaɓi yana canza tsarin daidaitawa akan duk sabobin, yana aiki tare daban da kowane sabar (wato, ba tare da sarari ɗaya ba)

Mai gudanarwa zai kasance yana da ikon rarraba damar shiga tsakanin masu amfani.
a cikin akwati na, duk nawa ne kuma ina buƙatar cikakken aiki tare (A cikin yanayin ku, mafita na iya bambanta) akan kowane uwar garken kuna buƙatar ƙirƙirar saitunan yanki iri ɗaya waɗanda ke buƙatar daidaitawa.

2. Kerio data kundayen adireshi

Yanzu kuna buƙatar ƙirƙirar kundayen adireshi iri ɗaya waɗanda ke buƙatar aiki tare akan kowane sabar. Jakunkuna, Kalanda, Lambobi.

Shawara - ƙirƙirar kundayen adireshi a cikin Ingilishi, idan kun ƙirƙira su a cikin Latin, kundin adireshin zai sami suna a cikin wasu bayanan da ba za a iya fahimta ba, wannan aƙalla bai dace ba.

Yanzu kuna buƙatar nemo hanyoyin zahiri na manyan fayilolin wasiku akan kowane sabar.

Na kowa ga duk yankuna ~DataMailmail#publicСинхронизируемый каталог#msgs
Musamman ga kowane yanki ~DataMailmail**Domain**#publicСинхронизируемый каталог#msgs

Da fatan za a lura cewa ba za mu daidaita dukkan kundin adireshi ba, amma kawai akwati tare da bayanan #msgs - abubuwan da kansu ana adana su a nan, duk sauran bayanan dole ne su kasance daban ga kowane uwar garken.

3.DFS

Ba zan bayyana dalla-dalla yadda za a daidaita DFS ba, akwai isasshen bayani game da wannan batu.

DFS sabis ne na rawar gani a cikin Windows Server wanda ke ba da ikon haɗa manyan manyan fayiloli da ke kan sabobin daban-daban
Haɗi zuwa takaddar MS DFS

Kafin kafa DFS, dole ne ka dakatar da duk sabar saƙon da za su shiga aiki tare da bayanai.

Bayan kammala saitin, yakamata ku karɓi hoton da ke gaba don kowane babban fayil ɗin da aka daidaita

Cikakken aiki tare na manyan fayilolin da aka raba, lambobin sadarwa, kalanda tsakanin sabar Kerio Connect da aka rarraba

A zahiri, ba ma buƙatar buga manyan fayilolin da aka kwafi.

Cikakken aiki tare na manyan fayilolin da aka raba, lambobin sadarwa, kalanda tsakanin sabar Kerio Connect da aka rarraba

Bayan maimaitawa ya faru (kuma babu wani abu na musamman don yin kwafi a can - manyan fayiloli ba su da komai), ana iya fara sabar saƙon.

Bayan haka, zaku iya cika ɗaya daga cikin sabar wasiku tare da bayanai kuma duba cewa an kwafi bayanan daidai.

4. Kumburi

Bayanin tunani

Kamar yadda kuke gani bayan bayanan sun fara aiki tare (DFS), idan ko dai kun ƙirƙiri wani abu akan sabar ta farko, ko ta yaya babu abin da ke bayyana akan sabar ta biyu, ko ta bayyana amma ko ta yaya ba koyaushe ba.

Kada ku yanke ƙauna; ba shakka, zai bayyana a can ba dade ko ba dade, amma mafi kyau nan da nan fiye da baya. Domin ya yi latti a cikin sa'o'i 6-12.

Abinda ke faruwa shine da zaran kun ƙirƙiri wani abu akan uwar garken farko, a kan na biyu da na gaba sabobin fayil ɗin zai bayyana nan da nan godiya ga tsarin DFS, amma idan wani ya riga ya karanta wannan jagorar wasiƙar. kuma an sake buƙatar sa, uwar garken ba za ta sake karanta babban fayil ɗin #msgs ba amma za ta tofa bayanai daga maƙasudin nata, wanda ƙila ba zai dace da gaskiyarmu ba.

Kerio yana da hanyar sake karanta fihirisar, amma tana iya aiki cikin kusan sa'o'i shida, kuma a cikin waɗannan sa'o'i 6 mahimmancin aikin a cikin kalanda na iya ɗan ɓace.
Domin gwada aiki tare a yanzu, zaku iya share fayil ɗin a cikin daidaitaccen directory ɗin aiki tare index.fld, bayan sake shigar da babban fayil akan sabar saƙon kuma idan wannan fayil ɗin ya ɓace, Kerio zai sake karanta littafin da bayanan. zai bayyana. Zai yi kama da cewa wannan shine mafita, share fayil ɗin lokacin da bayanan ya canza, amma wannan baya aiki kowane lokaci, amma kawai a karon farko, to Kerio saboda wasu dalilai ya rasa duk sha'awar index.fld.
Har ila yau, yana fara tofa saƙonnin da ba su iya fahimta ga mai amfani - game da wani nau'i na index da kuma cewa yana yin wani abu a can.

Akwai wani zaɓi, don ƙirƙirar wani abu - a lokacin ƙirƙirar sabon abu, uwar garken ba zato ba tsammani ya gane cewa sunan fayil ɗin da yake son sanyawa an riga an ɗauke shi, amma ƙwallon dusar ƙanƙara kuma wannan zaɓi ne na ƙarshe.

Yaya za a kasance?

Idan muka sake mai da hankali ga hoton da ya riga ya saba da mu.

Cikakken aiki tare na manyan fayilolin da aka raba, lambobin sadarwa, kalanda tsakanin sabar Kerio Connect da aka rarraba

Amma a wani jirgin sama, zaku iya ganin maɓalli mai ban sha'awa wanda muke buƙata yanzu - Reindex manyan fayiloli

Kuma lalle ne. Idan muka danna wannan maɓallin akan sabar saƙon da ba ta san cewa wani abu ya riga ya canza a cikin #msgs da aka daidaita ba, za mu sami tabbataccen sakamako mai sauri. Duk abin da aka boye zai bayyana.

A cikin log ɗin zaku iya ganin tsawon lokacin da wannan aikin ke ɗauka; a cikin yanayina tare da bayanan dubu da yawa (dubu 15) yana ɗaukar kusan mintuna 3-4.

Duk abin da za mu yi shi ne gano yadda za mu latsa wannan maɓallin a zahiri lokacin da muke buƙata.

Sai ya zama haka Kerio suna da nasu API

Description
Rubutun

Aikin da ke gudanar da aikinmu ya yi kama da haka:
session = callMethod("Domains.checkPublicFoldersIntegrity",{}, token)

Daga duk abubuwan da ke sama, muna buƙatar rubuta rubutun da zai lura da yanayin manyan fayilolin sha'awa kuma, idan wani abu ya canza, aiwatar da aikin da muke buƙata.

Ina so in ce na rubuta nau'ikan rubutun daban-daban da yawa waɗanda ke yin cak daban-daban, kuma na daidaita kan wanda ke zana dukkan sakamako bisa adadin fayiloli.

aiwatar da rubutun

Misalin rubutun CMD da bayanin

Sake-index.bat

@echo off
set dir=%~dp0
%dir:~0,2%
CD "%~dp0"
md "%CD%LOG"
md "%CD%Setup"

ECHO -Start- >> "%CD%LOG%Computername%.log"
ECHO Start -> %Computername% %Date% %Time% >> "%CD%LOG%Computername%.log"

SetLocal EnableDelayedExpansion
for /f "UseBackQ Delims=" %%A IN ("%CD%Setup%Computername%.List") do (
  set /a c+=1
  set "m!c!=%%A"
)

set d=%c%
Echo Folder = %c%
ECHO Folder = %c% >> "%CD%LOG%Computername%.log"
ECHO.
ECHO. >> "%CD%LOG%Computername%.log"

:start
cls
if %c% LSS 1 exit
set /a id=1
set R=0

:Find
REM PF-Start
if "%id%" gtr "%c%" if %R% == 1 Goto Reindex 
if "%id%" gtr "%c%" timeout 60 && Goto start

For /F "tokens=1-3" %%a IN ('Dir "!m%id%!#msgs" /-C/S/A:-D') Do Set 2DirSize!id!=!DS!& Set DS=%%c
if "2DirSize!id!" == "" set 1DirSize!id!=!2DirSize%id%!

echo %id%
ECHO !m%id%!
echo Count        [ !1DirSize%id%! -- !2DirSize%id%! ]

if "!1DirSize%id%!" == "!2DirSize%id%!" ECHO Synk

REM DEL index.fld
if "!1DirSize%id%!" NEQ "!2DirSize%id%!" del /f /q !m%id%!index.fld && del /f /q !m%id%!indexlog.fld && del /f /q !m%id%!search.fld && set R=1 && ECHO RE-index Count && ECHO RE-index Count %Date% %Time% - Delete !m%id%! >> "%CD%LOG%Computername%.log"

set 1DirSize!id!=!2DirSize%id%!

ECHO.
ECHO.

set /a id+=1
goto Find

:Reindex
ECHO. >> "%CD%LOG%Computername%.log"
ECHO --- RE-INDEX - Start - %Date% %Time% --- >> "%CD%LOG%Computername%.log"
ECHO. >> ----------------------------------- >> "%CD%LOG%Computername%.log"
call PublicFolders.py
timeout 60
goto start

exit

Kwafin rubutun yana gudana akan kowane sabar saƙo (ana iya amfani da shi azaman sabis, ba a buƙatar haƙƙin Adm)

Rubutun yana karanta fayil ɗin Setup%Computername%.List

Inda %Computername% shine sunan uwar garken na yanzu (Littafin yana iya ƙunsar jerin sunayen sabar a lokaci ɗaya.)

Fayil ɗin %Computername%%List - ya ƙunshi cikakkun hanyoyin kundayen adireshi, kowane hanya an rubuta shi akan sabon layi, kuma bai kamata ya ƙunshi layukan wofi ba.

Bayan ƙaddamar da farko, rubutun yana aiwatar da tsarin ƙididdigewa, ba tare da la'akari da ko ya zama dole ko a'a ba, kuma rubutun kuma yana ƙirƙiri fihirisar adadin fayiloli a cikin kowane adireshi da aka daidaita.

Manufar rubutun shine a kirga duk fayilolin da ke cikin ƙayyadadden kundin adireshi.

A ƙarshen kirga kowane kundin adireshi, idan aƙalla kundin adireshi ɗaya darajar fayiloli na yanzu bai yi daidai da na baya ba, rubutun yana share fayiloli daga tushen kundin adireshin imel ɗin aiki tare: index.fld, indexlog.fld, search.fld kuma ya fara aiwatar da fihirisar manyan fayilolin wasiku da aka raba.

Ana zubar da bayanai game da aiwatar da ɗawainiya cikin kundin adireshin LOG.

Tsarin ƙididdigewa
Tsarin firikwensin ya zo ƙasa don aiwatar da aikin Kerio API
Zama = Hanyar kiran ("Domains.checkPublicFoldersIntegrity",{}, alama)

An ba da misali aiwatarwa a cikin - Python
Fayil na Jama'a.py

import json
import urllib.request
import http.cookiejar
""" Cookie storage is necessary for session handling """
jar = http.cookiejar.CookieJar()
opener = urllib.request.build_opener(urllib.request.HTTPCookieProcessor(jar))
urllib.request.install_opener(opener)
""" Hostname or ip address of your Kerio Control instance with protocol, port and credentials """

server = "http://127.0.0.1:4040"
username = "user"
password = "password"

def callMethod(method, params, token = None):
    """
    Remotely calls given method with given params.
    :param: method string with fully qualified method name
    :param: params dict with parameters of remotely called method
    :param: token CSRF token is always required except login method. Use method "Session.login" to obtain this token.
    """
    data =  {"method": method ,"id":1, "jsonrpc":"2.0", "params": params}

    req = urllib.request.Request(url = server + '/admin/api/jsonrpc/')
    req.add_header('Content-Type', 'application/json')
    if (token is not None):
        req.add_header('X-Token', token)    

    httpResponse = urllib.request.urlopen(req, json.dumps(data).encode())

    if (httpResponse.status == 200):
        body = httpResponse.read().decode()
        return json.loads(body)

session = callMethod("Session.login", {"userName":username, "password":password, "application":{"vendor":"Kerio", "name":"Control Api-Local", "version":"Python"}})
token = session["result"]["token"]
print (session)

session = callMethod("Domains.checkPublicFoldersIntegrity",{"domainId": "test2.local"}, token)
print (session)

callMethod("Session.logout",{}, token)

http://127.0.0.1:4040 za ku iya barin shi yadda yake, amma idan kuna buƙatar HTTPS, dole ne Python ta amince da takardar shaidar Kerio.

Hakanan a cikin fayil ɗin dole ne ka saka asusu mai haƙƙin yin wannan aikin (Adm - manyan fayilolin saƙon jama'a) na sabar saƙon.

Ina fatan labarina zai yi amfani ga masu gudanar da Haɗin Kerio.

source: www.habr.com

Add a comment