diff --git a/SimpleX/__pycache__/regex_simplexlinks.cpython-311.pyc b/SimpleX/__pycache__/regex_simplexlinks.cpython-311.pyc deleted file mode 100644 index 1fe6ae3..0000000 Binary files a/SimpleX/__pycache__/regex_simplexlinks.cpython-311.pyc and /dev/null differ diff --git a/SimpleX/__pycache__/utils.cpython-311.pyc b/SimpleX/__pycache__/utils.cpython-311.pyc deleted file mode 100644 index 965119d..0000000 Binary files a/SimpleX/__pycache__/utils.cpython-311.pyc and /dev/null differ diff --git a/SimpleX/__pycache__/utils.cpython-313.pyc b/SimpleX/__pycache__/utils.cpython-313.pyc deleted file mode 100644 index d46565c..0000000 Binary files a/SimpleX/__pycache__/utils.cpython-313.pyc and /dev/null differ diff --git a/scripts/lantern.py b/scripts/lantern.py index 43e5c8c..a4d973d 100644 --- a/scripts/lantern.py +++ b/scripts/lantern.py @@ -229,8 +229,28 @@ Maintenance: newrow=[instance,category,name,url,sensi,desc,'YES','100'] print_colors(f"[+] NEWROW= {newrow}") # (rest is automatic: status, score, instance is = '' because it is your own instance) - # TODO check if the entry doesnt already exist in verified.csv and in unverified.csv - # if it doesnt exist, add it into unverified.csv + # delete existing entries in verified.csv + vdf_same_url_filter = vdf["URL"] == url # check for same url + vdf_same_url_filter_count = vdf_same_url_filter.sum() # total url matches + if vdf_same_url_filter_count > 0: + print(f"Found {vdf_same_url_filter_count} row(s) with the same url in verified.csv") + for index, row in vdf[vdf_same_url_filter].iterrows(): + print_colors(f"[+] ROW[{index}]= {list(row)}") + vdf = vdf[~vdf_same_url_filter].reset_index(drop=True) # keep only entries that do not match filter + print(f"Deleted {vdf_same_url_filter_count} row(s) with the same url in verified.csv") + if desc == '': # if the description is empty = it means that it goes in unverified.csv, so save modified verified.csv file now + vdf.to_csv(verifiedcsvfile, index=False) + # delete existing entries in unverified.csv + uvdf_same_url_filter = uvdf["URL"] == url # check for same url + uvdf_same_url_filter_count = uvdf_same_url_filter.sum() # total url matches + if uvdf_same_url_filter_count > 0: + print(f"Found {uvdf_same_url_filter_count} row(s) with the same url in unverified.csv") + for index, row in uvdf[uvdf_same_url_filter].iterrows(): + print_colors(f"[+] ROW[{index}]= {list(row)}") + uvdf = uvdf[~uvdf_same_url_filter].reset_index(drop=True) # keep only entries that do not match filter + print(f"Deleted {uvdf_same_url_filter_count} row(s) with the same url in unverified.csv") + if desc != '': # if the description isnt empty = it means that it goes in verified.csv, so save modified unverified.csv file now + uvdf.to_csv(unverifiedcsvfile, index=False) if desc == '': # if the description is empty = it means that it goes in unverified.csv print("Adding new row in unverified.csv since description is empty") uvdf.loc[-1] = newrow # adding a row @@ -1438,3 +1458,4 @@ Maintenance: if __name__ == '__main__': main() + diff --git a/www/footer.php b/www/footer.php index f72aa2d..3411e03 100644 --- a/www/footer.php +++ b/www/footer.php @@ -11,24 +11,11 @@ if (($handle = fopen($csvfile, "r")) !== FALSE) { $oldcatname=""; while (($data = fgetcsv($handle, 1000, ",",'"','\\')) !== FALSE) { -$data[0]=preg_replace("/[^a-zA-Z0-9:\/.\ -✔️❌]/", "", $data[0]); // PREVENT ALL MALICIOUS PHP PAYLOADS FROM BEING EXECUTED FROM CSV FILES! - $data[0] = htmlspecialchars($data[0]); - $data[1] = htmlspecialchars($data[1]); - $data[2] = htmlspecialchars($data[2]); - $data[3] = htmlspecialchars($data[3]); - $data[4] = htmlspecialchars($data[4]); - $data[5] = htmlspecialchars($data[5]); - $data[6] = htmlspecialchars($data[6]); - $data[7] = htmlspecialchars($data[7]); - - $data[1]=preg_replace("/[^a-zA-Z0-9:\/.\ -✔️❌]/", "", $data[1]); - $data[2]=preg_replace("/[^a-zA-Z0-9:\/.\ -✔️❌]/", "", $data[2]); - $data[3]=preg_replace("/[^a-zA-Z0-9:\/.\ -✔️❌]/", "", $data[3]); - $data[4]=preg_replace("/[^a-zA-Z0-9:\/.\ -✔️❌]/", "", $data[4]); - $data[5]=preg_replace("/[^a-zA-Z0-9:\/.\ -✔️❌]/", "", $data[5]); - $data[6]=preg_replace("/[^a-zA-Z0-9:\/.\ -✔️❌]/", "", $data[6]); - $data[7]=preg_replace("/[^a-zA-Z0-9:\/.\ -✔️❌]/", "", $data[7]); + for ($i = 0; $i < count($data); $i++) { + $data[$i] = htmlspecialchars($data[$i]); + $data[$i] = preg_replace("/[^a-zA-Z0-9:\/.\ -✔️❌]/", "", $data[$i]); + } $num = count($data); //echo "

