Klasa zawiera liste plikow z ich informacjami
Ejemplo n.º 1
0
 private pliki plikiKatalog()
 {
     pliki p = new pliki(new List<pojedynczyPlik>());
     try
     {
         DirectoryInfo di = new DirectoryInfo(folder);
         FileInfo[] files = di.GetFiles();
         foreach (FileInfo fi in files)
             p.plik.Add(new pojedynczyPlik(fi.Name, ""));
     }
     catch (Exception) { MessageBox.Show("Nie mozna pobrac listy plikow"); }
     return p;
 }
Ejemplo n.º 2
0
 public zarzadca()
 {
     names = new XmlSerializerNamespaces();
     names.Add("", "");
     if (!File.Exists("pliki.xml"))
     {
         TextWriter sw = new StreamWriter("pliki.xml", false);
         pliki p = new pliki(new List<pojedynczyPlik>());
         XmlSerializer xml = new XmlSerializer(typeof(pliki));
         xml.Serialize(sw, p, names);
         sw.Close();
     }
 }
Ejemplo n.º 3
0
 /// <summary>
 /// Konstruktor klasy, inicjalizuje wszystkie zmienne oraz tworzy katalog użytkownika jeżeli nie istnieje
 /// </summary>
 /// <param name="kom">Zmienna do obsługi sieciowej</param>
 /// <param name="ni">Zmienna ikony traya</param>
 /// <param name="b">Zmienna z obsługą błędów</param>
 /// <param name="fol">Folder użytkownika</param>
 public zarzadca(komunikacja kom,NotifyIcon ni,int b,string fol)
 {
     folder = fol;
     k = kom;
     k.folder = folder;
     kontrolaBledow = b;
     notify = ni;
     folderMutex = new Mutex();
     mutex = new Mutex();
     names = new XmlSerializerNamespaces();
     names.Add("", "");
     login = k.Login;
     if (!Directory.Exists(login))
         Directory.CreateDirectory(k.Login);
     if (!File.Exists(login + @"/" + "pliki.xml"))
     {
         TextWriter sw = new StreamWriter(login + @"/" + "pliki.xml", false);
         pliki p = new pliki(new List<pojedynczyPlik>());
         XmlSerializer xml = new XmlSerializer(typeof(pliki));
         xml.Serialize(sw, p, names);
         sw.Close();
     }
 }
