37 lines
708 B
C#
37 lines
708 B
C#
|
using System.Net.Sockets;
|
||
|
using System.Text;
|
||
|
using System.Web;
|
||
|
|
||
|
namespace Shoko;
|
||
|
|
||
|
[Protocol("finger")]
|
||
|
class FingerProtoHandler : ProtoHandler
|
||
|
{
|
||
|
public FingerProtoHandler(Uri url)
|
||
|
{
|
||
|
URL = url;
|
||
|
}
|
||
|
|
||
|
public override void Load()
|
||
|
{
|
||
|
var file = URL.PathAndQuery;
|
||
|
|
||
|
if(file.StartsWith("/")) file = file.Remove(0,1);
|
||
|
|
||
|
var uri = Encoding.UTF8.GetBytes(HttpUtility.UrlDecode(file)+"\r\n");
|
||
|
|
||
|
var tcp = new TcpClient(URL.Host, URL.Port < 0 ? 79 : URL.Port);
|
||
|
|
||
|
var stream = tcp.GetStream();
|
||
|
|
||
|
stream.Write(uri);
|
||
|
|
||
|
Content = stream;
|
||
|
MediaType = "text/plain";
|
||
|
|
||
|
Loaded = true;
|
||
|
}
|
||
|
public override void Render()
|
||
|
{
|
||
|
}
|
||
|
}
|