Commit 3ba4a851 authored by Jondy Zhao's avatar Jondy Zhao

Fix issues for node config

parent 32de5cf4
...@@ -24,13 +24,13 @@ Source: "cygwin-packages\*"; DestDir: "{app}\cygwin-packages"; Flags: recursesub ...@@ -24,13 +24,13 @@ Source: "cygwin-packages\*"; DestDir: "{app}\cygwin-packages"; Flags: recursesub
Source: "publish\buildout\slapos\*"; DestDir: "{app}\cygwin\opt\slapos"; Flags: recursesubdirs; Source: "publish\buildout\slapos\*"; DestDir: "{app}\cygwin\opt\slapos"; Flags: recursesubdirs;
Source: "opt\git\slapos.core\slapos.cfg.example"; DestDir: "{app}\cygwin\etc\slapos"; Source: "opt\git\slapos.core\slapos.cfg.example"; DestDir: "{app}\cygwin\etc\slapos";
Source: "opt\git\slapos.core\slapos-client.cfg.example"; DestDir: "{app}\cygwin\etc\slapos"; Source: "opt\git\slapos.core\slapos-client.cfg.example"; DestDir: "{app}\cygwin\etc\slapos";
Source: "opt\downloads\pyOpenSSL-0.13.tar.gz"; DestDir: "{app}\cygwin"; DestName: "pyOpenSSL.tar.gz"; Flags: deleteafterinstall;
Source: "opt\git\re6stnet\dist\re6stnet-0.1.tar.gz"; DestDir: "{app}\cygwin"; DestName: "re6stnet-0.1.tar.gz"; Flags: deleteafterinstall;
Source: "opt\downloads\miniupnpc-1.8.tar.gz"; DestDir: "{app}\cygwin"; DestName: "miniupnpc.tar.gz"; Flags: deleteafterinstall;
Source: "opt\git\slapos\component\cygwin\slapos-core.patch"; DestDir: "{app}\cygwin\etc\slapos\patches"; Source: "opt\git\slapos\component\cygwin\slapos-core.patch"; DestDir: "{app}\cygwin\etc\slapos\patches";
Source: "opt\git\slapos\component\cygwin\slapos-cookbook-inotifyx.patch"; DestDir: "{app}\cygwin\etc\slapos\patches"; Source: "opt\git\slapos\component\cygwin\slapos-cookbook-inotifyx.patch"; DestDir: "{app}\cygwin\etc\slapos\patches";
Source: "opt\git\re6stnet\dist\re6stnet-0.1.tar.gz"; DestDir: "{app}\cygwin"; DestName: "re6stnet-0.1.tar.gz"; Flags: deleteafterinstall;
Source: "opt\downloads\miniupnpc-1.8.tar.gz"; DestDir: "{app}\cygwin"; DestName: "miniupnpc.tar.gz"; Flags: deleteafterinstall;
Source: "opt\git\qooxdoo\application\playground\build\*"; DestDir: "{app}\cygwin\etc\slapos\desktop"; Flags: recursesubdirs; Source: "opt\git\qooxdoo\application\playground\build\*"; DestDir: "{app}\cygwin\etc\slapos\desktop"; Flags: recursesubdirs;
Source: "opt\git\qooxdoo\application\showcase\build\*"; DestDir: "{app}\cygwin\etc\slapos\node"; Flags: recursesubdirs; Source: "opt\git\qooxdoo\application\showcase\build\*"; DestDir: "{app}\cygwin\etc\slapos\node"; Flags: recursesubdirs;
......
...@@ -32,7 +32,7 @@ if [[ -f "$1" ]] ; then ...@@ -32,7 +32,7 @@ if [[ -f "$1" ]] ; then
elif [[ ! -f $client_certificate_file ]] ; then elif [[ ! -f $client_certificate_file ]] ; then
read -p "Where is certificate file: " certificate_file read -p "Where is certificate file: " certificate_file
[[ ! -f "$certificate_file" ]] && \ [[ ! -f "$certificate_file" ]] && \
echo "Certificate file %s doesn't exists." && exit 1 echo "Certificate file $certificate_file doesn't exists." && exit 1
echo "Copy certificate from $certificate_file to $client_certificate_file" echo "Copy certificate from $certificate_file to $client_certificate_file"
cp $certificate_file $client_certificate_file cp $certificate_file $client_certificate_file
fi fi
...@@ -43,18 +43,18 @@ if [[ -f "$2" ]] ; then ...@@ -43,18 +43,18 @@ if [[ -f "$2" ]] ; then
elif [[ ! -f $client_key_file ]] ; then elif [[ ! -f $client_key_file ]] ; then
read -p "Where is key file: " key_file read -p "Where is key file: " key_file
[[ ! -f "$key_file" ]] && \ [[ ! -f "$key_file" ]] && \
echo "Key file %s doesn't exists." && exit 1 echo "Key file $key_file doesn't exists." && exit 1
echo "Copy key from $key_file to $client_key_file" echo "Copy key from $key_file to $client_key_file"
cp $key_file $client_key_file cp $key_file $client_key_file
fi fi
if [[ ! -f $client_configure_file ]] ; then if [[ ! -f $client_configure_file ]] ; then
[[ -f $template_configure_file ]] || \ [[ -f $template_configure_file ]] || \
(cd /etc/slapos; wget -O slapos.cfg http://git.erp5.org/gitweb/slapos.core.git/blob_plain/HEAD:/slapos-client.cfg.example) || \ (cd /etc/slapos; wget http://git.erp5.org/gitweb/slapos.core.git/blob_plain/HEAD:/slapos-client.cfg.example) || \
(echo "Download slapos-client.cfg.example failed."; exit 1) (echo "Download slapos-client.cfg.example failed."; exit 1)
cp $template_configure_file $client_configure_file cp $template_configure_file $client_configure_file
fi fi
sed -i -e "s/^cert_file.*$/cert_file = $client_certificate_file/" \ sed -i -e "s%^cert_file.*$%cert_file = $client_certificate_file%" \
-e "s/^key_file.*$/key_file = $client_key_file/" \ -e "s%^key_file.*$%key_file = $client_key_file%" \
$client_configure_file $client_configure_file
...@@ -13,7 +13,7 @@ ...@@ -13,7 +13,7 @@
# 4. Create node configure file by parameters ca/key and computer id # 4. Create node configure file by parameters ca/key and computer id
# #
# 5. Add init-slapos-node.sh as system startup item # 5. Add init-slapos-node.sh as system startup item
# #
# Usage: # Usage:
# #
# ./slapos-node-config # ./slapos-node-config
...@@ -35,15 +35,15 @@ function get_all_connections() ...@@ -35,15 +35,15 @@ function get_all_connections()
# #
# If nothing found, return empty # If nothing found, return empty
# If more than one, return the first one # If more than one, return the first one
# #
function get_new_connection() function get_new_connection()
{ {
original_connections="$* X" original_connections=" $* "
current_connections=$(get_all_connections) current_connections=$(get_all_connections)
for name in $current_connections ; do for name in $current_connections ; do
[[ "$original_connections" == ".* $name .*" ]] && \ [[ ! "$original_connections" == *[\ ]$name[\ ]* ]] && \
echo ${name//%/ /} && return 0 echo ${name//%/ } && return 0
done done
} }
...@@ -54,12 +54,12 @@ function reset_connection() ...@@ -54,12 +54,12 @@ function reset_connection()
{ {
ifname=${1-re6stnet-lo} ifname=${1-re6stnet-lo}
for addr in $(netsh interface ipv6 show address $ifname level=normal | \ for addr in $(netsh interface ipv6 show address $ifname level=normal | \
grep "^Manual" \ grep "^Manual" | \
sed -e "s/^\(\w\+\s\+\)\{4\}//") ; do sed -e "s/^\(\w\+\s\+\)\{4\}//") ; do
netsh interface ipv6 del address $ifname $addr netsh interface ipv6 del address $ifname $addr
done done
for addr in $(netsh interface ip show address $ifname | \ for addr in $(netsh interface ip show address $ifname | \
grep "IP Address:" \ grep "IP Address:" | \
sed -e "s/IP Address://") ; do sed -e "s/IP Address://") ; do
netsh interface del address $ifname $addr netsh interface del address $ifname $addr
done done
...@@ -76,37 +76,49 @@ function connection2guid() ...@@ -76,37 +76,49 @@ function connection2guid()
sed -e "s/^GUID\s*:\s*//" sed -e "s/^GUID\s*:\s*//"
} }
# Remove startup item first. node_certificate_file=/etc/opt/slapos/ssl/certificate
node_key_file=/etc/opt/slapos/ssl/key
node_config_file=/etc/opt/slapos/slapos.cfg
node_template_file=/etc/slapos/slapos.cfg.example
run_key='\HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Run' run_key='\HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Run'
slapos_run_entry=SlapOS-Node slapos_run_entry=SlapOS-Node
slapos_ifname=re6stnet-lo
# Remove startup item first.
regtool -q unset "$run_key\\$slapos_run_entry" regtool -q unset "$run_key\\$slapos_run_entry"
# #
# Add msloop network adapter, ane name it as "re6stnet-lo" # Add msloop network adapter, ane name it as "re6stnet-lo"
# #
original_connections=$(get_all_connections) echo Checking slapos network adapter: $slapos_ifname ...
if [[ ! "$original_connections X" == ".*\bre6stnet-lo\b.*X" ; then original_connections=$(echo $(get_all_connections))
if [[ ! " $original_connections " == *[\ ]$slapos_ifname[\ ]* ]] ; then
echo Installing slapos network adapter ...
devcon install $WINDIR\\inf\\netloop.inf *MSLOOP devcon install $WINDIR\\inf\\netloop.inf *MSLOOP
connection_name=$(get_new_connection $original_connections) connection_name=$(get_new_connection $original_connections)
[[ "X$connection_name" == "X" ]] && \ [[ "X$connection_name" == "X" ]] && \
echo "Add msloop network adapter failed." && \ echo "Add msloop network adapter failed." && \
exit 1 exit 1
netsh interface set interface "$connection_name" newname=re6stnet-lo echo
netsh interface set interface name="$connection_name" newname="$slapos_ifname"
fi fi
reset_connection re6stnet-lo reset_connection $slapos_ifname
echo SlapOS network adapter OK.
# #
# Generate Node Configure file # Generate Node Configure file
# #
echo echo
echo Before continue to configure, make sure you have register your server to echo Before continue to configure, make sure you have register your server to
echo slapos.org community Cloud, and have obtained X509 certificate and key echo slapos.org community Cloud, and have obtained X509 certificate and key
echo which are needed for the following configuration process. echo which are needed for the following configuration process.
echo echo
echo Refer to http://community.slapos.org/wiki/osoe-Lecture.SlapOS.Extended/developer-Installing.SlapOS.Slave.Node.Source echo Refer to http://community.slapos.org/wiki/osoe-Lecture.SlapOS.Extended/developer-Installing.SlapOS.Slave.Node.Source
echo echo
mkdir -p /etc/opt/slapos/ssl/partition_pki
if [[ "X$1" == "XCOMP-[0-9]+" ]] ; then if [[ "$1" == COMP-+([0-9]) ]] ; then
computer_id=$1 computer_id=$1
else else
[[ "X$1" == "X" ]] || echo "Invalid computer id: $1" [[ "X$1" == "X" ]] || echo "Invalid computer id: $1"
...@@ -114,59 +126,54 @@ else ...@@ -114,59 +126,54 @@ else
echo Please input computer id you have registered, it looks like COMP-XXXX echo Please input computer id you have registered, it looks like COMP-XXXX
read -p "computer id: " computer_id read -p "computer id: " computer_id
fi fi
[[ "X$computer_id" == "XCOMP-[0-9]+" ]] || \ [[ "$computer_id" == COMP-+([0-9]) ]] || \
(echo "Invalid computer id specified."; exit 1) (echo "Invalid computer id specified."; exit 1)
node_certificate_file=/etc/opt/slapos/ssl/certificate
if [[ -f "$2" ]] ; then if [[ -f "$2" ]] ; then
echo "Copy certificate from $2 to $node_certificate_file" echo "Copy certificate from $2 to $node_certificate_file"
cp $2 $node_certificate_file cp $2 $node_certificate_file
elif [[ ! -f $node_certificate_file ]] ; then elif [[ ! -f $node_certificate_file ]] ; then
read -p "Where is certificate file: " certificate_file read -p "Where is certificate file: " certificate_file
[[ ! -f "$certificate_file" ]] && \ [[ ! -f "$certificate_file" ]] && \
echo "Certificate file %s doesn't exists." && exit 1 echo "Certificate file $certificate_file doesn't exists." && exit 1
echo "Copy certificate from $certificate_file to $node_certificate_file" echo "Copy certificate from $certificate_file to $node_certificate_file"
cp $certificate_file $node_certificate_file cp $certificate_file $node_certificate_file
fi fi
node_key_file=/etc/opt/slapos/ssl/key
if [[ -f "$3" ]] ; then if [[ -f "$3" ]] ; then
echo "Copy key from $3 to $node_key_file" echo "Copy key from $3 to $node_key_file"
cp $3 $node_key_file cp $3 $node_key_file
elif [[ ! -f $node_key_file ]] ; then elif [[ ! -f $node_key_file ]] ; then
read -p "Where is key file: " key_file read -p "Where is key file: " key_file
[[ ! -f "$key_file" ]] && \ [[ ! -f "$key_file" ]] && \
echo "Key file %s doesn't exists." && exit 1 echo "Key file $key_file doesn't exists." && exit 1
echo "Copy key from $key_file to $node_key_file" echo "Copy key from $key_file to $node_key_file"
cp $key_file $node_key_file cp $key_file $node_key_file
fi fi
# Hope it will not confilct with original network in the local machine # Hope it will not confilct with original network in the local machine
ipv4_local_network=10.201.67.0/8 ipv4_local_network=10.201.67.0/8
# Add ipv4 address # Add ipv4 address
ip -4 addr $ipv4_local_network dev re6stnet-lo ip -4 addr add $ipv4_local_network dev $slapos_ifname
# Create node configure file, replace interface_name with guid of # Create node configure file, replace interface_name with guid of
# re6stnet-lo # re6stnet-lo
mkdir -p /etc/opt/slapos/ssl/partition_pki
nodecfgfile=/etc/opt/slapos/slapos.cfg
if [[ ! -f $nodecfgfile ]] ; then if [[ ! -f $node_config_file ]] ; then
[[ -f /etc/slapos/slapos.cfg.example ]] || \ [[ -f $node_template_file ]] || \
(cd /etc/slapos; wget -O slapos.cfg http://git.erp5.org/gitweb/slapos.core.git/blob_plain/HEAD:/slapos.cfg.example) || \ (cd /etc/slapos; wget http://git.erp5.org/gitweb/slapos.core.git/blob_plain/HEAD:/slapos.cfg.example) || \
(echo "Download slapos.cfg.example failed."; exit 1) (echo "Download slapos.cfg.example failed."; exit 1)
cp $node_template_file $node_config_file
cp /etc/slapos/slapos.cfg.example $nodecfgfile
fi fi
interface_guid=$(connection2guid re6stnet-lo) interface_guid=$(connection2guid $slapos_ifname)
# generate /etc/slapos/slapos.cfg # generate /etc/slapos/slapos.cfg
sed -i -e "s/^\\s*interface_name.*$/interface_name = $interface_guid/" \ sed -i -e "s%^\\s*interface_name.*$%interface_name = $interface_guid%" \
-e "s/^#\?\\s*ipv6_interface.*$/# ipv6_interface =/g" \ -e "s%^#\?\\s*ipv6_interface.*$%# ipv6_interface =%g" \
-e "s/^ipv4_local_network.*$/ipv4_local_network = $ipv4_local_network/" \ -e "s%^ipv4_local_network.*$%ipv4_local_network = $ipv4_local_network%" \
-e "s/^computer_id.*$/computer_id = $computer_id/" \ -e "s%^computer_id.*$%computer_id = $computer_id%" \
$nodecfgfile $node_config_file
# #
# Re6stnet # Re6stnet
...@@ -177,23 +184,41 @@ netsh interface ipv6 show interface > /dev/null || netsh interface ipv6 install ...@@ -177,23 +184,41 @@ netsh interface ipv6 show interface > /dev/null || netsh interface ipv6 install
# miniupnpc is required by re6stnet # miniupnpc is required by re6stnet
if [[ ! -f /opt/miniupnpc ]] ; then if [[ ! -f /opt/miniupnpc ]] ; then
cd /opt
if [[ -f /miniupnpc.tar.gz ]] ; then if [[ -f /miniupnpc.tar.gz ]] ; then
tar xzf miniupnpc.tar.gz echo "Installing miniupnpc ..."
mv $(ls miniupnpc-*) miniupnpc cd /opt
tar xzf /miniupnpc.tar.gz --no-same-owner
mv $(ls -d miniupnpc-*) miniupnpc
cd miniupnpc cd miniupnpc
make
python setup.py install || echo "Install miniupnpc failed." python setup.py install || echo "Install miniupnpc failed."
else
echo "No miniupnpc source package found."
fi
fi
# pyOpenSSL is required by re6stnet
if [[ ! -f /opt/pyOpenSSL ]] ; then
if [[ -f /pyOpenSSL.tar.gz ]] ; then
echo "Installing pyOpenSSL ..."
cd /opt
tar xzf /pyOpenSSL.tar.gz --no-same-owner
mv $(ls -d pyOpenSSL-*) pyOpenSSL
cd pyOpenSSL
python setup.py install || echo "Install pyOpenSSL failed."
fi fi
fi fi
# Install re6stnet # Install re6stnet
if [[ ! -f /opt/re6stnet ]] ; then if [[ ! -f /opt/re6stnet ]] ; then
echo "Installing re6stnet ..."
cd /opt cd /opt
if [[ -f /re6stnet.tar.gz ]] ; then if [[ -f /re6stnet.tar.gz ]] ; then
tar xzf re6stnet.tar.gz tar xzf /re6stnet.tar.gz --no-same-owner
mv $(ls re6stnet-*) re6stnet mv $(ls -d re6stnet-*) re6stnet
else else
git clone -b cygwin -n http://git.erp5.org/repos/re6stnet.git echo "Clone re6stnet from http://git.erp5.org/repos/re6stnet.git"
git clone -b cygwin -n http://git.erp5.org/repos/re6stnet.git
fi fi
cd re6stnet cd re6stnet
python setup.py install || echo "Install re6stnet failed." python setup.py install || echo "Install re6stnet failed."
...@@ -206,18 +231,20 @@ if [[ ! -f re6stnet.conf ]] ; then ...@@ -206,18 +231,20 @@ if [[ ! -f re6stnet.conf ]] ; then
fi fi
[[ ! -f re6stnet.conf ]] && echo "Register to nexedi re6stnet failed" && exit 1 [[ ! -f re6stnet.conf ]] && echo "Register to nexedi re6stnet failed" && exit 1
# #
# Add run item when windows startup # Add run item when windows startup
# #
init_script_name=/etc/slapos/scripts/init-salpos-node init_script=/etc/slapos/scripts/init-slapos-node
echo "Add ${init_script_name}.sh as Windows startup item." echo "Add ${init_script}.sh as Windows startup item."
if [[ ! -f ${init_script_name}.bat ]] ; then # if [[ ! -f ${init_script}.bat ]] ; then
cat <<EOF > ${init_script_name}.bat # cat <<EOF > ${init_script}.bat
\"$(cygpath -w /usr/bin/sh)\" --login -i ${init_script_name}.sh # "$(cygpath -w /usr/bin/bash)" --login -i ${init_script}.sh
EXIT 0 # EXIT 0
EOF # EOF
fi # fi
regtool -q set "$run_key\\$slapos_run_entry" \ regtool -q set "$run_key\\$slapos_run_entry" \
"START \"$(cygpath -w ${init_script_name}.bat)" || \ "\"$(cygpath -w /usr/bin/bash)\" --login -i ${init_script}.sh" || \
echo "Add startup item failed." echo "Add startup item failed."
exit 0
...@@ -22,12 +22,12 @@ Name: "{app}\cygwin\etc\slapos\patches" ...@@ -22,12 +22,12 @@ Name: "{app}\cygwin\etc\slapos\patches"
Name: "{app}\cygwin\etc\slapos\images" Name: "{app}\cygwin\etc\slapos\images"
[Files] [Files]
Source: "opt\git\slapos\component\cygwin\slapos-core.patch"; DestDir: "{app}\cygwin\etc\slapos\patches";
Source: "opt\git\slapos\component\cygwin\slapos-cookbook-inotifyx.patch"; DestDir: "{app}\cygwin\etc\slapos\patches";
Source: "opt\git\re6stnet\dist\re6stnet-0.1.tar.gz"; DestDir: "{app}\cygwin"; DestName: "re6stnet-0.1.tar.gz"; Flags: deleteafterinstall; Source: "opt\git\re6stnet\dist\re6stnet-0.1.tar.gz"; DestDir: "{app}\cygwin"; DestName: "re6stnet-0.1.tar.gz"; Flags: deleteafterinstall;
Source: "opt\downloads\miniupnpc-1.8.tar.gz"; DestDir: "{app}\cygwin"; DestName: "miniupnpc.tar.gz"; Flags: deleteafterinstall; Source: "opt\downloads\miniupnpc-1.8.tar.gz"; DestDir: "{app}\cygwin"; DestName: "miniupnpc.tar.gz"; Flags: deleteafterinstall;
Source: "opt\git\slapos\component\cygwin\slapos-core.patch"; DestDir: "{app}\cygwin\etc\slapos\patches";
Source: "opt\git\slapos\component\cygwin\slapos-cookbook-inotifyx.patch"; DestDir: "{app}\cygwin\etc\slapos\patches";
Source: "opt\git\qooxdoo\application\playground\build\*"; DestDir: "{app}\cygwin\etc\slapos\desktop"; Flags: recursesubdirs; Source: "opt\git\qooxdoo\application\playground\build\*"; DestDir: "{app}\cygwin\etc\slapos\desktop"; Flags: recursesubdirs;
Source: "opt\git\qooxdoo\application\showcase\build\*"; DestDir: "{app}\cygwin\etc\slapos\node"; Flags: recursesubdirs; Source: "opt\git\qooxdoo\application\showcase\build\*"; DestDir: "{app}\cygwin\etc\slapos\node"; Flags: recursesubdirs;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment