Dlulisa imeyile phakathi kweeseva ngojongano lomsebenzisi usebenzisa i-IMAPSync

Eli nqaku liza kujonga indlela yokudlulisela imeyile phakathi kweeseva ezahlukeneyo usebenzisa into eluncedo ye-IMAPSync ngokusebenzisa ujongano lwangaphambili lomsebenzisi.

Kumncedisi wendawo kufuneka ube nebhokisi enegama elifunekayo lokungena kunye negama lokugqitha. Ngaphambi kokusebenzisa i-Imapsync, kufuneka uyifake (https://imapsync.lamiral.info/#install).

Ekubeni umbutho ungavumeli ukusetyenziswa kwamagama ayimfihlo e-imeyile yabasebenzi kwiskripthi, inkqubo yokufuduka inikwa umsebenzisi. Ujongano lomsebenzisi olusekelwe kwiwebhu luye lwaphuhliswa ngenxa yesi sizathu, oluquka imodyuli yefom (gis.html) kunye nemodyuli yokuqalisa iskripthi ye-imapsync (gis.php). Ukuzalisa abancedisi I-IMAP ingenziwa ngokuzenzekelayo ngokuhlalutya umxholo wentsimi yegama lebhokisi yeposi. Ukusebenzisa iFetchmail njenge-plugin yeRoundcube akujongwa, kuba andikwazanga ukufumana uhlalutyo oluneenkcukacha noluhambelanayo lwale ngxaki.

Ujongano lwewebhu luqulathe imihlaba enolwazi malunga neebhokisi zeposi, indawo yemveliso yophumezo, kunye namaqhosha olawulo (gis.html).

Dlulisa imeyile phakathi kweeseva ngojongano lomsebenzisi usebenzisa i-IMAPSync

<html>
<head>
    <meta http-equiv="Content-Type" content="text/html;charset=utf-8">
    <script>
          //запуск скрипта sh ΠΈΠ· ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ строки linux
     function isexe() {
      var ta = document.getElementById('output');
      document.getElementById('output').value += 'Start import, please wait...n';
      var source = new EventSource('gis.php');
      source.addEventListener('message', function(e) {
       if (e.data !== '') {
        ta.value += e.data + 'n';
       }
      }, false);
      source.addEventListener('error', function(e) {
       source.close();
      }, false);
     }//isexe

    //ΠΊΠ½ΠΎΠΏΠΊΠ° Π’Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ
    function Complete() {
      document.cookie = "mail1="+document.maildata.mail1.value;
      document.cookie = "pass1="+document.maildata.pass1.value;
      document.cookie = "mail2="+document.maildata.mail2.value;
      document.cookie = "pass2="+document.maildata.pass2.value;
      document.cookie = "msrv1="+document.maildata.msrv1.value;
      document.cookie = "msrv2="+document.maildata.msrv2.value;
      //alert(document.cookie); // ΠΏΠΎΠΊΠ°Π·Ρ‹Π²Π°Π΅ΠΌ всС ΠΊΡƒΠΊΠΈ
      isexe();
      document.cookie = "mail1="+document.maildata.mail1.value+"; max-age=0";
      document.cookie = "pass1="+document.maildata.pass1.value+"; max-age=0";
      document.cookie = "mail2="+document.maildata.mail2.value+"; max-age=0";
      document.cookie = "pass2="+document.maildata.pass2.value+"; max-age=0";
      document.cookie = "msrv1="+document.maildata.msrv1.value+"; max-age=0";
      document.cookie = "msrv2="+document.maildata.msrv2.value+"; max-age=0";
    }//Complete

    function ShowCookie() {
     alert(document.cookie); // ΠΏΠΎΠΊΠ°Π·Ρ‹Π²Π°Π΅ΠΌ всС ΠΊΡƒΠΊΠΈ
    }
    </script>
</head>

<body>
<H1>ΠœΠΈΠ³Ρ€Π°Ρ†ΠΈΡ ΠΏΠΎΡ‡Ρ‚ΠΎΠ²ΠΎΠ³ΠΎ ящика</H1>
<FORM NAME="maildata">
   <TABLE>
        <TR><TD><B>Π˜ΡΡ…ΠΎΠ΄Π½Ρ‹ΠΉ ΠΏΠΎΡ‡Ρ‚ΠΎΠ²Ρ‹ΠΉ ящик:<B></TD>
            <TD><INPUT NAME="mail1" SIZE=20 VALUE=""
        <TR><TD><B>ΠŸΠ°Ρ€ΠΎΠ»ΡŒ:<B>
            <TD><INPUT TYPE="password" NAME="pass1" SIZE=20 VALUE=""
        <TR><TD><B>IMAP сСрвСр:<B></TD>
            <TD><INPUT NAME="msrv1" SIZE=20 VALUE=""<TD>
        <TR><TD><B>ΠšΠΎΠ½Π΅Ρ‡Π½Ρ‹ΠΉ ΠΏΠΎΡ‡Ρ‚ΠΎΠ²Ρ‹ΠΉ ящик:<B></TD>
            <TD><INPUT NAME="mail2" SIZE=20 VALUE=""
        <TR><TD><B>ΠŸΠ°Ρ€ΠΎΠ»ΡŒ:<B>
            <TD><INPUT TYPE="password" NAME="pass2" SIZE=20 VALUE=""
        <TR><TD><B>IMAP сСрвСр:<B></TD>
            <TD><INPUT NAME="msrv2" SIZE=20 VALUE=""<TD>
    </TABLE>
    <p>Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ выполнСния:<br/><textarea id="output" style="width: 50%; height: 25em;"></textarea></p>
   <INPUT TYPE="button" VALUE="Π’Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ" onClick="Complete();">
    <INPUT TYPE="reset" VALUE="Бброс">
    <INPUT TYPE="button" VALUE="ΠŸΠΎΠΊΠ°Π·Π°Ρ‚ΡŒ cookie" onClick="ShowCookie();">
</FORM>
</body>
</html>

i-imapsync script launcher (gis.php).

<?php
 ob_end_flush();
 ini_set("output_buffering", "0");
 ob_implicit_flush(true);
 header('Content-Type: text/event-stream');
 header('Cache-Control: no-cache');

 //Π²Ρ‹Π²ΠΎΠ΄ Π² ΠΎΠ±Π»Π°ΡΡ‚ΡŒ сообщСний
function echoEvent($datatext) {
  echo "data: ".implode("ndata: ", explode("n", $datatext))."nn";
 }//echoEvent

 echoEvent("Start!");
 //Ρ„ΠΎΡ€ΠΌΠΈΡ€ΡƒΠ΅ΠΌ строку запуска скрипта imapsync с ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π°ΠΌΠΈ
 $strexe = "/bin/bash /home/user/imapsync/startimapsync.sh "
           .htmlspecialchars($_COOKIE["mail1"]).' '
           .htmlspecialchars($_COOKIE["pass1"])." "
           .htmlspecialchars($_COOKIE["mail2"])." "
           .htmlspecialchars($_COOKIE["pass2"])." "
           .htmlspecialchars($_COOKIE["msrv1"])." "
           .htmlspecialchars($_COOKIE["msrv2"]);
 echoEvent($strexe);
//запускаСм sh скрипт ΠΈΠ· ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ строки linux
 $proc = popen($strexe,'r');
//ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ ограничСния php, поэтому достаточно вывСсти Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ окончания ΠΌΠΈΠ³Ρ€Π°Ρ†ΠΈΠΈ
 while (!feof($proc)) {
  echoEvent(fread($proc, 4096));
 }
  echoEvent("Finish!");
?>

Ushicilelo lokufuduka lwebhokisi yemeyile (startimapsync.sh) yamkela iparameters zelayini yomyalelo: ukungena kunye namagama ayimfihlo, iiseva ze-imap zomthombo kunye neebhokisi zeposi, ngokulandelelana kwazo.

#!/bin/bash
#ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄ Π² ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³ ΠΎΡ‚ΠΊΡƒΠ΄Π° Π±Ρ‹Π» Π·Π°ΠΏΡƒΡ‰Π΅Π½ Π΄Π°Π½Π½Ρ‹ΠΉ скрипт
cd `dirname $0`
#запуск imapsync с Π½ΡƒΠΆΠ½Ρ‹ΠΌΠΈ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π°ΠΌΠΈ
 /home/user/imapsync/./imapsync 
#сСрвСр Π½Π°Ρ‡Π°Π»ΡŒΠ½ΠΎΠ³ΠΎ ΠΏΠΎΡ‡Ρ‚ΠΎΠ²ΠΎΠ³ΠΎ ящика, Π»ΠΎΠ³ΠΈΠ½, ΠΏΠ°Ρ€ΠΎΠ»ΡŒ
  --host1 $5:993    --user1 $1 --password1 $2 
#сСрвСр ΠΊΠΎΠ½Π΅Ρ‡Π½ΠΎΠ³ΠΎ ΠΏΠΎΡ‡Ρ‚ΠΎΠ²ΠΎΠ³ΠΎ ящика, Π»ΠΎΠ³ΠΈΠ½, ΠΏΠ°Ρ€ΠΎΠ»ΡŒ
  --host2 $6:993    --user2 $3 --password2 $4 
#использованиС  ΡˆΠΈΡ„Ρ€ΠΎΠ²Π°Π½ΠΈΡ ΠΏΡ€ΠΈ ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠΈ ΠΊ сСрвСру
  --ssl1  --ssl2 
#сопоставлСниС ΠΏΠ°ΠΏΠΎΠΊ
  --automap 
#ΠΏΠ΅Ρ€Π²ΠΎΠΉ синхронизируСм ΠΏΠ°ΠΏΠΊΡƒ входящих
  --folderfirst INBOX 
#сопоставлСниС ΠΏΠ°ΠΏΠΎΠΊ
  --regextrans2 "s/&BB4EQgQ,BEAEMAQyBDsENQQ9BD0ESwQ1-/Sent/" 
  --regextrans2 "s/&BBoEPgRABDcEOAQ9BDA-/Trash/" 
  --regextrans2 "s/&BCEEPwQwBDw-/Junk/" 
  --regextrans2 "s/&BCcENQRABD0EPgQyBDgEOgQ4-/Drafts/" 
#ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎ ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°Π΅ΠΌ Π½Π΅ ΠΏΡ€ΠΎΡ‡ΠΈΡ‚Π°Π½Π½Ρ‹Π΅ письма Π²ΠΎ Входящих
  --regexflag 's/\Unseen//g' 
#Π‘Ρ€Π°Π²Π½Π΅Π½ΠΈΠ΅ ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½Π½Ρ‹Ρ… ΠΈ ΠΎΡ‚ΠΏΡ€Π°Π²Π»Π΅Π½Π½Ρ‹Ρ… писСм ΠΏΠΎ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρƒ Π˜Π΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΠΎΠ½Π½Ρ‹ΠΉ Π½ΠΎΠΌΠ΅Ρ€
  --useheader Message-Id

umthombo: www.habr.com

Thenga ukusingathwa okuthembekileyo kwiindawo ezinokhuseleko lweDDoS, iiseva zeVPS VDS πŸ”₯ Thenga ukusingathwa kwewebhusayithi okuthembekileyo ngokhuseleko lwe-DDoS, iiseva zeVPS VDS | ProHoster