This file is indexed.

/usr/share/doc/apt-watch-backend/protocol.txt is in apt-watch-backend 0.4.0-1ubuntu2.

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
This file documents Version 1 of the apt-watch protocol.

Communication between the applet and the slave process consists of a
single byte message ID followed by data.  Message IDs are:

FIRST PACKET: [i]
  This is a string representation of the protocol version.  This must be
  sent by both the applet and the slave before any other packet; once it
  is set, normal communication proceeds.  If the protocol version of the
  slave is incompatible with the protocol version of the client, the one
  with a HIGHER version number should abort the communication (this is on
  the assumption that the higher version number has more information about
  compatibility issues)

  Note that the FATALERROR message is guaranteed to be valid in any protocol
  version and should be used to abort the connection.

Applet -> slave:
0	[]	Perform an update of the package lists.
1	[]	Reload the package lists.
2       [bs]	Attempt to become root and execute a command.  This is followed
	        by a single byte, 0 or 1, indicating whether the command is to
		be run in an xterm, and then a single string containing the
		command to be executed (with no arguments)
3	[s]	Send a reply to an authentication prompt.
4	[]	Cancel an authentication prompt.
5	[b]	Download all available updates.  If the argument is TRUE,
		all updates will be downloaded; otherwise, only security
		updates will be downloaded.

6       []      Cancel an update (0) or download (5) that is in progress.

		This command will be silently ignored if it is received
		while an update or download is not in progress, and no
		other command is valid while an update or download is in
		progress. (sending any other command will result in
		a fatal termination of the slave)

		In other words: between the time you write() command 0
		or 5 to the pipe, and the time that you receive a
		completion reply, the only valid command to send to
		the pipe is a 6.

(close pipe)	Terminate.

Slave -> applet, during authentication:
64	[s]	 Prompt for a string without echo
65	[s]	 Prompt for a string with echo
66	[s]	 Display an error message
67	[s]	 Display some other text

128	[s]	 Authentication failure.
129	[]	 Authentication succeeded.

Slave -> applet, non-authentication
68      [sfb]	 Sent when OpProgress::Update() would be called.
		      The "packet" sent is:
			  string Op;
			  float Percent;
			  bool MajorUpdate;
69      []	 Sent when OpProgress::Done would be called.

130	[]	 Slave initialized successfully; no upgrades available.
131	[]	 Slave initialized successfully; upgrades available.
132	[]	 Slave initialized successfully; security upgrades available.
133	[s]	 Slave failed to initialize; errors follow with code 137.

134	[]	 Update complete: no upgrades available.
135	[]	 Update complete, upgrades available.
136	[]	 Update complete, security upgrades available.

137	[s]	 Fatal error.

138     []	 Request to trigger a reload.  The applet should send message 1
		 at its convenience.

139	[]	 Finished downloading upgrades.

In the table above, the second column lists any additional data sent
with the message.  "s" indicates a string (sent by first sending a
string::size_type value giving the length of the string, then sending
the string itself), "f" indicates a floating-point number, "b"
indicates a boolean value, and "i" indicates an integer value.

If the slave closes the pipe without sending any data, it is assumed
to have terminated in a catastrophic way.