public OpeningPackStatsWindowViewModel(TrackerFactory trackerFactory) : base(trackerFactory)
        {
            cardImageService = trackerFactory.GetService <ICardImageService>();
            winDialogs       = trackerFactory.GetService <IWinDialogs>();
            cardsDatabase    = trackerFactory.GetService <ICardsDatabase>();

            CommandExportToCsv = new RealyAsyncCommand <object>(CommandExportToCsvExecute);
            CommandOpenCsv     = new RealyAsyncCommand <object>(CommandOpenCsvExcute);

            packSetFilter = AllFilter;
        }
예제 #2
0
        public void Setup()
        {
            keys.Clear();
            tracker            = (UdpTracker)TrackerFactory.Create(new Uri("udp://127.0.0.1:6767/announce/"));
            tracker.RetryDelay = TimeSpan.FromMilliseconds(50);

            listener.IgnoreAnnounces = false;
            listener.IgnoreConnects  = false;
            listener.IgnoreErrors    = false;
            listener.IgnoreScrapes   = false;
        }
예제 #3
0
        public void Setup()
        {
            keys.Clear();
            tracker            = (UdpTracker)TrackerFactory.Create(new Uri("udp://127.0.0.1:6767/announce/"));
            tracker.RetryDelay = TimeSpan.FromMilliseconds(50);
            id = new TrackerConnectionID(tracker, false, TorrentEvent.Started, new ManualResetEvent(false));

            listener.IgnoreAnnounces = false;
            listener.IgnoreConnects  = false;
            listener.IgnoreErrors    = false;
            listener.IgnoreScrapes   = false;
        }
        public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
        {
            ITrackerFactory trackerFactory = new TrackerFactory();

            try {
                return(new ScreenshotNameProvider(trackerFactory).GetScreenShotName(ScreenshotNameProvider.ScreenShotType.Pack, value.ToString()));
            }
            catch (Exception ex)
            {
                return("ERROR:" + ex.Message);
            }
        }
예제 #5
0
파일: Core.cs 프로젝트: slicol/meshwork
        public Core(ISettings settings, IPlatform platform)
        {
            if (settings == null)
            {
                throw new ArgumentNullException(nameof(settings));
            }
            if (platform == null)
            {
                throw new ArgumentNullException(nameof(platform));
            }

            Settings = settings;
            Platform = platform;

            KeyManager keyManager = new KeyManager(settings);

            rsaProvider = new RSACryptoServiceProvider();
            rsaProvider.ImportParameters(keyManager.EncryptionParameters);
            nodeID = Common.Utils.SHA512Str(rsaProvider.ToXmlString(false));

            FileSystem = new FileSystemProvider(this);

            ShareBuilder = new ShareBuilder(this);
            ShareBuilder.FinishedIndexing += ShareBuilder_FinishedIndexing;

            shareWatcher = new ShareWatcher(this);

            ShareHasher = new ShareHasher();

            transportManager = new TransportManager(this);

            FileTransferManager = new FileTransferManager(this);

            FileSearchManager = new FileSearchManager(this);

            DestinationManager = new DestinationManager(this);

            // XXX: Use reflection to load these:
            DestinationManager.RegisterSource(new TCPIPv4DestinationSource(this));
            DestinationManager.RegisterSource(new TCPIPv6DestinationSource(this));

            TrackerFactory.Register("meshwork", typeof(MeshworkTracker));

            ITransportListener tcpListener = new TcpTransportListener(this, Settings.TcpListenPort);

            transportListeners.Add(tcpListener);

            if (FinishedLoading != null)
            {
                FinishedLoading(null, EventArgs.Empty);
            }
        }
