As promised...
Asp.net 2.0 default.aspx that I use to manage the downloads...
It has references to mysql and quiksoft.freesmtp Feel free to remove them
if you are not interested in getting emails and pulling information from a
database. Following the default.aspx code is the web.config code.
I think that is it. If anyone has any questions please feel free to ask.
-Scott
''''''''''''''''''''''''''''''''''''''''''''''
'''''''''' begin default.aspx ''''''''''''''''
''''''''''''''''''''''''''''''''''''''''''''''
<%@ Page Language="VB" %>
<%@ Import Namespace="System" %>
<%@ Import Namespace="System.Data" %>
<%@ Import Namespace="MySql.Data.MySqlClient" %>
<%@ Import Namespace="Quiksoft.FreeSMTP" %>
<script runat="server">
Protected Sub Page_Load(ByVal sender As Object, ByVal e As
System.EventArgs) Handles Me.Load
Try
Dim strHost As String = Request.ServerVariables("HTTP_HOST")
Dim strRequestedFile As String
strRequestedFile = Request.QueryString("f")
Dim strSQL As String
strSQL = "SELECT * from database where serverip = '" & strHost &
"'"
Dim strEmailText As String = ""
strEmailText &= "************File Requested************" &
vbCrLf
strEmailText &= "File Requested: " & strRequestedFile & vbCrLf
strEmailText &= "From Server: " & strHost & vbCrLf
'strEmailText &= "From Server: " & strRefererIP & ":" &
strRefererPort & vbCrLf
strEmailText &= "Query String: " & strSQL & vbCrLf
strEmailText &= "**********End File Requested**********" &
vbCrLf & vbCrLf
strEmailText &= "***********Server Variables***********" &
vbCrLf
Dim sName As String
For Each sName In Request.ServerVariables
strEmailText &= sName & " === " &
Request.ServerVariables(sName) & vbCrLf
Next
strEmailText &= "*********End Server Variables*********" &
vbCrLf
'SendEmail("Your Name", "[EMAIL PROTECTED]", "Helper Name",
"[EMAIL PROTECTED]", "sv_downloadurl debugging", strEmailText, , )
'Check for appropriate user agent
If Request.ServerVariables("HTTP_USER_AGENT") <> "Half-Life 2"
And Request.ServerVariables("HTTP_USER_AGENT") <> "Half-Life" Then
'SendEmail("Your Name", "[EMAIL PROTECTED]", "Helper Name",
"[EMAIL PROTECTED]", "sv_downloadurl unauthorized useragent",
strEmailText, , )
Response.Clear()
'Response.Status = "Not Found"
Response.StatusCode = 404
Response.Flush()
Exit Sub
End If
Dim ds As DataSet
ds = GetDS(strSQL)
' ds holds information about what directory the server is
located
' and the mod type so that I know where to serve the files from
' you would just use the returned dataset below where I use
"Y:\cs1.6\cstrike"
' an example might be ds.tables(0).rows(0)("serverdir") & "\" &
ds.tables(0).rows(0)("modtype")
If ds.Tables(0).Rows.Count <> 1 Then
Response.Clear()
'Response.Status = "Not Found"
Response.StatusCode = 404
Response.Flush()
SendEmail("Your Name", "[EMAIL PROTECTED]", "Helper Name",
"[EMAIL PROTECTED]", "sv_downloadurl server not found", strEmailText, , )
Exit Sub
Else
If Not System.IO.File.Exists("Y:\cs1.6\cstrike" &
strRequestedFile.Replace("/", "\")) Then
Response.Clear()
'Response.Status = "Not Found"
Response.StatusCode = 404
Response.Flush()
Exit Sub
Else
'if file approved download
If ApprovedDownload(strRequestedFile) Then
Dim fileInfo As System.IO.FileInfo = New
System.IO.FileInfo("Y:\cs1.6\cstrike" & strRequestedFile.Replace("/", "\"))
Response.Clear()
Response.AddHeader("Content-Disposition",
"attachment; filename=" & fileInfo.Name)
Response.AddHeader("Content-Length",
fileInfo.Length.ToString())
Response.ContentType = "application/octet-stream"
Response.WriteFile(fileInfo.FullName)
Else
If DisapprovedDownload(strRequestedFile) Then
SendEmail("Your Name", "[EMAIL PROTECTED]",
"Helper Name", "[EMAIL PROTECTED]", "sv_downloadurl unapproved file",
strEmailText, , )
Response.Clear()
'Response.Status = "Not Found"
Response.StatusCode = 404
Response.Flush()
Exit Sub
Else
SendEmail("Your Name", "[EMAIL PROTECTED]",
"Helper Name", "[EMAIL PROTECTED]", "sv_downloadurl 404", strEmailText, ,
)
Response.Clear()
'Response.Status = "Not Found"
Response.StatusCode = 404
Response.Flush()
Exit Sub
End If
End If
End If
End If
Catch ex As Exception
SendEmail("Your Name", "[EMAIL PROTECTED]", "Helper Name",
"[EMAIL PROTECTED]", "sv_downloadurl error", ex.ToString, , )
End Try
End Sub
Function ApprovedDownload(ByVal strFileName As String) As Boolean
If
System.Configuration.ConfigurationManager.AppSettings("approvedtypes").Index
Of(Right(strFileName, 4)) <> 0 Then
Return True
Else
Return False
End If
End Function
Function DisapprovedDownload(ByVal strFileName As String) As Boolean
If
System.Configuration.ConfigurationManager.AppSettings("disapprovedtypes").In
dexOf(Right(strFileName, 4)) <> 0 Then
Return False
Else
Return True
End If
End Function
Function ExecuteSQL(ByVal Query As String) As Integer
Dim myConnection As MySqlConnection
Dim myCommand As MySqlCommand
Dim intReturn As Integer
myConnection = New MySqlConnection
myConnection.ConnectionString = "myconnstring"
Try
myConnection.Open()
myCommand = New MySqlCommand(Query, myConnection)
intReturn = myCommand.ExecuteNonQuery
myConnection.Close()
Catch exc As System.Exception
Throw exc
Finally
If myConnection.State = ConnectionState.Open Then
myConnection.Close()
End Try
End Function
Function GetDS(ByVal Query As String) As DataSet
'Dim cnn As MySqlConnection
'Dim rs As MySqlDataAdapter
'Dim ds As DataSet
'cnn = New MySqlConnection
'cnn.ConnectionString = strConnString
'cnn.Open()
'cnn.Close()
Dim myConnection As MySqlConnection
Dim myDataAdapter As MySqlDataAdapter
Dim ds As New DataSet
myConnection = New MySqlConnection
myConnection.ConnectionString = "myconnstring"
Try
myConnection.Open()
myDataAdapter = New MySqlDataAdapter(Query, myConnection)
myDataAdapter.Fill(ds)
myConnection.Close()
Catch exc As System.Exception
Throw exc
Finally
If myConnection.State = ConnectionState.Open Then
myConnection.Close()
End Try
Return ds
End Function
Public Sub SendEmail(ByVal ToName As String, ByVal ToEmail As String,
ByVal FromName As String, ByVal FromEmail As String, ByVal Subject As
String, ByVal TextBody As String, Optional ByVal HtmlBody As String = "",
Optional ByVal Xref As String = "")
'Create the EmailMessage object
Dim msgObj As New EmailMessage
'Specify from address and display name
msgObj.From.Email = FromEmail
msgObj.From.Name = FromName
'Add a normal recipient
msgObj.Recipients.Add(ToEmail, ToName, RecipientType.To)
'Specify the subject
msgObj.Subject = Subject
'Add an HTML body part
If HtmlBody <> "" Then msgObj.BodyParts.Add("<html><body>" &
HtmlBody & "</body></html>", BodyPartFormat.HTML)
'Add a text body part to server as alternative text for non HTML
mail readers
msgObj.BodyParts.Add(TextBody, BodyPartFormat.Plain)
'Add an attachment
'msgObj.Attachments.Add("c:\attachment.txt")
'Create the SMTP object using the constructor to specify the mail
server
Dim smtpObj As New SMTP("localhost")
'Send the message
smtpObj.Send(msgObj)
End Sub
</script>
''''''''''''''''''''''''''''''''''''''''''''''
'''''''''''' end default.aspx ''''''''''''''''
''''''''''''''''''''''''''''''''''''''''''''''
''''''''''''''''''''''''''''''''''''''''''''''
'''''''''''' begin web.config ''''''''''''''''
''''''''''''''''''''''''''''''''''''''''''''''
<?xml version="1.0"?>
<!--
Note: As an alternative to hand editing this file you can use the
web admin tool to configure settings for your application. Use
the Website->Asp.Net Configuration option in Visual Studio.
A full list of settings and comments can be found in
machine.config.comments usually located in
\Windows\Microsoft.Net\Framework\v2.x\Config
-->
<configuration>
<appSettings>
<add key="approvedtypes" value="txt,bsp,wav,tga,mdl,wad,bz2,dem" />
<add key="disapprovedtypes" value="cfg" />
</appSettings>
<connectionStrings/>
<system.web>
<!--
Set compilation debug="true" to insert debugging
symbols into the compiled page. Because this
affects performance, set this value to true only
during development.
Visual Basic options:
Set strict="true" to disallow all data type conversions
where data loss can occur.
Set explicit="true" to force declaration of all variables.
-->
<compilation debug="false" strict="false" explicit="true"/>
<pages>
<namespaces>
<clear/>
<add namespace="System"/>
<add namespace="System.Collections"/>
<add
namespace="System.Collections.Specialized"/>
<add namespace="System.Configuration"/>
<add namespace="System.Text"/>
<add
namespace="System.Text.RegularExpressions"/>
<add namespace="System.Web"/>
<add namespace="System.Web.Caching"/>
<add namespace="System.Web.SessionState"/>
<add namespace="System.Web.Security"/>
<add namespace="System.Web.Profile"/>
<add namespace="System.Web.UI"/>
<add namespace="System.Web.UI.WebControls"/>
<add
namespace="System.Web.UI.WebControls.WebParts"/>
<add
namespace="System.Web.UI.HtmlControls"/>
</namespaces>
</pages>
<!--
The <authentication> section enables configuration
of the security authentication mode used by
ASP.NET to identify an incoming user.
-->
<authentication mode="Windows"/>
<!--
The <customErrors> section enables configuration
of what to do if/when an unhandled error occurs
during the execution of a request. Specifically,
it enables developers to configure html error pages
to be displayed in place of a error stack trace.
-->
<customErrors mode="Off" defaultRedirect="GenericErrorPage.htm">
<error statusCode="403" redirect="NoAccess.htm" />
<error statusCode="404" redirect="FileNotFound.htm" />
</customErrors>
</system.web>
</configuration>
''''''''''''''''''''''''''''''''''''''''''''''
'''''''''''''' end web.config ''''''''''''''''
''''''''''''''''''''''''''''''''''''''''''''''
> -----Original Message-----
> From: [EMAIL PROTECTED]
> [mailto:[EMAIL PROTECTED] On Behalf Of Scott Tuttle
> Sent: Friday, August 18, 2006 11:59 AM
> To: [email protected]
> Subject: RE: [hlds] Maps not downloading
>
> Well I use it on multiple servers and it gets server
> directory information
> from a mysql database, based on the requested
> http://game.server.i.p . I
> will have to sanatize it a bit so that someone could use it
> by hardcoding
> the game server path into it.
>
> I will see what I can do this weekend.
>
> > -----Original Message-----
> > From: [EMAIL PROTECTED]
> > [mailto:[EMAIL PROTECTED] On Behalf Of cbass
> > Sent: Friday, August 18, 2006 11:28 AM
> > To: [email protected]
> > Subject: RE: [hlds] Maps not downloading
> >
> > Since your showing cool ASPX coding, you want to share?
> > -----Original message-----
> > From: "Scott Tuttle" [EMAIL PROTECTED]
> > Date: Fri, 18 Aug 2006 10:07:38 -0400
> > To: [email protected]
> > Subject: RE: [hlds] Maps not downloading
> >
> > > What I have is an aspx page in my download url
> > >
> > > sv_downloadurl "http://game.server.i.p/?f="
> > >
> > > When the server gets a request
> > default.aspx?f=/maps/de_westwood.bsp for
> > > example, I stream out the /maps/de_westwood.bsp from the
> game server
> > > directory. I limit the files that can be streamed by
> > coding the "approved
> > > file types" in my aspx file. For example, I allow
> > > txt,bsp,wav,tga,mdl,wad,bz2,dem. Any other requested file
> > like /server.cfg
> > > would return a 404 error in the code.
> > >
> > > I do not have to move any files. Your server will not lag
> > if you have
> > > enough bandwidth.
> > >
> > > > -----Original Message-----
> > > > From: [EMAIL PROTECTED]
> > > > [mailto:[EMAIL PROTECTED] On Behalf Of
> > Dave Williams
> > > > Sent: Friday, August 18, 2006 2:53 AM
> > > > To: [email protected]
> > > > Subject: Re: [hlds] Maps not downloading
> > > >
> > > > i personally think that it was moving the map foldet to
> > the virtual
> > > > directory. the true path to my sv_downloadurl folder is
> > > > http://www.noquestionsasked.co.uk/httpdocs/sv_downloadurl
> > but it shows
> > > > up on the internet as
> > http://www.noquestionsasked.co.uk/sv_downloadurl
> > > > (btw don't try and access it as i have turned off directory
> > > > listing. so
> > > > it will just error out on you).
> > > >
> > > > i'm not too hot with iis. i get my webserver host to worry
> > > > about that. i
> > > > just thought i mention your setup now sounds similar to mine.
> > > >
> > > > Valdimar Kristjansson wrote:
> > > > > Hi Frazer,
> > > > >
> > > > > As usual I'm amazed at the level of help.
> > > > > Followed the instructions and voila, I'm up and running :)
> > > > >
> > > > > There are a few things that could have been the cause of my
> > > > problems:
> > > > >
> > > > > 1. My MIME types weren't described as application
> > (don't know if it
> > > > > matters)
> > > > >
> > > > > 2. I hadn't allowed scripts on the virtual directory
> > (it's off by
> > > > > default)
> > > > >
> > > > > 3. I changed my sv_downloadurl to
> > > > http://myIP/MyVirtualDirectory/hl2mp
> > > > > It might be that the hl2mp directory within the
> > virtual directory
> > > > > did the trick.
> > > > > I just put the maps folder in my virtual directory.
> > > > >
> > > > >
> > > > > This can thus be thought of as possible problems for
> > > > allowing downloads
> > > > > with IIS :)
> > > > >
> > > > >
> > > > > See Frazers guide below for the solution.
> > > > >
> > > > > Valdimar Kristjansson, CTO
> > > > > 00 (+354) 693 2062_
> > > > > [EMAIL PROTECTED] <mailto:[EMAIL PROTECTED]>;
> > > > _www.eleanetwork.com_
> > > > > <http://www.eleanetwork.com/>
> > > > >
> > > > > This communication is solely intended for the
> > addressee, it may be
> > > > > confidential and it is not for third party distribution.
> > > > >
> > > > >
> > > > > Frazer wrote:
> > > > >> Select the web site you want share the directory on.
> > Usually, the
> > > > >> Default
> > > > >> Web Site is fine.
> > > > >>
> > > > >> Press the "Add" button to create an IIS virtual
> > directory and alias
> > > > >> name.
> > > > >>
> > > > >> Enter "svdl" for the Alias name. Ensure Read access is
> > > > selected and
> > > > >> that
> > > > >> Scripts is selected for Application Permissions.
> > Press "OK" twice.
> > > > >>
> > > > >> Open up the IIS Management console.
> > > > >>
> > > > >> Select the new svdl virtual directory in the tree view
> > > > under Default Web
> > > > >> Site (or wherever you put it). View the properties
> > for the virtual
> > > > >> directory.
> > > > >>
> > > > >> Go to the Directory Security tab. Press the Edit...
> > button in the
> > > > >> Authentication and access control section - and select
> > > > Enable anonymous
> > > > >> access. Leave Integrated Windows Authentication
> > checked - no other
> > > > >> options
> > > > >> should be checked. Press "OK"
> > > > >>
> > > > >> Go to the HTTP Headers tab. Press the MIME Types...
> > > > button. Add the
> > > > >> following MIME types:
> > > > >>
> > > > >> Extension: .ain MIME Type: application
> > > > >> Extension: .bsp MIME Type: application
> > > > >> Extension: .bz2 MIME Type: application (this last one
> > > > for compressed
> > > > >> maps)
> > > > >>
> > > > >> Not sure if it is necessary - but an IISRESET at this
> > > > stage eases the
> > > > >> nerves
> > > > >> of us paranoids.
> > > > >>
> > > > >> Create the following sub-directory structure within your
> > > > svdl directory.
> > > > >> (assuming D:\svdl):
> > > > >>
> > > > >> D:\svdl\dod\maps
> > > > >> D:\svdl\hl2mp\maps
> > > > >> etc...
> > > > >>
> > > > >> This is largely a matter of preference - but whatever
> > structure and
> > > > >> convention you use, you need to be consistent with your
> > > > sv_download cvar
> > > > >> setting.
> > > > >>
> > > > >> Assuming you use the above structure, place your game
> > maps in the
> > > > >> appropriate game map directory. From this point
> > forward, I will
> > > > >> assume you
> > > > >> are working with hl2dm. Your maps should all have the
> > > > extension .bsp
> > > > >> (or
> > > > >> bsp.bz2, if they are compressed with bzip2. - recommended
> > > > - and yes,
> > > > >> you
> > > > >> must specify the entire "bsp.bz2").
> > > > >>
> > > > >> Make sure you have files, with matching names, for all the
> > > > maps in your
> > > > >> rotation.
> > > > >>
> > > > >> In the server.cfg file for your game, specify the
> > > > following two CVars:
> > > > >>
> > > > >> sv_allowdownload "1"
> > > > >> sv_downloadurl "http://yourwebserver.woot/svdl/dod/"
> > > > >>
> > > > >> <shamelessPlug>
> > > > >>
> > > > >> If you are using ogsWatcher, specify the following
> > > > CVar tags,
> > > > >> in the
> > > > >> <CVars> section of your game config:
> > > > >>
> > > > >> <CVar Name="sv_allowdownload" Value="1" />
> > > > >> <CVar Name="sv_downloadurl"
> > > > >> Value="http://yourwebserver.woot/svdl/dod/" />
> > > > >>
> > > > >> </shamelessPlug>
> > > > >>
> > > > >> Start your game server in your preferred fashion. Map
> > downloading
> > > > >> should be
> > > > >> working.
> > > > >>
> > > > >> To test: changelevel your server to some custom map
> > that your game
> > > > >> client PC
> > > > >> does not have. Connect and see if it downloads.
> > > > >>
> > > > >> Hope this helps.
> > > > >>
> > > > >>
> > > > >> Frazer
> > > > >>
> > > > >> -----Original Message-----
> > > > >> From: [EMAIL PROTECTED]
> > > > >> [mailto:[EMAIL PROTECTED] On Behalf
> > Of Valdimar
> > > > >> Kristjansson
> > > > >> Sent: Thursday, August 17, 2006 4:23 PM
> > > > >> To: [email protected]
> > > > >> Subject: Re: [hlds] Maps not downloading
> > > > >>
> > > > >> I even tried adding .* to the MIME but no luck
> > > > >>
> > > > >> Valdimar Kristjansson, CTO
> > > > >> 00 (+354) 693 2062_
> > > > >> [EMAIL PROTECTED] <mailto:[EMAIL PROTECTED]>;
> > > > _www.eleanetwork.com_
> > > > >> <http://www.eleanetwork.com/>
> > > > >>
> > > > >> This communication is solely intended for the
> > addressee, it may be
> > > > >> confidential and it is not for third party distribution.
> > > > >>
> > > > >>
> > > > >> Valdimar Kristjansson wrote:
> > > > >>
> > > > >>> Thanks for the link Ian, but nothing in there is new to
> > > > me and it's
> > > > >>> still not working.
> > > > >>>
> > > > >>> I added .bsp , .ain and .bz2 to the MIME types in IIS
> > and now the
> > > > >>> address works in IE/FF e.g.
> > > > >>> http://www.eleanetwork.com/HLMaps/dm_agora.bsp but
> > the game still
> > > > >>> refuses to connect.
> > > > >>>
> > > > >>> This is the error I get:
> > > > >>> Missing map Maps/dm_agora.bsp disconnected (why is it
> > > > referring to the
> > > > >>> maps folder instead of HLmaps?)
> > > > >>>
> > > > >>> It's strange though that when I try to connect the
> > > > progressbar moves
> > > > >>> beyond the bsp file and stops on the .ain file.
> > > > >>> Also all the ain files are 1 kb and all of them seem to
> > > > contain only
> > > > >>> #, is that ok?
> > > > >>>
> > > > >>> >From what I've been reading from the forums it seems
> > that this
> > > > >>> sv_downloadurl isn't neccessary except for if you want to
> > > > download the
> > > > >>> maps from somewhere else than your server. I have all of
> > > > the maps on
> > > > >>> my server and this new address is on the same server
> > as the game
> > > > >>> server. It doesn't even work to download them without the
> > > > >>> sv_downloadurl so I'm wondering if this is still a port
> > > > problem. Could
> > > > >>> it be that maps and such are sent through another
> > port than 27015?
> > > > >>>
> > > > >>> I just tried disabling sv_allowdownload, sv_allowUpload and
> > > > >>> sv_downloadurl and the progressbar still seems to start
> > > > the download
> > > > >>> as before, although with the same consequences (the
> > > > progressbar label
> > > > >>> also says it's downloading a bz2 file but I don't have
> > > > any of those).
> > > > >>>
> > > > >>> Thanks,
> > > > >>> Valdimar Kristjansson, CTO
> > > > >>> 00 (+354) 693 2062_
> > > > >>> [EMAIL PROTECTED] <mailto:[EMAIL PROTECTED]>;
> > > > >>> _www.eleanetwork.com_ <http://www.eleanetwork.com/>
> > > > >>>
> > > > >>> This communication is solely intended for the
> > addressee, it may be
> > > > >>> confidential and it is not for third party distribution.
> > > > >>>
> > > > >>
> > > > >> _______________________________________________
> > > > >> To unsubscribe, edit your list preferences, or view the
> > > > list archives,
> > > > >> please visit:
> > > > >> http://list.valvesoftware.com/mailman/listinfo/hlds
> > > > >>
> > > > >>
> > > > >> _______________________________________________
> > > > >> To unsubscribe, edit your list preferences, or view the list
> > > > >> archives, please visit:
> > > > >> http://list.valvesoftware.com/mailman/listinfo/hlds
> > > > >>
> > > > >>
> > > > >>
> > > > >
> > > > > _______________________________________________
> > > > > To unsubscribe, edit your list preferences, or view the
> > > > list archives,
> > > > > please visit:
> > > > > http://list.valvesoftware.com/mailman/listinfo/hlds
> > > > >
> > > > >
> > > >
> > > >
> > > > _______________________________________________
> > > > To unsubscribe, edit your list preferences, or view the list
> > > > archives, please visit:
> > > > http://list.valvesoftware.com/mailman/listinfo/hlds
> > >
> > >
> > > _______________________________________________
> > > To unsubscribe, edit your list preferences, or view the
> > list archives, please visit:
> > > http://list.valvesoftware.com/mailman/listinfo/hlds
> >
> >
> > _______________________________________________
> > To unsubscribe, edit your list preferences, or view the list
> > archives, please visit:
> > http://list.valvesoftware.com/mailman/listinfo/hlds
>
>
> _______________________________________________
> To unsubscribe, edit your list preferences, or view the list
> archives, please visit:
> http://list.valvesoftware.com/mailman/listinfo/hlds
_______________________________________________
To unsubscribe, edit your list preferences, or view the list archives, please
visit:
http://list.valvesoftware.com/mailman/listinfo/hlds