Kirjautuminen

Haku

Tehtävät

Keskustelu: Nettisivujen teko: Aliasten luonti php:lla

Sivun loppuun

pistemies [11.03.2012 14:14:56]

#

"Ennen vanhaan" alidomaineja pystyi luomaan pelkästään .htacess tiedostoa muokkaamalla. Nykyisin kun on käytössä cpanel, sen joutuu tekemään aina manuaalisesti.
Onko tietoa, voiko sen cpanelissa tehdä jotenkin pelkästään php ja perl -skripteillä(jos tarttee luoda hakemisto/ja). Ja mitä tiedostoja/hakemistoja palvelimelle pitäisi luoda?

Lisäys:

Löysin tuolta apuscriptin, jonka avulla käytetään suoraan cpanelin omaa alidomainin luonti-työkalua.

http://www.zubrag.com/scripts/cpanel-subdomains-creator.php

Testasin jo sillä tavalla että kirjoitin suoraan selaimen osoiteriville tuossa skriptissä olevan kommentin esimerkin mukaan ja sehän loi uuden "uusi" alidomainin. Pitää vielä testata, miten tuo skripti toimii suoraan...

pistemies [12.03.2012 10:26:08]

#

Eipä tämä skripti ala rullaamaan. Tässä tämä hommaan liittyvä keskeinen funktio

<?php
// create subdomain
function subd($host,$port,$ownername,$passw,$request) {
  $sock = fsockopen('localhost',2083);

  if(!$sock) {
    print('Socket error');
    exit();
  }
  $authstr = "$ownername:$passw";
  $pass = base64_encode($authstr);
  $in = "GET $request\r\n";
  $in .= "HTTP/1.0\r\n";
  $in .= "Host:$host\r\n";
  $in .= "Authorization: Basic $pass\r\n";
  $in .= "\r\n";

  fputs($sock, $in);
  while (!feof($sock)) {
    $result .= fgets ($sock,128);
  }
  fclose( $sock );
  return $result;
}
?>

Ilmeisesti tuo GET $request pitäisi ajaa GET-muttujassa tuon vaaditn polun. "Ihon" olen muuttanut oikein x3:ksi ja portin 2083:ksi. Lisäsin GET-polkuun muuttujan dir "public_html%2F$subd", arvelen että se on tarpeellinen.
Mahtaako hommaan vaikuttaa se, että tuo yllä oleva funktio kääntää kohtuullisen pian sivun cpanelin kirjautumisivulle? Kun manuaalisesti luo alidomainin, ohjelma luo sen jonkinlaisella viivellä...? Vai voiko palvelimella olla jokin esto tämätyyppiselle toiminnalle...?
Toisaalta vaikuttaa siltä, että kirjautuminen ei onnistu noilla tunnuksilla ihan täysin, kun tuossa sivunvaihdossa aukenee cpanelin kirjautumissivu.

pistemies [12.03.2012 12:28:37]

#

Vika lienee ehkä siinä etten vaan osaa tuota laitella....
Lyhentelempä tähän tätä alkuperäistä skriptiä.

// cpanel user
define('CPANELUSER','user');
// cpanel password
define('CPANELPASS','pass');
define('INPUT_FILE','domains.txt'); # ??
define('CPANEL_SKIN','x');
define('DOMAIN','');

function getVar($name, $def = '') {
  if (isset($_REQUEST[$name]) && ($_REQUEST[$name] != ''))
    return $_REQUEST[$name];
  else
    return $def;
}

$cpaneluser=getVar('cpaneluser', CPANELUSER);
$cpanelpass=getVar('cpanelpass', CPANELPASS);
$cpanel_skin = getVar('cpanelskin', CPANEL_SKIN);

if (isset($_REQUEST["subdomain"])) {
  // get parameters passed via URL or form, emulate string from file
  $doms = array( getVar('domain', DOMAIN) . ";" . $_REQUEST["subdomain"]);
  if (getVar('domain', DOMAIN) == '') die("You must specify domain name");
}
else {
  // open file with domains list
  $doms = @file(INPUT_FILE);
  if (!$doms) {
    // file does not exist, show input form
    die();
  }
}
foreach($doms as $dom) {
  $lines = explode(';',$dom);
  if (count($lines) == 2) {
    // domain and subdomain passed

    $domain = trim($lines[0]);
    $subd = trim($lines[1]);

  }
  else {
    // only subdomain passed
    $domain = getVar('domain', DOMAIN);
    $subd = trim($lines[0]);
  }

  // http://[domainhere]:2082/frontend/x/subdomain/doadddomain.html?domain=[subdomain here]&rootdomain=[domain here]
  $request = "/frontend/$cpanel_skin/subdomain/doadddomain.html?rootdomain=$domain&domain=$subd";
  $result = subd('localhost',2082,$cpaneluser,$cpanelpass,$request);
  $show = strip_tags($result);
  echo $show;
}

En kyllä keksi miten tuon saa toimivaksi.

Metabolix [12.03.2012 14:49:15]

#

pistemies kirjoitti:

Lyhentelempä tähän tätä alkuperäistä skriptiä.

Tehokkaampaa lyhentämistä olisi, että poistaisit välistä tyhjät rivit. Ne todella vaikeuttavat lukemista.