예제 #6
0
        private void Save_Profile_Click(object sender, RoutedEventArgs e)
        {
            Stream         fStream;
            SaveFileDialog sfd = new SaveFileDialog();

            sfd.AddExtension     = true;
            sfd.DefaultExt       = ".fish";
            sfd.DereferenceLinks = true;
            sfd.OverwritePrompt  = true;
            sfd.Title            = "What do you want the profile to be called?";

            sfd.Filter           = "Eriver Calibration Profile files (*.fish)|*.fish";
            sfd.FilterIndex      = 1;
            sfd.RestoreDirectory = true;

            if (sfd.ShowDialog() == true)
            {
                new Thread(delegate()
                {
                    if ((fStream = sfd.OpenFile()) != null)
                    {
                        try
                        {
                            var tracker = TrackerFactory.GetTracker(TrackerType.Text, 1);
                            Thread.Sleep(2000);
                            var c = tracker.GetCalibration();
                            fStream.Write(c, 0, c.Length);
                        }
                        catch (IOException exception)
                        {
                            MessageBox.Show("Could not save profile.\n" + exception.Message);
                            return;
                        }
                        catch (NotSupportedException)
                        {
                            MessageBox.Show("This tracker does not support this operation.");
                            return;
                        }
                        catch (Exception exception)
                        {
                            MessageBox.Show("A unknown error occured.\n" + exception.Message + "\n" + exception.StackTrace);
                            return;
                        }
                        finally
                        {
                            fStream.Close();
                        }
                        MessageBox.Show("Save of calibration profile completed!");
                    }
                }).Start();
            }
        }
예제 #7
0
        /// <summary>
        /// Handler of connection to the ETServer
        /// Reads data from the stream, and answers accordingly.
        /// Deals with the tracker aswell using the ITracker interface.
        /// </summary>
        /// <param name="name"></param>
        /// <param name="tracker_type"></param>
        /// <param name="clientId"></param>
        /// <param name="stream"></param>
        /// <param name="description"></param>
        public ConnectionHandler(byte name, string tracker_type, string clientId, NetworkStream stream, string description)
        {
            this.name = name;

            logger = LogManager.GetLogger(this.GetType());
            log4net.ThreadContext.Properties["id"] = "Id: " + clientId;

            this.stream  = stream;
            readerWriter = new EriverStreamReaderWriter(stream);
            this.stop    = new ManualResetEvent(false);
            tracker      = TrackerFactory.GetTracker(tracker_type, name);
            Description  = description;
        }
예제 #8
0
        public void TestMethod1()
        {
            var config = new TrackerConfig();

            config.AppVersion = "1";
            config.TrackingId = "2";
            config.Debug      = true;

            var x = new TrackerFactory(config);

            var y = x.GetTracker();

            y.SendView("Main");
        }
예제 #9
0
        public void KeyTest()
        {
            MonoTorrent.Client.Tracker.AnnounceParameters pars = new AnnounceParameters();
            pars.PeerId   = "id";
            pars.InfoHash = new InfoHash(new byte[20]);

            Tracker.Tracker     t  = TrackerFactory.Create(new Uri(prefix + "?key=value"));
            TrackerConnectionID id = new TrackerConnectionID(t, false, TorrentEvent.Started, new ManualResetEvent(false));

            t.AnnounceComplete += delegate { id.WaitHandle.Set(); };
            t.Announce(pars, id);
            Wait(id.WaitHandle);
            Assert.AreEqual("value", keys[0], "#1");
        }
예제 #10
0
        public ConnectionHandler(byte name, string clientId, Stream stream, ManualResetEvent shutdown)
        {
            // TODO: Complete member initialization
            this.name = name;

            logger = LogManager.GetLogger(this.GetType());
            log4net.ThreadContext.Properties["id"] = "Id: " + clientId;

            this.stream   = stream;
            readerWriter  = new EriverStreamReaderWriter(stream);
            this.shutdown = shutdown;
            this.stop     = new ManualResetEvent(false);
            tracker       = TrackerFactory.GetTracker(name);
        }
예제 #11
0
 internal EncodingIdMapper(NumberArrayFactory cacheFactory, Encoder encoder, Factory <Radix> radixFactory, Monitor monitor, TrackerFactory trackerFactory, Groups groups, System.Func <long, CollisionValues> collisionValuesFactory, int chunkSize, int processorsForParallelWork, Comparator comparator)
 {
     this._radixFactory              = radixFactory;
     this._monitor                   = monitor;
     this._cacheFactory              = cacheFactory;
     this._trackerFactory            = trackerFactory;
     this._collisionValuesFactory    = collisionValuesFactory;
     this._comparator                = comparator;
     this._processorsForParallelWork = max(processorsForParallelWork, 1);
     this._dataCache                 = cacheFactory.NewDynamicLongArray(chunkSize, GAP_VALUE);
     this._groupCache                = GroupCache.select(cacheFactory, chunkSize, groups.Size());
     this._groups  = groups;
     this._encoder = encoder;
     this._radix   = radixFactory.NewInstance();
 }
