Vous ne pouvez pas sélectionner plus de 25 sujets Les noms de sujets doivent commencer par une lettre ou un nombre, peuvent contenir des tirets ('-') et peuvent comporter jusqu'à 35 caractères.
 
 
 
 
 

306 lignes
11 KiB

  1. /**
  2. * (c) by aheadware.com
  3. */
  4. /**
  5. * Prequisties:
  6. *
  7. * - destDir must exist
  8. * - tmpDir must exist
  9. * - remoteTmpDir must exist
  10. *
  11. * - node modules (global)
  12. * -- npm install async -g
  13. * https://caolan.github.io/async/index.html
  14. * -- npm install fs-extra -g
  15. * https://github.com/jprichardson/node-fs-extra
  16. * -- npm install ssh2 -g
  17. * https://www.npmjs.com/package/ssh2
  18. * -- npm install zip-folder -g
  19. * https://www.npmjs.com/package/zip-folder
  20. *
  21. *
  22. * General:
  23. *
  24. * zipName = 'probuddy_landing.zip';
  25. *
  26. *
  27. * Local:
  28. *
  29. * localTmpDir = 'C:/Users/Benny/Desktop/_SYSTEM/temp';
  30. *
  31. *
  32. * Server
  33. *
  34. * serverDestDir = '/www/htdocs/v034011/projects/probuddy/client/www';
  35. * serverTmpDir = '/www/htdocs/v034011/_temp';
  36. */
  37. const Client = require('ssh2').Client;
  38. const zipFolder = require('zip-folder');
  39. const fs = require ( 'fs' );
  40. const fsExtra = require( 'fs-extra' );
  41. const ZFolder = require( 'zfolder' );
  42. // globals
  43. const zipName = 'probuddy-app-client.zip';
  44. const localTmpDir = 'C:/Users/aheadware-benny/_SYSTEM/temp';
  45. const localPrjDir = 'C:/Users/aheadware-benny/VC/tbuddy-probuddy/src/client/manager';
  46. const serverDestDir = '/www/htdocs/v034011/projects/probuddy/client/manager';
  47. const serverTmpDir = '/www/htdocs/v034011/_temp';
  48. async function deploy()
  49. {
  50. var localCommands = [
  51. 'rd /S /Q ' + localTmpDir + '/probuddy-client-manager',
  52. 'mkdir ' + localTmpDir + '/probuddy-client-manager',
  53. 'xcopy /e /h ' + localPrjDir + ' ' + localTmpDir + '/probuddy-client-manager'
  54. ];
  55. fsExtra.removeSync( localTmpDir + '/probuddy-client-manager' );
  56. fsExtra.mkdirpSync( localTmpDir + '/probuddy-client-manager' );
  57. fsExtra.copySync( localPrjDir, localTmpDir + '/probuddy-client-manager' );
  58. var zipResult = await ZFolder( localTmpDir + '/probuddy-client-manager', localTmpDir + '/probuddy-client-manager.zip' );
  59. //console.log( zipResult );
  60. //return;
  61. // Upload and decompress and remove zip
  62. var conn = new Client();
  63. conn.on('ready', function()
  64. {
  65. conn.sftp ( function( err, sftp )
  66. {
  67. if ( err ) throw err;
  68. // UPLOAD ZIP FILE
  69. var readStream = fs.createReadStream( localTmpDir + '/probuddy-client-manager.zip', { encoding: 'binary'} );
  70. var writeStream = sftp.createWriteStream( serverTmpDir + '/probuddy-client-manager.zip', { mode: 0o755, encoding: 'binary' } );
  71. writeStream.on('close',function ()
  72. {
  73. console.log( "- file transferred succesfully" );
  74. // DELETE OLD DIRECTORY
  75. conn.exec( 'rm -rf ' + serverDestDir + '/;md ' + serverDestDir, function( err, stream )
  76. //conn.exec( 'cd ' + serverDestDir + '/;ls -la', function( err, stream )
  77. {
  78. if ( err ) throw err;
  79. stream.on('data', function(data)
  80. {
  81. console.log('STDOUT: ' + data);
  82. });
  83. stream.stderr.on('data', function(data)
  84. {
  85. console.log('STDERR: ' + data);
  86. });
  87. stream.on('close', function(code, signal)
  88. {
  89. console.log('Process closed with code ' + code);
  90. // UNZIP NEW VERSION TO DESTINATION DIRECTORY
  91. conn.exec( 'cd ' + serverTmpDir + '/;unzip -o probuddy-client-manager.zip -d ' + serverDestDir + '/;chmod -R 755 ' + serverDestDir + '/', function( err, stream )
  92. {
  93. if ( err ) throw err;
  94. stream.on('data', function(data)
  95. {
  96. console.log('STDOUT: ' + data);
  97. });
  98. stream.stderr.on('data', function(data)
  99. {
  100. console.log('STDERR: ' + data);
  101. });
  102. stream.on('close', function(code, signal)
  103. {
  104. console.log('Process closed with code ' + code);
  105. conn.sftp(function(err, sftp)
  106. {
  107. if (err) throw err;
  108. // REMOVE ZIP FILE
  109. sftp.unlink( serverTmpDir + '/probuddy-client-manager.zip', function(err)
  110. {
  111. if ( err )
  112. {
  113. console.log( "Error, problem starting SFTP: %s", err );
  114. }
  115. else
  116. {
  117. console.log( "file unlinked" );
  118. process.exit( -1 );
  119. }
  120. //conn.close();
  121. });
  122. });
  123. });
  124. });
  125. });
  126. });
  127. });
  128. writeStream.on('end', function ()
  129. {
  130. console.log( "sftp connection closed" );
  131. conn.close();
  132. });
  133. // initiate transfer of file
  134. readStream.pipe( writeStream );
  135. });
  136. }).connect(
  137. {
  138. host: 'v034011.kasserver.com',
  139. port: 22,
  140. username: 'ssh-v034011',
  141. password: 'XXXXXXXXXXXX'
  142. });
  143. /*
  144. zipFolder(
  145. localTmpDir + '/probuddy-client-app',
  146. localTmpDir + '/probuddy-client-app.zip',
  147. function(err)
  148. {
  149. if( err )
  150. {
  151. console.log('zipFolder failed with: ', err);
  152. }
  153. else
  154. {
  155. // Upload and decompress and remove zip
  156. var conn = new Client();
  157. conn.on('ready', function()
  158. {
  159. conn.sftp ( function( err, sftp )
  160. {
  161. if ( err ) throw err;
  162. // UPLOAD ZIP FILE
  163. var readStream = fs.createReadStream( localTmpDir + '/probuddy-client-app.zip', { encoding: 'binary'} );
  164. var writeStream = sftp.createWriteStream( serverTmpDir + '/probuddy-client-app.zip', { mode: 0o755, encoding: 'binary' } );
  165. writeStream.on('close',function ()
  166. {
  167. console.log( "- file transferred succesfully" );
  168. // DELETE OLD DIRECTORY
  169. conn.exec( 'rm -rf ' + serverDestDir + '/;md ' + serverDestDir, function( err, stream )
  170. //conn.exec( 'cd ' + serverDestDir + '/;ls -la', function( err, stream )
  171. {
  172. if ( err ) throw err;
  173. stream.on('data', function(data)
  174. {
  175. console.log('STDOUT: ' + data);
  176. });
  177. stream.stderr.on('data', function(data)
  178. {
  179. console.log('STDERR: ' + data);
  180. });
  181. stream.on('close', function(code, signal)
  182. {
  183. console.log('Process closed with code ' + code);
  184. // UNZIP NEW VERSION TO DESTINATION DIRECTORY
  185. conn.exec( 'cd ' + serverTmpDir + '/;unzip -o probuddy-client-app.zip -d ' + serverDestDir + '/;chmod -R 755 ' + serverDestDir + '/', function( err, stream )
  186. {
  187. if ( err ) throw err;
  188. stream.on('data', function(data)
  189. {
  190. console.log('STDOUT: ' + data);
  191. });
  192. stream.stderr.on('data', function(data)
  193. {
  194. console.log('STDERR: ' + data);
  195. });
  196. stream.on('close', function(code, signal)
  197. {
  198. console.log('Process closed with code ' + code);
  199. conn.sftp(function(err, sftp)
  200. {
  201. if (err) throw err;
  202. // REMOVE ZIP FILE
  203. sftp.unlink( serverTmpDir + '/probuddy-client-app.zip', function(err)
  204. {
  205. if ( err )
  206. {
  207. console.log( "Error, problem starting SFTP: %s", err );
  208. }
  209. else
  210. {
  211. console.log( "file unlinked" );
  212. process.exit( -1 );
  213. }
  214. //conn.close();
  215. });
  216. });
  217. });
  218. });
  219. });
  220. });
  221. });
  222. writeStream.on('end', function ()
  223. {
  224. console.log( "sftp connection closed" );
  225. conn.close();
  226. });
  227. // initiate transfer of file
  228. readStream.pipe( writeStream );
  229. });
  230. }).connect(
  231. {
  232. host: 'v034011.kasserver.com',
  233. port: 22,
  234. username: 'ssh-v034011',
  235. password: 'XXXXXXXXXXXX'
  236. });
  237. }
  238. });
  239. */
  240. }
  241. deploy();