Προς το περιεχόμενο

Οικονομικό VPS Hosting


thessalonik

Προτεινόμενες αναρτήσεις

Δημοσ. (επεξεργασμένο)
6 ώρες πριν, kormos είπε

Να μοιραστεί τη λύση του για κάποιον άλλο αλλά αγνοήθηκε...

Εννοεί ότι ο freerangecloud του πρότεινε το https://freerangecloud.com/ στο ερώτημα που είχε δημοσιεύσει και στο LowEndTalk το οποίο  μας το έκανε copy/paste γιατί θα κουραζότανε να το γράψει και στα Ελληνικά όπως ανέφερε και ο ίδιος, ο Νικολιός δηλαδή.

.

Στις 21/2/2018 στις 5:28 ΜΜ, thessalonik είπε

Thank you.

ps. Συγνωμη για τα αγγλικα, απλα επειδη ρωτας και σε ξενα φορα ειναι κουραστικο να τα ξαναγραφψ.

.

.

Επεξ/σία από The King
Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

  • Απαντ. 105
  • Δημ.
  • Τελ. απάντηση

Συχνή συμμετοχή στο θέμα

Δημοσ. (επεξεργασμένο)
16 ώρες πριν, pOLoS είπε

επόμενο θέμα "Πως να αποκρύψω την ip του server ? "

Θαρρώ πως συνήθως προηγείται το

Πως μπορώ να κρύψω τον καταπληκτικό HTML/CSS κώδικά μου γιατί δεν θέλω να μου τον κλέψουν;

Επεξ/σία από The King
  • Like 1
Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

2 ώρες πριν, The King είπε

Θαρρώ πως συνήθως προηγείται το

Πως μπορώ να κρύψω τον καταπληκτικό HTML/CSS κώδικά μου γιατί δεν θέλω να μου τον κλέψουν;

Εδώ που τα λέμε, το superhost.gr είναι μια περίπτωση όπου καλά θα ήταν να έμενε  κρυμμένος ο κώδικας (και όχι μόνον ο κώδικας).

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

35 λεπτά πριν, ajaxmonkey4hire είπε

Εδώ που τα λέμε, το superhost.gr είναι μια περίπτωση όπου καλά θα ήταν να έμενε  κρυμμένος ο κώδικας (και όχι μόνον ο κώδικας).

Mα κρυμενος ειναι ο κωδικος που ειναι γραμμενος σε Python και αλλα ευαισθητες πληροφοριες ππου υπαρχουν στην σελιδα και ειναι για προσβαση μονο απο εμενα υπαρχει .htaccess restriction.

Ειδες εσυ πουθενα σε plain textτον κωδικα που εχω γραψει?

Δεν επιτρεπεται απευθειας προσβαση στα  cgi-scripts του στυλ

http://superhost.gr/cgi-bin/metrites.py

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

Δημοσ. (επεξεργασμένο)

Μάλλον δεν κατάλαβες για αυτό θα σου το μεταφράσω:

Ένας επαγγελματίας με βασικό αίσθημα ντροπής δεν θα ανέβαζε ποτέ κάτι σαν το superhost.gr