예제 #12
0
        public async Task Announce ()
        {
            await TrackerManager.AddTrackerAsync (TrackerFactory.Create (new Uri ("http://1.1.1.1")));

            var mode = new StartingMode (Manager, DiskManager, ConnectionManager, Settings);
            Manager.Mode = mode;
            await mode.WaitForStartingToComplete ();

            // Technically this is not what we want. However the logic to avoid announcing to quickly
            // is now inside TrackerManager so a mocked TrackerManager will double announce.
            Assert.AreEqual (2, TrackerManager.Announces.Count, "#1");
            Assert.AreEqual (null, TrackerManager.Announces[0].Item1, "#2");
            Assert.AreEqual (null, TrackerManager.Announces[1].Item1, "#2");
            Assert.AreEqual (TorrentEvent.Started, TrackerManager.Announces[0].Item2, "#3");
            Assert.AreEqual (TorrentEvent.None, TrackerManager.Announces[1].Item2, "#3");
        }
예제 #13
0
        public void Setup()
        {
            AutoResetEvent done = new AutoResetEvent(false);

            tracker = TrackerFactory.GetTracker(1);
            while (!done.WaitOne(0))
            {
                tracker.GetState(delegate(int err, int res)
                {
                    if (err == 0)
                    {
                        done.Set();
                    }
                });
            }
        }
예제 #14
0
        public static ITracker RunTracker()
        {
            if (tracker != null)
            {
                return(tracker);
            }

            var config = Catalog.Factory.Resolve <IConfig>();

            tracker = TrackerFactory.CreateTracker(
                config[BitTorrentSettings.TrackerHost],
                Convert.ToInt32(config[BitTorrentSettings.TrackerPort]),
                config[BitTorrentSettings.TrackerTorrentFolder]);

            tracker.Start();
            return(tracker);
        }
예제 #15
0
        internal MainWindowViewModel(TrackerFactory trackerFactory)
        {
            this.trackerFactory = trackerFactory;
            tracker             = trackerFactory.GetTracker();
            messanger           = trackerFactory.GetMessanger();
            messanger.Register <Utils.Messages.EditDeck>(this, EditDeckStart, Utils.Messages.EditDeck.Context.StartEdit);
            messanger.Register <Utils.Messages.EditDeck>(this, EditDeckFinished, Utils.Messages.EditDeck.Context.EditFinished);
            messanger.Register <Utils.Messages.EditGame>(this, EditGameStart, Utils.Messages.EditGame.Context.StartEdit);
            messanger.Register <Utils.Messages.EditGame>(this, EditGameFinished, Utils.Messages.EditGame.Context.EditFinished);
            messanger.Register <Utils.Messages.EditSettings>(this, EditSettingsFinished, Utils.Messages.EditSettings.Context.EditFinished);

            deckService = trackerFactory.GetService <IDeckService>();
            settings    = trackerFactory.GetService <ISettings>();

            this.OverlayWindows.Add(new OverlayToolbar());
            this.OverlayWindows.Add(new DeckOverlay());
            this.OverlayWindows.CollectionChanged += (s, e) => RaisePropertyChangedEvent(nameof(OverlayWindows));
        }
예제 #16
0
        public void CanAnnouceOrScrapeTest()
        {
            Tracker.Tracker t = TrackerFactory.Create(new Uri("http://mytracker.com/myurl"));
            Assert.IsFalse(t.CanScrape, "#1");
            Assert.IsTrue(t.CanAnnounce, "#1b");

            t = TrackerFactory.Create(new Uri("http://mytracker.com/announce/yeah"));
            Assert.IsFalse(t.CanScrape, "#2");
            Assert.IsTrue(t.CanAnnounce, "#2b");

            t = TrackerFactory.Create(new Uri("http://mytracker.com/announce"));
            Assert.IsTrue(t.CanScrape, "#3");
            Assert.IsTrue(t.CanAnnounce, "#4");

            HTTPTracker tracker = (HTTPTracker)TrackerFactory.Create(new Uri("http://mytracker.com/announce/yeah/announce"));

            Assert.IsTrue(tracker.CanScrape, "#4");
            Assert.IsTrue(tracker.CanAnnounce, "#4");
            Assert.AreEqual("http://mytracker.com/announce/yeah/scrape", tracker.ScrapeUri.ToString(), "#5");
        }
