add plugins-extra
5
plugins-extra/NetExtrasPlugin/CHANGELOG.txt
Normal file
@@ -0,0 +1,5 @@
|
||||
1.0
|
||||
* Initial release
|
||||
|
||||
1.1
|
||||
* Added Geoip support
|
||||
645
plugins-extra/NetExtrasPlugin/NetExtrasPlugin.rc
Normal file
@@ -0,0 +1,645 @@
|
||||
// Microsoft Visual C++ generated resource script.
|
||||
//
|
||||
#include "resource.h"
|
||||
|
||||
#define APSTUDIO_READONLY_SYMBOLS
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// Generated from the TEXTINCLUDE 2 resource.
|
||||
//
|
||||
#include "winres.h"
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
#undef APSTUDIO_READONLY_SYMBOLS
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
// English (Australia) resources
|
||||
|
||||
#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_ENA)
|
||||
LANGUAGE LANG_ENGLISH, SUBLANG_ENGLISH_AUS
|
||||
#pragma code_page(1252)
|
||||
|
||||
#ifdef APSTUDIO_INVOKED
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// TEXTINCLUDE
|
||||
//
|
||||
|
||||
1 TEXTINCLUDE
|
||||
BEGIN
|
||||
"resource.h\0"
|
||||
END
|
||||
|
||||
2 TEXTINCLUDE
|
||||
BEGIN
|
||||
"#include ""winres.h""\r\n"
|
||||
"\0"
|
||||
END
|
||||
|
||||
3 TEXTINCLUDE
|
||||
BEGIN
|
||||
"\r\n"
|
||||
"\0"
|
||||
END
|
||||
|
||||
#endif // APSTUDIO_INVOKED
|
||||
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// Version
|
||||
//
|
||||
|
||||
VS_VERSION_INFO VERSIONINFO
|
||||
FILEVERSION 1,1,0,0
|
||||
PRODUCTVERSION 1,1,0,0
|
||||
FILEFLAGSMASK 0x3fL
|
||||
#ifdef _DEBUG
|
||||
FILEFLAGS 0x1L
|
||||
#else
|
||||
FILEFLAGS 0x0L
|
||||
#endif
|
||||
FILEOS 0x40004L
|
||||
FILETYPE 0x2L
|
||||
FILESUBTYPE 0x0L
|
||||
BEGIN
|
||||
BLOCK "StringFileInfo"
|
||||
BEGIN
|
||||
BLOCK "0c0904b0"
|
||||
BEGIN
|
||||
VALUE "CompanyName", "dmex"
|
||||
VALUE "FileDescription", "Network Extras Plugin for Process Hacker"
|
||||
VALUE "FileVersion", "1.1"
|
||||
VALUE "InternalName", "dmex.NetworkExtrasPlugin"
|
||||
VALUE "LegalCopyright", "Licensed under the GNU GPL, v3."
|
||||
VALUE "OriginalFilename", "NetExtrasPlugin.dll"
|
||||
VALUE "ProductName", "Network Extras Plugin for Process Hacker"
|
||||
VALUE "ProductVersion", "1.1"
|
||||
END
|
||||
END
|
||||
BLOCK "VarFileInfo"
|
||||
BEGIN
|
||||
VALUE "Translation", 0xc09, 1200
|
||||
END
|
||||
END
|
||||
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// PNG
|
||||
//
|
||||
|
||||
AD_PNG PNG "resources\\ad.png"
|
||||
|
||||
AE_PNG PNG "resources\\ae.png"
|
||||
|
||||
AF_PNG PNG "resources\\af.png"
|
||||
|
||||
AG_PNG PNG "resources\\ag.png"
|
||||
|
||||
AI_PNG PNG "resources\\ai.png"
|
||||
|
||||
AL_PNG PNG "resources\\al.png"
|
||||
|
||||
AM_PNG PNG "resources\\am.png"
|
||||
|
||||
AN_PNG PNG "resources\\an.png"
|
||||
|
||||
AO_PNG PNG "resources\\ao.png"
|
||||
|
||||
AR_PNG PNG "resources\\ar.png"
|
||||
|
||||
AS_PNG PNG "resources\\as.png"
|
||||
|
||||
AT_PNG PNG "resources\\at.png"
|
||||
|
||||
AU_PNG PNG "resources\\au.png"
|
||||
|
||||
AW_PNG PNG "resources\\aw.png"
|
||||
|
||||
AX_PNG PNG "resources\\ax.png"
|
||||
|
||||
AZ_PNG PNG "resources\\az.png"
|
||||
|
||||
BA_PNG PNG "resources\\ba.png"
|
||||
|
||||
BB_PNG PNG "resources\\bb.png"
|
||||
|
||||
BD_PNG PNG "resources\\bd.png"
|
||||
|
||||
BE_PNG PNG "resources\\be.png"
|
||||
|
||||
BF_PNG PNG "resources\\bf.png"
|
||||
|
||||
BG_PNG PNG "resources\\bg.png"
|
||||
|
||||
BH_PNG PNG "resources\\bh.png"
|
||||
|
||||
BI__PNG PNG "resources\\bi.png"
|
||||
|
||||
BJ_PNG PNG "resources\\bj.png"
|
||||
|
||||
BM_PNG PNG "resources\\bm.png"
|
||||
|
||||
BN_PNG PNG "resources\\bn.png"
|
||||
|
||||
BO_PNG PNG "resources\\bo.png"
|
||||
|
||||
BR_PNG PNG "resources\\br.png"
|
||||
|
||||
BS_PNG PNG "resources\\bs.png"
|
||||
|
||||
BT_PNG PNG "resources\\bt.png"
|
||||
|
||||
BV_PNG PNG "resources\\bv.png"
|
||||
|
||||
BW_PNG PNG "resources\\bw.png"
|
||||
|
||||
BY_PNG PNG "resources\\by.png"
|
||||
|
||||
BZ_PNG PNG "resources\\bz.png"
|
||||
|
||||
CA_PNG PNG "resources\\ca.png"
|
||||
|
||||
AAC_PNG PNG "resources\\catalonia.png"
|
||||
|
||||
CC_PNG PNG "resources\\cc.png"
|
||||
|
||||
CD_PNG PNG "resources\\cd.png"
|
||||
|
||||
CF_PNG PNG "resources\\cf.png"
|
||||
|
||||
CG_PNG PNG "resources\\cg.png"
|
||||
|
||||
CH_PNG PNG "resources\\ch.png"
|
||||
|
||||
CI_PNG PNG "resources\\ci.png"
|
||||
|
||||
CK_PNG PNG "resources\\ck.png"
|
||||
|
||||
CL_PNG PNG "resources\\cl.png"
|
||||
|
||||
CM_PNG PNG "resources\\cm.png"
|
||||
|
||||
CN_PNG PNG "resources\\cn.png"
|
||||
|
||||
CO_PNG PNG "resources\\co.png"
|
||||
|
||||
CR_PNG PNG "resources\\cr.png"
|
||||
|
||||
CS_PNG PNG "resources\\cs.png"
|
||||
|
||||
CU_PNG PNG "resources\\cu.png"
|
||||
|
||||
CV_PNG PNG "resources\\cv.png"
|
||||
|
||||
CX_PNG PNG "resources\\cx.png"
|
||||
|
||||
CY_PNG PNG "resources\\cy.png"
|
||||
|
||||
CZ_PNG PNG "resources\\cz.png"
|
||||
|
||||
DE_PNG PNG "resources\\de.png"
|
||||
|
||||
DJ_PNG PNG "resources\\dj.png"
|
||||
|
||||
DK_PNG PNG "resources\\dk.png"
|
||||
|
||||
DM_PNG PNG "resources\\dm.png"
|
||||
|
||||
DO_PNG PNG "resources\\do.png"
|
||||
|
||||
DZ_PNG PNG "resources\\dz.png"
|
||||
|
||||
EC_PNG PNG "resources\\ec.png"
|
||||
|
||||
EE_PNG PNG "resources\\ee.png"
|
||||
|
||||
EG_PNG PNG "resources\\eg.png"
|
||||
|
||||
EH_PNG PNG "resources\\eh.png"
|
||||
|
||||
AAD_PNG PNG "resources\\england.png"
|
||||
|
||||
ER_PNG PNG "resources\\er.png"
|
||||
|
||||
ES_PNG PNG "resources\\es.png"
|
||||
|
||||
ET_PNG PNG "resources\\et.png"
|
||||
|
||||
AAE_PNG PNG "resources\\europeanunion.png"
|
||||
|
||||
AAF_PNG PNG "resources\\fam.png"
|
||||
|
||||
FI_PNG PNG "resources\\fi.png"
|
||||
|
||||
FJ_PNG PNG "resources\\fj.png"
|
||||
|
||||
FK_PNG PNG "resources\\fk.png"
|
||||
|
||||
FM_PNG PNG "resources\\fm.png"
|
||||
|
||||
FO_PNG PNG "resources\\fo.png"
|
||||
|
||||
FR_PNG PNG "resources\\fr.png"
|
||||
|
||||
GA_PNG PNG "resources\\ga.png"
|
||||
|
||||
GB_PNG PNG "resources\\gb.png"
|
||||
|
||||
GD_PNG PNG "resources\\gd.png"
|
||||
|
||||
GE_PNG PNG "resources\\ge.png"
|
||||
|
||||
GF_PNG PNG "resources\\gf.png"
|
||||
|
||||
GH_PNG PNG "resources\\gh.png"
|
||||
|
||||
GI_PNG PNG "resources\\gi.png"
|
||||
|
||||
GL_PNG PNG "resources\\gl.png"
|
||||
|
||||
GM_PNG PNG "resources\\gm.png"
|
||||
|
||||
GN_PNG PNG "resources\\gn.png"
|
||||
|
||||
GP_PNG PNG "resources\\gp.png"
|
||||
|
||||
GQ_PNG PNG "resources\\gq.png"
|
||||
|
||||
GR_PNG PNG "resources\\gr.png"
|
||||
|
||||
GS_PNG PNG "resources\\gs.png"
|
||||
|
||||
GT_PNG PNG "resources\\gt.png"
|
||||
|
||||
GU_PNG PNG "resources\\gu.png"
|
||||
|
||||
GW_PNG PNG "resources\\gw.png"
|
||||
|
||||
GY_PNG PNG "resources\\gy.png"
|
||||
|
||||
HK_PNG PNG "resources\\hk.png"
|
||||
|
||||
HM_PNG PNG "resources\\hm.png"
|
||||
|
||||
HN_PNG PNG "resources\\hn.png"
|
||||
|
||||
HR_PNG PNG "resources\\hr.png"
|
||||
|
||||
HT_PNG PNG "resources\\ht.png"
|
||||
|
||||
HU_PNG PNG "resources\\hu.png"
|
||||
|
||||
ID_PNG PNG "resources\\id.png"
|
||||
|
||||
IE_PNG PNG "resources\\ie.png"
|
||||
|
||||
IL_PNG PNG "resources\\il.png"
|
||||
|
||||
IN_PNG PNG "resources\\in.png"
|
||||
|
||||
IO_PNG PNG "resources\\io.png"
|
||||
|
||||
IQ_PNG PNG "resources\\iq.png"
|
||||
|
||||
IR_PNG PNG "resources\\ir.png"
|
||||
|
||||
IS_PNG PNG "resources\\is.png"
|
||||
|
||||
IT_PNG PNG "resources\\it.png"
|
||||
|
||||
JM_PNG PNG "resources\\jm.png"
|
||||
|
||||
JO_PNG PNG "resources\\jo.png"
|
||||
|
||||
JP_PNG PNG "resources\\jp.png"
|
||||
|
||||
KE_PNG PNG "resources\\ke.png"
|
||||
|
||||
KG_PNG PNG "resources\\kg.png"
|
||||
|
||||
KH_PNG PNG "resources\\kh.png"
|
||||
|
||||
KI_PNG PNG "resources\\ki.png"
|
||||
|
||||
KM_PNG PNG "resources\\km.png"
|
||||
|
||||
KN_PNG PNG "resources\\kn.png"
|
||||
|
||||
KP_PNG PNG "resources\\kp.png"
|
||||
|
||||
KR_PNG PNG "resources\\kr.png"
|
||||
|
||||
KW_PNG PNG "resources\\kw.png"
|
||||
|
||||
KY_PNG PNG "resources\\ky.png"
|
||||
|
||||
KZ_PNG PNG "resources\\kz.png"
|
||||
|
||||
LA_PNG PNG "resources\\la.png"
|
||||
|
||||
LB_PNG PNG "resources\\lb.png"
|
||||
|
||||
LC_PNG PNG "resources\\lc.png"
|
||||
|
||||
LI_PNG PNG "resources\\li.png"
|
||||
|
||||
LK_PNG PNG "resources\\lk.png"
|
||||
|
||||
LR_PNG PNG "resources\\lr.png"
|
||||
|
||||
LS_PNG PNG "resources\\ls.png"
|
||||
|
||||
LT_PNG PNG "resources\\lt.png"
|
||||
|
||||
LU_PNG PNG "resources\\lu.png"
|
||||
|
||||
LV_PNG PNG "resources\\lv.png"
|
||||
|
||||
LY_PNG PNG "resources\\ly.png"
|
||||
|
||||
MA_PNG PNG "resources\\ma.png"
|
||||
|
||||
MC_PNG PNG "resources\\mc.png"
|
||||
|
||||
MD_PNG PNG "resources\\md.png"
|
||||
|
||||
ME_PNG PNG "resources\\me.png"
|
||||
|
||||
MG_PNG PNG "resources\\mg.png"
|
||||
|
||||
MH_PNG PNG "resources\\mh.png"
|
||||
|
||||
MK_PNG PNG "resources\\mk.png"
|
||||
|
||||
ML_PNG PNG "resources\\ml.png"
|
||||
|
||||
MM_PNG PNG "resources\\mm.png"
|
||||
|
||||
MN_PNG PNG "resources\\mn.png"
|
||||
|
||||
MO_PNG PNG "resources\\mo.png"
|
||||
|
||||
MP_PNG PNG "resources\\mp.png"
|
||||
|
||||
MQ_PNG PNG "resources\\mq.png"
|
||||
|
||||
MR_PNG PNG "resources\\mr.png"
|
||||
|
||||
MS_PNG PNG "resources\\ms.png"
|
||||
|
||||
MT_PNG PNG "resources\\mt.png"
|
||||
|
||||
MU_PNG PNG "resources\\mu.png"
|
||||
|
||||
MV_PNG PNG "resources\\mv.png"
|
||||
|
||||
MW_PNG PNG "resources\\mw.png"
|
||||
|
||||
MX_PNG PNG "resources\\mx.png"
|
||||
|
||||
MY_PNG PNG "resources\\my.png"
|
||||
|
||||
MZ_PNG PNG "resources\\mz.png"
|
||||
|
||||
NA_PNG PNG "resources\\na.png"
|
||||
|
||||
NC_PNG PNG "resources\\nc.png"
|
||||
|
||||
NE_PNG PNG "resources\\ne.png"
|
||||
|
||||
NF_PNG PNG "resources\\nf.png"
|
||||
|
||||
NG_PNG PNG "resources\\ng.png"
|
||||
|
||||
NI_PNG PNG "resources\\ni.png"
|
||||
|
||||
NL_PNG PNG "resources\\nl.png"
|
||||
|
||||
NO_PNG PNG "resources\\no.png"
|
||||
|
||||
NP_PNG PNG "resources\\np.png"
|
||||
|
||||
NR_PNG PNG "resources\\nr.png"
|
||||
|
||||
NU_PNG PNG "resources\\nu.png"
|
||||
|
||||
NZ_PNG PNG "resources\\nz.png"
|
||||
|
||||
OM_PNG PNG "resources\\om.png"
|
||||
|
||||
PA_PNG PNG "resources\\pa.png"
|
||||
|
||||
PE_PNG PNG "resources\\pe.png"
|
||||
|
||||
PF_PNG PNG "resources\\pf.png"
|
||||
|
||||
PG_PNG PNG "resources\\pg.png"
|
||||
|
||||
PH_PNG PNG "resources\\ph.png"
|
||||
|
||||
PK_PNG PNG "resources\\pk.png"
|
||||
|
||||
PL_PNG PNG "resources\\pl.png"
|
||||
|
||||
PM_PNG PNG "resources\\pm.png"
|
||||
|
||||
PN_PNG PNG "resources\\pn.png"
|
||||
|
||||
PR_PNG PNG "resources\\pr.png"
|
||||
|
||||
PS_PNG PNG "resources\\ps.png"
|
||||
|
||||
PT_PNG PNG "resources\\pt.png"
|
||||
|
||||
PW_PNG PNG "resources\\pw.png"
|
||||
|
||||
PY_PNG PNG "resources\\py.png"
|
||||
|
||||
QA_PNG PNG "resources\\qa.png"
|
||||
|
||||
RE_PNG PNG "resources\\re.png"
|
||||
|
||||
RO_PNG PNG "resources\\ro.png"
|
||||
|
||||
RS_PNG PNG "resources\\rs.png"
|
||||
|
||||
RU_PNG PNG "resources\\ru.png"
|
||||
|
||||
RW_PNG PNG "resources\\rw.png"
|
||||
|
||||
SA_PNG PNG "resources\\sa.png"
|
||||
|
||||
SB_PNG PNG "resources\\sb.png"
|
||||
|
||||
SC_PNG PNG "resources\\sc.png"
|
||||
|
||||
AAA_PNG PNG "resources\\scotland.png"
|
||||
|
||||
SD_PNG PNG "resources\\sd.png"
|
||||
|
||||
SE_PNG PNG "resources\\se.png"
|
||||
|
||||
SG_PNG PNG "resources\\sg.png"
|
||||
|
||||
SH_PNG PNG "resources\\sh.png"
|
||||
|
||||
SI_PNG PNG "resources\\si.png"
|
||||
|
||||
SJ_PNG PNG "resources\\sj.png"
|
||||
|
||||
SK_PNG PNG "resources\\sk.png"
|
||||
|
||||
SL_PNG PNG "resources\\sl.png"
|
||||
|
||||
SM_PNG PNG "resources\\sm.png"
|
||||
|
||||
SN_PNG PNG "resources\\sn.png"
|
||||
|
||||
SO_PNG PNG "resources\\so.png"
|
||||
|
||||
SR_PNG PNG "resources\\sr.png"
|
||||
|
||||
ST_PNG PNG "resources\\st.png"
|
||||
|
||||
SV_PNG PNG "resources\\sv.png"
|
||||
|
||||
SY_PNG PNG "resources\\sy.png"
|
||||
|
||||
SZ_PNG PNG "resources\\sz.png"
|
||||
|
||||
TC_PNG PNG "resources\\tc.png"
|
||||
|
||||
TD_PNG PNG "resources\\td.png"
|
||||
|
||||
TF_PNG PNG "resources\\tf.png"
|
||||
|
||||
TG_PNG PNG "resources\\tg.png"
|
||||
|
||||
TH_PNG PNG "resources\\th.png"
|
||||
|
||||
TJ_PNG PNG "resources\\tj.png"
|
||||
|
||||
TK_PNG PNG "resources\\tk.png"
|
||||
|
||||
TL_PNG PNG "resources\\tl.png"
|
||||
|
||||
TM_PNG PNG "resources\\tm.png"
|
||||
|
||||
TN_PNG PNG "resources\\tn.png"
|
||||
|
||||
TO_PNG PNG "resources\\to.png"
|
||||
|
||||
TR_PNG PNG "resources\\tr.png"
|
||||
|
||||
TT_PNG PNG "resources\\tt.png"
|
||||
|
||||
TV_PNG PNG "resources\\tv.png"
|
||||
|
||||
TW_PNG PNG "resources\\tw.png"
|
||||
|
||||
TZ_PNG PNG "resources\\tz.png"
|
||||
|
||||
UA_PNG PNG "resources\\ua.png"
|
||||
|
||||
UG_PNG PNG "resources\\ug.png"
|
||||
|
||||
UM_PNG PNG "resources\\um.png"
|
||||
|
||||
US_PNG PNG "resources\\us.png"
|
||||
|
||||
UY_PNG PNG "resources\\uy.png"
|
||||
|
||||
UZ_PNG PNG "resources\\uz.png"
|
||||
|
||||
VA_PNG PNG "resources\\va.png"
|
||||
|
||||
VC_PNG PNG "resources\\vc.png"
|
||||
|
||||
VE_PNG PNG "resources\\ve.png"
|
||||
|
||||
VG_PNG PNG "resources\\vg.png"
|
||||
|
||||
VI_PNG PNG "resources\\vi.png"
|
||||
|
||||
VN_PNG PNG "resources\\vn.png"
|
||||
|
||||
VU_PNG PNG "resources\\vu.png"
|
||||
|
||||
AAB_PNG PNG "resources\\wales.png"
|
||||
|
||||
WF_PNG PNG "resources\\wf.png"
|
||||
|
||||
WS_PNG PNG "resources\\ws.png"
|
||||
|
||||
YE_PNG PNG "resources\\ye.png"
|
||||
|
||||
YT_PNG PNG "resources\\yt.png"
|
||||
|
||||
ZA_PNG PNG "resources\\za.png"
|
||||
|
||||
ZM_PNG PNG "resources\\zm.png"
|
||||
|
||||
ZW_PNG PNG "resources\\zw.png"
|
||||
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// Dialog
|
||||
//
|
||||
|
||||
IDD_OPTIONS DIALOGEX 0, 0, 309, 178
|
||||
STYLE DS_SETFONT | DS_MODALFRAME | DS_FIXEDSYS | WS_POPUP | WS_CAPTION | WS_SYSMENU
|
||||
CAPTION "Dialog"
|
||||
FONT 8, "MS Shell Dlg", 400, 0, 0x1
|
||||
BEGIN
|
||||
DEFPUSHBUTTON "OK",IDOK,198,157,50,14
|
||||
PUSHBUTTON "Cancel",IDCANCEL,252,157,50,14
|
||||
END
|
||||
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// DESIGNINFO
|
||||
//
|
||||
|
||||
#ifdef APSTUDIO_INVOKED
|
||||
GUIDELINES DESIGNINFO
|
||||
BEGIN
|
||||
IDD_OPTIONS, DIALOG
|
||||
BEGIN
|
||||
LEFTMARGIN, 7
|
||||
RIGHTMARGIN, 302
|
||||
TOPMARGIN, 7
|
||||
BOTTOMMARGIN, 171
|
||||
END
|
||||
END
|
||||
#endif // APSTUDIO_INVOKED
|
||||
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// AFX_DIALOG_LAYOUT
|
||||
//
|
||||
|
||||
IDD_OPTIONS AFX_DIALOG_LAYOUT
|
||||
BEGIN
|
||||
0
|
||||
END
|
||||
|
||||
#endif // English (Australia) resources
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
|
||||
|
||||
#ifndef APSTUDIO_INVOKED
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// Generated from the TEXTINCLUDE 3 resource.
|
||||
//
|
||||
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
#endif // not APSTUDIO_INVOKED
|
||||
|
||||
383
plugins-extra/NetExtrasPlugin/NetExtrasPlugin.vcxproj
Normal file
@@ -0,0 +1,383 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<Project DefaultTargets="Build" ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
||||
<ItemGroup Label="ProjectConfigurations">
|
||||
<ProjectConfiguration Include="Debug|Win32">
|
||||
<Configuration>Debug</Configuration>
|
||||
<Platform>Win32</Platform>
|
||||
</ProjectConfiguration>
|
||||
<ProjectConfiguration Include="Debug|x64">
|
||||
<Configuration>Debug</Configuration>
|
||||
<Platform>x64</Platform>
|
||||
</ProjectConfiguration>
|
||||
<ProjectConfiguration Include="Release|Win32">
|
||||
<Configuration>Release</Configuration>
|
||||
<Platform>Win32</Platform>
|
||||
</ProjectConfiguration>
|
||||
<ProjectConfiguration Include="Release|x64">
|
||||
<Configuration>Release</Configuration>
|
||||
<Platform>x64</Platform>
|
||||
</ProjectConfiguration>
|
||||
</ItemGroup>
|
||||
<PropertyGroup Label="Globals">
|
||||
<ProjectGuid>{B2F55139-7984-498F-98CB-AC25A3E08CCC}</ProjectGuid>
|
||||
<RootNamespace>NetExtrasPlugin</RootNamespace>
|
||||
<Keyword>Win32Proj</Keyword>
|
||||
<ProjectName>NetExtrasPlugin</ProjectName>
|
||||
<WindowsTargetPlatformVersion>10.0.14393.0</WindowsTargetPlatformVersion>
|
||||
</PropertyGroup>
|
||||
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
|
||||
<ConfigurationType>DynamicLibrary</ConfigurationType>
|
||||
<CharacterSet>Unicode</CharacterSet>
|
||||
<PlatformToolset>v140</PlatformToolset>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
|
||||
<ConfigurationType>DynamicLibrary</ConfigurationType>
|
||||
<CharacterSet>Unicode</CharacterSet>
|
||||
<PlatformToolset>v140</PlatformToolset>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
|
||||
<ConfigurationType>DynamicLibrary</ConfigurationType>
|
||||
<CharacterSet>Unicode</CharacterSet>
|
||||
<PlatformToolset>v140</PlatformToolset>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
|
||||
<ConfigurationType>DynamicLibrary</ConfigurationType>
|
||||
<CharacterSet>Unicode</CharacterSet>
|
||||
<PlatformToolset>v140</PlatformToolset>
|
||||
</PropertyGroup>
|
||||
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
|
||||
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
|
||||
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
|
||||
<Import Project="..\ExtraPlugins.props" />
|
||||
</ImportGroup>
|
||||
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
|
||||
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
|
||||
<Import Project="..\ExtraPlugins.props" />
|
||||
</ImportGroup>
|
||||
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">
|
||||
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
|
||||
<Import Project="..\ExtraPlugins.props" />
|
||||
</ImportGroup>
|
||||
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">
|
||||
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
|
||||
<Import Project="..\ExtraPlugins.props" />
|
||||
</ImportGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
|
||||
<LibraryPath>$(VC_LibraryPath_x86);$(WindowsSDK_LibraryPath_x86);$(NETFXKitsDir)Lib\um\x86;C:\Users\AirDog46\Downloads\processhacker-2.39-src\bin\Debug32</LibraryPath>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
|
||||
<LibraryPath>$(VC_LibraryPath_x64);$(WindowsSDK_LibraryPath_x64);$(NETFXKitsDir)Lib\um\x64;C:\Users\AirDog46\Downloads\processhacker-2.39-src\bin\Release64</LibraryPath>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
|
||||
<LibraryPath>$(VC_LibraryPath_x86);$(WindowsSDK_LibraryPath_x86);$(NETFXKitsDir)Lib\um\x86;$(VC_LibraryPath_x86);$(WindowsSDK_LibraryPath_x86);$(NETFXKitsDir)Lib\um\x86;C:\Users\AirDog46\Downloads\processhacker-2.39-src\bin\Release32</LibraryPath>
|
||||
</PropertyGroup>
|
||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
|
||||
<Link>
|
||||
<AdditionalDependencies>WindowsCodecs.lib;ws2_32.lib;%(AdditionalDependencies)</AdditionalDependencies>
|
||||
<DelayLoadDLLs>ws2_32.dll;%(DelayLoadDLLs)</DelayLoadDLLs>
|
||||
</Link>
|
||||
<ClCompile>
|
||||
<TreatWarningAsError>false</TreatWarningAsError>
|
||||
</ClCompile>
|
||||
</ItemDefinitionGroup>
|
||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
|
||||
<Link>
|
||||
<AdditionalDependencies>WindowsCodecs.lib;ws2_32.lib;%(AdditionalDependencies)</AdditionalDependencies>
|
||||
<DelayLoadDLLs>ws2_32.dll;%(DelayLoadDLLs)</DelayLoadDLLs>
|
||||
</Link>
|
||||
<ClCompile>
|
||||
<TreatWarningAsError>false</TreatWarningAsError>
|
||||
</ClCompile>
|
||||
</ItemDefinitionGroup>
|
||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
|
||||
<Link>
|
||||
<AdditionalDependencies>WindowsCodecs.lib;ws2_32.lib;%(AdditionalDependencies)</AdditionalDependencies>
|
||||
<DelayLoadDLLs>ws2_32.dll;%(DelayLoadDLLs)</DelayLoadDLLs>
|
||||
</Link>
|
||||
<ClCompile>
|
||||
<TreatWarningAsError>false</TreatWarningAsError>
|
||||
</ClCompile>
|
||||
</ItemDefinitionGroup>
|
||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
|
||||
<Link>
|
||||
<AdditionalDependencies>WindowsCodecs.lib;ws2_32.lib;%(AdditionalDependencies)</AdditionalDependencies>
|
||||
<DelayLoadDLLs>ws2_32.dll;%(DelayLoadDLLs)</DelayLoadDLLs>
|
||||
</Link>
|
||||
<ClCompile>
|
||||
<TreatWarningAsError>false</TreatWarningAsError>
|
||||
</ClCompile>
|
||||
</ItemDefinitionGroup>
|
||||
<ItemGroup>
|
||||
<ClCompile Include="country.c" />
|
||||
<ClCompile Include="main.c" />
|
||||
<ClCompile Include="extra.c" />
|
||||
<ClCompile Include="maxminddb.c" />
|
||||
<ClCompile Include="png.c" />
|
||||
<ClCompile Include="ports.c" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<ClInclude Include="main.h" />
|
||||
<ClInclude Include="maxminddb-compat-util.h" />
|
||||
<ClInclude Include="maxminddb.h" />
|
||||
<ClInclude Include="maxminddb_config.h" />
|
||||
<ClInclude Include="resource.h" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<ResourceCompile Include="NetExtrasPlugin.rc" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<Text Include="CHANGELOG.txt" />
|
||||
<Text Include="resources\licence.txt" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<Image Include="resources\ad.png" />
|
||||
<Image Include="resources\ae.png" />
|
||||
<Image Include="resources\af.png" />
|
||||
<Image Include="resources\ag.png" />
|
||||
<Image Include="resources\ai.png" />
|
||||
<Image Include="resources\al.png" />
|
||||
<Image Include="resources\am.png" />
|
||||
<Image Include="resources\an.png" />
|
||||
<Image Include="resources\ao.png" />
|
||||
<Image Include="resources\ar.png" />
|
||||
<Image Include="resources\as.png" />
|
||||
<Image Include="resources\at.png" />
|
||||
<Image Include="resources\au.png" />
|
||||
<Image Include="resources\aw.png" />
|
||||
<Image Include="resources\ax.png" />
|
||||
<Image Include="resources\az.png" />
|
||||
<Image Include="resources\ba.png" />
|
||||
<Image Include="resources\bb.png" />
|
||||
<Image Include="resources\bd.png" />
|
||||
<Image Include="resources\be.png" />
|
||||
<Image Include="resources\bf.png" />
|
||||
<Image Include="resources\bg.png" />
|
||||
<Image Include="resources\bh.png" />
|
||||
<Image Include="resources\bi.png" />
|
||||
<Image Include="resources\bj.png" />
|
||||
<Image Include="resources\bm.png" />
|
||||
<Image Include="resources\bn.png" />
|
||||
<Image Include="resources\bo.png" />
|
||||
<Image Include="resources\br.png" />
|
||||
<Image Include="resources\bs.png" />
|
||||
<Image Include="resources\bt.png" />
|
||||
<Image Include="resources\bv.png" />
|
||||
<Image Include="resources\bw.png" />
|
||||
<Image Include="resources\by.png" />
|
||||
<Image Include="resources\bz.png" />
|
||||
<Image Include="resources\ca.png" />
|
||||
<Image Include="resources\catalonia.png" />
|
||||
<Image Include="resources\cc.png" />
|
||||
<Image Include="resources\cd.png" />
|
||||
<Image Include="resources\cf.png" />
|
||||
<Image Include="resources\cg.png" />
|
||||
<Image Include="resources\ch.png" />
|
||||
<Image Include="resources\ci.png" />
|
||||
<Image Include="resources\ck.png" />
|
||||
<Image Include="resources\cl.png" />
|
||||
<Image Include="resources\cm.png" />
|
||||
<Image Include="resources\cn.png" />
|
||||
<Image Include="resources\co.png" />
|
||||
<Image Include="resources\cr.png" />
|
||||
<Image Include="resources\cs.png" />
|
||||
<Image Include="resources\cu.png" />
|
||||
<Image Include="resources\cv.png" />
|
||||
<Image Include="resources\cx.png" />
|
||||
<Image Include="resources\cy.png" />
|
||||
<Image Include="resources\cz.png" />
|
||||
<Image Include="resources\de.png" />
|
||||
<Image Include="resources\dj.png" />
|
||||
<Image Include="resources\dk.png" />
|
||||
<Image Include="resources\dm.png" />
|
||||
<Image Include="resources\do.png" />
|
||||
<Image Include="resources\dz.png" />
|
||||
<Image Include="resources\ec.png" />
|
||||
<Image Include="resources\ee.png" />
|
||||
<Image Include="resources\eg.png" />
|
||||
<Image Include="resources\eh.png" />
|
||||
<Image Include="resources\england.png" />
|
||||
<Image Include="resources\er.png" />
|
||||
<Image Include="resources\es.png" />
|
||||
<Image Include="resources\et.png" />
|
||||
<Image Include="resources\europeanunion.png" />
|
||||
<Image Include="resources\fam.png" />
|
||||
<Image Include="resources\fi.png" />
|
||||
<Image Include="resources\fj.png" />
|
||||
<Image Include="resources\fk.png" />
|
||||
<Image Include="resources\fm.png" />
|
||||
<Image Include="resources\fo.png" />
|
||||
<Image Include="resources\fr.png" />
|
||||
<Image Include="resources\ga.png" />
|
||||
<Image Include="resources\gb.png" />
|
||||
<Image Include="resources\gd.png" />
|
||||
<Image Include="resources\ge.png" />
|
||||
<Image Include="resources\gf.png" />
|
||||
<Image Include="resources\gh.png" />
|
||||
<Image Include="resources\gi.png" />
|
||||
<Image Include="resources\gl.png" />
|
||||
<Image Include="resources\gm.png" />
|
||||
<Image Include="resources\gn.png" />
|
||||
<Image Include="resources\gp.png" />
|
||||
<Image Include="resources\gq.png" />
|
||||
<Image Include="resources\gr.png" />
|
||||
<Image Include="resources\gs.png" />
|
||||
<Image Include="resources\gt.png" />
|
||||
<Image Include="resources\gu.png" />
|
||||
<Image Include="resources\gw.png" />
|
||||
<Image Include="resources\gy.png" />
|
||||
<Image Include="resources\hk.png" />
|
||||
<Image Include="resources\hm.png" />
|
||||
<Image Include="resources\hn.png" />
|
||||
<Image Include="resources\hr.png" />
|
||||
<Image Include="resources\ht.png" />
|
||||
<Image Include="resources\hu.png" />
|
||||
<Image Include="resources\id.png" />
|
||||
<Image Include="resources\ie.png" />
|
||||
<Image Include="resources\il.png" />
|
||||
<Image Include="resources\in.png" />
|
||||
<Image Include="resources\io.png" />
|
||||
<Image Include="resources\iq.png" />
|
||||
<Image Include="resources\ir.png" />
|
||||
<Image Include="resources\is.png" />
|
||||
<Image Include="resources\it.png" />
|
||||
<Image Include="resources\jm.png" />
|
||||
<Image Include="resources\jo.png" />
|
||||
<Image Include="resources\jp.png" />
|
||||
<Image Include="resources\ke.png" />
|
||||
<Image Include="resources\kg.png" />
|
||||
<Image Include="resources\kh.png" />
|
||||
<Image Include="resources\ki.png" />
|
||||
<Image Include="resources\km.png" />
|
||||
<Image Include="resources\kn.png" />
|
||||
<Image Include="resources\kp.png" />
|
||||
<Image Include="resources\kr.png" />
|
||||
<Image Include="resources\kw.png" />
|
||||
<Image Include="resources\ky.png" />
|
||||
<Image Include="resources\kz.png" />
|
||||
<Image Include="resources\la.png" />
|
||||
<Image Include="resources\lb.png" />
|
||||
<Image Include="resources\lc.png" />
|
||||
<Image Include="resources\li.png" />
|
||||
<Image Include="resources\lk.png" />
|
||||
<Image Include="resources\lr.png" />
|
||||
<Image Include="resources\ls.png" />
|
||||
<Image Include="resources\lt.png" />
|
||||
<Image Include="resources\lu.png" />
|
||||
<Image Include="resources\lv.png" />
|
||||
<Image Include="resources\ly.png" />
|
||||
<Image Include="resources\ma.png" />
|
||||
<Image Include="resources\mc.png" />
|
||||
<Image Include="resources\md.png" />
|
||||
<Image Include="resources\me.png" />
|
||||
<Image Include="resources\mg.png" />
|
||||
<Image Include="resources\mh.png" />
|
||||
<Image Include="resources\mk.png" />
|
||||
<Image Include="resources\ml.png" />
|
||||
<Image Include="resources\mm.png" />
|
||||
<Image Include="resources\mn.png" />
|
||||
<Image Include="resources\mo.png" />
|
||||
<Image Include="resources\mp.png" />
|
||||
<Image Include="resources\mq.png" />
|
||||
<Image Include="resources\mr.png" />
|
||||
<Image Include="resources\ms.png" />
|
||||
<Image Include="resources\mt.png" />
|
||||
<Image Include="resources\mu.png" />
|
||||
<Image Include="resources\mv.png" />
|
||||
<Image Include="resources\mw.png" />
|
||||
<Image Include="resources\mx.png" />
|
||||
<Image Include="resources\my.png" />
|
||||
<Image Include="resources\mz.png" />
|
||||
<Image Include="resources\na.png" />
|
||||
<Image Include="resources\nc.png" />
|
||||
<Image Include="resources\ne.png" />
|
||||
<Image Include="resources\nf.png" />
|
||||
<Image Include="resources\ng.png" />
|
||||
<Image Include="resources\ni.png" />
|
||||
<Image Include="resources\nl.png" />
|
||||
<Image Include="resources\no.png" />
|
||||
<Image Include="resources\np.png" />
|
||||
<Image Include="resources\nr.png" />
|
||||
<Image Include="resources\nu.png" />
|
||||
<Image Include="resources\nz.png" />
|
||||
<Image Include="resources\om.png" />
|
||||
<Image Include="resources\pa.png" />
|
||||
<Image Include="resources\pe.png" />
|
||||
<Image Include="resources\pf.png" />
|
||||
<Image Include="resources\pg.png" />
|
||||
<Image Include="resources\ph.png" />
|
||||
<Image Include="resources\pk.png" />
|
||||
<Image Include="resources\pl.png" />
|
||||
<Image Include="resources\pm.png" />
|
||||
<Image Include="resources\pn.png" />
|
||||
<Image Include="resources\pr.png" />
|
||||
<Image Include="resources\ps.png" />
|
||||
<Image Include="resources\pt.png" />
|
||||
<Image Include="resources\pw.png" />
|
||||
<Image Include="resources\py.png" />
|
||||
<Image Include="resources\qa.png" />
|
||||
<Image Include="resources\re.png" />
|
||||
<Image Include="resources\ro.png" />
|
||||
<Image Include="resources\rs.png" />
|
||||
<Image Include="resources\ru.png" />
|
||||
<Image Include="resources\rw.png" />
|
||||
<Image Include="resources\sa.png" />
|
||||
<Image Include="resources\sb.png" />
|
||||
<Image Include="resources\sc.png" />
|
||||
<Image Include="resources\scotland.png" />
|
||||
<Image Include="resources\sd.png" />
|
||||
<Image Include="resources\se.png" />
|
||||
<Image Include="resources\sg.png" />
|
||||
<Image Include="resources\sh.png" />
|
||||
<Image Include="resources\si.png" />
|
||||
<Image Include="resources\sj.png" />
|
||||
<Image Include="resources\sk.png" />
|
||||
<Image Include="resources\sl.png" />
|
||||
<Image Include="resources\sm.png" />
|
||||
<Image Include="resources\sn.png" />
|
||||
<Image Include="resources\so.png" />
|
||||
<Image Include="resources\sr.png" />
|
||||
<Image Include="resources\st.png" />
|
||||
<Image Include="resources\sv.png" />
|
||||
<Image Include="resources\sy.png" />
|
||||
<Image Include="resources\sz.png" />
|
||||
<Image Include="resources\tc.png" />
|
||||
<Image Include="resources\td.png" />
|
||||
<Image Include="resources\tf.png" />
|
||||
<Image Include="resources\tg.png" />
|
||||
<Image Include="resources\th.png" />
|
||||
<Image Include="resources\tj.png" />
|
||||
<Image Include="resources\tk.png" />
|
||||
<Image Include="resources\tl.png" />
|
||||
<Image Include="resources\tm.png" />
|
||||
<Image Include="resources\tn.png" />
|
||||
<Image Include="resources\to.png" />
|
||||
<Image Include="resources\tr.png" />
|
||||
<Image Include="resources\tt.png" />
|
||||
<Image Include="resources\tv.png" />
|
||||
<Image Include="resources\tw.png" />
|
||||
<Image Include="resources\tz.png" />
|
||||
<Image Include="resources\ua.png" />
|
||||
<Image Include="resources\ug.png" />
|
||||
<Image Include="resources\um.png" />
|
||||
<Image Include="resources\us.png" />
|
||||
<Image Include="resources\uy.png" />
|
||||
<Image Include="resources\uz.png" />
|
||||
<Image Include="resources\va.png" />
|
||||
<Image Include="resources\vc.png" />
|
||||
<Image Include="resources\ve.png" />
|
||||
<Image Include="resources\vg.png" />
|
||||
<Image Include="resources\vi.png" />
|
||||
<Image Include="resources\vn.png" />
|
||||
<Image Include="resources\vu.png" />
|
||||
<Image Include="resources\wales.png" />
|
||||
<Image Include="resources\wf.png" />
|
||||
<Image Include="resources\ws.png" />
|
||||
<Image Include="resources\ye.png" />
|
||||
<Image Include="resources\yt.png" />
|
||||
<Image Include="resources\za.png" />
|
||||
<Image Include="resources\zm.png" />
|
||||
<Image Include="resources\zw.png" />
|
||||
</ItemGroup>
|
||||
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
|
||||
</Project>
|
||||
814
plugins-extra/NetExtrasPlugin/NetExtrasPlugin.vcxproj.filters
Normal file
@@ -0,0 +1,814 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
||||
<ItemGroup>
|
||||
<ClInclude Include="main.h">
|
||||
<Filter>Header Files</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="resource.h">
|
||||
<Filter>Header Files</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="maxminddb.h">
|
||||
<Filter>Header Files\maxminddb</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="maxminddb_config.h">
|
||||
<Filter>Header Files\maxminddb</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="maxminddb-compat-util.h">
|
||||
<Filter>Header Files\maxminddb</Filter>
|
||||
</ClInclude>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<Filter Include="Header Files">
|
||||
<UniqueIdentifier>{f016dd0f-55a7-4710-b96e-233df3940081}</UniqueIdentifier>
|
||||
</Filter>
|
||||
<Filter Include="Resource Files">
|
||||
<UniqueIdentifier>{8f9f7140-8e74-4f4c-bd2e-e18ce8633914}</UniqueIdentifier>
|
||||
</Filter>
|
||||
<Filter Include="Source Files">
|
||||
<UniqueIdentifier>{9dc309ac-a574-4615-b42f-421e0207238b}</UniqueIdentifier>
|
||||
</Filter>
|
||||
<Filter Include="Source Files\maxminddb">
|
||||
<UniqueIdentifier>{8a8c1d78-2fe6-452d-8dd6-fff1ee982001}</UniqueIdentifier>
|
||||
</Filter>
|
||||
<Filter Include="Header Files\maxminddb">
|
||||
<UniqueIdentifier>{db470705-8b61-4e5f-b0a7-e4e9a847ff43}</UniqueIdentifier>
|
||||
</Filter>
|
||||
<Filter Include="Resource Files\Images">
|
||||
<UniqueIdentifier>{675b6a82-6895-4512-86fc-e00583505b6e}</UniqueIdentifier>
|
||||
</Filter>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<ClCompile Include="main.c">
|
||||
<Filter>Source Files</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="ports.c">
|
||||
<Filter>Source Files</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="extra.c">
|
||||
<Filter>Source Files</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="maxminddb.c">
|
||||
<Filter>Source Files\maxminddb</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="country.c">
|
||||
<Filter>Source Files</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="png.c">
|
||||
<Filter>Source Files</Filter>
|
||||
</ClCompile>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<Text Include="CHANGELOG.txt" />
|
||||
<Text Include="resources\licence.txt">
|
||||
<Filter>Resource Files</Filter>
|
||||
</Text>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<ResourceCompile Include="NetExtrasPlugin.rc">
|
||||
<Filter>Resource Files</Filter>
|
||||
</ResourceCompile>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<Image Include="resources\ad.png">
|
||||
<Filter>Resource Files\Images</Filter>
|
||||
</Image>
|
||||
<Image Include="resources\ae.png">
|
||||
<Filter>Resource Files\Images</Filter>
|
||||
</Image>
|
||||
<Image Include="resources\af.png">
|
||||
<Filter>Resource Files\Images</Filter>
|
||||
</Image>
|
||||
<Image Include="resources\ag.png">
|
||||
<Filter>Resource Files\Images</Filter>
|
||||
</Image>
|
||||
<Image Include="resources\ai.png">
|
||||
<Filter>Resource Files\Images</Filter>
|
||||
</Image>
|
||||
<Image Include="resources\al.png">
|
||||
<Filter>Resource Files\Images</Filter>
|
||||
</Image>
|
||||
<Image Include="resources\am.png">
|
||||
<Filter>Resource Files\Images</Filter>
|
||||
</Image>
|
||||
<Image Include="resources\an.png">
|
||||
<Filter>Resource Files\Images</Filter>
|
||||
</Image>
|
||||
<Image Include="resources\ao.png">
|
||||
<Filter>Resource Files\Images</Filter>
|
||||
</Image>
|
||||
<Image Include="resources\ar.png">
|
||||
<Filter>Resource Files\Images</Filter>
|
||||
</Image>
|
||||
<Image Include="resources\as.png">
|
||||
<Filter>Resource Files\Images</Filter>
|
||||
</Image>
|
||||
<Image Include="resources\at.png">
|
||||
<Filter>Resource Files\Images</Filter>
|
||||
</Image>
|
||||
<Image Include="resources\au.png">
|
||||
<Filter>Resource Files\Images</Filter>
|
||||
</Image>
|
||||
<Image Include="resources\aw.png">
|
||||
<Filter>Resource Files\Images</Filter>
|
||||
</Image>
|
||||
<Image Include="resources\ax.png">
|
||||
<Filter>Resource Files\Images</Filter>
|
||||
</Image>
|
||||
<Image Include="resources\az.png">
|
||||
<Filter>Resource Files\Images</Filter>
|
||||
</Image>
|
||||
<Image Include="resources\ba.png">
|
||||
<Filter>Resource Files\Images</Filter>
|
||||
</Image>
|
||||
<Image Include="resources\bb.png">
|
||||
<Filter>Resource Files\Images</Filter>
|
||||
</Image>
|
||||
<Image Include="resources\bd.png">
|
||||
<Filter>Resource Files\Images</Filter>
|
||||
</Image>
|
||||
<Image Include="resources\be.png">
|
||||
<Filter>Resource Files\Images</Filter>
|
||||
</Image>
|
||||
<Image Include="resources\bf.png">
|
||||
<Filter>Resource Files\Images</Filter>
|
||||
</Image>
|
||||
<Image Include="resources\bg.png">
|
||||
<Filter>Resource Files\Images</Filter>
|
||||
</Image>
|
||||
<Image Include="resources\bh.png">
|
||||
<Filter>Resource Files\Images</Filter>
|
||||
</Image>
|
||||
<Image Include="resources\bi.png">
|
||||
<Filter>Resource Files\Images</Filter>
|
||||
</Image>
|
||||
<Image Include="resources\bj.png">
|
||||
<Filter>Resource Files\Images</Filter>
|
||||
</Image>
|
||||
<Image Include="resources\bm.png">
|
||||
<Filter>Resource Files\Images</Filter>
|
||||
</Image>
|
||||
<Image Include="resources\bn.png">
|
||||
<Filter>Resource Files\Images</Filter>
|
||||
</Image>
|
||||
<Image Include="resources\bo.png">
|
||||
<Filter>Resource Files\Images</Filter>
|
||||
</Image>
|
||||
<Image Include="resources\br.png">
|
||||
<Filter>Resource Files\Images</Filter>
|
||||
</Image>
|
||||
<Image Include="resources\bs.png">
|
||||
<Filter>Resource Files\Images</Filter>
|
||||
</Image>
|
||||
<Image Include="resources\bt.png">
|
||||
<Filter>Resource Files\Images</Filter>
|
||||
</Image>
|
||||
<Image Include="resources\bv.png">
|
||||
<Filter>Resource Files\Images</Filter>
|
||||
</Image>
|
||||
<Image Include="resources\bw.png">
|
||||
<Filter>Resource Files\Images</Filter>
|
||||
</Image>
|
||||
<Image Include="resources\by.png">
|
||||
<Filter>Resource Files\Images</Filter>
|
||||
</Image>
|
||||
<Image Include="resources\bz.png">
|
||||
<Filter>Resource Files\Images</Filter>
|
||||
</Image>
|
||||
<Image Include="resources\ca.png">
|
||||
<Filter>Resource Files\Images</Filter>
|
||||
</Image>
|
||||
<Image Include="resources\catalonia.png">
|
||||
<Filter>Resource Files\Images</Filter>
|
||||
</Image>
|
||||
<Image Include="resources\cc.png">
|
||||
<Filter>Resource Files\Images</Filter>
|
||||
</Image>
|
||||
<Image Include="resources\cd.png">
|
||||
<Filter>Resource Files\Images</Filter>
|
||||
</Image>
|
||||
<Image Include="resources\cf.png">
|
||||
<Filter>Resource Files\Images</Filter>
|
||||
</Image>
|
||||
<Image Include="resources\cg.png">
|
||||
<Filter>Resource Files\Images</Filter>
|
||||
</Image>
|
||||
<Image Include="resources\ch.png">
|
||||
<Filter>Resource Files\Images</Filter>
|
||||
</Image>
|
||||
<Image Include="resources\cr.png">
|
||||
<Filter>Resource Files\Images</Filter>
|
||||
</Image>
|
||||
<Image Include="resources\cs.png">
|
||||
<Filter>Resource Files\Images</Filter>
|
||||
</Image>
|
||||
<Image Include="resources\cu.png">
|
||||
<Filter>Resource Files\Images</Filter>
|
||||
</Image>
|
||||
<Image Include="resources\cv.png">
|
||||
<Filter>Resource Files\Images</Filter>
|
||||
</Image>
|
||||
<Image Include="resources\cx.png">
|
||||
<Filter>Resource Files\Images</Filter>
|
||||
</Image>
|
||||
<Image Include="resources\cy.png">
|
||||
<Filter>Resource Files\Images</Filter>
|
||||
</Image>
|
||||
<Image Include="resources\cz.png">
|
||||
<Filter>Resource Files\Images</Filter>
|
||||
</Image>
|
||||
<Image Include="resources\de.png">
|
||||
<Filter>Resource Files\Images</Filter>
|
||||
</Image>
|
||||
<Image Include="resources\dj.png">
|
||||
<Filter>Resource Files\Images</Filter>
|
||||
</Image>
|
||||
<Image Include="resources\dk.png">
|
||||
<Filter>Resource Files\Images</Filter>
|
||||
</Image>
|
||||
<Image Include="resources\dm.png">
|
||||
<Filter>Resource Files\Images</Filter>
|
||||
</Image>
|
||||
<Image Include="resources\do.png">
|
||||
<Filter>Resource Files\Images</Filter>
|
||||
</Image>
|
||||
<Image Include="resources\dz.png">
|
||||
<Filter>Resource Files\Images</Filter>
|
||||
</Image>
|
||||
<Image Include="resources\ec.png">
|
||||
<Filter>Resource Files\Images</Filter>
|
||||
</Image>
|
||||
<Image Include="resources\ee.png">
|
||||
<Filter>Resource Files\Images</Filter>
|
||||
</Image>
|
||||
<Image Include="resources\eg.png">
|
||||
<Filter>Resource Files\Images</Filter>
|
||||
</Image>
|
||||
<Image Include="resources\eh.png">
|
||||
<Filter>Resource Files\Images</Filter>
|
||||
</Image>
|
||||
<Image Include="resources\england.png">
|
||||
<Filter>Resource Files\Images</Filter>
|
||||
</Image>
|
||||
<Image Include="resources\er.png">
|
||||
<Filter>Resource Files\Images</Filter>
|
||||
</Image>
|
||||
<Image Include="resources\es.png">
|
||||
<Filter>Resource Files\Images</Filter>
|
||||
</Image>
|
||||
<Image Include="resources\et.png">
|
||||
<Filter>Resource Files\Images</Filter>
|
||||
</Image>
|
||||
<Image Include="resources\europeanunion.png">
|
||||
<Filter>Resource Files\Images</Filter>
|
||||
</Image>
|
||||
<Image Include="resources\fam.png">
|
||||
<Filter>Resource Files\Images</Filter>
|
||||
</Image>
|
||||
<Image Include="resources\fi.png">
|
||||
<Filter>Resource Files\Images</Filter>
|
||||
</Image>
|
||||
<Image Include="resources\fj.png">
|
||||
<Filter>Resource Files\Images</Filter>
|
||||
</Image>
|
||||
<Image Include="resources\fk.png">
|
||||
<Filter>Resource Files\Images</Filter>
|
||||
</Image>
|
||||
<Image Include="resources\fm.png">
|
||||
<Filter>Resource Files\Images</Filter>
|
||||
</Image>
|
||||
<Image Include="resources\fo.png">
|
||||
<Filter>Resource Files\Images</Filter>
|
||||
</Image>
|
||||
<Image Include="resources\fr.png">
|
||||
<Filter>Resource Files\Images</Filter>
|
||||
</Image>
|
||||
<Image Include="resources\ga.png">
|
||||
<Filter>Resource Files\Images</Filter>
|
||||
</Image>
|
||||
<Image Include="resources\gb.png">
|
||||
<Filter>Resource Files\Images</Filter>
|
||||
</Image>
|
||||
<Image Include="resources\gd.png">
|
||||
<Filter>Resource Files\Images</Filter>
|
||||
</Image>
|
||||
<Image Include="resources\ge.png">
|
||||
<Filter>Resource Files\Images</Filter>
|
||||
</Image>
|
||||
<Image Include="resources\gf.png">
|
||||
<Filter>Resource Files\Images</Filter>
|
||||
</Image>
|
||||
<Image Include="resources\gh.png">
|
||||
<Filter>Resource Files\Images</Filter>
|
||||
</Image>
|
||||
<Image Include="resources\gi.png">
|
||||
<Filter>Resource Files\Images</Filter>
|
||||
</Image>
|
||||
<Image Include="resources\gl.png">
|
||||
<Filter>Resource Files\Images</Filter>
|
||||
</Image>
|
||||
<Image Include="resources\gm.png">
|
||||
<Filter>Resource Files\Images</Filter>
|
||||
</Image>
|
||||
<Image Include="resources\gn.png">
|
||||
<Filter>Resource Files\Images</Filter>
|
||||
</Image>
|
||||
<Image Include="resources\gp.png">
|
||||
<Filter>Resource Files\Images</Filter>
|
||||
</Image>
|
||||
<Image Include="resources\gq.png">
|
||||
<Filter>Resource Files\Images</Filter>
|
||||
</Image>
|
||||
<Image Include="resources\gr.png">
|
||||
<Filter>Resource Files\Images</Filter>
|
||||
</Image>
|
||||
<Image Include="resources\gs.png">
|
||||
<Filter>Resource Files\Images</Filter>
|
||||
</Image>
|
||||
<Image Include="resources\gt.png">
|
||||
<Filter>Resource Files\Images</Filter>
|
||||
</Image>
|
||||
<Image Include="resources\gu.png">
|
||||
<Filter>Resource Files\Images</Filter>
|
||||
</Image>
|
||||
<Image Include="resources\gw.png">
|
||||
<Filter>Resource Files\Images</Filter>
|
||||
</Image>
|
||||
<Image Include="resources\gy.png">
|
||||
<Filter>Resource Files\Images</Filter>
|
||||
</Image>
|
||||
<Image Include="resources\hk.png">
|
||||
<Filter>Resource Files\Images</Filter>
|
||||
</Image>
|
||||
<Image Include="resources\hm.png">
|
||||
<Filter>Resource Files\Images</Filter>
|
||||
</Image>
|
||||
<Image Include="resources\hn.png">
|
||||
<Filter>Resource Files\Images</Filter>
|
||||
</Image>
|
||||
<Image Include="resources\hr.png">
|
||||
<Filter>Resource Files\Images</Filter>
|
||||
</Image>
|
||||
<Image Include="resources\ht.png">
|
||||
<Filter>Resource Files\Images</Filter>
|
||||
</Image>
|
||||
<Image Include="resources\hu.png">
|
||||
<Filter>Resource Files\Images</Filter>
|
||||
</Image>
|
||||
<Image Include="resources\id.png">
|
||||
<Filter>Resource Files\Images</Filter>
|
||||
</Image>
|
||||
<Image Include="resources\ie.png">
|
||||
<Filter>Resource Files\Images</Filter>
|
||||
</Image>
|
||||
<Image Include="resources\il.png">
|
||||
<Filter>Resource Files\Images</Filter>
|
||||
</Image>
|
||||
<Image Include="resources\in.png">
|
||||
<Filter>Resource Files\Images</Filter>
|
||||
</Image>
|
||||
<Image Include="resources\io.png">
|
||||
<Filter>Resource Files\Images</Filter>
|
||||
</Image>
|
||||
<Image Include="resources\iq.png">
|
||||
<Filter>Resource Files\Images</Filter>
|
||||
</Image>
|
||||
<Image Include="resources\ir.png">
|
||||
<Filter>Resource Files\Images</Filter>
|
||||
</Image>
|
||||
<Image Include="resources\is.png">
|
||||
<Filter>Resource Files\Images</Filter>
|
||||
</Image>
|
||||
<Image Include="resources\it.png">
|
||||
<Filter>Resource Files\Images</Filter>
|
||||
</Image>
|
||||
<Image Include="resources\jm.png">
|
||||
<Filter>Resource Files\Images</Filter>
|
||||
</Image>
|
||||
<Image Include="resources\jo.png">
|
||||
<Filter>Resource Files\Images</Filter>
|
||||
</Image>
|
||||
<Image Include="resources\jp.png">
|
||||
<Filter>Resource Files\Images</Filter>
|
||||
</Image>
|
||||
<Image Include="resources\ke.png">
|
||||
<Filter>Resource Files\Images</Filter>
|
||||
</Image>
|
||||
<Image Include="resources\kg.png">
|
||||
<Filter>Resource Files\Images</Filter>
|
||||
</Image>
|
||||
<Image Include="resources\kh.png">
|
||||
<Filter>Resource Files\Images</Filter>
|
||||
</Image>
|
||||
<Image Include="resources\ki.png">
|
||||
<Filter>Resource Files\Images</Filter>
|
||||
</Image>
|
||||
<Image Include="resources\km.png">
|
||||
<Filter>Resource Files\Images</Filter>
|
||||
</Image>
|
||||
<Image Include="resources\kn.png">
|
||||
<Filter>Resource Files\Images</Filter>
|
||||
</Image>
|
||||
<Image Include="resources\kp.png">
|
||||
<Filter>Resource Files\Images</Filter>
|
||||
</Image>
|
||||
<Image Include="resources\kr.png">
|
||||
<Filter>Resource Files\Images</Filter>
|
||||
</Image>
|
||||
<Image Include="resources\kw.png">
|
||||
<Filter>Resource Files\Images</Filter>
|
||||
</Image>
|
||||
<Image Include="resources\ky.png">
|
||||
<Filter>Resource Files\Images</Filter>
|
||||
</Image>
|
||||
<Image Include="resources\kz.png">
|
||||
<Filter>Resource Files\Images</Filter>
|
||||
</Image>
|
||||
<Image Include="resources\la.png">
|
||||
<Filter>Resource Files\Images</Filter>
|
||||
</Image>
|
||||
<Image Include="resources\lb.png">
|
||||
<Filter>Resource Files\Images</Filter>
|
||||
</Image>
|
||||
<Image Include="resources\lc.png">
|
||||
<Filter>Resource Files\Images</Filter>
|
||||
</Image>
|
||||
<Image Include="resources\li.png">
|
||||
<Filter>Resource Files\Images</Filter>
|
||||
</Image>
|
||||
<Image Include="resources\ci.png">
|
||||
<Filter>Resource Files\Images</Filter>
|
||||
</Image>
|
||||
<Image Include="resources\ck.png">
|
||||
<Filter>Resource Files\Images</Filter>
|
||||
</Image>
|
||||
<Image Include="resources\cl.png">
|
||||
<Filter>Resource Files\Images</Filter>
|
||||
</Image>
|
||||
<Image Include="resources\cm.png">
|
||||
<Filter>Resource Files\Images</Filter>
|
||||
</Image>
|
||||
<Image Include="resources\cn.png">
|
||||
<Filter>Resource Files\Images</Filter>
|
||||
</Image>
|
||||
<Image Include="resources\co.png">
|
||||
<Filter>Resource Files\Images</Filter>
|
||||
</Image>
|
||||
<Image Include="resources\lk.png">
|
||||
<Filter>Resource Files\Images</Filter>
|
||||
</Image>
|
||||
<Image Include="resources\lr.png">
|
||||
<Filter>Resource Files\Images</Filter>
|
||||
</Image>
|
||||
<Image Include="resources\ls.png">
|
||||
<Filter>Resource Files\Images</Filter>
|
||||
</Image>
|
||||
<Image Include="resources\lt.png">
|
||||
<Filter>Resource Files\Images</Filter>
|
||||
</Image>
|
||||
<Image Include="resources\lu.png">
|
||||
<Filter>Resource Files\Images</Filter>
|
||||
</Image>
|
||||
<Image Include="resources\lv.png">
|
||||
<Filter>Resource Files\Images</Filter>
|
||||
</Image>
|
||||
<Image Include="resources\ly.png">
|
||||
<Filter>Resource Files\Images</Filter>
|
||||
</Image>
|
||||
<Image Include="resources\ma.png">
|
||||
<Filter>Resource Files\Images</Filter>
|
||||
</Image>
|
||||
<Image Include="resources\mc.png">
|
||||
<Filter>Resource Files\Images</Filter>
|
||||
</Image>
|
||||
<Image Include="resources\md.png">
|
||||
<Filter>Resource Files\Images</Filter>
|
||||
</Image>
|
||||
<Image Include="resources\me.png">
|
||||
<Filter>Resource Files\Images</Filter>
|
||||
</Image>
|
||||
<Image Include="resources\mg.png">
|
||||
<Filter>Resource Files\Images</Filter>
|
||||
</Image>
|
||||
<Image Include="resources\mh.png">
|
||||
<Filter>Resource Files\Images</Filter>
|
||||
</Image>
|
||||
<Image Include="resources\mk.png">
|
||||
<Filter>Resource Files\Images</Filter>
|
||||
</Image>
|
||||
<Image Include="resources\ml.png">
|
||||
<Filter>Resource Files\Images</Filter>
|
||||
</Image>
|
||||
<Image Include="resources\mm.png">
|
||||
<Filter>Resource Files\Images</Filter>
|
||||
</Image>
|
||||
<Image Include="resources\mn.png">
|
||||
<Filter>Resource Files\Images</Filter>
|
||||
</Image>
|
||||
<Image Include="resources\mo.png">
|
||||
<Filter>Resource Files\Images</Filter>
|
||||
</Image>
|
||||
<Image Include="resources\mp.png">
|
||||
<Filter>Resource Files\Images</Filter>
|
||||
</Image>
|
||||
<Image Include="resources\mq.png">
|
||||
<Filter>Resource Files\Images</Filter>
|
||||
</Image>
|
||||
<Image Include="resources\mr.png">
|
||||
<Filter>Resource Files\Images</Filter>
|
||||
</Image>
|
||||
<Image Include="resources\ms.png">
|
||||
<Filter>Resource Files\Images</Filter>
|
||||
</Image>
|
||||
<Image Include="resources\mt.png">
|
||||
<Filter>Resource Files\Images</Filter>
|
||||
</Image>
|
||||
<Image Include="resources\mu.png">
|
||||
<Filter>Resource Files\Images</Filter>
|
||||
</Image>
|
||||
<Image Include="resources\mv.png">
|
||||
<Filter>Resource Files\Images</Filter>
|
||||
</Image>
|
||||
<Image Include="resources\mw.png">
|
||||
<Filter>Resource Files\Images</Filter>
|
||||
</Image>
|
||||
<Image Include="resources\mx.png">
|
||||
<Filter>Resource Files\Images</Filter>
|
||||
</Image>
|
||||
<Image Include="resources\my.png">
|
||||
<Filter>Resource Files\Images</Filter>
|
||||
</Image>
|
||||
<Image Include="resources\mz.png">
|
||||
<Filter>Resource Files\Images</Filter>
|
||||
</Image>
|
||||
<Image Include="resources\na.png">
|
||||
<Filter>Resource Files\Images</Filter>
|
||||
</Image>
|
||||
<Image Include="resources\nc.png">
|
||||
<Filter>Resource Files\Images</Filter>
|
||||
</Image>
|
||||
<Image Include="resources\ne.png">
|
||||
<Filter>Resource Files\Images</Filter>
|
||||
</Image>
|
||||
<Image Include="resources\nf.png">
|
||||
<Filter>Resource Files\Images</Filter>
|
||||
</Image>
|
||||
<Image Include="resources\ng.png">
|
||||
<Filter>Resource Files\Images</Filter>
|
||||
</Image>
|
||||
<Image Include="resources\ni.png">
|
||||
<Filter>Resource Files\Images</Filter>
|
||||
</Image>
|
||||
<Image Include="resources\nl.png">
|
||||
<Filter>Resource Files\Images</Filter>
|
||||
</Image>
|
||||
<Image Include="resources\no.png">
|
||||
<Filter>Resource Files\Images</Filter>
|
||||
</Image>
|
||||
<Image Include="resources\np.png">
|
||||
<Filter>Resource Files\Images</Filter>
|
||||
</Image>
|
||||
<Image Include="resources\nr.png">
|
||||
<Filter>Resource Files\Images</Filter>
|
||||
</Image>
|
||||
<Image Include="resources\nu.png">
|
||||
<Filter>Resource Files\Images</Filter>
|
||||
</Image>
|
||||
<Image Include="resources\nz.png">
|
||||
<Filter>Resource Files\Images</Filter>
|
||||
</Image>
|
||||
<Image Include="resources\om.png">
|
||||
<Filter>Resource Files\Images</Filter>
|
||||
</Image>
|
||||
<Image Include="resources\pa.png">
|
||||
<Filter>Resource Files\Images</Filter>
|
||||
</Image>
|
||||
<Image Include="resources\pe.png">
|
||||
<Filter>Resource Files\Images</Filter>
|
||||
</Image>
|
||||
<Image Include="resources\pf.png">
|
||||
<Filter>Resource Files\Images</Filter>
|
||||
</Image>
|
||||
<Image Include="resources\pg.png">
|
||||
<Filter>Resource Files\Images</Filter>
|
||||
</Image>
|
||||
<Image Include="resources\ph.png">
|
||||
<Filter>Resource Files\Images</Filter>
|
||||
</Image>
|
||||
<Image Include="resources\pk.png">
|
||||
<Filter>Resource Files\Images</Filter>
|
||||
</Image>
|
||||
<Image Include="resources\pl.png">
|
||||
<Filter>Resource Files\Images</Filter>
|
||||
</Image>
|
||||
<Image Include="resources\pm.png">
|
||||
<Filter>Resource Files\Images</Filter>
|
||||
</Image>
|
||||
<Image Include="resources\pn.png">
|
||||
<Filter>Resource Files\Images</Filter>
|
||||
</Image>
|
||||
<Image Include="resources\pr.png">
|
||||
<Filter>Resource Files\Images</Filter>
|
||||
</Image>
|
||||
<Image Include="resources\ps.png">
|
||||
<Filter>Resource Files\Images</Filter>
|
||||
</Image>
|
||||
<Image Include="resources\pt.png">
|
||||
<Filter>Resource Files\Images</Filter>
|
||||
</Image>
|
||||
<Image Include="resources\pw.png">
|
||||
<Filter>Resource Files\Images</Filter>
|
||||
</Image>
|
||||
<Image Include="resources\py.png">
|
||||
<Filter>Resource Files\Images</Filter>
|
||||
</Image>
|
||||
<Image Include="resources\qa.png">
|
||||
<Filter>Resource Files\Images</Filter>
|
||||
</Image>
|
||||
<Image Include="resources\re.png">
|
||||
<Filter>Resource Files\Images</Filter>
|
||||
</Image>
|
||||
<Image Include="resources\ro.png">
|
||||
<Filter>Resource Files\Images</Filter>
|
||||
</Image>
|
||||
<Image Include="resources\rs.png">
|
||||
<Filter>Resource Files\Images</Filter>
|
||||
</Image>
|
||||
<Image Include="resources\ru.png">
|
||||
<Filter>Resource Files\Images</Filter>
|
||||
</Image>
|
||||
<Image Include="resources\rw.png">
|
||||
<Filter>Resource Files\Images</Filter>
|
||||
</Image>
|
||||
<Image Include="resources\sa.png">
|
||||
<Filter>Resource Files\Images</Filter>
|
||||
</Image>
|
||||
<Image Include="resources\sb.png">
|
||||
<Filter>Resource Files\Images</Filter>
|
||||
</Image>
|
||||
<Image Include="resources\sc.png">
|
||||
<Filter>Resource Files\Images</Filter>
|
||||
</Image>
|
||||
<Image Include="resources\scotland.png">
|
||||
<Filter>Resource Files\Images</Filter>
|
||||
</Image>
|
||||
<Image Include="resources\sd.png">
|
||||
<Filter>Resource Files\Images</Filter>
|
||||
</Image>
|
||||
<Image Include="resources\se.png">
|
||||
<Filter>Resource Files\Images</Filter>
|
||||
</Image>
|
||||
<Image Include="resources\sg.png">
|
||||
<Filter>Resource Files\Images</Filter>
|
||||
</Image>
|
||||
<Image Include="resources\sh.png">
|
||||
<Filter>Resource Files\Images</Filter>
|
||||
</Image>
|
||||
<Image Include="resources\si.png">
|
||||
<Filter>Resource Files\Images</Filter>
|
||||
</Image>
|
||||
<Image Include="resources\sj.png">
|
||||
<Filter>Resource Files\Images</Filter>
|
||||
</Image>
|
||||
<Image Include="resources\sk.png">
|
||||
<Filter>Resource Files\Images</Filter>
|
||||
</Image>
|
||||
<Image Include="resources\sl.png">
|
||||
<Filter>Resource Files\Images</Filter>
|
||||
</Image>
|
||||
<Image Include="resources\sm.png">
|
||||
<Filter>Resource Files\Images</Filter>
|
||||
</Image>
|
||||
<Image Include="resources\sn.png">
|
||||
<Filter>Resource Files\Images</Filter>
|
||||
</Image>
|
||||
<Image Include="resources\so.png">
|
||||
<Filter>Resource Files\Images</Filter>
|
||||
</Image>
|
||||
<Image Include="resources\sr.png">
|
||||
<Filter>Resource Files\Images</Filter>
|
||||
</Image>
|
||||
<Image Include="resources\st.png">
|
||||
<Filter>Resource Files\Images</Filter>
|
||||
</Image>
|
||||
<Image Include="resources\sv.png">
|
||||
<Filter>Resource Files\Images</Filter>
|
||||
</Image>
|
||||
<Image Include="resources\sy.png">
|
||||
<Filter>Resource Files\Images</Filter>
|
||||
</Image>
|
||||
<Image Include="resources\sz.png">
|
||||
<Filter>Resource Files\Images</Filter>
|
||||
</Image>
|
||||
<Image Include="resources\tc.png">
|
||||
<Filter>Resource Files\Images</Filter>
|
||||
</Image>
|
||||
<Image Include="resources\td.png">
|
||||
<Filter>Resource Files\Images</Filter>
|
||||
</Image>
|
||||
<Image Include="resources\tf.png">
|
||||
<Filter>Resource Files\Images</Filter>
|
||||
</Image>
|
||||
<Image Include="resources\tg.png">
|
||||
<Filter>Resource Files\Images</Filter>
|
||||
</Image>
|
||||
<Image Include="resources\th.png">
|
||||
<Filter>Resource Files\Images</Filter>
|
||||
</Image>
|
||||
<Image Include="resources\tj.png">
|
||||
<Filter>Resource Files\Images</Filter>
|
||||
</Image>
|
||||
<Image Include="resources\tk.png">
|
||||
<Filter>Resource Files\Images</Filter>
|
||||
</Image>
|
||||
<Image Include="resources\tl.png">
|
||||
<Filter>Resource Files\Images</Filter>
|
||||
</Image>
|
||||
<Image Include="resources\tm.png">
|
||||
<Filter>Resource Files\Images</Filter>
|
||||
</Image>
|
||||
<Image Include="resources\tn.png">
|
||||
<Filter>Resource Files\Images</Filter>
|
||||
</Image>
|
||||
<Image Include="resources\to.png">
|
||||
<Filter>Resource Files\Images</Filter>
|
||||
</Image>
|
||||
<Image Include="resources\tr.png">
|
||||
<Filter>Resource Files\Images</Filter>
|
||||
</Image>
|
||||
<Image Include="resources\tt.png">
|
||||
<Filter>Resource Files\Images</Filter>
|
||||
</Image>
|
||||
<Image Include="resources\tv.png">
|
||||
<Filter>Resource Files\Images</Filter>
|
||||
</Image>
|
||||
<Image Include="resources\tw.png">
|
||||
<Filter>Resource Files\Images</Filter>
|
||||
</Image>
|
||||
<Image Include="resources\tz.png">
|
||||
<Filter>Resource Files\Images</Filter>
|
||||
</Image>
|
||||
<Image Include="resources\ua.png">
|
||||
<Filter>Resource Files\Images</Filter>
|
||||
</Image>
|
||||
<Image Include="resources\ug.png">
|
||||
<Filter>Resource Files\Images</Filter>
|
||||
</Image>
|
||||
<Image Include="resources\um.png">
|
||||
<Filter>Resource Files\Images</Filter>
|
||||
</Image>
|
||||
<Image Include="resources\us.png">
|
||||
<Filter>Resource Files\Images</Filter>
|
||||
</Image>
|
||||
<Image Include="resources\uy.png">
|
||||
<Filter>Resource Files\Images</Filter>
|
||||
</Image>
|
||||
<Image Include="resources\uz.png">
|
||||
<Filter>Resource Files\Images</Filter>
|
||||
</Image>
|
||||
<Image Include="resources\va.png">
|
||||
<Filter>Resource Files\Images</Filter>
|
||||
</Image>
|
||||
<Image Include="resources\vc.png">
|
||||
<Filter>Resource Files\Images</Filter>
|
||||
</Image>
|
||||
<Image Include="resources\ve.png">
|
||||
<Filter>Resource Files\Images</Filter>
|
||||
</Image>
|
||||
<Image Include="resources\vg.png">
|
||||
<Filter>Resource Files\Images</Filter>
|
||||
</Image>
|
||||
<Image Include="resources\vi.png">
|
||||
<Filter>Resource Files\Images</Filter>
|
||||
</Image>
|
||||
<Image Include="resources\vn.png">
|
||||
<Filter>Resource Files\Images</Filter>
|
||||
</Image>
|
||||
<Image Include="resources\vu.png">
|
||||
<Filter>Resource Files\Images</Filter>
|
||||
</Image>
|
||||
<Image Include="resources\wales.png">
|
||||
<Filter>Resource Files\Images</Filter>
|
||||
</Image>
|
||||
<Image Include="resources\wf.png">
|
||||
<Filter>Resource Files\Images</Filter>
|
||||
</Image>
|
||||
<Image Include="resources\ws.png">
|
||||
<Filter>Resource Files\Images</Filter>
|
||||
</Image>
|
||||
<Image Include="resources\ye.png">
|
||||
<Filter>Resource Files\Images</Filter>
|
||||
</Image>
|
||||
<Image Include="resources\yt.png">
|
||||
<Filter>Resource Files\Images</Filter>
|
||||
</Image>
|
||||
<Image Include="resources\za.png">
|
||||
<Filter>Resource Files\Images</Filter>
|
||||
</Image>
|
||||
<Image Include="resources\zm.png">
|
||||
<Filter>Resource Files\Images</Filter>
|
||||
</Image>
|
||||
<Image Include="resources\zw.png">
|
||||
<Filter>Resource Files\Images</Filter>
|
||||
</Image>
|
||||
</ItemGroup>
|
||||
</Project>
|
||||
189
plugins-extra/NetExtrasPlugin/country.c
Normal file
@@ -0,0 +1,189 @@
|
||||
/*
|
||||
* Process Hacker Extra Plugins -
|
||||
* Network Extras Plugin
|
||||
*
|
||||
* Copyright (C) 2016 dmex
|
||||
*
|
||||
* This file is part of Process Hacker.
|
||||
*
|
||||
* Process Hacker is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation, either version 3 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* Process Hacker is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with Process Hacker. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
#include "main.h"
|
||||
#include "maxminddb.h"
|
||||
|
||||
BOOLEAN GeoDbLoaded = FALSE;
|
||||
static MMDB_s GeoDb = { 0 };
|
||||
|
||||
// Copied from mstcpip.h (due to PH-SDK conflicts).
|
||||
// Note: Ipv6 versions are already available from ws2ipdef.h and did not need copying.
|
||||
|
||||
#define INADDR_ANY (ULONG)0x00000000
|
||||
#define INADDR_LOOPBACK 0x7f000001
|
||||
|
||||
FORCEINLINE
|
||||
BOOLEAN
|
||||
IN4_IS_ADDR_UNSPECIFIED(_In_ CONST IN_ADDR *a)
|
||||
{
|
||||
return (BOOLEAN)(a->s_addr == INADDR_ANY);
|
||||
}
|
||||
|
||||
FORCEINLINE
|
||||
BOOLEAN
|
||||
IN4_IS_ADDR_LOOPBACK(_In_ CONST IN_ADDR *a)
|
||||
{
|
||||
return (BOOLEAN)(*((PUCHAR)a) == 0x7f); // 127/8
|
||||
}
|
||||
// end copy from mstcpip.h
|
||||
|
||||
|
||||
VOID LoadGeoLiteDb(VOID)
|
||||
{
|
||||
PPH_STRING directory;
|
||||
PPH_STRING path;
|
||||
|
||||
directory = PH_AUTO(PhGetApplicationDirectory());
|
||||
path = PhaCreateString(DATABASE_PATH);
|
||||
path = PH_AUTO(PhConcatStringRef2(&directory->sr, &path->sr));
|
||||
|
||||
if (MMDB_open(path->Buffer, MMDB_MODE_MMAP, &GeoDb) == MMDB_SUCCESS)
|
||||
{
|
||||
time_t systemTime;
|
||||
|
||||
// Query the current time
|
||||
time(&systemTime);
|
||||
|
||||
// Check if the Geoip database is older than 6 months (182 days = approx. 6 months).
|
||||
if ((systemTime - GeoDb.metadata.build_epoch) > (182 * 24 * 60 * 60))
|
||||
{
|
||||
// TODO: Warn about old database...
|
||||
}
|
||||
|
||||
if (GeoDb.metadata.ip_version == 6)
|
||||
{
|
||||
// Database includes ipv6 entires.
|
||||
}
|
||||
|
||||
GeoDbLoaded = TRUE;
|
||||
}
|
||||
}
|
||||
|
||||
VOID FreeGeoLiteDb(VOID)
|
||||
{
|
||||
if (GeoDbLoaded)
|
||||
{
|
||||
MMDB_close(&GeoDb);
|
||||
}
|
||||
}
|
||||
|
||||
BOOLEAN LookupCountryCode(
|
||||
_In_ PH_IP_ADDRESS RemoteAddress,
|
||||
_Out_ PPH_STRING* CountryCode,
|
||||
_Out_ PPH_STRING* CountryName
|
||||
)
|
||||
{
|
||||
PPH_STRING countryCode = NULL;
|
||||
PPH_STRING countryName = NULL;
|
||||
MMDB_entry_data_s mmdb_entry;
|
||||
MMDB_lookup_result_s mmdb_lookup;
|
||||
INT mmdb_error = 0;
|
||||
|
||||
if (!GeoDbLoaded)
|
||||
return FALSE;
|
||||
|
||||
if (RemoteAddress.Type == PH_IPV4_NETWORK_TYPE)
|
||||
{
|
||||
SOCKADDR_IN ipv4SockAddr;
|
||||
|
||||
if (IN4_IS_ADDR_UNSPECIFIED(&RemoteAddress.InAddr))
|
||||
return FALSE;
|
||||
|
||||
if (IN4_IS_ADDR_LOOPBACK(&RemoteAddress.InAddr))
|
||||
return FALSE;
|
||||
|
||||
memset(&ipv4SockAddr, 0, sizeof(SOCKADDR_IN));
|
||||
memset(&mmdb_lookup, 0, sizeof(MMDB_lookup_result_s));
|
||||
|
||||
ipv4SockAddr.sin_family = AF_INET;
|
||||
ipv4SockAddr.sin_addr = RemoteAddress.InAddr;
|
||||
|
||||
mmdb_lookup = MMDB_lookup_sockaddr(
|
||||
&GeoDb,
|
||||
(struct sockaddr*)&ipv4SockAddr,
|
||||
&mmdb_error
|
||||
);
|
||||
}
|
||||
else
|
||||
{
|
||||
SOCKADDR_IN6 ipv6SockAddr;
|
||||
|
||||
if (IN6_IS_ADDR_UNSPECIFIED(&RemoteAddress.In6Addr))
|
||||
return FALSE;
|
||||
|
||||
if (IN6_IS_ADDR_LOOPBACK(&RemoteAddress.In6Addr))
|
||||
return FALSE;
|
||||
|
||||
memset(&ipv6SockAddr, 0, sizeof(SOCKADDR_IN6));
|
||||
memset(&mmdb_lookup, 0, sizeof(MMDB_lookup_result_s));
|
||||
|
||||
ipv6SockAddr.sin6_family = AF_INET6;
|
||||
ipv6SockAddr.sin6_addr = RemoteAddress.In6Addr;
|
||||
|
||||
mmdb_lookup = MMDB_lookup_sockaddr(
|
||||
&GeoDb,
|
||||
(struct sockaddr*)&ipv6SockAddr,
|
||||
&mmdb_error
|
||||
);
|
||||
}
|
||||
|
||||
if (mmdb_error == 0 && mmdb_lookup.found_entry)
|
||||
{
|
||||
memset(&mmdb_entry, 0, sizeof(MMDB_entry_data_s));
|
||||
|
||||
if (MMDB_get_value(&mmdb_lookup.entry, &mmdb_entry, "country", "iso_code", NULL) == MMDB_SUCCESS)
|
||||
{
|
||||
if (mmdb_entry.has_data && mmdb_entry.type == MMDB_DATA_TYPE_UTF8_STRING)
|
||||
{
|
||||
countryCode = PhConvertUtf8ToUtf16Ex((PCHAR)mmdb_entry.utf8_string, mmdb_entry.data_size);
|
||||
}
|
||||
}
|
||||
|
||||
if (MMDB_get_value(&mmdb_lookup.entry, &mmdb_entry, "country", "names", "en", NULL) == MMDB_SUCCESS)
|
||||
{
|
||||
if (mmdb_entry.has_data && mmdb_entry.type == MMDB_DATA_TYPE_UTF8_STRING)
|
||||
{
|
||||
countryName = PhConvertUtf8ToUtf16Ex((PCHAR)mmdb_entry.utf8_string, mmdb_entry.data_size);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (countryCode && countryName)
|
||||
{
|
||||
*CountryCode = countryCode;
|
||||
*CountryName = countryName;
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
if (countryCode)
|
||||
{
|
||||
PhDereferenceObject(countryCode);
|
||||
}
|
||||
|
||||
if (countryName)
|
||||
{
|
||||
PhDereferenceObject(countryName);
|
||||
}
|
||||
|
||||
return FALSE;
|
||||
}
|
||||
91
plugins-extra/NetExtrasPlugin/extra.c
Normal file
@@ -0,0 +1,91 @@
|
||||
/*
|
||||
* Process Hacker Extra Plugins -
|
||||
* Network Extras Plugin
|
||||
*
|
||||
* Copyright (C) 2015 dmex
|
||||
* Copyright (C) 2015 TETYYS
|
||||
*
|
||||
* This file is part of Process Hacker.
|
||||
*
|
||||
* Process Hacker is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation, either version 3 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* Process Hacker is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with Process Hacker. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
#include "main.h"
|
||||
|
||||
VOID UpdateNetworkNode(
|
||||
_In_ NETWORK_COLUMN_ID ColumnID,
|
||||
_In_ PPH_NETWORK_NODE Node,
|
||||
_In_ PNETWORK_EXTENSION Extension
|
||||
)
|
||||
{
|
||||
switch (ColumnID)
|
||||
{
|
||||
case NETWORK_COLUMN_ID_LOCAL_SERVICE:
|
||||
{
|
||||
if (!Extension->LocalValid)
|
||||
{
|
||||
//PH_STRING_BUILDER stringBuilder;
|
||||
|
||||
//PhInitializeStringBuilder(&stringBuilder, 24);
|
||||
|
||||
for (ULONG x = 0; x < ARRAYSIZE(ResolvedPortsTable); x++)
|
||||
{
|
||||
if (Node->NetworkItem->LocalEndpoint.Port == ResolvedPortsTable[x].Port)
|
||||
{
|
||||
//PhAppendFormatStringBuilder(&stringBuilder, L"%s,", ResolvedPortsTable[x].Name);
|
||||
|
||||
PhSwapReference(&Extension->LocalServiceName, PhCreateString(ResolvedPortsTable[x].Name));
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
//if (stringBuilder.String->Length != 0)
|
||||
// PhRemoveEndStringBuilder(&stringBuilder, 1);
|
||||
|
||||
//PhSwapReference(&Extension->LocalServiceName, PhFinalStringBuilderString(&stringBuilder));
|
||||
|
||||
Extension->LocalValid = TRUE;
|
||||
}
|
||||
}
|
||||
break;
|
||||
case NETWORK_COLUMN_ID_REMOTE_SERVICE:
|
||||
{
|
||||
if (!Extension->RemoteValid)
|
||||
{
|
||||
//PH_STRING_BUILDER stringBuilder;
|
||||
|
||||
//PhInitializeStringBuilder(&stringBuilder, 24);
|
||||
|
||||
for (ULONG x = 0; x < ARRAYSIZE(ResolvedPortsTable); x++)
|
||||
{
|
||||
if (Node->NetworkItem->RemoteEndpoint.Port == ResolvedPortsTable[x].Port)
|
||||
{
|
||||
//PhAppendFormatStringBuilder(&stringBuilder, L"%s,", ResolvedPortsTable[x].Name);
|
||||
|
||||
PhSwapReference(&Extension->RemoteServiceName, PhCreateString(ResolvedPortsTable[x].Name));
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
//if (stringBuilder.String->Length != 0)
|
||||
// PhRemoveEndStringBuilder(&stringBuilder, 1);
|
||||
|
||||
//PhSwapReference(&Extension->RemoteServiceName, PhFinalStringBuilderString(&stringBuilder));
|
||||
|
||||
Extension->RemoteValid = TRUE;
|
||||
}
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
347
plugins-extra/NetExtrasPlugin/main.c
Normal file
@@ -0,0 +1,347 @@
|
||||
/*
|
||||
* Process Hacker Extra Plugins -
|
||||
* Network Extras Plugin
|
||||
*
|
||||
* Copyright (C) 2015 dmex
|
||||
*
|
||||
* This file is part of Process Hacker.
|
||||
*
|
||||
* Process Hacker is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation, either version 3 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* Process Hacker is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with Process Hacker. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
#include "main.h"
|
||||
|
||||
PPH_PLUGIN PluginInstance = NULL;
|
||||
static PH_CALLBACK_REGISTRATION PluginLoadCallbackRegistration;
|
||||
static PH_CALLBACK_REGISTRATION PluginUnloadCallbackRegistration;
|
||||
static PH_CALLBACK_REGISTRATION NetworkTreeNewInitializingCallbackRegistration;
|
||||
static PH_CALLBACK_REGISTRATION TreeNewMessageCallbackRegistration;
|
||||
static HWND NetworkTreeNewHandle = NULL;
|
||||
|
||||
static LONG NTAPI NetworkServiceSortFunction(
|
||||
_In_ PVOID Node1,
|
||||
_In_ PVOID Node2,
|
||||
_In_ ULONG SubId,
|
||||
_In_ PVOID Context
|
||||
)
|
||||
{
|
||||
PPH_NETWORK_NODE node1 = Node1;
|
||||
PPH_NETWORK_NODE node2 = Node2;
|
||||
PNETWORK_EXTENSION extension1 = PhPluginGetObjectExtension(PluginInstance, node1->NetworkItem, EmNetworkItemType);
|
||||
PNETWORK_EXTENSION extension2 = PhPluginGetObjectExtension(PluginInstance, node2->NetworkItem, EmNetworkItemType);
|
||||
|
||||
UpdateNetworkNode(SubId, node1, extension1);
|
||||
UpdateNetworkNode(SubId, node2, extension2);
|
||||
|
||||
switch (SubId)
|
||||
{
|
||||
case NETWORK_COLUMN_ID_LOCAL_SERVICE:
|
||||
return PhCompareStringWithNull(extension1->LocalServiceName, extension2->LocalServiceName, TRUE);
|
||||
case NETWORK_COLUMN_ID_REMOTE_SERVICE:
|
||||
return PhCompareStringWithNull(extension1->RemoteServiceName, extension2->RemoteServiceName, TRUE);
|
||||
case NETWORK_COLUMN_ID_REMOTE_COUNTRY:
|
||||
return PhCompareStringWithNull(extension1->RemoteCountryCode, extension2->RemoteCountryCode, TRUE);
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
VOID NTAPI LoadCallback(
|
||||
_In_opt_ PVOID Parameter,
|
||||
_In_opt_ PVOID Context
|
||||
)
|
||||
{
|
||||
LoadGeoLiteDb();
|
||||
}
|
||||
|
||||
VOID NTAPI UnloadCallback(
|
||||
_In_opt_ PVOID Parameter,
|
||||
_In_opt_ PVOID Context
|
||||
)
|
||||
{
|
||||
NOTHING;
|
||||
}
|
||||
|
||||
VOID NTAPI NetworkTreeNewInitializingCallback(
|
||||
_In_opt_ PVOID Parameter,
|
||||
_In_opt_ PVOID Context
|
||||
)
|
||||
{
|
||||
PPH_PLUGIN_TREENEW_INFORMATION info = Parameter;
|
||||
PH_TREENEW_COLUMN column;
|
||||
|
||||
*(HWND*)Context = info->TreeNewHandle;
|
||||
|
||||
memset(&column, 0, sizeof(PH_TREENEW_COLUMN));
|
||||
column.Text = L"Local Service";
|
||||
column.Width = 140;
|
||||
column.Alignment = PH_ALIGN_LEFT;
|
||||
PhPluginAddTreeNewColumn(PluginInstance, info->CmData, &column, NETWORK_COLUMN_ID_LOCAL_SERVICE, NULL, NetworkServiceSortFunction);
|
||||
|
||||
memset(&column, 0, sizeof(PH_TREENEW_COLUMN));
|
||||
column.Text = L"Remote Service";
|
||||
column.Width = 140;
|
||||
column.Alignment = PH_ALIGN_LEFT;
|
||||
PhPluginAddTreeNewColumn(PluginInstance, info->CmData, &column, NETWORK_COLUMN_ID_REMOTE_SERVICE, NULL, NetworkServiceSortFunction);
|
||||
|
||||
memset(&column, 0, sizeof(PH_TREENEW_COLUMN));
|
||||
column.Text = L"Country";
|
||||
column.Width = 140;
|
||||
column.Alignment = PH_ALIGN_LEFT;
|
||||
column.CustomDraw = TRUE; // Owner-draw this column to show country flags
|
||||
PhPluginAddTreeNewColumn(PluginInstance, info->CmData, &column, NETWORK_COLUMN_ID_REMOTE_COUNTRY, NULL, NetworkServiceSortFunction);
|
||||
}
|
||||
|
||||
VOID NTAPI NetworkItemCreateCallback(
|
||||
_In_ PVOID Object,
|
||||
_In_ PH_EM_OBJECT_TYPE ObjectType,
|
||||
_In_ PVOID Extension
|
||||
)
|
||||
{
|
||||
//PPH_NETWORK_ITEM networkItem = Object;
|
||||
PNETWORK_EXTENSION extension = Extension;
|
||||
|
||||
memset(extension, 0, sizeof(NETWORK_EXTENSION));
|
||||
}
|
||||
|
||||
VOID NTAPI NetworkItemDeleteCallback(
|
||||
_In_ PVOID Object,
|
||||
_In_ PH_EM_OBJECT_TYPE ObjectType,
|
||||
_In_ PVOID Extension
|
||||
)
|
||||
{
|
||||
//PPH_NETWORK_ITEM networkItem = Object;
|
||||
PNETWORK_EXTENSION extension = Extension;
|
||||
|
||||
PhClearReference(&extension->LocalServiceName);
|
||||
PhClearReference(&extension->RemoteServiceName);
|
||||
PhClearReference(&extension->RemoteCountryCode);
|
||||
PhClearReference(&extension->RemoteCountryName);
|
||||
|
||||
if (extension->CountryIcon)
|
||||
DestroyIcon(extension->CountryIcon);
|
||||
}
|
||||
|
||||
VOID NTAPI NetworkNodeCreateCallback(
|
||||
_In_ PVOID Object,
|
||||
_In_ PH_EM_OBJECT_TYPE ObjectType,
|
||||
_In_ PVOID Extension
|
||||
)
|
||||
{
|
||||
PPH_NETWORK_NODE networkNode = Object;
|
||||
PNETWORK_EXTENSION extension = PhPluginGetObjectExtension(PluginInstance, networkNode->NetworkItem, EmNetworkItemType);
|
||||
|
||||
// Update the country data for this connection
|
||||
if (!extension->CountryValid)
|
||||
{
|
||||
PPH_STRING remoteCountryCode;
|
||||
PPH_STRING remoteCountryName;
|
||||
|
||||
if (LookupCountryCode(networkNode->NetworkItem->RemoteEndpoint.Address, &remoteCountryCode, &remoteCountryName))
|
||||
{
|
||||
PhSwapReference(&extension->RemoteCountryCode, remoteCountryCode);
|
||||
PhSwapReference(&extension->RemoteCountryName, remoteCountryName);
|
||||
}
|
||||
|
||||
extension->CountryValid = TRUE;
|
||||
}
|
||||
}
|
||||
|
||||
VOID NTAPI TreeNewMessageCallback(
|
||||
_In_opt_ PVOID Parameter,
|
||||
_In_opt_ PVOID Context
|
||||
)
|
||||
{
|
||||
PPH_PLUGIN_TREENEW_MESSAGE message = Parameter;
|
||||
|
||||
switch (message->Message)
|
||||
{
|
||||
case TreeNewGetCellText:
|
||||
{
|
||||
if (message->TreeNewHandle == NetworkTreeNewHandle)
|
||||
{
|
||||
PPH_TREENEW_GET_CELL_TEXT getCellText = message->Parameter1;
|
||||
PPH_NETWORK_NODE networkNode = (PPH_NETWORK_NODE)getCellText->Node;
|
||||
PNETWORK_EXTENSION extension = PhPluginGetObjectExtension(PluginInstance, networkNode->NetworkItem, EmNetworkItemType);
|
||||
|
||||
UpdateNetworkNode(message->SubId, networkNode, extension);
|
||||
|
||||
switch (message->SubId)
|
||||
{
|
||||
case NETWORK_COLUMN_ID_LOCAL_SERVICE:
|
||||
getCellText->Text = PhGetStringRef(extension->LocalServiceName);
|
||||
break;
|
||||
case NETWORK_COLUMN_ID_REMOTE_SERVICE:
|
||||
getCellText->Text = PhGetStringRef(extension->RemoteServiceName);
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
break;
|
||||
case TreeNewCustomDraw:
|
||||
{
|
||||
PPH_TREENEW_CUSTOM_DRAW customDraw = message->Parameter1;
|
||||
PPH_NETWORK_NODE networkNode = (PPH_NETWORK_NODE)customDraw->Node;
|
||||
PNETWORK_EXTENSION extension = PhPluginGetObjectExtension(PluginInstance, networkNode->NetworkItem, EmNetworkItemType);
|
||||
HDC hdc = customDraw->Dc;
|
||||
RECT rect = customDraw->CellRect;
|
||||
|
||||
// Check if this is the country column
|
||||
if (message->SubId != NETWORK_COLUMN_ID_REMOTE_COUNTRY)
|
||||
break;
|
||||
|
||||
// Check if there's something to draw
|
||||
if (rect.right - rect.left <= 1)
|
||||
{
|
||||
// nothing to draw
|
||||
break;
|
||||
}
|
||||
|
||||
// Padding
|
||||
rect.left += 5;
|
||||
|
||||
// Draw the column data
|
||||
if (GeoDbLoaded && extension->RemoteCountryCode && extension->RemoteCountryName)
|
||||
{
|
||||
if (!extension->CountryIcon)
|
||||
{
|
||||
HBITMAP countryBitmap;
|
||||
|
||||
if (countryBitmap = LoadImageFromResources(16, 11, extension->RemoteCountryCode))
|
||||
{
|
||||
HDC screenDc = CreateIC(L"DISPLAY", NULL, NULL, NULL);
|
||||
HBITMAP screenBitmap = CreateCompatibleBitmap(screenDc, 16, 11);
|
||||
|
||||
ICONINFO iconInfo = { 0 };
|
||||
iconInfo.fIcon = TRUE;
|
||||
iconInfo.hbmColor = countryBitmap;
|
||||
iconInfo.hbmMask = screenBitmap;
|
||||
|
||||
extension->CountryIcon = CreateIconIndirect(&iconInfo);
|
||||
|
||||
DeleteObject(screenBitmap);
|
||||
DeleteDC(screenDc);
|
||||
|
||||
DeleteObject(countryBitmap);
|
||||
}
|
||||
}
|
||||
|
||||
if (extension->CountryIcon)
|
||||
{
|
||||
DrawIconEx(
|
||||
hdc,
|
||||
rect.left,
|
||||
rect.top + ((rect.bottom - rect.top) - 11) / 2,
|
||||
extension->CountryIcon,
|
||||
16,
|
||||
11,
|
||||
0,
|
||||
NULL,
|
||||
DI_NORMAL
|
||||
);
|
||||
|
||||
rect.left += 16 + 2;
|
||||
}
|
||||
|
||||
DrawText(
|
||||
hdc,
|
||||
extension->RemoteCountryName->Buffer,
|
||||
(INT)extension->RemoteCountryName->Length / 2,
|
||||
&rect,
|
||||
DT_LEFT | DT_VCENTER | DT_SINGLELINE
|
||||
);
|
||||
}
|
||||
|
||||
if (!GeoDbLoaded)
|
||||
{
|
||||
DrawText(
|
||||
hdc,
|
||||
L"Geoip database error.",
|
||||
-1,
|
||||
&rect,
|
||||
DT_LEFT | DT_VCENTER | DT_SINGLELINE
|
||||
);
|
||||
}
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
LOGICAL DllMain(
|
||||
_In_ HINSTANCE Instance,
|
||||
_In_ ULONG Reason,
|
||||
_Reserved_ PVOID Reserved
|
||||
)
|
||||
{
|
||||
switch (Reason)
|
||||
{
|
||||
case DLL_PROCESS_ATTACH:
|
||||
{
|
||||
PPH_PLUGIN_INFORMATION info;
|
||||
|
||||
PluginInstance = PhRegisterPlugin(PLUGIN_NAME, Instance, &info);
|
||||
|
||||
if (!PluginInstance)
|
||||
return FALSE;
|
||||
|
||||
info->DisplayName = L"Network Extras";
|
||||
info->Author = L"dmex";
|
||||
info->Description = L"Plugin for extra network information.";
|
||||
info->HasOptions = FALSE;
|
||||
|
||||
PhRegisterCallback(
|
||||
PhGetPluginCallback(PluginInstance, PluginCallbackLoad),
|
||||
LoadCallback,
|
||||
NULL,
|
||||
&PluginLoadCallbackRegistration
|
||||
);
|
||||
PhRegisterCallback(
|
||||
PhGetPluginCallback(PluginInstance, PluginCallbackUnload),
|
||||
UnloadCallback,
|
||||
NULL,
|
||||
&PluginUnloadCallbackRegistration
|
||||
);
|
||||
PhRegisterCallback(
|
||||
PhGetGeneralCallback(GeneralCallbackNetworkTreeNewInitializing),
|
||||
NetworkTreeNewInitializingCallback,
|
||||
&NetworkTreeNewHandle,
|
||||
&NetworkTreeNewInitializingCallbackRegistration
|
||||
);
|
||||
PhRegisterCallback(
|
||||
PhGetPluginCallback(PluginInstance, PluginCallbackTreeNewMessage),
|
||||
TreeNewMessageCallback,
|
||||
NULL,
|
||||
&TreeNewMessageCallbackRegistration
|
||||
);
|
||||
|
||||
PhPluginSetObjectExtension(
|
||||
PluginInstance,
|
||||
EmNetworkItemType,
|
||||
sizeof(NETWORK_EXTENSION),
|
||||
NetworkItemCreateCallback,
|
||||
NetworkItemDeleteCallback
|
||||
);
|
||||
PhPluginSetObjectExtension(
|
||||
PluginInstance,
|
||||
EmNetworkNodeType,
|
||||
sizeof(NETWORK_EXTENSION),
|
||||
NetworkNodeCreateCallback,
|
||||
NULL
|
||||
);
|
||||
}
|
||||
break;
|
||||
}
|
||||
|
||||
return TRUE;
|
||||
}
|
||||
95
plugins-extra/NetExtrasPlugin/main.h
Normal file
@@ -0,0 +1,95 @@
|
||||
/*
|
||||
* Process Hacker Extra Plugins -
|
||||
* Network Extras Plugin
|
||||
*
|
||||
* Copyright (C) 2015 dmex
|
||||
*
|
||||
* This file is part of Process Hacker.
|
||||
*
|
||||
* Process Hacker is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation, either version 3 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* Process Hacker is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with Process Hacker. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
#ifndef _EXTRA_H_
|
||||
#define _EXTRA_H_
|
||||
|
||||
#define PLUGIN_NAME L"dmex.NetworkExtrasPlugin"
|
||||
#define DATABASE_PATH L"plugins\\plugindata\\GeoLite2-Country.mmdb"
|
||||
|
||||
#define CINTERFACE
|
||||
#define COBJMACROS
|
||||
#include <phdk.h>
|
||||
#include <phappresource.h>
|
||||
#include <workqueue.h>
|
||||
#include <wincodec.h>
|
||||
#include <time.h>
|
||||
|
||||
#include "resource.h"
|
||||
|
||||
typedef struct _NETWORK_EXTRA_CONTEXT
|
||||
{
|
||||
PH_LAYOUT_MANAGER LayoutManager;
|
||||
} NETWORK_EXTRA_CONTEXT, *PNETWORK_EXTRA_CONTEXT;
|
||||
|
||||
typedef struct _NETWORK_EXTENSION
|
||||
{
|
||||
BOOLEAN LocalValid;
|
||||
BOOLEAN RemoteValid;
|
||||
BOOLEAN CountryValid;
|
||||
PPH_STRING LocalServiceName;
|
||||
PPH_STRING RemoteServiceName;
|
||||
|
||||
HICON CountryIcon;
|
||||
PPH_STRING RemoteCountryCode;
|
||||
PPH_STRING RemoteCountryName;
|
||||
} NETWORK_EXTENSION, *PNETWORK_EXTENSION;
|
||||
|
||||
typedef enum _NETWORK_COLUMN_ID
|
||||
{
|
||||
NETWORK_COLUMN_ID_LOCAL_SERVICE = 1,
|
||||
NETWORK_COLUMN_ID_REMOTE_SERVICE = 2,
|
||||
NETWORK_COLUMN_ID_REMOTE_COUNTRY = 3,
|
||||
} NETWORK_COLUMN_ID;
|
||||
|
||||
typedef struct _RESOLVED_PORT
|
||||
{
|
||||
PWSTR Name;
|
||||
USHORT Port;
|
||||
} RESOLVED_PORT;
|
||||
|
||||
extern PPH_PLUGIN PluginInstance;
|
||||
extern RESOLVED_PORT ResolvedPortsTable[6265];
|
||||
extern BOOLEAN GeoDbLoaded;
|
||||
|
||||
HBITMAP LoadImageFromResources(
|
||||
_In_ UINT Width,
|
||||
_In_ UINT Height,
|
||||
_In_ PPH_STRING Name
|
||||
);
|
||||
|
||||
VOID UpdateNetworkNode(
|
||||
_In_ NETWORK_COLUMN_ID ColumnID,
|
||||
_In_ PPH_NETWORK_NODE Node,
|
||||
_In_ PNETWORK_EXTENSION Extension
|
||||
);
|
||||
|
||||
VOID LoadGeoLiteDb(VOID);
|
||||
VOID FreeGeoLiteDb(VOID);
|
||||
|
||||
BOOLEAN LookupCountryCode(
|
||||
_In_ PH_IP_ADDRESS RemoteAddress,
|
||||
_Out_ PPH_STRING* CountryCode,
|
||||
_Out_ PPH_STRING* CountryName
|
||||
);
|
||||
|
||||
#endif
|
||||
167
plugins-extra/NetExtrasPlugin/maxminddb-compat-util.h
Normal file
@@ -0,0 +1,167 @@
|
||||
#include <stdlib.h>
|
||||
#include <string.h>
|
||||
|
||||
/* *INDENT-OFF* */
|
||||
|
||||
/* The memmem, strdup, and strndup functions were all copied from the
|
||||
* FreeBSD source, along with the relevant copyright notice.
|
||||
*
|
||||
* It'd be nicer to simply use the functions available on the system if they
|
||||
* exist, but there doesn't seem to be a good way to detect them without also
|
||||
* defining things like _GNU_SOURCE, which we want to avoid, because then we
|
||||
* end up _accidentally_ using GNU features without noticing, which then
|
||||
* breaks on systems like OSX.
|
||||
*
|
||||
* C is fun! */
|
||||
|
||||
/* Applies to memmem implementation */
|
||||
/*-
|
||||
* Copyright (c) 2005 Pascal Gloor <pascal.gloor@spale.com>
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
* modification, are permitted provided that the following conditions
|
||||
* are met:
|
||||
* 1. Redistributions of source code must retain the above copyright
|
||||
* notice, this list of conditions and the following disclaimer.
|
||||
* 2. Redistributions in binary form must reproduce the above copyright
|
||||
* notice, this list of conditions and the following disclaimer in the
|
||||
* documentation and/or other materials provided with the distribution.
|
||||
* 3. The name of the author may not be used to endorse or promote
|
||||
* products derived from this software without specific prior written
|
||||
* permission.
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
|
||||
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
|
||||
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
|
||||
* ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
|
||||
* FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
|
||||
* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
|
||||
* OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
|
||||
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
|
||||
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
|
||||
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
|
||||
* SUCH DAMAGE.
|
||||
*/
|
||||
static void *
|
||||
mmdb_memmem(const void *l, size_t l_len, const void *s, size_t s_len)
|
||||
{
|
||||
register char *cur, *last;
|
||||
const char *cl = (const char *)l;
|
||||
const char *cs = (const char *)s;
|
||||
|
||||
/* we need something to compare */
|
||||
if (l_len == 0 || s_len == 0)
|
||||
return NULL;
|
||||
|
||||
/* "s" must be smaller or equal to "l" */
|
||||
if (l_len < s_len)
|
||||
return NULL;
|
||||
|
||||
/* special case where s_len == 1 */
|
||||
if (s_len == 1)
|
||||
return memchr(l, (int)*cs, l_len);
|
||||
|
||||
/* the last position where its possible to find "s" in "l" */
|
||||
last = (char *)cl + l_len - s_len;
|
||||
|
||||
for (cur = (char *)cl; cur <= last; cur++)
|
||||
if (cur[0] == cs[0] && memcmp(cur, cs, s_len) == 0)
|
||||
return cur;
|
||||
|
||||
return NULL;
|
||||
}
|
||||
|
||||
/* Applies to strnlen implementation */
|
||||
/*-
|
||||
* Copyright (c) 2009 David Schultz <das@FreeBSD.org>
|
||||
* All rights reserved.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
* modification, are permitted provided that the following conditions
|
||||
* are met:
|
||||
* 1. Redistributions of source code must retain the above copyright
|
||||
* notice, this list of conditions and the following disclaimer.
|
||||
* 2. Redistributions in binary form must reproduce the above copyright
|
||||
* notice, this list of conditions and the following disclaimer in the
|
||||
* documentation and/or other materials provided with the distribution.
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
|
||||
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
|
||||
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
|
||||
* ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
|
||||
* FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
|
||||
* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
|
||||
* OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
|
||||
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
|
||||
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
|
||||
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
|
||||
* SUCH DAMAGE.
|
||||
*/
|
||||
static size_t
|
||||
mmdb_strnlen(const char *s, size_t maxlen)
|
||||
{
|
||||
size_t len;
|
||||
|
||||
for (len = 0; len < maxlen; len++, s++) {
|
||||
if (!*s)
|
||||
break;
|
||||
}
|
||||
return (len);
|
||||
}
|
||||
|
||||
/* Applies to strdup and strndup implementation */
|
||||
/*
|
||||
* Copyright (c) 1988, 1993
|
||||
* The Regents of the University of California. All rights reserved.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
* modification, are permitted provided that the following conditions
|
||||
* are met:
|
||||
* 1. Redistributions of source code must retain the above copyright
|
||||
* notice, this list of conditions and the following disclaimer.
|
||||
* 2. Redistributions in binary form must reproduce the above copyright
|
||||
* notice, this list of conditions and the following disclaimer in the
|
||||
* documentation and/or other materials provided with the distribution.
|
||||
* 3. Neither the name of the University nor the names of its contributors
|
||||
* may be used to endorse or promote products derived from this software
|
||||
* without specific prior written permission.
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
|
||||
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
|
||||
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
|
||||
* ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
|
||||
* FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
|
||||
* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
|
||||
* OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
|
||||
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
|
||||
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
|
||||
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
|
||||
* SUCH DAMAGE.
|
||||
*/
|
||||
static char *
|
||||
mmdb_strdup(const char *str)
|
||||
{
|
||||
size_t len;
|
||||
char *copy;
|
||||
|
||||
len = strlen(str) + 1;
|
||||
if ((copy = malloc(len)) == NULL)
|
||||
return (NULL);
|
||||
memcpy(copy, str, len);
|
||||
return (copy);
|
||||
}
|
||||
|
||||
static char *
|
||||
mmdb_strndup(const char *str, size_t n)
|
||||
{
|
||||
size_t len;
|
||||
char *copy;
|
||||
|
||||
len = mmdb_strnlen(str, n);
|
||||
if ((copy = malloc(len + 1)) == NULL)
|
||||
return (NULL);
|
||||
memcpy(copy, str, len);
|
||||
copy[len] = '\0';
|
||||
return (copy);
|
||||
}
|
||||
/* *INDENT-ON* */
|
||||
2150
plugins-extra/NetExtrasPlugin/maxminddb.c
Normal file
232
plugins-extra/NetExtrasPlugin/maxminddb.h
Normal file
@@ -0,0 +1,232 @@
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
#ifndef MAXMINDDB_H
|
||||
#define MAXMINDDB_H
|
||||
|
||||
#ifndef _POSIX_C_SOURCE
|
||||
#define _POSIX_C_SOURCE 200112L
|
||||
#endif
|
||||
|
||||
#include "maxminddb_config.h"
|
||||
#include <stdarg.h>
|
||||
#include <stdbool.h>
|
||||
#include <stdint.h>
|
||||
#include <stdio.h>
|
||||
#include <sys/types.h>
|
||||
|
||||
#ifdef _WIN32
|
||||
#include <winsock2.h>
|
||||
#include <ws2tcpip.h>
|
||||
/* libmaxminddb package version from configure */
|
||||
#define PACKAGE_VERSION "1.2.0"
|
||||
|
||||
typedef ADDRESS_FAMILY sa_family_t;
|
||||
|
||||
#if defined(_MSC_VER)
|
||||
/* MSVC doesn't define signed size_t, copy it from configure */
|
||||
#define ssize_t int
|
||||
|
||||
/* MSVC doesn't support restricted pointers */
|
||||
#define restrict
|
||||
#endif
|
||||
#else
|
||||
#include <netdb.h>
|
||||
#include <netinet/in.h>
|
||||
#include <sys/socket.h>
|
||||
#endif
|
||||
|
||||
#define MMDB_DATA_TYPE_EXTENDED (0)
|
||||
#define MMDB_DATA_TYPE_POINTER (1)
|
||||
#define MMDB_DATA_TYPE_UTF8_STRING (2)
|
||||
#define MMDB_DATA_TYPE_DOUBLE (3)
|
||||
#define MMDB_DATA_TYPE_BYTES (4)
|
||||
#define MMDB_DATA_TYPE_UINT16 (5)
|
||||
#define MMDB_DATA_TYPE_UINT32 (6)
|
||||
#define MMDB_DATA_TYPE_MAP (7)
|
||||
#define MMDB_DATA_TYPE_INT32 (8)
|
||||
#define MMDB_DATA_TYPE_UINT64 (9)
|
||||
#define MMDB_DATA_TYPE_UINT128 (10)
|
||||
#define MMDB_DATA_TYPE_ARRAY (11)
|
||||
#define MMDB_DATA_TYPE_CONTAINER (12)
|
||||
#define MMDB_DATA_TYPE_END_MARKER (13)
|
||||
#define MMDB_DATA_TYPE_BOOLEAN (14)
|
||||
#define MMDB_DATA_TYPE_FLOAT (15)
|
||||
|
||||
#define MMDB_RECORD_TYPE_SEARCH_NODE (0)
|
||||
#define MMDB_RECORD_TYPE_EMPTY (1)
|
||||
#define MMDB_RECORD_TYPE_DATA (2)
|
||||
#define MMDB_RECORD_TYPE_INVALID (3)
|
||||
|
||||
/* flags for open */
|
||||
#define MMDB_MODE_MMAP (1)
|
||||
#define MMDB_MODE_MASK (7)
|
||||
|
||||
/* error codes */
|
||||
#define MMDB_SUCCESS (0)
|
||||
#define MMDB_FILE_OPEN_ERROR (1)
|
||||
#define MMDB_CORRUPT_SEARCH_TREE_ERROR (2)
|
||||
#define MMDB_INVALID_METADATA_ERROR (3)
|
||||
#define MMDB_IO_ERROR (4)
|
||||
#define MMDB_OUT_OF_MEMORY_ERROR (5)
|
||||
#define MMDB_UNKNOWN_DATABASE_FORMAT_ERROR (6)
|
||||
#define MMDB_INVALID_DATA_ERROR (7)
|
||||
#define MMDB_INVALID_LOOKUP_PATH_ERROR (8)
|
||||
#define MMDB_LOOKUP_PATH_DOES_NOT_MATCH_DATA_ERROR (9)
|
||||
#define MMDB_INVALID_NODE_NUMBER_ERROR (10)
|
||||
#define MMDB_IPV6_LOOKUP_IN_IPV4_DATABASE_ERROR (11)
|
||||
|
||||
#if !(MMDB_UINT128_IS_BYTE_ARRAY)
|
||||
#if MMDB_UINT128_USING_MODE
|
||||
typedef unsigned int mmdb_uint128_t __attribute__ ((__mode__(TI)));
|
||||
#else
|
||||
typedef unsigned __int128 mmdb_uint128_t;
|
||||
#endif
|
||||
#endif
|
||||
|
||||
/* This is a pointer into the data section for a given IP address lookup */
|
||||
typedef struct MMDB_entry_s {
|
||||
struct MMDB_s *mmdb;
|
||||
uint32_t offset;
|
||||
} MMDB_entry_s;
|
||||
|
||||
typedef struct MMDB_lookup_result_s {
|
||||
bool found_entry;
|
||||
MMDB_entry_s entry;
|
||||
uint16_t netmask;
|
||||
} MMDB_lookup_result_s;
|
||||
|
||||
typedef struct MMDB_entry_data_s {
|
||||
bool has_data;
|
||||
union {
|
||||
uint32_t pointer;
|
||||
const char *utf8_string;
|
||||
double double_value;
|
||||
const uint8_t *bytes;
|
||||
uint16_t uint16;
|
||||
uint32_t uint32;
|
||||
int32_t int32;
|
||||
uint64_t uint64;
|
||||
#if MMDB_UINT128_IS_BYTE_ARRAY
|
||||
uint8_t uint128[16];
|
||||
#else
|
||||
mmdb_uint128_t uint128;
|
||||
#endif
|
||||
bool boolean;
|
||||
float float_value;
|
||||
};
|
||||
/* This is a 0 if a given entry cannot be found. This can only happen
|
||||
* when a call to MMDB_(v)get_value() asks for hash keys or array
|
||||
* indices that don't exist. */
|
||||
uint32_t offset;
|
||||
/* This is the next entry in the data section, but it's really only
|
||||
* relevant for entries that part of a larger map or array
|
||||
* struct. There's no good reason for an end user to look at this
|
||||
* directly. */
|
||||
uint32_t offset_to_next;
|
||||
/* This is only valid for strings, utf8_strings or binary data */
|
||||
uint32_t data_size;
|
||||
/* This is an MMDB_DATA_TYPE_* constant */
|
||||
uint32_t type;
|
||||
} MMDB_entry_data_s;
|
||||
|
||||
/* This is the return type when someone asks for all the entry data in a map or array */
|
||||
typedef struct MMDB_entry_data_list_s {
|
||||
MMDB_entry_data_s entry_data;
|
||||
struct MMDB_entry_data_list_s *next;
|
||||
} MMDB_entry_data_list_s;
|
||||
|
||||
typedef struct MMDB_description_s {
|
||||
const char *language;
|
||||
const char *description;
|
||||
} MMDB_description_s;
|
||||
|
||||
typedef struct MMDB_metadata_s {
|
||||
uint32_t node_count;
|
||||
uint16_t record_size;
|
||||
uint16_t ip_version;
|
||||
const char *database_type;
|
||||
struct {
|
||||
size_t count;
|
||||
const char **names;
|
||||
} languages;
|
||||
uint16_t binary_format_major_version;
|
||||
uint16_t binary_format_minor_version;
|
||||
uint64_t build_epoch;
|
||||
struct {
|
||||
size_t count;
|
||||
MMDB_description_s **descriptions;
|
||||
} description;
|
||||
} MMDB_metadata_s;
|
||||
|
||||
typedef struct MMDB_ipv4_start_node_s {
|
||||
uint16_t netmask;
|
||||
uint32_t node_value;
|
||||
} MMDB_ipv4_start_node_s;
|
||||
|
||||
typedef struct MMDB_s {
|
||||
uint32_t flags;
|
||||
const wchar_t* filename;
|
||||
ssize_t file_size;
|
||||
const uint8_t *file_content;
|
||||
const uint8_t *data_section;
|
||||
uint32_t data_section_size;
|
||||
const uint8_t *metadata_section;
|
||||
uint32_t metadata_section_size;
|
||||
uint16_t full_record_byte_size;
|
||||
uint16_t depth;
|
||||
MMDB_ipv4_start_node_s ipv4_start_node;
|
||||
MMDB_metadata_s metadata;
|
||||
} MMDB_s;
|
||||
|
||||
typedef struct MMDB_search_node_s {
|
||||
uint64_t left_record;
|
||||
uint64_t right_record;
|
||||
uint8_t left_record_type;
|
||||
uint8_t right_record_type;
|
||||
MMDB_entry_s left_record_entry;
|
||||
MMDB_entry_s right_record_entry;
|
||||
} MMDB_search_node_s;
|
||||
|
||||
/* *INDENT-OFF* */
|
||||
/* --prototypes automatically generated by dev-bin/regen-prototypes.pl - don't remove this comment */
|
||||
extern int MMDB_open(const wchar_t *const filename, uint32_t flags, MMDB_s *const mmdb);
|
||||
extern MMDB_lookup_result_s MMDB_lookup_string(MMDB_s *const mmdb,
|
||||
const char *const ipstr,
|
||||
int *const gai_error,
|
||||
int *const mmdb_error);
|
||||
extern MMDB_lookup_result_s MMDB_lookup_sockaddr(
|
||||
MMDB_s *const mmdb,
|
||||
const struct sockaddr *const sockaddr,
|
||||
int *const mmdb_error);
|
||||
extern int MMDB_read_node(MMDB_s *const mmdb, uint32_t node_number,
|
||||
MMDB_search_node_s *const node);
|
||||
extern int MMDB_get_value(MMDB_entry_s *const start,
|
||||
MMDB_entry_data_s *const entry_data,
|
||||
...);
|
||||
extern int MMDB_vget_value(MMDB_entry_s *const start,
|
||||
MMDB_entry_data_s *const entry_data,
|
||||
va_list va_path);
|
||||
extern int MMDB_aget_value(MMDB_entry_s *const start,
|
||||
MMDB_entry_data_s *const entry_data,
|
||||
const char *const *const path);
|
||||
extern int MMDB_get_metadata_as_entry_data_list(
|
||||
MMDB_s *const mmdb, MMDB_entry_data_list_s **const entry_data_list);
|
||||
extern int MMDB_get_entry_data_list(
|
||||
MMDB_entry_s *start, MMDB_entry_data_list_s **const entry_data_list);
|
||||
extern void MMDB_free_entry_data_list(MMDB_entry_data_list_s *const entry_data_list);
|
||||
extern void MMDB_close(MMDB_s *const mmdb);
|
||||
extern const char *MMDB_lib_version(void);
|
||||
extern int MMDB_dump_entry_data_list(FILE *const stream,
|
||||
MMDB_entry_data_list_s *const entry_data_list,
|
||||
int indent);
|
||||
extern const char *MMDB_strerror(int error_code);
|
||||
/* --prototypes end - don't remove this comment-- */
|
||||
/* *INDENT-ON* */
|
||||
|
||||
#endif /* MAXMINDDB_H */
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
14
plugins-extra/NetExtrasPlugin/maxminddb_config.h
Normal file
@@ -0,0 +1,14 @@
|
||||
#ifndef MAXMINDDB_CONFIG_H
|
||||
#define MAXMINDDB_CONFIG_H
|
||||
|
||||
#ifndef MMDB_UINT128_USING_MODE
|
||||
/* Define as 1 if we we use unsigned int __atribute__ ((__mode__(TI))) for uint128 values */
|
||||
#define MMDB_UINT128_USING_MODE 0
|
||||
#endif
|
||||
|
||||
#ifndef MMDB_UINT128_IS_BYTE_ARRAY
|
||||
/* Define as 1 if we don't have an unsigned __int128 type */
|
||||
#define MMDB_UINT128_IS_BYTE_ARRAY 1
|
||||
#endif
|
||||
|
||||
#endif /* MAXMINDDB_CONFIG_H */
|
||||
496
plugins-extra/NetExtrasPlugin/png.c
Normal file
@@ -0,0 +1,496 @@
|
||||
/*
|
||||
* Process Hacker Extra Plugins -
|
||||
* Network Extras Plugin
|
||||
*
|
||||
* Copyright (C) 2016 dmex
|
||||
*
|
||||
* This file is part of Process Hacker.
|
||||
*
|
||||
* Process Hacker is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation, either version 3 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* Process Hacker is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with Process Hacker. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
#include "main.h"
|
||||
|
||||
struct
|
||||
{
|
||||
PWSTR CountryCode;
|
||||
INT ResourceID;
|
||||
}
|
||||
CountryResourceTable[] =
|
||||
{
|
||||
{ L"AD", AD_PNG },
|
||||
{ L"AE", AE_PNG },
|
||||
{ L"AF", AF_PNG },
|
||||
{ L"AG", AG_PNG },
|
||||
{ L"AI", AI_PNG },
|
||||
{ L"AL", AL_PNG },
|
||||
{ L"AM", AM_PNG },
|
||||
{ L"AN", AN_PNG },
|
||||
{ L"AO", AO_PNG },
|
||||
{ L"AR", AR_PNG },
|
||||
{ L"AS", AS_PNG },
|
||||
{ L"AT", AT_PNG },
|
||||
{ L"AU", AU_PNG },
|
||||
{ L"AW", AW_PNG },
|
||||
{ L"AX", AX_PNG },
|
||||
{ L"AZ", AZ_PNG },
|
||||
|
||||
{ L"BA", BA_PNG },
|
||||
{ L"BB", BB_PNG },
|
||||
{ L"BD", BD_PNG },
|
||||
{ L"BE", BE_PNG },
|
||||
{ L"BF", BF_PNG },
|
||||
{ L"BG", BG_PNG },
|
||||
{ L"BH", BH_PNG },
|
||||
{ L"BI", BI__PNG },
|
||||
{ L"BJ", BJ_PNG },
|
||||
{ L"BM", BM_PNG },
|
||||
{ L"BN", BN_PNG },
|
||||
{ L"BO", BO_PNG },
|
||||
{ L"BR", BR_PNG },
|
||||
{ L"BS", BS_PNG },
|
||||
{ L"BT", BT_PNG },
|
||||
{ L"BV", BV_PNG },
|
||||
{ L"BW", BW_PNG },
|
||||
{ L"BY", BY_PNG },
|
||||
{ L"BZ", BZ_PNG },
|
||||
|
||||
{ L"CA", CA_PNG },
|
||||
{ L"CC", CC_PNG },
|
||||
{ L"CD", CD_PNG },
|
||||
{ L"CF", CF_PNG },
|
||||
{ L"CG", CG_PNG },
|
||||
{ L"CH", CH_PNG },
|
||||
{ L"CI", CI_PNG },
|
||||
{ L"CK", CK_PNG },
|
||||
{ L"CL", CL_PNG },
|
||||
{ L"CM", CM_PNG },
|
||||
{ L"CN", CN_PNG },
|
||||
{ L"CO", CO_PNG },
|
||||
{ L"CR", CR_PNG },
|
||||
{ L"CS", CS_PNG },
|
||||
{ L"CU", CU_PNG },
|
||||
{ L"CV", CV_PNG },
|
||||
{ L"CX", CX_PNG },
|
||||
{ L"CY", CY_PNG },
|
||||
{ L"CZ", CZ_PNG },
|
||||
|
||||
{ L"DE", DE_PNG },
|
||||
{ L"DJ", DJ_PNG },
|
||||
{ L"DK", DK_PNG },
|
||||
{ L"DM", DM_PNG },
|
||||
{ L"DO", DO_PNG },
|
||||
{ L"DZ", DZ_PNG },
|
||||
|
||||
{ L"EC", EC_PNG },
|
||||
{ L"EE", EE_PNG },
|
||||
{ L"EG", EG_PNG },
|
||||
{ L"EH", EH_PNG },
|
||||
{ L"ER", ER_PNG },
|
||||
{ L"ES", ES_PNG },
|
||||
{ L"ET", ET_PNG },
|
||||
|
||||
{ L"FI", FI_PNG },
|
||||
{ L"FJ", FJ_PNG },
|
||||
{ L"FK", FK_PNG },
|
||||
{ L"FO", FO_PNG },
|
||||
{ L"FR", FR_PNG },
|
||||
|
||||
{ L"GA", GA_PNG },
|
||||
{ L"GB", GB_PNG },
|
||||
{ L"GD", GD_PNG },
|
||||
{ L"GE", GE_PNG },
|
||||
{ L"GF", GF_PNG },
|
||||
{ L"GH", GH_PNG },
|
||||
{ L"GI", GI_PNG },
|
||||
{ L"GL", GL_PNG },
|
||||
{ L"GM", GM_PNG },
|
||||
{ L"GN", GN_PNG },
|
||||
{ L"GP", GP_PNG },
|
||||
{ L"GQ", GQ_PNG },
|
||||
{ L"GR", GR_PNG },
|
||||
{ L"GS", GS_PNG },
|
||||
{ L"GT", GT_PNG },
|
||||
{ L"GU", GU_PNG },
|
||||
{ L"GW", GW_PNG },
|
||||
{ L"GY", GY_PNG },
|
||||
|
||||
{ L"HK", HK_PNG },
|
||||
{ L"HM", HM_PNG },
|
||||
{ L"HN", HN_PNG },
|
||||
{ L"HR", HR_PNG },
|
||||
{ L"HT", HT_PNG },
|
||||
{ L"HU", HU_PNG },
|
||||
|
||||
{ L"ID", ID_PNG },
|
||||
{ L"IE", IE_PNG },
|
||||
{ L"IL", IL_PNG },
|
||||
{ L"IN", IN_PNG },
|
||||
{ L"IO", IO_PNG },
|
||||
{ L"IQ", IQ_PNG },
|
||||
{ L"IR", IR_PNG },
|
||||
{ L"IS", IS_PNG },
|
||||
{ L"IT", IT_PNG },
|
||||
|
||||
{ L"JM", JM_PNG },
|
||||
{ L"JO", JO_PNG },
|
||||
{ L"JP", JP_PNG },
|
||||
|
||||
{ L"KE", KE_PNG },
|
||||
{ L"KG", KG_PNG },
|
||||
{ L"KH", KH_PNG },
|
||||
{ L"KI", KI_PNG },
|
||||
{ L"KM", KM_PNG },
|
||||
{ L"KN", KN_PNG },
|
||||
{ L"KP", KP_PNG },
|
||||
{ L"KR", KR_PNG },
|
||||
{ L"KW", KW_PNG },
|
||||
{ L"KY", KY_PNG },
|
||||
{ L"KZ", KZ_PNG },
|
||||
|
||||
{ L"LA", LA_PNG },
|
||||
{ L"LB", LB_PNG },
|
||||
{ L"LC", LC_PNG },
|
||||
{ L"LI", LI_PNG },
|
||||
{ L"LK", LK_PNG },
|
||||
{ L"LR", LR_PNG },
|
||||
{ L"LS", LS_PNG },
|
||||
{ L"LT", LT_PNG },
|
||||
{ L"LU", LU_PNG },
|
||||
{ L"LV", LV_PNG },
|
||||
{ L"LY", LY_PNG },
|
||||
|
||||
{ L"MA", MA_PNG },
|
||||
{ L"MC", MC_PNG },
|
||||
{ L"MD", MD_PNG },
|
||||
{ L"ME", ME_PNG },
|
||||
{ L"MG", MG_PNG },
|
||||
{ L"MH", MH_PNG },
|
||||
{ L"MK", MK_PNG },
|
||||
{ L"ML", ML_PNG },
|
||||
{ L"MM", MM_PNG },
|
||||
{ L"MN", MN_PNG },
|
||||
{ L"MO", MO_PNG },
|
||||
{ L"MP", MP_PNG },
|
||||
{ L"MQ", MQ_PNG },
|
||||
{ L"MR", MR_PNG },
|
||||
{ L"MS", MS_PNG },
|
||||
{ L"MT", MT_PNG },
|
||||
{ L"MU", MU_PNG },
|
||||
{ L"MV", MV_PNG },
|
||||
{ L"MW", MW_PNG },
|
||||
{ L"MX", MX_PNG },
|
||||
{ L"MY", MY_PNG },
|
||||
{ L"MZ", MZ_PNG },
|
||||
|
||||
{ L"NA", NA_PNG },
|
||||
{ L"NC", NC_PNG },
|
||||
{ L"NE", NE_PNG },
|
||||
{ L"NF", NF_PNG },
|
||||
{ L"NG", NG_PNG },
|
||||
{ L"NI", NI_PNG },
|
||||
{ L"NL", NL_PNG },
|
||||
{ L"NO", NO_PNG },
|
||||
{ L"NP", NP_PNG },
|
||||
{ L"NR", NR_PNG },
|
||||
{ L"NU", NU_PNG },
|
||||
{ L"NZ", NZ_PNG },
|
||||
|
||||
{ L"OM", OM_PNG },
|
||||
|
||||
{ L"PA", PA_PNG },
|
||||
{ L"PE", PE_PNG },
|
||||
{ L"PF", PF_PNG },
|
||||
{ L"PG", PG_PNG },
|
||||
{ L"PH", PH_PNG },
|
||||
{ L"PK", PK_PNG },
|
||||
{ L"PL", PL_PNG },
|
||||
{ L"PM", PM_PNG },
|
||||
{ L"PN", PN_PNG },
|
||||
{ L"PR", PR_PNG },
|
||||
{ L"PS", PS_PNG },
|
||||
{ L"PT", PT_PNG },
|
||||
{ L"PW", PW_PNG },
|
||||
{ L"PY", PY_PNG },
|
||||
|
||||
{ L"QA", QA_PNG },
|
||||
|
||||
{ L"RE", RE_PNG },
|
||||
{ L"RO", RO_PNG },
|
||||
{ L"RS", RS_PNG },
|
||||
{ L"RU", RU_PNG },
|
||||
{ L"RW", RW_PNG },
|
||||
|
||||
{ L"SA", SA_PNG },
|
||||
{ L"SB", SB_PNG },
|
||||
{ L"SC", SC_PNG },
|
||||
{ L"SD", SD_PNG },
|
||||
{ L"SE", SE_PNG },
|
||||
{ L"SG", SG_PNG },
|
||||
{ L"SH", SH_PNG },
|
||||
{ L"SI", SI_PNG },
|
||||
{ L"SJ", SJ_PNG },
|
||||
{ L"SK", SK_PNG },
|
||||
{ L"SL", SL_PNG },
|
||||
{ L"SM", SM_PNG },
|
||||
{ L"SN", SN_PNG },
|
||||
{ L"SO", SO_PNG },
|
||||
{ L"SR", SR_PNG },
|
||||
{ L"ST", ST_PNG },
|
||||
{ L"SV", SV_PNG },
|
||||
{ L"SY", SY_PNG },
|
||||
{ L"SZ", SZ_PNG },
|
||||
|
||||
{ L"TC", TC_PNG },
|
||||
{ L"TD", TD_PNG },
|
||||
{ L"TF", TF_PNG },
|
||||
{ L"TG", TG_PNG },
|
||||
{ L"TH", TH_PNG },
|
||||
{ L"TJ", TJ_PNG },
|
||||
{ L"TK", TK_PNG },
|
||||
{ L"TL", TL_PNG },
|
||||
{ L"TM", TM_PNG },
|
||||
{ L"TN", TN_PNG },
|
||||
{ L"TO", TO_PNG },
|
||||
{ L"TR", TR_PNG },
|
||||
{ L"TT", TT_PNG },
|
||||
{ L"TV", TV_PNG },
|
||||
{ L"TW", TW_PNG },
|
||||
{ L"TZ", TZ_PNG },
|
||||
|
||||
{ L"UA", UA_PNG },
|
||||
{ L"UG", UG_PNG },
|
||||
{ L"UM", UM_PNG },
|
||||
{ L"US", US_PNG },
|
||||
{ L"UY", UY_PNG },
|
||||
{ L"UZ", UZ_PNG },
|
||||
|
||||
{ L"VA", VA_PNG },
|
||||
{ L"VC", VC_PNG },
|
||||
{ L"VE", VE_PNG },
|
||||
{ L"VG", VG_PNG },
|
||||
{ L"VI", VI_PNG },
|
||||
{ L"VN", VN_PNG },
|
||||
{ L"VU", VU_PNG },
|
||||
|
||||
{ L"WF", WF_PNG },
|
||||
{ L"WS", WS_PNG },
|
||||
|
||||
{ L"YE", YE_PNG },
|
||||
{ L"YT", YT_PNG },
|
||||
|
||||
{ L"ZA", ZA_PNG },
|
||||
{ L"ZM", ZM_PNG },
|
||||
{ L"ZW", ZW_PNG }
|
||||
};
|
||||
|
||||
INT LookupResourceCode(
|
||||
_In_ PPH_STRING Name
|
||||
)
|
||||
{
|
||||
for (INT i = 0; i < ARRAYSIZE(CountryResourceTable); i++)
|
||||
{
|
||||
if (PhEqualString2(Name, CountryResourceTable[i].CountryCode, TRUE))
|
||||
{
|
||||
return CountryResourceTable[i].ResourceID;
|
||||
}
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
HBITMAP LoadImageFromResources(
|
||||
_In_ UINT Width,
|
||||
_In_ UINT Height,
|
||||
_In_ PPH_STRING Name
|
||||
)
|
||||
{
|
||||
UINT frameCount = 0;
|
||||
BOOLEAN isSuccess = FALSE;
|
||||
ULONG resourceLength = 0;
|
||||
HGLOBAL resourceHandle = NULL;
|
||||
HRSRC resourceHandleSource = NULL;
|
||||
WICInProcPointer resourceBuffer = NULL;
|
||||
HDC screenHdc = NULL;
|
||||
HDC bufferDc = NULL;
|
||||
BITMAPINFO bitmapInfo = { 0 };
|
||||
HBITMAP bitmapHandle = NULL;
|
||||
PBYTE bitmapBuffer = NULL;
|
||||
IWICStream* wicStream = NULL;
|
||||
IWICBitmapSource* wicBitmapSource = NULL;
|
||||
IWICBitmapDecoder* wicDecoder = NULL;
|
||||
IWICBitmapFrameDecode* wicFrame = NULL;
|
||||
IWICImagingFactory* wicFactory = NULL;
|
||||
IWICBitmapScaler* wicScaler = NULL;
|
||||
WICPixelFormatGUID pixelFormat;
|
||||
WICRect rect = { 0, 0, Width, Height };
|
||||
|
||||
INT resourceCode = LookupResourceCode(Name);
|
||||
|
||||
if (resourceCode == 0)
|
||||
return NULL;
|
||||
|
||||
__try
|
||||
{
|
||||
// Create the ImagingFactory
|
||||
if (FAILED(CoCreateInstance(&CLSID_WICImagingFactory1, NULL, CLSCTX_INPROC_SERVER, &IID_IWICImagingFactory, &wicFactory)))
|
||||
__leave;
|
||||
|
||||
// Find the resource
|
||||
if ((resourceHandleSource = FindResource(PluginInstance->DllBase, MAKEINTRESOURCE(resourceCode), L"PNG")) == NULL)
|
||||
__leave;
|
||||
|
||||
// Get the resource length
|
||||
resourceLength = SizeofResource(PluginInstance->DllBase, resourceHandleSource);
|
||||
|
||||
// Load the resource
|
||||
if ((resourceHandle = LoadResource(PluginInstance->DllBase, resourceHandleSource)) == NULL)
|
||||
__leave;
|
||||
|
||||
if ((resourceBuffer = (WICInProcPointer)LockResource(resourceHandle)) == NULL)
|
||||
__leave;
|
||||
|
||||
// Create the Stream
|
||||
if (FAILED(IWICImagingFactory_CreateStream(wicFactory, &wicStream)))
|
||||
__leave;
|
||||
|
||||
// Initialize the Stream from Memory
|
||||
if (FAILED(IWICStream_InitializeFromMemory(wicStream, resourceBuffer, resourceLength)))
|
||||
__leave;
|
||||
|
||||
if (FAILED(IWICImagingFactory_CreateDecoder(wicFactory, &GUID_ContainerFormatPng, NULL, &wicDecoder)))
|
||||
__leave;
|
||||
|
||||
if (FAILED(IWICBitmapDecoder_Initialize(wicDecoder, (IStream*)wicStream, WICDecodeMetadataCacheOnLoad)))
|
||||
__leave;
|
||||
|
||||
// Get the Frame count
|
||||
if (FAILED(IWICBitmapDecoder_GetFrameCount(wicDecoder, &frameCount)) || frameCount < 1)
|
||||
__leave;
|
||||
|
||||
// Get the Frame
|
||||
if (FAILED(IWICBitmapDecoder_GetFrame(wicDecoder, 0, &wicFrame)))
|
||||
__leave;
|
||||
|
||||
// Get the WicFrame image format
|
||||
if (FAILED(IWICBitmapFrameDecode_GetPixelFormat(wicFrame, &pixelFormat)))
|
||||
__leave;
|
||||
|
||||
// Check if the image format is supported:
|
||||
if (IsEqualGUID(&pixelFormat, &GUID_WICPixelFormat32bppPRGBA))
|
||||
{
|
||||
wicBitmapSource = (IWICBitmapSource*)wicFrame;
|
||||
}
|
||||
else
|
||||
{
|
||||
IWICFormatConverter* wicFormatConverter = NULL;
|
||||
|
||||
if (FAILED(IWICImagingFactory_CreateFormatConverter(wicFactory, &wicFormatConverter)))
|
||||
__leave;
|
||||
|
||||
if (FAILED(IWICFormatConverter_Initialize(
|
||||
wicFormatConverter,
|
||||
(IWICBitmapSource*)wicFrame,
|
||||
&GUID_WICPixelFormat32bppPRGBA,
|
||||
WICBitmapDitherTypeNone,
|
||||
NULL,
|
||||
0.0,
|
||||
WICBitmapPaletteTypeCustom
|
||||
)))
|
||||
{
|
||||
IWICFormatConverter_Release(wicFormatConverter);
|
||||
__leave;
|
||||
}
|
||||
|
||||
// Convert the image to the correct format:
|
||||
IWICFormatConverter_QueryInterface(wicFormatConverter, &IID_IWICBitmapSource, &wicBitmapSource);
|
||||
|
||||
// Cleanup the converter.
|
||||
IWICFormatConverter_Release(wicFormatConverter);
|
||||
|
||||
// Dispose the old frame now that the converted frame is in wicBitmapSource.
|
||||
IWICBitmapFrameDecode_Release(wicFrame);
|
||||
}
|
||||
|
||||
bitmapInfo.bmiHeader.biSize = sizeof(BITMAPINFOHEADER);
|
||||
bitmapInfo.bmiHeader.biWidth = rect.Width;
|
||||
bitmapInfo.bmiHeader.biHeight = -((LONG)rect.Height);
|
||||
bitmapInfo.bmiHeader.biPlanes = 1;
|
||||
bitmapInfo.bmiHeader.biBitCount = 32;
|
||||
bitmapInfo.bmiHeader.biCompression = BI_RGB;
|
||||
|
||||
screenHdc = CreateIC(L"DISPLAY", NULL, NULL, NULL);
|
||||
bufferDc = CreateCompatibleDC(screenHdc);
|
||||
bitmapHandle = CreateDIBSection(screenHdc, &bitmapInfo, DIB_RGB_COLORS, (PVOID*)&bitmapBuffer, NULL, 0);
|
||||
|
||||
// Check if it's the same rect as the requested size.
|
||||
//if (width != rect.Width || height != rect.Height)
|
||||
if (FAILED(IWICImagingFactory_CreateBitmapScaler(wicFactory, &wicScaler)))
|
||||
__leave;
|
||||
if (FAILED(IWICBitmapScaler_Initialize(wicScaler, wicBitmapSource, rect.Width, rect.Height, WICBitmapInterpolationModeFant)))
|
||||
__leave;
|
||||
if (FAILED(IWICBitmapScaler_CopyPixels(wicScaler, &rect, rect.Width * 4, rect.Width * rect.Height * 4, bitmapBuffer)))
|
||||
__leave;
|
||||
|
||||
isSuccess = TRUE;
|
||||
}
|
||||
__finally
|
||||
{
|
||||
if (wicScaler)
|
||||
{
|
||||
IWICBitmapScaler_Release(wicScaler);
|
||||
}
|
||||
|
||||
if (bufferDc)
|
||||
{
|
||||
DeleteDC(bufferDc);
|
||||
}
|
||||
|
||||
if (screenHdc)
|
||||
{
|
||||
DeleteDC(screenHdc);
|
||||
}
|
||||
|
||||
if (wicBitmapSource)
|
||||
{
|
||||
IWICBitmapSource_Release(wicBitmapSource);
|
||||
}
|
||||
|
||||
if (wicStream)
|
||||
{
|
||||
IWICStream_Release(wicStream);
|
||||
}
|
||||
|
||||
if (wicDecoder)
|
||||
{
|
||||
IWICBitmapDecoder_Release(wicDecoder);
|
||||
}
|
||||
|
||||
if (wicFactory)
|
||||
{
|
||||
IWICImagingFactory_Release(wicFactory);
|
||||
}
|
||||
|
||||
if (resourceHandle)
|
||||
{
|
||||
FreeResource(resourceHandle);
|
||||
}
|
||||
}
|
||||
|
||||
if (isSuccess)
|
||||
return bitmapHandle;
|
||||
|
||||
DeleteObject(bitmapHandle);
|
||||
return NULL;
|
||||
}
|
||||
1597
plugins-extra/NetExtrasPlugin/ports.c
Normal file
264
plugins-extra/NetExtrasPlugin/resource.h
Normal file
@@ -0,0 +1,264 @@
|
||||
//{{NO_DEPENDENCIES}}
|
||||
// Microsoft Visual C++ generated include file.
|
||||
// Used by NetExtrasPlugin.rc
|
||||
//
|
||||
#define AD_PNG 101
|
||||
#define AE_PNG 102
|
||||
#define AF_PNG 103
|
||||
#define AG_PNG 104
|
||||
#define AI_PNG 105
|
||||
#define AL_PNG 106
|
||||
#define AM_PNG 107
|
||||
#define AN_PNG 108
|
||||
#define AO_PNG 109
|
||||
#define AR_PNG 110
|
||||
#define AS_PNG 111
|
||||
#define AT_PNG 112
|
||||
#define AU_PNG 113
|
||||
#define AW_PNG 114
|
||||
#define AX_PNG 115
|
||||
#define AZ_PNG 116
|
||||
#define BA_PNG 117
|
||||
#define BB_PNG 118
|
||||
#define BD_PNG 119
|
||||
#define BE_PNG 120
|
||||
#define BF_PNG 121
|
||||
#define BG_PNG 122
|
||||
#define BH_PNG 123
|
||||
#define BI__PNG 124
|
||||
#define BJ_PNG 125
|
||||
#define BM_PNG 126
|
||||
#define BN_PNG 127
|
||||
#define BO_PNG 128
|
||||
#define BR_PNG 129
|
||||
#define BS_PNG 130
|
||||
#define BT_PNG 131
|
||||
#define BV_PNG 132
|
||||
#define BW_PNG 133
|
||||
#define BY_PNG 134
|
||||
#define BZ_PNG 135
|
||||
#define CA_PNG 136
|
||||
#define AAC_PNG 137
|
||||
#define CC_PNG 138
|
||||
#define CD_PNG 139
|
||||
#define CF_PNG 140
|
||||
#define CG_PNG 141
|
||||
#define CH_PNG 142
|
||||
#define CI_PNG 143
|
||||
#define CK_PNG 144
|
||||
#define CL_PNG 145
|
||||
#define CM_PNG 146
|
||||
#define CN_PNG 147
|
||||
#define CO_PNG 148
|
||||
#define CR_PNG 149
|
||||
#define CS_PNG 150
|
||||
#define CU_PNG 151
|
||||
#define CV_PNG 152
|
||||
#define CX_PNG 153
|
||||
#define CY_PNG 154
|
||||
#define CZ_PNG 155
|
||||
#define DE_PNG 156
|
||||
#define DJ_PNG 157
|
||||
#define DK_PNG 158
|
||||
#define DM_PNG 159
|
||||
#define DO_PNG 160
|
||||
#define DZ_PNG 161
|
||||
#define EC_PNG 162
|
||||
#define EE_PNG 163
|
||||
#define EG_PNG 164
|
||||
#define EH_PNG 165
|
||||
#define AAD_PNG 166
|
||||
#define ER_PNG 167
|
||||
#define ES_PNG 168
|
||||
#define ET_PNG 169
|
||||
#define AAE_PNG 170
|
||||
#define AAF_PNG 171
|
||||
#define FI_PNG 172
|
||||
#define FJ_PNG 173
|
||||
#define FK_PNG 174
|
||||
#define FM_PNG 175
|
||||
#define FO_PNG 176
|
||||
#define FR_PNG 177
|
||||
#define GA_PNG 178
|
||||
#define GB_PNG 179
|
||||
#define GD_PNG 180
|
||||
#define GE_PNG 181
|
||||
#define GF_PNG 182
|
||||
#define GH_PNG 183
|
||||
#define GI_PNG 184
|
||||
#define GL_PNG 185
|
||||
#define GM_PNG 186
|
||||
#define GN_PNG 187
|
||||
#define GP_PNG 188
|
||||
#define GQ_PNG 189
|
||||
#define GR_PNG 190
|
||||
#define GS_PNG 191
|
||||
#define GT_PNG 192
|
||||
#define GU_PNG 193
|
||||
#define GW_PNG 194
|
||||
#define GY_PNG 195
|
||||
#define HK_PNG 196
|
||||
#define HM_PNG 197
|
||||
#define HN_PNG 198
|
||||
#define HR_PNG 199
|
||||
#define HT_PNG 200
|
||||
#define ID_PNG 202
|
||||
#define IE_PNG 203
|
||||
#define IL_PNG 204
|
||||
#define IN_PNG 205
|
||||
#define IO_PNG 206
|
||||
#define IQ_PNG 207
|
||||
#define IR_PNG 208
|
||||
#define IS_PNG 209
|
||||
#define IT_PNG 210
|
||||
#define JM_PNG 211
|
||||
#define JO_PNG 212
|
||||
#define JP_PNG 213
|
||||
#define KE_PNG 214
|
||||
#define KG_PNG 215
|
||||
#define KH_PNG 216
|
||||
#define KI_PNG 217
|
||||
#define KM_PNG 218
|
||||
#define KN_PNG 219
|
||||
#define KP_PNG 220
|
||||
#define KR_PNG 221
|
||||
#define KW_PNG 222
|
||||
#define KY_PNG 223
|
||||
#define KZ_PNG 224
|
||||
#define LA_PNG 225
|
||||
#define LB_PNG 226
|
||||
#define LC_PNG 227
|
||||
#define LI_PNG 228
|
||||
#define LK_PNG 229
|
||||
#define LR_PNG 230
|
||||
#define LS_PNG 231
|
||||
#define LT_PNG 232
|
||||
#define LU_PNG 233
|
||||
#define LV_PNG 234
|
||||
#define LY_PNG 235
|
||||
#define MA_PNG 236
|
||||
#define MC_PNG 237
|
||||
#define MD_PNG 238
|
||||
#define ME_PNG 239
|
||||
#define MG_PNG 240
|
||||
#define MH_PNG 241
|
||||
#define MK_PNG 242
|
||||
#define ML_PNG 243
|
||||
#define MM_PNG 244
|
||||
#define MN_PNG 245
|
||||
#define MO_PNG 246
|
||||
#define MP_PNG 247
|
||||
#define MQ_PNG 248
|
||||
#define MR_PNG 249
|
||||
#define MS_PNG 250
|
||||
#define MT_PNG 251
|
||||
#define MU_PNG 252
|
||||
#define MV_PNG 253
|
||||
#define MW_PNG 254
|
||||
#define MX_PNG 255
|
||||
#define MY_PNG 256
|
||||
#define MZ_PNG 257
|
||||
#define NA_PNG 258
|
||||
#define NC_PNG 259
|
||||
#define NE_PNG 260
|
||||
#define NF_PNG 261
|
||||
#define NG_PNG 262
|
||||
#define NI_PNG 263
|
||||
#define NL_PNG 264
|
||||
#define NO_PNG 265
|
||||
#define NP_PNG 266
|
||||
#define NR_PNG 267
|
||||
#define NU_PNG 268
|
||||
#define NZ_PNG 269
|
||||
#define OM_PNG 270
|
||||
#define PA_PNG 271
|
||||
#define PE_PNG 272
|
||||
#define PF_PNG 273
|
||||
#define PG_PNG 274
|
||||
#define PH_PNG 275
|
||||
#define PK_PNG 276
|
||||
#define PL_PNG 277
|
||||
#define PM_PNG 278
|
||||
#define PN_PNG 279
|
||||
#define PR_PNG 280
|
||||
#define PS_PNG 281
|
||||
#define PT_PNG 282
|
||||
#define PW_PNG 283
|
||||
#define PY_PNG 284
|
||||
#define QA_PNG 285
|
||||
#define RE_PNG 286
|
||||
#define RO_PNG 287
|
||||
#define RS_PNG 288
|
||||
#define RU_PNG 289
|
||||
#define RW_PNG 290
|
||||
#define SA_PNG 291
|
||||
#define SB_PNG 292
|
||||
#define SC_PNG 293
|
||||
#define AAA_PNG 294
|
||||
#define SD_PNG 295
|
||||
#define SE_PNG 296
|
||||
#define SG_PNG 297
|
||||
#define SH_PNG 298
|
||||
#define SI_PNG 299
|
||||
#define SJ_PNG 300
|
||||
#define SK_PNG 301
|
||||
#define SL_PNG 302
|
||||
#define SM_PNG 303
|
||||
#define SN_PNG 304
|
||||
#define SO_PNG 305
|
||||
#define SR_PNG 306
|
||||
#define ST_PNG 307
|
||||
#define SV_PNG 308
|
||||
#define SY_PNG 309
|
||||
#define SZ_PNG 310
|
||||
#define TC_PNG 311
|
||||
#define TD_PNG 312
|
||||
#define TF_PNG 313
|
||||
#define TG_PNG 314
|
||||
#define TH_PNG 315
|
||||
#define TJ_PNG 316
|
||||
#define TK_PNG 317
|
||||
#define TL_PNG 318
|
||||
#define TM_PNG 319
|
||||
#define TN_PNG 320
|
||||
#define TO_PNG 321
|
||||
#define TR_PNG 322
|
||||
#define TT_PNG 323
|
||||
#define TV_PNG 324
|
||||
#define TW_PNG 325
|
||||
#define TZ_PNG 326
|
||||
#define UA_PNG 327
|
||||
#define UG_PNG 328
|
||||
#define UM_PNG 329
|
||||
#define US_PNG 330
|
||||
#define UY_PNG 331
|
||||
#define UZ_PNG 332
|
||||
#define VA_PNG 333
|
||||
#define VC_PNG 334
|
||||
#define VE_PNG 335
|
||||
#define VG_PNG 336
|
||||
#define VI_PNG 337
|
||||
#define VN_PNG 338
|
||||
#define VU_PNG 339
|
||||
#define AAB_PNG 340
|
||||
#define WF_PNG 341
|
||||
#define WS_PNG 342
|
||||
#define YE_PNG 343
|
||||
#define YT_PNG 344
|
||||
#define ZA_PNG 345
|
||||
#define ZM_PNG 346
|
||||
#define ZW_PNG 347
|
||||
#define HU_PNG 348
|
||||
#define IDD_DIALOG1 349
|
||||
#define IDD_OPTIONS 349
|
||||
|
||||
// Next default values for new objects
|
||||
//
|
||||
#ifdef APSTUDIO_INVOKED
|
||||
#ifndef APSTUDIO_READONLY_SYMBOLS
|
||||
#define _APS_NEXT_RESOURCE_VALUE 351
|
||||
#define _APS_NEXT_COMMAND_VALUE 40001
|
||||
#define _APS_NEXT_CONTROL_VALUE 1001
|
||||
#define _APS_NEXT_SYMED_VALUE 100
|
||||
#endif
|
||||
#endif
|
||||
BIN
plugins-extra/NetExtrasPlugin/resources/ad.png
Normal file
|
After Width: | Height: | Size: 643 B |
BIN
plugins-extra/NetExtrasPlugin/resources/ae.png
Normal file
|
After Width: | Height: | Size: 408 B |
BIN
plugins-extra/NetExtrasPlugin/resources/af.png
Normal file
|
After Width: | Height: | Size: 604 B |
BIN
plugins-extra/NetExtrasPlugin/resources/ag.png
Normal file
|
After Width: | Height: | Size: 591 B |
BIN
plugins-extra/NetExtrasPlugin/resources/ai.png
Normal file
|
After Width: | Height: | Size: 643 B |
BIN
plugins-extra/NetExtrasPlugin/resources/al.png
Normal file
|
After Width: | Height: | Size: 600 B |
BIN
plugins-extra/NetExtrasPlugin/resources/am.png
Normal file
|
After Width: | Height: | Size: 497 B |
BIN
plugins-extra/NetExtrasPlugin/resources/an.png
Normal file
|
After Width: | Height: | Size: 488 B |
BIN
plugins-extra/NetExtrasPlugin/resources/ao.png
Normal file
|
After Width: | Height: | Size: 428 B |
BIN
plugins-extra/NetExtrasPlugin/resources/ar.png
Normal file
|
After Width: | Height: | Size: 506 B |
BIN
plugins-extra/NetExtrasPlugin/resources/as.png
Normal file
|
After Width: | Height: | Size: 647 B |
BIN
plugins-extra/NetExtrasPlugin/resources/at.png
Normal file
|
After Width: | Height: | Size: 403 B |
BIN
plugins-extra/NetExtrasPlugin/resources/au.png
Normal file
|
After Width: | Height: | Size: 673 B |
BIN
plugins-extra/NetExtrasPlugin/resources/aw.png
Normal file
|
After Width: | Height: | Size: 524 B |
BIN
plugins-extra/NetExtrasPlugin/resources/ax.png
Normal file
|
After Width: | Height: | Size: 663 B |
BIN
plugins-extra/NetExtrasPlugin/resources/az.png
Normal file
|
After Width: | Height: | Size: 589 B |
BIN
plugins-extra/NetExtrasPlugin/resources/ba.png
Normal file
|
After Width: | Height: | Size: 593 B |
BIN
plugins-extra/NetExtrasPlugin/resources/bb.png
Normal file
|
After Width: | Height: | Size: 585 B |
BIN
plugins-extra/NetExtrasPlugin/resources/bd.png
Normal file
|
After Width: | Height: | Size: 504 B |
BIN
plugins-extra/NetExtrasPlugin/resources/be.png
Normal file
|
After Width: | Height: | Size: 449 B |
BIN
plugins-extra/NetExtrasPlugin/resources/bf.png
Normal file
|
After Width: | Height: | Size: 497 B |
BIN
plugins-extra/NetExtrasPlugin/resources/bg.png
Normal file
|
After Width: | Height: | Size: 462 B |
BIN
plugins-extra/NetExtrasPlugin/resources/bh.png
Normal file
|
After Width: | Height: | Size: 457 B |
BIN
plugins-extra/NetExtrasPlugin/resources/bi.png
Normal file
|
After Width: | Height: | Size: 675 B |
BIN
plugins-extra/NetExtrasPlugin/resources/bj.png
Normal file
|
After Width: | Height: | Size: 486 B |
BIN
plugins-extra/NetExtrasPlugin/resources/bm.png
Normal file
|
After Width: | Height: | Size: 611 B |
BIN
plugins-extra/NetExtrasPlugin/resources/bn.png
Normal file
|
After Width: | Height: | Size: 639 B |
BIN
plugins-extra/NetExtrasPlugin/resources/bo.png
Normal file
|
After Width: | Height: | Size: 500 B |
BIN
plugins-extra/NetExtrasPlugin/resources/br.png
Normal file
|
After Width: | Height: | Size: 593 B |
BIN
plugins-extra/NetExtrasPlugin/resources/bs.png
Normal file
|
After Width: | Height: | Size: 526 B |
BIN
plugins-extra/NetExtrasPlugin/resources/bt.png
Normal file
|
After Width: | Height: | Size: 631 B |
BIN
plugins-extra/NetExtrasPlugin/resources/bv.png
Normal file
|
After Width: | Height: | Size: 512 B |
BIN
plugins-extra/NetExtrasPlugin/resources/bw.png
Normal file
|
After Width: | Height: | Size: 443 B |
BIN
plugins-extra/NetExtrasPlugin/resources/by.png
Normal file
|
After Width: | Height: | Size: 514 B |
BIN
plugins-extra/NetExtrasPlugin/resources/bz.png
Normal file
|
After Width: | Height: | Size: 600 B |
BIN
plugins-extra/NetExtrasPlugin/resources/ca.png
Normal file
|
After Width: | Height: | Size: 628 B |
BIN
plugins-extra/NetExtrasPlugin/resources/catalonia.png
Normal file
|
After Width: | Height: | Size: 398 B |
BIN
plugins-extra/NetExtrasPlugin/resources/cc.png
Normal file
|
After Width: | Height: | Size: 625 B |
BIN
plugins-extra/NetExtrasPlugin/resources/cd.png
Normal file
|
After Width: | Height: | Size: 528 B |
BIN
plugins-extra/NetExtrasPlugin/resources/cf.png
Normal file
|
After Width: | Height: | Size: 614 B |
BIN
plugins-extra/NetExtrasPlugin/resources/cg.png
Normal file
|
After Width: | Height: | Size: 521 B |
BIN
plugins-extra/NetExtrasPlugin/resources/ch.png
Normal file
|
After Width: | Height: | Size: 367 B |
BIN
plugins-extra/NetExtrasPlugin/resources/ci.png
Normal file
|
After Width: | Height: | Size: 453 B |
BIN
plugins-extra/NetExtrasPlugin/resources/ck.png
Normal file
|
After Width: | Height: | Size: 586 B |
BIN
plugins-extra/NetExtrasPlugin/resources/cl.png
Normal file
|
After Width: | Height: | Size: 450 B |
BIN
plugins-extra/NetExtrasPlugin/resources/cm.png
Normal file
|
After Width: | Height: | Size: 525 B |
BIN
plugins-extra/NetExtrasPlugin/resources/cn.png
Normal file
|
After Width: | Height: | Size: 472 B |
BIN
plugins-extra/NetExtrasPlugin/resources/co.png
Normal file
|
After Width: | Height: | Size: 483 B |
BIN
plugins-extra/NetExtrasPlugin/resources/cr.png
Normal file
|
After Width: | Height: | Size: 477 B |
BIN
plugins-extra/NetExtrasPlugin/resources/cs.png
Normal file
|
After Width: | Height: | Size: 439 B |
BIN
plugins-extra/NetExtrasPlugin/resources/cu.png
Normal file
|
After Width: | Height: | Size: 563 B |
BIN
plugins-extra/NetExtrasPlugin/resources/cv.png
Normal file
|
After Width: | Height: | Size: 529 B |
BIN
plugins-extra/NetExtrasPlugin/resources/cx.png
Normal file
|
After Width: | Height: | Size: 608 B |
BIN
plugins-extra/NetExtrasPlugin/resources/cy.png
Normal file
|
After Width: | Height: | Size: 428 B |
BIN
plugins-extra/NetExtrasPlugin/resources/cz.png
Normal file
|
After Width: | Height: | Size: 476 B |
BIN
plugins-extra/NetExtrasPlugin/resources/de.png
Normal file
|
After Width: | Height: | Size: 545 B |
BIN
plugins-extra/NetExtrasPlugin/resources/dj.png
Normal file
|
After Width: | Height: | Size: 572 B |
BIN
plugins-extra/NetExtrasPlugin/resources/dk.png
Normal file
|
After Width: | Height: | Size: 495 B |
BIN
plugins-extra/NetExtrasPlugin/resources/dm.png
Normal file
|
After Width: | Height: | Size: 620 B |
BIN
plugins-extra/NetExtrasPlugin/resources/do.png
Normal file
|
After Width: | Height: | Size: 508 B |
BIN
plugins-extra/NetExtrasPlugin/resources/dz.png
Normal file
|
After Width: | Height: | Size: 582 B |
BIN
plugins-extra/NetExtrasPlugin/resources/ec.png
Normal file
|
After Width: | Height: | Size: 500 B |
BIN
plugins-extra/NetExtrasPlugin/resources/ee.png
Normal file
|
After Width: | Height: | Size: 429 B |
BIN
plugins-extra/NetExtrasPlugin/resources/eg.png
Normal file
|
After Width: | Height: | Size: 465 B |
BIN
plugins-extra/NetExtrasPlugin/resources/eh.png
Normal file
|
After Width: | Height: | Size: 508 B |
BIN
plugins-extra/NetExtrasPlugin/resources/england.png
Normal file
|
After Width: | Height: | Size: 496 B |
BIN
plugins-extra/NetExtrasPlugin/resources/er.png
Normal file
|
After Width: | Height: | Size: 653 B |
BIN
plugins-extra/NetExtrasPlugin/resources/es.png
Normal file
|
After Width: | Height: | Size: 469 B |
BIN
plugins-extra/NetExtrasPlugin/resources/et.png
Normal file
|
After Width: | Height: | Size: 592 B |
BIN
plugins-extra/NetExtrasPlugin/resources/europeanunion.png
Normal file
|
After Width: | Height: | Size: 479 B |
BIN
plugins-extra/NetExtrasPlugin/resources/fam.png
Normal file
|
After Width: | Height: | Size: 532 B |
BIN
plugins-extra/NetExtrasPlugin/resources/fi.png
Normal file
|
After Width: | Height: | Size: 489 B |
BIN
plugins-extra/NetExtrasPlugin/resources/fj.png
Normal file
|
After Width: | Height: | Size: 610 B |
BIN
plugins-extra/NetExtrasPlugin/resources/fk.png
Normal file
|
After Width: | Height: | Size: 648 B |
BIN
plugins-extra/NetExtrasPlugin/resources/fm.png
Normal file
|
After Width: | Height: | Size: 552 B |
BIN
plugins-extra/NetExtrasPlugin/resources/fo.png
Normal file
|
After Width: | Height: | Size: 474 B |
BIN
plugins-extra/NetExtrasPlugin/resources/fr.png
Normal file
|
After Width: | Height: | Size: 545 B |
BIN
plugins-extra/NetExtrasPlugin/resources/ga.png
Normal file
|
After Width: | Height: | Size: 489 B |
BIN
plugins-extra/NetExtrasPlugin/resources/gb.png
Normal file
|
After Width: | Height: | Size: 599 B |
BIN
plugins-extra/NetExtrasPlugin/resources/gd.png
Normal file
|
After Width: | Height: | Size: 637 B |
BIN
plugins-extra/NetExtrasPlugin/resources/ge.png
Normal file
|
After Width: | Height: | Size: 594 B |
BIN
plugins-extra/NetExtrasPlugin/resources/gf.png
Normal file
|
After Width: | Height: | Size: 545 B |
BIN
plugins-extra/NetExtrasPlugin/resources/gh.png
Normal file
|
After Width: | Height: | Size: 490 B |
BIN
plugins-extra/NetExtrasPlugin/resources/gi.png
Normal file
|
After Width: | Height: | Size: 463 B |
BIN
plugins-extra/NetExtrasPlugin/resources/gl.png
Normal file
|
After Width: | Height: | Size: 470 B |