En toki tunne cPanelia juurikaan, mutta vaikuttaa aika todennäköiseltä, että haluamasi toiminto (jos sellainen on) löytyy sanoilla cPanel wildcard domains. Sinänsä en näe mitään järkeä cPanelin käytössä, jos koko palvelin on kuitenkin vain omassa käytössäsi etkä edes saa cPanelilla tehtyä haluamiasi asioita. Mikset vain säädä palvelimen asetuksia suoraan?

pistemies [12.03.2012 16:26:48]

#

Metabolix kirjoitti:

Sinänsä en näe mitään järkeä cPanelin käytössä, jos koko palvelin on kuitenkin vain omassa käytössäsi etkä edes saa cPanelilla tehtyä haluamiasi asioita. Mikset vain säädä palvelimen asetuksia suoraan?

cPanel kuuluu osana tuota palvelin-pakettia mikä minulla on. Hinta suhteessa ominaisuuksiin on niin halpa että kannatti siirtyä siihen. Ja onhan tuo cPanel ihan kätevä joissakin asioissa. Tällainen suora alidomainin luominen tosin on hankalaa...mutta kiitos, pitää vilkaista noita sivuja, mitä ehdottelit.
Empä tiedä miten noita palvelimen asetuksia voi säätää.

Ps. Otsikossa minulla on väärin "aliaksen", pitäisi olla "alidomainin", joka myös asettaa alidomainille oman polun ja sinne myös oman cgi-bin hakemiston.

Ps II osa: Selkeytän vielä hiukan, mitä haen. Sellainen olisi tarkoitus, että sivulla vieraileva rekisteröitynyt käyttäjä voi asentaa itselleen palvelun, jossa hän voi valita palvelulle mieluisensa url-osoitteen muotoa "user.domain.com", jossa tuo user on asiakkaan valitsema tunniste ja domain.com minun domain-nimi. Toki tuo olisi mahdollista tehdä niinkin, että henkilö 'tilaa' palvelun ja asennan sen alidomainin manuaalisesti, mutta parempi olisi että se tomisi ilman viivettä. Toinen mahdollisuus olisi, että palvelun osoite olsikin muotoa domain.com/user...

The Alchemist [12.03.2012 21:22:43]

#

Miksi kikkailet joidenkin helevetin sockettien ja pakettien lukemisen kanssa, kun yksinkertaisesti haluat vain ladata jonkin tietyn sivun käyttäen get-pyyntöä?

$url = 'http://www.google.fi/search?q=php+programming';
$data = file_get_contents($url);

print $data;
?>

pistemies [13.03.2012 14:58:08]

#

The Alchemist kirjoitti:

Miksi kikkailet joidenkin helevetin sockettien ja pakettien lukemisen kanssa, kun yksinkertaisesti haluat vain ladata jonkin tietyn sivun käyttäen get-pyyntöä?

Testaampa miten tuo ehdotuksesi istuu tuohon skriptiin. Missään tapauksessa en kaipaa ohjelmaa, joka kääntää asiakkaan suoraan minun cpaneliin :)

Lisäys:

Testattu on. Eipä tuossa ole muuta eroa kuin että css-muotoilut eivät kirjautumissivun tulosteessa näy..... en siis kaipaa kirjautumissivun enkä minkään muunkaan cpanelin sivun avaamista selaimeen näkösälle.
Vaikuttaa siltä, että tuon skriptin kautta cpaneliin ei voi kirjautua, muutenhan se tuolla url-osoitteella loisi uuden alidomainin.

pistemies [16.03.2012 12:06:13]

#

Onnistuimpa tässä viimein!
Apuna oli tuo skripti: https://www.ohjelmointiputka.net/koodivinkit/vinkki.php?id=25293

Muutin sitä tämän verran:

function cpanel($tunnus, $salasana,$subd) {
	$post = array("user" => $tunnus, "pass" => $salasana, "login_theme" => "cpanel");

	// cURLin alustus
	$ch = curl_init();

	curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
	curl_setopt($ch, CURLOPT_COOKIESESSION, 1);
	curl_setopt($ch, CURLOPT_COOKIEJAR, "/dev/null");

	// Ensimmäinen pyyntö: kirjautuminen alussa asetetulla POST-datalla.
	curl_setopt($ch, CURLOPT_POST, 1);
	curl_setopt($ch, CURLOPT_POSTFIELDS, $post);
	curl_setopt($ch, CURLOPT_URL, "https://my cpanel:2083/login/");
	curl_exec($ch);

	// Toinen pyyntö: haetaan sivu GET-pyynnöllä muuttujaan $str.
	curl_setopt($ch, CURLOPT_POST, 0);
	$domain="domain.com";
	curl_setopt($ch, CURLOPT_URL, "https://my cpanel.com:2083/frontend/x3/subdomain/doadddomain.html?rootdomain=$domain&domain=$subd&dir=public_html%2F$subd");
	$str = curl_exec($ch);

	// Data on haettu, suljetaan cURL.
	curl_close($ch);

	return $str;
}

Seuraava toimenpide minulla on parsia tuota tulostettavaa dataa hiukan 'näkymättömiin'.

Ps. Tuolla voi tehdä osoitetta muuttamalla muutakin. Uuden email-osoitteen voi luoda näin:

$equota = 20; // amount of space in megabytes
 curl_setopt($ch, CURLOPT_URL, "https://my cpanel.com:2083/frontend/x3/mail/doaddpop.html?email=$email_user&domain=$domain&password=$email_pass&quota=$equota");

Sivun alkuun

Vastaus

Aihe on jo aika vanha, joten et voi enää vastata siihen.

Tietoa sivustosta