123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296 |
- <?php
- // INCLUDE
- include_once("crawl.php");
- include_once("config.php");
- // END
- ?>
- <!DOCTYPE html>
- <html lang="en-US">
- <head>
- <title>Seed</title>
- <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
- <meta name="viewport" content="width=device-width, initial-scale=1" />
- <meta name="description" content="Open Source Search Engine, foss database, popular sites, media, and more." />
- <style rel="stylesheet" type="text/css">
- @import url('https://fonts.googleapis.com/css?family=Ubuntu+Mono&display=swap');
- @import url('https://fonts.googleapis.com/css2?family=Monoton&display=swap');
- @media only screen and (min-width: 2001px) { body { max-width: 750px; } }
- @media only screen and (max-width: 2000px) { body { max-width: 750px; } }
- @media only screen and (max-width: 1400px) { body { max-width: 750px; } }
- @media only screen and (max-width: 1200px) { body { max-width: 700px; } }
- @media only screen and (max-width: 1000px) { body { max-width: 700px; } }
- @media only screen and (max-width: 800px) { body { max-width: 700px; } }
- /* @media only screen and (max-width: 700px) { body { max-width: 600px; } }
- @media only screen and (max-width: 600px) { body { max-width: 500px; } }
- @media only screen and (max-width: 500px) { body { max-width: 450px; } }
- @media only screen and (max-width: 400px) { body { max-width: 350px; } } */
-
- html {
- font-family: "Ubuntu Mono", sans-serif;
- background-color: #222222;
- color: #ddddff;
- padding: 4px;
- margin: 0 auto;
- font-size: 16px;
- min-width: 700px;
- }
- body { margin: 0 auto; }
- a { color: #9900ff; }
- a:hover { color: #dd00ff; text-decoration: none; }
- table { width: 100%; }
- p { padding: 5px; }
-
- .menu {
- font-size: 20px;
- background: #131313;
- padding: 3px 3px 3px 3px;
- border: solid 1px #444444;
- width: 95%;
- margin: auto;
- border-radius: 4px;
- box-shadow: 0px 0px 10px #000000;
- }
- .menu a {
- color: silver;
- text-decoration: none;
- padding: 3px 10px 3px 10px;
- /* some effects */
- transition: ease-in .4s color;
- -moz-transition: ease-in .4s color;
- -webkit-transition: ease-in .4s color;
- -o-transition: ease-in .4s color;
- }
- .menu a:hover {
- color: white;
- text-decoration: none;
- }
- .header {
- font-family: "Monoton", sans-serif;
- font-size: 28px;
- width: 40px;
- color: #aa00ff;
- }
-
- #quote {
- max-width: 90%;
- background-color: #000000;
- border: solid 1px #101010;
- radius: 4px;
- font-size: 16px;
- padding: 4px;
- margin: 0 auto;
- }
- #searchbar {
- font-size: 20px;
- background-color: #131313;
- border: solid 1px #434343;
- color: #ececec;
- padding: 4px;
- width: 540px;
- border-radius: 4px;
- }
- input, button {
- font-size: 20px;
- background-color: #131313;
- border: solid 1px #434343;
- color: #ececec;
- padding: 4px;
- border-radius: 4px;
- }
- .container { padding: 12px; }
- .footer { font-size: 16px; color: #565656; text-align: center; }
- .footer a { text-decoration: none; }
- .note { color: red; font-weight: 500; padding: 7px; }
- .rfloat { float: right; position: inline-block; }
- </style>
- </head>
- <body>
- <table><tr><td>
- <div class="header">SEED</div>
- </td><td>
- <div class="menu"><!--
- --><a href="index.php">Search</a><!--
- --><a href="index.php?about">About</a><!--
- --><a href="index.php?submit">Submit</a><!--
- --></div>
- </td></tr></table>
-
- <div class="container">
- <p>
- <?php
- // Simple search engine paired with the crawler!
- // (C) Chris Dorman, 2021 CC-BY-SA 3.0
- $searchcount = "0";
- function filterSearchKeys($query){
- $query = trim(preg_replace("/(\s+)+/", " ", $query));
- $words = array();
- // expand this list with your words.
- $list = array("in","it","a","the","of","or","I","you","he","me","us","they","she","to","but","that","this","those","then");
- $c = 0;
- foreach(explode(" ", $query) as $key){
- if (in_array($key, $list)){
- continue;
- }
- $words[] = $key;
- // If over X words in queue for search, stop
- if ($c >= $GLOBALS['max_word_search_array']){
- break;
- }
- $c++;
- }
- return $words;
- }
- if(isset($_GET['search']) && $_GET['search']!="")
- {
- $searchquery = stripslashes(htmlentities($_GET['search']));
- $searchdb = file_get_contents($database);
- $searchbuffer = explode("URL: ", $searchdb);
- ?>
- <form action="index.php" method="get">
- <span style="font-size: 20px; padding-right: 8px; ">Search: </span><input type="text" name="search" id="searchbar"><input type="submit" value="Go">
- </form>
- <br /><br />
- <?php
- array_shift($searchbuffer);
- foreach($searchbuffer as $site) {
- if(stripos($site, $searchquery) !== false) {
- $url = explode("\n", $site); // $url[1]
- $pretitle = explode("Title: ", $site);
- $title = explode("Description: ", $pretitle[1]);
- $predesc = explode("Description: ", $site); // Used to calculate descriptions with line breaks
- $desc = explode("Keywords: ", $predesc[1]); // $desc[0]
- echo "<a href='" . $url[0] . "'>" . $title[0] . "</a><br />\n";
- echo "<p style='font-size: $descfontsize;'>"
- . "<span style='color:#00BB00;padding-bottom:4px;'>" . $url[0] . "</span><br />"
- . $desc[0] . "</p><br />\n";
- $searchcount++;
- }
- // IF there's too many finds, don't flood the page
- if($searchcount>$maxfinds) { break; }
- }
- // Didn't find any / lots of direct comparisons to the string
- // lets do a simple word by word search algorithm
- $searchedbuf = "";
- $finalbuf = "";
- if($searchcount < "25") {
- $searchkeys = filterSearchKeys($searchquery);
- $cnt = 1;
- foreach($searchkeys as $search) {
- if($cnt != count($searchkeys)) {
- foreach($searchbuffer as $site2) {
- if(stripos($site2, $search) !== false) {
- $searchedbuf .= "URL: " . $site2 . "\n";
- }
- }
- }
- if($cnt == count($searchkeys)) {
- foreach(explode("URL: ", $searchedbuf) as $sitebuf) {
- if(stripos($sitebuf, $search) !== false) {
- $finalbuf .= "URL: " . $sitebuf . "\n";
- }
- }
- }
- $cnt++;
- }
- $searchbuffer2 = explode("URL: ", $finalbuf);
- array_shift($searchbuffer2);
- foreach($searchbuffer2 as $searched) {
- $url = explode("\n", $searched); // $url[1]
- $pretitle = explode("Title: ", $searched);
- $title = explode("Description: ", $pretitle[1]);
- $predesc = explode("Description: ", $searched); // Used to calculate descriptions with line breaks
- $desc = explode("Keywords: ", $predesc[1]); // $desc[0]
- echo "<a href='" . $url[0] . "'>" . $title[0] . "</a><br />\n";
- echo "<p style='font-size: $descfontsize;'>"
- . "<span style='color:#00BB00;padding-bottom:4px;'>" . $url[0] . "</span><br />"
- . $desc[0] . "</p><br />\n";
- $searchcount++;
- }
- }
- echo "<p>Found $searchcount results</p>";
- echo "<br />\n";
- }
- else if(isset($_GET['crawl']) && $_GET['crawl']!="")
- {
- $crawlurl = htmlentities(stripslashes($_GET['crawl']));
- if(filter_var($crawlurl, FILTER_VALIDATE_URL)) {
- echo "Crawling $crawlurl, please wait this can take a few!<br />\n";
- $crawl = crawl_page($crawlurl, $crawl_depth, $database);
- if ($crawl == 3) {
- echo "";
- } else {
- echo "$crawlurl added to database!";
- }
- } else {
- echo "ERROR: Invalid URL format!";
- }
- }
- else if(isset($_GET['about']))
- {
- echo "<h3>About seed</h3>\n";
- echo "<p>Seed is the most simple yet most secure, non-tracking, open source search engine primarily around the free and open source community!"
- . " Building a search engine database requires resources, and lots of crawling! Help us out in providing us with some helpful links used to"
- . " add content to our database!</p>";
- }
- else if(isset($_GET['submit']))
- {
- echo "<h3>Submit a URL into the seed</h3>\n";
- echo "By submitting a URL into seed's web crawler prompt, you acknowledge that you're authorizing us to crawl the given link!<br />";
- echo "<form action='index.php' method='get'>";
- echo "URL: <input type='text' name='crawl'><input type='submit' value='Crawl'>";
- echo "</form>";
- }
- else
- {
- ?>
- <form action="index.php" method="get">
- <span style="font-size: 20px; padding-right: 8px; ">Search: </span><input type="text" name="search" id="searchbar"><input type="submit" value="Go">
- </form>
- <?php
- }
- ?>
- <br />
- <br />
- <div id="quote">
- <?php
- $quote = file_get_contents("quotes/" . rand(1,80) . ".txt");
- echo nl2br(stripslashes(htmlentities($quote)));
- ?>
- </div>
- </p>
- </div>
- <div class="footer">
- © Seed, 2021
- </div>
- </body>
- </html>
|