Ejemplo n.º 4
0
 /// <summary>
 /// Funkcja sprawdza jakie zmieny nastąpiły na dysku lub serwerze i w zależności od tego jakie pliki się pojawiły podejmuje odpowiednią akcję
 /// </summary>
 public void szukajZmian()
 {
     mutex.WaitOne();
     folderMutex.WaitOne();
     List<plikInfo> plikiNaSerwerze;
     try
     {
         plikiNaSerwerze = k.downloadListy("");
     }
     catch (Exception ex)
     {
         switch (kontrolaBledow)
         {
             case 0: wyswietlBlad(ex.ToString()); break;
             case 1: zapiszBlad(ex.ToString()); break;
             case 2: MessageBox.Show(ex.ToString()); break;
         }
         return;
     }
     if (plikiNaSerwerze == null)
         plikiNaSerwerze = new List<plikInfo>();
     if (plikiNaSerwerze == null) return;
     pliki plikiLokalnieZapis = plikiZapisane();
     pliki plikiLokalnieKat = new pliki();
     plikiKatalog("", plikiLokalnieKat);
     if (plikiLokalnieKat == null || plikiLokalnieZapis == null) return;
     List<plikInfo> roznicaSerwerLok = sprawdzRoznicaDownload(plikiNaSerwerze, plikiLokalnieZapis, plikiLokalnieKat);
     List<pojedynczyPlik> roznicaLokSerwer = sprawdzRoznicaUpload(plikiNaSerwerze, plikiLokalnieZapis, plikiLokalnieKat);
     List<pojedynczyPlik> roznicaLokKat = sprawdzRoznicaUsunSerwer(plikiNaSerwerze, plikiLokalnieZapis, plikiLokalnieKat);
     List<pojedynczyPlik> plikiDoWykasowania = sprawdzRoznicaUsunKatalog(plikiNaSerwerze, plikiLokalnieZapis, plikiLokalnieKat);
     List<pojedynczyPlik> plikiDoAktualizacjiS = sprawdzAktualizacje(plikiLokalnieZapis, plikiLokalnieKat, plikiNaSerwerze);
     List<plikInfo> plikiDoAktualizacjiK = sprawdzAktualizacje(plikiNaSerwerze, plikiLokalnieZapis, plikiLokalnieKat);
     List<plikInfo> p = new List<plikInfo>();
     if (roznicaSerwerLok.Count != 0)
     {
         odbierzPliki(roznicaSerwerLok);
     }
     if (roznicaLokSerwer.Count != 0)
     {
         try
         {
             wyslijPlik(roznicaLokSerwer);
         }
         catch (Exception ex)
         {
             MessageBox.Show(ex.ToString());
         }
     }
     if (roznicaLokKat.Count != 0)
         usunPliki(roznicaLokKat);
     if (plikiDoWykasowania.Count != 0)
         wykasujPlik(plikiDoWykasowania);
     if (plikiDoAktualizacjiK.Count != 0)
         odbierzPliki(plikiDoAktualizacjiK);
     if (plikiDoAktualizacjiS.Count != 0)
         wyslijPlik(plikiDoAktualizacjiS);
     zapiszInfoPlikow();
     folderMutex.ReleaseMutex();
     mutex.ReleaseMutex();
 }
Ejemplo n.º 5
0
        /// <summary>
        /// Sprawdza które pliki należy usunąć z serwera
        /// </summary>
        /// <param name="serwer">Pliki na serwerze</param>
        /// <param name="plik">Pliki zapisane w pliku konfiguracyjnym</param>
        /// <param name="katalog">Pliki w katalogu</param>
        /// <returns>Lista plików do usunięcia</returns>
        private List<pojedynczyPlik> sprawdzRoznicaUsunSerwer(List<plikInfo> serwer, pliki plik, pliki katalog)
        {
            List<pojedynczyPlik> lista = new List<pojedynczyPlik>();
            foreach (plikInfo pSerwer in serwer)
            {
                pojedynczyPlik pPlik = plik.plik.Find(delegate(pojedynczyPlik p) { return p.nazwa == pSerwer.nazwa; });
                pojedynczyPlik pKatalog = katalog.plik.Find(delegate(pojedynczyPlik p) { return p.nazwa == pSerwer.nazwa; });
                if (pPlik != null && pKatalog == null)
                    lista.Add(pPlik);

            }
            return lista;
        }
Ejemplo n.º 6
0
 /// <summary>
 /// Sprawdza które pliki należy wysłać na serwer
 /// </summary>
 /// <param name="serwer">Pliki na serwerze</param>
 /// <param name="plik">Pliki zapisane w pliku konfiguracyjnym</param>
 /// <param name="katalog">Pliki w katalogu</param>
 /// <returns>Lista plików wysłania</returns>
 private List<pojedynczyPlik> sprawdzRoznicaUpload(List<plikInfo> serwer, pliki plik, pliki katalog)
 {
     List<pojedynczyPlik> lista = new List<pojedynczyPlik>();
     foreach (pojedynczyPlik pKatalog in katalog.plik)
     {
         pojedynczyPlik pPlik = plik.plik.Find(delegate(pojedynczyPlik p) { return p.nazwa == pKatalog.nazwa; });
         plikInfo pSerwer = serwer.Find(delegate(plikInfo p) { return p.nazwa == pKatalog.nazwa; });
         if (pPlik != null && pSerwer != null)
             continue;
         lista.Add(pKatalog);
     }
     return lista;
 }
