Passkey System v1.2 - TorrentTrader Forums
/*
* Cascading Style Sheet(CSS 467), for Invision Power Board 2.2.0
* Author: James A. Mathias, admin@leihu.com, http://www.1lotus.com
* Copyright: 2005 Invision Power Services, all rights reserved
*
* All style attributes in alpha-numeric order starting from 0
*
*/
/*
* ========================================
* global element styles
* ========================================
*/
html{
overflow-x: auto; /* fixes MSIE scrollbar bug DO NOT REMOVE, has no effect in Mozilla, or Opera */
}
body{
background: #FFF;
color: #222;
font-family: Verdana, Tahoma, Arial, "Trebuchet MS", Sans-Serif, Georgia, Courier, "Times New Roman", Serif;
font-size: 11px;
line-height: 135%;
margin: 0px;
padding: 0px; /* required for Opera to have 0 margin */
text-align: center; /* centers board in MSIE */
}
/*
* ========================================
* Set up IPB table
* ========================================
*/
.ipbtable { width:100% }
table.ipbtable,
tr.ipbtable,
td.ipbtable
{ /* required for text in tables, because tables do not inherit from body */
background: transparent;
color: #222;
font-size: 11px;
line-height: 135%;
}
.ipbtable td,
.divpad{ /* gives all tables faux cellpadding of 5px */
padding: 5px;
}
td.nopad{ /* allows some tables to have no padding on the td */
padding: 0;
}
/* Safari... */
th
{
text-align: left;
}
form{
display: inline;
margin: 0; /* removes mystery form tag gapping */
padding: 0; /* removes mystery form tag gapping */
}
img{
border: 0; /* makes sure linked images do not have a border */
vertical-align: middle;
}
/*
* ========================================
* global hyperlink styles
* ========================================
*/
a:link,
a:visited,
a:active{
background: transparent;
color: #222;
text-decoration: underline;
}
a:hover{
background: transparent;
color: #34498B;
}
/*
* ========================================
* Main wrapper, this controls the overall width of the board in you browser view window.
* ========================================
*/
#ipbwrapper{
margin: 20px auto 20px auto; /* centers the box, no matter the overall width, also applies a 20px gap at the top and bottom of the board */
text-align: left; /* re_aligns text to left second part of two part MSIE centering workaround */
/* EDIT THIS TO CHANGE THE WIDTH OF THE BOARD -> 960px is a common fixed resolution size */
width: 98%;
}
/*
* ========================================
* styles for pagination links
* ========================================
*/
.pagelink,
.pagelinklast,
.pagecurrent,
.minipagelink,
.minipagelinklast{
background: #F0F5FA;
border: 1px solid #072A66;
padding: 1px 3px 1px 3px;
}
.pagelinklast,
.minipagelinklast{
background: #DFE6EF;
}
.pagecurrent{
background: #FFC9A5;
}
.minipagelink,
.minipagelinklast{
border: 1px solid #C2CFDF;
font-size: 10px;
margin: 0 1px 0 0;
}
.pagelink a:active,
.pagelink a:visited,
.pagelink a:link,
.pagelinklast a:active,
.pagelinklast a:visited,
.pagelinklast a:link,
.pagecurrent a:active,
.pagecurrent a:visited,
.pagecurrent a:link,
.minipagelink a:active,
.minipagelink a:visited,
.minipagelink a:link,
.minipagelinklast a:active,
.minipagelinklast a:visited,
.minipagelinklast a:link{
text-decoration: none;
}
/* fake button effect for some links */
.fauxbutton{
background: #BFCDE0;
border: 1px solid #072A66;
font-size: 11px;
font-weight: bold;
padding: 4px;
}
.fauxbutton a:link,
.fauxbutton a:visited,
.fauxbutton a:active{
color: #222 !important;
text-decoration: none;
}
.forumdesc,
.forumdesc a:link,
.forumdesc a:visited,
.forumdesc a:active{
background: transparent;
font-size: 10px;
color: #666;
line-height: 135%;
margin: 2px 0 0 0;
padding: 0;
}
/* =================================================================================== */
/* =================================================================================== */
/* =================================================================================== */
.searchlite {
background-color:yellow;
font-weight:bold;
color: red;
}
.activeusers{
background: #FFF;
border: 1px solid #072A66;
color: #000;
margin: 0px;
padding: 1px;
}
.activeuserposting a:link,
.activeuserposting a:visited,
.activeuserposting a:active,
.activeuserposting
{
font-style:italic;
text-decoration: none;
border-bottom:1px dotted black;
}
fieldset.search{
line-height: 150%;
padding: 6px;
}
label{
cursor: pointer;
}
img.attach{
background: #808080 url(style_images/1/click2enlarge.gif) no-repeat top right;
border: 1px solid #808080;
margin: 0 2px 0 0;
padding: 11px 2px 2px 2px;
}
.thumbwrap,
.thumbwrapp,
.fullimagewrap
{
border: 1px solid #072A66;
margin: 2px;
}
.thumbwrapp{
border: 2px solid #660707;
}
.fullimagewrap{
background: #F5F9FD;
text-align: center;
margin: 5px 0 5px 0;
padding: 5px;
}
.thumbwrap h4,
.thumbwrapp h4{
background: #DDE6F2;
border: 0 !important;
border-bottom: 1px solid #5176B5 !important;
color: #5176B5;
font-size: 12px;
font-weight: bold;
margin: 0;
padding: 5px;
}
.thumbwrap p,
.thumbwrapp p{
background: #EEF2F7 !important;
border: 0 !important;
border-top: 1px solid #5176B5 !important;
margin: 0 !important;
padding: 5px !important;
text-align: left;
}
.thumbwrap p.alt,
.thumbwrapp p.alt{
background: #DFE6EF !important;
margin: 0 !important;
padding: 5px !important;
text-align: left;
}
.thumbwrapp p.pin{
background: #EFDFDF !important;
text-align: center !important;
}
.thumbwrap img.galattach,
.thumbwrapp img.galattach{
background: #FFF url(style_images/1/img_larger.gif) no-repeat bottom right;
border: 1px solid #072A66;
margin: 5px;
padding: 2px 2px 10px 2px;
}
li.helprow{
margin: 0 0 10px 0;
padding: 0;
}
ul#help{
padding: 0 0 0 15px;
}
.warngood,
.warnbad{
color: #0B9500;
font-weight: bold;
}
.warnbad{
color: #DD0000;
}
#padandcenter{
margin: 0 auto 0 auto;
padding: 14px 0 14px 0;
text-align: center;
}
#profilename{
font-size: 28px;
font-weight: bold;
}
#photowrap{
padding: 6px;
}
#phototitle{
border-bottom: 1px solid #000;
font-size: 24px;
}
#photoimg{
margin: 15px 0 0 0;
text-align: center;
}
#ucpmenu,
#ucpcontent{
background: #F5F9FD;
border: 1px solid #345487;
line-height: 150%;
}
#ucpmenu p{
margin: 0;
padding: 2px 5px 6px 9px;
}
#ucpmenu a:link,
#ucpmenu a:active,
#ucpmenu a:visited{
text-decoration: none;
}
#ucpcontent{
width: auto;
}
#ucpcontent p{
margin: 0;
padding: 10px;
}
.activeuserstrip{
background: #BCD0ED;
padding: 6px;
}
/* Topic View elements */
.signature{
background: transparent;
color: #339;
font-size: 10px;
line-height: 150%;
}
.postdetails{
font-size: 10px;
line-height:140%;
}
.postcolor{
font-size: 12px;
line-height: 160%;
}
.normalname{
color: #003;
font-size: 12px;
font-weight: bold;
}
.normalname a:link,
.normalname a:visited,
.normalname a:active{
font-size: 12px;
}
.post1,
.bg1{
background: #F5F9FD;
}
.post2,
.bg3{
background: #EEF2F7;
}
.row2shaded,
.post1shaded { background-color: #DEDBE4 }
.row4shaded,
.post2shaded { background-color: #E3DFE7 }
.row1{
background: #DFE6EF;
}
.row2{
background: #E4EAF2;
}
.rowhighlight{
background-color: #FFF9BA;
}
.darkrow1{
background: #BCD0ED;
color: #3A4F6C;
}
.darkrow3{
background: #D1DCEB;
color: #3A4F6C;
}
/* tableborders gives the white column / row lines effect */
.plainborder,
.tablefill,
.tablepad{
background: #F5F9FD;
border: 1px solid #345487;
}
.tablefill,
.tablepad{
padding: 6px;
}
.tablepad{
border: 0 !important;
}
.wrapmini{
float: left;
line-height: 1.5em;
width: 25%;
}
.pagelinks{
float: left;
line-height: 1.2em;
width: 35%;
}
.desc{
font-size: 11px;
color: #434951;
}
.lastaction
{
font-size: 10px;
color: #434951;
}
.edit{
font-size: 9px;
}
.thin{
border: 1px solid #FFF;
border-left: 0;
border-right: 0;
line-height: 150%;
margin: 2px 0 2px 0;
padding: 6px 0 6px 0;
}
/* =================================================================================== */
/* =================================================================================== */
/* =================================================================================== */
/*
* ========================================
* calendar styles
* ========================================
*/
.calmonths{
background: #F0F5FA;
border: 1px solid #C2CFDF;
font-size: 18px;
font-weight: bold;
margin: 5px 0 5px 0;
padding: 8px;
text-align: center;
}
.weekday{
font-size: 14px;
font-weight: bold;
}
.calmonths a{
text-decoration: none;
}
.calday,
.calweekday{
background: #DFE6EF;
color: #666;
font-size: 11px;
font-weight: bold;
margin: 0;
padding: 4px;
text-align: right;
}
.calweekday{
border-right: 1px solid #AAA;
color: #222;
font-size: 14px;
padding: 6px;
text-align: center;
}
.celltodayshaded,
.celldateshaded,
.cellblank,
.celldate,
.celltoday,
.mcellblank,
.mcelldate,
.mcelltoday{
background: #EEF2F7;
height: 100px;
margin: 0;
padding: 0;
vertical-align: top;
}
.celltodayshaded,
.celldateshaded
{
background: #E3DFE7;
}
.mcellblank,
.mcelldate,
.mcelltoday{
height: auto;
}
.cellblank,
.mcellblank{
background: #C2CFDF;
}
.celltoday,
.celltodayshaded,
.mcelltoday{
border: 2px solid #8B0000;
}
.calranged
{
border: 2px outset #C2CFDF;
background: #C2CFDF;
padding:4px;
}
.calitem
{
border-bottom: 1px dotted #C2CFDF;
padding:4px;
}
/*
* ========================================
* form styles
* ========================================
*/
.input-warn,
.input-green,
.input-checkbox,
input,
textarea,
select{
background: #FFF;
border: 1px solid #4C77B6;
color: #000;
font-family: verdana, helvetica, sans-serif;
font-size: 11px;
margin: 5px;
padding: 2px;
vertical-align: middle;
}
select
{
margin: 0px;
}
.input-checkbox
{
border: none;
}
.input-warn,
.input-warn-content
{
border: 1px solid #C00;
}
.input-ok,
.input-ok-content
{
border: 1px solid #0C0;
}
.input-warn-content
{
padding: 4px;
margin: 4px;
background-color: #FCC;
}
.input-ok-content
{
padding: 4px;
margin: 4px;
background-color: #CFC;
}
.input-text
{
color: #900;
}
input.button{
margin: 0;
width: auto;
cursor: pointer;
}
optgroup option{
font-family: verdana, helvetica, sans-serif;
font-size: 12px;
}
.codebuttons{
font-family: Verdana, Helvetica, Sans-Serif;
font-size: 10px;
vertical-align: middle;
margin:2px;
}
.textarea,
.searchinput,
.button,
.gobutton{
background: #FFF;
border: 1px solid #4C77B6;
color: #000;
font-family: Verdana, Helvetica, Sans-Serif;
font-size: 11px;
padding: 2px;
vertical-align: middle;
}
.button{
background: #DFE6EF;
}
.gobutton{
background: transparent;
border: 0;
color: #072A66;
margin: 0;
vertical-align: middle;
}
.radiobutton,
.checkbox,
.helpbox {
border: 0;
vertical-align: middle;
background: transparent;
}
/*
* class.formtable
*
* used for tabled forms
* technically tables should not be used for form display
* but, in the case of IPB a table is easier to work with
* for the average webmaster, who has little to no CSS knowledge.
*
*/
.formtable{
background: transparent;
}
.formtable td,
.pformleft,
.pformleftw,
.pformright{
background:#F5F9FD;
border: 1px solid #C2CFDF;
border-bottom: 0;
border-left: 0;
font-weight: bold;
margin: 1px 0 0 0;
padding: 6px;
width: 25%;
}
.formtable td.wider,
.pformleftw,
.pformright{
width: 40%;
}
.formtable td.formright,
.pformright{
border-right: 0px;
font-weight: normal;
width: auto;
}
.formtable td.formtitle,
.formsubtitle{
background: #D1DCEB;
border: 1px solid #9FB9D4;
border-bottom: 0;
border-left: 0;
border-right: 0;
font-weight: normal;
}
.formsubtitle{
border: 0;
color: #3A4F6C;
font-weight: bold;
padding: 5px;
}
.formtable td.formstrip{
background: #DDE8F2;
border: 1px solid #9FB9D4;
border-left: 0;
border-right: 0;
font-weight: normal;
}
/*
* ========================================
* new style quote and code wrappers MATT's DESIGN
* ========================================
*/
.quotetop{
background: #E4EAF2 url(style_images/1/css_img_quote.gif) no-repeat right;
border: 1px dotted #000;
border-bottom: 0;
border-left: 4px solid #8394B2;
color: #000;
font-weight: bold;
font-size: 10px;
margin: 2px auto 0 auto;
padding: 3px;
}
.quotemain{
background: #FAFCFE;
border: 1px dotted #000;
border-left: 4px solid #8394B2;
border-top: 0;
color: #465584;
padding: 4px;
margin: 0 auto 0 auto;
}
.codetop,
.sqltop,
.htmltop{
background: #FDDBCC url(style_images/1/css_img_code.gif) no-repeat right;
color: #000;
font-weight: bold;
margin: 0 auto 0 auto;
padding: 3px;
}
.codemain,
.sqlmain,
.htmlmain{
background: #FAFCFE;
border: 1px dotted #000;
color: #465584;
font-family: Courier, "Courier New", Verdana, Arial;
margin: 0 auto 0 auto;
padding: 2px;
}
/*
* ========================================
* old school quote and code styles - backwards compatibility
* ========================================
*/
#QUOTE,
#CODE{
background: #FAFCFE;
border: 1px solid #000;
color: #465584;
font-family: Verdana, Arial;
font-size: 11px;
padding: 2px;
white-space: normal;
}
#CODE{
font-family: Courier, "Courier New", Verdana, Arial;
}
/*
* ========================================
* All New Styles
* ========================================
*/
.cleared{
clear: both;
}
.borderwrap,
.borderwrapm{ /* this will affect the outlining border of all the tables and boxes through-out the skin. */
background: #FFF;
border: 1px solid #072A66;
padding: 0px;
margin: 0px;
}
.borderwrapm{
margin: 5px;
}
.borderwrap h3,
.maintitle,
.maintitlecollapse{
background: url(style_images/1/tile_cat.gif);
border: 1px solid #FFF;
border-bottom: 1px solid #5176B5;
color: #FFF;
font-size: 12px;
font-weight: bold;
margin: 0px;
padding: 8px;
}
.maintitle td {
color: #FFF;
font-size: 12px;
font-weight: bold;
}
.maintitlecollapse{
border: 1px solid #FFF;
}
.maintitle p,
.maintitlecollapse p,
.formsubtitle p{
background: transparent !important;
border: 0 !important;
margin: 0 !important;
padding: 0 !important;
}
.maintitle p.expand,
.maintitle p.goto,
.maintitlecollapse p.expand,
.formsubtitle p.members{
float: right;
width: auto !important;
}
.maintitle a:link,
.maintitle a:visited,
.maintitlecollapse a:link,
.maintitlecollapse a:visited{
background: transparent;
color: #FFF;
text-decoration: none;
}
.maintitle a:hover,
.maintitle a:active,
.maintitlecollapse a:hover,
.maintitlecollapse a:active{
background: transparent;
color: #F1F1F1;
}
table th,
.borderwrap table th,
.subtitle,
.subtitlediv,
.postlinksbar{
background: transparent url(style_images/1/tile_sub.gif);
border-bottom: 1px solid #5176B5;
color: #3A4F6C;
font-size: 10px;
font-weight: bold;
letter-spacing: 1px;
margin: 0;
padding: 5px;
}
.subtitlediv{
border: 1px solid #FFF;
border-bottom: 1px solid #5176B5;
text-align: right;
}
.borderwrap table th a:link,
.subtitle a:link,
.subtitlediv a:link,
.borderwrap table th a:visited,
.subtitle a:visited,
.subtitlediv a:visited,
.borderwrap table th a:active,
.subtitle a:active,
.subtitlediv a:active,
.borderwrap table th a:hover,
.subtitle a:hover,
.subtitlediv a:hover{
background: transparent;
color: #3A4F6C;
text-decoration: none;
}
.borderwrap h4{
background: #DDE6F2;
border: 1px solid #FFF;
border-bottom: 1px solid #5176B5;
border-top: 1px solid #5176B5;
color: #5176B5;
font-size: 12px;
font-weight: bold;
margin: 0;
padding: 5px;
}
.borderwrap p{
background: #F9F9F9;
border: 1px solid #CCC;
margin: 5px;
padding: 10px;
text-align: left;
}
td.formbuttonrow,
.pformstrip,
.borderwrap p.formbuttonrow,
.borderwrap p.formbuttonrow1{
background: #D1DCEB !important;
border: 1px solid #FFF;
border-top: 1px solid #5176B5;
margin: 0px !important;
padding: 5px !important;
text-align: center;
}
td.formbuttonrow{
border-bottom: 0;
border-left: 0;
border-right: 0;
}
.borderwrap p.formbuttonrow1{
background: #F9F9F9 !important;
border: 0;
border-top: 1px solid #CCC;
}
.bar,
.barb,
.barc{
background: #DFE6EF;
border: 1px solid #FFF;
}
.barc{
border-bottom: 0;
}
.bar p,
.barb p,
.barc p{
background: transparent;
border: 0;
color: #222;
font-size: 11px;
margin: 0;
padding: 5px;
text-align: left;
}
.barb p{
text-align: right;
}
.bar p.over,
.bar p.overs,
.barc p.over,
.barc p.overs{
float: right;
}
.barb p.over,
.barb p.overs{
float: left;
}
.bar p.overs,
.barb p.overs,
.barc p.overs{
position: relative;
top: 5px;
}
.catend{
background: #8394B2;
color: #000;
font-size: 1px;
height: 5px;
}
.newslink{
background: #F0F5FA;
border: 1px solid #C2CFDF;
margin: 0;
width: 100%;
}
.newslink td{
color: #222;
font-size: 10px;
padding: 5px 5px 5px 10px;
}
.newslink span{
background: transparent;
color: #072A66;
font-style: italic;
font-weight: normal;
}
.newslink input{
background: #FFF;
border: 1px solid #999;
color: #072A66;
font-size: 10px;
padding: 3px;
vertical-align: middle;
width: auto;
}
.newslink input.button{
background: transparent;
border: 0;
color: #072A66;
vertical-align: middle;
}
.fieldwrap{
background: #F9F9F9;
border: 1px solid #CCC;
border-top: 0;
margin: 5px;
padding: 0;
text-align: left;
}
.fieldwrap h4{
background: #EEE;
border: 1px solid #CCC;
border-left: 0;
border-right: 0;
color: #444;
font-size: 12px;
font-weight: bold;
margin: 0;
padding: 5px;
}
.errorwrap {
background: #F2DDDD;
border: 1px solid #992A2A;
border-top: 0;
margin: 5px;
padding: 0;
}
.errorwrap h4 {
background: #E3C0C0;
border: 1px solid #992A2A;
border-left: 0;
border-right: 0;
color: #992A2A;
font-size: 12px;
font-weight: bold;
margin: 0;
padding: 5px;
}
.errorwrap p {
background: transparent;
border: 0;
color: #992A2A;
margin: 0;
padding: 8px;
}
.ruleswrap{
background: #F2DDDD;
border: 1px solid #992A2A;
color: #992A2A;
margin: 5px 0 5px 0;
padding: 5px;
}
#redirectwrap{
background: #F0F5FA;
border: 1px solid #C2CFDF;
margin: 200px auto 0 auto;
text-align: left;
width: 500px;
}
#redirectwrap h4{
background: #D0DDEA;
border-bottom: 1px solid #C2CFDF;
color: #3A4F6C;
font-size: 14px;
margin: 0;
padding: 5px;
}
#redirectwrap p{
margin: 0;
padding: 5px;
}
#redirectwrap p.redirectfoot{
background: #E3EBF4;
border-top: 1px solid #C2CFDF;
text-align: center;
}
#gfooter{
background: #8394B2;
margin: 5px 0 5px 0;
padding: 0;
width: 100%;
}
#gfooter td{
color: #FFF;
font-size: 10px;
padding: 4px;
}
#gfooter a:link,
#gfooter a:visited{
color: #FFF;
}
#logostrip{
background: #3860BB url(style_images/1/tile_back.gif);
border: 1px solid #FFF;
height: 68px;
margin: 0;
padding: 0;
}
#logographic{
background: transparent url(style_images/1/logo4.gif) no-repeat left;
height: 68px;
margin: 0;
padding: 0;
}
#submenu{
background: transparent url(style_images/1/tile_sub.gif);
border: 1px solid #FFF;
border-top: 0;
color: #3A4F6C;
margin: 0;
height: 29px;
text-align: right;
}
.ipb-top-left-link,
.ipb-top-right-link
{
background: transparent url(style_images/1/tile_sub-lite.gif);
float: right;
font-size: 10px;
font-weight: bold;
letter-spacing: 0.5px;
margin: 0px;
padding: 7px 0 7px 0;
width: auto;
border-left: 1px solid #dce3ee;
}
.ipb-top-left-link
{
float: left;
border-left: 0px;
border-right: 1px solid #dce3ee;
}
.ipb-top-left-link a:link,
.ipb-top-left-link a:visited,
.ipb-top-right-link a:link,
.ipb-top-right-link a:visited
{
background: transparent;
color: #3A4F6C;
padding: 0 6px 0 6px;
text-decoration: none;
}
.ipb-top-left-link a:hover,
.ipb-top-left-link a:active,
.ipb-top-right-link a:hover,
.ipb-top-right-link a:active
{
background: transparent;
color: #5176B5;
}
#userlinks,
#userlinksguest{
background: #F0F5FA;
border: 1px solid #C2CFDF;
margin: 5px 0 5px 0;
padding: 0 5px 0 5px;
}
#userlinksguest{
background: #F4E7EA;
border: 1px solid #986265;
}
#userlinks p,
#userlinksguest p{
background: transparent !important;
border: 0 !important;
font-size: 10px;
font-weight: bold;
letter-spacing: 1px;
margin: 0 !important;
padding: 7px 0 7px 0;
text-align: right;
}
#userlinks p,
#userlinksguest p{
font-weight: normal;
letter-spacing: 0;
}
#userlinksguest p.pcen{
text-align: center;
}
#userlinks p.home,
#userlinksguest p.home{
float: left;
}
#navstrip{
background: transparent;
color: #999;
font-size: 12px;
font-weight: bold;
margin: 0 0 5px 0;
padding: 14px 0px 8px 0px;
}
#navstrip a:link,
#navstrip a:visited{
background: transparent;
color: #222;
text-decoration: none;
}
#navstrip a:hover,
#navstrip a:active{
background: transparent;
color: #5176B5;
}
.toplinks{
background: transparent;
color: #000;
margin: 0;
padding: 0 0 5px 0;
text-align: right;
}
.toplinks span{
background: #F0F5FA;
border: 1px solid #C2CFDF;
border-bottom: 0;
color: #000;
font-size: 10px;
font-weight: bold;
margin: 0 10px 0 0;
padding: 5px;
}
.copyright{
background: #EEE;
font-size: 11px;
margin: 0 0 5px 0;
padding: 8px;
}
/*
* ========================================
* print page styles
* ========================================
*/
#print{
margin: 20px auto 20px auto;
padding: 0;
text-align: left;
width: 85%;
}
#print h1,
#print h2,
#print h3,
#print h4,
#print p{
color: #036;
font-size: 18px;
font-weight: bold;
margin: 0;
padding: 8px;
}
#print h2,
#print h3,
#print p{
border-bottom: 1px solid #999;
font-size: 11px;
font-weight: normal;
}
#print h3{
background: #F5F5F5;
font-size: 12px;
font-weight: bold;
margin: 0 0 10px 0;
}
#print h4{
background: #F9F9F9;
font-size: 11px;
}
#print p{
margin: 0 0 5px 0;
padding: 10px;
}
#print p.printcopy{
border: 0;
color: #000;
text-align: center;
}
.dny-edit-title
{
border:0px;
padding:3px;
margin:0px;
background: #D1DCEB;
color: #3A4F6C;
}
/* ======================================== */
/* TABS
/* ======================================== */
.tabon
{
border-top:1px solid #999;
border-left:1px solid #999;
border-right:1px solid #999;
background-color:#FFF;
padding:8px;
padding-bottom:9px;
font-size:10px;
float:left;
width:auto;
margin-top:3px;
}
.taboff
{
border-top: 1px solid #777;
border-left: 1px solid #777;
border-right: 1px solid #777;
background-color: #B5C3D9;
color: #333;
padding: 8px;
font-size:10px;
float: left;
width: auto;
margin-top:3px;
}
.tabon a:link,
.tabon a:visited,
.tabon a:active
{
text-decoration:none;
color: #000;
}
.taboff a:link,
.taboff a:visited,
.taboff a:active
{
text-decoration:none;
color: #333;
}
.mya-back
{
background: #072A66;
margin:1px;
padding: 1px;
}
.mya-content
{
background: #FFF;
padding:8px;
margin: 1px;
border: 1px solid #777;
}
.mya-content-tbl
{
background: #F0F5FA;
border: 1px solid #777;
text-align:left;
font-size:10px;
white-space:nowrap;
margin:1px;
}
.mya-fieldwrap
{
background: transparent;
margin-top: 2px;
margin-bottom: 2px;
padding: 4px;
border: 1px solid #C5C7CD;
-moz-border-radius: 5px;
width: auto;
display: block;
}
/* -------------------------------- */
/* Create PM box defaults */
/* -------------------------------- */
.iframeshim
{
position:absolute;
display:none;
background: #FFF;
border:0px;
width:auto;
height:auto;
}
/* -------------------------------- */
/* Experimental */
/* -------------------------------- */
.popupmenu,
.popupmenu-new
{
background: #F0F5FA;
border: 1px solid #3A4F6C;
text-align:left;
font-size:10px;
white-space:nowrap;
/*padding:3px 5px 3px 3px;*/
/*width:300px;*/
}
.popupmenu-item
{
padding: 5px;
/*margin-top:4px;*/
white-space: nowrap;
border-bottom: 1px solid #C2CFDF;
color: #000000;
font-weight: normal;
}
.popupmenu-item-last
{
padding: 5px;
/*margin-top:4px;*/
white-space: nowrap;
color: #000000;
font-weight: normal;
}
.popmenubutton-new,
.popmenubutton
{
width:120px;
white-space:nowrap;
background-color: #C2CFDF;
border:1px solid #3A4F6C;
color: #3A4F6C;
font-weight:bold;
float:right;
height:18px;
text-align:center;
margin:0px;
font-size:11px;
padding:3px;
}
.popmenubutton-new
{
float:none;
width:auto;
text-align:left;
height:auto;
padding:3px;
font-weight:normal;
background-color:#EEF2F7;
background-image: url(style_images/1/menu_action_down-padded.gif);
background-repeat: no-repeat;
background-position: right;
}
.popmenubutton-new-out
{
padding:4px;
}
.popupmenu-new
{
background-color: #DFE6EF;
}
.popmenubutton a:link,
.popmenubutton a:visited,
.popmenubutton-new a:link,
.popmenubutton-new a:visited,
.popupmenu-item a:link,
.popupmenu-item a:visited,
.popupmenu-item-last a:link,
.popupmenu-item-last a:visited
{
color: #3A4F6C;
text-decoration: none;
}
.popmenubutton a:hover,
.popmenubutton-new a:hover,
.popupmenu-item a:hover,
.popupmenu-item-last a:hover
{
color: #5176B5;
text-decoration: none;
}
.popupmenu-category
{
background: transparent url(style_images/1/tile_sub.gif);
border-top: 1px solid #5176B5;
border-bottom: 1px solid #5176B5;
color: #3A4F6C;
font-size: 10px;
font-weight: bold;
letter-spacing: 1px;
margin: 0;
padding: 5px;
}
/* -------------------------------- */
/* Loading box
/* -------------------------------- */
#loading-layer-inner
{
width:220px;
height:28px;
padding:18px 10px 10px 10px;
text-align:center;
color: #000;
border: 1px solid;
border-color:#CCC #666 #666 #CCC;
background-color: #FCF8C7;
}
/* -------------------------------- */
/* Message in a bo(x|ttle)
/* -------------------------------- */
#ipd-msg-wrapper
{
display: none;
width: 220px;
}
#ipd-msg-inner
{
width:100%;
height:45px;
padding: 6px 4px 4px 4px;
margin: 0px;
text-align:center;
color: #000;
border: 1px solid;
border-color:#ccc #666 #666 #ccc;
background-color: #FCF8C7;
filter:alpha(opacity=75);
opacity:.75
}
#ipd-msg-title
{
width: 100%;
height:20px;
margin: 0px;
padding: 6px 4px 4px 4px;
background: transparent url(style_images/1/css_pp_header.gif);
border: 1px solid #3A4F6C;
border-bottom: 0px;
color: #FFF;
}
.linked-image
{
margin: 0px;
padding: 0px;
border: 0px;
}
.resized-linked-image
{
margin: 1px 0px 0px 0px;
padding: 0px;
background-color: #000;
border: 0px;
color: #FFF;
font-size: 10px;
width: auto;
-moz-border-radius-topleft: 7px;
-moz-border-radius-topright: 7px;
}
.resized-linked-image-zoom
{
width: 200px;
height: 30px;
filter:alpha(opacity=85);
opacity:.85;
background-color: #FFF;
padding-top: 6px;
padding-left: 5px;
top: 0px;
left: 0px;
position: absolute;
display: none;
}
/* -------------------------------- */
/* Edit post reason
/* -------------------------------- */
.post-edit-reason
{
background: #E7EAEF;
margin-top: 9px;
margin-bottom: 0px;
padding: 4px;
color: #333;
font-size: 10px;
border: 1px solid #C5C7CD;
-moz-border-radius: 5px;
width: auto;
display: block;
}
/* -------------------------------- */
/* Personal Profile
/* -------------------------------- */
.pp-name
{
background: #F0F5FA;
border: 1px solid #C2CFDF;
margin: 0px;
padding: 10px;
}
.pp-name h3
{
margin:0px;
padding:0px 0px 5px 0px;
font-size:24px;
}
.pp-header
{
background: transparent url(style_images/1/tile_sub.gif);
color: #3A4F6C;
font-size: 10px;
font-weight: bold;
margin: 0px 0px 1px 0px;
padding: 5px;
}
.pp-title
{
background: url(style_images/1/css_pp_header.gif);
border-bottom: 1px solid #5176B5;
color: #FFF;
font-size: 12px;
font-weight: bold;
margin: 0px;
padding: 8px;
}
.pp-datebox
{
text-align: center;
background: #FFFFFF;
border: 1px solid #555555;
padding: 4px;
margin: 0px;
font-size:18px;
font-weight:bold;
line-height: 100%;
letter-spacing: -1px;
float:right;
width: auto;
}
.pp-datebox em
{
color: #AAA;
font-weight: normal;
font-style: normal;
}
.pp-contentbox-back
{
background-image: url(style_images/1/folder_profile_portal/pp-css-contentblock.gif);
background-repeat: repeat-x;
background-color: #ACBFD9;
padding: 6px;
}
.pp-contentbox-entry,
.pp-contentbox-entry-noheight,
.pp-contentbox-entry-noheight-mod,
.pp-contentbox-entry-noheight-sel
{
background-color: #EEF2F7;
border: 1px solid #888888;
line-height: 140%;
padding: 8px;
margin-bottom: 6px;
height: 200px;
overflow: auto;
overflow-x: auto;
}
.pp-contentbox-entry-noheight-sel
{
background-color:#FCECCD;
}
.pp-contentbox-entry-noheight-mod
{
background-color:#FDF1DA;
}
.pp-contentbox-entry-noheight,
.pp-contentbox-entry-noheight-mod,
.pp-contentbox-entry-noheight-sel
{
height: auto;
margin-bottom: 1px;
}
.pp-image-thumb-wrap,
.pp-image-thumb-wrap-floatright,
.pp-image-mini-wrap,
.pp-image-mini-wrap-floatright
{
width: 52px;
height: 52px;
text-align: center;
background: #FFFFFF;
border: 1px solid #555555;
padding: 4px;
margin-top: auto;
margin-bottom: auto;
}
.pp-image-mini-wrap,
.pp-image-mini-wrap-floatright
{
width: 27px;
height: 27px;
margin-top: auto;
margin-bottom: auto;
}
.pp-image-thumb-wrap-floatright,
.pp-image-mini-wrap-floatright
{
float:right;
}
.pp-tiny-text
{
color: gray;
font-size: 10px;
}
.pp-mini-content-entry,
.pp-mini-content-entry-noheight,
.pp-mini-entry-noheight-shaded
{
background-color: #F5F9FD;
padding: 6px;
border-bottom: 1px dotted #555555;
clear:both;
width: auto;
height: 60px;
}
.pp-mini-entry-noheight-shaded
{
background-color: #E3DFE7;
}
.pp-mini-content-entry-noheight,
.pp-mini-entry-noheight-shaded
{
height: auto;
}
.pp-tabclear,
.pp-maintitle
{
background: url(style_images/1/css_pp_header.gif);
border: 1px solid #FFF;
border-bottom: 1px solid #5176B5;
color: #FFF;
font-size: 12px;
font-weight: bold;
margin: 0px;
padding: 8px;
}
.pp-tabclear
{
border:0px;
border-right: 1px solid #072A66;
border-left: 1px solid #072A66;
}
.pp-tabon
{
border-top:1px solid #3363A1;
border-left:1px solid #072A66;
border-right:1px solid #072A66;
background-color:#6696D6;
color:#FFFFFF;
padding:8px;
float:left;
width:auto;
background-image: url(style_images/1/css_pp_tab_on.gif);
background-repeat: repeat-x;
background-position: left bottom;
margin-top:3px;
font-size:10px;
}
.pp-taboff,
.pp-tabshaded
{
border-top: 1px solid #759BC7;
border-left: 1px solid #759BC7;
border-right: 1px solid #759BC7;
background-color: #3363A1;
color: #3363A1;
padding:8px;
float: left;
width: auto;
background-image: url(style_images/1/css_pp_tab_off.gif);
background-repeat: repeat-x;
background-position: left bottom;
margin-top:3px;
font-size:10px;
}
.pp-tabshaded
{
background-image: url(style_images/1/css_pp_tab_shaded.gif);
background-repeat: repeat-x;
background-position: left bottom;
color: #516795;
border-top: 1px solid #7f9BBC;
border-left: 1px solid #7f9BBC;
border-right: 1px solid #7f9BBC;
}
.pp-tabon a:link,
.pp-tabon a:visited,
.pp-tabon a:active
{
text-decoration:none;
color: #FFFFFF;
}
.pp-taboff a:link,
.pp-taboff a:visited,
.pp-taboff a:active,
.pp-tabshaded a:link,
.pp-tabshaded a:visited,
.pp-tabshaded a:active
{
text-decoration:none;
color: #3363A1;
}
.pp-tabwrap
{
height: 34px;
margin:0px;
padding:0px;
}
@import url( "http://www.torrenttrader.org/style_images/1/folder_editor_images/css_rte.css" );
//
//
Features
Forums
SourceForge
Download
Premium Support
Custom Services
VBTT
VBTT Download
Help
Search
Members
Calendar
Search this forum only?
More Search Options
ipsmenu.register( "ipb-tl-search", 'document.getElementById("ipb-tl-search-box").focus();' );
gbl_check_search_box();
[X]
My Assistant
Loading. Please Wait...
Site Message
(Message will auto close in 2 seconds)
Logged in as: small_bigguy ( Log Out )
My Controls · View New Posts
· My Assistant
· My Friends
· 0 New Messages
TorrentTrader Forums > TorrentTrader PREMIUM > PREMIUM Hacks & Modifications
//
Posting Rules
Please remember that all hacks and modifications found in the premium area are for premium members only.DO NOT DISTRIBUTE!
6 Pages
« < 2 3 4 5 6 >
//
Passkey System v1.2, Add Passkey function to your site
Options
Scylla
View Member Profile
Add as Friend
Send Message
Find Member's Topics
Find Member's Posts
ipsmenu.register( "post-member-24181", '', 'popmenubutton-new', 'popmenubutton-new-out' );
Mar 6 2007, 05:45 AM
Post
#61
Member
Group: Premium
Posts: 19
Joined: 25-February 07
Member No.: 6,269
QUOTE(SssLukasSss @ Mar 6 2007, 12:26 AM) [snapback]24167[/snapback]"Failure: Connection limit exceeded! Your Passkey Has possibly been leaked"what does it mean? is it bad?Depends. This usually happens when u are using your passkey in multi IP environment or your did not disconnect properly.
pavlosp
View Member Profile
Add as Friend
Send Message
Find Member's Topics
Find Member's Posts
ipsmenu.register( "post-member-24323", '', 'popmenubutton-new', 'popmenubutton-new-out' );
Mar 11 2007, 07:02 PM
Post
#62
Advanced Member
Group: Premium
Posts: 102
Joined: 21-July 06
From: Greece
Member No.: 2,850
A problem came up with passkey. Until now was ok but today i noticed a problem. When i upload a torrent to my tracker in order to get the passkey and then download it in order to seed it, the passkey isn't added. Its missing.Testing i found that with utorrent that problem exists, if i create a torrent with bitcomet the problem doesn't exist.
jwwolf
View Member Profile
Add as Friend
Send Message
Find Member's Topics
Find Member's Posts
ipsmenu.register( "post-member-25426", '', 'popmenubutton-new', 'popmenubutton-new-out' );
Apr 6 2007, 02:56 PM
Post
#63
Newbie
Group: Premium
Posts: 7
Joined: 21-January 07
Member No.: 5,613
whats the verdict on this oneis it worth the time and trouble to mod iti noticed throughout the pages the overall theme was it dosent work
Torrential-Storm...
Torrential-Storm.co.uk
View Member Profile
Add as Friend
Send Message
Find Member's Topics
Find Member's Posts
ipsmenu.register( "post-member-25430", '', 'popmenubutton-new', 'popmenubutton-new-out' );
Apr 6 2007, 03:32 PM
Post
#64
Official Developer/Moderator
Group: Official Developer
Posts: 3,085
Joined: 27-September 05
From: http://www.TorrentialStorm.net
Member No.: 10
it does work, just the resetting passkey bit doesn't.. but... if you don't want to try this one try my one (i tested it on my test tracker and it worked perfectly)
--------------------
TorrentialStorm ^^Click My Sig^^TorrentTrader IRC Channel: #TorrentTrader on irc.p2p-network.netTorrentialStorm IRC Channel: #TorrentialStorm on irc.p2p-network.netIf you want to know what made my sig click HERE____________________________________________________________STOP PM'ING ME FOR SUPPORT, USE THE FORUMS THAT'S WHAT THEY'RE HERE FOR.
jwwolf
View Member Profile
Add as Friend
Send Message
Find Member's Topics
Find Member's Posts
ipsmenu.register( "post-member-25451", '', 'popmenubutton-new', 'popmenubutton-new-out' );
Apr 6 2007, 10:06 PM
Post
#65
Newbie
Group: Premium
Posts: 7
Joined: 21-January 07
Member No.: 5,613
QUOTE(Torrential-Storm.co.uk @ Apr 6 2007, 02:32 PM) [snapback]25430[/snapback]it does work, just the resetting passkey bit doesn't.. but... if you don't want to try this one try my one (i tested it on my test tracker and it worked perfectly)if i knew where it was located at i might be inclind to try itsearched for passkey and only found version 1.1 and 1.2 of this mod on the forums
Torrential-Storm...
Torrential-Storm.co.uk
View Member Profile
Add as Friend
Send Message
Find Member's Topics
Find Member's Posts
ipsmenu.register( "post-member-25452", '', 'popmenubutton-new', 'popmenubutton-new-out' );
Apr 7 2007, 12:18 AM
Post
#66
Official Developer/Moderator
Group: Official Developer
Posts: 3,085
Joined: 27-September 05
From: http://www.TorrentialStorm.net
Member No.: 10
this topic
--------------------
TorrentialStorm ^^Click My Sig^^TorrentTrader IRC Channel: #TorrentTrader on irc.p2p-network.netTorrentialStorm IRC Channel: #TorrentialStorm on irc.p2p-network.netIf you want to know what made my sig click HERE____________________________________________________________STOP PM'ING ME FOR SUPPORT, USE THE FORUMS THAT'S WHAT THEY'RE HERE FOR.
Tab
View Member Profile
Add as Friend
Send Message
Find Member's Topics
Find Member's Posts
ipsmenu.register( "post-member-25631", '', 'popmenubutton-new', 'popmenubutton-new-out' );
Apr 11 2007, 12:37 AM
Post
#67
Advanced Member
Group: Premium
Posts: 62
Joined: 29-March 07
Member No.: 6,958
QUOTE(Torrential-Storm.co.uk @ Apr 6 2007, 07:32 AM) [snapback]25430[/snapback]it does work, just the resetting passkey bit doesn't.. but... if you don't want to try this one try my one (i tested it on my test tracker and it worked perfectly)So are you saying that the non-premium version works better than this 1.2 mod? I need to install a passkey hack, but I'm confused which one is recommended? (I'm using TT1.05)
bison
View Member Profile
Add as Friend
Send Message
Find Member's Topics
Find Member's Posts
ipsmenu.register( "post-member-25888", '', 'popmenubutton-new', 'popmenubutton-new-out' );
Apr 16 2007, 05:25 PM
Post
#68
Member
Group: Premium
Posts: 20
Joined: 5-June 06
Member No.: 2,551
Works for me!!!very useful! thx
Tab
View Member Profile
Add as Friend
Send Message
Find Member's Topics
Find Member's Posts
ipsmenu.register( "post-member-26012", '', 'popmenubutton-new', 'popmenubutton-new-out' );
Apr 19 2007, 07:20 PM
Post
#69
Advanced Member
Group: Premium
Posts: 62
Joined: 29-March 07
Member No.: 6,958
QUOTE(FLASH @ Aug 23 2006, 06:00 AM) [snapback]15597[/snapback]open announce.phpfind:CODE$rzz = mysql_query("SELECT id, uploaded, downloaded, class FROM users WHERE ip='$ip' AND enabled = 'yes' ORDER BY last_access DESC LIMIT 1");replace with:CODE////////////////////////////// PASSKEY SYSTEM////////////////////////////$valid = @mysql_fetch_row(@mysql_query("SELECT COUNT(*) FROM peers WHERE torrent=$torrentid AND passkey=" . sqlesc($passkey) . ""));if ($valid[0] >= 1 && $seeder == 'no') err("Connection limit exceeded! Your Passkey Has possibly been leaked");if ($valid[0] >= 3 && $seeder == 'yes') err("Connection limit exceeded!");$rzz = mysql_query("SELECT id, uploaded, downloaded, class FROM users WHERE passkey=".sqlesc($passkey)." AND enabled = 'yes' ORDER BY last_access DESC LIMIT 1") or err("Tracker error 2");////////////////////////////// END PASSKEY SYSTEM////////////////////////////find:CODE$ret = mysql_query("INSERT INTO peers (connectable, torrent, peer_id, ip, port, uploaded, downloaded, to_go, started, last_action, seeder, userid, client) VALUES ('$connectable', $torrentid, " . sqlesc($peer_id) . ", " . sqlesc($ip) . ", $port, $uploaded, $downloaded, $left, NOW(), NOW(), '$seeder', '$userid', " . sqlesc($agent) . ")");replace with:CODE////////////////////////////// PASSKEY SYSTEM//////////////////////////// $ret = mysql_query("INSERT INTO peers (connectable, torrent, peer_id, ip, port, uploaded, downloaded, to_go, started, last_action, seeder, userid, client, passkey) VALUES ('$connectable', $torrentid, " . sqlesc($peer_id) . ", " . sqlesc($ip) . ", $port, $uploaded, $downloaded, $left, NOW(), NOW(), '$seeder', $userid, " . sqlesc($agent) . ", " . sqlesc($passkey) . ")");////////////////////////////// END PASSKEY SYSTEM//////////////////////////// find: CODE$rz = mysql_query("SELECT id FROM users WHERE ip='$ip' AND enabled='yes' LIMIT 1") or err('Tracker error (1)');I'm now using TT 1.06 and a lot of the code mentioned in announce.php doesn't seem to be there? Are the changes different for TT 1.06?
Torrential-Storm...
Torrential-Storm.co.uk
View Member Profile
Add as Friend
Send Message
Find Member's Topics
Find Member's Posts
ipsmenu.register( "post-member-26025", '', 'popmenubutton-new', 'popmenubutton-new-out' );
Apr 19 2007, 09:15 PM
Post
#70
Official Developer/Moderator
Group: Official Developer
Posts: 3,085
Joined: 27-September 05
From: http://www.TorrentialStorm.net
Member No.: 10
1.06 announce:[codebox]<?//// TORRENTTRADER ANNOUNCE V2 (WWW.TORRENTTRADER.ORG)// CHANGES: MODIFIED TO INCLUDE FUNCTIONS CALLED FROM FUNCTIONS.PHP AND BENC.PHP// INCLUDES: WAIT TIMES, LIVE STATS UPDATE, PORT BLOCKING, NEW GZIP OUTPUT, ANTI-BROWSER, FULL SNATCHED DETAILS//// LINE 303/304 UNCONNECTABLE POSSIBLE FIX, SIMPLY CHANGE THE COMMENTED SQL//// SUPPORT FOR OLD "WHO COMPLETED" MOD ON LINE 409-413 ////require_once("backend/config.php");//START FUNCTIONSfunction unesc($x) { if (get_magic_quotes_gpc()) return stripslashes($x); return $x;}function is_valid_id($id){ return is_numeric($id) && ($id > 0) && (floor($id) == $id);}function validip($ip){ if (!empty($ip) && ip2long($ip)!=-1) { $reserved_ips = array ( array('0.0.0.0','2.255.255.255'), array('10.0.0.0','10.255.255.255'), array('127.0.0.0','127.255.255.255'), array('169.254.0.0','169.254.255.255'), array('172.16.0.0','172.31.255.255'), array('192.0.2.0','192.0.2.255'), array('192.168.0.0','192.168.255.255'), array('255.255.255.0','255.255.255.255') ); foreach ($reserved_ips as $r) { $min = ip2long($r[0]); $max = ip2long($r[1]); if ((ip2long($ip) >= $min) && (ip2long($ip) <= $max)) return false; } return true; } else return false;}function getip() { if (isset($_SERVER)) { if (isset($_SERVER['HTTP_X_FORWARDED_FOR']) && validip($_SERVER['HTTP_X_FORWARDED_FOR'])) { $ip = $_SERVER['HTTP_X_FORWARDED_FOR']; } elseif (isset($_SERVER['HTTP_CLIENT_IP']) && validip($_SERVER['HTTP_CLIENT_IP'])) { $ip = $_SERVER['HTTP_CLIENT_IP']; } else { $ip = $_SERVER['REMOTE_ADDR']; } } else { if (getenv('HTTP_X_FORWARDED_FOR') && validip(getenv('HTTP_X_FORWARDED_FOR'))) { $ip = getenv('HTTP_X_FORWARDED_FOR'); } elseif (getenv('HTTP_CLIENT_IP') && validip(getenv('HTTP_CLIENT_IP'))) { $ip = getenv('HTTP_CLIENT_IP'); } else { $ip = getenv('REMOTE_ADDR'); } } return $ip;}function dbconn($autoclean = false) { global $mysql_host, $mysql_user, $mysql_pass, $mysql_db; if (!@mysql_connect($mysql_host, $mysql_user, $mysql_pass)) { die('dbconn: mysql_connect: ' . mysql_error()); } mysql_select_db($mysql_db) or die('dbconn: mysql_select_db: ' + mysql_error());}function hash_pad($hash) { return str_pad($hash, 20);}function hash_where($name, $hash) { $shhash = preg_replace('/ *$/s', "", $hash); return "($name = " . sqlesc($hash) . " OR $name = " . sqlesc($shhash) . ")";}function sqlesc($x) { return "'".mysql_real_escape_string($x)."'";}function err($msg){ benc_resp(array("failure reason" => array(type => "string", value => $msg))); exit();}function benc($obj) { if (!is_array($obj) || !isset($obj["type"]) || !isset($obj["value"])) return; $c = $obj["value"]; switch ($obj["type"]) { case "string": return benc_str($c); case "integer": return benc_int($c); case "list": return benc_list($c); case "dictionary": return benc_dict($c); default: return; }}function benc_str($s) { return strlen($s) . ":$s";}function benc_int($i) { return "i" . $i . "e";}function benc_list($a) { $s = "l"; foreach ($a as $e) { $s .= benc($e); } $s .= "e"; return $s;}function benc_dict($d) { $s = "d"; $keys = array_keys($d); sort($keys); foreach ($keys as $k) { $v = $d[$k]; $s .= benc_str($k); $s .= benc($v); } $s .= "e"; return $s;}function benc_resp($d){ benc_resp_raw(benc(array(type => "dictionary", value => $d)));}function benc_resp_raw($x) {header("Content-Type: text/plain");header("Pragma: no-cache");if ($_SERVER["HTTP_ACCEPT_ENCODING"] == "gzip") { header("Content-Encoding: gzip"); echo gzencode($x, 9, FORCE_GZIP);} else print($x);}function gmtime(){ return strtotime(get_date_time());}function get_date_time($timestamp = 0){ if ($timestamp) return date("Y-m-d H:i:s", $timestamp); else return gmdate("Y-m-d H:i:s");}function portblacklisted($port){ // direct connect if ($port >= 411 && $port <= 413) return true; // bittorrent (AZUREUS) // if ($port >= 6881 && $port <= 6889) return true; // kazaa if ($port == 1214) return true; // gnutella if ($port >= 6346 && $port <= 6347) return true; // emule if ($port == 4662) return true; // winmx if ($port == 6699) return true; return false;}//////////////////////// NOW WE DO THE ANNOUNCE CODE ////////////////////////// BLOCK ACCESS WITH WEB BROWSERS$agent = $_SERVER["HTTP_USER_AGENT"];if (ereg("^Mozilla\\/", $agent) || ereg("^Opera\\/", $agent) || ereg("^Links ", $agent) || ereg("^Lynx\\/", $agent)) err("torrent not registered with this tracker");//GET DETAILS OF PEERS ANNOUNCEforeach (array("passkey","info_hash","peer_id","event") as $x){if(isset($_GET["$x"]))$GLOBALS[$x] = "" . $_GET[$x];}foreach (array("port","downloaded","uploaded","left") as $x)$GLOBALS[$x] = 0 + $_GET[$x];if (strpos($passkey, "?")) {$tmp = substr($passkey, strpos($passkey, "?"));$passkey = substr($passkey, 0, strpos($passkey, "?"));$tmpname = substr($tmp, 1, strpos($tmp, "=")-1);$tmpvalue = substr($tmp, strpos($tmp, "=")+1);$GLOBALS[$tmpname] = $tmpvalue;}foreach (array("passkey","info_hash","peer_id","port","downloaded","uploaded","left") as $x)if (!isset($x)) err("Missing key: $x");foreach (array("info_hash","peer_id") as $x)if (strlen($passkey) != 32) err("Invalid passkey (" . strlen($passkey) . " - $passkey)");$ip = getip();$rsize = 50;foreach(array("num want", "numwant", "num_want") as $k){ if (isset($_GET[$k])) { $rsize = 0 + $_GET[$k]; break; }}//PORT CHECKif (!$port || $port > 0xffff) err("invalid port");//TRACKER EVENT CHECKif (!isset($event)) $event = "";$seeder = ($left == 0) ? "yes" : "no";dbconn(false);// GET HASH AND SELECT FROM DB$usehash = false;if (isset($_GET["info_hash"])){ if (get_magic_quotes_gpc()) $info_hash = stripslashes($_GET["info_hash"]); else $info_hash = $_GET["info_hash"]; if (strlen($info_hash) == 20) $info_hash = bin2hex($info_hash); else if (strlen($info_hash) != 40) err("Invalid info hash value."); $info_hash = strtolower($info_hash); $usehash = true;}if ($usehash) $sql = mysql_query("SELECT id, name, category, banned, seeders + leechers AS numpeers, UNIX_TIMESTAMP(added) AS ts FROM torrents WHERE info_hash='$info_hash'") or err("$info_hash - Database error. Cannot complete request.");else $sql = mysql_query("SELECT id, name, category, banned, seeders + leechers AS numpeers, UNIX_TIMESTAMP(added) AS ts FROM torrents ORDER BY info_hash") or err("Database error. Cannot complete request.");//DOES THE TORRENT EXIST?$torrent = mysql_fetch_array($sql);if (!$torrent) err("torrent not found on this tracker - hash = " . $info_hash);//IS THE IP REGISTERED, IF SO CALL USER ID$userid = 0;if ($MEMBERSONLY){$valid = @mysql_fetch_row(@mysql_query("SELECT COUNT(*) FROM peers WHERE torrent=$torrentid AND passkey=" . sqlesc($passkey) . ""));if ($valid[0] >= 1 && $seeder == 'no') err("Connection limit exceeded! Your Passkey Has possibly been leaked");if ($valid[0] >= 3 && $seeder == 'yes') err("Connection limit exceeded!");$rzz = mysql_query("SELECT id, uploaded, downloaded, class FROM users WHERE passkey=".sqlesc($passkey)." AND enabled = 'yes' ORDER BY last_access DESC LIMIT 1") or err("Tracker error 2"); if (mysql_num_rows($rz) < 1) err("Unrecognized host ($ip - $passkey). Please go to $SITEURL to sign-up or login."); $azz = mysql_fetch_assoc($rz); $userid = $azz["id"];}//SELECT DATA FROM PEERS TABLE$torrentid = $torrent["id"];$torrentname = $torrent["name"];$torrentcategory = $torrent["category"];$fields = "seeder, UNIX_TIMESTAMP(last_action) AS ez, peer_id, ip, port, uploaded, downloaded, userid";$numpeers = $torrent["numpeers"];$limit = "";if ($numpeers > $rsize) $limit = "ORDER BY RAND() LIMIT $rsize";// ABC and CONNECTABLE issues FIX, swap commented line over//$res = mysql_query("SELECT $fields FROM peers WHERE torrent = $torrentid AND connectable = 'yes' $limit");$res = mysql_query("SELECT $fields FROM peers WHERE torrent = $torrentid $limit");//DO SOME BENC STUFF TO THE PEERS CONNECTION$resp = "d" . benc_str("interval") . "i" . $announce_interval . "e" . benc_str("peers") . "l";unset($self);while ($row = mysql_fetch_assoc($res)){ $row["peer_id"] = hash_pad($row["peer_id"]); if ($row["peer_id"] === $peer_id) { $userid = $row["userid"]; $self = $row; continue; } $resp .= "d" . benc_str("ip") . benc_str($row["ip"]) . benc_str("peer id") . benc_str($row["peer_id"]) . benc_str("port") . "i" . $row["port"] . "e" . "e";}$resp .= "ee";$selfwhere = "torrent = $torrentid AND " . hash_where("peer_id", $peer_id);// FILL $SELF WITH DETAILS FROM PEERS TABLE (CONNECTING PEERS DETAILS)if (!isset($self)){ $res = mysql_query("SELECT $fields FROM peers WHERE $selfwhere"); $row = mysql_fetch_assoc($res); if ($row){ $userid = $row["userid"]; $self = $row; }}// END $SELF FILL// SNATCHED MOD - GET DATE TIME/OFFSET$dt = gmtime() - 180;//OFFSET$dt = sqlesc(get_date_time($dt));if (!isset($self))//IF PEER IS NOT IN PEERS TABLE DO THE WAIT TIME CHECK{ if ($MEMBERSONLY_WAIT && $MEMBERSONLY){ if ($left > 0 && $azz["class"] == 0 ) { $gigs = $azz["uploaded"] / (1024*1024*1024); $elapsed = floor((gmtime() - $torrent["ts"]) / 3600); $ratio = (($azz["downloaded"] > 0) ? ($azz["uploaded"] / $azz["downloaded"]) : 1); if ($ratio == 0 && $gigs == 0) $wait = 24; elseif ($ratio < $RATIOA || $gigs < $GIGSA) $wait = $WAITA; elseif ($ratio < $RATIOB || $gigs < $GIGSB) $wait = $WAITB; elseif ($ratio < $RATIOC || $gigs < $GIGSC) $wait = $WAITC; elseif ($ratio < $RATIOD || $gigs < $GIGSD) $wait = $WAITD; else $wait = 0; if ($wait) if ($elapsed < $wait) err("Not authorized (" . ($wait - $elapsed) . "h) - READ THE FAQ! $SITEURL"); } }}else{// IF WE DO HAVE PEERS DETAILS ($self) THEN WE UPDATE THE UP/DOWN STATS HERE //ANTI FLOOD $start = $self["ez"]; //last_action $end = time(); //now time if ($end - $start < 60 && $event != "completed") // Flood time in secs err("Sorry, minimum announce interval = 60 sec."); //END ANTI FLOOD $upthis = max(0, $uploaded - $self["uploaded"]); $downthis = max(0, $downloaded - $self["downloaded"]); if (($upthis > 0 || $downthis > 0) && is_valid_id($userid)) // SEE IF THERE IS ANYTHING THATS GONE UP (LIVE STATS!) { mysql_query("UPDATE users SET uploaded = uploaded + $upthis, downloaded = downloaded + $downthis WHERE id=$userid") or err("Tracker error 3"); }}//END WAIT AND STATS UPDATE$updateset = array();////////////////// NOW WE DO THE TRACKER EVENT UPDATES ///////////////////if ($event == "stopped")// UPDATE "STOPPED" EVENT{ if (isset($self))// DELETE PEER AND REMOVE SEEDER OR LEECHER { //UPDATE SNATCHED mysql_query("UPDATE snatched SET seeder = 'no', connectable='no' WHERE torrent = $torrentid AND userid = $userid"); mysql_query("DELETE FROM peers WHERE $selfwhere"); if (mysql_affected_rows()) { if ($self["seeder"] == "yes") $updateset[] = "seeders = seeders - 1"; else $updateset[] = "leechers = leechers - 1"; } }}else{ if ($event == "completed")// UPDATE "COMPLETED" EVENT { //UPDATE SNATCHED mysql_query("UPDATE snatched SET finished = 'yes', completedat = $dt WHERE torrent = $torrentid AND userid = $userid"); $updateset[] = "times_completed = times_completed + 1"; //if (is_valid_id($userid)){// UPDATE THE "WHO COMPLETED TABLE" $az = mysql_fetch_assoc($rz); mysql_query("INSERT INTO downloaded (torrent, user) VALUES ('$torrentid', '$userid')") or err(mysql_error()); //} }//END COMPLETED if (isset($self))// NO EVENT? THEN WE MUST BE A NEW PEER OR ARE NOW SEEDING A COMPLETED TORRENT {// NOW WE ARE SEEDING AFTER COMPLETED//SNATCH UPDATE $res=mysql_query("SELECT uploaded, downloaded FROM snatched WHERE torrent = $torrentid AND userid = $userid"); $row = mysql_fetch_array($res); $sockres = @fsockopen($ip, $port, $errno, $errstr, 5); if (!$sockres) $connectable = "no"; else { $connectable = "yes"; @fclose($sockres); } $downloaded2=$downloaded - $self["downloaded"]; $uploaded2=$uploaded - $self["uploaded"]; mysql_query("UPDATE snatched SET uploaded = uploaded+$uploaded2, downloaded = downloaded+$downloaded2, port = $port, connectable = '$connectable', agent= " . sqlesc($agent) . ", to_go = $left, last_action = $dt, seeder = '$seeder' WHERE torrent = $torrentid AND userid = $userid");//END SNATCH UPDATE mysql_query("UPDATE peers SET ip = " . sqlesc($ip) . ", port = $port, uploaded = $uploaded, downloaded = $downloaded, to_go = $left, last_action = NOW(), client = " . sqlesc($agent) . ", seeder = '$seeder' WHERE $selfwhere"); if (mysql_affected_rows() && $self["seeder"] != $seeder) { if ($seeder == "yes"){ $updateset[] = "seeders = seeders + 1"; $updateset[] = "leechers = leechers - 1"; } else { $updateset[] = "seeders = seeders - 1"; $updateset[] = "leechers = leechers + 1"; } } } else { if (portblacklisted($port)) err("Port $port is blacklisted."); else {// WE ARE NOT A "COMPLETED" SEED, WE ARE A "NEW" SEEDER $sockres = @fsockopen($ip, $port, $errno, $errstr, 5); if (!$sockres) $connectable = "no"; else { $connectable = "yes"; @fclose($sockres); } } //SNATCHED MOD $res = mysql_query("SELECT torrent, userid FROM snatched WHERE torrent = $torrentid AND userid = $userid"); $check = mysql_fetch_assoc($res); if (!$check) mysql_query("INSERT INTO snatched (torrent, torrentid, userid, port, startdat, last_action, agent, torrent_name, torrent_category) VALUES ($torrentid, $torrentid, $userid, $port, $dt, $dt, " . sqlesc($agent) . ", " . sqlesc($torrentname) . ", $torrentcategory)"); //END SNATCHED $ret = mysql_query("INSERT INTO peers (connectable, torrent, peer_id, ip, port, uploaded, downloaded, to_go, started, last_action, seeder, userid, client, passkey) VALUES ('$connectable', $torrentid, " . sqlesc($peer_id) . ", " . sqlesc($ip) . ", $port, $uploaded, $downloaded, $left, NOW(), NOW(), '$seeder', $userid, " . sqlesc($agent) . ", " . sqlesc($passkey) . ")"); if ($ret) { if ($seeder == "yes") $updateset[] = "seeders = seeders + 1"; else $updateset[] = "leechers = leechers + 1"; } }}////////////////// END TRACKER EVENT UPDATES ///////////////////// SEEDED, LETS MAKE IT VISIBLE THENif ($seeder == "yes") { if ($torrent["banned"] != "yes") // DONT MAKE BANNED ONES VISIBLE $updateset[] = "visible = 'yes'"; $updateset[] = "last_action = NOW()";}// NOW WE UPDATE THE TORRENT AS PER ABOVEif (count($updateset)) mysql_query("UPDATE torrents SET " . join(",", $updateset) . " WHERE id = $torrentid");// NOW BENC THE DATA AND SEND TO CLIENT???benc_resp_raw($resp);exit();?>[/codebox]untested but it should work fine
--------------------
TorrentialStorm ^^Click My Sig^^TorrentTrader IRC Channel: #TorrentTrader on irc.p2p-network.netTorrentialStorm IRC Channel: #TorrentialStorm on irc.p2p-network.netIf you want to know what made my sig click HERE____________________________________________________________STOP PM'ING ME FOR SUPPORT, USE THE FORUMS THAT'S WHAT THEY'RE HERE FOR.
Tab
View Member Profile
Add as Friend
Send Message
Find Member's Topics
Find Member's Posts
ipsmenu.register( "post-member-26057", '', 'popmenubutton-new', 'popmenubutton-new-out' );
Apr 20 2007, 11:33 PM
Post
#71
Advanced Member
Group: Premium
Posts: 62
Joined: 29-March 07
Member No.: 6,958
QUOTEuntested but it should work fineCan you double check its correct? I'm getting this error message reported by my tracker: Tracker sending invalid data: <br /><b>Warning</b>: mysql_num_rows(): supplied argument is not a valid MySQL result resource in <b>/home/domains/muslimtorrents.com/www_root/annou.
Tab
View Member Profile
Add as Friend
Send Message
Find Member's Topics
Find Member's Posts
ipsmenu.register( "post-member-26058", '', 'popmenubutton-new', 'popmenubutton-new-out' );
Apr 20 2007, 11:45 PM
Post
#72
Advanced Member
Group: Premium
Posts: 62
Joined: 29-March 07
Member No.: 6,958
QUOTE(FLASH @ Aug 23 2006, 06:00 AM) [snapback]15597[/snapback]if you are using the external stats mod then please see the thread in the premium members are for the alternate download.phpI'm using the external stats mod but can't find the alternate download.php for the passkey mod? I already checked the ext stats mod thread.
nicky
View Member Profile
Add as Friend
Send Message
Find Member's Topics
Find Member's Posts
ipsmenu.register( "post-member-26066", '', 'popmenubutton-new', 'popmenubutton-new-out' );
Apr 21 2007, 12:48 PM
Post
#73
Advanced Member
Group: Premium
Posts: 44
Joined: 8-January 06
Member No.: 1,213
hi test with
Attached File(s)
announce.rar ( 5.36K )
Number of downloads: 14
Tab
View Member Profile
Add as Friend
Send Message
Find Member's Topics
Find Member's Posts
ipsmenu.register( "post-member-26182", '', 'popmenubutton-new', 'popmenubutton-new-out' );
Apr 24 2007, 07:39 PM
Post
#74
Advanced Member
Group: Premium
Posts: 62
Joined: 29-March 07
Member No.: 6,958
QUOTE(nicky @ Apr 21 2007, 04:48 AM) [snapback]26066[/snapback]hi test withThanks...but have you tested this w/ version 1.06? Its way different than the one T-Storm posted. T-Storm, can you please test your code?
nightmare
View Member Profile
Add as Friend
Send Message
Find Member's Topics
Find Member's Posts
ipsmenu.register( "post-member-26192", '', 'popmenubutton-new', 'popmenubutton-new-out' );
Apr 25 2007, 03:08 AM
Post
#75
Advanced Member
Group: Premium
Posts: 1,138
Joined: 3-October 05
From: PT. Lisbon
Member No.: 93
This hack need to be completly rewrited, FLASH where are you!!!!!!!!!!!!!, I've no time to rewrite this and finish V2 RC1
--------------------
SssLukasSss
View Member Profile
Add as Friend
Send Message
Find Member's Topics
Find Member's Posts
ipsmenu.register( "post-member-26201", '', 'popmenubutton-new', 'popmenubutton-new-out' );
Apr 25 2007, 12:32 PM
Post
#76
Advanced Member
Group: Premium
Posts: 149
Joined: 26-January 07
From: Wilno - Litwa :)
Member No.: 5,686
i will wait for flashi will wait for flash
Tab
View Member Profile
Add as Friend
Send Message
Find Member's Topics
Find Member's Posts
ipsmenu.register( "post-member-26252", '', 'popmenubutton-new', 'popmenubutton-new-out' );
Apr 26 2007, 07:38 PM
Post
#77
Advanced Member
Group: Premium
Posts: 62
Joined: 29-March 07
Member No.: 6,958
I would love someone to post a working download.php and announce.php based on TT 1.06 with the passkey 1.2 and external stats mod. Seems like there's a lot of changes that need to be made for v1.06 if you have these 2 mods (which I'm sure most users do)PLEASE post them soon! *Cough FLash or T-Storm Cough*
Torrential-Storm...
Torrential-Storm.co.uk
View Member Profile
Add as Friend
Send Message
Find Member's Topics
Find Member's Posts
ipsmenu.register( "post-member-26257", '', 'popmenubutton-new', 'popmenubutton-new-out' );
Apr 26 2007, 09:36 PM
Post
#78
Official Developer/Moderator
Group: Official Developer
Posts: 3,085
Joined: 27-September 05
From: http://www.TorrentialStorm.net
Member No.: 10
fixed it:[codebox]<?//// TORRENTTRADER ANNOUNCE V2 (WWW.TORRENTTRADER.ORG)// CHANGES: MODIFIED TO INCLUDE FUNCTIONS CALLED FROM FUNCTIONS.PHP AND BENC.PHP// INCLUDES: WAIT TIMES, LIVE STATS UPDATE, PORT BLOCKING, NEW GZIP OUTPUT, ANTI-BROWSER, FULL SNATCHED DETAILS//// LINE 303/304 UNCONNECTABLE POSSIBLE FIX, SIMPLY CHANGE THE COMMENTED SQL//// SUPPORT FOR OLD "WHO COMPLETED" MOD ON LINE 409-413////require_once("backend/config.php");//START FUNCTIONSfunction unesc($x) {if (get_magic_quotes_gpc())return stripslashes($x);return $x;}function is_valid_id($id){return is_numeric($id) && ($id > 0) && (floor($id) == $id);}function validip($ip){if (!empty($ip) && ip2long($ip)!=-1){$reserved_ips = array (array('0.0.0.0','2.255.255.255'),array('10.0.0.0','10.255.255.255'),array('127.0.0.0','127.255.255.255'),array('169.254.0.0','169.254.255.255'),array('172.16.0.0','172.31.255.255'),array('192.0.2.0','192.0.2.255'),array('192.168.0.0','192.168.255.255'),array('255.255.255.0','255.255.255.255'));foreach ($reserved_ips as $r){$min = ip2long($r[0]);$max = ip2long($r[1]);if ((ip2long($ip) >= $min) && (ip2long($ip) <= $max)) return false;}return true;}else return false;}function getip() {if (isset($_SERVER)) {if (isset($_SERVER['HTTP_X_FORWARDED_FOR']) && validip($_SERVER['HTTP_X_FORWARDED_FOR'])) {$ip = $_SERVER['HTTP_X_FORWARDED_FOR'];} elseif (isset($_SERVER['HTTP_CLIENT_IP']) && validip($_SERVER['HTTP_CLIENT_IP'])) {$ip = $_SERVER['HTTP_CLIENT_IP'];} else {$ip = $_SERVER['REMOTE_ADDR'];}} else {if (getenv('HTTP_X_FORWARDED_FOR') && validip(getenv('HTTP_X_FORWARDED_FOR'))) {$ip = getenv('HTTP_X_FORWARDED_FOR');} elseif (getenv('HTTP_CLIENT_IP') && validip(getenv('HTTP_CLIENT_IP'))) {$ip = getenv('HTTP_CLIENT_IP');} else {$ip = getenv('REMOTE_ADDR');}}return $ip;}function dbconn($autoclean = false) {global $mysql_host, $mysql_user, $mysql_pass, $mysql_db;if (!@mysql_connect($mysql_host, $mysql_user, $mysql_pass)){die('dbconn: mysql_connect: ' . mysql_error());}mysql_select_db($mysql_db)or die('dbconn: mysql_select_db: ' + mysql_error());}function hash_pad($hash) {return str_pad($hash, 20);}function hash_where($name, $hash) {$shhash = preg_replace('/ *$/s', "", $hash);return "($name = " . sqlesc($hash) . " OR $name = " . sqlesc($shhash) . ")";}function sqlesc($x) {return "'".mysql_real_escape_string($x)."'";}function err($msg){benc_resp(array("failure reason" => array(type => "string", value => $msg)));exit();}function benc($obj) {if (!is_array($obj) || !isset($obj["type"]) || !isset($obj["value"]))return;$c = $obj["value"];switch ($obj["type"]) {case "string":return benc_str($c);case "integer":return benc_int($c);case "list":return benc_list($c);case "dictionary":return benc_dict($c);default:return;}}function benc_str($s) {return strlen($s) . ":$s";}function benc_int($i) {return "i" . $i . "e";}function benc_list($a) {$s = "l";foreach ($a as $e) {$s .= benc($e);}$s .= "e";return $s;}function benc_dict($d) {$s = "d";$keys = array_keys($d);sort($keys);foreach ($keys as $k) {$v = $d[$k];$s .= benc_str($k);$s .= benc($v);}$s .= "e";return $s;}function benc_resp($d){benc_resp_raw(benc(array(type => "dictionary", value => $d)));}function benc_resp_raw($x) {header("Content-Type: text/plain");header("Pragma: no-cache");//if ($_SERVER["HTTP_ACCEPT_ENCODING"] == "gzip") {//header("Content-Encoding: gzip");//echo gzencode($x, 9, FORCE_GZIP);//} elseprint($x);}function gmtime(){return strtotime(get_date_time());}function get_date_time($timestamp = 0){if ($timestamp)return date("Y-m-d H:i:s", $timestamp);elsereturn gmdate("Y-m-d H:i:s");}function portblacklisted($port){// direct connectif ($port >= 411 && $port <= 413) return true;// bittorrent (AZUREUS)// if ($port >= 6881 && $port <= 6889) return true;// kazaaif ($port == 1214) return true;// gnutellaif ($port >= 6346 && $port <= 6347) return true;// emuleif ($port == 4662) return true;// winmxif ($port == 6699) return true;return false;}//////////////////////// NOW WE DO THE ANNOUNCE CODE ////////////////////////// BLOCK ACCESS WITH WEB BROWSERS$agent = $_SERVER["HTTP_USER_AGENT"];if (ereg("^Mozilla\\/", $agent) || ereg("^Opera\\/", $agent) || ereg("^Links ", $agent) || ereg("^Lynx\\/", $agent))err("torrent not registered with this tracker");//GET DETAILS OF PEERS ANNOUNCE$req = "info_hash:peer_id:port:uploaded:downloaded:left:!event:passkey";foreach (explode(":", $req) as $x){ if ($x[0] == "!") { $x = substr($x, 1); $opt = 1; } else $opt = 0; if (!isset($_GET[$x])) { if (!$opt) err("missing key ($x)"); continue; } $GLOBALS[$x] = unesc($_GET[$x]);}foreach (array("info_hash","peer_id") as $x){ if (strlen($GLOBALS[$x]) != 20) err("invalid $x (" . strlen($GLOBALS[$x]) . " - " . urlencode($GLOBALS[$x]) . ")");}$ip = getip();$rsize = 50;foreach(array("num want", "numwant", "num_want") as $k){if (isset($_GET[$k])){$rsize = 0 + $_GET[$k];break;}}//PORT CHECKif (!$port || $port > 0xffff)err("invalid port");//TRACKER EVENT CHECKif (!isset($event))$event = "";$seeder = ($left == 0) ? "yes" : "no";dbconn(false);// GET HASH AND SELECT FROM DB$usehash = false;if (isset($_GET["info_hash"])){if (get_magic_quotes_gpc())$info_hash = stripslashes($_GET["info_hash"]);else$info_hash = $_GET["info_hash"];if (strlen($info_hash) == 20)$info_hash = bin2hex($info_hash);else if (strlen($info_hash) != 40)err("Invalid info hash value.");$info_hash = strtolower($info_hash);$usehash = true;}if ($usehash)$sql = mysql_query("SELECT id, name, category, banned, seeders + leechers AS numpeers, UNIX_TIMESTAMP(added) AS ts FROM torrents WHERE info_hash='$info_hash'") or err("$info_hash - Database error. Cannot complete request.");else$sql = mysql_query("SELECT id, name, category, banned, seeders + leechers AS numpeers, UNIX_TIMESTAMP(added) AS ts FROM torrents ORDER BY info_hash") or err("Database error. Cannot complete request.");//DOES THE TORRENT EXIST?$torrent = mysql_fetch_array($sql);if (!$torrent)err("torrent not found on this tracker - hash = " . $info_hash);//IS THE IP REGISTERED, IF SO CALL USER ID$userid = 0;if ($MEMBERSONLY){$rzz = mysql_query("SELECT id, uploaded, downloaded, class FROM users WHERE passkey=".sqlesc($passkey)." AND enabled = 'yes' ORDER BY last_access DESC LIMIT 1") or err("Tracker error 2");if (mysql_num_rows($rzz) < 1)err("Unrecognized host ($ip - $passkey). Please go to $SITEURL to sign-up or login.");$valid = @mysql_fetch_row(@mysql_query("SELECT COUNT(*) FROM peers WHERE torrent=$torrentid AND passkey=" . sqlesc($passkey) . ""));if ($valid[0] >= 1 && $seeder == 'no') err("Connection limit exceeded! Your Passkey Has possibly been leaked");if ($valid[0] >= 3 && $seeder == 'yes') err("Connection limit exceeded!");$azz = mysql_fetch_assoc($rzz);$userid = $azz["id"];}//SELECT DATA FROM PEERS TABLE$torrentid = $torrent["id"];$torrentname = $torrent["name"];$torrentcategory = $torrent["category"];$fields = "seeder, UNIX_TIMESTAMP(last_action) AS ez, peer_id, ip, port, uploaded, downloaded, userid";$numpeers = $torrent["numpeers"];$limit = "";if ($numpeers > $rsize)$limit = "ORDER BY RAND() LIMIT $rsize";// ABC and CONNECTABLE issues FIX, swap commented line over//$res = mysql_query("SELECT $fields FROM peers WHERE torrent = $torrentid AND connectable = 'yes' $limit");$res = mysql_query("SELECT $fields FROM peers WHERE torrent = $torrentid $limit");//DO SOME BENC STUFF TO THE PEERS CONNECTION$resp = "d" . benc_str("interval") . "i" . $announce_interval . "e" . benc_str("peers") . "l";unset($self);while ($row = mysql_fetch_assoc($res)){$row["peer_id"] = hash_pad($row["peer_id"]);if ($row["peer_id"] === $peer_id){$userid = $row["userid"];$self = $row;continue;}$resp .= "d" .benc_str("ip") . benc_str($row["ip"]) .benc_str("peer id") . benc_str($row["peer_id"]) .benc_str("port") . "i" . $row["port"] . "e" ."e";}$resp .= "ee";$selfwhere = "torrent = $torrentid AND " . hash_where("peer_id", $peer_id);// FILL $SELF WITH DETAILS FROM PEERS TABLE (CONNECTING PEERS DETAILS)if (!isset($self)){$res = mysql_query("SELECT $fields FROM peers WHERE $selfwhere");$row = mysql_fetch_assoc($res);if ($row){$userid = $row["userid"];$self = $row;}}// END $SELF FILL// SNATCHED MOD - GET DATE TIME/OFFSET$dt = gmtime() - 180;//OFFSET$dt = sqlesc(get_date_time($dt));if (!isset($self))//IF PEER IS NOT IN PEERS TABLE DO THE WAIT TIME CHECK{if ($MEMBERSONLY_WAIT && $MEMBERSONLY){if ($left > 0 && $azz["class"] == 0 ){$gigs = $azz["uploaded"] / (1024*1024*1024);$elapsed = floor((gmtime() - $torrent["ts"]) / 3600);$ratio = (($azz["downloaded"] > 0) ? ($azz["uploaded"] / $azz["downloaded"]) : 1);if ($ratio == 0 && $gigs == 0) $wait = 24;elseif ($ratio < $RATIOA || $gigs < $GIGSA) $wait = $WAITA;elseif ($ratio < $RATIOB || $gigs < $GIGSB) $wait = $WAITB;elseif ($ratio < $RATIOC || $gigs < $GIGSC) $wait = $WAITC;elseif ($ratio < $RATIOD || $gigs < $GIGSD) $wait = $WAITD;else $wait = 0;if ($wait)if ($elapsed < $wait)err("Not authorized (" . ($wait - $elapsed) . "h) - READ THE FAQ! $SITEURL");}}}else{// IF WE DO HAVE PEERS DETAILS ($self) THEN WE UPDATE THE UP/DOWN STATS HERE//ANTI FLOOD$start = $self["ez"]; //last_action$end = time(); //now timeif ($end - $start < 60 && $event != "completed") // Flood time in secserr("Sorry, minimum announce interval = 60 sec.");//END ANTI FLOOD$upthis = max(0, $uploaded - $self["uploaded"]);$downthis = max(0, $downloaded - $self["downloaded"]);if (($upthis > 0 || $downthis > 0) && is_valid_id($userid)) // SEE IF THERE IS ANYTHING THATS GONE UP (LIVE STATS!){mysql_query("UPDATE users SET uploaded = uploaded + $upthis, downloaded = downloaded + $downthis WHERE id=$userid") or err("Tracker error 3");}}//END WAIT AND STATS UPDATE$updateset = array();////////////////// NOW WE DO THE TRACKER EVENT UPDATES ///////////////////if ($event == "stopped")// UPDATE "STOPPED" EVENT{if (isset($self))// DELETE PEER AND REMOVE SEEDER OR LEECHER{//UPDATE SNATCHEDmysql_query("UPDATE snatched SET seeder = 'no', connectable='no' WHERE torrent = $torrentid AND userid = $userid");mysql_query("DELETE FROM peers WHERE $selfwhere");if (mysql_affected_rows()){if ($self["seeder"] == "yes")$updateset[] = "seeders = seeders - 1";else$updateset[] = "leechers = leechers - 1";}}}else{if ($event == "completed")// UPDATE "COMPLETED" EVENT{//UPDATE SNATCHEDmysql_query("UPDATE snatched SET finished = 'yes', completedat = $dt WHERE torrent = $torrentid AND userid = $userid");$updateset[] = "times_completed = times_completed + 1";//if (is_valid_id($userid)){// UPDATE THE "WHO COMPLETED TABLE"$az = mysql_fetch_assoc($rz);mysql_query("INSERT INTO downloaded (torrent, user) VALUES ('$torrentid', '$userid')") or err(mysql_error());//}}//END COMPLETEDif (isset($self))// NO EVENT? THEN WE MUST BE A NEW PEER OR ARE NOW SEEDING A COMPLETED TORRENT{// NOW WE ARE SEEDING AFTER COMPLETED//SNATCH UPDATE$res=mysql_query("SELECT uploaded, downloaded FROM snatched WHERE torrent = $torrentid AND userid = $userid");$row = mysql_fetch_array($res);$sockres = @fsockopen($ip, $port, $errno, $errstr, 5);if (!$sockres)$connectable = "no";else{$connectable = "yes";@fclose($sockres);}$downloaded2=$downloaded - $self["downloaded"];$uploaded2=$uploaded - $self["uploaded"];mysql_query("UPDATE snatched SET uploaded = uploaded+$uploaded2, downloaded = downloaded+$downloaded2, port = $port, connectable = '$connectable', agent= " . sqlesc($agent) . ", to_go = $left, last_action = $dt, seeder = '$seeder' WHERE torrent = $torrentid AND userid = $userid");//END SNATCH UPDATEmysql_query("UPDATE peers SET ip = " . sqlesc($ip) . ", port = $port, uploaded = $uploaded, downloaded = $downloaded, to_go = $left, last_action = NOW(), client = " . sqlesc($agent) . ", seeder = '$seeder' WHERE $selfwhere");if (mysql_affected_rows() && $self["seeder"] != $seeder){if ($seeder == "yes"){$updateset[] = "seeders = seeders + 1";$updateset[] = "leechers = leechers - 1";} else {$updateset[] = "seeders = seeders - 1";$updateset[] = "leechers = leechers + 1";}}} else {if (portblacklisted($port))err("Port $port is blacklisted.");else{// WE ARE NOT A "COMPLETED" SEED, WE ARE A "NEW" SEEDER$sockres = @fsockopen($ip, $port, $errno, $errstr, 5);if (!$sockres)$connectable = "no";else{$connectable = "yes";@fclose($sockres);}}//SNATCHED MOD$res = mysql_query("SELECT torrent, userid FROM snatched WHERE torrent = $torrentid AND userid = $userid");$check = mysql_fetch_assoc($res);if (!$check)mysql_query("INSERT INTO snatched (torrent, torrentid, userid, port, startdat, last_action, agent, torrent_name, torrent_category) VALUES ($torrentid, $torrentid, $userid, $port, $dt, $dt, " . sqlesc($agent) . ", " . sqlesc($torrentname) . ", $torrentcategory)");//END SNATCHED$ret = mysql_query("INSERT INTO peers (connectable, torrent, peer_id, ip, port, uploaded, downloaded, to_go, started, last_action, seeder, userid, client, passkey) VALUES ('$connectable', $torrentid, " . sqlesc($peer_id) . ", " . sqlesc($ip) . ", $port, $uploaded, $downloaded, $left, NOW(), NOW(), '$seeder', $userid, " . sqlesc($agent) . ", " . sqlesc($passkey) . ")");if ($ret){if ($seeder == "yes")$updateset[] = "seeders = seeders + 1";else$updateset[] = "leechers = leechers + 1";}}}////////////////// END TRACKER EVENT UPDATES ///////////////////// SEEDED, LETS MAKE IT VISIBLE THENif ($seeder == "yes") {if ($torrent["banned"] != "yes") // DONT MAKE BANNED ONES VISIBLE$updateset[] = "visible = 'yes'";$updateset[] = "last_action = NOW()";}// NOW WE UPDATE THE TORRENT AS PER ABOVEif (count($updateset))mysql_query("UPDATE torrents SET " . join(",", $updateset) . " WHERE id = $torrentid");// NOW BENC THE DATA AND SEND TO CLIENT???benc_resp_raw($resp);exit();?>[/codebox]i missed a z off 2 vars
--------------------
TorrentialStorm ^^Click My Sig^^TorrentTrader IRC Channel: #TorrentTrader on irc.p2p-network.netTorrentialStorm IRC Channel: #TorrentialStorm on irc.p2p-network.netIf you want to know what made my sig click HERE____________________________________________________________STOP PM'ING ME FOR SUPPORT, USE THE FORUMS THAT'S WHAT THEY'RE HERE FOR.
Tab
View Member Profile
Add as Friend
Send Message
Find Member's Topics
Find Member's Posts
ipsmenu.register( "post-member-26294", '', 'popmenubutton-new', 'popmenubutton-new-out' );
Apr 28 2007, 12:05 AM
Post
#79
Advanced Member
Group: Premium
Posts: 62
Joined: 29-March 07
Member No.: 6,958
QUOTE(Torrential-Storm.co.uk @ Apr 26 2007, 01:36 PM) [snapback]26257[/snapback]fixed it:i missed a z off 2 vars Thanks TS. Has this been tested though? I'm hesitant to put it on my live site because I noticed a lot of the code has changed from the announce.php you posted a few posts up. For example, the code under"//GET DETAILS OF PEERS ANNOUNCE" is quite different in ur last 2 posts. So you sure you didn't change more than just the missing Zs off the vars?And I think you missed another "z":Find:CODE$az = mysql_fetch_assoc($rz);Replace with:CODE$az = mysql_fetch_assoc($rzz);
Torrential-Storm...
Torrential-Storm.co.uk
View Member Profile
Add as Friend
Send Message
Find Member's Topics
Find Member's Posts
ipsmenu.register( "post-member-26306", '', 'popmenubutton-new', 'popmenubutton-new-out' );
Apr 28 2007, 08:35 AM
Post
#80
Official Developer/Moderator
Group: Official Developer
Posts: 3,085
Joined: 27-September 05
From: http://www.TorrentialStorm.net
Member No.: 10
actually that line shouldn't be there and i forgot to uncomment some stuff i commented cause utorrent didn't like the gzipped data. and the code under "//GET DETAILS OF PEERS ANNOUNCE" i changed to something more readable, still does the same thing just easier to read/understand.[codebox]<?//// TORRENTTRADER ANNOUNCE V2 (WWW.TORRENTTRADER.ORG)// CHANGES: MODIFIED TO INCLUDE FUNCTIONS CALLED FROM FUNCTIONS.PHP AND BENC.PHP// INCLUDES: WAIT TIMES, LIVE STATS UPDATE, PORT BLOCKING, NEW GZIP OUTPUT, ANTI-BROWSER, FULL SNATCHED DETAILS//// LINE 303/304 UNCONNECTABLE POSSIBLE FIX, SIMPLY CHANGE THE COMMENTED SQL//// SUPPORT FOR OLD "WHO COMPLETED" MOD ON LINE 409-413////require_once("backend/config.php");//START FUNCTIONSfunction unesc($x) {if (get_magic_quotes_gpc())return stripslashes($x);return $x;}function is_valid_id($id){return is_numeric($id) && ($id > 0) && (floor($id) == $id);}function validip($ip){if (!empty($ip) && ip2long($ip)!=-1){$reserved_ips = array (array('0.0.0.0','2.255.255.255'),array('10.0.0.0','10.255.255.255'),array('127.0.0.0','127.255.255.255'),array('169.254.0.0','169.254.255.255'),array('172.16.0.0','172.31.255.255'),array('192.0.2.0','192.0.2.255'),array('192.168.0.0','192.168.255.255'),array('255.255.255.0','255.255.255.255'));foreach ($reserved_ips as $r){$min = ip2long($r[0]);$max = ip2long($r[1]);if ((ip2long($ip) >= $min) && (ip2long($ip) <= $max)) return false;}return true;}else return false;}function getip() {if (isset($_SERVER)) {if (isset($_SERVER['HTTP_X_FORWARDED_FOR']) && validip($_SERVER['HTTP_X_FORWARDED_FOR'])) {$ip = $_SERVER['HTTP_X_FORWARDED_FOR'];} elseif (isset($_SERVER['HTTP_CLIENT_IP']) && validip($_SERVER['HTTP_CLIENT_IP'])) {$ip = $_SERVER['HTTP_CLIENT_IP'];} else {$ip = $_SERVER['REMOTE_ADDR'];}} else {if (getenv('HTTP_X_FORWARDED_FOR') && validip(getenv('HTTP_X_FORWARDED_FOR'))) {$ip = getenv('HTTP_X_FORWARDED_FOR');} elseif (getenv('HTTP_CLIENT_IP') && validip(getenv('HTTP_CLIENT_IP'))) {$ip = getenv('HTTP_CLIENT_IP');} else {$ip = getenv('REMOTE_ADDR');}}return $ip;}function dbconn($autoclean = false) {global $mysql_host, $mysql_user, $mysql_pass, $mysql_db;if (!@mysql_connect($mysql_host, $mysql_user, $mysql_pass)){die('dbconn: mysql_connect: ' . mysql_error());}mysql_select_db($mysql_db)or die('dbconn: mysql_select_db: ' + mysql_error());}function hash_pad($hash) {return str_pad($hash, 20);}function hash_where($name, $hash) {$shhash = preg_replace('/ *$/s', "", $hash);return "($name = " . sqlesc($hash) . " OR $name = " . sqlesc($shhash) . ")";}function sqlesc($x) {return "'".mysql_real_escape_string($x)."'";}function err($msg){benc_resp(array("failure reason" => array(type => "string", value => $msg)));exit();}function benc($obj) {if (!is_array($obj) || !isset($obj["type"]) || !isset($obj["value"]))return;$c = $obj["value"];switch ($obj["type"]) {case "string":return benc_str($c);case "integer":return benc_int($c);case "list":return benc_list($c);case "dictionary":return benc_dict($c);default:return;}}function benc_str($s) {return strlen($s) . ":$s";}function benc_int($i) {return "i" . $i . "e";}function benc_list($a) {$s = "l";foreach ($a as $e) {$s .= benc($e);}$s .= "e";return $s;}function benc_dict($d) {$s = "d";$keys = array_keys($d);sort($keys);foreach ($keys as $k) {$v = $d[$k];$s .= benc_str($k);$s .= benc($v);}$s .= "e";return $s;}function benc_resp($d){benc_resp_raw(benc(array(type => "dictionary", value => $d)));}function benc_resp_raw($x) {header("Content-Type: text/plain");header("Pragma: no-cache");if ($_SERVER["HTTP_ACCEPT_ENCODING"] == "gzip") {header("Content-Encoding: gzip");echo gzencode($x, 9, FORCE_GZIP);} elseprint($x);}function gmtime(){return strtotime(get_date_time());}function get_date_time($timestamp = 0){if ($timestamp)return date("Y-m-d H:i:s", $timestamp);elsereturn gmdate("Y-m-d H:i:s");}function portblacklisted($port){// direct connectif ($port >= 411 && $port <= 413) return true;// bittorrent (AZUREUS)// if ($port >= 6881 && $port <= 6889) return true;// kazaaif ($port == 1214) return true;// gnutellaif ($port >= 6346 && $port <= 6347) return true;// emuleif ($port == 4662) return true;// winmxif ($port == 6699) return true;return false;}//////////////////////// NOW WE DO THE ANNOUNCE CODE ////////////////////////// BLOCK ACCESS WITH WEB BROWSERS$agent = $_SERVER["HTTP_USER_AGENT"];if (ereg("^Mozilla\\/", $agent) || ereg("^Opera\\/", $agent) || ereg("^Links ", $agent) || ereg("^Lynx\\/", $agent))err("torrent not registered with this tracker");//GET DETAILS OF PEERS ANNOUNCE$req = "info_hash:peer_id:port:uploaded:downloaded:left:!event:passkey";foreach (explode(":", $req) as $x){ if ($x[0] == "!") { $x = substr($x, 1); $opt = 1; } else $opt = 0; if (!isset($_GET[$x])) { if (!$opt) err("missing key ($x)"); continue; } $GLOBALS[$x] = unesc($_GET[$x]);}foreach (array("info_hash","peer_id") as $x){ if (strlen($GLOBALS[$x]) != 20) err("invalid $x (" . strlen($GLOBALS[$x]) . " - " . urlencode($GLOBALS[$x]) . ")");}$ip = getip();$rsize = 50;foreach(array("num want", "numwant", "num_want") as $k){if (isset($_GET[$k])){$rsize = 0 + $_GET[$k];break;}}//PORT CHECKif (!$port || $port > 0xffff)err("invalid port");//TRACKER EVENT CHECKif (!isset($event))$event = "";$seeder = ($left == 0) ? "yes" : "no";dbconn(false);// GET HASH AND SELECT FROM DB$usehash = false;if (isset($_GET["info_hash"])){if (get_magic_quotes_gpc())$info_hash = stripslashes($_GET["info_hash"]);else$info_hash = $_GET["info_hash"];if (strlen($info_hash) == 20)$info_hash = bin2hex($info_hash);else if (strlen($info_hash) != 40)err("Invalid info hash value.");$info_hash = strtolower($info_hash);$usehash = true;}if ($usehash)$sql = mysql_query("SELECT id, name, category, banned, seeders + leechers AS numpeers, UNIX_TIMESTAMP(added) AS ts FROM torrents WHERE info_hash='$info_hash'") or err("$info_hash - Database error. Cannot complete request.");else$sql = mysql_query("SELECT id, name, category, banned, seeders + leechers AS numpeers, UNIX_TIMESTAMP(added) AS ts FROM torrents ORDER BY info_hash") or err("Database error. Cannot complete request.");//DOES THE TORRENT EXIST?$torrent = mysql_fetch_array($sql);if (!$torrent)err("torrent not found on this tracker - hash = " . $info_hash);//IS THE IP REGISTERED, IF SO CALL USER ID$userid = 0;if ($MEMBERSONLY){$rzz = mysql_query("SELECT id, uploaded, downloaded, class FROM users WHERE passkey=".sqlesc($passkey)." AND enabled = 'yes' ORDER BY last_access DESC LIMIT 1") or err("Tracker error 2");if (mysql_num_rows($rzz) < 1)err("Unrecognized host ($ip - $passkey). Please go to $SITEURL to sign-up or login.");$valid = @mysql_fetch_row(@mysql_query("SELECT COUNT(*) FROM peers WHERE torrent=$torrentid AND passkey=" . sqlesc($passkey) . ""));if ($valid[0] >= 1 && $seeder == 'no') err("Connection limit exceeded! Your Passkey Has possibly been leaked");if ($valid[0] >= 3 && $seeder == 'yes') err("Connection limit exceeded!");$azz = mysql_fetch_assoc($rzz);$userid = $azz["id"];}//SELECT DATA FROM PEERS TABLE$torrentid = $torrent["id"];$torrentname = $torrent["name"];$torrentcategory = $torrent["category"];$fields = "seeder, UNIX_TIMESTAMP(last_action) AS ez, peer_id, ip, port, uploaded, downloaded, userid";$numpeers = $torrent["numpeers"];$limit = "";if ($numpeers > $rsize)$limit = "ORDER BY RAND() LIMIT $rsize";// ABC and CONNECTABLE issues FIX, swap commented line over//$res = mysql_query("SELECT $fields FROM peers WHERE torrent = $torrentid AND connectable = 'yes' $limit");$res = mysql_query("SELECT $fields FROM peers WHERE torrent = $torrentid $limit");//DO SOME BENC STUFF TO THE PEERS CONNECTION$resp = "d" . benc_str("interval") . "i" . $announce_interval . "e" . benc_str("peers") . "l";unset($self);while ($row = mysql_fetch_assoc($res)){$row["peer_id"] = hash_pad($row["peer_id"]);if ($row["peer_id"] === $peer_id){$userid = $row["userid"];$self = $row;continue;}$resp .= "d" .benc_str("ip") . benc_str($row["ip"]) .benc_str("peer id") . benc_str($row["peer_id"]) .benc_str("port") . "i" . $row["port"] . "e" ."e";}$resp .= "ee";$selfwhere = "torrent = $torrentid AND " . hash_where("peer_id", $peer_id);// FILL $SELF WITH DETAILS FROM PEERS TABLE (CONNECTING PEERS DETAILS)if (!isset($self)){$res = mysql_query("SELECT $fields FROM peers WHERE $selfwhere");$row = mysql_fetch_assoc($res);if ($row){$userid = $row["userid"];$self = $row;}}// END $SELF FILL// SNATCHED MOD - GET DATE TIME/OFFSET$dt = gmtime() - 180;//OFFSET$dt = sqlesc(get_date_time($dt));if (!isset($self))//IF PEER IS NOT IN PEERS TABLE DO THE WAIT TIME CHECK{if ($MEMBERSONLY_WAIT && $MEMBERSONLY){if ($left > 0 && $azz["class"] == 0 ){$gigs = $azz["uploaded"] / (1024*1024*1024);$elapsed = floor((gmtime() - $torrent["ts"]) / 3600);$ratio = (($azz["downloaded"] > 0) ? ($azz["uploaded"] / $azz["downloaded"]) : 1);if ($ratio == 0 && $gigs == 0) $wait = 24;elseif ($ratio < $RATIOA || $gigs < $GIGSA) $wait = $WAITA;elseif ($ratio < $RATIOB || $gigs < $GIGSB) $wait = $WAITB;elseif ($ratio < $RATIOC || $gigs < $GIGSC) $wait = $WAITC;elseif ($ratio < $RATIOD || $gigs < $GIGSD) $wait = $WAITD;else $wait = 0;if ($wait)if ($elapsed < $wait)err("Not authorized (" . ($wait - $elapsed) . "h) - READ THE FAQ! $SITEURL");}}}else{// IF WE DO HAVE PEERS DETAILS ($self) THEN WE UPDATE THE UP/DOWN STATS HERE//ANTI FLOOD$start = $self["ez"]; //last_action$end = time(); //now timeif ($end - $start < 60 && $event != "completed") // Flood time in secserr("Sorry, minimum announce interval = 60 sec.");//END ANTI FLOOD$upthis = max(0, $uploaded - $self["uploaded"]);$downthis = max(0, $downloaded - $self["downloaded"]);if (($upthis > 0 || $downthis > 0) && is_valid_id($userid)) // SEE IF THERE IS ANYTHING THATS GONE UP (LIVE STATS!){mysql_query("UPDATE users SET uploaded = uploaded + $upthis, downloaded = downloaded + $downthis WHERE id=$userid") or err("Tracker error 3");}}//END WAIT AND STATS UPDATE$updateset = array();////////////////// NOW WE DO THE TRACKER EVENT UPDATES ///////////////////if ($event == "stopped")// UPDATE "STOPPED" EVENT{if (isset($self))// DELETE PEER AND REMOVE SEEDER OR LEECHER{//UPDATE SNATCHEDmysql_query("UPDATE snatched SET seeder = 'no', connectable='no' WHERE torrent = $torrentid AND userid = $userid");mysql_query("DELETE FROM peers WHERE $selfwhere");if (mysql_affected_rows()){if ($self["seeder"] == "yes")$updateset[] = "seeders = seeders - 1";else$updateset[] = "leechers = leechers - 1";}}}else{if ($event == "completed")// UPDATE "COMPLETED" EVENT{//UPDATE SNATCHEDmysql_query("UPDATE snatched SET finished = 'yes', completedat = $dt WHERE torrent = $torrentid AND userid = $userid");$updateset[] = "times_completed = times_completed + 1";//if (is_valid_id($userid)){// UPDATE THE "WHO COMPLETED TABLE"mysql_query("INSERT INTO downloaded (torrent, user) VALUES ('$torrentid', '$userid')") or err(mysql_error());//}}//END COMPLETEDif (isset($self))// NO EVENT? THEN WE MUST BE A NEW PEER OR ARE NOW SEEDING A COMPLETED TORRENT{// NOW WE ARE SEEDING AFTER COMPLETED//SNATCH UPDATE$res=mysql_query("SELECT uploaded, downloaded FROM snatched WHERE torrent = $torrentid AND userid = $userid");$row = mysql_fetch_array($res);$sockres = @fsockopen($ip, $port, $errno, $errstr, 5);if (!$sockres)$connectable = "no";else{$connectable = "yes";@fclose($sockres);}$downloaded2=$downloaded - $self["downloaded"];$uploaded2=$uploaded - $self["uploaded"];mysql_query("UPDATE snatched SET uploaded = uploaded+$uploaded2, downloaded = downloaded+$downloaded2, port = $port, connectable = '$connectable', agent= " . sqlesc($agent) . ", to_go = $left, last_action = $dt, seeder = '$seeder' WHERE torrent = $torrentid AND userid = $userid");//END SNATCH UPDATEmysql_query("UPDATE peers SET ip = " . sqlesc($ip) . ", port = $port, uploaded = $uploaded, downloaded = $downloaded, to_go = $left, last_action = NOW(), client = " . sqlesc($agent) . ", seeder = '$seeder' WHERE $selfwhere");if (mysql_affected_rows() && $self["seeder"] != $seeder){if ($seeder == "yes"){$updateset[] = "seeders = seeders + 1";$updateset[] = "leechers = leechers - 1";} else {$updateset[] = "seeders = seeders - 1";$updateset[] = "leechers = leechers + 1";}}} else {if (portblacklisted($port))err("Port $port is blacklisted.");else{// WE ARE NOT A "COMPLETED" SEED, WE ARE A "NEW" SEEDER$sockres = @fsockopen($ip, $port, $errno, $errstr, 5);if (!$sockres)$connectable = "no";else{$connectable = "yes";@fclose($sockres);}}//SNATCHED MOD$res = mysql_query("SELECT torrent, userid FROM snatched WHERE torrent = $torrentid AND userid = $userid");$check = mysql_fetch_assoc($res);if (!$check)mysql_query("INSERT INTO snatched (torrent, torrentid, userid, port, startdat, last_action, agent, torrent_name, torrent_category) VALUES ($torrentid, $torrentid, $userid, $port, $dt, $dt, " . sqlesc($agent) . ", " . sqlesc($torrentname) . ", $torrentcategory)");//END SNATCHED$ret = mysql_query("INSERT INTO peers (connectable, torrent, peer_id, ip, port, uploaded, downloaded, to_go, started, last_action, seeder, userid, client, passkey) VALUES ('$connectable', $torrentid, " . sqlesc($peer_id) . ", " . sqlesc($ip) . ", $port, $uploaded, $downloaded, $left, NOW(), NOW(), '$seeder', $userid, " . sqlesc($agent) . ", " . sqlesc($passkey) . ")");if ($ret){if ($seeder == "yes")$updateset[] = "seeders = seeders + 1";else$updateset[] = "leechers = leechers + 1";}}}////////////////// END TRACKER EVENT UPDATES ///////////////////// SEEDED, LETS MAKE IT VISIBLE THENif ($seeder == "yes") {if ($torrent["banned"] != "yes") // DONT MAKE BANNED ONES VISIBLE$updateset[] = "visible = 'yes'";$updateset[] = "last_action = NOW()";}// NOW WE UPDATE THE TORRENT AS PER ABOVEif (count($updateset))mysql_query("UPDATE torrents SET " . join(",", $updateset) . " WHERE id = $torrentid");// NOW BENC THE DATA AND SEND TO CLIENT???benc_resp_raw($resp);exit();?>[/codebox]^^ that's what i just used and it works fine.
--------------------
TorrentialStorm ^^Click My Sig^^TorrentTrader IRC Channel: #TorrentTrader on irc.p2p-network.netTorrentialStorm IRC Channel: #TorrentialStorm on irc.p2p-network.netIf you want to know what made my sig click HERE____________________________________________________________STOP PM'ING ME FOR SUPPORT, USE THE FORUMS THAT'S WHAT THEY'RE HERE FOR.
« Next Oldest
· PREMIUM Hacks & Modifications
· Next Newest »
6 Pages
« < 2 3 4 5 6 >
//
Fast Reply
Enable email notification of replies |
Enable Smilies |
Enable Signature
Forum Home
Search
Help
Main
|-- Site News Updates and Rules
|-- General Chat
|-- Your Tracker
TorrentTrader
|-- Technical Support
|-- Mod Requests
|-- Hacks And Modifications
|-- Themes & Styles
|-- TT4XBT
VBTT
|-- VBTT Version 1.x
|---- Releases
|---- Support
|---- Mods
|-- VBTT Version 2.x
|---- Releases
|---- Support
|---- Mods
|-- VBTT Version 3.x
|---- Releases
|---- Support
|---- Mods
TorrentTrader PREMIUM
|-- PREMIUM Support
|-- PREMIUM Hacks & Modifications
|-- PREMIUM BETA Source Codes
|-- PREMIUM Themes
Display Mode: Standard ·
Switch to: Linear+ ·
Switch to: Outline
Track this topic ·
Email this topic ·
Print this topic ·
Subscribe to this forum
//
IPB 2.2.0 Default
English
Lo-Fi Version
Time is now: 22nd August 2007 - 12:51 PM
//
Powered By IP.Board
2.3.1 © 2007 IPS, Inc.
Licensed to: TorrentTrader.org
Wyszukiwarka
Podobne podstrony:
passkey system 1 2 page 5passkey system 1 2 page 6passkey system 1 2 page 3 htmpasskey system 1 2 page 2passkey system 1 2Passkey System v1 2, Add Passkey function to your siteTorrentTrader Classic Edition Passkey System v1 1Hero System Two Page Combat Summarywylaczenie aktualizacji systemu XPEV (Electric Vehicle) and Hybrid Drive Systemspage$system ósemkowyANALIZA KOMPUTEROWA SYSTEMÓW POMIAROWYCH — MSEInstalacja systemu Windows z pendrive awięcej podobnych podstron