예제 #17
0
        /// <summary>
        /// Get tracked entities
        /// </summary>
        /// <typeparam name="T"></typeparam>
        /// <returns></returns>
        public static IEnumerable <Type> GetTrackedEntities <T>(this T context) where T : DbContext
        {
            var result = new List <Type>();
            var dbSets = context.GetType().GetProperties();

            foreach (var dbSet in dbSets)
            {
                var genericType = dbSet.PropertyType.GenericTypeArguments.FirstOrDefault();
                if (genericType == null)
                {
                    continue;
                }
                var match = TrackerFactory.IsTrackable(genericType).Item1;
                if (match)
                {
                    result.Add(genericType);
                }
            }

            return(result);
        }
        public static async Task <bool> IsTrackerHealthyAsync(string trackerUri)
        {
            var tracker = TrackerFactory.Create(new Uri(trackerUri));

            try
            {
                switch (tracker)
                {
                case HTTPTracker httpTracker:
                    await httpTracker.AnnounceAsync(new AnnounceParameters(0, 0, 0, TorrentEvent.None, new MonoTorrent.InfoHash(StringToByteArray("4b3dbca85d0f67742bdf4bcece6641799f29efbe")), false, "", "", 0));

                    break;
                }

                return(true);
            }
            catch
            {
                return(false);
            }
        }
예제 #19
0
        public void AnnounceTest()
        {
            HTTPTracker         t  = (HTTPTracker)TrackerFactory.Create(new Uri(prefix));
            TrackerConnectionID id = new TrackerConnectionID(t, false, TorrentEvent.Started, new ManualResetEvent(false));

            AnnounceResponseEventArgs p = null;

            t.AnnounceComplete += delegate(object o, AnnounceResponseEventArgs e) {
                p = e;
                id.WaitHandle.Set();
            };
            MonoTorrent.Client.Tracker.AnnounceParameters pars = new AnnounceParameters();
            pars.PeerId   = "id";
            pars.InfoHash = new InfoHash(new byte[20]);

            t.Announce(pars, id);
            Wait(id.WaitHandle);
            Assert.IsNotNull(p, "#1");
            Assert.IsTrue(p.Successful);
            Assert.AreEqual(keys[0].ToLowerInvariant(), t.Key.ToLowerInvariant(), "#2");
        }
예제 #20
0
        private void Load_Profile_Click(object sender, RoutedEventArgs e)
        {
            Stream         fStream;
            OpenFileDialog ofd = new OpenFileDialog();

            ofd.AddExtension     = true;
            ofd.DefaultExt       = ".fish";
            ofd.DereferenceLinks = true;
            ofd.Title            = "What profile do you want?";

            ofd.Filter           = "Eriver Calibration Profile files (*.fish)|*.fish";
            ofd.FilterIndex      = 1;
            ofd.RestoreDirectory = true;

            if (ofd.ShowDialog() == true)
            {
                if ((fStream = ofd.OpenFile()) != null)
                {
                    try
                    {
                        var data = new byte[4096];
                        fStream.Read(data, 0, data.Length);
                        fStream.Close();
                        TrackerFactory.GetTracker(TrackerType.Text, 1).SetCalibration(data);
                    }
                    catch (IOException exception)
                    {
                        MessageBox.Show("Could not load profile.\n" + exception.Message);
                    }
                    catch (NotSupportedException)
                    {
                        MessageBox.Show("This tracker does not support this operation.");
                    }
                    catch (Exception exception)
                    {
                        MessageBox.Show("A unknown error occured.\n" + exception.Message);
                    }
                }
            }
        }