Ejemplo n.º 7
0
 /// <summary>
 /// Sprawdza które pliki należy ściągnąć z serwera
 /// </summary>
 /// <param name="serwer">Pliki na serwerze</param>
 /// <param name="plik">Pliki zapisane w pliku konfiguracyjnym</param>
 /// <param name="katalog">Pliki w katalogu</param>
 /// <returns>Lista plików do ściągnięcia</returns>
 private List<plikInfo> sprawdzRoznicaDownload(List<plikInfo> serwer, pliki plik, pliki katalog)
 {
     List<plikInfo> lista = new List<plikInfo>();
     foreach (plikInfo pSerwer in serwer)
     {
         pojedynczyPlik pPlik = plik.plik.Find(delegate(pojedynczyPlik p) { return p.nazwa == pSerwer.nazwa; });
         pojedynczyPlik pKatalog = katalog.plik.Find(delegate(pojedynczyPlik p) { return p.nazwa == pSerwer.nazwa; });
         if (pPlik != null || pKatalog != null)
             continue;
         lista.Add(pSerwer);
     }
     return lista;
 }
Ejemplo n.º 8
0
 /// <summary>
 /// Sprawdza jakie są różnice pomiędzy plikami na serwerze i w katalogu
 /// </summary>
 /// <param name="plik">Lista plikow w pliku konfiguracyjnym</param>
 /// <param name="katalog">Lista plików w katalogu</param>
 /// <param name="serwer">Lista plików na serwerze</param>
 /// <returns>Lista plików do aktualizacji</returns>
 private List<plikInfo> sprawdzAktualizacje(List<plikInfo> serwer, pliki plik, pliki katalog)
 {
     List<plikInfo> tmp = new List<plikInfo>();
     foreach (pojedynczyPlik pPlik in plik.plik)
     {
         pojedynczyPlik pKatalog = katalog.plik.Find(delegate(pojedynczyPlik p) { return p.nazwa == pPlik.nazwa; });
         plikInfo pSerwer = serwer.Find(delegate(plikInfo p) { return p.nazwa == pPlik.nazwa; });
         if (pKatalog == null || pSerwer == null) continue;
         if (pKatalog.hash == pSerwer.hash && pKatalog.hash == pPlik.hash && pSerwer.hash == pPlik.hash) continue;
         if (pSerwer.hash != pPlik.hash && pSerwer.hash != pKatalog.hash && pKatalog.hash == pPlik.hash)
             tmp.Add(pSerwer);
         if (pSerwer.hash != pPlik.hash && pSerwer.hash != pKatalog.hash && pKatalog.hash != pPlik.hash)
             if (pSerwer.data > pKatalog.data)
                 tmp.Add(pSerwer);
     }
     return tmp;
 }
Ejemplo n.º 9
0
 /// <summary>
 /// Pobiera listę plików z pliku konfiguracyjnego
 /// </summary>
 /// <returns>Zmienna przechowująca wszystkie pliki zapisane</returns>
 private pliki plikiZapisane()
 {
     pliki plikiLokalnie = new pliki(new List<pojedynczyPlik>());
     try
     {
         TextReader plikXml = new StreamReader(login + "/pliki.xml");
         XmlSerializer xml = new XmlSerializer(typeof(pliki));
         plikiLokalnie = (pliki)xml.Deserialize(plikXml);
         plikXml.Close();
     }
     catch (Exception)
     {
         string str = "Nie mozna pobrac pliku konfiguracyjnego\r\n";
         switch (kontrolaBledow)
         {
             case 0: wyswietlBlad(str); break;
             case 1: zapiszBlad(str); break;
             case 2: MessageBox.Show(str); break;
         }
     }
     return plikiLokalnie;
 }
