Revision 7260959d
/dev/null | ||
---|---|---|
1 |
#!/bin/bash |
|
2 |
|
|
3 |
if [ $# -ne 3 ]; then |
|
4 |
echo "$0 localbranch remotedebian remoteupstream" |
|
5 |
exit 1 |
|
6 |
fi |
|
7 |
|
|
8 |
|
|
9 |
LOCALBRANCH=$1 |
|
10 |
REMOTEDEBIAN=$2 |
|
11 |
REMOTEUPSTREAM=$3 |
|
12 |
BUILDAREA=~/build-area |
|
13 |
PKGAREA=~/packages |
|
14 |
BACKUPAREA=~/backup |
|
15 |
|
|
16 |
PACKAGES=" |
|
17 |
snf-astakos-app |
|
18 |
snf-common |
|
19 |
snf-webproject |
|
20 |
snf-cyclades-app |
|
21 |
snf-cyclades-gtools |
|
22 |
snf-tools |
|
23 |
snf-pithos-app |
|
24 |
snf-pithos-backend |
|
25 |
snf-pithos-tools" |
|
26 |
|
|
27 |
|
|
28 |
set -e |
|
29 |
|
|
30 |
test -d $BUILDAREA |
|
31 |
test -d $PKGAREA |
|
32 |
test -d $BACKUPAREA |
|
33 |
|
|
34 |
|
|
35 |
|
|
36 |
#TODO: check for up-to-date branches |
|
37 |
git checkout $LOCALBRANCH |
|
38 |
git checkout $REMOTEUPSTREAM |
|
39 |
git checkout $REMOTEDEBIAN |
|
40 |
|
|
41 |
TMPDEBIAN=$(mktemp -u debian.XXX) |
|
42 |
|
|
43 |
|
|
44 |
# create tmp debian branch to do everything |
|
45 |
git checkout --track $REMOTEDEBIAN -b $TMPDEBIAN |
|
46 |
|
|
47 |
mrgextra=-m |
|
48 |
mrgmsg="Merge branch '$REMOTEUPSTREAM' into $REMOTEDEBIAN" |
|
49 |
dchextra=-R |
|
50 |
|
|
51 |
# whether we are in snapshot or release mode |
|
52 |
snap=false |
|
53 |
|
|
54 |
tcdialog --defaultno --yesno "Create Snapshot?" 5 20 && snap=true && dchextra=-S && mrgextra= && mrgmsg= |
|
55 |
|
|
56 |
|
|
57 |
# merge local branch to tmp branch with correct msg so that it can be pushes as is to upstream debian |
|
58 |
git merge --no-edit $mrgextra ${mrgextra:+"$mrgmsg"} $LOCALBRANCH |
|
59 |
|
|
60 |
|
|
61 |
# auto edit changlog depending on Snapshot or Release mode |
|
62 |
export EDITOR=/usr/bin/vim |
|
63 |
git-dch --debian-branch=$TMPDEBIAN --git-author --ignore-regex=".*" --multimaint-merge --since=HEAD $dchextra |
|
64 |
git add debian/changelog |
|
65 |
|
|
66 |
|
|
67 |
# get version from the changelog |
|
68 |
# we tag here in order sdist to work as expexted. |
|
69 |
version=$(IFS="()" ; read x v x < debian/changelog ; echo $v) |
|
70 |
if ! $snap; then |
|
71 |
git commit -s -a -m "Bump new upstream version" |
|
72 |
TAGFILE=$(mktemp -t tag.XXX) |
|
73 |
tcdialog --inputbox "New Debian Tag: " 5 30 "debian/$version" 2>$TAGFILE |
|
74 |
git tag $(<$TAGFILE) |
|
75 |
fi |
|
76 |
|
|
77 |
rm -rf $BUILDAREA/* |
|
78 |
|
|
79 |
for p in $PACKAGES; do |
|
80 |
|
|
81 |
cd $p |
|
82 |
python setup.py sdist |
|
83 |
grep "__version_vcs" -r . -l -I | xargs git add -f |
|
84 |
cd - |
|
85 |
|
|
86 |
done |
|
87 |
|
|
88 |
|
|
89 |
git-buildpackage --git-export-dir=$BUILDAREA \ |
|
90 |
--git-upstream-branch=$REMOTEUPSTREAM \ |
|
91 |
--git-debian-branch=$TMPDEBIAN \ |
|
92 |
--git-export=INDEX \ |
|
93 |
--git-ignore-new -sa |
|
94 |
|
|
95 |
# do some dirty backup |
|
96 |
# pkgarea might be needed by auto-deploy tool |
|
97 |
rm -f $PKGAREA/* || true |
|
98 |
cp -v $BUILDAREA/*deb $PKGAREA/ || true |
|
99 |
|
|
100 |
cp -v $BUILDAREA/* $BACKUPAREA/ || true |
|
101 |
|
|
102 |
|
|
103 |
git reset --hard HEAD |
|
104 |
if $snap ; then |
|
105 |
git checkout $LOCALBRANCH |
|
106 |
git branch -D $TMPDEBIAN |
|
107 |
else |
|
108 |
# here we can push as is the commits in remote debian branch |
|
109 |
echo "########### All OK #####################" |
|
110 |
echo "git push origin $REMOTEDEBIAN" |
|
111 |
echo "git checkout $LOCALBRANCH" |
|
112 |
echo |
|
113 |
echo "############ Revert ######################" |
|
114 |
echo "git tag -d " $(<$TAGFILE) |
|
115 |
rm $TAGFILE |
|
116 |
fi |
|
117 |
|
|
118 |
|
/dev/null | ||
---|---|---|
1 |
#!/usr/bin/env python2.6 |
|
2 |
# -*- coding: utf-8 -*- |
|
3 |
from os import path |
|
4 |
import shutil, sys, virtualenv, subprocess |
|
5 |
|
|
6 |
PROJECT_ROOT = path.abspath(path.dirname(__file__)) |
|
7 |
REQUIREMENTS = path.join(PROJECT_ROOT, 'requirements.pip') |
|
8 |
|
|
9 |
VE_ROOT = path.join(PROJECT_ROOT, '.ve') |
|
10 |
VE_TIMESTAMP = path.join(VE_ROOT, 'timestamp') |
|
11 |
|
|
12 |
envtime = path.exists(VE_ROOT) and path.getmtime(VE_ROOT) or 0 |
|
13 |
envreqs = path.exists(VE_TIMESTAMP) and path.getmtime(VE_TIMESTAMP) or 0 |
|
14 |
envspec = path.getmtime(REQUIREMENTS) |
|
15 |
|
|
16 |
def go_to_ve(): |
|
17 |
# going into ve |
|
18 |
if not sys.prefix == VE_ROOT: |
|
19 |
if sys.platform == 'win32': |
|
20 |
python = path.join(VE_ROOT, 'Scripts', 'python.exe') |
|
21 |
else: |
|
22 |
python = path.join(VE_ROOT, 'bin', 'python') |
|
23 |
|
|
24 |
retcode = subprocess.call([python, __file__] + sys.argv[1:]) |
|
25 |
sys.exit(retcode) |
|
26 |
|
|
27 |
update_ve = 'update_ve' in sys.argv |
|
28 |
if update_ve or envtime < envspec or envreqs < envspec: |
|
29 |
if update_ve: |
|
30 |
# install ve |
|
31 |
if envtime < envspec: |
|
32 |
if path.exists(VE_ROOT): |
|
33 |
shutil.rmtree(VE_ROOT) |
|
34 |
virtualenv.logger = virtualenv.Logger(consumers=[]) |
|
35 |
virtualenv.create_environment(VE_ROOT, site_packages=True) |
|
36 |
|
|
37 |
go_to_ve() |
|
38 |
|
|
39 |
# check requirements |
|
40 |
if update_ve or envreqs < envspec: |
|
41 |
import pip |
|
42 |
pip.main(initial_args=['install', '-r', REQUIREMENTS]) |
|
43 |
file(VE_TIMESTAMP, 'w').close() |
|
44 |
sys.exit(0) |
|
45 |
else: |
|
46 |
print "VirtualEnv need to be updated" |
|
47 |
print "Run ./manage.py update_ve" |
|
48 |
sys.exit(1) |
|
49 |
|
|
50 |
go_to_ve() |
|
51 |
|
|
52 |
# run django |
|
53 |
from django.core.management import execute_manager |
|
54 |
try: |
|
55 |
import settings # Assumed to be in the same directory. |
|
56 |
import os |
|
57 |
path = os.path.normpath(os.path.join(os.getcwd(), '..')) |
|
58 |
sys.path.append(path) |
|
59 |
except ImportError: |
|
60 |
import sys |
|
61 |
sys.stderr.write("Error: Can't find the file 'settings.py' in the directory") |
|
62 |
sys.exit(1) |
|
63 |
|
|
64 |
if __name__ == "__main__": |
|
65 |
execute_manager(settings) |
/dev/null | ||
---|---|---|
1 |
Django==1.2.4 |
|
2 |
simplejson==2.1.3 |
|
3 |
pycurl==7.19.0 |
|
4 |
python-dateutil==1.4.1 |
|
5 |
django-hudson |
|
6 |
MySQL-python==1.2.3 |
|
7 |
psycopg2==2.4 |
|
8 |
south==0.7.1 |
|
9 |
amqplib==0.6.1 |
|
10 |
lockfile==0.8 |
|
11 |
python-daemon==1.5.5 |
|
12 |
pycrypto==2.1.0 |
|
13 |
IPy==0.75 |
|
14 |
-e git+https://code.grnet.gr/git/vncauthproxy@v1.0#egg=vncauthproxy |
/dev/null | ||
---|---|---|
1 |
|
|
2 |
DATABASES = { |
|
3 |
'default': { |
|
4 |
'ENGINE': 'django.db.backends.mysql', |
|
5 |
'NAME': 'synnefo', |
|
6 |
'USER': 'synnefo', |
|
7 |
'PASSWORD': 'synnefo', |
|
8 |
'HOST': 'localhost', |
|
9 |
'PORT': '3128', |
|
10 |
'OPTIONS': { |
|
11 |
'init_command': 'SET storage_engine=INNODB', |
|
12 |
} |
|
13 |
} |
|
14 |
} |
|
15 |
|
|
16 |
BACKEND_PREFIX_ID = "jenkins-" |
|
17 |
INSTALLED_APPS += ('django_hudson',) |
|
18 |
|
|
19 |
#One year |
|
20 |
AUTH_TOKEN_DURATION = 24 * 365 |
/dev/null | ||
---|---|---|
1 |
|
|
2 |
DATABASES = { |
|
3 |
'default': { |
|
4 |
'ENGINE': 'django.db.backends.postgresql_psycopg2', |
|
5 |
'NAME': 'synnefo', |
|
6 |
'USER': 'synnefo', |
|
7 |
'PASSWORD': 'synnefo', |
|
8 |
'HOST': '127.0.0.1' |
|
9 |
} |
|
10 |
} |
|
11 |
|
|
12 |
BACKEND_PREFIX_ID = "jenkins-" |
|
13 |
INSTALLED_APPS += ('django_hudson',) |
|
14 |
|
|
15 |
#One year |
|
16 |
AUTH_TOKEN_DURATION = 24 * 365 |
/dev/null | ||
---|---|---|
1 |
|
|
2 |
DATABASES = { |
|
3 |
'default': { |
|
4 |
'ENGINE': 'django.db.backends.sqlite3', |
|
5 |
'NAME': PROJECT_PATH + 'synnefo.db' #WARN: This must be an absolute path |
|
6 |
} |
|
7 |
} |
|
8 |
|
|
9 |
BACKEND_PREFIX_ID = "jenkins-" |
|
10 |
INSTALLED_APPS += ('django_hudson',) |
|
11 |
|
|
12 |
#One year |
|
13 |
AUTH_TOKEN_DURATION = 24 * 365 |
/dev/null | ||
---|---|---|
1 |
--- rlib2.py 2011-07-17 20:45:56.000000000 +0300 |
|
2 |
+++ rlib2.py.20110717 2011-07-17 20:45:51.000000000 +0300 |
|
3 |
@@ -785,7 +785,7 @@ |
|
4 |
src_node=baserlib.CheckParameter(data, "src_node", default=None), |
|
5 |
src_path=baserlib.CheckParameter(data, "src_path", default=None), |
|
6 |
start=baserlib.CheckParameter(data, "start", default=True), |
|
7 |
- wait_for_sync=baserlib.CheckParameter(data, "wait_for_sync", default=True), |
|
8 |
+ wait_for_sync=True, |
|
9 |
ip_check=baserlib.CheckParameter(data, "ip_check", default=True), |
|
10 |
name_check=baserlib.CheckParameter(data, "name_check", default=True), |
|
11 |
file_storage_dir=baserlib.CheckParameter(data, "file_storage_dir", |
/dev/null | ||
---|---|---|
1 |
--- kvm-vif-bridge 2011-06-05 11:52:48.000000000 +0300 |
|
2 |
+++ /etc/ganeti/kvm-vif-bridge 2011-06-05 11:55:16.000000000 +0300 |
|
3 |
@@ -91,6 +91,10 @@ |
|
4 |
routed_setup_ipv6 |
|
5 |
routed_setup_firewall |
|
6 |
routed_setup_nfdhcpd |
|
7 |
+ |
|
8 |
+ # Quick and dirty hack for the development platform |
|
9 |
+ # also *bridge* the interface to br0, to support host-based NAT |
|
10 |
+ brctl addif br0 $INTERFACE |
|
11 |
elif [ "$MODE" = "bridged" ]; then |
|
12 |
ifconfig $INTERFACE 0.0.0.0 up |
|
13 |
brctl addif $BRIDGE $INTERFACE |
/dev/null | ||
---|---|---|
1 |
diff --git a/nfdhcpd b/nfdhcpd |
|
2 |
index c3bdcc7..19e8d6c 100755 |
|
3 |
--- a/nfdhcpd |
|
4 |
+++ b/nfdhcpd |
|
5 |
@@ -1,4 +1,4 @@ |
|
6 |
-#!/usr/bin/env python |
|
7 |
+#!/usr/bin/env python2.7 |
|
8 |
# |
|
9 |
|
|
10 |
# nfdcpd: A promiscuous, NFQUEUE-based DHCP server for virtual machine hosting |
|
11 |
@@ -496,7 +496,9 @@ class VMNetProxy(object): # pylint: disable=R0902 |
|
12 |
""" Generate a reply to a BOOTP/DHCP request |
|
13 |
|
|
14 |
""" |
|
15 |
- indev = payload.get_indev() |
|
16 |
+ # If the packet comes from a bridged interface, use the ifindex |
|
17 |
+ # of the physical device instead of the ifindex of the bridge interface |
|
18 |
+ indev = payload.get_physindev() or payload.get_indev() |
|
19 |
try: |
|
20 |
# Get the actual interface from the ifindex |
|
21 |
iface = self.ifaces[indev] |
|
22 |
@@ -537,7 +539,7 @@ class VMNetProxy(object): # pylint: disable=R0902 |
|
23 |
return |
|
24 |
|
|
25 |
resp = Ether(dst=mac, src=self.get_iface_hw_addr(iface))/\ |
|
26 |
- IP(src=DHCP_DUMMY_SERVER_IP, dst=binding.ip)/\ |
|
27 |
+ IP(src=self.dhcp_server_ip, dst=binding.ip)/\ |
|
28 |
UDP(sport=pkt.dport, dport=pkt.sport)/resp |
|
29 |
subnet = self.subnets[binding.link] |
|
30 |
|
|
31 |
@@ -593,7 +595,7 @@ class VMNetProxy(object): # pylint: disable=R0902 |
|
32 |
# Finally, always add the server identifier and end options |
|
33 |
dhcp_options += [ |
|
34 |
("message-type", resp_type), |
|
35 |
- ("server_id", DHCP_DUMMY_SERVER_IP), |
|
36 |
+ ("server_id", self.dhcp_server_ip), |
|
37 |
"end" |
|
38 |
] |
|
39 |
resp /= DHCP(options=dhcp_options) |
|
40 |
@@ -606,7 +608,7 @@ class VMNetProxy(object): # pylint: disable=R0902 |
|
41 |
""" Generate a reply to a BOOTP/DHCP request |
|
42 |
|
|
43 |
""" |
|
44 |
- indev = payload.get_indev() |
|
45 |
+ indev = payload.get_physindev() or payload.get_indev() |
|
46 |
try: |
|
47 |
# Get the actual interface from the ifindex |
|
48 |
iface = self.ifaces[indev] |
|
49 |
@@ -641,7 +643,7 @@ class VMNetProxy(object): # pylint: disable=R0902 |
|
50 |
""" Generate a reply to an ICMPv6 neighbor solicitation |
|
51 |
|
|
52 |
""" |
|
53 |
- indev = payload.get_indev() |
|
54 |
+ indev = payload.get_physindev() or payload.get_indev() |
|
55 |
try: |
|
56 |
# Get the actual interface from the ifindex |
|
57 |
iface = self.ifaces[indev] |
/dev/null | ||
---|---|---|
1 |
root@store67:~/src/python-nfqueue# diff -ur original/nfqueue-bindings-0.3/ mine/nfqueue-bindings-0.3|grep -v ^Only |
|
2 |
diff -ur original/nfqueue-bindings-0.3//libnetfilter_queue.i mine/nfqueue-bindings-0.3/libnetfilter_queue.i |
|
3 |
--- original/nfqueue-bindings-0.3//libnetfilter_queue.i 2009-10-18 18:37:28.000000000 +0300 |
|
4 |
+++ mine/nfqueue-bindings-0.3/libnetfilter_queue.i 2011-06-05 10:58:46.000000000 +0300 |
|
5 |
@@ -51,6 +51,7 @@ |
|
6 |
%extend payload { |
|
7 |
int get_nfmark(); |
|
8 |
int get_indev(); |
|
9 |
+ int get_physindev(); |
|
10 |
int get_outdev(); |
|
11 |
|
|
12 |
unsigned int get_length(void) { |
|
13 |
diff -ur original/nfqueue-bindings-0.3//nfq_common.c mine/nfqueue-bindings-0.3/nfq_common.c |
|
14 |
--- original/nfqueue-bindings-0.3//nfq_common.c 2009-10-18 18:37:28.000000000 +0300 |
|
15 |
+++ mine/nfqueue-bindings-0.3/nfq_common.c 2011-06-05 10:59:54.000000000 +0300 |
|
16 |
@@ -192,6 +192,11 @@ |
|
17 |
return nfq_get_indev(self->nfad); |
|
18 |
} |
|
19 |
|
|
20 |
+int payload_get_physindev(struct payload *self) |
|
21 |
+{ |
|
22 |
+ return nfq_get_physindev(self->nfad); |
|
23 |
+} |
|
24 |
+ |
|
25 |
int payload_get_outdev(struct payload *self) |
|
26 |
{ |
|
27 |
return nfq_get_outdev(self->nfad); |
|
28 |
diff -ur original/nfqueue-bindings-0.3//nfq_common.h mine/nfqueue-bindings-0.3/nfq_common.h |
|
29 |
--- original/nfqueue-bindings-0.3//nfq_common.h 2009-10-18 18:37:28.000000000 +0300 |
|
30 |
+++ mine/nfqueue-bindings-0.3/nfq_common.h 2011-06-05 10:59:18.000000000 +0300 |
|
31 |
@@ -32,6 +32,8 @@ |
|
32 |
|
|
33 |
int payload_get_indev(struct payload *self); |
|
34 |
|
|
35 |
+int payload_get_physindev(struct payload *self); |
|
36 |
+ |
|
37 |
int payload_get_outdev(struct payload *self); |
|
38 |
|
|
39 |
#endif /* __NFQ_COMMON__ */ |
/dev/null | ||
---|---|---|
1 |
django_extensions |
|
2 |
Sphinx>=1.1.2 |
b/devtools/autopkg.sh | ||
---|---|---|
1 |
#!/bin/bash |
|
2 |
|
|
3 |
if [ $# -ne 3 ]; then |
|
4 |
echo "$0 localbranch remotedebian remoteupstream" |
|
5 |
exit 1 |
|
6 |
fi |
|
7 |
|
|
8 |
|
|
9 |
LOCALBRANCH=$1 |
|
10 |
REMOTEDEBIAN=$2 |
|
11 |
REMOTEUPSTREAM=$3 |
|
12 |
BUILDAREA=~/build-area |
|
13 |
PKGAREA=~/packages |
|
14 |
BACKUPAREA=~/backup |
|
15 |
|
|
16 |
PACKAGES=" |
|
17 |
snf-astakos-app |
|
18 |
snf-common |
|
19 |
snf-webproject |
|
20 |
snf-cyclades-app |
|
21 |
snf-cyclades-gtools |
|
22 |
snf-tools |
|
23 |
snf-pithos-app |
|
24 |
snf-pithos-backend |
|
25 |
snf-pithos-tools" |
|
26 |
|
|
27 |
|
|
28 |
set -e |
|
29 |
|
|
30 |
test -d $BUILDAREA |
|
31 |
test -d $PKGAREA |
|
32 |
test -d $BACKUPAREA |
|
33 |
|
|
34 |
|
|
35 |
|
|
36 |
#TODO: check for up-to-date branches |
|
37 |
git checkout $LOCALBRANCH |
|
38 |
git checkout $REMOTEUPSTREAM |
|
39 |
git checkout $REMOTEDEBIAN |
|
40 |
|
|
41 |
TMPDEBIAN=$(mktemp -u debian.XXX) |
|
42 |
|
|
43 |
|
|
44 |
# create tmp debian branch to do everything |
|
45 |
git checkout --track $REMOTEDEBIAN -b $TMPDEBIAN |
|
46 |
|
|
47 |
mrgextra=-m |
|
48 |
mrgmsg="Merge branch '$REMOTEUPSTREAM' into $REMOTEDEBIAN" |
|
49 |
dchextra=-R |
|
50 |
|
|
51 |
# whether we are in snapshot or release mode |
|
52 |
snap=false |
|
53 |
|
|
54 |
tcdialog --defaultno --yesno "Create Snapshot?" 5 20 && snap=true && dchextra=-S && mrgextra= && mrgmsg= |
|
55 |
|
|
56 |
|
|
57 |
# merge local branch to tmp branch with correct msg so that it can be pushes as is to upstream debian |
|
58 |
git merge --no-edit $mrgextra ${mrgextra:+"$mrgmsg"} $LOCALBRANCH |
|
59 |
|
|
60 |
|
|
61 |
# auto edit changlog depending on Snapshot or Release mode |
|
62 |
export EDITOR=/usr/bin/vim |
|
63 |
git-dch --debian-branch=$TMPDEBIAN --git-author --ignore-regex=".*" --multimaint-merge --since=HEAD $dchextra |
|
64 |
git add debian/changelog |
|
65 |
|
|
66 |
|
|
67 |
# get version from the changelog |
|
68 |
# we tag here in order sdist to work as expexted. |
|
69 |
version=$(IFS="()" ; read x v x < debian/changelog ; echo $v) |
|
70 |
if ! $snap; then |
|
71 |
git commit -s -a -m "Bump new upstream version" |
|
72 |
TAGFILE=$(mktemp -t tag.XXX) |
|
73 |
tcdialog --inputbox "New Debian Tag: " 5 30 "debian/$version" 2>$TAGFILE |
|
74 |
git tag $(<$TAGFILE) |
|
75 |
fi |
|
76 |
|
|
77 |
rm -rf $BUILDAREA/* |
|
78 |
|
|
79 |
for p in $PACKAGES; do |
|
80 |
|
|
81 |
cd $p |
|
82 |
python setup.py sdist |
|
83 |
grep "__version_vcs" -r . -l -I | xargs git add -f |
|
84 |
cd - |
|
85 |
|
|
86 |
done |
|
87 |
|
|
88 |
|
|
89 |
git-buildpackage --git-export-dir=$BUILDAREA \ |
|
90 |
--git-upstream-branch=$REMOTEUPSTREAM \ |
|
91 |
--git-debian-branch=$TMPDEBIAN \ |
|
92 |
--git-export=INDEX \ |
|
93 |
--git-ignore-new -sa |
|
94 |
|
|
95 |
# do some dirty backup |
|
96 |
# pkgarea might be needed by auto-deploy tool |
|
97 |
rm -f $PKGAREA/* || true |
|
98 |
cp -v $BUILDAREA/*deb $PKGAREA/ || true |
|
99 |
|
|
100 |
cp -v $BUILDAREA/* $BACKUPAREA/ || true |
|
101 |
|
|
102 |
|
|
103 |
git reset --hard HEAD |
|
104 |
if $snap ; then |
|
105 |
git checkout $LOCALBRANCH |
|
106 |
git branch -D $TMPDEBIAN |
|
107 |
else |
|
108 |
# here we can push as is the commits in remote debian branch |
|
109 |
echo "########### All OK #####################" |
|
110 |
echo "git push origin $REMOTEDEBIAN" |
|
111 |
echo "git checkout $LOCALBRANCH" |
|
112 |
echo |
|
113 |
echo "############ Revert ######################" |
|
114 |
echo "git tag -d " $(<$TAGFILE) |
|
115 |
rm $TAGFILE |
|
116 |
fi |
|
117 |
|
|
118 |
|
b/devtools/runtests-venvs.sh | ||
---|---|---|
1 |
#!/bin/bash |
|
2 |
# |
|
3 |
# |
|
4 |
# Copyright 2011 GRNET S.A. All rights reserved. |
|
5 |
# |
|
6 |
# Redistribution and use in source and binary forms, with or |
|
7 |
# without modification, are permitted provided that the following |
|
8 |
# conditions are met: |
|
9 |
# |
|
10 |
# 1. Redistributions of source code must retain the above |
|
11 |
# copyright notice, this list of conditions and the following |
|
12 |
# disclaimer. |
|
13 |
# |
|
14 |
# 2. Redistributions in binary form must reproduce the above |
|
15 |
# copyright notice, this list of conditions and the following |
|
16 |
# disclaimer in the documentation and/or other materials |
|
17 |
# provided with the distribution. |
|
18 |
# |
|
19 |
# THIS SOFTWARE IS PROVIDED BY GRNET S.A. ``AS IS'' AND ANY EXPRESS |
|
20 |
# OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED |
|
21 |
# WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR |
|
22 |
# PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL GRNET S.A OR |
|
23 |
# CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, |
|
24 |
# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT |
|
25 |
# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF |
|
26 |
# USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED |
|
27 |
# AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT |
|
28 |
# LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN |
|
29 |
# ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE |
|
30 |
# POSSIBILITY OF SUCH DAMAGE. |
|
31 |
# |
|
32 |
# The views and conclusions contained in the software and |
|
33 |
# documentation are those of the authors and should not be |
|
34 |
# interpreted as representing official policies, either expressed |
|
35 |
# or implied, of GRNET S.A. |
|
36 |
# |
|
37 |
|
|
38 |
set -e |
|
39 |
|
|
40 |
rm -rf env |
|
41 |
virtualenv --no-site-packages -ppython2.6 env |
|
42 |
source env/bin/activate |
|
43 |
export PIP_DOWNLOAD_CACHE=/tmp/.pip_cache |
|
44 |
pip install -r requirements.pip |
|
45 |
|
|
46 |
cd snf-common |
|
47 |
rm -rf build dist |
|
48 |
python setup.py install |
|
49 |
cd ../snf-cyclades-app |
|
50 |
rm -rf build dist |
|
51 |
python setup.py install |
|
52 |
cd ../snf-cyclades-gtools |
|
53 |
rm -rf build dist |
|
54 |
python setup.py install |
|
55 |
|
|
56 |
|
|
57 |
cd ../env |
|
58 |
# avoid vncauthproxy errors |
|
59 |
rm bin/vncauthproxy.py |
|
60 |
echo "running django tests..." >&2 |
|
61 |
export SYNNEFO_SETTINGS_DIR=/etc/lala |
|
62 |
snf-manage test admin api db logic userdata --settings=synnefo.settings.test |
|
63 |
cd .. |
|
64 |
deactivate |
|
65 |
|
|
66 |
#rm -rf env |
|
67 |
#virtualenv --no-site-packages -ppython2.7 env |
|
68 |
#source env/bin/activate |
|
69 |
#export PIP_DOWNLOAD_CACHE=/tmp/.pip_cache |
|
70 |
#pip install -r requirements.pip |
|
71 |
|
|
72 |
#cd snf-common |
|
73 |
#rm -rf build dist |
|
74 |
#python setup.py install |
|
75 |
#cd ../snf-cyclades-app |
|
76 |
#rm -rf build dist |
|
77 |
#python setup.py install |
|
78 |
#cd ../snf-cyclades-gtools |
|
79 |
#rm -rf build dist |
|
80 |
#python setup.py install |
|
81 |
|
|
82 |
#cd env |
|
83 |
## avoid vncauthproxy errors |
|
84 |
#rm bin/vncauthproxy.py |
|
85 |
#echo "running django tests..." >&2 |
|
86 |
#snf-manage test aai admin api db helpdesk invitations logic userdata --settings=synnefo.settings.test |
|
87 |
#cd .. |
|
88 |
#deactivate |
|
89 |
#rm -rf env |
b/devtools/runtests.sh | ||
---|---|---|
1 |
#!/bin/bash |
|
2 |
# |
|
3 |
# |
|
4 |
# Copyright 2011 GRNET S.A. All rights reserved. |
|
5 |
# |
|
6 |
# Redistribution and use in source and binary forms, with or |
|
7 |
# without modification, are permitted provided that the following |
|
8 |
# conditions are met: |
|
9 |
# |
|
10 |
# 1. Redistributions of source code must retain the above |
|
11 |
# copyright notice, this list of conditions and the following |
|
12 |
# disclaimer. |
|
13 |
# |
|
14 |
# 2. Redistributions in binary form must reproduce the above |
|
15 |
# copyright notice, this list of conditions and the following |
|
16 |
# disclaimer in the documentation and/or other materials |
|
17 |
# provided with the distribution. |
|
18 |
# |
|
19 |
# THIS SOFTWARE IS PROVIDED BY GRNET S.A. ``AS IS'' AND ANY EXPRESS |
|
20 |
# OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED |
|
21 |
# WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR |
|
22 |
# PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL GRNET S.A OR |
|
23 |
# CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, |
|
24 |
# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT |
|
25 |
# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF |
|
26 |
# USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED |
|
27 |
# AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT |
|
28 |
# LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN |
|
29 |
# ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE |
|
30 |
# POSSIBILITY OF SUCH DAMAGE. |
|
31 |
# |
|
32 |
# The views and conclusions contained in the software and |
|
33 |
# documentation are those of the authors and should not be |
|
34 |
# interpreted as representing official policies, either expressed |
|
35 |
# or implied, of GRNET S.A. |
|
36 |
# |
|
37 |
|
|
38 |
set -e |
|
39 |
|
|
40 |
echo "Running snf-cyclades-app tests..." >&2 |
|
41 |
snf-manage test admin api db logic userdata --settings=synnefo.settings.test |
|
42 |
|
|
43 |
echo "Running snf-cyclades-gtools tests..." >&2 |
|
44 |
./snf-cyclades-gtools/test/synnefo.ganeti_unittest.py |
|
45 |
|
/dev/null | ||
---|---|---|
1 |
pithos.html |
/dev/null | ||
---|---|---|
1 |
<!doctype html> |
|
2 |
<!--[if lt IE 7 ]> <html lang="en" class="no-js ie6"> <![endif]--> |
|
3 |
<!--[if IE 7 ]> <html lang="en" class="no-js ie7"> <![endif]--> |
|
4 |
<!--[if IE 8 ]> <html lang="en" class="no-js ie8"> <![endif]--> |
|
5 |
<!--[if (gte IE 9)|!(IE)]><!--> <html lang="en" class="no-js"> <!--<![endif]--> |
|
6 |
<head> |
|
7 |
<meta charset="utf-8"> |
|
8 |
|
|
9 |
<!-- Always force latest IE rendering engine (even in intranet) & Chrome Frame |
|
10 |
Remove this if you use the .htaccess --> |
|
11 |
<meta http-equiv="X-UA-Compatible" content="chrome=1"> |
|
12 |
|
|
13 |
<title>~okeanos</title> |
|
14 |
<meta name="description" content="Pithos+ GRNet Service"> |
|
15 |
<meta name="author" content="Kostas Papadimitriou <kpap@grnet.gr>"> |
|
16 |
|
|
17 |
<!-- Mobile viewport optimized: j.mp/bplateviewport --> |
|
18 |
<meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1"> |
|
19 |
|
|
20 |
<!-- Place favicon.ico & apple-touch-icon.png |
|
21 |
in the root of your domain and delete these references --> |
|
22 |
<link rel="shortcut icon" href="/favicon.ico"> |
|
23 |
<link rel="apple-touch-icon" href="/apple-touch-icon.png"> |
|
24 |
|
|
25 |
<link rel="stylesheet" href="site_media/css/site.css"> |
|
26 |
<script src="site_media/js/libs/modernizr-1.7.min.js"></script> |
|
27 |
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.min.js"></script> |
|
28 |
<script> |
|
29 |
var CLOUDBAR_ACTIVE_SERVICE = 'okeanos'; |
|
30 |
var CLOUDBAR_LOCATION = "/static/im/cloudbar/"; |
|
31 |
var CLOUDBAR_SERVICES = "/im/get_services"; |
|
32 |
var CLOUDBAR_MENU = "/im/get_menu"; |
|
33 |
|
|
34 |
$(document).ready(function(){ |
|
35 |
$.getScript(CLOUDBAR_LOCATION + 'cloudbar.js'); |
|
36 |
}) |
|
37 |
</script> |
|
38 |
</head> |
|
39 |
<body id="index" style="background-position: 0px -200px"> |
|
40 |
<div class="container"> |
|
41 |
<div class="logo"> |
|
42 |
<a href="#" title="Pithos+"><img |
|
43 |
src="site_media/images/okeanos-logo-alpha.png" |
|
44 |
alt="~okeanos" |
|
45 |
title="~okeanos" /></a> |
|
46 |
</div> |
|
47 |
|
|
48 |
<div class="inner box-round-mid box-shadow-mid clearfix"> |
|
49 |
<div class="cols clearfix"> |
|
50 |
<div class="main-content"> |
|
51 |
|
|
52 |
<div class="intro-text page text"> |
|
53 |
<p> |
|
54 |
Η έκδοση alpha 2 της υπηρεσίας ~okeanos θα είναι σύντομα διαθέσιμη.<br /><br /> |
|
55 |
Αν έχετε λογαριασμό θα λάβετε ενημερωτικό μήνυμα στο email σας.<br /> |
|
56 |
Αν δεν έχετε, φτιάξτε έναν <a href="/im">τώρα</a>! |
|
57 |
</p> |
|
58 |
</div> |
|
59 |
</div> |
|
60 |
|
|
61 |
</div> |
|
62 |
</div> |
|
63 |
</div> |
|
64 |
|
|
65 |
</div> |
|
66 |
</div> |
|
67 |
|
|
68 |
<div class="footer"> |
|
69 |
|
|
70 |
<div class="bottom-text"> |
|
71 |
<p>© 2011 <a target="_blank" href="http://www.grnet.gr/">Εθνικό Δίκτυο Έρευνας και Τεχνολογίας</a></p> |
|
72 |
</div> |
|
73 |
</div> |
|
74 |
|
|
75 |
|
|
76 |
<script src="site_media/js/libs/jquery-1.5.1.min.js"></script> |
|
77 |
<script src="site_media/js/libs/jquery.cookie.js"></script> |
|
78 |
<script src="site_media/js/intro-hover.js"></script> |
|
79 |
<script src="site_media/js/main.js"></script> |
|
80 |
|
|
81 |
<!--[if lt IE 7 ]> |
|
82 |
<script src="site_media/js/libs/dd_belatedpng.js"></script> |
|
83 |
<script>DD_belatedPNG.fix('img, .png_bg');</script> |
|
84 |
<![endif]--> |
|
85 |
</body> |
|
86 |
</html> |
/dev/null | ||
---|---|---|
1 |
<!doctype html> |
|
2 |
<!--[if lt IE 7 ]> <html lang="en" class="no-js ie6"> <![endif]--> |
|
3 |
<!--[if IE 7 ]> <html lang="en" class="no-js ie7"> <![endif]--> |
|
4 |
<!--[if IE 8 ]> <html lang="en" class="no-js ie8"> <![endif]--> |
|
5 |
<!--[if (gte IE 9)|!(IE)]><!--> <html lang="en" class="no-js"> <!--<![endif]--> |
|
6 |
<head> |
|
7 |
<meta charset="utf-8"> |
|
8 |
|
|
9 |
<!-- Always force latest IE rendering engine (even in intranet) & Chrome Frame |
|
10 |
Remove this if you use the .htaccess --> |
|
11 |
<meta http-equiv="X-UA-Compatible" content="chrome=1"> |
|
12 |
|
|
13 |
<title>Pithos+</title> |
|
14 |
<meta name="description" content="Pithos+ GRNet Service"> |
|
15 |
<meta name="author" content="Kostas Papadimitriou <kpap@grnet.gr>"> |
|
16 |
|
|
17 |
<!-- Mobile viewport optimized: j.mp/bplateviewport --> |
|
18 |
<meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1"> |
|
19 |
|
|
20 |
<!-- Place favicon.ico & apple-touch-icon.png |
|
21 |
in the root of your domain and delete these references --> |
|
22 |
<link rel="shortcut icon" href="/favicon.ico"> |
|
23 |
<link rel="apple-touch-icon" href="/apple-touch-icon.png"> |
|
24 |
|
|
25 |
<link rel="stylesheet" href="site_media/css/site.css"> |
|
26 |
<script src="site_media/js/libs/modernizr-1.7.min.js"></script> |
|
27 |
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.min.js"></script> |
|
28 |
<script> |
|
29 |
var CLOUDBAR_ACTIVE_SERVICE = 'cloud'; |
|
30 |
var CLOUDBAR_LOCATION = "/static/im/cloudbar/"; |
|
31 |
var CLOUDBAR_SERVICES = "/im/get_services"; |
|
32 |
var CLOUDBAR_MENU = "/im/get_menu"; |
|
33 |
|
|
34 |
$(document).ready(function(){ |
|
35 |
$.getScript(CLOUDBAR_LOCATION + 'cloudbar.js'); |
|
36 |
}) |
|
37 |
</script> |
|
38 |
</head> |
|
39 |
<body id="index"> |
|
40 |
<div class="container"> |
|
41 |
<div class="logo"> |
|
42 |
<a href="#" title="Pithos+"><img |
|
43 |
src="site_media/images/logo.png" |
|
44 |
alt="Pithos+" |
|
45 |
title="Pithos+" /></a> |
|
46 |
</div> |
|
47 |
|
|
48 |
<div class="inner box-round-mid box-shadow-mid clearfix"> |
|
49 |
<div class="cols clearfix"> |
|
50 |
<div class="main-content"> |
|
51 |
|
|
52 |
<div class="intro-text page text"> |
|
53 |
<p> |
|
54 |
Η υπηρεσία Pithos+ προσφέρει σε κάθε χρήστη <em class="bold">50 GBytes</em> αποθηκευτικού χώρου online, προσβάσιμα από παντού, πάντοτε, με ασφάλεια. Η χρήση είναι <em class="bold">ελεύθερη και δωρεάν</em> για τους φοιτητές και μέλη της ακαδημαϊκής, ερευνητικής και εκπαιδευτικής κοινότητας της Ελλάδας, οι οποίοι μπορούν να αποθηκεύουν τα αρχεία τους και να τα μοιράζονται με άλλους χρήστες ή να τα διαθέτουν στο Διαδίκτυο. Προαιρετικά, τηρείται ιστορικό των αρχείων με δυνατότητα ανάγνωσης παλαιότερων εκδόσεων (versioning). |
|
55 |
</p> |
|
56 |
<!--<p> |
|
57 |
Η χρήση της υπηρεσίας διέπεται από τους όρους χρήσης της. |
|
58 |
</p>--> |
|
59 |
</div> |
|
60 |
<div class="inner-bottom"> |
|
61 |
<a class="gotoapp" |
|
62 |
href="/ui" |
|
63 |
title="Enter Pithos+">Είσοδος</a> |
|
64 |
</div> |
|
65 |
<div class="downloads clearfix"> |
|
66 |
<div class="desc"> |
|
67 |
<h4>Λογισμικό</h4> |
|
68 |
<p class="desc">Για την άμεση πρόσβαση και τον συγχρονισμό των αρχείων του υπολογιστή σας με την υπηρεσία, κατεβάστε την εφαρμογή Pithos+ για το λειτουργικό σύστημα που χρησιμοποιείτε:</p> |
|
69 |
</div> |
|
70 |
<div class="downloads-list"> |
|
71 |
<div class="download windows"> |
|
72 |
<div class="subtitle">Pithos+ για</div> |
|
73 |
<div class="title">Windows</div> |
|
74 |
<div class="compat">XP, Vista, 7</div> |
|
75 |
<div class="link"><a href="http://code.grnet.gr/projects/pithos-ms-client/files">Επιλογή</a></div> |
|
76 |
</div> |
|
77 |
<div class="download osx"> |
|
78 |
<div class="subtitle">Pithos+ για</div> |
|
79 |
<div class="title">Mac OS X</div> |
|
80 |
<div class="compat">10.6 ή νεότερο</div> |
|
81 |
<div class="link"><a href="http://code.grnet.gr/projects/pithos-macos/files">Επιλογή</a></div> |
|
82 |
</div> |
|
83 |
<div class="download linux last"> |
|
84 |
<div class="subtitle">Pithos+ για</div> |
|
85 |
<div class="title">Linux</div> |
|
86 |
<div class="compat">Πακέτο Python</div> |
|
87 |
<div class="link"><a href="http://code.grnet.gr/projects/pithos-tools/files">Επιλογή</a></div> |
|
88 |
</div> |
|
89 |
</div> |
|
90 |
</div> |
|
91 |
</div> |
|
92 |
|
|
93 |
</div> |
|
94 |
</div> |
|
95 |
</div> |
|
96 |
|
|
97 |
</div> |
|
98 |
</div> |
|
99 |
|
|
100 |
<div class="footer"> |
|
101 |
|
|
102 |
<div class="bottom-text"> |
|
103 |
<p>© 2011 <a target="_blank" href="http://www.grnet.gr/">Εθνικό Δίκτυο Έρευνας και Τεχνολογίας</a></p> |
|
104 |
</div> |
|
105 |
</div> |
|
106 |
|
|
107 |
|
|
108 |
<script src="site_media/js/libs/jquery-1.5.1.min.js"></script> |
|
109 |
<script src="site_media/js/libs/jquery.cookie.js"></script> |
|
110 |
<script src="site_media/js/intro-hover.js"></script> |
|
111 |
<script src="site_media/js/main.js"></script> |
|
112 |
|
|
113 |
<!--[if lt IE 7 ]> |
|
114 |
<script src="site_media/js/libs/dd_belatedpng.js"></script> |
|
115 |
<script>DD_belatedPNG.fix('img, .png_bg');</script> |
|
116 |
<![endif]--> |
|
117 |
</body> |
|
118 |
</html> |
/dev/null | ||
---|---|---|
1 |
html, |
|
2 |
body, |
|
3 |
div, |
|
4 |
span, |
|
5 |
applet, |
|
6 |
object, |
|
7 |
iframe, |
|
8 |
h1, |
|
9 |
h2, |
|
10 |
h3, |
|
11 |
h4, |
|
12 |
h5, |
|
13 |
h6, |
|
14 |
p, |
|
15 |
blockquote, |
|
16 |
pre, |
|
17 |
a, |
|
18 |
abbr, |
|
19 |
acronym, |
|
20 |
address, |
|
21 |
big, |
|
22 |
cite, |
|
23 |
code, |
|
24 |
del, |
|
25 |
dfn, |
|
26 |
em, |
|
27 |
font, |
|
28 |
img, |
|
29 |
ins, |
|
30 |
kbd, |
|
31 |
q, |
|
32 |
s, |
|
33 |
samp, |
|
34 |
small, |
|
35 |
strike, |
|
36 |
strong, |
|
37 |
sub, |
|
38 |
sup, |
|
39 |
tt, |
|
40 |
var, |
|
41 |
dl, |
|
42 |
dt, |
|
43 |
dd, |
|
44 |
ol, |
|
45 |
ul, |
|
46 |
li, |
|
47 |
fieldset, |
|
48 |
form, |
|
49 |
label, |
|
50 |
legend, |
|
51 |
table, |
|
52 |
caption, |
|
53 |
tbody, |
|
54 |
tfoot, |
|
55 |
thead, |
|
56 |
tr, |
|
57 |
th, |
|
58 |
td { |
|
59 |
margin: 0; |
|
60 |
padding: 0; |
|
61 |
outline: 0; |
|
62 |
border: 0; |
|
63 |
vertical-align: baseline; |
|
64 |
font-weight: inherit; |
|
65 |
font-style: inherit; |
|
66 |
font-size: 100%; |
|
67 |
font-family: inherit; |
|
68 |
} |
|
69 |
body { |
|
70 |
background: #fff; |
|
71 |
color: #000; |
|
72 |
line-height: 1; |
|
73 |
} |
|
74 |
ol, ul { |
|
75 |
list-style: none; |
|
76 |
} |
|
77 |
table { |
|
78 |
border-collapse: separate; |
|
79 |
border-spacing: 0; |
|
80 |
vertical-align: middle; |
|
81 |
} |
|
82 |
caption, th, td { |
|
83 |
vertical-align: middle; |
|
84 |
text-align: left; |
|
85 |
font-weight: normal; |
|
86 |
} |
|
87 |
q, blockquote { |
|
88 |
quotes: '' ''; |
|
89 |
} |
|
90 |
q:before, |
|
91 |
q:after, |
|
92 |
blockquote:before, |
|
93 |
blockquote:after { |
|
94 |
content: ''; |
|
95 |
} |
|
96 |
a img { |
|
97 |
border: none; |
|
98 |
} |
|
99 |
/*@import "grnetstyles/css3.less";*/ |
|
100 |
/* float clearing for IE6 */ |
|
101 |
* html .clearfix { |
|
102 |
height: 1%; |
|
103 |
overflow: visible; |
|
104 |
} |
|
105 |
/* float clearing for IE7 */ |
|
106 |
* + html .clearfix { |
|
107 |
min-height: 1%; |
|
108 |
} |
|
109 |
/* float clearing for everyone else */ |
|
110 |
.clearfix:after { |
|
111 |
clear: both; |
|
112 |
content: "."; |
|
113 |
display: block; |
|
114 |
height: 0; |
|
115 |
visibility: hidden; |
|
116 |
font-size: 0; |
|
117 |
} |
|
118 |
.footer a { |
|
119 |
color: #74AEC9; |
|
120 |
text-decoration: underline; |
|
121 |
} |
|
122 |
.footer a:hover { |
|
123 |
color: #4085A5; |
|
124 |
} |
|
125 |
body { |
|
126 |
background-image: url("../images/bg.png"); |
|
127 |
background-repeat: repeat-x; |
|
128 |
font-size: 13px; |
|
129 |
font-family: verdana; |
|
130 |
background-position: 0px -90px; |
|
131 |
min-width: 870px; |
|
132 |
} |
|
133 |
body.alt { |
|
134 |
background-image: url("../images/bg-alt.png"); |
|
135 |
} |
|
136 |
.container { |
|
137 |
width: 870px; |
|
138 |
margin: 0 auto; |
|
139 |
margin-top: 20px; |
|
140 |
} |
|
141 |
.inner { |
|
142 |
margin-top: 2.5em; |
|
143 |
background-image: url("../images/bg-inner.png"); |
|
144 |
width: 100%; |
|
145 |
} |
|
146 |
.inner .left { |
|
147 |
position: relative; |
|
148 |
width: 180px; |
|
149 |
float: left; |
|
150 |
} |
|
151 |
.inner .left ul { |
|
152 |
margin-top: 90px; |
|
153 |
color: #4085A5; |
|
154 |
left: -16px; |
|
155 |
padding-top: 40px; |
|
156 |
padding-right: 10px; |
|
157 |
} |
|
158 |
.inner .left ul li { |
|
159 |
font-size: 1.8em; |
|
160 |
margin-bottom: 0.2em; |
|
161 |
position: relative; |
|
162 |
} |
|
163 |
.inner .left ul li a.page-link { |
|
164 |
display: block; |
|
165 |
color: inherit; |
|
166 |
text-decoration: none; |
|
167 |
padding: 10px; |
|
168 |
padding-left: 36px; |
|
169 |
} |
|
170 |
.inner .left ul li a.page-link:hover, .inner .left ul li.selected a.page-link { |
|
171 |
text-shadow: none; |
|
172 |
color: #fff; |
|
173 |
background-color: #74AEC9; |
|
174 |
border-left: 0px solid #92C1D7; |
|
175 |
padding-left: 36px; |
|
176 |
} |
|
177 |
.inner .left ul li .close-button:hover { |
|
178 |
background-color: #99C9E0; |
|
179 |
} |
|
180 |
.inner .left ul li .close-button { |
|
181 |
display: block; |
|
182 |
position: absolute; |
|
183 |
left: -30px; |
|
184 |
top: 0px; |
|
185 |
font-size: 0.7em; |
|
186 |
border: none; |
|
187 |
background: transparent; |
|
188 |
padding: 0; |
|
189 |
padding-top: 13px; |
|
190 |
padding-left: 9px; |
|
191 |
margin: 0px; |
|
192 |
text-decoration: none; |
|
193 |
color: #fff; |
|
194 |
width: 21px; |
|
195 |
height: 30px; |
|
196 |
font-weight: bold; |
|
197 |
display: block; |
|
198 |
visibility: hidden; |
|
199 |
} |
|
200 |
.inner .left ul li.current a.page-link { |
|
201 |
color: #fff; |
|
202 |
background-color: #74AEC9; |
|
203 |
border-left: 30px solid #92C1D7; |
|
204 |
padding-left: 36px; |
|
205 |
margin-left: -30px; |
|
206 |
} |
|
207 |
.inner .video-cont, .inner .page-cont { |
|
208 |
width: 690px; |
|
209 |
float: right; |
|
210 |
} |
|
211 |
.inner .cols { |
|
212 |
position: relative; |
|
213 |
} |
|
214 |
.page { |
|
215 |
display: block; |
|
216 |
top: 0; |
|
217 |
} |
|
218 |
.page-wrapper { |
|
219 |
position: relative; |
|
220 |
} |
|
221 |
.page.text { |
|
222 |
margin-left: 27px; |
|
223 |
padding-top: 20px; |
|
224 |
padding-right: 20px; |
|
225 |
padding-bottom: 10px; |
|
226 |
} |
|
227 |
.page.text h2 { |
|
228 |
font-size: 1.9em; |
|
229 |
color: #4085A5; |
|
230 |
margin-bottom: 1.2em; |
|
231 |
} |
|
232 |
.page.text h2 em { |
|
233 |
color: #FCFDFE; |
|
234 |
} |
|
235 |
.page.text a { |
|
236 |
color: #213D4A; |
|
237 |
} |
|
238 |
.page.text p em { |
|
239 |
color: #4C6A78; |
|
240 |
/*font-weight: bold;*/ |
|
241 |
|
|
242 |
} |
|
243 |
.page.text h3 { |
|
244 |
font-size: 1.2em; |
|
245 |
color: #4394B9; |
|
246 |
margin-bottom: 0.5em; |
|
247 |
margin-top: 1.5em; |
|
248 |
} |
|
249 |
.page.text h4 { |
|
250 |
font-weight: bold; |
|
251 |
font-size: 1.1em; |
|
252 |
margin-bottom: 0.3em; |
|
253 |
} |
|
254 |
.page.text p { |
|
255 |
color: #213D4A; |
|
256 |
font-size: 1.1em; |
|
257 |
margin-bottom: 1em; |
|
258 |
text-align: justify; |
|
259 |
line-height: 1.4em; |
|
260 |
} |
|
261 |
.inner .video { |
|
262 |
width: 640px; |
|
263 |
height: 360px; |
|
264 |
background-color: #4085A5; |
|
265 |
margin: 20px; |
|
266 |
margin-left: 27px; |
|
267 |
margin-bottom: 20px; |
|
268 |
margin-top: 20px; |
|
269 |
/*border: 1px solid #4085A5;*/ |
|
270 |
|
|
271 |
} |
|
272 |
.logo { |
|
273 |
text-align: center; |
|
274 |
} |
|
275 |
.logo img { |
|
276 |
margin-left: 75px; |
|
277 |
} |
|
278 |
.inner-bottom { |
|
279 |
width: 100%; |
|
280 |
} |
|
281 |
.inner-bottom .testuser { |
|
282 |
display: none; |
|
283 |
background: #000; |
|
284 |
margin-right: 40px; |
|
285 |
float: right; |
|
286 |
margin-top: 10px; |
|
287 |
margin-bottom: 20px; |
|
288 |
} |
|
289 |
.gotoapp { |
|
290 |
display: block; |
|
291 |
padding: 0.7em 5em; |
|
292 |
color: #fff; |
|
293 |
font-size: 1.1em; |
|
294 |
background-color: #FF7F2A; |
|
295 |
cursor: pointer; |
|
296 |
margin-right: -20px; |
|
297 |
text-decoration: none; |
|
298 |
} |
|
299 |
.gotoapp:hover { |
|
300 |
background-color: #FF9955; |
|
301 |
} |
|
302 |
.page.text { |
|
303 |
margin-right: 20px; |
|
304 |
margin-top: 20px; |
|
305 |
} |
|
306 |
.inner-bottom.in-page .testuser { |
|
307 |
margin-right: 60px; |
|
308 |
} |
|
309 |
.banner-coming { |
|
310 |
position: absolute; |
|
311 |
left: 0px; |
|
312 |
top: 0px; |
|
313 |
} |
|
314 |
.footer { |
|
315 |
text-align: center; |
|
316 |
margin: 0 auto; |
|
317 |
width: 870px; |
|
318 |
margin: 2em auto; |
|
319 |
} |
|
320 |
.footer .links { |
|
321 |
color: #4085A5; |
|
322 |
margin-bottom: 1em; |
|
323 |
} |
|
324 |
.footer .links li { |
|
325 |
display: inline; |
|
326 |
margin-right: 1em; |
|
327 |
padding-right: 1em; |
|
328 |
border-right: 1px solid #4085A5; |
|
329 |
} |
|
330 |
.footer .links li a { |
|
331 |
color: inherit; |
|
332 |
text-decoration: none; |
|
333 |
} |
|
334 |
.footer .links li.last { |
|
335 |
margin-right: 0; |
|
336 |
padding-right: 0; |
|
337 |
border: none; |
|
338 |
} |
|
339 |
.footer .bottom-text { |
|
340 |
color: #74AEC9; |
|
341 |
} |
|
342 |
/*style 2*/ |
|
343 |
body.style2 .page.text { |
|
344 |
background-color: #7DB3CC; |
|
345 |
padding-left: 20px; |
|
346 |
} |
|
347 |
body.style2 .page.text p, body.style2 .page.text h2 { |
|
348 |
color: #fff; |
|
349 |
} |
|
350 |
#video div.vjs-big-play-button { |
|
351 |
background: none !important; |
|
352 |
border: none !important; |
|
353 |
box-shadow: 4px 4px 20px #477589 !important; |
|
354 |
} |
|
355 |
#video div.vjs-big-play-button:hover { |
|
356 |
background: none !important; |
|
357 |
border: none !important; |
|
358 |
box-shadow: 4px 4px 50px #477589 !important; |
|
359 |
background: #4085A5 !important; |
|
360 |
} |
|
361 |
body { |
|
362 |
text-align: center; |
|
363 |
} |
|
364 |
* html body legend { |
|
365 |
margin: -8px 16px 0; |
|
366 |
padding: 0; |
|
367 |
} |
|
368 |
html > body p code { |
|
369 |
*white-space: normal; |
|
370 |
} |
|
371 |
.container { |
|
372 |
text-align: left; |
|
373 |
} |
|
374 |
sup { |
|
375 |
vertical-align: text-top; |
|
376 |
} |
|
377 |
sub { |
|
378 |
vertical-align: text-bottom; |
|
379 |
} |
|
380 |
hr { |
|
381 |
margin: -8px auto 11px; |
|
382 |
} |
|
383 |
img { |
|
384 |
-ms-interpolation-mode: bicubic; |
|
385 |
} |
|
386 |
fieldset { |
|
387 |
padding-top: 0; |
|
388 |
} |
|
389 |
textarea { |
|
390 |
overflow: auto; |
|
391 |
} |
|
392 |
input.text { |
|
393 |
margin: .5em 0; |
|
394 |
border: 1px solid #bbb; |
|
395 |
background-color: #ffffff; |
|
396 |
} |
|
397 |
input.text:focus { |
|
398 |
border: 1px solid #666666; |
|
399 |
} |
|
400 |
input.title { |
|
401 |
margin: .5em 0; |
|
402 |
border: 1px solid #bbb; |
|
403 |
background-color: #ffffff; |
|
404 |
} |
|
405 |
input.title:focus { |
|
406 |
border: 1px solid #666666; |
|
407 |
} |
|
408 |
input.checkbox { |
|
409 |
position: relative; |
|
410 |
top: 0.25em; |
|
411 |
} |
|
412 |
input.radio { |
|
413 |
position: relative; |
|
414 |
top: 0.25em; |
|
415 |
} |
|
416 |
input.button { |
|
417 |
position: relative; |
|
418 |
top: 0.25em; |
|
419 |
} |
|
420 |
textarea { |
|
421 |
margin: 0.5em 0; |
|
422 |
} |
|
423 |
select { |
|
424 |
margin: 0.5em 0; |
|
425 |
} |
|
426 |
button { |
|
427 |
position: relative; |
|
428 |
top: 0.25em; |
|
429 |
} |
|
430 |
a { |
|
431 |
color: #4085A5; |
|
432 |
} |
|
433 |
.menu li { |
|
434 |
height: 50px; |
|
435 |
} |
|
436 |
.inner-bottom .testuser { |
|
437 |
margin-right: 22px; |
|
438 |
} |
|
439 |
.inner-bottom .testuser a { |
|
440 |
margin-right: 0px; |
|
441 |
} |
|
442 |
/* Reset.less |
|
443 |
* Props to Eric Meyer (meyerweb.com) for his CSS reset file. We're using an adapted version here that cuts out some of the reset HTML elements we will never need here (i.e., dfn, samp, etc). |
|
444 |
* ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- */ |
|
445 |
html, body { |
|
446 |
margin: 0; |
|
447 |
padding: 0; |
|
448 |
} |
|
449 |
h1, |
|
450 |
h2, |
|
451 |
h3, |
|
452 |
h4, |
|
453 |
h5, |
|
454 |
h6, |
|
455 |
p, |
|
456 |
blockquote, |
|
457 |
pre, |
|
458 |
a, |
|
459 |
abbr, |
|
460 |
acronym, |
|
461 |
address, |
|
462 |
cite, |
|
463 |
code, |
|
464 |
del, |
|
465 |
dfn, |
|
466 |
em, |
|
467 |
img, |
|
468 |
q, |
|
469 |
s, |
|
470 |
samp, |
|
471 |
small, |
|
472 |
strike, |
|
473 |
strong, |
|
474 |
sub, |
|
475 |
sup, |
|
476 |
tt, |
|
477 |
var, |
|
478 |
dd, |
|
479 |
dl, |
|
480 |
dt, |
|
481 |
li, |
|
482 |
ol, |
|
483 |
ul, |
|
484 |
fieldset, |
|
485 |
form, |
|
486 |
label, |
|
487 |
legend, |
|
488 |
button, |
|
489 |
table, |
|
490 |
caption, |
|
491 |
tbody, |
|
492 |
tfoot, |
|
493 |
thead, |
|
494 |
tr, |
|
495 |
th, |
|
496 |
td { |
|
497 |
margin: 0; |
|
498 |
padding: 0; |
|
499 |
border: 0; |
|
500 |
font-weight: normal; |
|
501 |
font-style: normal; |
|
502 |
font-size: 100%; |
|
503 |
line-height: 1; |
|
504 |
font-family: inherit; |
|
505 |
} |
|
506 |
table { |
|
507 |
border-collapse: collapse; |
|
508 |
border-spacing: 0; |
|
509 |
} |
|
510 |
ol, ul { |
|
511 |
list-style: none; |
|
512 |
} |
|
513 |
q:before, |
|
514 |
q:after, |
|
515 |
blockquote:before, |
|
516 |
blockquote:after { |
|
517 |
content: ""; |
|
518 |
} |
|
519 |
html { |
|
520 |
overflow-y: scroll; |
|
521 |
font-size: 100%; |
|
522 |
-webkit-text-size-adjust: 100%; |
|
523 |
-ms-text-size-adjust: 100%; |
|
524 |
} |
|
525 |
a:focus { |
|
526 |
outline: thin dotted; |
|
527 |
} |
|
528 |
a:hover, a:active { |
|
529 |
outline: 0; |
|
530 |
} |
|
531 |
article, |
|
532 |
aside, |
|
533 |
details, |
|
534 |
figcaption, |
|
535 |
figure, |
|
536 |
footer, |
|
537 |
header, |
|
538 |
hgroup, |
|
539 |
nav, |
|
540 |
section { |
|
541 |
display: block; |
|
542 |
} |
|
543 |
audio, canvas, video { |
|
544 |
display: inline-block; |
|
545 |
*display: inline; |
|
546 |
*zoom: 1; |
|
547 |
} |
|
548 |
audio:not([controls]) { |
|
549 |
display: none; |
|
550 |
} |
|
551 |
sub, sup { |
Also available in: Unified diff