Πέρα από αυτό, έχεις εκεί έναν πελάτη (http://kidsclubpaidika.gr/) που πουλάει παιδικά είδη online. Πόσες πωλήσεις αναμένει να κάνει τον μήνα;

500 Ευρώ; 

5.000 Ευρώ;

50.000 Ευρώ;

Και τι ποσό είναι διατεθειμένος να επενδύσει για να το πετύχει αυτό; 15 Ευρώ τον χρόνο;

Αν αυτή είναι η προσέγγιση, δική σου και του πελάτη σου, στον επαγγελματισμό, τότε καλή σας νύχτα.

Επεξ/σία από ajaxmonkey4hire
Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

Η δικη μου σελιδα αργα η γρηγορα θα γυρισει και αυτη σε WordPress

Για την αλλη με τα παιδικα ρουχα τι εχει? Δεν μπορω να ξερω εγω τι πωλησεις θα κανει. Εμενα μου ζητηθηκε να την φτιαξω οπως και εκανα.

Τι εννοεις δεν θα αντεξει ο server τον φορτο της ταυτοχρονης επισκεψιμοτητας?

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

Δημοσ. (επεξεργασμένο)
47 λεπτά πριν, thessalonik είπε

 

Ειδες εσυ πουθενα σε plain textτον κωδικα που εχω γραψει?

Δεν επιτρεπεται απευθειας προσβαση στα  cgi-scripts του στυλ

http://superhost.gr/cgi-bin/metrites.py

 

Εννοείς αυτόν το py;

Έχει αρκετά λαθάκια πάντως..

 

file = form.getvalue('file') 
page = form.getvalue('page') 

if not page and os.path.exists( file ): 
        # it is an html template 
        page = file.replace( '/home/dauwin/public_html/', '' ) 
elif page or form.getvalue('show'): 
        # it is a python script 
        page = page..replace( '/home/dauwin/public_html/cgi-bin/', '' ) 
else: 
        #when everything else fails fallback 
        page = "index.html" 


        if page.endswith('.html'): 
                with open( '/home/dauwin/public_html/' + page, encoding='utf-8' ) as f: 
                        htmlpage = f.read() 
                htmlpage = htmlpage % (quote, music) 
                template = htmlpage + counter 
        elif page.endswith('.py'): 
                pypage = subprocess.check_output( '/home/dauwin/public_html/cgi-bin/' 
+ page ) 
                pypage = pypage.decode('utf-8').replace( 'Content-type: text/html; 
charset=utf-8', '' ) 
                template = pypage + counter 

        print( template ) 


/home/nikos/public_html//home/dauwin/public_html/index.html

 

RewriteEngine Off 
RewriteCond %{REQUEST_FILENAME} -f 
RewriteRule ^/?(.+\.html) /cgi-bin/metrites.py?file=%{REQUEST_FILENAME} 
[L,PT,QSA] 

.

οκ έλεος... μόνο και μόνο που "στη λέμε" όπως νομίζεις, απλά σε κάνουμε να καταλάβεις ότι κάπου το έχεις χάσει και πρέπει να αναθεωρήσεις για να γίνεις καλύτερος σε .. ό,τι είναι αυτό που προσπαθείς να κάνεις τέλος πάντων.

Παντού ρωτάς και καταλήγεις να τσακώνεσαι, δεν το καταλαβαίνεις ότι δε γίνεται πάντα να φταίνε οι άλλοι;
https://groups.google.com/forum/#!topic/comp.lang.python/bAtJSkoA1LY

.

 

0001.png.02cc9c6e9104999919bfe7db1918e238.png

.

Επεξ/σία από The King
  • Like 1
Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

4 λεπτά πριν, The King είπε

Εννοείς αυτόν το py;

Έχει αρκετά λαθάκια πάντως..


file = form.getvalue('file') 
page = form.getvalue('page') 

if not page and os.path.exists( file ): 
        # it is an html template 
        page = file.replace( '/home/dauwin/public_html/', '' ) 
elif page or form.getvalue('show'): 
        # it is a python script 
        page = page..replace( '/home/dauwin/public_html/cgi-bin/', '' ) 
else: 
        #when everything else fails fallback 
        page = "index.html" 


        if page.endswith('.html'): 
                with open( '/home/dauwin/public_html/' + page, encoding='utf-8' ) as f: 
                        htmlpage = f.read() 
                htmlpage = htmlpage % (quote, music) 
                template = htmlpage + counter 
        elif page.endswith('.py'): 
                pypage = subprocess.check_output( '/home/dauwin/public_html/cgi-bin/' 
+ page ) 
                pypage = pypage.decode('utf-8').replace( 'Content-type: text/html; 
charset=utf-8', '' ) 
                template = pypage + counter 

        print( template ) 


/home/nikos/public_html//home/dauwin/public_html/index.html

RewriteEngine Off 
RewriteCond %{REQUEST_FILENAME} -f 
RewriteRule ^/?(.+\.html) /cgi-bin/metrites.py?file=%{REQUEST_FILENAME} 
[L,PT,QSA] 

οκ έλεος... μόνο και μόνο που "στη λέμε" όπως νομίζεις, απλά σε κάνουμε να καταλάβεις ότι κάπου το έχεις χάσει και πρέπει να αναθεωρήσεις για να γίνεις καλύτερος σε .. ό,τι είναι αυτό που προσπαθείς να κάνεις τέλος πάντων.

.

Συγνωμη απο που το ανεσυρες αυτην την παλια εκδοση του 'metrites.py'? Απο το νετ το βρηκες?

Γιατι σε τετοια μορφη το εχω απενεργοποιημενο στο httpd.conf

http://superhost.gr/~nikos/cgi-bin/metrites.py

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

Δημοσ. (επεξεργασμένο)
17 λεπτά πριν, thessalonik είπε

Συγνωμη απο που το ανεσυρες αυτην την παλια εκδοση του 'metrites.py'? Απο το νετ το βρηκες?

Γιατι σε τετοια μορφη το εχω απενεργοποιημενο στο httpd.conf

http://superhost.gr/~nikos/cgi-bin/metrites.py

Υπάρχει και νεότερο .. η τελευταία γραμμή με το comment σου και το αφεντικό είναι όλα τα λεφτά ... που λέει 

Αναφορά σε κείμενο

print( '''<h2><font color=green>Δεν μας θυμήθηκε κανείς ακόμη αφεντικό !!! Της λησμονιάς το νερό ήπιαν φαίνεται !!''' )

# Nίκο ξέχασες να κλείσεις την h2

#!/usr/bin/python
# coding=utf-8

import cgitb; cgitb.enable()
import cgi, re, os, sys, socket, datetime, locale, codecs, random, smtplib, subprocess, pymysql, pygeoip
from datetime import datetime, timedelta
from http import cookies


#needed line, script does *not* work without it
sys.stdout = codecs.getwriter('utf-8')(sys.stdout.detach())

# get some enviromental VALUES
locale.setlocale(locale.LC_ALL, 'el_GR')
form = cgi.FieldStorage()

FROM = form.getvalue('from')
MESSAGE = form.getvalue('message')
mailform = form.getvalue('mailform')
ref = os.environ.get('HTTP_REFERER', 'Άμεσο URL').replace( 'www.', '' )
userinfo = os.environ.get('HTTP_USER_AGENT', 'Άγνωστο Br')
lastvisit = ( datetime.utcnow() + timedelta(hours=3) ).strftime( '%y-%m-%d %H:%M:%S' )

ipval = ( os.environ.get('HTTP_CF_CONNECTING_IP') or os.environ.get('REMOTE_ADDR', "Cannot Resolve") )
city = "Άγνωστη Πόλη"
host = "Άγνωστη Προέλευση"
try:
	gi = pygeoip.GeoIP('/usr/local/share/GeoIPCity.dat')
	city = gi.time_zone_by_addr( ipval )
	host = socket.gethostbyaddr( ipval ) [0]
except Exception as e:
	print( "metrites.py => (%s): " % lastvisit, repr( sys.exc_info() ), file=open('/tmp/err.out', 'w') )


path = '/home/nikos/public_html/'
cgi_path = '/home/nikos/public_html/cgi-bin/'

file = form.getvalue('file')	# this comes from .htaccess
page = form.getvalue('page')	# this comes from either 'index.html' or 'metrites.py'

if not page and os.path.exists( file ):
	# it is an html template
	page = file.replace( path, '' )


# identification of user browser
browser = userinfo.lower()
if 'chrome' in browser:
	browser = 'Chrome'
elif 'firefox' in browser:
	browser = 'Firefox'
elif 'opera' in browser:
	browser = 'Opera'
elif 'safari' in browser:
	browser = 'Safari'
elif 'msie' in browser:
	browser = 'Explorer'
else:
	browser = 'Άγνωστο Br'

# identification of user OS
useros = userinfo.lower()
if 'windows' in useros:
	useros = 'Windows'
elif 'mac' in useros:
	useros = 'MacOS'
elif 'linux' in useros:
	useros = 'Linux'
elif 'unix' in useros:
	useros = 'Unix'
elif 'bsd' in useros:
	useros = 'FreeBSD'
else:
	useros = 'Άγνωστο OS'

	
# initialize cookie
cookie = cookies.SimpleCookie( os.environ.get('HTTP_COOKIE') )
cookie.load( cookie )
vip = cookie.get('vip')

# connect to database
con = pymysql.connect( db = 'nikos_metrites', user = 'nikos_root', passwd = 'try_that', charset = 'utf8', host = 'localhost' )
cur = con.cursor()

print( '''Content-type: text/html; charset=utf-8\n''' )


# =================================================================================================================
# if extra string is attached to the URL is 'stats' then show statistics for all HTML pages and exit
# =================================================================================================================
if form.getvalue('show') == 'stats':

	print(''' <center><h2><font color=lime> LOG </font> όλων των <font color=red> HTML </font> σελίδων</h2><br>
			  <table border=5 cellpadding=5 bgcolor=black>
			  <th><font color=orange size=5> Σελίδα </th>  <th><font color=orange size=5> Επισκέψεις </th>
	''')

	try:
		cur.execute( '''SELECT url, hits FROM counters ORDER BY hits DESC''' )

		data = cur.fetchall()
		for row in data:
			(url, hits) = row
			
			print( "<tr><td><center><a href='http://superhost.gr/?show=log&page=%s'><font color=tomato size=5> %s </a></td>" % (url, url) )
			print( "<td><center><font color=cyan size=5> %s </a></td></tr>" % hits )
	except pymysql.ProgrammingError as e:
		print( repr(e) )
			
	sys.exit(0)


# =================================================================================================================
# if extra string is attached to the URL is 'log' then show specific page log and exit
# =================================================================================================================
if form.getvalue('show') == 'log':

	cur.execute('''SELECT hits FROM counters WHERE url = %s''', page )
	data = cur.fetchone()        #URL is unique, so should only be one

	print(''' <center><h2>  <font color=lime> LOG </font> της σελιδας <font color=red> %s </font> => <font color=magenta> %s </font> </h2><br>
			  <table border=5 cellpadding=5 bgcolor=blue>
			  <th><font color=yellow> Επισκέπτης </th>	<th><font color=yellow> Πόλη </th>		<th><font color=yellow> Λειτουργικό </th>
			  <th><font color=yellow> Πλοηγός </th>		<th><font color=yellow> Αναφέρων </th>	<th><font color=yellow> Επανάληψη </th>		<th><font color=yellow> Ημερομηνία </th>
	''' % (page, data[0]) )

	try:
		cur.execute( '''SELECT host, city, useros, browser, ref, hits, lastvisit FROM visitors
						WHERE counterID = (SELECT ID FROM counters WHERE url = %s) ORDER BY lastvisit DESC''', page )
		data = cur.fetchall()
		
		for row in data:
			(host, city, useros, browser, ref, hits, lastvisit) = row
			lastvisit = lastvisit.strftime('%A %e %b, %H:%M')
			
			print( "<tr>" )
			for item in (host, city, useros, browser, ref, hits, lastvisit):
				print( "<td><center><b><font color=white> %s </td>" % item )
	except pymysql.ProgrammingError as e:
		print( repr(e) )
				
	sys.exit(0)


# =================================================================================================================
# if html form is submitted then send user mail
# =================================================================================================================
if( mailform ):

	try:
		if (FROM is None) or (MESSAGE is None) or ('@' not in FROM) or ('Γράψε μου εδώ' in MESSAGE):
			print( "<h2><font color=red>Συμπλήρωσε σωστά το mail σου και δώσε το σχολιασμό σου!</font></h2>" )
		else:
			# prepare mail data
			TO = "[email protected]"
			
			SUBJECT = u"SuperHost Guest Mail από τον [ %s ]" % FROM
			
			MESSAGE = ( "From: %s\n" + "To: %s\n" + "Subject: %s\n\n%s\n" )  %  (FROM, TO, SUBJECT, MESSAGE)
			MESSAGE = MESSAGE.encode('utf-8')
		
			# open Gmail's SMTP server
			server = smtplib.SMTP('smtp.gmail.com:587')
			server.ehlo()
			server.starttls()
 
			# next, log in to the server
			server.login("[email protected]", "eleos...")
 
			# send the mail
			server.sendmail( FROM, [TO], MESSAGE )

			print( "<h2><font color=blue>Ευχαριστώ πολύ για το ενδιαφέρον! Θα επικοινωνήσω μαζί σου άμεσα :-)</font></h2>" )
	except Exception as e:
		print( "sendmail => ", date, repr( sys.exc_info() ), file=open( '/tmp/err.out', 'w' ) )

	sys.exit(0)


# =================================================================================================================
# DATABASE INSERTS - do not increment the counter if a Cookie is set to the visitors browser already
# =================================================================================================================
if not vip and re.search( r'(msn|gator|amazon|yandex|reverse|who|cloudflare|fetch|barracuda|spider|google|crawl|pingdom)', host ) is None:

	try:
		#find the needed counter for the page URL
		if os.path.exists( path + page ) or os.path.exists( cgi_path + page ):
			cur.execute('''SELECT ID FROM counters WHERE url = %s''', page )
			data = cur.fetchone()		#URL is unique, so should only be one

		if not data:
			#first time for page; primary key is automatic, hit is defaulted
			cur.execute('''INSERT INTO counters (url) VALUES (%s)''', page )
			cID = cur.lastrowid        #get the primary key value of the new record 
		else:
			#found the page, save primary key and use it to issue hit UPDATE 
			cID = data[0]
			cur.execute('''UPDATE counters SET hits = hits + 1 WHERE ID = %s''', cID )

		#find the visitor record for the (saved) cID and current host
		cur.execute('''SELECT * FROM visitors WHERE counterID = %s and host = %s''', (cID, host) )                                   
		data = cur.fetchone()        #cID&host are unique
			
		if not data:
			#first time for this host on this page, create new record 
			cur.execute('''INSERT INTO visitors (counterID, host, city, useros, browser, ref, lastvisit) VALUES (%s, %s, %s, %s, %s, %s, %s)''', (cID, host, city, useros, browser, ref, lastvisit) )
		else:
			#found the page, save its primary key for later use 
			vID = data[0] 
			#UPDATE record using retrieved vID 
			cur.execute('''UPDATE visitors SET city = %s, useros = %s, browser = %s, ref= %s, hits = hits + 1, lastvisit = %s
									WHERE counterID = %s and host = %s''', (city, useros, browser, ref, lastvisit, vID, host) )
		
	except pymysql.ProgrammingError as e:
		print( repr(e) )
		sys.exit(0)


# =================================================================================================================
# return general counter, render html page and print or invoke a vip script
# =================================================================================================================
cur.execute('''SELECT hits FROM counters WHERE url = %s''', page )
data = cur.fetchone()

# pick a random mp3 from the the music directory
quote = random.choice( list( open( '/home/nikos/www/data/private/quotes.txt', encoding='utf-8' ) ) )
# pick a random line from the quote text file
music = random.choice( os.listdir( '/home/nikos/www/data/music/' ) )

try:
	if data:
		counter = '''<center>
						<table border=2 cellpadding=2 bgcolor=black>
							<td> <font color=lime>Αριθμός Επισκεπτών </td>
							<td> <a href="http://superhost.gr/?show=log&page=%s"><font color=gold> %d </font></a> </td>
						</table><br>
		''' % (page, data[0])

		if page.endswith('.html'):
			with open( path + page, encoding='utf-8' ) as f:
				htmlpage = f.read()
			htmlpage = htmlpage % (quote, music)
			template = htmlpage + counter
		elif page.endswith('.py'):
			pypage = subprocess.check_output( cgi_path + page )
			pypage = pypage.decode('utf-8').replace( 'Content-type: text/html; charset=utf-8', '' )
			template = pypage + counter

		print( template )
	else:
		print( '''<h2><font color=green>Δεν μας θυμήθηκε κανείς ακόμη αφεντικό !!! Της λησμονιάς το νερό ήπιαν φαίνεται !!''' )
except Exception as e:
	print( "metrites.py => (%s):" % lastvisit, repr( sys.exc_info() ), file=open('/tmp/err.out', 'a') )

 

στο server.login("****@gmail.com", "********")  τα είχες όλα φουλ φόρα παρτίδα, ελπίζω να τα έχεις αλλάξει!

.

Επεξ/σία από The King
Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

Χαχαχαχα!! Μαθαινα python εκεινο τον καιρο και το διασκεδαζα λιγακι :-)

Ναι οντως ειχα κανει paste μεγαλο μερος του κωδικα σε forum με σκοπο να λυσω καποια θεματα.

Σε καποια στιγμη τρομαξα γιατι νομιζα οτι απεκτησες προσβαση στον server μου και κοιτουσες τον πηγαιον κωδικα.... αλλα μετα διαπιστωσα πως αυτος ο κωδικας ειναι επισης παλιος απο τοτε που ημουν σε Shared Hosting περιβαλλον, πριν περασω σε VPS.

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

Δημοσ. (επεξεργασμένο)
2 λεπτά πριν, thessalonik είπε

Σε καποια στιγμη τρομαξα γιατι νομιζα οτι απεκτησες προσβαση στον server μου και κοιτουσες τον πηγαιον κωδικα...

 

:P ελπίζω εκείνη την κρίσιμη στιγμή να μη σου έφυγε καμιά από την τρομάρα και γεμίσουμε pythons, ήδη αρκετούς έχουμε διαβάσει μέχρι τώρα !

Επεξ/σία από The King
Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

6 λεπτά πριν, The King είπε

:P ελπίζω εκείνη την κρίσιμη στιγμή να μη σου έφυγε καμιά από την τρομάρα και γεμίσουμε pythons, ήδη αρκετούς έχουμε διαβάσει μέχρι τώρα !

Οταν λες να γεμισουμε "pythons" τι εννοεις?  Δεν το καταλαβα το humor....

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

Δημοσ. (επεξεργασμένο)
17 λεπτά πριν, thessalonik είπε

Σε καποια στιγμη τρομαξα γιατι νομιζα οτι απεκτησες προσβαση στον server μου και κοιτουσες τον πηγαιον κωδικα....

 

15 λεπτά πριν, The King είπε

:P ελπίζω εκείνη την κρίσιμη στιγμή να μη σου έφυγε καμιά από την τρομάρα και γεμίσουμε pythons, ήδη αρκετούς έχουμε διαβάσει μέχρι τώρα !

 

8 λεπτά πριν, thessalonik είπε

Οταν λες να γεμισουμε "pythons" τι εννοεις?  Δεν το καταλαβα το humor....

 

Εννοώ Monkey .Python's Flying Circus

.

p021lltj.jpg.dc60f5b1c776ffce20f4a8da87d13e38.jpg

 

 

Επεξ/σία από The King
Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

Δεν τους εχω ουτε καν ακουστα.

Ηθελα να ρωτησω το εξης. Οι εταιρει που πουλανε web hosting τρεχουν καποια συγκεκρμενη εφαρμογη για να διαφημιστουν ή απλα οι σελιδες τους ειναι σε Wordpress?

Μηπως ειναι καποιο αλλο custom πακετο software?

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

Δημιουργήστε ένα λογαριασμό ή συνδεθείτε για να σχολιάσετε

Πρέπει να είστε μέλος για να αφήσετε σχόλιο

Δημιουργία λογαριασμού

Εγγραφείτε με νέο λογαριασμό στην κοινότητα μας. Είναι πανεύκολο!

Δημιουργία νέου λογαριασμού

Σύνδεση

Έχετε ήδη λογαριασμό; Συνδεθείτε εδώ.

Συνδεθείτε τώρα

  • Δημιουργία νέου...