Project ThreadsCurrent features-->
Detect signatures & personal texts-->
Post signatures & personal texts-->
Has RPC capabilities-->
Comes with chrome extensionNotes:
I said that i wouldn't be releasing this project to the public. Things have changed. I believe someone else could continue or find this source code very helpful. [Full disclosure] I found that most of my time would have been spent finding a solution to the broken BBcode HTTPS encoding issue, because of this, I've decided to drop this project.
Development: Jsoup is used to scrape parse HTTP texts. You can read more about the library online. For each connections, the first connection will fail (in an attempt to take control of the session), the second connection will pass (where you can change signatures). If the users refreshes their browser after the first failed connection, then the second connection will also fail.
Before you can use the program, you must replace the userCookie with the user cookie, example:
setUserCookie("PHPSESSID=doijsodijogsijgi849gijksdgsdo; SMFCookie129=osppsdkg%foidjfobj%kfjkdfjljdf%;");
From my tests, this value is almost, always constant....
You must also set the users SC token. This can be found on the logout button on bitcointalk:
setUserSC("ksdfosaofi923982h39fj23gj3gkl");
The purpose of the browser extension, was to collect these information from the users browser, send it to our Database, where the Java program/server can access it and use them to save signatures....
If you would like my information/documentation on how to build/use this program, please contact me.
What to doIn the ExtractToUser class, I have only provided a simple function which detects whether the profileInformation edit was successful. If it's successful, what you need to do now, is create another method which will go to the users profile, and scrape & update all the information in the DB. you also need to scrape the signature which will now be displayed in a HTML format. This will allow you to compare it (any time) to check if the user has altered or removed it.
Running the ServerThe default location of the server is at:
http://localhost:8000/?query=profileYou can choose how you want to handle HTTP connection from the PHP server in the HTTPhandle pakcage, Request Class, on its "handle" method
Design Work Flow
The extensions should collect the document.cookie & sc token, send it to the PHP server every 30 minutes. The PHP server will take the data, give it to the Java App server, (which will try to save the profileInfo - without any changes) to confirm whether it's valid or not. If it's valid, it will update the database record.
Using Jsoup, every hour the Java will go through each campaign, and all the users which are in those campaigns. Since it saved their HTML signature from when it set it, it will compare whatever it find now, to what is in the database. It will do the same thing for the users personal texts. It will go to the users profile, and look at posts. It will collect posts, from the date the campaign started, to the present. Each post has date & time on its header, it will help you keep track... Each post also has a href link, which contains a unique ID, for example: "
https://bitcointalksearch.org/topic/sigbuddy-now-open-sourced-1520107" this value 1520107.msg15292702, or the whole link, should be hashd in sha1 to be used as a unique id for each post. These posts will be collected & their contents. You must remove the quotes from each post.
What is considered spam?
I compared the average posts of several members & texts (100 lines), and the minimum amount of effort, to not be considered as a spam is having a post with more than 9 words, and 42 characters. That is it.
Once each post has been collected and confirmed not as spam, they should be scraped and sent off to your PHP server, which will insert it into your database, so the ad campaign owner can review and select which posts they will not pay for.
How are ads setup?
The campaign manager should be allowed to select upto 5 main boards where posts will automatically be rejected. They should also select minimum ranks, whether the user has negative trust or not & any other feature which you like.
What about extensions?
Some users might wish not to be included in campaigns. Because of this, a freeze button was introduced. When a user clicks it, the server will not place them in any campaigns until they have unfrozen their accounts. Users who are also inactive for more than 4 days, are put in a frozen state.
The active status in the extension is used to show whether a user is currently in a campaign, or whether the user has been banned. A user has been banned, when they receive too much kicks from advertisers. Their accounts should also be reviewed before its banned from using this service.