" . $data[1] . "

"; diff --git a/www/header.php b/www/header.php index 0e360fb..0073bf1 100644 --- a/www/header.php +++ b/www/header.php @@ -11,23 +11,11 @@ if (($handle = fopen($csvfile, "r")) !== FALSE) { while (($data = fgetcsv($handle, 1000, ",",'"','\\')) !== FALSE) { //PREVENT ALL MALICIOUS PHP PAYLOADS FROM BEING EXECUTED FROM CSV FILES! - $data[0] = htmlspecialchars($data[0]); - $data[1] = htmlspecialchars($data[1]); - $data[2] = htmlspecialchars($data[2]); - $data[3] = htmlspecialchars($data[3]); - $data[4] = htmlspecialchars($data[4]); - $data[5] = htmlspecialchars($data[5]); - $data[6] = htmlspecialchars($data[6]); - $data[7] = htmlspecialchars($data[7]); + for ($i = 0; $i < count($data); $i++) { + $data[$i] = htmlspecialchars($data[$i]); + $data[$i] = preg_replace("/[^a-zA-Z0-9:\/.\ -✔️❌]/", "", $data[$i]); + } - $data[0]=preg_replace("/[^a-zA-Z0-9:\/.\ -✔️❌]/", "", $data[0]); - $data[1]=preg_replace("/[^a-zA-Z0-9:\/.\ -✔️❌]/", "", $data[1]); - $data[2]=preg_replace("/[^a-zA-Z0-9:\/.\ -✔️❌]/", "", $data[2]); - $data[3]=preg_replace("/[^a-zA-Z0-9:\/.\ -✔️❌]/", "", $data[3]); - $data[4]=preg_replace("/[^a-zA-Z0-9:\/.\ -✔️❌]/", "", $data[4]); - $data[5]=preg_replace("/[^a-zA-Z0-9:\/.\ -✔️❌]/", "", $data[5]); - $data[6]=preg_replace("/[^a-zA-Z0-9:\/.\ -✔️❌]/", "", $data[6]); - $data[7]=preg_replace("/[^a-zA-Z0-9:\/.\ -✔️❌]/", "", $data[7]); $row++; $num = count($data); //echo "

" . $data[1] . "

"; @@ -117,81 +105,91 @@ echo "

" . $rowcount . " Result(s) found.

