예제 #1
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");
        }
예제 #2
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");
        }
        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);
            }
        }
예제 #4
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);
        }
예제 #5
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;
        }
예제 #6
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);
            });
        }
예제 #8
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");
        }
예제 #9
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");
        }
예제 #10
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");
        }
예제 #11
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");
        }
예제 #12
0
 public ReusableTask AddTrackerAsync(Uri trackerUri)
 {
     return(AddTrackerAsync(TrackerFactory.Create(trackerUri)));
 }
예제 #13
0
 public ManualTrackerManager(Uri tracker)
     : this()
 {
     Tiers.Add(new TrackerTier(TrackerFactory.Create(tracker)));
 }