예제 #21
0
        public void Setup()
        {
            keys   = new List <BEncodedString>();
            server = new MonoTorrent.Tracker.TrackerServer();
            server.AllowUnregisteredTorrents = true;
            server.RegisterListener(listener);

            peerEndpoints = new List <IPEndPoint> {
                new IPEndPoint(IPAddress.Parse("123.123.123.123"), 12312),
                new IPEndPoint(IPAddress.Parse("254.254.254.254"), 3522),
                new IPEndPoint(IPAddress.Parse("1.1.1.1"), 123),
                new IPEndPoint(IPAddress.Parse("1.2.3.4"), 65000),
            };

            tracker        = (UdpTracker)TrackerFactory.Create(new Uri($"udp://127.0.0.1:{listener.EndPoint.Port}/announce/"));
            announceparams = announceparams.WithPort(listener.EndPoint.Port);

            listener.IgnoreAnnounces = false;
            listener.IgnoreConnects  = false;
            listener.IgnoreErrors    = false;
            listener.IgnoreScrapes   = false;
        }
예제 #22
0
        void OfflineAnnounceTest()
        {
            UdpTracker t = (UdpTracker)TrackerFactory.Create(new Uri("udp://127.0.0.1:57532/announce"));

            t.RetryDelay = TimeSpan.FromMilliseconds(500);
            TrackerConnectionID id = new TrackerConnectionID(t, false, TorrentEvent.Started, new ManualResetEvent(false));

            AnnounceResponseEventArgs p = null;

            t.AnnounceComplete += delegate(object o, AnnounceResponseEventArgs e) {
                p = e;
                id.WaitHandle.Set();
            };
            System.Net.BitTorrent.Client.Tracker.AnnounceParameters pars = new AnnounceParameters();
            pars.InfoHash = new InfoHash(new byte[20]);
            pars.PeerId   = "";

            t.Announce(pars, id);
            Wait(id.WaitHandle);
            Assert.IsNotNull(p, "#1");
            Assert.IsFalse(p.Successful);
        }
예제 #23
0
        public void AnnounceTest()
        {
            UdpTracker          t  = (UdpTracker)TrackerFactory.Create(new Uri(prefix));
            TrackerConnectionID id = new TrackerConnectionID(t, false, TorrentEvent.Started, new ManualResetEvent(false));

            AnnounceResponseEventArgs p = null;

            t.AnnounceComplete += delegate(object o, AnnounceResponseEventArgs e)
            {
                p = e;
                id.WaitHandle.Set();
            };
            System.Net.BitTorrent.Client.Tracker.AnnounceParameters pars = new AnnounceParameters();
            pars.InfoHash = new InfoHash(new byte[20]);
            pars.PeerId   = "";

            t.Announce(pars, id);
            Wait(id.WaitHandle);
            Assert.NotNull(p);
            Assert.True(p.Successful);
            //Assert.Equal(keys[0], t.Key, "#2");
        }
        protected override void Initialize(SonarAnalysisContext context)
        {
            context.RegisterCompilationStartAction(
                ccc =>
            {
                ccc.RegisterSyntaxNodeActionInNonGenerated(
                    c =>
                {
                    var objectCreation = (ObjectCreationExpressionSyntax)c.Node;

                    var trackers = TrackerFactory.Create(c.Compilation, VersionProvider);
                    if (trackers.xmlDocumentTracker.ShouldBeReported(objectCreation, c.SemanticModel) ||
                        trackers.xmlTextReaderTracker.ShouldBeReported(objectCreation, c.SemanticModel))
                    {
                        c.ReportDiagnosticWhenActive(Diagnostic.Create(rule, objectCreation.GetLocation()));
                    }

                    VerifyXPathDocumentConstructor(c);
                },
                    SyntaxKind.ObjectCreationExpression);

                ccc.RegisterSyntaxNodeActionInNonGenerated(
                    c =>
                {
                    var assignment = (AssignmentExpressionSyntax)c.Node;

                    var trackers = TrackerFactory.Create(c.Compilation, VersionProvider);
                    if (trackers.xmlDocumentTracker.ShouldBeReported(assignment, c.SemanticModel) ||
                        trackers.xmlTextReaderTracker.ShouldBeReported(assignment, c.SemanticModel))
                    {
                        c.ReportDiagnosticWhenActive(Diagnostic.Create(rule, assignment.GetLocation()));
                    }
                },
                    SyntaxKind.SimpleAssignmentExpression);

                ccc.RegisterSyntaxNodeActionInNonGenerated(VerifyXmlReaderInvocations, SyntaxKind.InvocationExpression);
            });
        }