"; +// strtolower({key}) -> logo = /img/{value} +$logomap = array( + "archive" => "archive.webp", + "collaboration" => "collaboration.webp", + "communities" => "community.webp", + "community" => "community.webp", + "exchanges" => "haveno.webp", + "fediverse" => "fediverse.webp", + "forum" => "dread.webp", + "forums" => "dread.webp", + "indexes" => "index.webp", + "infos and indexes" => "info.webp", + "libraries" => "library.webp", + "mail" => "clawsmail.webp", + "markets" => "market.webp", + "monero node" => "monero.webp", + "news" => "news.webp", + "password generator" => "passwordgen.webp", + "pastebins" => "pastebins.webp", + "privacy front-ends" => "opensource.webp", + "radios" => "radio.webp", + "sms" => "sms.webp", + "search engine" => "searxng.svg", + "simplex chatrooms" => "simplex.webp", + "social" => "social.webp", + "tools" => "tools.webp", + "torrents" => "torrents.webp", + "translation" => "translation.webp", + "vpns" => "openvpn.webp", + "vps" => "linux.webp", +); - +$classmap = array( + "monero node" => "xmr", + "simplex chatrooms" => "sxc", +); function DisplayCategories($instancename, $path) { -$resultcount=0; -$row = 1; -//echo $instancename; -//$csvfilenames = "verified.csv unverified.csv"; -$csvfilenames = "verified.csv"; -$csvfilenames = explode(' ', $csvfilenames); + global $logomap, $classmap; -foreach ($csvfilenames as $csvfilename){ -//echo $csvfilename; -$csvfile = $path . $csvfilename; -//echo $csvfile; -//echo "test"; -echo "
\n\n"; //begin html table formatting -if (($handle = fopen($csvfile, "r")) !== FALSE) { + $resultcount = 0; + $row = 1; + //echo $instancename; + //$csvfilenames = "verified.csv unverified.csv"; + $csvfilenames = "verified.csv"; + $csvfilenames = explode(' ', $csvfilenames); + foreach ($csvfilenames as $csvfilename) { + //echo $csvfilename; + $csvfile = $path . $csvfilename; + //echo $csvfile; + //echo "test"; + echo "
\n\n"; //begin html table formatting + if (($handle = fopen($csvfile, "r")) !== FALSE) { - $oldcatname=""; - while (($data = fgetcsv($handle, 1000, ",",'"','\\')) !== FALSE) { - $num = count($data); - $row++; + $oldcatname = ""; + while (($data = fgetcsv($handle, 1000, ",",'"','\\')) !== FALSE) { + $num = count($data); + $row++; - if ( $row == "2") { - echo "

| "; - }else{ - //PREVENT ALL MALICIOUS PHP PAYLOADS FROM BEING EXECUTED FROM CSV FILES! - $data[0] = htmlspecialchars($data[0]); - $data[1] = htmlspecialchars($data[1]); - $data[2] = htmlspecialchars($data[2]); - $data[3] = htmlspecialchars($data[3]); - $data[4] = htmlspecialchars($data[4]); - $data[5] = htmlspecialchars($data[5]); - $data[6] = htmlspecialchars($data[6]); - $data[7] = htmlspecialchars($data[7]); + if ( $row == "2") { + echo '

'; + continue; + } + + //PREVENT ALL MALICIOUS PHP PAYLOADS FROM BEING EXECUTED FROM CSV FILES! + for ($i = 0; $i < count($data); $i++) { + $data[$i] = htmlspecialchars($data[$i]); + $data[$i] = preg_replace("/[^a-zA-Z0-9:\/.\ -]/", "", $data[$i]); + } + $resultcount++; + if (strtolower($oldcatname) != strtolower($data[1])){ + + echo '' . ''. $data[1] . ' '; + $oldcatname = strtolower($data[1]); - $data[0]=preg_replace("/[^a-zA-Z0-9:\/.\ -]/", "", $data[0]); - $data[1]=preg_replace("/[^a-zA-Z0-9:\/.\ -]/", "", $data[1]); - $data[2]=preg_replace("/[^a-zA-Z0-9:\/.\ -]/", "", $data[2]); - $data[3]=preg_replace("/[^a-zA-Z0-9:\/.\ -]/", "", $data[3]); - $data[4]=preg_replace("/[^a-zA-Z0-9:\/.\ -]/", "", $data[4]); - $data[5]=preg_replace("/[^a-zA-Z0-9:\/.\ -]/", "", $data[5]); - $data[6]=preg_replace("/[^a-zA-Z0-9:\/.\ -]/", "", $data[6]); - $data[7]=preg_replace("/[^a-zA-Z0-9:\/.\ -]/", "", $data[7]); - - $resultcount++; - for ($c=0; $c < $num; $c++) { // iterate over each row - if ( $c == "1" ){ - - if (strtolower($oldcatname) != strtolower($data[1])){ - if( str_contains(strtolower($data[1]),'monero' )){ - echo '' . $data[1] . ' | '; // display the category as its the first row with this new category - $oldcatname=$data[1]; - }elseif( str_contains(strtolower($data[1]),'simplex' )){ - echo '' . $data[1] . ' | '; // display the category as its the first row with this new category - $oldcatname=$data[1]; - }else{ - echo '' . $data[1] . ' | '; // display the category as its the first row with this new category - $oldcatname=$data[1]; - } - } - } - } + } + } + echo 'Display All Links

