mirror of
https://git.v0l.io/Kieran/void.cat.git
synced 2025-04-10 06:19:03 +02:00
track stats with matomo
This commit is contained in:
parent
057e64fc44
commit
245055d8ad
6
.gitignore
vendored
6
.gitignore
vendored
@ -2,4 +2,8 @@ out/
|
||||
*.xml
|
||||
src/php/config.php
|
||||
google*.html
|
||||
bower_components/
|
||||
bower_components/
|
||||
.vs
|
||||
bin/
|
||||
obj/
|
||||
*.csproj.user
|
@ -83,13 +83,11 @@
|
||||
$dlCounter = $redis->get($hashKey);
|
||||
if($dlCounter != FALSE) {
|
||||
if($dlCounter >= _DL_CAPTCHA * 2){
|
||||
/*$cfbk = 'VC:CF:BLOCK';
|
||||
$cfbk = 'VC:CF:BLOCK';
|
||||
if(_CLOUDFLARE_API_KEY != 'API_KEY' && $redis->sIsMember($cfbk, _UIP) == False){
|
||||
$redis->sadd($cfbk, _UIP);
|
||||
include_once('cloudflare.php');
|
||||
AddFirewallRule(_UIP);
|
||||
}*/
|
||||
header('location: /');
|
||||
}
|
||||
exit();
|
||||
}else if($dlCounter >= _DL_CAPTCHA){
|
||||
//redirect for captcha check
|
||||
|
@ -200,6 +200,9 @@
|
||||
}
|
||||
|
||||
function ga_page_view($redis){
|
||||
matomo_page_view($redis);
|
||||
return;
|
||||
|
||||
$msg = http_build_query(array(
|
||||
"v" => "1",
|
||||
"tid" => _GA_SITE_CODE,
|
||||
@ -215,6 +218,21 @@
|
||||
$redis->publish('ga-page-view', $msg);
|
||||
}
|
||||
|
||||
function matomo_page_view($redis){
|
||||
$msg = "?" . http_build_query(array(
|
||||
"idsite" => 1,
|
||||
"rec" => 1,
|
||||
"apiv" => 1,
|
||||
"_id" => isset($_COOKIE["VC:UID"]) ? $_COOKIE["VC:UID"] : uniqid(),
|
||||
"url" => "http://$_SERVER[HTTP_HOST]$_SERVER[REQUEST_URI]",
|
||||
"cip" => _UIP,
|
||||
"ua" => isset($_SERVER["HTTP_USER_AGENT"]) ? $_SERVER["HTTP_USER_AGENT"] : "",
|
||||
"urlref" => isset($_SERVER["HTTP_REFERER"]) ? $_SERVER["HTTP_REFERER"] : ""
|
||||
));
|
||||
|
||||
$redis->publish('ga-page-view-matomo', $msg);
|
||||
}
|
||||
|
||||
function ga_event($cat, $act) {
|
||||
ga_collect(array(
|
||||
"t" => "event",
|
||||
|
@ -1,4 +1,5 @@
|
||||
using StackExchange.Redis;
|
||||
using Newtonsoft.Json;
|
||||
using StackExchange.Redis;
|
||||
using System;
|
||||
using System.IO;
|
||||
using System.Net;
|
||||
@ -9,61 +10,73 @@ namespace ga_page_view
|
||||
{
|
||||
class Program
|
||||
{
|
||||
static ConnectionMultiplexer c { get; set; }
|
||||
static BatchBlock<string> _queue = new BatchBlock<string>(20);
|
||||
static string Token { get; set; }
|
||||
|
||||
static void Main(string[] args)
|
||||
static Task Main(string[] args)
|
||||
{
|
||||
var mt = startSvc();
|
||||
mt.Wait();
|
||||
if (args.Length != 1)
|
||||
{
|
||||
Console.WriteLine("Required args: token_auth");
|
||||
return Task.CompletedTask;
|
||||
}
|
||||
|
||||
Token = args[0];
|
||||
Console.WriteLine($"Token is: {Token}");
|
||||
return startSvc();
|
||||
}
|
||||
|
||||
private static async Task startSvc()
|
||||
{
|
||||
var c = await ConnectionMultiplexer.ConnectAsync("localhost");
|
||||
await c.GetSubscriber().SubscribeAsync("ga-page-view", queueMsg);
|
||||
c = await ConnectionMultiplexer.ConnectAsync("localhost");
|
||||
await c.GetSubscriber().SubscribeAsync("ga-page-view-matomo", queueMsg);
|
||||
|
||||
Console.WriteLine("Connected to redis");
|
||||
await sendStats();
|
||||
|
||||
_queue.LinkTo(new ActionBlock<string[]>(async (r) =>
|
||||
{
|
||||
Console.WriteLine("Sending stats");
|
||||
await SendData(r);
|
||||
}));
|
||||
|
||||
await _queue.Completion;
|
||||
}
|
||||
|
||||
private static void queueMsg(RedisChannel a, RedisValue b)
|
||||
{
|
||||
_queue.Post(b.ToString());
|
||||
}
|
||||
|
||||
private static async Task sendStats()
|
||||
{
|
||||
while (true)
|
||||
try
|
||||
{
|
||||
var r = await _queue.ReceiveAsync();
|
||||
if (r != null)
|
||||
{
|
||||
Console.WriteLine("Sending stats..");
|
||||
await SendData(r);
|
||||
}
|
||||
Console.Write("."); //tick
|
||||
_queue.Post(b.ToString());
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
Console.WriteLine($"Queue msg failed.. {ex.ToString()}");
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
private static async Task SendData(string[] payload)
|
||||
{
|
||||
try
|
||||
{
|
||||
var req = (HttpWebRequest)WebRequest.Create("https://www.google-analytics.com/batch");
|
||||
var req = (HttpWebRequest)WebRequest.Create("https://matomo.trash.lol/piwik.php");
|
||||
req.Method = "POST";
|
||||
using (StreamWriter sw = new StreamWriter(await req.GetRequestStreamAsync()))
|
||||
{
|
||||
await sw.WriteAsync(string.Join("\r\n", payload));
|
||||
await sw.WriteAsync(JsonConvert.SerializeObject(new BulkStats
|
||||
{
|
||||
requests = payload,
|
||||
token_auth = Token
|
||||
}));
|
||||
}
|
||||
|
||||
using (var rsp = (HttpWebResponse)await req.GetResponseAsync())
|
||||
{
|
||||
if (rsp.StatusCode != HttpStatusCode.OK)
|
||||
using (StreamReader sr = new StreamReader(rsp.GetResponseStream()))
|
||||
{
|
||||
using (StreamReader sr = new StreamReader(rsp.GetResponseStream()))
|
||||
{
|
||||
Console.WriteLine($"Got error reponse from analytics: {await sr.ReadToEndAsync()}");
|
||||
}
|
||||
var rsp_json = await sr.ReadToEndAsync();
|
||||
Console.WriteLine($"Got reponse from analytics: {rsp_json}");
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -73,4 +86,10 @@ namespace ga_page_view
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
internal class BulkStats
|
||||
{
|
||||
public string[] requests { get; set; }
|
||||
public string token_auth { get; set; }
|
||||
}
|
||||
}
|
@ -0,0 +1,16 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<!--
|
||||
https://go.microsoft.com/fwlink/?LinkID=208121.
|
||||
-->
|
||||
<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
||||
<PropertyGroup>
|
||||
<PublishProtocol>FileSystem</PublishProtocol>
|
||||
<Configuration>Release</Configuration>
|
||||
<Platform>Any CPU</Platform>
|
||||
<TargetFramework>netcoreapp2.1</TargetFramework>
|
||||
<PublishDir>bin\Release\netcoreapp2.1\publish\</PublishDir>
|
||||
<RuntimeIdentifier>linux-x64</RuntimeIdentifier>
|
||||
<SelfContained>false</SelfContained>
|
||||
<_IsPortable>true</_IsPortable>
|
||||
</PropertyGroup>
|
||||
</Project>
|
@ -0,0 +1,6 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<!--
|
||||
https://go.microsoft.com/fwlink/?LinkID=208121.
|
||||
-->
|
||||
<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
||||
</Project>
|
@ -2,11 +2,13 @@
|
||||
|
||||
<PropertyGroup>
|
||||
<OutputType>Exe</OutputType>
|
||||
<TargetFramework>netcoreapp2.0</TargetFramework>
|
||||
<TargetFramework>netcoreapp2.1</TargetFramework>
|
||||
<LangVersion>latest</LangVersion>
|
||||
</PropertyGroup>
|
||||
|
||||
<ItemGroup>
|
||||
<PackageReference Include="StackExchange.Redis" Version="1.2.6" />
|
||||
<PackageReference Include="Newtonsoft.Json" Version="11.0.2" />
|
||||
<PackageReference Include="StackExchange.Redis" Version="2.0.510" />
|
||||
</ItemGroup>
|
||||
|
||||
</Project>
|
Loading…
x
Reference in New Issue
Block a user