Initial Commit

master
Kirigaya Kazuto 2018-03-03 22:13:02 +08:00
commit bc0bea9632
7 changed files with 17401 additions and 0 deletions

9
.gitignore vendored Normal file
View File

@ -0,0 +1,9 @@
bin/
obj/
*.depend
*.layout
/*.dll
/*.txt
/*.exe

3
.gitmodules vendored Normal file
View File

@ -0,0 +1,3 @@
[submodule "CurlWrapper"]
path = CurlWrapper
url = https://github.com/kiritow/CurlWrapper

57
BaiduNetDiskLinkCheck.cbp Normal file
View File

@ -0,0 +1,57 @@
<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
<CodeBlocks_project_file>
<FileVersion major="1" minor="6" />
<Project>
<Option title="BaiduNetDiskLinkCheck" />
<Option pch_mode="2" />
<Option compiler="gcc" />
<Build>
<Target title="Debug">
<Option output="bin/Debug/BaiduNetDiskLinkCheck" prefix_auto="1" extension_auto="1" />
<Option object_output="obj/Debug/" />
<Option type="1" />
<Option compiler="gcc" />
<Compiler>
<Add option="-g" />
</Compiler>
</Target>
<Target title="Release">
<Option output="bin/Release/BaiduNetDiskLinkCheck" prefix_auto="1" extension_auto="1" />
<Option object_output="obj/Release/" />
<Option type="1" />
<Option compiler="gcc" />
<Compiler>
<Add option="-O2" />
</Compiler>
<Linker>
<Add option="-s" />
</Linker>
</Target>
</Build>
<Compiler>
<Add option="-Wall" />
<Add option="-fexceptions" />
<Add directory="CurlWrapper/include" />
</Compiler>
<Linker>
<Add library="CurlWrapper/lib/x86/libcurl.lib" />
</Linker>
<Unit filename="CurlWrapper/include/NetworkWrapper.h" />
<Unit filename="CurlWrapper/include/curl/curl.h" />
<Unit filename="CurlWrapper/include/curl/curlver.h" />
<Unit filename="CurlWrapper/include/curl/easy.h" />
<Unit filename="CurlWrapper/include/curl/mprintf.h" />
<Unit filename="CurlWrapper/include/curl/multi.h" />
<Unit filename="CurlWrapper/include/curl/stdcheaders.h" />
<Unit filename="CurlWrapper/include/curl/system.h" />
<Unit filename="CurlWrapper/include/curl/typecheck-gcc.h" />
<Unit filename="CurlWrapper/src/NetworkWrapper.cpp" />
<Unit filename="main.cpp" />
<Extensions>
<code_completion />
<envvars />
<debugger />
<lib_finder disable_auto="1" />
</Extensions>
</Project>
</CodeBlocks_project_file>

1
CurlWrapper Submodule

@ -0,0 +1 @@
Subproject commit cc89db4f21718ad57f5b9eb04f705daaa9cee558

17190
json.hpp Normal file

File diff suppressed because it is too large Load Diff

127
main.cpp Normal file
View File

@ -0,0 +1,127 @@
#include "NetworkWrapper.h"
#include "json.hpp"
#include <vector>
#include <string>
#include <iostream>
#include <fstream>
using namespace std;
using namespace nlohmann;
#define USER_AGENT "Mozilla/5.0 (Windows NT 6.3; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/61.0.3163.79 Safari/537.36"
string vastr;
string unstr;
vector<string> errdic;
/// Return: -1 Failed, 0 URL broken, 1 URL ok, 2 URL unknown
int CheckURL(const string& url)
{
string turl=url;
string content;
while(true)
{
HTTPConnection c;
c.setUserAgent(USER_AGENT);
c.setURL(turl);
c.setDataOutputBuffer(nullptr,0);
c.setSSLVerifyHost(false);
c.setSSLVerifyPeer(false);
//cout<<"Performing on "<<turl<<endl;
if(c.perform()!=0)
{
return -1;
}
//cout<<"ResponseCode: "<<c.getResponseCode()<<endl;
if(c.getResponseCode()!=200)
{
if(c.getResponseCode()==302)
{
turl=c.getRedirectURL();
//cout<<"Redirect to "<<turl<<endl;
}
else return -1;
}
else
{
content=string((char*)c.getDataOutputBuffer(),c.getDataOutputBufferLength());
break;
}
}
/*
do {
ofstream ofs("out.txt");
ofs<<content<<endl;
}while(0);
//*/
if(content.find(vastr)!=string::npos)
{
return 1;
}
if(content.find(unstr)!=string::npos)
{
return 2;
}
for(auto& s:errdic)
{
if(content.find(s)!=string::npos)
{
return 0;
}
}
/// ...
return 3;
}
int main(int argc,char** argv)
{
do{
ifstream ifs("strings_utf8.json");
string str,tmp;
while(getline(ifs,tmp)) str.append(tmp);
json j=json::parse(str);
vastr=j["ValidContent"];
unstr=j["UnknownContent"];
for(auto& s:j["ErrorContent"])
{
errdic.push_back(s["content"].get<string>());
}
}while(0);
if(argc==1)
{
while(true)
{
cout<<"Please input URL to check:"<<endl;
string url;
if(getline(cin,url))
{
cout<< [&](){switch(CheckURL(url)){
case -1:return "Internal Error";
case 0:return "URL Broken";
case 1:return "URL OK";
case 2:return "URL Unknown Status";
default:return "Wrong Status";}}() << endl;
}
else break;
}
}
else
{
cout<< [&](){switch(CheckURL(argv[1])){
case -1:return "Internal Error";
case 0:return "URL Broken";
case 1:return "URL OK";
case 2:return "URL Unknown Status";
default:return "Wrong Status";}}() << endl;
}
}

14
strings_utf8.json Normal file
View File

@ -0,0 +1,14 @@
{
"ValidContent" : "百度网盘-分享无限制",
"ErrorContent" : [
{
"name":"Link outdated",
"content":"<title>百度网盘-链接已失效</title>"
},
{
"name":"Link not exist",
"content":"<title>百度网盘-链接不存在</title>"
}
],
"UnknownContent": "<title>百度网盘 请输入提取密码</title>"
}