Ejemplo n.º 10
0
 /// <summary>
 /// Zprawdza jakie pliki są w katalogu
 /// </summary>
 /// <param name="katalog">Katalog w którym ma sprawdzać</param>
 /// <param name="lista">Lista plików jakie się znajdują w katalogu</param>
 private void plikiKatalog(string katalog, pliki lista)
 {
     if (lista == null) return;
     try
     {
         string tmpKatalog = folder + ((folder[folder.Length - 1] == '/') ? "" : "/") + katalog;
         DirectoryInfo di = new DirectoryInfo(tmpKatalog);
         FileInfo[] files = di.GetFiles();
         foreach (FileInfo fi in files)
             lista.plik.Add(new pojedynczyPlik((long)(fi.LastWriteTime - new DateTime(1970, 1, 1, 0, 0, 0)).TotalSeconds, katalog + (katalog == "" ? "" : "/") + fi.Name, hashPliku(tmpKatalog + "/" + fi.Name)));
         foreach (DirectoryInfo diTmp in di.GetDirectories())
             plikiKatalog(katalog + (katalog==""?"":"/") + diTmp.Name, lista);
     }
     catch (Exception ex)
     {
         string str = "Nie mozna pobrac listy plikow z katalogu " + katalog + "\r\n" + ex.ToString();
         switch (kontrolaBledow)
         {
             case 0: wyswietlBlad(str); break;
             case 1: zapiszBlad(str); break;
             case 2: MessageBox.Show(str); break;
         }
     }
 }
Ejemplo n.º 11
0
 /// <summary>
 /// Zapisuje do pliku konfiguracyjnego wszystkie pliki znajdujące się w katalogu
 /// </summary>
 public void zapiszInfoPlikow()
 {
     pliki p = new pliki();
     plikiKatalog("", p);
     TextWriter sw = new StreamWriter(login + "/pliki.xml", false);
     XmlSerializer xml = new XmlSerializer(typeof(pliki));
     xml.Serialize(sw, p, names);
     sw.Close();
 }
Ejemplo n.º 12
0
 private void zapiszInfoPlikow()
 {
     DirectoryInfo di = new DirectoryInfo(folder);
     FileInfo[] files = di.GetFiles();
     List<pojedynczyPlik> pp = new List<pojedynczyPlik>();
     foreach (FileInfo fi in files)
     {
         FileStream fs = new FileStream(folder + "//" + fi.Name, FileMode.Open);
         MD5 md5 = new MD5CryptoServiceProvider();
         byte[] hash = md5.ComputeHash(fs);
         fs.Close();
         pp.Add(new pojedynczyPlik(fi.Name, ""));//Encoding.ASCII.GetString(hash)));
     }
     TextWriter sw = new StreamWriter("pliki.xml", false);
     pliki p = new pliki(pp);
     XmlSerializer xml = new XmlSerializer(typeof(pliki));
     xml.Serialize(sw, p, names);
     sw.Close();
 }
Ejemplo n.º 13
0
 private List<pojedynczyPlik> sprawdzRoznice(pliki plikiDoPorownywania, pliki plikiPorownywane)
 {
     List<pojedynczyPlik> ret = new List<pojedynczyPlik>();
     foreach (pojedynczyPlik p in plikiDoPorownywania.plik)
     {
         bool jest = false;
         foreach (pojedynczyPlik p2 in plikiPorownywane.plik)
         {
             int comp = p.nazwa.CompareTo(p2.nazwa);
             if (comp == 0)
             {
                 jest = true;
                 break;
             }
             if (comp < 0) break;
         }
         if (!jest)
             ret.Add(p);
     }
     return ret;
 }
