diff options
Diffstat (limited to 'opentracker.c')
-rw-r--r-- | opentracker.c | 37 |
1 files changed, 19 insertions, 18 deletions
diff --git a/opentracker.c b/opentracker.c index 4a421cc..c420d6f 100644 --- a/opentracker.c +++ b/opentracker.c | |||
@@ -14,6 +14,9 @@ | |||
14 | #include <stdlib.h> | 14 | #include <stdlib.h> |
15 | #include <errno.h> | 15 | #include <errno.h> |
16 | 16 | ||
17 | #include "trackerlogic.h" | ||
18 | #include "scan_urlencoded_query.h" | ||
19 | |||
17 | static void carp(const char* routine) { | 20 | static void carp(const char* routine) { |
18 | buffer_puts(buffer_2,routine); | 21 | buffer_puts(buffer_2,routine); |
19 | buffer_puts(buffer_2,": "); | 22 | buffer_puts(buffer_2,": "); |
@@ -112,9 +115,7 @@ e400: | |||
112 | } | 115 | } |
113 | else | 116 | else |
114 | { | 117 | { |
115 | char *d; | 118 | char *d, *data; |
116 | int64 fd; | ||
117 | struct stat s; | ||
118 | 119 | ||
119 | // expect 'GET /uri?nnbjhg HTTP/1.*' | 120 | // expect 'GET /uri?nnbjhg HTTP/1.*' |
120 | c+=4; | 121 | c+=4; |
@@ -130,19 +131,18 @@ e400: | |||
130 | switch( scan_urlencoded_query( &c, data, SCAN_PATH ) ) { | 131 | switch( scan_urlencoded_query( &c, data, SCAN_PATH ) ) { |
131 | case 6: /* scrape ? */ | 132 | case 6: /* scrape ? */ |
132 | if (!byte_diff(c,6,"scrape")) | 133 | if (!byte_diff(c,6,"scrape")) |
133 | goto 404; | 134 | goto e404; |
134 | break; | 135 | break; |
135 | case 9: | 136 | case 9: |
136 | if( !byte_diff(c,8,"announce")) | 137 | if( !byte_diff(c,8,"announce")) |
137 | goto 404; | 138 | goto e404; |
138 | else { | 139 | else { |
139 | // info_hash, left, port, numwant, compact | 140 | // info_hash, left, port, numwant, compact |
140 | struct ot_peer peer; | 141 | struct ot_peer peer; |
141 | ot_hash hash; | 142 | byte_copy( peer.ip, 4, h->ip ); |
142 | byte_copy( peer.ip, h->ip, 4); | ||
143 | peer.port = 6881; | 143 | peer.port = 6881; |
144 | 144 | ||
145 | while( NOCHAMSCANNEN ) { | 145 | while( 1 ) { |
146 | data = c; | 146 | data = c; |
147 | switch( scan_urlencoded_query( &c, data, SCAN_SEARCHPATH_PARAM ) ) { | 147 | switch( scan_urlencoded_query( &c, data, SCAN_SEARCHPATH_PARAM ) ) { |
148 | case -1: /* error */ | 148 | case -1: /* error */ |
@@ -150,20 +150,21 @@ e400: | |||
150 | goto e404; | 150 | goto e404; |
151 | case 4: | 151 | case 4: |
152 | if(!byte_diff(c,4,"port")) | 152 | if(!byte_diff(c,4,"port")) |
153 | /* scan int */ | 153 | /* scan int */ c; |
154 | else if(!byte_diff(c,4,"left")) | 154 | else if(!byte_diff(c,4,"left")) |
155 | /* scan int */ | 155 | /* scan int */ c; |
156 | break; | 156 | break; |
157 | case 7: | 157 | case 7: |
158 | if(!byte_diff(c,7,"numwant")) | 158 | if(!byte_diff(c,7,"numwant")) |
159 | /* scan int */ | 159 | /* scan int */ c; |
160 | else if(!byte_diff(c,7,"compact")) | 160 | else if(!byte_diff(c,7,"compact")) |
161 | /* scan flag */ | 161 | /* scan flag */ c; |
162 | break; | 162 | break; |
163 | case 9: /* info_hash */ | 163 | case 9: /* info_hash */ |
164 | if(!byte_diff(c,9,"info_hash")) | 164 | if(!byte_diff(c,9,"info_hash")) c; |
165 | /* scan 20 bytes */ | 165 | /* scan 20 bytes */ |
166 | break; | 166 | break; |
167 | } | ||
167 | } | 168 | } |
168 | } | 169 | } |
169 | break; | 170 | break; |
@@ -176,13 +177,13 @@ e400: | |||
176 | c+=fmt_str(c,"HTTP/1.1 Coming Up\r\nContent-Type: text/plain"); | 177 | c+=fmt_str(c,"HTTP/1.1 Coming Up\r\nContent-Type: text/plain"); |
177 | c+=fmt_str(c,"\r\nContent-Length: "); | 178 | c+=fmt_str(c,"\r\nContent-Length: "); |
178 | /* ANSWER SIZE*/ | 179 | /* ANSWER SIZE*/ |
179 | c+=fmt_ulonglong(c,s.st_size); | 180 | c+=fmt_ulonglong(c, 100 ); |
180 | c+=fmt_str(c,"\r\nLast-Modified: "); | 181 | c+=fmt_str(c,"\r\nLast-Modified: "); |
181 | /* MODIFY DATE */ | 182 | /* MODIFY DATE |
182 | c+=fmt_httpdate(c,s.st_mtime); | 183 | c+=fmt_httpdate(c,s.st_mtime); */ |
183 | c+=fmt_str(c,"\r\nConnection: close\r\n\r\n"); | 184 | c+=fmt_str(c,"\r\nConnection: close\r\n\r\n"); |
184 | iob_addbuf(&h->iob,h->hdrbuf,c - h->hdrbuf); | 185 | iob_addbuf(&h->iob,h->hdrbuf,c - h->hdrbuf); |
185 | iob_addbuf(&h->iob,tracker_answer, tzracker_answer_size); | 186 | iob_addbuf(&h->iob,tracker_answer, tracker_answer_size); |
186 | } | 187 | } |
187 | e404: | 188 | e404: |
188 | io_dontwantread(s); | 189 | io_dontwantread(s); |
@@ -227,7 +228,7 @@ int main() | |||
227 | if (h) | 228 | if (h) |
228 | { | 229 | { |
229 | byte_zero(h,sizeof(struct http_data)); | 230 | byte_zero(h,sizeof(struct http_data)); |
230 | byte_copy(h->ip,ip,sizeof(ip)); | 231 | byte_copy(h->ip,sizeof(ip),ip); |
231 | io_setcookie(n,h); | 232 | io_setcookie(n,h); |
232 | } else | 233 | } else |
233 | io_close(n); | 234 | io_close(n); |