'; + fclose($handle); } } - echo 'Display All Links |

'; - fclose($handle); -} - -} } $min_length = 1; @@ -211,4 +209,3 @@ if (($handle = fopen($csvfile, "r")) !== FALSE) {

Update Frequency: every 3 hours


- diff --git a/www/img/archive.webp b/www/img/archive.webp new file mode 100644 index 0000000..7c14c96 Binary files /dev/null and b/www/img/archive.webp differ diff --git a/www/img/clawsmail.webp b/www/img/clawsmail.webp new file mode 100644 index 0000000..3ddf96d Binary files /dev/null and b/www/img/clawsmail.webp differ diff --git a/www/img/collaboration.webp b/www/img/collaboration.webp new file mode 100644 index 0000000..7db8b28 Binary files /dev/null and b/www/img/collaboration.webp differ diff --git a/www/img/community.webp b/www/img/community.webp new file mode 100644 index 0000000..635cfb3 Binary files /dev/null and b/www/img/community.webp differ diff --git a/www/img/dread.webp b/www/img/dread.webp new file mode 100644 index 0000000..16491f6 Binary files /dev/null and b/www/img/dread.webp differ diff --git a/www/img/empty.png b/www/img/empty.png new file mode 100644 index 0000000..0858c19 Binary files /dev/null and b/www/img/empty.png differ diff --git a/www/img/fediverse.webp b/www/img/fediverse.webp new file mode 100644 index 0000000..337de52 Binary files /dev/null and b/www/img/fediverse.webp differ diff --git a/www/img/games.webp b/www/img/games.webp new file mode 100644 index 0000000..df9e781 Binary files /dev/null and b/www/img/games.webp differ diff --git a/www/img/haveno.webp b/www/img/haveno.webp new file mode 100644 index 0000000..3323c4f Binary files /dev/null and b/www/img/haveno.webp differ diff --git a/www/img/index.webp b/www/img/index.webp new file mode 100644 index 0000000..34f7731 Binary files /dev/null and b/www/img/index.webp differ diff --git a/www/img/info.webp b/www/img/info.webp new file mode 100644 index 0000000..b465e2d Binary files /dev/null and b/www/img/info.webp differ diff --git a/www/img/lantern project banner.png b/www/img/lantern project banner.png index c653503..ec3afa7 100644 Binary files a/www/img/lantern project banner.png and b/www/img/lantern project banner.png differ diff --git a/www/img/lantern project large.png b/www/img/lantern project large.png index 1dafb45..b562aad 100644 Binary files a/www/img/lantern project large.png and b/www/img/lantern project large.png differ diff --git a/www/img/library.webp b/www/img/library.webp new file mode 100644 index 0000000..6dcf1d7 Binary files /dev/null and b/www/img/library.webp differ diff --git a/www/img/linux.webp b/www/img/linux.webp new file mode 100644 index 0000000..f2375f8 Binary files /dev/null and b/www/img/linux.webp differ diff --git a/www/img/market.webp b/www/img/market.webp new file mode 100644 index 0000000..0ebfae3 Binary files /dev/null and b/www/img/market.webp differ diff --git a/www/img/monero.webp b/www/img/monero.webp new file mode 100644 index 0000000..390f4e2 Binary files /dev/null and b/www/img/monero.webp differ diff --git a/www/img/news.webp b/www/img/news.webp new file mode 100644 index 0000000..35187ed Binary files /dev/null and b/www/img/news.webp differ diff --git a/www/img/opensource.webp b/www/img/opensource.webp new file mode 100644 index 0000000..652278b Binary files /dev/null and b/www/img/opensource.webp differ diff --git a/www/img/openvpn.webp b/www/img/openvpn.webp new file mode 100644 index 0000000..6167e89 Binary files /dev/null and b/www/img/openvpn.webp differ diff --git a/www/img/passwordgen.webp b/www/img/passwordgen.webp new file mode 100644 index 0000000..5e78b2a Binary files /dev/null and b/www/img/passwordgen.webp differ diff --git a/www/img/pastebins.webp b/www/img/pastebins.webp new file mode 100644 index 0000000..49d7eec Binary files /dev/null and b/www/img/pastebins.webp differ diff --git a/www/img/radio.webp b/www/img/radio.webp new file mode 100644 index 0000000..56feb7d Binary files /dev/null and b/www/img/radio.webp differ diff --git a/www/img/searxng.svg b/www/img/searxng.svg new file mode 100644 index 0000000..f3ff8e3 --- /dev/null +++ b/www/img/searxng.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/www/img/showall.webp b/www/img/showall.webp new file mode 100644 index 0000000..ae15260 Binary files /dev/null and b/www/img/showall.webp differ diff --git a/www/img/simplex.webp b/www/img/simplex.webp new file mode 100644 index 0000000..541e68c Binary files /dev/null and b/www/img/simplex.webp differ diff --git a/www/img/sms.webp b/www/img/sms.webp new file mode 100644 index 0000000..e9a6ffb Binary files /dev/null and b/www/img/sms.webp differ diff --git a/www/img/social.webp b/www/img/social.webp new file mode 100644 index 0000000..ed62a1a Binary files /dev/null and b/www/img/social.webp differ diff --git a/www/img/tools.webp b/www/img/tools.webp new file mode 100644 index 0000000..beee35f Binary files /dev/null and b/www/img/tools.webp differ diff --git a/www/img/tor.png b/www/img/tor.png new file mode 100644 index 0000000..5832de5 Binary files /dev/null and b/www/img/tor.png differ diff --git a/www/img/tor_browser.webp b/www/img/tor_browser.webp new file mode 100644 index 0000000..27efc2b Binary files /dev/null and b/www/img/tor_browser.webp differ diff --git a/www/img/torrents.webp b/www/img/torrents.webp new file mode 100644 index 0000000..153eee2 Binary files /dev/null and b/www/img/torrents.webp differ diff --git a/www/img/translation.webp b/www/img/translation.webp new file mode 100644 index 0000000..c11ed57 Binary files /dev/null and b/www/img/translation.webp differ diff --git a/www/img/webring-participant.png b/www/img/webring-participant.png index 636e7e1..8a2e8f0 100644 Binary files a/www/img/webring-participant.png and b/www/img/webring-participant.png differ diff --git a/www/img/xmpp.webp b/www/img/xmpp.webp new file mode 100644 index 0000000..b503809 Binary files /dev/null and b/www/img/xmpp.webp differ diff --git a/www/style.css b/www/style.css index 6c57a03..3007db6 100644 --- a/www/style.css +++ b/www/style.css @@ -9,13 +9,24 @@ font-family: 'Source Code Pro', monospace; } +.caticon{ + height: 22px; +} + +.cata { + display: inline-flex; + align-items: center; + text-align: center; + padding: 0px; +} + .width-class{ width: 100%; object-fit: contain; - align: center; - display: flex; - flex-direction: column; + display: flex; + flex-direction: column; } + .input-class{ margin: 0 20% 0 20%; } @@ -56,10 +67,9 @@ .imgRz{ - width: 100%; - height: 50%; - align: center; - justify-content: center; + width: 100%; + height: 50%; + justify-content: center; -webkit-filter: grayscale(0%); /* Safari 6.0 - 9.0 */ filter: grayscale(0%) brightness(100%) contrast(100%); }