Ejemplo n.º 14
0
 /*private void usunPlikiSerwer(List<pojedynczyPlik> plikiDoUsuniecia)
 {
     foreach (pojedynczyPlik p in plikiDoWyslania)
     {
         FileInfo fi = new FileInfo(folder + "//" + p.nazwa);
         k.uploadFile(p.nazwa, fi.LastWriteTime, (int)fi.Length);
     }
 }*/
 private pliki plikiZapisane()
 {
     pliki plikiLokalnie = new pliki(new List<pojedynczyPlik>());
     try
     {
         TextReader plikXml = new StreamReader("pliki.xml");
         XmlSerializer xml = new XmlSerializer(typeof(pliki));
         plikiLokalnie = (pliki)xml.Deserialize(plikXml);
         plikXml.Close();
     }
     catch (Exception ex)
     {
         MessageBox.Show("Nie mozna bylo odczytac pliku konfiguracyjnego: " + ex.ToString());
     }
     return plikiLokalnie;
 }
Ejemplo n.º 15
0
        /// <summary>
        /// Obsluga przycisku zapisującego ustawienia. Ustawienia są zapisywane do pliku.
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void btnZapisz_Click(object sender, EventArgs e)
        {
            if (sekundy < 10)
            {
                MessageBox.Show("Liczba sekund nie moze byc mniejsza niz 10");
                return;
            }
            sekundy = Int32.Parse(txtSekundy.Text);
            if (!Directory.Exists(txtSciezka.Text))
                Directory.CreateDirectory(txtSciezka.Text);
            int tmp;
            if (chbProxy.Checked && (txtSerwer.Text == "" || txtPort.Text == "" || !Int32.TryParse(txtPort.Text, out tmp)))
            {
                MessageBox.Show("Ustaw poprawnie proxy");
                return;
            }
            if (chbProxy.Checked && chbUwierzytelnienie.Checked && (txtLogin.Text == "" || txtHaslo.Text == ""))
            {
                MessageBox.Show("Ustaw poprawnie proxy");
                return;
            }

            if (chbProxy.Checked)
            {
                WebProxy wp = new WebProxy(txtSerwer.Text + ":" + txtPort.Text, chbUwierzytelnienie.Checked);
                if (chbUwierzytelnienie.Checked)
                    wp.Credentials = new NetworkCredential(txtLogin.Text, txtHaslo.Text);
                WebRequest.DefaultWebProxy = wp;
            }
            else
            {
                WebRequest.DefaultWebProxy = null;
            }
            try
            {
                XmlSerializer xml = new XmlSerializer(typeof(ustawienia_uzytkownika));
                ustawienia_uzytkownika gu = new ustawienia_uzytkownika(chbProxy.Checked ? 1 : 0, txtSerwer.Text, txtPort.Text==""?-1:Int32.Parse(txtPort.Text), chbUwierzytelnienie.Checked ? 1 : 0, txtLogin.Text, txtHaslo.Text, txtSciezka.Text, sekundy, radioLog.Checked ? 1 : radioPopup.Checked ? 2 : radioTray.Checked ? 0 : -1);
                TextWriter tw = new StreamWriter(KomClass.Login + "/ustawienia.ini");
                xml.Serialize(tw, gu, names);
                tw.Close();
            }
            catch (Exception ex)
            {
                MessageBox.Show("Nie mozna bylo zapisac ustawien"+ex.ToString());
            }
            z.zmianaKontroli(radioLog.Checked ? 1 : radioPopup.Checked ? 2 : radioTray.Checked ? 0 : -1);
            Thread zmianaF = new Thread(new ParameterizedThreadStart(zmianaFolderu));
            bledyKontrola = radioLog.Checked ? 1 : radioPopup.Checked ? 2 : radioTray.Checked ? 0 : -1;
            if (fol != txtSciezka.Text)
            {
                pliki p = new pliki();
                TextWriter sw = new StreamWriter(KomClass.Login + "/pliki.xml", false);
                XmlSerializer xml = new XmlSerializer(typeof(pliki));
                xml.Serialize(sw, p, names);
                sw.Close();
            }
            fol = txtSciezka.Text;
            zmianaF.Start(txtSciezka.Text);
        }