예제 #25
0
        public void AnnounceTest()
        {
            var t  = (HTTPTracker)TrackerFactory.Create(new Uri(Prefix));
            var id = new TrackerConnectionID(t, false, TorrentEvent.Started, new ManualResetEvent(false));

            AnnounceResponseEventArgs p = null;

            t.AnnounceComplete += (o, e) =>
            {
                p = e;
                id.WaitHandle.Set();
            };
            var pars = new AnnounceParameters
            {
                PeerId   = "id",
                InfoHash = new InfoHash(new byte[20])
            };

            t.Announce(pars, id);
            Wait(id.WaitHandle);
            Assert.IsNotNull(p, "#1");
            Assert.IsTrue(p.Successful);
            Assert.AreEqual(_keys[0], t.Key, "#2");
        }
예제 #26
0
        public void ScrapeTest()
        {
            Tracker.Tracker t = TrackerFactory.Create(new Uri(prefix.Substring(0, prefix.Length - 1)));
            Assert.IsTrue(t.CanScrape, "#1");
            TrackerConnectionID id = new TrackerConnectionID(t, false, TorrentEvent.Started, new ManualResetEvent(false));

            AnnounceResponseEventArgs p = null;

            t.AnnounceComplete += delegate(object o, AnnounceResponseEventArgs e) {
                p = e;
                id.WaitHandle.Set();
            };
            MonoTorrent.Client.Tracker.AnnounceParameters pars = new AnnounceParameters();
            pars.PeerId   = "id";
            pars.InfoHash = new InfoHash(new byte[20]);

            t.Announce(pars, id);
            Wait(id.WaitHandle);
            Assert.IsNotNull(p, "#2");
            Assert.IsTrue(p.Successful, "#3");
            Assert.AreEqual(1, t.Complete, "#1");
            Assert.AreEqual(0, t.Incomplete, "#2");
            Assert.AreEqual(0, t.Downloaded, "#3");
        }
예제 #27
0
        public void ScrapeTest()
        {
            UdpTracker t = (UdpTracker)TrackerFactory.Create(new Uri(prefix));

            Assert.IsTrue(t.CanScrape, "#1");
            TrackerConnectionID id = new TrackerConnectionID(t, false, TorrentEvent.Started, new ManualResetEvent(false));

            ScrapeResponseEventArgs p = null;

            t.ScrapeComplete += delegate(object o, ScrapeResponseEventArgs e)
            {
                p = e;
                id.WaitHandle.Set();
            };
            System.Net.BitTorrent.Client.Tracker.ScrapeParameters pars = new ScrapeParameters(new InfoHash(new byte[20]));

            t.Scrape(pars, id);
            Wait(id.WaitHandle);
            Assert.IsNotNull(p, "#2");
            Assert.IsTrue(p.Successful, "#3");
            Assert.AreEqual(0, t.Complete, "#1");
            Assert.AreEqual(0, t.Incomplete, "#2");
            Assert.AreEqual(0, t.Downloaded, "#3");
        }
예제 #28
0
        public void AnnounceTest()
        {
            var udpTracker = (UdpTracker)TrackerFactory.Create(new Uri(Prefix));
            var id         = new TrackerConnectionID(udpTracker, false, TorrentEvent.Started, new ManualResetEvent(false));

            AnnounceResponseEventArgs p = null;

            udpTracker.AnnounceComplete += delegate(object o, AnnounceResponseEventArgs e)
            {
                p = e;
                id.WaitHandle.Set();
            };
            var pars = new AnnounceParameters
            {
                InfoHash = new InfoHash(new byte[20]),
                PeerId   = ""
            };

            udpTracker.Announce(pars, id);
            Wait(id.WaitHandle);
            Assert.IsNotNull(p, "#1");
            Assert.IsTrue(p.Successful);
            //Assert.AreEqual(keys[0], t.Key, "#2");
        }
 public AddSingleRewardViewModel(TrackerFactory trackerFactory)
 {
     this.trackerFactory = trackerFactory;
 }
예제 #30
0
 static TestRig()
 {
     TrackerFactory.Register("custom", typeof(CustomTracker));
 }