This file is indexed.

/usr/include/libktorrent/tracker/tracker.h is in libktorrent-dev 1.3.1-5.

This file is owned by root:root, with mode 0o644.

The actual contents of the file can be viewed below.

  1
  2
  3
  4
  5
  6
  7
  8
  9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 38
 39
 40
 41
 42
 43
 44
 45
 46
 47
 48
 49
 50
 51
 52
 53
 54
 55
 56
 57
 58
 59
 60
 61
 62
 63
 64
 65
 66
 67
 68
 69
 70
 71
 72
 73
 74
 75
 76
 77
 78
 79
 80
 81
 82
 83
 84
 85
 86
 87
 88
 89
 90
 91
 92
 93
 94
 95
 96
 97
 98
 99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
/***************************************************************************
 *   Copyright (C) 2005 by Joris Guisson                                   *
 *   joris.guisson@gmail.com                                               *
 *                                                                         *
 *   This program is free software; you can redistribute it and/or modify  *
 *   it under the terms of the GNU General Public License as published by  *
 *   the Free Software Foundation; either version 2 of the License, or     *
 *   (at your option) any later version.                                   *
 *                                                                         *
 *   This program is distributed in the hope that it will be useful,       *
 *   but WITHOUT ANY WARRANTY; without even the implied warranty of        *
 *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the         *
 *   GNU General Public License for more details.                          *
 *                                                                         *
 *   You should have received a copy of the GNU General Public License     *
 *   along with this program; if not, write to the                         *
 *   Free Software Foundation, Inc.,                                       *
 *   51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.             *
 ***************************************************************************/
#ifndef BTTRACKER_H
#define BTTRACKER_H

#include <kurl.h>
#include <util/sha1hash.h>
#include <interfaces/peersource.h>
#include <interfaces/trackerinterface.h>
#include <peer/peerid.h>
#include <ktorrent_export.h>
#include <QTimer>

class KUrl;

namespace bt
{
	/**
		Interface used by the Tracker to obtain the data it needs to know
		when announcing.
	*/
	class KTORRENT_EXPORT TrackerDataSource
	{
	public:
		virtual ~TrackerDataSource() {}
		
		virtual Uint64 bytesDownloaded() const = 0;
		virtual Uint64 bytesUploaded() const = 0;
		virtual Uint64 bytesLeft() const = 0;
		virtual const SHA1Hash & infoHash() const = 0;
		virtual bool isPartialSeed() const = 0;
	};
	
	/**
	 * Base class for all tracker classes.
	*/
	class KTORRENT_EXPORT Tracker : public PeerSource,public TrackerInterface
	{
		Q_OBJECT
	public:
		Tracker(const KUrl & url,TrackerDataSource* tds,const PeerID & id,int tier);
		virtual ~Tracker();
		
		/**
		 * Set the custom IP
		 * @param str 
		 */
		static void setCustomIP(const QString & str);
		
		/// get the tracker url
		KUrl trackerURL() const {return url;}
		
		/**
		 * Delete the tracker in ms milliseconds, or when the stopDone signal is emitted.
		 * @param ms Number of ms to wait
		 */
		void timedDelete(int ms);
		
		/**
		 * Get the number of failed attempts to reach a tracker.
		 * @return The number of failed attempts
		 */
		virtual Uint32 failureCount() const = 0;
		
		/**
		 * Do a tracker scrape to get more accurate stats about a torrent.
		 * Does nothing if the tracker does not support this.
		 */
		virtual void scrape() = 0;
		
		/// Get the trackers tier
		int getTier() const {return tier;}
		
		/// Get the custom ip to use, null if none is set
		static QString getCustomIP();
		
		/// Handle a failure
		void handleFailure();
	protected:
		/// Reset the tracker stats
		void resetTrackerStats();
		
		/// Calculates the bytes downloaded to send with the request
		Uint64 bytesDownloaded() const;
		
		/// Calculates the bytes uploaded to send with the request
		Uint64 bytesUploaded() const;
	
		/// Emit the failure signal, and set the error
		void failed(const QString & err);
		
	public slots:
		virtual void manualUpdate() = 0;
		
	signals:
		/**
		 * Emitted when an error happens.
		 * @param failure_reason The reason why we couldn't reach the tracker
		 */
		void requestFailed(const QString & failure_reason);
		
		/**
		 * Emitted when a stop is done.
		 */
		void stopDone();
		
		/**
		 * Emitted when a request to the tracker succeeded
		 */
		void requestOK();
		
		/**
		 * A request to the tracker has been started.
		 */
		void requestPending();

		/**
		 * Emitted when a scrape has finished
		 * */
		void scrapeDone();
		
	protected:
		int tier;
		PeerID peer_id;
		TrackerDataSource* tds;
		Uint32 key;
		QTimer reannounce_timer;
		Uint64 bytes_downloaded_at_start;
		Uint64 bytes_uploaded_at_start;
	};
	
}

#endif